IGMP Proxy - Internet Group Management Protocol Proxy
IGMP Proxy позволяет маршрутизировать multicast трафик между различными сегментами сети, действуя как прокси для IGMP сообщений от клиентов.
Обзор
IGMP (Internet Group Management Protocol) - протокол управления multicast группами в IPv4 сетях.
IGMP Proxy:
- Отправляет IGMP host сообщения от имени подключенных клиентов
- Обеспечивает multicast маршрутизацию без полноценного multicast routing протокола
- Простая альтернатива PIM (Protocol Independent Multicast)
- Используется для распределения IPTV, видео стриминга, конференций
Стандарты:
- RFC 2236 - IGMPv2
- RFC 3376 - IGMPv3
- RFC 9776 - IGMPv3 обновление (2025)
Применение:
- IPTV сервисы
- Видео конференции
- Multicast потоковое видео
- Корпоративные вещательные приложения
- Финансовые данные (market data feeds)
Как работает IGMP
IGMP в сети
IGMP версии:
IGMPv1 (RFC 1112):
- Базовая функциональность
- Только Join сообщения
- Устаревшая версия
IGMPv2 (RFC 2236):
- Leave Group сообщения
- Querier election механизм
- Max Response Time поле
- Быстрое удаление из группы
IGMPv3 (RFC 3376, RFC 9776):
- Source-Specific Multicast (SSM)
- Include/Exclude режимы
- Фильтрация по источникам
IGMP Сообщения
Membership Query:
- Отправляется роутером для обнаружения членов группы
- General Query - для всех групп
- Group-Specific Query - для конкретной группы
Membership Report:
- Отправляется хостом для присоединения к группе
- Периодические обновления
Leave Group (IGMPv2+):
- Хост покидает multicast группу
- Быстрое удаление подписки
Multicast Адреса
Диапазон IPv4 multicast: 224.0.0.0/4 (224.0.0.0 - 239.255.255.255)
Специальные адреса:
- 224.0.0.1 - All Hosts (все хосты в subnet)
- 224.0.0.2 - All Routers (все роутеры)
- 224.0.0.5 - OSPF All Routers
- 224.0.0.6 - OSPF Designated Routers
- 224.0.0.9 - RIPv2
- 224.0.0.22 - IGMP
- 224.0.0.251 - mDNS
- 224.0.0.252 - LLMNR
Organization-Local: 239.0.0.0/8 - для частного использования
IPTV диапазоны (примеры):
- 233.0.0.0/8 - SSM диапазон
- 239.x.x.x - Organization-local
IGMP Proxy Концепция
Архитектура
Upstream Interface - входящий интерфейс:
- Подключен к источнику multicast трафика
- Коммуницирует с multicast источниками данных
- Может быть только один upstream интерфейс
- Обычно WAN интерфейс или интерфейс провайдера
Downstream Interface - исходящие интерфейсы:
- Подключены к клиентским сетям
- Распределяют multicast данные к получателям
- Может быть один или несколько downstream интерфейсов
- Обычно LAN интерфейсы
Работа прокси:
- Клиент отправляет IGMP Join на downstream интерфейс
- IGMP Proxy получает Join и запоминает подписку
- Прокси отправляет IGMP Join на upstream интерфейс (от своего имени)
- Multicast источник начинает отправлять трафик
- Прокси пересылает multicast пакеты на downstream интерфейсы с активными подписками
- При IGMP Leave прокси обновляет подписки
Преимущества
IGMP Proxy vs Full Multicast Routing (PIM):
| Характеристика | IGMP Proxy | PIM |
|---|---|---|
| Сложность конфигурации | Низкая | Высокая |
| Ресурсы | Минимальные | Значительные |
| Топология | Простая | Любая |
| Масштабируемость | Ограниченная | Высокая |
| Применение | Edge networks | Core networks |
Когда использовать IGMP Proxy:
- Простая топология (один источник, несколько приемников)
- Домашние/офисные сети
- IPTV от провайдера
- Ограниченные ресурсы
Когда использовать PIM:
- Сложная топология
- Множество источников
- Redundancy требуется
- Data center multicast
Базовая конфигурация
Простая IGMP Proxy
Сценарий: IPTV от провайдера через eth0 (WAN), клиенты в eth1 (LAN).
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
commit
saveОбъяснение:
- eth0 (upstream) - подключен к IPTV провайдеру
- eth1 (downstream) - LAN с IPTV клиентами
Проверка базовой конфигурации
show protocols igmp-proxyВывод:
interface eth0 {
role upstream
}
interface eth1 {
role downstream
}Просмотр активных multicast групп:
show igmp groupsВывод:
Interface Address Group Uptime
eth1 192.168.1.254 239.0.1.10 00:05:23
eth1 192.168.1.254 239.0.1.11 00:03:45Restart IGMP Proxy
После изменения конфигурации:
restart igmp-proxyРасширенная конфигурация
Alternate Subnets
Назначение: Определяет альтернативные источники для multicast трафика.
Применение:
- Источник multicast в другой подсети
- Трафик проходит через NAT
- Удаленные multicast источники
Синтаксис:
set protocols igmp-proxy interface <interface> alt-subnet <network>Пример:
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth0 alt-subnet 10.0.0.0/23
set protocols igmp-proxy interface eth0 alt-subnet 172.16.0.0/16
set protocols igmp-proxy interface eth1 role downstream
commit
saveКогда использовать alt-subnet:
- Multicast источник имеет адрес не из directly connected подсети
- Между upstream интерфейсом и источником есть роутер
- IPTV провайдер использует централизованные multicast серверы
Множественные Downstream интерфейсы
Сценарий: Несколько LAN сегментов.
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
set protocols igmp-proxy interface eth2 role downstream
set protocols igmp-proxy interface eth3 role downstream
commit
saveПрименение:
- Множество VLAN для клиентов
- Различные физические сегменты
- Разделение трафика по отделам
Threshold (TTL)
Threshold - минимальный TTL для пересылки multicast пакетов на интерфейс.
Синтаксис:
set protocols igmp-proxy interface <interface> threshold <ttl>Пример:
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth0 threshold 1
set protocols igmp-proxy interface eth1 role downstream
set protocols igmp-proxy interface eth1 threshold 1
commit
saveЗначения TTL:
- 1 - только локальная сеть (по умолчанию)
- 32 - в пределах организации
- 64 - в пределах региона
- 128 - в пределах континента
- 255 - глобально
Применение:
- Ограничение распространения multicast трафика
- Предотвращение утечки во внешние сети
- Контроль области действия
Disable Quick Leave
Quick Leave - быстрое удаление из группы без дополнительных проверок.
Отключение:
set protocols igmp-proxy disable-quickleave
commit
saveПо умолчанию: Quick Leave включен.
Когда отключать:
- Несколько клиентов на одном downstream интерфейсе
- Необходимо убедиться, что все клиенты покинули группу
- Предотвращение преждевременного прекращения потока
Эффект отключения:
- Прокси отправит Group-Specific Query перед удалением группы
- Задержка в несколько секунд при Leave
Примеры конфигурации
Пример 1: IPTV от провайдера (Yandex Cloud)
Сценарий:
- VyOS роутер в Yandex Cloud
- WAN (eth0) - подключение к IPTV провайдеру (внешняя сеть)
- LAN (eth1) - клиентская сеть 192.168.1.0/24
- IPTV multicast группы в диапазоне 239.0.0.0/8
Топология:
[IPTV Provider] --- eth0 (WAN) --- [VyOS] --- eth1 (LAN) --- [IPTV Clients]
10.100.0.0/24 192.168.1.0/24
239.0.1.10 (Channel 1)
239.0.1.11 (Channel 2)VyOS конфигурация:
# Интерфейсы
set interfaces ethernet eth0 address 10.100.0.10/24
set interfaces ethernet eth0 description 'WAN - IPTV Provider'
set interfaces ethernet eth1 address 192.168.1.1/24
set interfaces ethernet eth1 description 'LAN - IPTV Clients'
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth0 alt-subnet 10.0.0.0/8
set protocols igmp-proxy interface eth1 role downstream
# Firewall для IGMP
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 description 'Allow IGMP'
set firewall ipv4 input filter rule 100 protocol igmp
# Firewall для multicast трафика
set firewall ipv4 input filter rule 110 action accept
set firewall ipv4 input filter rule 110 description 'Allow multicast from provider'
set firewall ipv4 input filter rule 110 source address 10.100.0.0/24
set firewall ipv4 input filter rule 110 destination address 224.0.0.0/4
# NAT (если требуется)
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade
# Исключаем multicast из NAT
set nat source rule 90 outbound-interface name eth0
set nat source rule 90 destination address 224.0.0.0/4
set nat source rule 90 translation address 10.100.0.10
# Static routes для multicast (если необходимо)
set protocols static route 239.0.0.0/8 interface eth0
commit
saveПроверка:
show protocols igmp-proxy
show igmp groups
show igmp interface eth1
# На клиенте
# Подписаться на канал: igmp join 239.0.1.10 eth1
# Проверить поток: tcpdump -i eth1 -n host 239.0.1.10Результат:
- Клиенты в 192.168.1.0/24 могут подписываться на IPTV каналы
- Multicast трафик проходит через прокси
- Оптимизированная доставка (только активные подписки)
Пример 2: Корпоративное видео вещание (VK Cloud)
Сценарий:
- VyOS в VK Cloud как multicast роутер
- Видео сервер в DMZ (eth0): 10.50.0.0/24
- Офис 1 (eth1): 192.168.10.0/24
- Офис 2 (eth2): 192.168.20.0/24
- Видео конференции в диапазоне 239.255.0.0/16
Топология:
[Video Server] --- eth0 (DMZ) --- [VyOS] --- eth1 (Office 1) --- [Users]
10.50.0.10 |
239.255.1.100 |
--- eth2 (Office 2) --- [Users]VyOS конфигурация:
# Интерфейсы
set interfaces ethernet eth0 address 10.50.0.1/24
set interfaces ethernet eth0 description 'DMZ - Video Servers'
set interfaces ethernet eth1 address 192.168.10.1/24
set interfaces ethernet eth1 description 'Office 1 - Users'
set interfaces ethernet eth2 address 192.168.20.1/24
set interfaces ethernet eth2 description 'Office 2 - Users'
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth0 threshold 1
set protocols igmp-proxy interface eth1 role downstream
set protocols igmp-proxy interface eth1 threshold 1
set protocols igmp-proxy interface eth2 role downstream
set protocols igmp-proxy interface eth2 threshold 1
# Disable Quick Leave (множество клиентов)
set protocols igmp-proxy disable-quickleave
# Firewall для IGMP
set firewall ipv4 name LAN-TO-ROUTER rule 100 action accept
set firewall ipv4 name LAN-TO-ROUTER rule 100 description 'Allow IGMP from clients'
set firewall ipv4 name LAN-TO-ROUTER rule 100 protocol igmp
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 description 'Allow IGMP'
set firewall ipv4 input filter rule 100 protocol igmp
# Firewall для multicast потоков
set firewall ipv4 name DMZ-TO-LAN rule 100 action accept
set firewall ipv4 name DMZ-TO-LAN rule 100 description 'Allow multicast video'
set firewall ipv4 name DMZ-TO-LAN rule 100 source address 10.50.0.0/24
set firewall ipv4 name DMZ-TO-LAN rule 100 destination address 239.255.0.0/16
# QoS для видео трафика (опционально)
set qos policy shaper VIDEO-SHAPER bandwidth 100mbit
set qos policy shaper VIDEO-SHAPER default bandwidth 50%
set qos policy shaper VIDEO-SHAPER default queue-type fair-queue
set qos policy shaper VIDEO-SHAPER class 10 bandwidth 30%
set qos policy shaper VIDEO-SHAPER class 10 description 'Multicast Video'
set qos policy shaper VIDEO-SHAPER class 10 match MULTICAST ip destination address 239.255.0.0/16
set qos policy shaper VIDEO-SHAPER class 10 priority 1
set qos interface eth1 egress VIDEO-SHAPER
set qos interface eth2 egress VIDEO-SHAPER
commit
saveПроверка:
show protocols igmp-proxy
show igmp groups
show igmp interface
show igmp statistics
# Статистика QoS
show qos interface eth1
show qos interface eth2Мониторинг multicast трафика:
# На роутере
tcpdump -i eth0 -n host 239.255.1.100
# Статистика интерфейсов
show interfaces ethernet eth0
show interfaces ethernet eth1
show interfaces ethernet eth2Пример 3: IGMP через VPN туннель
Сценарий:
- Главный офис с multicast источником
- Удаленный офис через IPsec VPN
- IGMP через VTI интерфейс
Топология:
[Multicast Source] --- eth1 --- [HQ VyOS] --- vti0 (VPN) --- [Remote VyOS] --- eth1 --- [Clients]
10.10.0.0/24 172.16.0.1/30 172.16.0.2/30 192.168.100.0/24HQ Router:
# VTI интерфейс для VPN
set interfaces vti vti0 address 172.16.0.1/30
# IGMP Proxy
set protocols igmp-proxy interface eth1 role upstream
set protocols igmp-proxy interface eth1 alt-subnet 10.10.0.0/24
set protocols igmp-proxy interface vti0 role downstream
set protocols igmp-proxy interface vti0 threshold 64
commit
saveRemote Router:
# VTI интерфейс для VPN
set interfaces vti vti0 address 172.16.0.2/30
# IGMP Proxy
set protocols igmp-proxy interface vti0 role upstream
set protocols igmp-proxy interface vti0 alt-subnet 10.10.0.0/24
set protocols igmp-proxy interface eth1 role downstream
commit
saveIPsec конфигурация (на обоих роутерах):
# Фаза 1 (IKE)
set vpn ipsec ike-group IKE-GROUP proposal 1 encryption aes256
set vpn ipsec ike-group IKE-GROUP proposal 1 hash sha256
set vpn ipsec ike-group IKE-GROUP lifetime 28800
# Фаза 2 (ESP)
set vpn ipsec esp-group ESP-GROUP proposal 1 encryption aes256
set vpn ipsec esp-group ESP-GROUP proposal 1 hash sha256
set vpn ipsec esp-group ESP-GROUP lifetime 3600
# Site-to-Site VPN с VTI
set vpn ipsec site-to-site peer 203.0.113.2 authentication mode pre-shared-secret
set vpn ipsec site-to-site peer 203.0.113.2 authentication pre-shared-secret 'SecureKey123!'
set vpn ipsec site-to-site peer 203.0.113.2 ike-group IKE-GROUP
set vpn ipsec site-to-site peer 203.0.113.2 vti bind vti0
commit
saveПример 4: IGMP с VLAN
Сценарий:
- Провайдер на VLAN 100
- Клиенты на VLAN 10, 20, 30
VyOS конфигурация:
# VLAN интерфейсы
set interfaces ethernet eth0 vif 100 address 10.100.0.10/24
set interfaces ethernet eth0 vif 100 description 'VLAN 100 - Provider'
set interfaces ethernet eth1 vif 10 address 192.168.10.1/24
set interfaces ethernet eth1 vif 10 description 'VLAN 10 - Office A'
set interfaces ethernet eth1 vif 20 address 192.168.20.1/24
set interfaces ethernet eth1 vif 20 description 'VLAN 20 - Office B'
set interfaces ethernet eth1 vif 30 address 192.168.30.1/24
set interfaces ethernet eth1 vif 30 description 'VLAN 30 - Office C'
# IGMP Proxy
set protocols igmp-proxy interface eth0.100 role upstream
set protocols igmp-proxy interface eth0.100 alt-subnet 10.0.0.0/8
set protocols igmp-proxy interface eth1.10 role downstream
set protocols igmp-proxy interface eth1.20 role downstream
set protocols igmp-proxy interface eth1.30 role downstream
commit
saveОперационные команды
Show Commands
Конфигурация IGMP Proxy:
show protocols igmp-proxyВывод:
interface eth0 {
alt-subnet 10.0.0.0/23
role upstream
threshold 1
}
interface eth1 {
role downstream
threshold 1
}IGMP Groups:
show igmp groupsВывод:
Interface Address Group Uptime Expires
eth1 192.168.1.1 239.0.1.10 00:10:15 00:04:23
eth1 192.168.1.1 239.0.1.11 00:05:33 00:04:45
eth2 192.168.2.1 239.0.1.10 00:08:42 00:04:18IGMP Interface:
show igmp interfaceВывод:
Interface State Address V Querier Query Timer Uptime
eth0 up 10.100.0.10 3 local 00:00:58 00:15:23
eth1 up 192.168.1.1 3 local 00:00:45 00:15:23
eth2 up 192.168.2.1 3 local 00:00:52 00:15:23Детали интерфейса:
show igmp interface eth1Вывод:
Interface eth1:
State: up
Address: 192.168.1.1
Version: 3
Querier: local
Query Interval: 125s
Query Timer: 00:00:58
Other Querier Present Timer: 00:00:00
Uptime: 00:15:23
Multicast routing: enabledIGMP Statistics:
show igmp statisticsВывод:
Interface eth1:
IGMP queries sent: 152
IGMP queries received: 0
IGMP reports sent: 45
IGMP reports received: 287
IGMP leaves sent: 12
IGMP leaves received: 35
IGMP v1 reports received: 0
IGMP v2 reports received: 156
IGMP v3 reports received: 131Management Commands
Restart IGMP Proxy:
restart igmp-proxyClear IGMP groups (reset подписок):
# Нет прямой команды в VyOS, используйте restart
restart igmp-proxyTroubleshooting
Клиенты не получают multicast трафик
Проблема: Подписка на multicast группу не работает.
Проверка:
IGMP Proxy работает:
show protocols igmp-proxyИнтерфейсы правильно настроены:
show igmp interfaceУбедитесь что:
- Upstream интерфейс только один
- Downstream интерфейсы имеют правильный role
- Multicast routing включен
IGMP группы видны:
show igmp groupsДолжны быть активные подписки.
Multicast трафик достигает upstream:
tcpdump -i eth0 -n host 239.0.1.10Firewall правила:
show firewallПроверьте что IGMP и multicast трафик разрешен:
set firewall ipv4 input filter rule 100 action accept set firewall ipv4 input filter rule 100 protocol igmp set firewall ipv4 input filter rule 110 action accept set firewall ipv4 input filter rule 110 destination address 224.0.0.0/4 commitRouting для multicast:
show ip route 239.0.1.10Может потребоваться static route:
set protocols static route 239.0.0.0/8 interface eth0 commit
IGMP Join не проходит upstream
Проблема: IGMP прокси не отправляет Join на upstream интерфейс.
Проверка:
Downstream получает Join от клиента:
tcpdump -i eth1 -n igmpДолжны видеть IGMP Membership Report.
Upstream отправляет Join:
tcpdump -i eth0 -n igmpДолжен отправляться IGMP Join для группы.
Alternate subnet настроен (если источник в другой подсети):
set protocols igmp-proxy interface eth0 alt-subnet 10.0.0.0/8 commitRestart прокси:
restart igmp-proxyЛоги системы:
show log | match igmp
Multicast источник в другой подсети
Проблема: Multicast источник имеет IP не из directly connected сети upstream интерфейса.
Решение: Использовать alt-subnet.
Пример:
# Upstream интерфейс: 10.100.0.10/24
# Multicast источник: 172.16.50.100
set protocols igmp-proxy interface eth0 alt-subnet 172.16.0.0/16
commit
saveПроверка:
show protocols igmp-proxy interface eth0Задержка при Leave Group
Проблема: После Leave Group трафик продолжает идти несколько секунд.
Причина: Quick Leave отключен или несколько клиентов на интерфейсе.
Решение 1 - Включить Quick Leave (только один клиент):
delete protocols igmp-proxy disable-quickleave
commitРешение 2 - Настроить IGMP Query Interval (уменьшить интервал):
# Это делается на upstream роутере провайдера
# На VyOS IGMP Proxy нет прямых настроек Query IntervalWorkaround - Restart прокси после массовых изменений:
restart igmp-proxyВысокая нагрузка от multicast трафика
Проблема: Избыточный multicast трафик нагружает сеть.
Решение:
Threshold для ограничения распространения:
set protocols igmp-proxy interface eth1 threshold 1 commitQoS для приоритизации:
set qos policy shaper MULTICAST-LIMIT bandwidth 50mbit set qos policy shaper MULTICAST-LIMIT class 10 bandwidth 20mbit set qos policy shaper MULTICAST-LIMIT class 10 match VIDEO ip destination address 239.0.0.0/8 set qos interface eth1 egress MULTICAST-LIMIT commitFirewall rate limiting:
set firewall ipv4 name LAN-LOCAL rule 100 action accept set firewall ipv4 name LAN-LOCAL rule 100 destination address 224.0.0.0/4 set firewall ipv4 name LAN-LOCAL rule 100 limit rate 10/second set firewall ipv4 input filter rule 100 jump-target LAN-LOCAL commit
IGMP версии не совпадают
Проблема: Клиенты используют IGMPv3, провайдер - IGMPv2.
Решение: VyOS IGMP Proxy поддерживает автоматическую конвертацию версий.
Проверка версии:
show igmp interface eth0Вывод покажет:
Version: 2или
Version: 3Совместимость:
- IGMPv3 обратно совместима с IGMPv2
- IGMPv2 обратно совместима с IGMPv1
- Прокси автоматически адаптируется
Multicast через NAT
Проблема: Multicast не работает через NAT.
Решение: Исключить multicast из NAT, использовать alt-subnet.
Конфигурация:
# Исключить multicast из NAT
set nat source rule 90 outbound-interface name eth0
set nat source rule 90 destination address 224.0.0.0/4
set nat source rule 90 translation address <router-wan-ip>
# Основное NAT правило
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade
# Alt-subnet для upstream
set protocols igmp-proxy interface eth0 alt-subnet 10.0.0.0/8
commit
saveМониторинг и логирование
Continuous Monitoring
Мониторинг IGMP групп:
watch -n 5 'show igmp groups'Мониторинг multicast трафика:
# Входящий на upstream
tcpdump -i eth0 -n multicast
# Исходящий на downstream
tcpdump -i eth1 -n multicast
# Конкретная группа
tcpdump -i eth1 -n host 239.0.1.10Bandwidth мониторинг:
# Установить bmon
sudo apt update
sudo apt install bmon
# Запустить
bmon -p eth0,eth1
# Или использовать iftop
sudo iftop -i eth1 -f 'dst net 224.0.0.0/4'Логирование
Системные логи:
show log tail 100 | match igmpSyslog для IGMP:
set system syslog global facility protocols level info
commitExternal syslog сервер:
set system syslog host 192.168.1.100 facility protocols level info
set system syslog host 192.168.1.100 port 514
commitПросмотр логов:
show log | match igmp
show log tail 50 | match "multicast|igmp"Лучшие практики
Конфигурация
Один upstream интерфейс:
- IGMP Proxy требует ровно один upstream
- Для redundancy используйте VRRP + IGMP Proxy на обоих роутерах
Alt-subnet для провайдеров:
- Всегда настраивайте alt-subnet если источник не в directly connected сети
- Включайте широкие диапазоны (10.0.0.0/8)
Threshold управление:
- Используйте threshold 1 для локальных сетей
- Увеличивайте для WAN туннелей
Quick Leave:
- Оставьте включенным для домашних сетей (один клиент)
- Отключите для корпоративных сетей (множество клиентов)
Firewall:
- Всегда разрешайте IGMP протокол
- Разрешайте multicast адреса (224.0.0.0/4)
- Используйте rate limiting для защиты
Безопасность
Firewall для IGMP:
set firewall ipv4 input filter rule 100 action accept set firewall ipv4 input filter rule 100 protocol igmp set firewall ipv4 input filter rule 100 source address 192.168.0.0/16Ограничение multicast групп:
set firewall ipv4 input filter rule 110 action accept set firewall ipv4 input filter rule 110 destination address 239.0.0.0/16 set firewall ipv4 input filter rule 110 description 'Allow only company multicast'Rate limiting IGMP:
set firewall ipv4 input filter rule 100 limit rate 10/secondDrop unknown multicast:
set firewall ipv4 input filter rule 999 action drop set firewall ipv4 input filter rule 999 destination address 224.0.0.0/4 set firewall ipv4 input filter rule 999 description 'Drop unknown multicast'
Производительность
QoS для видео:
set qos policy shaper VIDEO bandwidth 100mbit set qos policy shaper VIDEO class 10 bandwidth 50% set qos policy shaper VIDEO class 10 match MULTICAST ip destination address 239.0.0.0/8 set qos policy shaper VIDEO class 10 priority 1 set qos interface eth1 egress VIDEO commitМониторинг bandwidth:
- Регулярно проверяйте использование через
show interfaces - Используйте external monitoring (Zabbix, Prometheus)
- Регулярно проверяйте использование через
Hardware acceleration:
- Используйте hardware offloading если доступно
- Проверьте
ethtool -k eth0для offload опций
Масштабирование
Количество групп:
- IGMP Proxy поддерживает сотни групп
- Для тысяч групп - используйте PIM
Количество downstream интерфейсов:
- Нет жесткого лимита
- Ограничено производительностью роутера
Bandwidth:
- Учитывайте что multicast умножается на количество downstream интерфейсов
- 10 Mbps поток на 5 интерфейсов = 50 Mbps от роутера
Интеграция с другими протоколами
IGMP Proxy + OSPF
Сценарий: IGMP Proxy на edge роутере, OSPF для unicast маршрутизации.
# OSPF
set protocols ospf parameters router-id 10.0.0.1
set protocols ospf area 0 network 192.168.0.0/16
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
commitВажно: IGMP Proxy работает независимо от OSPF.
IGMP Proxy + BGP
Сценарий: BGP для Internet, IGMP для multicast от провайдера.
# BGP
set protocols bgp system-as 65001
set protocols bgp neighbor 203.0.113.1 remote-as 65000
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
commitIGMP Proxy + VPN (IPsec)
Сценарий: Multicast через VPN туннель.
См. Пример 3 выше - IGMP через VTI.
Ключевые моменты:
- Используйте VTI (не policy-based VPN)
- Настройте alt-subnet для удаленной сети
- Увеличьте threshold для VPN интерфейса
IGMP Proxy + VRRP
Сценарий: Redundancy с VRRP, IGMP Proxy на обоих роутерах.
Router 1:
# VRRP
set high-availability vrrp group 1 interface eth0
set high-availability vrrp group 1 vrid 1
set high-availability vrrp group 1 virtual-address 192.168.1.254/24
set high-availability vrrp group 1 priority 200
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
commitRouter 2:
# VRRP
set high-availability vrrp group 1 interface eth0
set high-availability vrrp group 1 vrid 1
set high-availability vrrp group 1 virtual-address 192.168.1.254/24
set high-availability vrrp group 1 priority 100
# IGMP Proxy
set protocols igmp-proxy interface eth0 role upstream
set protocols igmp-proxy interface eth1 role downstream
commitПримечание: Оба роутера запускают IGMP Proxy, но активен только master.
Сравнение с PIM
IGMP Proxy vs PIM-SM
| Характеристика | IGMP Proxy | PIM-SM |
|---|---|---|
| Сложность | Низкая | Высокая |
| Конфигурация | Минимальная | Обширная |
| Топология | Простая (дерево) | Любая (mesh) |
| Redundancy | Ограниченная | Полная |
| Масштабируемость | До сотен групп | Тысячи групп |
| RP (Rendezvous Point) | Не требуется | Требуется |
| Множество источников | Ограничено | Полная поддержка |
| CPU/Memory | Низкое | Среднее |
| Применение | Edge networks | Core networks |
Когда использовать что
IGMP Proxy:
- Домашние/офисные сети
- IPTV от провайдера
- Простая топология (один источник)
- Ограниченные ресурсы
PIM-SM:
- Data center multicast
- Множество источников и получателей
- Redundancy критична
- Сложная топология
Диагностика с клиентской стороны
Linux клиент
Подписка на группу:
# Установка smcroute
sudo apt install smcroute
# Подписка
sudo smcroute -j eth0 239.0.1.10
# Просмотр подписок
ip maddr show dev eth0Прослушивание multicast:
# С помощью socat
socat UDP4-RECV:5000,ip-add-membership=239.0.1.10:eth0 STDOUT
# С помощью VLC
vlc udp://@239.0.1.10:5000Отправка multicast (тестирование):
# Отправка пакетов
echo "Test multicast" | socat - UDP4-DATAGRAM:239.0.1.10:5000,bind=:0Windows клиент
Просмотр multicast групп:
netsh interface ipv4 show joinsТестирование с VLC:
- Открыть VLC Media Player
- Media → Open Network Stream
- Ввести:
udp://@239.0.1.10:5000 - Play
Packet Capture
tcpdump для IGMP:
# Все IGMP сообщения
sudo tcpdump -i eth1 -vv igmp
# IGMP с деталями
sudo tcpdump -i eth1 -vv -n igmp
# Сохранить в файл
sudo tcpdump -i eth1 -w igmp-capture.pcap igmptcpdump для multicast потока:
# Конкретная группа
sudo tcpdump -i eth1 -n host 239.0.1.10
# Весь multicast
sudo tcpdump -i eth1 -n 'dst net 224.0.0.0/4'
# С подсчетом пакетов
sudo tcpdump -i eth1 -n host 239.0.1.10 -c 100Wireshark фильтры:
igmp
ip.dst == 239.0.1.10
ip.dst >= 224.0.0.0 and ip.dst <= 239.255.255.255Автоматизация и скрипты
Мониторинг скрипт
Bash скрипт для проверки IGMP групп:
#!/bin/bash
# igmp-monitor.sh
# Мониторинг IGMP групп
EXPECTED_GROUPS="239.0.1.10 239.0.1.11"
LOG_FILE="/var/log/igmp-monitor.log"
check_groups() {
local missing=0
for group in $EXPECTED_GROUPS; do
if ! sudo vtysh -c "show igmp groups" | grep -q "$group"; then
echo "$(date): WARNING - Group $group is missing" >> "$LOG_FILE"
missing=1
fi
done
if [ $missing -eq 0 ]; then
echo "$(date): OK - All groups present" >> "$LOG_FILE"
fi
return $missing
}
# Запуск проверки
check_groups
# Вывод статистики
echo "Current IGMP groups:"
sudo vtysh -c "show igmp groups"Установка в cron:
# Каждые 5 минут
*/5 * * * * /usr/local/bin/igmp-monitor.shAuto-restart скрипт
Скрипт для автоматического перезапуска:
#!/bin/bash
# igmp-watchdog.sh
# Автоматический перезапуск IGMP Proxy
MAX_RETRY=3
RETRY_COUNT=0
check_igmp() {
# Проверка что IGMP Proxy работает
if pgrep -x "igmpproxy" > /dev/null; then
return 0
else
return 1
fi
}
while [ $RETRY_COUNT -lt $MAX_RETRY ]; do
if check_igmp; then
echo "$(date): IGMP Proxy is running"
exit 0
else
echo "$(date): IGMP Proxy not running, restarting..."
sudo /opt/vyatta/bin/vyatta-op-cmd-wrapper restart igmp-proxy
RETRY_COUNT=$((RETRY_COUNT + 1))
sleep 10
fi
done
echo "$(date): ERROR - Failed to restart IGMP Proxy after $MAX_RETRY attempts"
exit 1Ссылки и ресурсы
RFC Documents
- RFC 1112 - Host Extensions for IP Multicasting (IGMPv1)
- RFC 2236 - Internet Group Management Protocol, Version 2
- RFC 3376 - Internet Group Management Protocol, Version 3
- RFC 9776 - Internet Group Management Protocol, Version 3 (обновление 2025)
- RFC 4605 - Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding (“IGMP/MLD Proxying”)
VyOS Documentation
Полезные инструменты
- igmpproxy - IGMP Proxy daemon (используется VyOS)
- smcroute - Multicast routing tool
- VLC - Media player с multicast поддержкой
- iperf - Network performance testing (multicast режим)
- tcpdump - Packet capture
- Wireshark - Packet analyzer
Community
Следующие шаги
После настройки IGMP Proxy рекомендуется изучить:
- PIM (Protocol Independent Multicast) - для сложных multicast топологий
- QoS (Quality of Service) - для приоритизации multicast трафика
- Firewall - для защиты multicast сетей
- VPN (IPsec/WireGuard) - для multicast через туннели
- VRRP - для redundancy
Заключение
IGMP Proxy - эффективное решение для распределения multicast трафика в простых топологиях. Правильная конфигурация upstream/downstream интерфейсов, использование alt-subnet и firewall правил обеспечивают стабильную работу IPTV и видео стриминга в сетях Yandex Cloud и VK Cloud.
Ключевые моменты:
- Один upstream, один или более downstream
- Alt-subnet для удаленных источников
- Firewall для IGMP и multicast
- QoS для приоритизации видео трафика
- Мониторинг групп и bandwidth