Multicast - Многоадресная маршрутизация

Обзор

Многоадресная маршрутизация (Multicast Routing) позволяет эффективно передавать данные от одного источника множеству получателей одновременно. Это критически важно для приложений потоковой передачи данных, таких как:

  • IPTV и потоковое видео
  • Видеоконференции
  • Распространение программного обеспечения
  • Финансовые данные в реальном времени
  • Онлайн-игры

VyOS поддерживает многоадресную маршрутизацию через интеграцию с FRRouting (FRR), обеспечивая полноценную поддержку протоколов IGMP и PIM.

Основные концепции

Адресация Multicast:

  • IPv4 диапазон: 224.0.0.0/4 (224.0.0.0 - 239.255.255.255)
  • 224.0.0.0/24 - зарезервированные адреса для локальной сети
  • 239.0.0.0/8 - административно ограниченные адреса (для частных сетей)

Группы Multicast:

  • Получатели присоединяются к группам по IP-адресу группы
  • Источники отправляют данные на адрес группы
  • Маршрутизаторы доставляют трафик только заинтересованным получателям

Протоколы:

  • IGMP (Internet Group Management Protocol): управление членством в группах между хостами и маршрутизаторами
  • PIM (Protocol Independent Multicast): маршрутизация multicast-трафика между маршрутизаторами
  • MSDP (Multicast Source Discovery Protocol): обмен информацией об источниках между доменами

Архитектура многоадресной маршрутизации

Основные компоненты

Source (Источник):

  • Узел, отправляющий multicast-трафик
  • Идентифицируется по IP-адресу

Group (Группа):

  • Множество получателей, заинтересованных в данных
  • Идентифицируется multicast IP-адресом

RPF (Reverse Path Forwarding):

  • Механизм проверки, что пакет пришел по кратчайшему пути к источнику
  • Предотвращает петли маршрутизации

Multicast RIB (MRIB):

  • Отдельная таблица маршрутизации для multicast
  • Используется для RPF-проверок

Типы деревьев распространения

SPT (Shortest Path Tree):

  • Дерево кратчайших путей от источника к получателям
  • Оптимальная задержка
  • Больше состояний на маршрутизаторах
  • Обозначение: (S,G) - Source, Group

RPT (Rendezvous Point Tree):

  • Общее дерево через точку встречи (RP)
  • Меньше состояний на маршрутизаторах
  • Возможна неоптимальная маршрутизация
  • Обозначение: (*,G) - Any Source, Group

Статические маршруты Multicast

VyOS поддерживает статические многоадресные маршруты для управления RPF-проверками. Эти маршруты используются только для определения обратного пути и не влияют на обычную маршрутизацию unicast.

Базовая конфигурация

Статический маршрут с next-hop:

set protocols static mroute <подсеть> next-hop <адрес>
set protocols static mroute <подсеть> next-hop <адрес> distance <расстояние>

Параметры:

  • <подсеть> - адрес сети источника multicast-трафика
  • <адрес> - IP-адрес следующего узла для RPF
  • <расстояние> - административное расстояние (опционально, по умолчанию 1)

Статический маршрут через интерфейс:

set protocols static mroute <подсеть> interface <интерфейс>
set protocols static mroute <подсеть> interface <интерфейс> distance <расстояние>

Параметры:

  • <интерфейс> - исходящий интерфейс для RPF-проверки

Отключение маршрута:

set protocols static mroute <подсеть> next-hop <адрес> disable
set protocols static mroute <подсеть> interface <интерфейс> disable

Примеры конфигурации

Пример 1: Базовый статический mroute

# Настройка статического маршрута для источника 10.100.50.0/24
configure
set protocols static mroute 10.100.50.0/24 next-hop 192.168.1.1
commit
save

Пример 2: Несколько маршрутов с разными метриками

configure
# Основной путь с низкой метрикой
set protocols static mroute 10.200.0.0/16 next-hop 192.168.1.1 distance 10

# Резервный путь с высокой метрикой
set protocols static mroute 10.200.0.0/16 next-hop 192.168.2.1 distance 20
commit
save

Пример 3: Маршрут через интерфейс

configure
# Multicast-трафик от источников в 172.16.0.0/12 ожидается на eth1
set protocols static mroute 172.16.0.0/12 interface eth1
commit
save

Важные замечания

Предостережение: Статические multicast-маршруты следует использовать с осторожностью. В большинстве случаев они не требуются, так как динамические протоколы маршрутизации (PIM) автоматически обрабатывают RPF.

Ограничения:

  • Маршруты используются только для RPF-проверок
  • Не вставляются в таблицу маршрутизации ядра
  • Не обрабатываются ZEBRA для обычной маршрутизации
  • Могут создавать “странные состояния” при неправильной настройке

Применение:

  • Разрешение конфликтов RPF в сложных топологиях
  • Переопределение unicast-маршрутов для multicast-трафика
  • Поддержка асимметричной маршрутизации

Multicast Forwarding (MFIB)

Таблица многоадресной пересылки

MFIB (Multicast Forwarding Information Base) - структура данных, используемая для пересылки multicast-пакетов.

Ключевые элементы:

  • (S,G) entries: запись для конкретного источника и группы
  • (*,G) entries: запись для всех источников определенной группы
  • IIF (Incoming Interface): интерфейс, с которого ожидается трафик
  • OIL (Outgoing Interface List): список интерфейсов для пересылки

Состояния интерфейсов

Incoming Interface (IIF):

  • Определяется RPF-проверкой
  • Только один IIF для каждого (S,G)
  • Пакеты принимаются только с IIF

Outgoing Interfaces (OIF):

  • Интерфейсы с активными получателями
  • Управляются IGMP/PIM
  • Могут включать туннели и виртуальные интерфейсы

Процесс пересылки

  1. Прием пакета: проверка, что пакет пришел через IIF
  2. RPF check: если провален - пакет отбрасывается
  3. TTL scope: проверка TTL boundary
  4. Forwarding: копирование пакета на все OIF из списка

IGMP - Internet Group Management Protocol

IGMP управляет членством хостов в multicast-группах. VyOS поддерживает IGMPv2 и IGMPv3.

Основные версии

IGMPv2:

  • Поддержка базовых операций join/leave
  • Выборы querier
  • Быстрый leave process

IGMPv3:

  • Source-Specific Multicast (SSM)
  • Фильтрация по источникам (INCLUDE/EXCLUDE)
  • Обратная совместимость с IGMPv2

Конфигурация IGMP

Включение IGMP на интерфейсе:

set protocols igmp interface <интерфейс>

Настройка версии IGMP:

set protocols igmp interface <интерфейс> version <2|3>

Query интервалы:

# Query interval (секунды, по умолчанию 125)
set protocols igmp interface <интерфейс> query-interval <секунды>

# Query max-response-time (десятые доли секунды, по умолчанию 100)
set protocols igmp interface <интерфейс> query-max-response-time <значение>

Настройки join:

# Статическое присоединение к группе
set protocols igmp interface <интерфейс> join <group-address>

# Присоединение с указанием источника (SSM)
set protocols igmp interface <интерфейс> join <group-address> source <source-address>

Пример конфигурации IGMP

configure

# Настройка IGMP на LAN интерфейсе
set protocols igmp interface eth1
set protocols igmp interface eth1 version 3
set protocols igmp interface eth1 query-interval 125
set protocols igmp interface eth1 query-max-response-time 100

# Статическое присоединение (для тестирования)
set protocols igmp interface eth1 join 239.1.1.1

commit
save

PIM - Protocol Independent Multicast

PIM обеспечивает маршрутизацию multicast-трафика между маршрутизаторами. VyOS поддерживает PIM-SM (Sparse Mode) и PIM-SSM (Source-Specific Multicast).

Режимы работы PIM

PIM-SM (Sparse Mode):

  • Использует Rendezvous Point (RP)
  • Эффективен для разреженного распределения получателей
  • Поддерживает (*,G) и (S,G) деревья

PIM-SSM (Source-Specific Multicast):

  • Только (S,G) деревья
  • Не требует RP
  • Диапазон адресов: 232.0.0.0/8
  • Требует IGMPv3

Базовая конфигурация PIM

Включение PIM:

set protocols pim interface <интерфейс>

Настройка RP (для PIM-SM):

# Статический RP
set protocols pim rp address <IP-адрес>

# RP для определенных групп
set protocols pim rp address <IP-адрес> group <адрес-группы/префикс>

Настройка SSM диапазона:

set protocols pim ssm-range <префикс>

Keep-alive timer:

set protocols pim interface <интерфейс> hello-interval <секунды>
set protocols pim interface <интерфейс> dead-interval <секунды>

Расширенные настройки PIM

DR Priority:

# Приоритет Designated Router (по умолчанию 1)
set protocols pim interface <интерфейс> dr-priority <0-4294967295>

Регистрация в RP:

# Подавление null-register
set protocols pim register-suppress-time <секунды>

BSR (Bootstrap Router):

# Настройка BSR кандидата
set protocols pim bsr-candidate interface <интерфейс>
set protocols pim bsr-candidate priority <0-255>

Пример конфигурации PIM-SM

configure

# Включение PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface eth2

# Настройка интервалов hello
set protocols pim interface eth0 hello-interval 30
set protocols pim interface eth1 hello-interval 30
set protocols pim interface eth2 hello-interval 30

# Настройка Rendezvous Point
set protocols pim rp address 10.0.0.1
set protocols pim rp address 10.0.0.1 group 239.0.0.0/8

# Настройка DR priority на upstream интерфейсе
set protocols pim interface eth0 dr-priority 100

commit
save

Пример конфигурации PIM-SSM

configure

# Включение PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1

# Настройка SSM диапазона
set protocols pim ssm-range 232.0.0.0/8

# IGMP версия 3 обязательна для SSM
set protocols igmp interface eth1 version 3

commit
save

SSM - Source-Specific Multicast

SSM является улучшенной моделью multicast, где получатели явно указывают источники, от которых хотят получать данные.

Преимущества SSM

Безопасность:

  • Получатели выбирают только доверенные источники
  • Предотвращение DoS атак через неизвестные источники

Простота:

  • Не требует Rendezvous Point
  • Упрощенная конфигурация
  • Только SPT деревья (S,G)

Эффективность:

  • Оптимальные пути от источника к получателям
  • Нет начального периода на RPT

Диапазоны адресов SSM

IPv4: 232.0.0.0/8

  • Стандартизирован RFC 4607
  • Зарезервирован только для SSM

Пример распределения:

  • 232.0.0.0/24 - локальные тесты
  • 232.1.0.0/16 - корпоративное использование
  • 232.2.0.0/16 - провайдерские сервисы

Конфигурация SSM

Полная конфигурация SSM:

configure

# Настройка IGMP v3 на клиентских интерфейсах
set protocols igmp interface eth1 version 3
set protocols igmp interface eth2 version 3

# Включение PIM
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface eth2

# Определение SSM диапазона
set protocols pim ssm-range 232.0.0.0/8

# Опционально: добавление custom диапазонов
set protocols pim ssm-range 239.232.0.0/16

commit
save

Статическое присоединение (SSM):

# Клиент присоединяется к группе с конкретным источником
set protocols igmp interface eth1 join 232.1.1.1 source 10.100.50.10

Практические примеры

Пример 1: IPTV распространение в Yandex Cloud

Сценарий: Провайдер IPTV в Yandex Cloud распространяет телевизионные каналы пользователям в разных подсетях.

Топология:

  • Источник IPTV: 10.100.50.10
  • Multicast группы: 239.1.1.0/24 (каналы)
  • VyOS маршрутизатор: граничный шлюз
  • Клиентские сети: 10.200.1.0/24, 10.200.2.0/24

Конфигурация:

configure

# Интерфейсы
# eth0 - uplink к источнику IPTV
# eth1 - клиентская сеть 1
# eth2 - клиентская сеть 2

# Включение IGMP на клиентских интерфейсах
set protocols igmp interface eth1 version 3
set protocols igmp interface eth1 query-interval 125
set protocols igmp interface eth1 query-max-response-time 100

set protocols igmp interface eth2 version 3
set protocols igmp interface eth2 query-interval 125
set protocols igmp interface eth2 query-max-response-time 100

# Включение PIM на всех интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface eth2

# Настройка hello интервалов
set protocols pim interface eth0 hello-interval 30
set protocols pim interface eth1 hello-interval 30
set protocols pim interface eth2 hello-interval 30

# Настройка RP (сам маршрутизатор)
set protocols pim rp address 10.100.1.1
set protocols pim rp address 10.100.1.1 group 239.1.0.0/16

# Повышение DR priority на uplink
set protocols pim interface eth0 dr-priority 100

# Оптимизация: статический mroute для RPF
set protocols static mroute 10.100.50.0/24 interface eth0

# Настройка firewall для multicast (если требуется)
set firewall group network-group MULTICAST_SOURCES network 10.100.50.0/24
set firewall name WAN_IN rule 100 action accept
set firewall name WAN_IN rule 100 source group network-group MULTICAST_SOURCES
set firewall name WAN_IN rule 100 destination address 239.0.0.0/8
set firewall name WAN_IN rule 100 protocol udp

commit
save

Проверка:

# Проверка IGMP групп
show ip igmp groups

# Проверка PIM соседей
show ip pim neighbor

# Проверка multicast маршрутов
show ip mroute

# Проверка конкретной группы
show ip mroute 239.1.1.10

# Статистика IGMP
show ip igmp interface eth1

# PIM интерфейсы
show ip pim interface

Пример 2: Видеоконференции в VK Cloud

Сценарий: Корпоративная система видеоконференций использует SSM для распространения видеопотоков между филиалами в VK Cloud.

Топология:

  • Офис A: 192.168.10.0/24
  • Офис B: 192.168.20.0/24
  • Офис C: 192.168.30.0/24
  • SSM диапазон: 232.10.0.0/16
  • VyOS роутеры в каждом офисе

Конфигурация (центральный маршрутизатор):

configure

# Интерфейсы к филиалам
# eth1 - Офис A (192.168.10.0/24)
# eth2 - Офис B (192.168.20.0/24)
# eth3 - Офис C (192.168.30.0/24)

# IGMP версия 3 обязательна для SSM
set protocols igmp interface eth1 version 3
set protocols igmp interface eth2 version 3
set protocols igmp interface eth3 version 3

# Короткие query интервалы для быстрого реагирования
set protocols igmp interface eth1 query-interval 60
set protocols igmp interface eth2 query-interval 60
set protocols igmp interface eth3 query-interval 60

# Включение PIM
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim interface eth3

# Настройка SSM диапазона
set protocols pim ssm-range 232.0.0.0/8
set protocols pim ssm-range 232.10.0.0/16

# Короткие hello интервалы для быстрой сходимости
set protocols pim interface eth1 hello-interval 15
set protocols pim interface eth2 hello-interval 15
set protocols pim interface eth3 hello-interval 15

# QoS для multicast трафика (опционально)
set qos policy shaper OFFICE_OUT bandwidth 100mbit
set qos policy shaper OFFICE_OUT class 10 bandwidth 50mbit
set qos policy shaper OFFICE_OUT class 10 match VIDEO_CONFERENCE ip destination address 232.10.0.0/16
set qos policy shaper OFFICE_OUT class 10 priority 1
set qos policy shaper OFFICE_OUT default bandwidth 50mbit

set interfaces ethernet eth1 qos-policy out OFFICE_OUT
set interfaces ethernet eth2 qos-policy out OFFICE_OUT
set interfaces ethernet eth3 qos-policy out OFFICE_OUT

commit
save

Конфигурация клиента (для тестирования):

На Linux клиенте для присоединения к SSM группе:

# Утилита для SSM join
ip maddr add 232.10.1.1 dev eth0

# Или с указанием источника (IGMPv3)
# Требуется специальное приложение, поддерживающее SSM
# Например, VLC с параметрами:
vlc udp://@232.10.1.1:5000 --miface=eth0 --program-ssrc=192.168.10.100

Проверка SSM:

# Проверка (S,G) записей
show ip mroute

# Должны видеть записи вида:
# (192.168.10.100, 232.10.1.1)
# (192.168.20.50, 232.10.1.2)

# Проверка IGMP групп с источниками
show ip igmp groups

# PIM upstream состояние
show ip pim upstream

# Статистика по группе
show ip mroute 232.10.1.1

Пример 3: Комплексная конфигурация с несколькими RP

Сценарий: Крупная сеть с разделением multicast доменов и резервированием RP.

configure

# ========================================
# Базовые настройки интерфейсов
# ========================================

# Upstream интерфейсы
set protocols igmp interface eth0
set protocols igmp interface eth0 version 3
set protocols pim interface eth0
set protocols pim interface eth0 dr-priority 100

# Downstream интерфейсы
set protocols igmp interface eth1 version 3
set protocols igmp interface eth2 version 3
set protocols igmp interface eth3 version 3

set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim interface eth3

# ========================================
# Настройка множественных RP
# ========================================

# Основной RP для общих групп
set protocols pim rp address 10.0.1.1
set protocols pim rp address 10.0.1.1 group 239.0.0.0/16

# Специализированный RP для видео (239.1.x.x)
set protocols pim rp address 10.0.2.1
set protocols pim rp address 10.0.2.1 group 239.1.0.0/16

# RP для аудио (239.2.x.x)
set protocols pim rp address 10.0.3.1
set protocols pim rp address 10.0.3.1 group 239.2.0.0/16

# SSM диапазон (без RP)
set protocols pim ssm-range 232.0.0.0/8

# ========================================
# Статические mroute для управления RPF
# ========================================

# Источники видео
set protocols static mroute 10.100.0.0/16 next-hop 10.0.1.254 distance 10

# Резервный путь
set protocols static mroute 10.100.0.0/16 next-hop 10.0.2.254 distance 20

# ========================================
# Оптимизация таймеров
# ========================================

# Быстрая сходимость на критичных интерфейсах
set protocols pim interface eth0 hello-interval 15
set protocols pim interface eth1 hello-interval 30
set protocols pim interface eth2 hello-interval 30
set protocols pim interface eth3 hello-interval 30

# IGMP query оптимизация
set protocols igmp interface eth1 query-interval 60
set protocols igmp interface eth2 query-interval 60
set protocols igmp interface eth3 query-interval 60

# ========================================
# Логирование и отладка
# ========================================

# Включение логов PIM (опционально, для отладки)
# set protocols pim log-neighbor-changes

commit
save

Команды проверки и мониторинга

Основные команды show

Multicast routing table:

# Полная таблица multicast маршрутов
show ip mroute

# Конкретная группа
show ip mroute 239.1.1.1

# Только active источники
show ip mroute active

# Подробная информация
show ip mroute detail

# Статистика
show ip mroute count

Вывод show ip mroute:

IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
       R - RP-bit set, F - Register flag, T - SPT-bit set

(10.100.50.10, 239.1.1.1), uptime 00:15:23, flags: SCT
  Incoming interface: eth0, RPF neighbor 10.100.1.254
  Outgoing interface list:
    eth1, uptime 00:15:23, PIM
    eth2, uptime 00:10:15, PIM

(*, 239.1.1.1), uptime 00:20:45, flags: SC
  Incoming interface: eth0, RPF neighbor 10.0.1.1
  Outgoing interface list:
    eth1, uptime 00:20:45, PIM
    eth2, uptime 00:18:30, PIM

IGMP информация:

# Все IGMP группы
show ip igmp groups

# Группы на конкретном интерфейсе
show ip igmp interface eth1

# IGMP sources (для IGMPv3/SSM)
show ip igmp sources

# Статистика IGMP
show ip igmp statistics

PIM информация:

# PIM соседи
show ip pim neighbor

# PIM интерфейсы
show ip pim interface

# PIM RP информация
show ip pim rp-info

# Upstream состояние
show ip pim upstream

# BSR информация (если используется)
show ip pim bsr

# PIM топология для группы
show ip pim join

Статические mroute:

# Отображение статических multicast маршрутов
show ip mroute static

# Или через общую команду
run show configuration commands | grep "protocols static mroute"

Команды отладки

Включение отладки PIM:

# ВНИМАНИЕ: генерирует много логов!
configure
set system syslog global facility all level debug
commit

# Просмотр логов
monitor log messages

Отладка конкретных компонентов (через vtysh):

# Войти в FRR shell
vtysh

# PIM отладка
debug pim events
debug pim packets
debug pim trace

# IGMP отладка
debug igmp events
debug igmp packets
debug igmp trace

# Multicast forwarding
debug mroute
debug mroute detail

# Отключение отладки
no debug pim events
no debug igmp events

# Выход
exit

Проверка RPF:

# Проверка RPF для конкретного источника
show ip rpf 10.100.50.10

# Вывод:
# RPF information for 10.100.50.10
#   RPF interface: eth0
#   RPF address: 10.100.1.254
#   RPF metric: 10
#   RPF protocol: Static Mroute

Мониторинг в реальном времени

Наблюдение за изменениями:

# Мониторинг лога в реальном времени
monitor log messages

# Отслеживание изменений в mroute
watch -n 2 'vtysh -c "show ip mroute"'

# Мониторинг IGMP присоединений
watch -n 5 'vtysh -c "show ip igmp groups"'

Тестирование multicast:

# На отправителе (source)
# Отправка multicast пакетов (требует установки утилит)
# mcast-sender -g 239.1.1.1 -p 5000

# На получателе (receiver)
# Присоединение к группе
# ip maddr add 239.1.1.1 dev eth0
# mcast-receiver -g 239.1.1.1 -p 5000

# Или использовать VLC
# vlc udp://@239.1.1.1:5000

Troubleshooting - Устранение неисправностей

Общие проблемы

Проблема 1: Нет multicast трафика

Симптомы:

  • Клиенты не получают multicast поток
  • show ip mroute пуст или нет нужных записей

Диагностика:

# Шаг 1: Проверить IGMP группы
show ip igmp groups
# Должны видеть группы на downstream интерфейсах

# Шаг 2: Проверить PIM соседей
show ip pim neighbor
# Должны быть соседи на всех PIM интерфейсах

# Шаг 3: Проверить RPF
show ip rpf <source-ip>
# RPF interface должен указывать на правильный upstream

# Шаг 4: Проверить firewall
show firewall name <rule-set> statistics
# Убедиться, что multicast трафик не блокируется

# Шаг 5: Проверить интерфейсы PIM
show ip pim interface
# Все интерфейсы должны быть UP

Решение:

# Если нет IGMP групп - проверить версию IGMP
configure
set protocols igmp interface eth1 version 3
commit

# Если нет PIM соседей - проверить конфигурацию
show configuration protocols pim
set protocols pim interface eth0
commit

# Если RPF неправильный - добавить static mroute
set protocols static mroute <source-network> next-hop <correct-gateway>
commit

# Если firewall блокирует - добавить правила
set firewall name WAN_IN rule 100 action accept
set firewall name WAN_IN rule 100 protocol pim
set firewall name WAN_IN rule 100 description "Allow PIM protocol"

set firewall name WAN_IN rule 101 action accept
set firewall name WAN_IN rule 101 protocol igmp
set firewall name WAN_IN rule 101 description "Allow IGMP protocol"

set firewall name WAN_IN rule 102 action accept
set firewall name WAN_IN rule 102 destination address 224.0.0.0/4
set firewall name WAN_IN rule 102 description "Allow multicast traffic"
commit
save

Проблема 2: RPF failures

Симптомы:

  • В логах: “RPF failure for (S,G)”
  • show ip mroute показывает записи, но без outgoing interfaces

Диагностика:

# Проверить RPF для источника
show ip rpf <source-ip>

# Проверить unicast маршрут к источнику
show ip route <source-ip>

# Проверить static mroute (если используются)
run show configuration commands | grep mroute

Решение:

configure

# Вариант 1: Добавить static mroute
set protocols static mroute <source-network> interface <correct-interface>

# Вариант 2: Изменить метрику существующего маршрута
set protocols static mroute <source-network> next-hop <gateway> distance 5

# Вариант 3: Использовать route-map для изменения RPF
# (более сложный сценарий, обычно не требуется)

commit
save

Проблема 3: SSM не работает

Симптомы:

  • IGMPv3 клиенты не могут присоединиться к SSM группам
  • Нет (S,G) записей для SSM диапазона

Диагностика:

# Проверить версию IGMP
show ip igmp interface

# Проверить SSM диапазон
run show configuration commands | grep "pim ssm-range"

# Проверить IGMP sources
show ip igmp sources

Решение:

configure

# Убедиться, что IGMPv3 включена
set protocols igmp interface eth1 version 3

# Настроить SSM диапазон
set protocols pim ssm-range 232.0.0.0/8

# Проверить, что клиент использует правильный SSM диапазон
# (232.0.0.0/8 для IPv4)

commit
save

Проблема 4: Медленная сходимость

Симптомы:

  • Долгое время до начала получения multicast
  • Задержки при переключении источников

Диагностика:

# Проверить таймеры IGMP
show ip igmp interface detail

# Проверить PIM hello интервалы
show ip pim interface detail

Решение:

configure

# Уменьшить IGMP query interval
set protocols igmp interface eth1 query-interval 60
set protocols igmp interface eth1 query-max-response-time 50

# Уменьшить PIM hello interval
set protocols pim interface eth0 hello-interval 15

# Для критичных сценариев можно еще меньше:
# set protocols igmp interface eth1 query-interval 30
# set protocols pim interface eth0 hello-interval 10

commit
save

Проблема 5: Duplicate packets

Симптомы:

  • Клиенты получают дублирующиеся multicast пакеты
  • Сетевая петля в multicast топологии

Диагностика:

# Проверить топологию PIM
show ip pim neighbor

# Проверить DR (Designated Router)
show ip pim interface

# Проверить наличие петель
show ip mroute detail
# Искать одинаковые (S,G) на разных интерфейсах с одинаковым uptime

Решение:

configure

# Установить правильный DR priority
# Более высокий priority = предпочтительный DR
set protocols pim interface eth0 dr-priority 100
set protocols pim interface eth1 dr-priority 10

# Проверить правильность RPF
show ip rpf <source-ip>

# Если необходимо, исправить static mroute
delete protocols static mroute <incorrect-route>
set protocols static mroute <source-network> interface <correct-interface>

commit
save

Команды для расширенной диагностики

PIM assert механизм:

# Проверить PIM assert состояние (через vtysh)
vtysh -c "show ip pim assert"

# Проверить metric для assert
vtysh -c "show ip pim assert-metric"

Multicast VIF (Virtual Interface):

# Просмотр multicast virtual interfaces
vtysh -c "show ip multicast vif"

PIM register состояние:

# Проверить состояние регистрации на RP
vtysh -c "show ip pim state"

Best Practices - Лучшие практики

Проектирование сети

  1. Планирование адресного пространства:

    • Используйте 239.0.0.0/8 для частных multicast групп
    • 232.0.0.0/8 резервируйте для SSM
    • Документируйте назначение групп
  2. Размещение RP:

    • RP должен быть в стабильной, центральной точке сети
    • Рассмотрите anycast RP для отказоустойчивости
    • Используйте разные RP для разных диапазонов групп
  3. Topology дизайн:

    • Минимизируйте количество hops от источников к получателям
    • Избегайте asymmetric routing для multicast
    • Используйте dedicated links для high-bandwidth multicast

Конфигурация

  1. Использование SSM где возможно:

    • SSM проще и безопаснее PIM-SM
    • Не требует RP configuration
    • Оптимальная маршрутизация
  2. Настройка таймеров:

    • Балансируйте между быстрой сходимостью и overhead
    • Для критичных приложений: короткие интервалы
    • Для стабильных сетей: стандартные значения
  3. Static mroute:

    • Используйте только при необходимости
    • Документируйте причину каждого static mroute
    • Регулярно проверяйте актуальность
  4. Firewall правила:

    • Разрешите протоколы: IGMP (2), PIM (103)
    • Разрешите multicast адреса (224.0.0.0/4)
    • Используйте rate limiting для защиты от floods

Безопасность

  1. Контроль источников:

    • Ограничивайте, какие источники могут отправлять multicast
    • Используйте SSM для явного указания источников
    • Фильтруйте на edge маршрутизаторах
  2. Scope ограничения:

    • Используйте TTL scoping для ограничения области
    • Административные границы для групп
    • Фильтрация на границах доменов
  3. Rate limiting:

    • Ограничивайте bandwidth для multicast
    • Используйте QoS для приоритизации
    • Мониторинг аномального трафика

Пример firewall с защитой:

configure

# Группа разрешенных multicast источников
set firewall group network-group MULTICAST_SOURCES network 10.100.0.0/16
set firewall group network-group MULTICAST_SOURCES network 10.200.0.0/16

# Группа разрешенных multicast адресов
set firewall group network-group MULTICAST_GROUPS network 239.1.0.0/16
set firewall group network-group MULTICAST_GROUPS network 232.0.0.0/8

# Правила на входящем интерфейсе
set firewall name WAN_IN default-action drop

# Разрешить IGMP
set firewall name WAN_IN rule 10 action accept
set firewall name WAN_IN rule 10 protocol igmp
set firewall name WAN_IN rule 10 description "IGMP traffic"

# Разрешить PIM
set firewall name WAN_IN rule 20 action accept
set firewall name WAN_IN rule 20 protocol pim
set firewall name WAN_IN rule 20 description "PIM protocol"

# Разрешить multicast от доверенных источников
set firewall name WAN_IN rule 100 action accept
set firewall name WAN_IN rule 100 source group network-group MULTICAST_SOURCES
set firewall name WAN_IN rule 100 destination group network-group MULTICAST_GROUPS
set firewall name WAN_IN rule 100 protocol udp
set firewall name WAN_IN rule 100 description "Allowed multicast traffic"

# Rate limit для защиты от флуда
set firewall name WAN_IN rule 100 limit rate 50/second

# Логировать отброшенный multicast (для мониторинга)
set firewall name WAN_IN rule 999 action drop
set firewall name WAN_IN rule 999 destination address 224.0.0.0/4
set firewall name WAN_IN rule 999 log enable
set firewall name WAN_IN rule 999 description "Log dropped multicast"

commit
save

Мониторинг и обслуживание

  1. Регулярные проверки:

    • Мониторинг show ip mroute count на аномалии
    • Проверка PIM соседей на стабильность
    • Анализ логов на errors
  2. Baseline метрики:

    • Запишите нормальное количество (S,G) записей
    • Нормальное количество IGMP групп
    • Обычный bandwidth multicast трафика
  3. Alerting:

    • Уведомления при потере PIM соседей
    • Alerts на резкие изменения в mroute count
    • Мониторинг CPU/memory при большом multicast
  4. Документация:

    • Схема multicast топологии
    • Назначение RP
    • Распределение multicast групп по приложениям
    • Процедуры troubleshooting

Оптимизация производительности

  1. SPT switchover:

    • Настройте порог переключения на SPT
    • Для high-bandwidth источников используйте немедленный SPT
  2. IGMP snooping:

    • Включите на switches для оптимизации L2 flooding
    • Убедитесь в совместимости с IGMPv3
  3. Multicast VPN:

    • Для inter-site multicast рассмотрите MVPN
    • Используйте draft-rosen или next-generation MVPN
  4. Buffer tuning:

    • Увеличьте буферы для high-throughput multicast
    • Настройте queue management

Пример оптимизации:

configure

# Немедленный переход на SPT для всех групп
# (требует поддержки в FRR, проверить версию)
# set protocols pim spt-switchover infinity-and-beyond immediate

# QoS для multicast (приоритизация)
set qos policy shaper MULTICAST_SHAPER bandwidth 500mbit
set qos policy shaper MULTICAST_SHAPER class 10 bandwidth 400mbit
set qos policy shaper MULTICAST_SHAPER class 10 match MCAST destination address 224.0.0.0/4
set qos policy shaper MULTICAST_SHAPER class 10 priority 1
set qos policy shaper MULTICAST_SHAPER class 10 queue-type fair-queue

set interfaces ethernet eth1 qos-policy out MULTICAST_SHAPER

commit
save

Интеграция с другими протоколами

OSPF и PIM

Multicast RPF использует unicast routing table. При использовании OSPF:

configure

# OSPF для unicast
set protocols ospf area 0 network 10.0.0.0/8

# PIM использует OSPF routes для RPF
set protocols pim interface eth0
set protocols pim interface eth1

# RPF будет автоматически использовать OSPF маршруты
commit
save

BGP и Multicast

Для inter-AS multicast:

configure

# BGP для unicast connectivity
set protocols bgp system-as 65001
set protocols bgp neighbor 192.168.1.1 remote-as 65002

# MSDP для обмена источниками между AS (если требуется)
# Настройка через vtysh, так как VyOS может не иметь прямой поддержки

# PIM для intra-AS multicast
set protocols pim interface eth0
set protocols pim interface eth1

commit
save

VRF и Multicast

VyOS с FRR поддерживает multicast в VRF context (в новых версиях):

configure

# Создание VRF
set vrf name CUSTOMER-A table 100

# Назначение интерфейсов
set interfaces ethernet eth2 vrf CUSTOMER-A

# Multicast в VRF context может требовать настройки через vtysh
# vtysh
# configure terminal
# vrf CUSTOMER-A
#  ip multicast-routing
#  exit
# interface eth2 vrf CUSTOMER-A
#  ip pim
#  ip igmp
#  exit

commit
save

Справочная информация

Multicast адреса

Зарезервированные диапазоны:

  • 224.0.0.0/24 - локальная сеть (не маршрутизируется)
    • 224.0.0.1 - все хосты в подсети
    • 224.0.0.2 - все маршрутизаторы
    • 224.0.0.5 - OSPF AllSPFRouters
    • 224.0.0.6 - OSPF AllDRouters
    • 224.0.0.13 - PIM Hello
  • 224.0.1.0/24 - internetwork control
  • 232.0.0.0/8 - Source-Specific Multicast (SSM)
  • 233.0.0.0/8 - GLOP addressing (AS-based)
  • 239.0.0.0/8 - административно ограниченные (организационные)

Протокольные номера

  • IGMP: IP protocol 2
  • PIM: IP protocol 103

Стандартные таймеры

IGMP:

  • Query Interval: 125 секунд
  • Query Response Time: 10 секунд
  • Group Membership Timeout: 260 секунд
  • Last Member Query Count: 2
  • Last Member Query Interval: 1 секунда

PIM:

  • Hello Interval: 30 секунд
  • Hold Time: 105 секунд (3.5 * Hello)
  • Join/Prune Interval: 60 секунд
  • Register Suppress Time: 60 секунд

Полезные ссылки

RFC документы:

  • RFC 4601 - PIM-SM
  • RFC 3376 - IGMPv3
  • RFC 4607 - SSM
  • RFC 5059 - Bootstrap Router (BSR)
  • RFC 3618 - MSDP
  • RFC 4610 - Anycast-RP using PIM

VyOS документация:

FRRouting документация:

Заключение

Многоадресная маршрутизация в VyOS предоставляет мощный инструментарий для эффективного распространения потокового контента. Правильная конфигурация PIM, IGMP и статических multicast маршрутов обеспечивает:

  • Эффективное использование пропускной способности
  • Масштабируемость для большого числа получателей
  • Низкую задержку доставки
  • Безопасность через SSM и фильтрацию

Ключевые моменты:

  1. Используйте SSM (232.0.0.0/8) где возможно для упрощения и безопасности
  2. Статические mroute применяйте только при необходимости
  3. Тщательно планируйте размещение RP для PIM-SM
  4. Регулярно мониторьте состояние multicast маршрутизации
  5. Документируйте конфигурацию и назначение групп

При правильной реализации VyOS обеспечивает надежную платформу для enterprise multicast сервисов в облачных и on-premise средах.