PIM - Protocol Independent Multicast (IPv4)
PIM (Protocol Independent Multicast) - это семейство протоколов multicast маршрутизации, обеспечивающих эффективное распределение multicast трафика в IP сетях.
Обзор
PIM - протокол независимой от unicast маршрутизации multicast доставки:
- Работает поверх любого unicast routing протокола (OSPF, BGP, IS-IS, статические маршруты)
- Поддерживает сложные топологии с множеством источников и получателей
- Масштабируется до тысяч multicast групп
- Используется в data center, enterprise, service provider сетях
Стандарты:
- RFC 7761 - PIM-SM (Sparse Mode) - основной режим
- RFC 3973 - PIM-DM (Dense Mode) - устаревший
- RFC 4607 - SSM (Source-Specific Multicast)
- RFC 5059 - Bootstrap Router (BSR)
- RFC 4601 - PIM-SM v2
VyOS поддерживает:
- PIM-SM (Sparse Mode) - с явным RP (Rendezvous Point)
- PIM-SSM (Source-Specific Multicast) - с IGMPv3
- Bootstrap Router (BSR) - динамическое распределение RP
- SPT (Shortest Path Tree) switchover - оптимизация путей
- ECMP (Equal-Cost Multi-Path) - балансировка multicast потоков
Применение:
- IPTV сервисы в сетях провайдеров
- Видео конференции и корпоративное вещание
- Финансовые данные (market data feeds)
- Data center multicast приложения
- Multicast VPN
PIM Режимы работы
PIM-SM (Sparse Mode)
PIM Sparse Mode - режим для сетей, где multicast получатели распределены редко (sparse).
Принцип работы:
- RP (Rendezvous Point) - центральная точка встречи источников и получателей
- Источники регистрируются на RP (Register сообщения)
- Получатели отправляют Join к RP (через промежуточные роутеры)
- RP пересылает трафик по Shared Tree (общее дерево от RP)
- Опционально переключение на SPT (Shortest Path Tree) - прямой путь от источника
Терминология:
- RP (Rendezvous Point) - роутер-посредник между источниками и получателями
- Shared Tree (*,G) - общее дерево от RP к получателям
- Source Tree (S,G) - shortest path дерево от источника к получателям
- DR (Designated Router) - выбранный роутер на сегменте для PIM операций
- BSR (Bootstrap Router) - роутер для динамического распределения RP информации
Преимущества:
- Эффективен для распределенных получателей
- Масштабируется до больших сетей
- Поддерживает множество источников
- Оптимизация через SPT switchover
Недостатки:
- Требует конфигурацию RP
- Сложнее в настройке чем IGMP Proxy
- Требует больше ресурсов
PIM-DM (Dense Mode)
PIM Dense Mode - режим для сетей, где получатели плотно распределены.
Принцип работы:
- Flood-and-Prune: трафик сначала отправляется везде
- Роутеры без получателей отправляют Prune (отказ)
- Периодическое обновление (каждые 3 минуты)
Статус: Устаревший, не рекомендуется к использованию.
VyOS: Не поддерживает PIM-DM.
PIM-SSM (Source-Specific Multicast)
PIM Source-Specific Multicast - упрощенная версия PIM для известных источников.
Принцип работы:
- Получатели подписываются на конкретный источник (S,G), а не только группу (G)
- Требует IGMPv3 на клиентской стороне
- Не требует RP (Rendezvous Point)
- Всегда использует SPT (Shortest Path Tree)
- Используется диапазон 232.0.0.0/8 (зарезервирован для SSM)
Преимущества:
- Простота конфигурации (нет RP)
- Оптимальные пути (всегда SPT)
- Высокая безопасность (известные источники)
- Меньше служебного трафика
Применение:
- IPTV с известными источниками
- Видео конференции
- Финансовые данные
IGMPv3 требование:
- Клиенты должны поддерживать IGMPv3
- Указывают как группу, так и источник
- Синтаксис: IGMP JOIN (S,G)
PIM Компоненты
Rendezvous Point (RP)
RP - центральный роутер для встречи источников и получателей в PIM-SM.
Функции RP:
- Регистрация источников (получает Register сообщения)
- Пересылка Join/Prune между источниками и получателями
- Построение Shared Tree (*,G)
- Пересылка multicast трафика
Типы RP конфигурации:
- Статический RP - вручную настроенный на всех роутерах
- BSR (Bootstrap Router) - динамическое распределение RP информации
- Auto-RP - Cisco проприетарный механизм (не поддерживается VyOS)
Placement RP:
- Центральное расположение в сети
- Высокая доступность и bandwidth
- Стабильное соединение со всеми роутерами
- Рекомендуется VRRP/HSRP для redundancy
Designated Router (DR)
DR - выбранный роутер на multi-access сегменте (Ethernet) для PIM операций.
Функции DR:
- Отправка Register сообщений от источников к RP
- Отправка Join/Prune к RP от получателей
- Обработка IGMP членств
- Предотвращение дублирования трафика
DR Election:
- Выбирается роутер с наивысшим DR Priority
- При равном priority - наивысший IP адрес
- Hello сообщения (каждые 30 секунд по умолчанию)
Настройка DR Priority:
set protocols pim interface eth0 dr-priority 100Значения: 1-4294967294 (выше = приоритетнее), по умолчанию 1.
Bootstrap Router (BSR)
BSR - механизм динамического распределения RP информации в PIM домене.
Функции BSR:
- Автоматическое распределение RP-to-Group маппингов
- Выбор BSR роутера (bootstrap election)
- Периодические Bootstrap сообщения
- Устранение необходимости статической конфигурации RP на всех роутерах
BSR Election:
- Роутер с наивысшим BSR Priority побеждает
- При равном priority - наивысший IP адрес
- Bootstrap сообщения каждые 60 секунд
Candidate-RP:
- Роутеры-кандидаты на роль RP
- Отправляют Candidate-RP-Advertisement к BSR
- BSR распространяет список RP
Преимущества BSR:
- Автоматическая конфигурация
- Динамическое failover RP
- Масштабируемость
- Стандартизированный (RFC 5059)
Базовая конфигурация PIM-SM
Простая PIM-SM с статическим RP
Сценарий: 3 роутера, один RP, один источник, получатели на разных сегментах.
Топология:
[Source] --- eth1 --- [R1] --- eth0 --- [R2-RP] --- eth0 --- [R3] --- eth1 --- [Receivers]
10.1.1.0/24 10.0.1.0/30 10.0.2.0/30 192.168.1.0/24
239.1.1.1Router R1 (первый hop от источника):
# Интерфейс к источнику
set interfaces ethernet eth1 address 10.1.1.1/24
# Интерфейс к RP
set interfaces ethernet eth0 address 10.0.1.1/30
# Unicast routing (OSPF или статические маршруты)
set protocols ospf parameters router-id 10.255.0.1
set protocols ospf area 0 network 10.0.0.0/8
# PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
# Статический RP для всех групп
set protocols pim rp address 10.255.0.2
commit
saveRouter R2 (RP):
# Интерфейсы
set interfaces ethernet eth0 address 10.0.1.2/30
set interfaces ethernet eth1 address 10.0.2.1/30
set interfaces loopback lo address 10.255.0.2/32
# OSPF
set protocols ospf parameters router-id 10.255.0.2
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.255.0.2/32
# PIM на всех интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# Этот роутер - RP
set protocols pim rp address 10.255.0.2
commit
saveRouter R3 (последний hop к получателям):
# Интерфейсы
set interfaces ethernet eth0 address 10.0.2.2/30
set interfaces ethernet eth1 address 192.168.1.1/24
# OSPF
set protocols ospf parameters router-id 10.255.0.3
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 192.168.1.0/24
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
# IGMP на интерфейсе к получателям
set protocols pim interface eth1 igmp
# Статический RP
set protocols pim rp address 10.255.0.2
commit
saveПроверка:
# На всех роутерах
show ip pim interface
show ip pim neighbor
show ip pim rp-info
# На R2 (RP)
show ip pim rp-info
show ip pim state
# На R3 (с получателями)
show igmp groups
show ip pim joinRP для конкретных групп
Назначение разных RP для разных диапазонов групп.
Router конфигурация:
# RP1 для групп 239.1.0.0/16
set protocols pim rp address 10.255.0.2 group 239.1.0.0/16
# RP2 для групп 239.2.0.0/16
set protocols pim rp address 10.255.0.3 group 239.2.0.0/16
# Default RP для всех остальных
set protocols pim rp address 10.255.0.4
commit
saveПрименение:
- Разделение нагрузки между RP
- Географическое распределение
- Разные источники для разных сервисов
IGMP интеграция
PIM требует IGMP на интерфейсах к получателям для обработки IGMP Join/Leave.
Конфигурация IGMP:
# Включить IGMP на интерфейсе
set protocols pim interface eth1 igmp
# IGMP версия (2 или 3)
set protocols pim interface eth1 igmp version 3
# IGMP Query Interval (секунды)
set protocols pim interface eth1 igmp query-interval 125
# IGMP Query Max Response Time (секунды)
set protocols pim interface eth1 igmp query-max-response-time 10
commit
saveIGMPv2 vs IGMPv3:
- IGMPv2: (*,G) подписки - любой источник для группы
- IGMPv3: (S,G) подписки - конкретный источник для группы (SSM)
PIM-SSM конфигурация
Простая SSM конфигурация
PIM-SSM - Source-Specific Multicast для известных источников.
SSM диапазон: 232.0.0.0/8 (IANA зарезервирован)
Конфигурация на всех роутерах:
# Интерфейсы
set protocols pim interface eth0
set protocols pim interface eth1
# SSM prefix list (не требуется если используется стандартный диапазон 232.0.0.0/8)
# Но можно явно указать для ясности
set protocols pim ssm prefix-list SSM-RANGE
# Prefix list для SSM
set policy prefix-list SSM-RANGE rule 10 action permit
set policy prefix-list SSM-RANGE rule 10 prefix 232.0.0.0/8
# IGMP v3 (обязательно для SSM)
set protocols pim interface eth1 igmp
set protocols pim interface eth1 igmp version 3
commit
saveSSM не требует RP - прямые пути от источников к получателям.
Проверка:
show ip pim state
show ip pim upstream
show igmp groupsSSM с кастомными диапазонами
Расширение SSM на другие диапазоны.
Конфигурация:
# Определить prefix list для SSM
set policy prefix-list SSM-CUSTOM rule 10 action permit
set policy prefix-list SSM-CUSTOM rule 10 prefix 232.0.0.0/8
set policy prefix-list SSM-CUSTOM rule 20 action permit
set policy prefix-list SSM-CUSTOM rule 20 prefix 239.100.0.0/16
# Применить к PIM
set protocols pim ssm prefix-list SSM-CUSTOM
# IGMP v3
set protocols pim interface eth1 igmp version 3
commit
saveПрименение:
- Использование organization-local диапазонов для SSM
- Миграция с ASM (Any-Source Multicast) к SSM
SPT (Shortest Path Tree) Switchover
SPT Switchover концепция
SPT Switchover - переключение с Shared Tree (*,G через RP) на Source Tree (S,G прямо от источника).
Процесс:
- Получатель сначала получает трафик через RP (Shared Tree)
- После первого пакета от источника роутер узнает source IP
- Роутер оценивает стоимость пути
- Если прямой путь лучше - создается (S,G) entry
- Join отправляется напрямую к источнику
- Prune отправляется к RP для (*,G)
- Трафик идет по оптимальному пути
По умолчанию: VyOS переключается на SPT немедленно при получении первого пакета.
Отключение SPT Switchover
Infinity-and-Beyond - запрет переключения на SPT, всегда использовать RP.
Конфигурация:
set protocols pim spt-switchover infinity-and-beyond
commit
saveПрименение:
- Централизованный контроль трафика через RP
- Упрощенная топология
- Debugging и troubleshooting
Недостаток:
- Неоптимальные пути (triangle routing)
- Повышенная нагрузка на RP
- Увеличенная задержка
SPT Switchover с prefix list
Селективное переключение на SPT для определенных групп.
Конфигурация:
# Создать prefix list для групп с SPT switchover
set policy prefix-list SPT-GROUPS rule 10 action permit
set policy prefix-list SPT-GROUPS rule 10 prefix 239.1.0.0/16
# Применить
set protocols pim spt-switchover prefix-list SPT-GROUPS
commit
saveРезультат:
- Группы из 239.1.0.0/16 - используют SPT
- Остальные группы - остаются на Shared Tree через RP
ECMP (Equal-Cost Multi-Path)
ECMP для multicast
ECMP - балансировка multicast потоков по нескольким равноценным путям.
По умолчанию: PIM использует один путь (lowest IP next-hop).
Включение ECMP:
set protocols pim ecmp
commit
saveЭффект:
- Разные (S,G) flows распределяются по разным next-hops
- Улучшенная балансировка нагрузки
- Более эффективное использование bandwidth
ECMP Rebalance
ECMP Rebalance - перераспределение потоков при отказе интерфейса.
Конфигурация:
set protocols pim ecmp
set protocols pim ecmp rebalance
commit
saveПоведение:
- При отказе одного next-hop потоки перераспределяются на оставшиеся
- Автоматическая балансировка
- Повышенная отказоустойчивость
Примечание: Может вызвать кратковременные дубликаты пакетов во время перераспределения.
PIM Интерфейс параметры
Hello Interval
Hello интервал - частота отправки PIM Hello сообщений.
Конфигурация:
set protocols pim interface eth0 hello <seconds>
commit
saveЗначения: 1-180 секунд, по умолчанию 30 секунд.
Пример:
set protocols pim interface eth0 hello 10
commit
saveПрименение:
- Уменьшение для быстрого обнаружения соседей (10-15 сек)
- Увеличение для снижения служебного трафика (60-120 сек)
Hold Time: Автоматически устанавливается как 3.5 * hello-interval.
DR Priority
DR Priority - приоритет для выбора Designated Router.
Конфигурация:
set protocols pim interface eth0 dr-priority <priority>
commit
saveЗначения: 1-4294967294, по умолчанию 1.
Пример:
# Роутер с высоким приоритетом станет DR
set protocols pim interface eth0 dr-priority 100
commit
saveПрименение:
- Контроль выбора DR на multi-access сегментах
- Предпочтение более мощных роутеров
- Load balancing между роутерами
Passive Interface
Passive интерфейс - принимать PIM сообщения, но не отправлять.
Конфигурация:
set protocols pim interface eth0 passive
commit
saveПрименение:
- Интерфейсы к источникам (source-only)
- Снижение служебного трафика
- Безопасность (не отвечать на внешние PIM запросы)
Примечание: IGMP продолжает работать.
PIM Timing параметры
Join-Prune Interval
Join-Prune Interval - частота отправки Join/Prune сообщений upstream.
Конфигурация:
set protocols pim join-prune-interval <seconds>
commit
saveЗначения: 60-600 секунд, по умолчанию 60 секунд.
Пример:
set protocols pim join-prune-interval 120
commit
saveЭффект:
- Меньшее значение - быстрее реакция на изменения, больше трафика
- Большее значение - меньше служебного трафика, медленнее сходимость
Keep-Alive Timer
Keep-Alive Timer - время хранения (S,G) state без трафика.
Конфигурация:
set protocols pim keep-alive-timer <seconds>
commit
saveЗначения: 31-60000 секунд, по умолчанию 210 секунд.
Пример:
set protocols pim keep-alive-timer 300
commit
saveПрименение:
- Увеличение для редких multicast потоков (periodic broadcasts)
- Уменьшение для экономии памяти (short-lived sessions)
Register параметры
Register Suppress Time
Register Suppress Time - время подавления Register сообщений от DR к RP.
По умолчанию: 60 секунд (hardcoded в FRR).
Описание:
- После получения Register-Stop от RP, DR подавляет Register сообщения
- Периодически отправляет Null-Register для проверки интереса
- Если RP снова заинтересован - возобновляет Register
Настройка: Не доступна в VyOS CLI (управляется FRR внутренне).
Register Accept List
Register Accept List - фильтрация источников, которые могут регистрироваться на RP.
Применение: Безопасность на RP - разрешить только доверенные источники.
Примечание: Не реализовано в текущей версии VyOS PIM (FRR).
Bootstrap Router (BSR) конфигурация
BSR Candidate
Настройка роутера как BSR Candidate.
Конфигурация:
# Определить интерфейс для BSR адреса
set protocols pim interface lo
# Loopback адрес
set interfaces loopback lo address 10.255.0.1/32
# BSR Candidate
set protocols pim bsr candidate-bsr address 10.255.0.1
set protocols pim bsr candidate-bsr priority 100
commit
saveПараметры:
- address: IP адрес этого роутера для BSR
- priority: 0-255, выше = приоритетнее, по умолчанию 0
BSR Election:
- Роутер с наивысшим priority побеждает
- При равном priority - наивысший IP адрес
Candidate-RP
Настройка роутера как Candidate-RP (кандидат на роль RP).
Конфигурация:
# Candidate-RP для всех групп
set protocols pim bsr candidate-rp address 10.255.0.1
# Candidate-RP для конкретных групп
set protocols pim bsr candidate-rp address 10.255.0.1 group 239.1.0.0/16
set protocols pim bsr candidate-rp address 10.255.0.1 priority 192
commit
saveПараметры:
- address: IP адрес этого роутера как RP
- group: Диапазон групп (опционально)
- priority: 0-255, выше = приоритетнее, по умолчанию 192
Процесс:
- Candidate-RP отправляет Candidate-RP-Advertisement к BSR
- BSR собирает список всех Candidate-RP
- BSR распространяет RP-Set через Bootstrap сообщения
- Все PIM роутеры получают RP mappings автоматически
Полная BSR конфигурация
Сценарий: 2 роутера - один BSR и RP, второй backup.
Router 1 (Primary BSR и RP):
# Loopback
set interfaces loopback lo address 10.255.0.1/32
# OSPF для loopback
set protocols ospf area 0 network 10.255.0.1/32
# PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# BSR Candidate с высоким приоритетом
set protocols pim bsr candidate-bsr address 10.255.0.1
set protocols pim bsr candidate-bsr priority 200
# Candidate-RP с высоким приоритетом
set protocols pim bsr candidate-rp address 10.255.0.1
set protocols pim bsr candidate-rp priority 200
commit
saveRouter 2 (Backup BSR и RP):
# Loopback
set interfaces loopback lo address 10.255.0.2/32
# OSPF
set protocols ospf area 0 network 10.255.0.2/32
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# BSR Candidate с низким приоритетом
set protocols pim bsr candidate-bsr address 10.255.0.2
set protocols pim bsr candidate-bsr priority 100
# Candidate-RP с низким приоритетом
set protocols pim bsr candidate-rp address 10.255.0.2
set protocols pim bsr candidate-rp priority 100
commit
saveНа всех остальных роутерах: Только PIM на интерфейсах, не нужна статическая RP конфигурация.
Проверка:
show ip pim bsr
show ip pim rp-infoПримеры конфигурации
Пример 1: IPTV провайдер (Yandex Cloud)
Сценарий:
- VyOS роутер в Yandex Cloud как PIM-SM для IPTV
- RP на центральном роутере
- Источник: IPTV сервер 10.100.0.50
- Клиенты: в сетях 192.168.0.0/16
- Группы: 239.10.0.0/16
Топология:
[IPTV Server] --- eth1 --- [R1-DR] --- eth0 --- [R2-RP] --- eth0 --- [R3] --- eth1 --- [STB]
10.100.0.50 10.0.1.0/30 10.0.2.0/30 192.168.10.0/24
239.10.1.1-255 Set-Top BoxesRouter R1 (First-hop DR):
# Интерфейсы
set interfaces ethernet eth1 address 10.100.0.1/24
set interfaces ethernet eth1 description 'To IPTV Server'
set interfaces ethernet eth0 address 10.0.1.1/30
set interfaces ethernet eth0 description 'To RP'
# OSPF
set protocols ospf parameters router-id 10.255.0.1
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.100.0.0/24
# PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth0 dr-priority 100
set protocols pim interface eth1
set protocols pim interface eth1 dr-priority 200
set protocols pim interface eth1 hello 10
# Статический RP
set protocols pim rp address 10.255.0.2 group 239.10.0.0/16
# Firewall для PIM
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 description 'Allow PIM'
set firewall ipv4 input filter rule 100 protocol pim
commit
saveRouter R2 (RP):
# Интерфейсы
set interfaces ethernet eth0 address 10.0.1.2/30
set interfaces ethernet eth1 address 10.0.2.1/30
set interfaces loopback lo address 10.255.0.2/32
set interfaces loopback lo description 'RP Address'
# OSPF
set protocols ospf parameters router-id 10.255.0.2
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.255.0.2/32
# PIM на всех интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# Этот роутер - RP
set protocols pim rp address 10.255.0.2 group 239.10.0.0/16
# ECMP для балансировки
set protocols pim ecmp
set protocols pim ecmp rebalance
# Firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol pim
commit
saveRouter R3 (Last-hop к клиентам):
# Интерфейсы
set interfaces ethernet eth0 address 10.0.2.2/30
set interfaces ethernet eth1 address 192.168.10.1/24
set interfaces ethernet eth1 description 'To Set-Top Boxes'
# OSPF
set protocols ospf parameters router-id 10.255.0.3
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 192.168.10.0/24
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
# IGMP на интерфейсе к клиентам
set protocols pim interface eth1 igmp
set protocols pim interface eth1 igmp version 2
set protocols pim interface eth1 igmp query-interval 125
# Статический RP
set protocols pim rp address 10.255.0.2 group 239.10.0.0/16
# Firewall для IGMP и PIM
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 protocol pim
# Разрешить multicast трафик
set firewall ipv4 input filter rule 120 action accept
set firewall ipv4 input filter rule 120 destination address 239.10.0.0/16
set firewall ipv4 input filter rule 120 description 'Allow IPTV multicast'
commit
saveПроверка:
# На всех роутерах
show ip pim interface
show ip pim neighbor
show ip pim rp-info
# На R1 (источник)
show ip pim upstream
# На R2 (RP)
show ip pim state
show ip pim rp-info
# На R3 (получатели)
show igmp groups
show ip pim join
show ip pim stateМониторинг:
# Multicast трафик
tcpdump -i eth1 -n host 239.10.1.1
# PIM сообщения
tcpdump -i eth0 -n proto 103
# Статистика
show interfaces ethernet eth0
show interfaces ethernet eth1Пример 2: Video Streaming SSM (VK Cloud)
Сценарий:
- VK Cloud: PIM-SSM для корпоративного видео вещания
- Видео серверы: 10.50.0.0/24 (известные источники)
- SSM диапазон: 232.1.0.0/16
- Клиенты с IGMPv3 поддержкой
- Распределение по офисам
Топология:
[Video Server 1] --- eth1 --- [R1] --- eth0 ---|
10.50.0.10 |
232.1.1.1 |--- [R2-Core] --- eth1 --- [R3] --- eth2 --- [Office A]
| 192.168.10.0/24
[Video Server 2] --- eth2 --- [R1] --- eth0 ---|
10.50.0.20
232.1.2.1Router R1 (First-hop от источников):
# Интерфейсы
set interfaces ethernet eth1 address 10.50.0.1/24
set interfaces ethernet eth1 description 'Video Servers'
set interfaces ethernet eth0 address 10.0.1.1/30
set interfaces ethernet eth0 description 'To Core'
# OSPF
set protocols ospf parameters router-id 10.255.0.1
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.50.0.0/24
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface eth1 dr-priority 200
# SSM prefix list
set policy prefix-list SSM-VIDEO rule 10 action permit
set policy prefix-list SSM-VIDEO rule 10 prefix 232.1.0.0/16
set protocols pim ssm prefix-list SSM-VIDEO
# Firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol pim
commit
saveRouter R2 (Core Router):
# Интерфейсы
set interfaces ethernet eth0 address 10.0.1.2/30
set interfaces ethernet eth1 address 10.0.2.1/30
set interfaces loopback lo address 10.255.0.2/32
# OSPF
set protocols ospf parameters router-id 10.255.0.2
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.255.0.2/32
# PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# SSM
set policy prefix-list SSM-VIDEO rule 10 action permit
set policy prefix-list SSM-VIDEO rule 10 prefix 232.1.0.0/16
set protocols pim ssm prefix-list SSM-VIDEO
# ECMP
set protocols pim ecmp
set protocols pim ecmp rebalance
# Firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol pim
commit
saveRouter R3 (Last-hop к офису):
# Интерфейсы
set interfaces ethernet eth1 address 10.0.2.2/30
set interfaces ethernet eth2 address 192.168.10.1/24
set interfaces ethernet eth2 description 'Office A'
# OSPF
set protocols ospf parameters router-id 10.255.0.3
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 192.168.10.0/24
# PIM
set protocols pim interface eth1
set protocols pim interface eth2
# IGMP v3 (обязательно для SSM)
set protocols pim interface eth2 igmp
set protocols pim interface eth2 igmp version 3
set protocols pim interface eth2 igmp query-interval 125
# SSM
set policy prefix-list SSM-VIDEO rule 10 action permit
set policy prefix-list SSM-VIDEO rule 10 prefix 232.1.0.0/16
set protocols pim ssm prefix-list SSM-VIDEO
# Firewall
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 protocol pim
set firewall ipv4 input filter rule 120 action accept
set firewall ipv4 input filter rule 120 destination address 232.1.0.0/16
commit
saveТестирование клиента (Linux с IGMPv3):
# Подписка на (S,G) с IGMPv3
# Источник: 10.50.0.10, Группа: 232.1.1.1
socat UDP4-RECV:5000,sourceport=5000,ip-add-source-membership=232.1.1.1:10.50.0.10:eth0 STDOUT
# Или с VLC
vlc udp://@232.1.1.1:5000Проверка SSM:
# На всех роутерах
show ip pim state
show ip pim upstream
# На R3
show igmp groups
show igmp sourcesПример 3: PIM с BSR (Auto-configuration)
Сценарий:
- Автоматическое распределение RP через BSR
- 2 Candidate-RP (redundancy)
- 1 Primary BSR, 1 Backup BSR
- Все роутеры получают RP mappings автоматически
Router R1 (Primary BSR и Primary RP):
# Интерфейсы
set interfaces loopback lo address 10.255.0.1/32
set interfaces ethernet eth0 address 10.0.1.1/30
set interfaces ethernet eth1 address 10.0.2.1/30
# OSPF
set protocols ospf parameters router-id 10.255.0.1
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.255.0.1/32
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# BSR Candidate - высокий priority
set protocols pim bsr candidate-bsr address 10.255.0.1
set protocols pim bsr candidate-bsr priority 200
# Candidate-RP - высокий priority
set protocols pim bsr candidate-rp address 10.255.0.1
set protocols pim bsr candidate-rp priority 200
commit
saveRouter R2 (Backup BSR и Backup RP):
# Интерфейсы
set interfaces loopback lo address 10.255.0.2/32
set interfaces ethernet eth0 address 10.0.1.2/30
set interfaces ethernet eth1 address 10.0.3.1/30
# OSPF
set protocols ospf parameters router-id 10.255.0.2
set protocols ospf area 0 network 10.0.0.0/8
set protocols ospf area 0 network 10.255.0.2/32
# PIM
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim interface lo
# BSR Candidate - низкий priority
set protocols pim bsr candidate-bsr address 10.255.0.2
set protocols pim bsr candidate-bsr priority 100
# Candidate-RP - низкий priority
set protocols pim bsr candidate-rp address 10.255.0.2
set protocols pim bsr candidate-rp priority 100
commit
saveRouter R3, R4, R5 (Regular PIM routers):
# Только PIM на интерфейсах
set protocols pim interface eth0
set protocols pim interface eth1
# Не требуется статический RP!
# RP информация получается автоматически от BSR
commit
saveПроверка BSR:
# На всех роутерах
show ip pim bsr
# Вывод покажет:
# PIMv2 Bootstrap information
# BSR address: 10.255.0.1 (priority 200)
# Uptime: 00:15:23, BSR Candidate priority: 200
# RP Set:
# Group 224.0.0.0/4
# RP: 10.255.0.1 (priority 200, holdtime 150s)
# RP: 10.255.0.2 (priority 100, holdtime 150s)
show ip pim rp-info
# Вывод:
# RP: 10.255.0.1 (primary, learned via BSR)
# Group: 224.0.0.0/4Failover тестирование:
# Выключить R1 (Primary BSR/RP)
# На R2 автоматически станет BSR
# Все роутеры переключатся на RP 10.255.0.2Пример 4: Multi-RP для разных сервисов
Сценарий:
- RP1 для IPTV (239.1.0.0/16)
- RP2 для Video Conferencing (239.2.0.0/16)
- RP3 для Financial Data (239.3.0.0/16)
- Load balancing между RP
RP1 Router:
set interfaces loopback lo address 10.255.0.1/32
set protocols ospf area 0 network 10.255.0.1/32
set protocols pim interface eth0
set protocols pim interface lo
# RP для IPTV
set protocols pim rp address 10.255.0.1 group 239.1.0.0/16
commit
saveRP2 Router:
set interfaces loopback lo address 10.255.0.2/32
set protocols ospf area 0 network 10.255.0.2/32
set protocols pim interface eth0
set protocols pim interface lo
# RP для Video Conf
set protocols pim rp address 10.255.0.2 group 239.2.0.0/16
commit
saveRP3 Router:
set interfaces loopback lo address 10.255.0.3/32
set protocols ospf area 0 network 10.255.0.3/32
set protocols pim interface eth0
set protocols pim interface lo
# RP для Financial Data
set protocols pim rp address 10.255.0.3 group 239.3.0.0/16
commit
saveВсе остальные роутеры:
set protocols pim interface eth0
set protocols pim interface eth1
# Все три RP
set protocols pim rp address 10.255.0.1 group 239.1.0.0/16
set protocols pim rp address 10.255.0.2 group 239.2.0.0/16
set protocols pim rp address 10.255.0.3 group 239.3.0.0/16
commit
saveПроверка:
show ip pim rp-info
# Вывод:
# Group: 239.1.0.0/16
# RP: 10.255.0.1 (static)
# Group: 239.2.0.0/16
# RP: 10.255.0.2 (static)
# Group: 239.3.0.0/16
# RP: 10.255.0.3 (static)Операционные команды
Show Commands
PIM Interface:
show ip pim interfaceВывод:
Interface State Address PIM Nbrs PIM DR FHR IfChannels
eth0 up 10.0.1.1 1 local 0 0
eth1 up 10.100.0.1 0 local 1 5
lo up 10.255.0.1 0 local 0 0PIM Interface детали:
show ip pim interface eth0Вывод:
Interface: eth0
State: up
Address: 10.0.1.1
Designated Router: 10.0.1.1 (local)
DR Priority: 1
Hello Period: 30 sec
Hello Timer: 00:00:18
Neighbor Count: 1PIM Neighbors:
show ip pim neighborВывод:
Interface Neighbor Uptime Timer DR Pri DR
eth0 10.0.1.2 01:23:45 00:01:25 1 10.0.1.2
eth1 10.0.2.1 00:45:12 00:01:30 100 10.0.2.1PIM RP Information:
show ip pim rp-infoВывод:
RP address group/prefix-list OIF I am RP Source Group-Type
10.255.0.2 224.0.0.0/4 lo yes Static ASM
10.255.0.1 239.1.0.0/16 eth0 no Static ASM
232.0.0.0/8 232.0.0.0/8 - - - SSMPIM State:
show ip pim stateВывод:
Codes: J -> Pim Join, I -> IGMP Report, S -> Source, * -> Inherited from (*,G)
Active Sources:
Source Group Proto Input Output TTL Uptime
10.100.0.50 239.10.1.1 J eth1 eth0 1 00:15:23
Active Groups:
Source Group Input Output Flags Uptime
* 239.10.1.1 - eth0 J 00:20:15
10.100.0.50 239.10.1.1 eth1 eth0 SJ 00:15:23PIM Join:
show ip pim joinВывод:
Interface Address Source Group State Uptime Expire
eth0 10.0.1.1 * 239.10.1.1 JOIN 00:20:15 00:00:42
eth0 10.0.1.1 10.100.0.50 239.10.1.1 JOIN 00:15:23 00:00:38PIM Upstream:
show ip pim upstreamВывод:
Iif Source Group State Uptime JoinTimer RSTimer
eth1 10.100.0.50 239.10.1.1 Joined 00:15:23 00:00:38 00:02:45
- * 239.10.1.1 NotJoined 00:20:15 --:--:-- --:--:--PIM BSR:
show ip pim bsrВывод:
PIMv2 Bootstrap information
BSR address: 10.255.0.1 (priority 200)
Uptime: 01:45:23, BSR Candidate priority: 200
This system is the Bootstrap Router (BSR)
RP Set:
Group: 224.0.0.0/4
RP: 10.255.0.1 (priority 200, holdtime 150s, uptime 01:45:20)
RP: 10.255.0.2 (priority 100, holdtime 150s, uptime 01:45:18)IGMP Commands (в контексте PIM)
IGMP Groups:
show igmp groupsВывод:
Interface Address Group Mode Timer Srcs V Uptime
eth1 192.168.10.1 239.10.1.1 EXCL 00:04:15 1 3 00:20:15
eth1 192.168.10.1 239.10.1.2 INCL 00:04:20 0 2 00:15:30IGMP Sources (для IGMPv3 SSM):
show igmp sourcesВывод:
Interface Address Group Source Timer Fwd Uptime
eth1 192.168.10.1 232.1.1.1 10.50.0.10 00:03:45 Y 00:10:23
eth1 192.168.10.1 232.1.2.1 10.50.0.20 00:03:50 Y 00:08:15IGMP Interface:
show igmp interfaceVывод:
Interface State Address V Querier Query Timer Other Timer Group Count
eth1 up 192.168.10.1 3 local 00:01:05 00:00:00 2
eth2 up 192.168.20.1 2 local 00:01:15 00:00:00 1Statistics
PIM Statistics:
show ip pim statisticsВывод:
Interface eth0:
Hello messages:
Received: 1523
Sent: 1520
Join/Prune messages:
Received: 245
Sent: 198
Register messages:
Received: 0
Sent: 0
Register-Stop messages:
Received: 0
Sent: 0Multicast Routing Table:
show ip mrouteВывод:
Source Group Proto Input Output TTL Uptime
* 239.10.1.1 PIM - eth0 1 00:20:15
10.100.0.50 239.10.1.1 PIM eth1 eth0 1 00:15:23Multicast Routing Table детали:
show ip mroute 239.10.1.1Вывод:
Group: 239.10.1.1
Incoming interface: eth1
Source: 10.100.0.50
RPF neighbor: 10.100.0.50
Outgoing interface list:
eth0, Forward/Sparse, uptime 00:15:23, expires 00:02:37Management Commands
Restart PIM:
restart pimClear PIM state (soft reset):
# Нет прямой команды, используйте restart
restart pimTroubleshooting
PIM Neighbors не устанавливаются
Проблема: PIM соседи не появляются в show ip pim neighbor.
Проверка:
PIM включен на интерфейсах:
show protocols pim show ip pim interfaceIP connectivity:
ping <neighbor-ip>PIM Hello сообщения:
tcpdump -i eth0 -n proto 103Должны видеть периодические PIM Hello (каждые 30 сек).
Firewall блокирует PIM (протокол 103):
set firewall ipv4 input filter rule 100 action accept set firewall ipv4 input filter rule 100 protocol pim commitMTU issues:
show interfaces ethernet eth0Проверьте что MTU достаточен (1500+).
Unicast routing работает:
show ip route <neighbor-ip>Должен быть маршрут к соседу.
Решение:
# Разрешить PIM в firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol pim
# Restart PIM
restart pim
commit
saveRP не доступен
Проблема: show ip pim rp-info показывает RP, но нет connectivity.
Проверка:
RP IP в routing table:
show ip route <rp-address>Должен быть маршрут к RP.
Ping RP:
ping <rp-address>PIM соседи по пути к RP:
show ip pim neighborRPF check:
show ip rpf <rp-address>Вывод покажет RPF interface и RPF neighbor.
RP конфигурация одинакова на всех роутерах:
show protocols pim rp
Решение:
# Убедитесь что RP IP в OSPF/BGP
set protocols ospf area 0 network <rp-network>
# Проверьте что RP адрес на loopback
set interfaces loopback lo address <rp-address>/32
# Одинаковая RP конфигурация на всех роутерах
set protocols pim rp address <rp-address>
commit
saveMulticast трафик не доходит до получателей
Проблема: IGMP подписки есть, но multicast трафик не приходит.
Проверка:
IGMP группы активны:
show igmp groupsPIM Join отправлен upstream:
show ip pim join show ip pim upstreamДолжны видеть JOIN для группы.
PIM State для группы:
show ip pim stateДолжны видеть (*,G) и (S,G) entries.
Source регистрируется на RP:
# На RP show ip pim upstreamДолжны видеть источник.
Multicast routing table:
show ip mroute <group>Должны видеть Incoming и Outgoing interfaces.
Трафик достигает first-hop router:
tcpdump -i eth1 -n host <multicast-group>RPF check проходит:
show ip rpf <source-ip>RPF interface должен совпадать с incoming interface для источника.
Firewall разрешает multicast:
show firewallПроверьте правила для destination 224.0.0.0/4.
Решение:
# Разрешить multicast в firewall
set firewall ipv4 input filter rule 120 action accept
set firewall ipv4 input filter rule 120 destination address 224.0.0.0/4
set firewall ipv4 forward filter rule 120 action accept
set firewall ipv4 forward filter rule 120 destination address 224.0.0.0/4
# Проверить IGMP
set protocols pim interface eth1 igmp
set protocols pim interface eth1 igmp version 2
# Restart
restart igmp
restart pim
commit
saveRPF Failure
Проблема: RPF (Reverse Path Forwarding) check fail, трафик отбрасывается.
RPF принцип: Multicast пакет должен прибыть на интерфейс, который ведет обратно к источнику (по unicast routing table).
Диагностика:
show ip rpf <source-ip>Вывод:
Routing entry for 10.100.0.50
Known via "connected", distance 0, metric 0
* directly connected, eth1
RPF interface: eth1
RPF address: 10.100.0.50Проверка:
- RPF interface должен совпадать с incoming interface multicast трафика
- Если не совпадает - RPF failure, пакет drop
Решение:
Исправить unicast routing:
# Убедитесь что маршрут к источнику правильный show ip route <source-ip>Использовать static mroute (если unicast и multicast топологии разные):
# Не поддерживается VyOS CLI напрямую # Используйте FRR vtysh vtysh configure ip mroute <source-network> <rpf-interface> exit writeECMP: Если несколько путей к источнику:
set protocols pim ecmp commit
SSM не работает с IGMPv2
Проблема: SSM группы (232.0.0.0/8) не работают с IGMPv2 клиентами.
Причина: SSM требует IGMPv3 для (S,G) подписок.
Решение:
Upgrade клиентов к IGMPv3:
# На Linux клиенте echo 3 > /proc/sys/net/ipv4/conf/eth0/force_igmp_versionНастроить IGMPv3 на VyOS:
set protocols pim interface eth1 igmp version 3 commitПроверка:
show igmp interface eth1Должно показать Version: 3.
Если клиенты не поддерживают IGMPv3 - использовать ASM (Any-Source Multicast) вместо SSM.
SPT Switchover не происходит
Проблема: Трафик продолжает идти через RP, не переключается на SPT.
Проверка:
SPT switchover не отключен:
show protocols pimНе должно быть
spt-switchover infinity-and-beyond.PIM State:
show ip pim stateДолжны видеть как (*,G) так и (S,G) entries после получения первого пакета.
Unicast маршрут к источнику:
show ip route <source-ip>Mroute table:
show ip mroute <group>После SPT switchover Incoming interface должен измениться с RP path на source path.
Решение:
Убрать infinity-and-beyond (если установлен):
delete protocols pim spt-switchover infinity-and-beyond commitПроверить RPF к источнику:
show ip rpf <source-ip>Restart PIM:
restart pim
BSR не выбирается
Проблема: BSR election не происходит, нет RP mappings.
Проверка:
Candidate-BSR настроен:
show protocols pim bsrBSR status:
show ip pim bsrДолжно показать BSR address и RP Set.
PIM neighbors:
show ip pim neighborBSR сообщения распространяются через PIM.
Bootstrap сообщения:
tcpdump -i eth0 -n proto 103 and 'ip[20] == 4'Тип 4 - Bootstrap Message.
Решение:
# На Primary BSR
set protocols pim bsr candidate-bsr address <loopback-ip>
set protocols pim bsr candidate-bsr priority 200
# На Backup BSR
set protocols pim bsr candidate-bsr address <loopback-ip>
set protocols pim bsr candidate-bsr priority 100
# Candidate-RP
set protocols pim bsr candidate-rp address <loopback-ip>
set protocols pim bsr candidate-rp priority 200
# Restart
restart pim
commit
saveHigh CPU от PIM
Проблема: Высокая загрузка CPU от FRR pimd процесса.
Причины:
- Слишком много (S,G) state
- Частые Join/Prune сообщения
- Нестабильность источников (flapping)
Диагностика:
# Количество mroute entries
show ip mroute | count
# PIM state
show ip pim state | count
# PIM statistics
show ip pim statisticsРешение:
Увеличить Join-Prune Interval:
set protocols pim join-prune-interval 120 commitУвеличить Keep-Alive Timer:
set protocols pim keep-alive-timer 300 commitИспользовать SSM вместо ASM (меньше state):
set protocols pim ssm prefix-list SSM-RANGE commitОграничить количество групп через firewall или RP accept-list.
Мониторинг и логирование
Continuous Monitoring
Мониторинг PIM neighbors:
watch -n 5 'show ip pim neighbor'Мониторинг PIM state:
watch -n 10 'show ip pim state'Мониторинг IGMP groups:
watch -n 5 'show igmp groups'Multicast трафик:
# PIM протокол
tcpdump -i eth0 -n -v proto 103
# Конкретная multicast группа
tcpdump -i eth0 -n host 239.10.1.1
# Все multicast
tcpdump -i eth0 -n 'dst net 224.0.0.0/4'Logging
Системные логи:
show log tail 100 | match pimSyslog для PIM:
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
commitFRR debug (осторожно, очень verbose):
# Войти в FRR shell
vtysh
# Debug PIM
debug pim events
debug pim packets
# Debug IGMP
debug igmp events
debug igmp packets
# Отключить debug
no debug pim events
no debug pim packets
exitЛоги в файл:
vtysh
configure
log file /var/log/frr/pim.log
log syslog informational
exit
writeSNMP Monitoring
SNMP для multicast статистики:
# Установить SNMP
set service snmp community public authorization ro
set service snmp community public network 192.168.1.0/24
commitSNMP OIDs для PIM:
.1.3.6.1.2.1.157- PIM-MIB.1.3.6.1.2.1.83- IGMP-MIB.1.3.6.1.2.1.15- IPMROUTE-MIB
SNMP query:
snmpwalk -v2c -c public <vyos-ip> .1.3.6.1.2.1.157Performance Metrics
Bandwidth мониторинг:
# Установить bmon
sudo apt install bmon
# Запустить
bmon -p eth0,eth1 -b
# Или iftop для multicast
sudo iftop -i eth0 -f 'dst net 224.0.0.0/4'Multicast пакеты статистика:
# Входящие multicast пакеты
show interfaces ethernet eth0 | match multicast
# Статистика mroute
show ip mroute countЛучшие практики
Дизайн RP
Placement RP:
- Центральное расположение в топологии
- Loopback адрес (стабильный)
- Высокая доступность (используйте Anycast RP или BSR)
Redundancy:
- Несколько Candidate-RP с BSR
- Или Anycast RP (advanced)
- VRRP на интерфейсах RP
Load Balancing:
- Разные RP для разных диапазонов групп
- Мониторинг нагрузки на RP
PIM Конфигурация
DR Priority:
- Настраивайте явно на multi-access сегментах
- Предпочитайте более мощные роутеры
Hello Interval:
- Стандартные 30 секунд для стабильных сетей
- 10-15 секунд для быстрой convergence
- Не ниже 10 секунд (избыточный трафик)
SPT Switchover:
- Оставьте по умолчанию (immediate) для оптимальных путей
- Используйте infinity-and-beyond только для специальных случаев
SSM vs ASM:
- Предпочитайте SSM если источники известны
- SSM проще, безопаснее, меньше state
- ASM для dynamic источников
Безопасность
Firewall для PIM:
set firewall ipv4 input filter rule 100 action accept set firewall ipv4 input filter rule 100 protocol pim set firewall ipv4 input filter rule 100 source address 10.0.0.0/8Ограничение multicast групп:
set firewall ipv4 input filter rule 110 action accept set firewall ipv4 input filter rule 110 destination address 239.0.0.0/8 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'Rate limiting:
set firewall ipv4 input filter rule 100 limit rate 100/secondIGMP контроль:
# Ограничить количество IGMP групп на интерфейс # (не поддерживается VyOS CLI, используйте FRR)
Производительность
ECMP:
set protocols pim ecmp set protocols pim ecmp rebalanceTimers оптимизация:
# Увеличить для снижения CPU set protocols pim join-prune-interval 120 set protocols pim keep-alive-timer 300Limit (S,G) state:
- Используйте SSM где возможно
- Ограничивайте количество источников
Масштабирование
Количество групп:
- PIM-SM масштабируется до тысяч групп
- Мониторинг:
show ip pim state | count
Количество (S,G) entries:
- Зависит от памяти роутера
- SSM снижает количество state
Bandwidth:
- Учитывайте репликацию multicast трафика
- Используйте QoS для приоритизации
Интеграция с другими протоколами
PIM + OSPF
Сценарий: PIM поверх OSPF для unicast маршрутизации.
# OSPF
set protocols ospf parameters router-id 10.255.0.1
set protocols ospf area 0 network 10.0.0.0/8
# PIM использует OSPF routing table для RPF
set protocols pim interface eth0
set protocols pim rp address 10.255.0.2
commitВажно: RP адрес должен быть в OSPF.
PIM + BGP
Сценарий: Inter-AS multicast с BGP.
# BGP
set protocols bgp system-as 65001
set protocols bgp neighbor 203.0.113.1 remote-as 65000
# PIM
set protocols pim interface eth0
set protocols pim rp address 10.255.0.2
commitMSDP (Multicast Source Discovery Protocol): Не поддерживается текущей версией VyOS.
PIM + BFD
BFD (Bidirectional Forwarding Detection) - быстрое обнаружение отказа соседа.
Конфигурация:
# BFD глобально
set protocols bfd peer 10.0.1.2
set protocols bfd peer 10.0.1.2 interval transmit 300
set protocols bfd peer 10.0.1.2 interval receive 300
set protocols bfd peer 10.0.1.2 interval multiplier 3
# PIM будет использовать BFD автоматически если настроен
set protocols pim interface eth0
commitПреимущества:
- Sub-second обнаружение отказа PIM neighbor
- Быстрая convergence
Примечание: VyOS PIM (FRR) поддерживает BFD для PIM neighbors.
PIM + VPN (IPsec/WireGuard)
Multicast через VPN туннель.
Требования:
- VTI интерфейс (не policy-based VPN)
- PIM на VTI интерфейсе
- Unicast routing через VPN
Конфигурация:
# VTI интерфейс
set interfaces vti vti0 address 172.16.0.1/30
# IPsec VPN
set vpn ipsec site-to-site peer 203.0.113.2 vti bind vti0
# PIM на VTI
set protocols pim interface vti0
set protocols pim interface vti0 hello 10
# OSPF через VPN
set protocols ospf area 0 network 172.16.0.0/30
# RP
set protocols pim rp address 10.255.0.2
commitСравнение решений
PIM-SM vs IGMP Proxy
| Характеристика | PIM-SM | IGMP Proxy |
|---|---|---|
| Топология | Любая | Простая (дерево) |
| Масштабируемость | Тысячи групп | Сотни групп |
| Redundancy | Полная | Ограниченная |
| Сложность | Высокая | Низкая |
| RP | Требуется | Не требуется |
| CPU/Memory | Среднее | Низкое |
| Применение | Enterprise/SP | Edge/Home |
PIM-SM vs PIM-SSM
| Характеристика | PIM-SM | PIM-SSM |
|---|---|---|
| RP | Требуется | Не требуется |
| Источники | Любые | Известные |
| IGMP версия | v2/v3 | v3 обязательно |
| State | (*,G) + (S,G) | (S,G) только |
| Complexity | Выше | Ниже |
| Security | Средняя | Высокая |
| Применение | Dynamic sources | Known sources |
Статический RP vs BSR
| Характеристика | Статический RP | BSR |
|---|---|---|
| Конфигурация | Вручную на всех | Автоматическая |
| Failover | Ручной | Автоматический |
| Масштабируемость | Ограниченная | Высокая |
| Complexity | Низкая | Средняя |
| Применение | Малые сети | Большие сети |
Ссылки и ресурсы
RFC Documents
- RFC 7761 - PIM-SM (Sparse Mode) - основной стандарт
- RFC 4601 - PIM-SM v2
- RFC 3973 - PIM-DM (Dense Mode)
- RFC 4607 - SSM (Source-Specific Multicast)
- RFC 5059 - BSR (Bootstrap Router Mechanism)
- RFC 5015 - Bidirectional PIM
- RFC 3376 - IGMPv3 (для SSM)
VyOS Documentation
FRR Documentation
Полезные инструменты
- pimd - PIM daemon (используется FRR)
- smcroute - Static multicast routing
- iperf - Multicast performance testing
- VLC - Multicast streaming player
- tcpdump - Packet capture
- Wireshark - Protocol analyzer
- Zabbix/Prometheus - Monitoring
Community
Следующие шаги
После настройки PIM рекомендуется изучить:
- IGMP Proxy - для простых топологий
- MPLS - для MVPN (Multicast VPN)
- QoS - для приоритизации multicast трафика
- Firewall - для защиты multicast сетей
- OSPF - для unicast routing
- BFD - для быстрого failover
Заключение
PIM (Protocol Independent Multicast) - мощное решение для multicast маршрутизации в сложных топологиях. PIM-SM с Rendezvous Point обеспечивает эффективное распределение multicast трафика для распределенных получателей, PIM-SSM упрощает конфигурацию для известных источников, а Bootstrap Router автоматизирует управление RP.
Ключевые моменты:
- PIM-SM для сложных топологий с RP
- PIM-SSM для известных источников (требует IGMPv3)
- BSR для автоматического распределения RP
- SPT switchover для оптимальных путей
- ECMP для балансировки multicast потоков
- Интеграция с OSPF/BGP для unicast routing
- Мониторинг PIM neighbors, state, RP
Выбор решения:
- IGMP Proxy - для простых топологий (home/small office)
- PIM-SM - для enterprise и service provider сетей
- PIM-SSM - для IPTV, видео стриминга с известными источниками