PIM6 - Protocol Independent Multicast для IPv6

PIM6 (Protocol Independent Multicast for IPv6) обеспечивает multicast маршрутизацию в IPv6 сетях, используя MLD (Multicast Listener Discovery) вместо IGMP.

Обзор

PIM6 - версия протокола PIM для IPv6 сетей.

Основные характеристики:

  • Multicast маршрутизация для IPv6
  • Использует MLD вместо IGMP
  • Поддерживает PIM-SM (Sparse Mode) и PIM-SSM (Source-Specific Multicast)
  • Работает с IPv6 адресным пространством ff00::/8
  • Требует конфигурации RP (Rendezvous Point) для SM режима
  • Встроенная поддержка Embedded RP (RFC 3956)

Стандарты:

  • RFC 4601 - Protocol Independent Multicast - Sparse Mode (PIM-SM): основной стандарт
  • RFC 7761 - Protocol Independent Multicast - Sparse Mode (PIM-SM): обновление
  • RFC 3810 - Multicast Listener Discovery Version 2 (MLDv2) for IPv6
  • RFC 3956 - Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
  • RFC 4607 - Source-Specific Multicast for IP
  • RFC 5059 - Bootstrap Router (BSR) Mechanism for PIM

Применение:

  • IPv6-only сети с multicast требованиями
  • Современные data center с IPv6
  • IoT сети на базе IPv6
  • Видео конференции через IPv6
  • IPTV over IPv6
  • Software-defined networking (SDN) с IPv6 multicast

PIM6 vs PIM (IPv4)

Ключевые различия

ХарактеристикаPIM (IPv4)PIM6 (IPv6)
Группы управленияIGMPMLD
Адресное пространство224.0.0.0/4ff00::/8
RP адресIPv4IPv6, поддержка Embedded RP
SSM диапазон232.0.0.0/8ff3x::/32
Neighbor discoveryPIM Hello (IPv4)PIM Hello (IPv6)
BSR адресIPv4IPv6
Auto-RPДоступенНе применим

Общие функции

Схожие между PIM и PIM6:

  • Алгоритм PIM-SM идентичен
  • Механизм Bootstrap Router (BSR)
  • Source-Specific Multicast (SSM)
  • Register mechanism для новых источников
  • Join/Prune сообщения
  • Assert mechanism для выбора forwarder

MLD (Multicast Listener Discovery)

Обзор MLD

MLD - эквивалент IGMP для IPv6.

Версии MLD:

MLDv1 (RFC 2710):

  • Базовая функциональность
  • Listener Report и Listener Done сообщения
  • Any-Source Multicast (ASM)

MLDv2 (RFC 3810):

  • Source filtering (Include/Exclude)
  • Source-Specific Multicast (SSM) поддержка
  • Совместимость с MLDv1

MLD Сообщения

Multicast Listener Query:

  • Отправляется роутером для обнаружения слушателей
  • General Query - для всех групп
  • Multicast-Address-Specific Query - для конкретной группы
  • Multicast-Address-and-Source-Specific Query - для группы и источника (MLDv2)

Multicast Listener Report:

  • Хост сообщает о желании получать multicast трафик
  • Периодические обновления

Multicast Listener Done (MLDv1):

  • Хост покидает multicast группу
  • Быстрое удаление подписки

MLDv2 Report:

  • Расширенный Report с source filtering
  • Include/Exclude режимы

IPv6 Multicast Адреса

Структура IPv6 multicast: ffXY::/8

X - Flags:

  • 0 = Well-known multicast
  • 1 = Transient multicast

Y - Scope:

  • 0 = Reserved
  • 1 = Interface-local
  • 2 = Link-local
  • 4 = Admin-local
  • 5 = Site-local
  • 8 = Organization-local
  • E = Global

Специальные адреса:

  • ff02::1 - All Nodes (все узлы на link)
  • ff02::2 - All Routers (все роутеры на link)
  • ff02::5 - OSPFv3 All Routers
  • ff02::6 - OSPFv3 Designated Routers
  • ff02::9 - RIPng Routers
  • ff02::d - PIM Routers
  • ff02::16 - MLDv2 Reports destination
  • ff02::1:2 - All DHCP Servers and Relay Agents
  • ff05::1:3 - All DHCP Servers (site-local)

SSM диапазон: ff3x::/32 (x = scope)

  • ff3e::/32 - SSM Global scope

Embedded RP: ff7x:0RP0::/96

  • RP адрес встроен в multicast адрес

PIM6-SM (Sparse Mode)

Концепция

PIM6-SM использует shared tree через Rendezvous Point (RP).

Этапы работы:

  1. Источник регистрируется:

    • Designated Router (DR) источника инкапсулирует multicast пакеты в PIM Register
    • Register отправляется unicast на RP
  2. Получатели присоединяются:

    • DR получателя отправляет PIM Join к RP
    • Строится shared tree (*, G) от получателей к RP
  3. Shortest Path Tree (SPT):

    • DR получателя опционально переключается на SPT (S, G)
    • Прямой путь от источника к получателю
    • Отправляет Prune к RP для (*, G)
  4. Оптимизация:

    • SPT минимизирует задержку
    • RP разгружается после построения SPT

RP для IPv6

Методы конфигурации RP:

  1. Статический RP:

    • Ручная конфигурация на всех роутерах
    • Максимальный контроль
    • Требует синхронизации
  2. Embedded RP (RFC 3956):

    • RP адрес встроен в multicast группу
    • Автоматическое определение RP
    • Формат: ff7x:0RP0::/96
  3. Bootstrap Router (BSR):

    • Динамическое распространение RP информации
    • Candidate-RP и Candidate-BSR
    • Автоматическое обновление

Embedded RP

Формат адреса:

ff7S:0RPN:PPPP:PPPP:PPPP:PPPP:GGGG:GGGG

Где:

  • S - Scope (4 бита)
  • 0 - Reserved (4 бита)
  • R - Riid (4 бита) - интерфейс RP
  • P - Plen (8 бит) - длина префикса RP
  • N - Network prefix (8 бит)
  • P…P - RP IPv6 prefix (64 бита)
  • G…G - Group ID (32 бита)

Пример:

RP адрес: 2001:db8::1
Multicast группа: ff75:0030:2001:0db8:0000:0000:0000:1234

Разбор:
ff75 - flags=7 (transient), scope=5 (site-local)
0030 - Riid=0, Plen=48 (2001:db8::/48)
2001:0db8:0000 - RP prefix
0000:0000:1234 - Group ID

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

  • Не требует ручной конфигурации RP на каждом роутере
  • RP определяется автоматически из группы
  • Упрощенная конфигурация

Недостатки:

  • Ограниченная гибкость выбора RP
  • Зависимость от адресной схемы

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

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

Синтаксис:

set protocols pim6 interface <interface>

Пример:

set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 interface eth2

commit
save

Эффект:

  • Включает PIM6 на интерфейсе
  • Автоматически запускает MLD
  • Отправляет/принимает PIM Hello сообщения
  • Участвует в multicast маршрутизации

Базовая PIM6-SM сеть

Сценарий:

  • Три роутера в треугольной топологии
  • Статический RP на Router2
  • Multicast источник за Router1
  • Получатели за Router3

Топология:

[Source] --- Router1 --- Router2 (RP) --- Router3 --- [Receivers]
             eth1         eth0  eth1     eth0  eth1

Router1 (First Hop Router):

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:12::1/64
set interfaces ethernet eth1 address 2001:db8:1::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Статический RP (должен совпадать на всех роутерах)
set protocols pim6 rp address 2001:db8:2::1

commit
save

Router2 (RP):

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:12::2/64
set interfaces ethernet eth1 address 2001:db8:23::1/64
set interfaces ethernet eth2 address 2001:db8:2::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 interface eth2

# RP на loopback или eth2
set protocols pim6 rp address 2001:db8:2::1

commit
save

Router3 (Last Hop Router):

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:23::2/64
set interfaces ethernet eth1 address 2001:db8:3::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Статический RP
set protocols pim6 rp address 2001:db8:2::1

commit
save

Проверка базовой конфигурации

Проверка PIM6 интерфейсов:

show ipv6 pim interface

Вывод:

Interface  State  Address            PIM Nbrs  PIM DR   DR Priority
eth0       up     2001:db8:12::1/64  1         2001:db8:12::2  1
eth1       up     2001:db8:1::1/64   0         local      1

Проверка PIM6 соседей:

show ipv6 pim neighbor

Вывод:

Interface  Neighbor          Uptime     Holdtime  DR Priority
eth0       2001:db8:12::2    00:15:23   105       1

Проверка RP:

show ipv6 pim rp-info

Вывод:

RP address       Group          Source          State
2001:db8:2::1    ff00::/8       Static          Active

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

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

MLD автоматически включается при активации PIM6, но можно настроить параметры.

Просмотр MLD групп:

show ipv6 mld groups

Вывод:

Interface        Address                    Group                   Uptime    Expires
eth1             2001:db8:3::1              ff3e::1234              00:05:23  00:04:12
eth1             2001:db8:3::1              ff05::5678              00:03:45  00:04:18

Просмотр MLD интерфейсов:

show ipv6 mld interface

Вывод:

Interface  State  Address            Version  Querier         Query Timer  Uptime
eth0       up     fe80::1            2        fe80::1         00:01:15     00:20:34
eth1       up     fe80::2            2        fe80::2         00:00:58     00:20:34

MLD параметры

Отключение MLD на интерфейсе:

set protocols pim6 interface <interface> mld disable

Применение:

  • Интерфейс участвует в PIM6, но не обрабатывает MLD
  • Используется для transit интерфейсов без клиентов

Пример:

set protocols pim6 interface eth0 mld disable

commit
save

Query Interval:

set protocols pim6 interface <interface> mld interval <seconds>

Параметры:

  • seconds: 1-65535 (по умолчанию 125)

Пример:

set protocols pim6 interface eth1 mld interval 60

commit
save

Last Member Query Count:

set protocols pim6 interface <interface> mld last-member-query-count <count>

Применение:

  • Количество Group-Specific Queries после Listener Done
  • Влияет на скорость удаления из группы

Пример:

set protocols pim6 interface eth1 mld last-member-query-count 2

commit
save

Last Member Query Interval:

set protocols pim6 interface <interface> mld last-member-query-interval <milliseconds>

Параметры:

  • milliseconds: 100-6553500 (по умолчанию 1000)

Пример:

set protocols pim6 interface eth1 mld last-member-query-interval 500

commit
save

Max Response Time:

set protocols pim6 interface <interface> mld max-response-time <milliseconds>

Применение:

  • Максимальное время ожидания ответа на Query
  • Влияет на сходимость

Пример:

set protocols pim6 interface eth1 mld max-response-time 5000

commit
save

MLD Version:

set protocols pim6 interface <interface> mld version <1-2>

Применение:

  • Принудительное использование MLDv1 или MLDv2
  • MLDv2 требуется для SSM

Пример:

set protocols pim6 interface eth1 mld version 2

commit
save

Статическое присоединение к группе

Join группы на интерфейсе:

set protocols pim6 interface <interface> mld join <multicast-address>

Пример:

set protocols pim6 interface eth1 mld join ff3e::1234

commit
save

Применение:

  • Роутер присоединяется к группе как host
  • Полезно для тестирования
  • Роутер начинает получать трафик группы на этом интерфейсе

Join с указанием источника (SSM):

set protocols pim6 interface <interface> mld join <multicast-address> source <source-address>

Пример:

set protocols pim6 interface eth1 mld join ff3e::5678 source 2001:db8:100::10

commit
save

Применение:

  • Source-Specific Multicast
  • Роутер получает только от указанного источника
  • Требует MLDv2

RP конфигурация

Статический RP

Конфигурация RP адреса:

set protocols pim6 rp address <ipv6-address>

Важно: Конфигурация должна быть идентична на всех PIM6 роутерах в домене.

Пример:

set protocols pim6 rp address 2001:db8:100::1

commit
save

Проверка:

show ipv6 pim rp-info

Вывод:

RP address       Group          Source          State
2001:db8:100::1  ff00::/8       Static          Active

RP для конкретных групп

RP для диапазона групп:

set protocols pim6 rp address <ipv6-address> group <prefix>

Пример:

set protocols pim6 rp address 2001:db8:100::1 group ff3e::/32
set protocols pim6 rp address 2001:db8:100::2 group ff05::/16

commit
save

Применение:

  • Разные RP для разных групп
  • Load balancing между RP
  • Разделение по scope

Проверка:

show ipv6 pim rp-info

Вывод:

RP address       Group          Source          State
2001:db8:100::1  ff3e::/32      Static          Active
2001:db8:100::2  ff05::/16      Static          Active

Keep-Alive Timer для RP

Keep-Alive для (S,G) на RP:

set protocols pim6 rp keep-alive-timer <seconds>

Параметры:

  • seconds: 31-60000 (по умолчанию 185)

Применение:

  • Время хранения (S,G) state на RP
  • Влияет на сходимость при изменениях

Пример:

set protocols pim6 rp keep-alive-timer 210

commit
save

BSR (Bootstrap Router) для IPv6

Обзор BSR

BSR обеспечивает динамическое распространение RP информации.

Компоненты:

Candidate-BSR (C-BSR):

  • Роутер, участвующий в выборе BSR
  • Выбирается на основе приоритета и адреса
  • Распространяет RP-Set

Candidate-RP (C-RP):

  • Роутер, желающий быть RP
  • Отправляет Candidate-RP-Advertisement на BSR
  • BSR включает в RP-Set

Bootstrap Message (BSM):

  • Содержит RP-Set
  • Распространяется через multicast ff02::d
  • Flooding в PIM6 домене

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

Candidate-BSR:

set protocols pim6 rp candidate-bsr address <ipv6-address>
set protocols pim6 rp candidate-bsr priority <priority>

Параметры:

  • address: IPv6 адрес интерфейса
  • priority: 0-255 (по умолчанию 0, выше = лучше)

Пример:

set protocols pim6 rp candidate-bsr address 2001:db8:100::1
set protocols pim6 rp candidate-bsr priority 100

commit
save

Candidate-RP:

set protocols pim6 rp candidate-rp address <ipv6-address>
set protocols pim6 rp candidate-rp priority <priority>
set protocols pim6 rp candidate-rp interval <seconds>

Параметры:

  • address: IPv6 адрес, который будет RP
  • priority: 0-255 (по умолчанию 192, ниже = лучше для RP)
  • interval: 1-16383 (по умолчанию 60) - интервал отправки C-RP Advertisement

Пример:

set protocols pim6 rp candidate-rp address 2001:db8:100::1
set protocols pim6 rp candidate-rp priority 50
set protocols pim6 rp candidate-rp interval 30

commit
save

Candidate-RP для конкретных групп:

set protocols pim6 rp candidate-rp address <ipv6-address> group <prefix>

Пример:

set protocols pim6 rp candidate-rp address 2001:db8:100::1 group ff3e::/32

commit
save

Проверка BSR

Информация о BSR:

show ipv6 pim bsr

Вывод:

PIM6 Bootstrap Information
Current BSR Address: 2001:db8:100::1
Priority: 100
Hash Mask Length: 126
Expires: 00:01:45

Candidate BSR Address: 2001:db8:100::1
  Priority: 100
  Hash Mask Length: 126

RP-Set от BSR:

show ipv6 pim rp-info

Вывод:

RP address       Group          Source          State      Priority  Holdtime
2001:db8:100::1  ff3e::/32      BSR             Active     50        150
2001:db8:100::2  ff05::/16      BSR             Active     100       150

SSM (Source-Specific Multicast) для IPv6

Обзор SSM для IPv6

SSM для IPv6 использует диапазон ff3x::/32.

Формат адреса:

ff3S::/32

Где S - scope:

  • ff3e::/32 - Global SSM
  • ff35::/32 - Site-local SSM
  • ff38::/32 - Organization-local SSM

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

  • Не требует RP
  • Прямые (S,G) деревья
  • Улучшенная безопасность
  • Меньше state на роутерах
  • Предсказуемые пути трафика

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

Автоматическое определение SSM: VyOS автоматически использует SSM для ff3x::/32.

Явная конфигурация SSM диапазона:

set protocols pim6 ssm-range <prefix>

Пример:

set protocols pim6 ssm-range ff3e::/32

commit
save

Проверка SSM:

show ipv6 pim state

Вывод покажет (S,G) entries без (*,G) для SSM групп:

Source           Group            IIF      OIL
2001:db8:100::10 ff3e::1234       eth0     eth1, eth2

MLDv2 для SSM

SSM требует MLDv2 для source filtering.

Включение MLDv2:

set protocols pim6 interface eth1 mld version 2

commit
save

Проверка:

show ipv6 mld interface

Вывод:

Interface  State  Address            Version  Querier         Query Timer  Uptime
eth1       up     fe80::2            2        fe80::2         00:00:58     00:20:34

Расширенная конфигурация

DR Priority

Настройка приоритета Designated Router:

set protocols pim6 interface <interface> dr-priority <priority>

Параметры:

  • priority: 0-4294967295 (по умолчанию 1, выше = лучше)

Применение:

  • Выбор DR на multi-access сети
  • DR регистрирует источники и отправляет Join

Пример:

set protocols pim6 interface eth0 dr-priority 100

commit
save

Проверка DR:

show ipv6 pim interface eth0

Вывод:

Interface  State  Address            PIM Nbrs  PIM DR          DR Priority
eth0       up     2001:db8:12::1/64  1         2001:db8:12::1  100

Hello Interval

Настройка интервала Hello:

set protocols pim6 interface <interface> hello <interval>

Параметры:

  • interval: 1-65535 секунд (по умолчанию 30)

Применение:

  • Частота отправки PIM Hello
  • Влияет на обнаружение соседей

Пример:

set protocols pim6 interface eth0 hello 15

commit
save

Join/Prune Interval

Настройка интервала Join/Prune:

set protocols pim6 join-prune-interval <seconds>

Параметры:

  • seconds: 60-600 (по умолчанию 60)

Применение:

  • Частота отправки Join/Prune сообщений
  • Refresh для существующих (S,G) и (*,G)

Пример:

set protocols pim6 join-prune-interval 90

commit
save

Register Suppression Time

Настройка времени подавления Register:

set protocols pim6 register-suppress-time <seconds>

Параметры:

  • seconds: 5-60000 (по умолчанию 60)

Применение:

  • Время подавления Register после Register-Stop
  • DR источника прекращает инкапсуляцию в Register

Пример:

set protocols pim6 register-suppress-time 120

commit
save

Multicast Routing Table

SPT Switchover (iif): VyOS автоматически переключается на SPT при получении трафика.

Infinity для SPT Threshold: Отключить переключение на SPT (оставаться на shared tree):

set protocols pim6 spt-switchover infinity-and-beyond

Применение:

  • Все трафик идет через RP
  • Упрощенная топология
  • Может увеличить задержку

Пример:

set protocols pim6 spt-switchover infinity-and-beyond

commit
save

Packet Parameters

DSCP для PIM пакетов:

set protocols pim6 packet dscp <value>

Параметры:

  • value: 0-63

Пример:

set protocols pim6 packet dscp 46

commit
save

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

Пример 1: IPv6 Multicast в Yandex Cloud

Сценарий:

  • VyOS роутер в Yandex Cloud как PIM6 RP
  • Видео сервер в подсети 2001:db8💯:/64
  • Три офиса получают IPv6 multicast видео
  • Использование PIM6-SM с статическим RP
  • SSM для критичных потоков

Топология:

[Video Server] --- eth1 --- [VyOS RP] --- eth0 --- [Internet/VPC]
  2001:db8:100::10                |
  ff3e::1234 (SSM)                |--- eth2 --- [Office 1]
  ff05::5678 (SM)                 |               2001:db8:1::/64
                                  |--- eth3 --- [Office 2]
                                  |               2001:db8:2::/64
                                  |--- eth4 --- [Office 3]
                                                  2001:db8:3::/64

VyOS RP конфигурация:

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:10::1/64
set interfaces ethernet eth0 description 'WAN - VPC Interconnect'

set interfaces ethernet eth1 address 2001:db8:100::1/64
set interfaces ethernet eth1 description 'DMZ - Video Servers'

set interfaces ethernet eth2 address 2001:db8:1::1/64
set interfaces ethernet eth2 description 'Office 1'

set interfaces ethernet eth3 address 2001:db8:2::1/64
set interfaces ethernet eth3 description 'Office 2'

set interfaces ethernet eth4 address 2001:db8:3::1/64
set interfaces ethernet eth4 description 'Office 3'

# Loopback для RP
set interfaces loopback lo address 2001:db8:999::1/128

# PIM6 на всех интерфейсах
set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 interface eth2
set protocols pim6 interface eth3
set protocols pim6 interface eth4

# MLD параметры для клиентских интерфейсов
set protocols pim6 interface eth2 mld version 2
set protocols pim6 interface eth2 mld interval 60

set protocols pim6 interface eth3 mld version 2
set protocols pim6 interface eth3 mld interval 60

set protocols pim6 interface eth4 mld version 2
set protocols pim6 interface eth4 mld interval 60

# Отключаем MLD на WAN
set protocols pim6 interface eth0 mld disable

# RP конфигурация
set protocols pim6 rp address 2001:db8:999::1

# SSM диапазон (автоматически для ff3x::/32)
set protocols pim6 ssm-range ff3e::/32

# DR Priority на server сегменте
set protocols pim6 interface eth1 dr-priority 100

# Firewall для IPv6 multicast
set firewall ipv6 input filter rule 100 action accept
set firewall ipv6 input filter rule 100 description 'Allow PIM6'
set firewall ipv6 input filter rule 100 protocol pim

set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 description 'Allow MLD'
set firewall ipv6 input filter rule 110 protocol ipv6-icmp
set firewall ipv6 input filter rule 110 icmpv6 type 130-132

set firewall ipv6 input filter rule 120 action accept
set firewall ipv6 input filter rule 120 description 'Allow multicast traffic'
set firewall ipv6 input filter rule 120 destination address ff00::/8

# IPv6 Routing (OSPFv3 или BGP для unicast)
set protocols ospfv3 area 0 interface eth0
set protocols ospfv3 area 0 interface eth1
set protocols ospfv3 area 0 interface eth2
set protocols ospfv3 area 0 interface eth3
set protocols ospfv3 area 0 interface eth4
set protocols ospfv3 parameters router-id 10.0.0.1

commit
save

Office роутеры (пример для Office 1):

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:1::254/64
set interfaces ethernet eth0 description 'To RP'

set interfaces ethernet eth1 address 2001:db8:10::100/64
set interfaces ethernet eth1 description 'Clients'

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# MLD на клиентском интерфейсе
set protocols pim6 interface eth1 mld version 2
set protocols pim6 interface eth1 mld interval 60

# RP (тот же, что на main роутере)
set protocols pim6 rp address 2001:db8:999::1

# SSM
set protocols pim6 ssm-range ff3e::/32

# OSPFv3 для unicast
set protocols ospfv3 area 0 interface eth0
set protocols ospfv3 area 0 interface eth1
set protocols ospfv3 parameters router-id 10.0.0.2

commit
save

Проверка:

# На RP
show ipv6 pim interface
show ipv6 pim neighbor
show ipv6 pim rp-info
show ipv6 pim state

# На Office роутере
show ipv6 mld groups
show ipv6 pim join

# Мониторинг трафика
tcpdump -i eth1 -n 'ip6 and dst net ff00::/8'

Пример 2: PIM6-SSM для IPv6-only сети (VK Cloud)

Сценарий:

  • IPv6-only сеть в VK Cloud
  • Используется только SSM (ff3e::/32)
  • Нет необходимости в RP
  • Видео конференции между офисами
  • Источники в 2001:db8💯:/64

Топология:

[HQ Router] --- eth0 (2001:db8:10::1/64) --- [VK Cloud VPC]
     |                                              |
     eth1 (2001:db8:100::1/64)                     |
     |                                              |
[Video Server 2001:db8:100::10]            [Branch Router]
                                                    |
                                                    eth1 (2001:db8:200::1/64)
                                                    |
                                                [Users]

HQ Router:

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:10::1/64
set interfaces ethernet eth0 description 'VPC Interconnect'

set interfaces ethernet eth1 address 2001:db8:100::1/64
set interfaces ethernet eth1 description 'Video Servers'

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Отключаем MLD на server интерфейсе
set protocols pim6 interface eth1 mld disable

# SSM only (no RP needed)
set protocols pim6 ssm-range ff3e::/32

# DR Priority
set protocols pim6 interface eth1 dr-priority 100

# Firewall
set firewall ipv6 input filter rule 100 action accept
set firewall ipv6 input filter rule 100 protocol pim

set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 destination address ff3e::/32

# BGP для unicast routing
set protocols bgp system-as 65001
set protocols bgp neighbor 2001:db8:10::254 address-family ipv6-unicast
set protocols bgp neighbor 2001:db8:10::254 remote-as 65000

commit
save

Branch Router:

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:10::100/64
set interfaces ethernet eth0 description 'VPC Interconnect'

set interfaces ethernet eth1 address 2001:db8:200::1/64
set interfaces ethernet eth1 description 'Users'

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# MLDv2 для клиентов (обязательно для SSM)
set protocols pim6 interface eth1 mld version 2
set protocols pim6 interface eth1 mld interval 60

# SSM only
set protocols pim6 ssm-range ff3e::/32

# Firewall
set firewall ipv6 input filter rule 100 action accept
set firewall ipv6 input filter rule 100 protocol pim

set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 destination address ff3e::/32

# BGP
set protocols bgp system-as 65001
set protocols bgp neighbor 2001:db8:10::254 address-family ipv6-unicast
set protocols bgp neighbor 2001:db8:10::254 remote-as 65000

commit
save

Клиент подписка (Linux):

# SSM join: группа ff3e::1234, источник 2001:db8:100::10
smcroute -j eth0 2001:db8:100::10 ff3e::1234

# Или с помощью socat
socat UDP6-RECV:5000,ipv6-join-source-group='[ff3e::1234]:[2001:db8:100::10]:eth0' STDOUT

Проверка:

show ipv6 pim state
show ipv6 mld groups

Пример 3: Embedded RP

Сценарий:

  • Использование Embedded RP для упрощения конфигурации
  • RP адрес: 2001:db8:999::1/64
  • Группы: ff75:0040:2001:0db8:0999:0000::/96

RP Router:

# Интерфейсы
set interfaces loopback lo address 2001:db8:999::1/128

set interfaces ethernet eth0 address 2001:db8:10::1/64
set interfaces ethernet eth1 address 2001:db8:20::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Embedded RP (автоматически для ff7x::/16)
# Никакой дополнительной конфигурации не требуется

commit
save

Client Router:

# Интерфейсы
set interfaces ethernet eth0 address 2001:db8:10::2/64
set interfaces ethernet eth1 address 2001:db8:100::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Embedded RP - автоматически извлекается из адреса группы
# Никакой ручной конфигурации RP не требуется

commit
save

Использование Embedded RP группы: Приложение использует группу вида:

ff75:0040:2001:0db8:0999:0000:0000:1234

Разбор:

  • ff75 - flags=7 (transient), scope=5 (site-local)
  • 0040 - Riid=0, Plen=64
  • 2001:0db8:0999:0000 - RP prefix (2001:db8:999::/64)
  • 0000:1234 - Group ID

Проверка:

show ipv6 pim rp-info

Вывод:

RP address       Group                                  Source          State
2001:db8:999::1  ff75:40:2001:db8:999::/96              Embedded        Active

Пример 4: BSR для динамического RP

Сценарий:

  • Два Candidate-RP для redundancy
  • Один BSR
  • Автоматическое распространение RP информации

BSR и Primary RP (Router1):

# Интерфейсы
set interfaces loopback lo address 2001:db8:100::1/128

set interfaces ethernet eth0 address 2001:db8:10::1/64
set interfaces ethernet eth1 address 2001:db8:20::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# BSR конфигурация
set protocols pim6 rp candidate-bsr address 2001:db8:100::1
set protocols pim6 rp candidate-bsr priority 100

# Candidate-RP конфигурация
set protocols pim6 rp candidate-rp address 2001:db8:100::1
set protocols pim6 rp candidate-rp priority 50
set protocols pim6 rp candidate-rp interval 30

commit
save

Secondary RP (Router2):

# Интерфейсы
set interfaces loopback lo address 2001:db8:100::2/128

set interfaces ethernet eth0 address 2001:db8:10::2/64
set interfaces ethernet eth1 address 2001:db8:30::1/64

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Backup BSR (lower priority)
set protocols pim6 rp candidate-bsr address 2001:db8:100::2
set protocols pim6 rp candidate-bsr priority 50

# Candidate-RP (lower priority)
set protocols pim6 rp candidate-rp address 2001:db8:100::2
set protocols pim6 rp candidate-rp priority 100
set protocols pim6 rp candidate-rp interval 30

commit
save

Client Routers:

# PIM6 на интерфейсах
set protocols pim6 interface eth0
set protocols pim6 interface eth1

# Нет статической конфигурации RP!
# RP информация получается через BSR

commit
save

Проверка:

show ipv6 pim bsr
show ipv6 pim rp-info

Операционные команды

Show Commands

PIM6 интерфейсы:

show ipv6 pim interface

Вывод:

Interface  State  Address            PIM Nbrs  PIM DR          DR Priority
eth0       up     2001:db8:10::1/64  2         2001:db8:10::1  100
eth1       up     2001:db8:20::1/64  0         local           1

Детали интерфейса:

show ipv6 pim interface eth0

Вывод:

Interface eth0:
  State: up
  Address: 2001:db8:10::1/64
  PIM Neighbors: 2
  PIM DR: 2001:db8:10::1
  DR Priority: 100
  Hello Interval: 30s
  Generation ID: 0x12345678

PIM6 соседи:

show ipv6 pim neighbor

Вывод:

Interface  Neighbor          Uptime     Holdtime  DR Priority  Generation ID
eth0       2001:db8:10::2    01:23:45   105       50           0xabcdef12
eth0       2001:db8:10::3    00:45:12   105       1            0x98765432

Детали соседа:

show ipv6 pim neighbor detail

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

show ipv6 pim rp-info

Вывод:

RP address       Group          Source          State      Priority  Holdtime
2001:db8:100::1  ff00::/8       Static          Active     -         -
2001:db8:100::1  ff3e::/32      BSR             Active     50        150
2001:db8:999::1  ff75::/16      Embedded        Active     -         -

PIM6 state (multicast routes):

show ipv6 pim state

Вывод:

Installed Source           Group            IIF      OIL
1         2001:db8:100::10 ff3e::1234       eth0     eth1, eth2
1         *                ff05::5678       eth0     eth1

Детали для группы:

show ipv6 pim state ff3e::1234

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

show ipv6 pim join

Вывод:

Interface  Source           Group            State      Uptime     Expire   Prune
eth1       2001:db8:100::10 ff3e::1234       JOIN       00:15:23   00:00:45 -
eth0       *                ff05::5678       JOIN       00:10:12   00:00:38 -

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

show ipv6 pim bsr

Вывод:

PIM6 Bootstrap Information
Current BSR Address: 2001:db8:100::1
Priority: 100
Hash Mask Length: 126
Expires: 00:01:45

Candidate BSR Address: 2001:db8:100::1
  Priority: 100
  Hash Mask Length: 126

MLD groups:

show ipv6 mld groups

Вывод:

Interface        Address                    Group                   Uptime    Expires
eth1             2001:db8:3::1              ff3e::1234              00:05:23  00:04:12
eth1             2001:db8:3::1              ff05::5678              00:03:45  00:04:18

MLD интерфейсы:

show ipv6 mld interface

Вывод:

Interface  State  Address            Version  Querier         Query Timer  Uptime
eth0       up     fe80::1            2        fe80::1         00:01:15     00:20:34
eth1       up     fe80::2            2        fe80::2         00:00:58     00:20:34

Детали MLD интерфейса:

show ipv6 mld interface eth1

Вывод:

Interface eth1:
  State: up
  Link-local Address: fe80::2
  Version: 2
  Querier: fe80::2 (local)
  Query Interval: 125s
  Query Timer: 00:00:58
  Other Querier Present Timer: 00:00:00
  Startup Query Interval: 31s
  Startup Query Count: 2
  Last Member Query Interval: 1000ms
  Last Member Query Count: 2
  Uptime: 00:20:34

MLD sources:

show ipv6 mld sources

Вывод (для MLDv2 SSM):

Interface  Group           Source           Timer    Flags
eth1       ff3e::1234      2001:db8:100::10 00:04:15 I

IPv6 Multicast Routing Table:

show ipv6 mroute

Вывод:

Source           Group            Proto  Input      Output     Packets  Bytes
2001:db8:100::10 ff3e::1234       PIM6   eth0       eth1       15234    45678901
                                                     eth2       12456    37890123
*                ff05::5678       PIM6   eth0       eth1       5678     12345678

Management Commands

Restart PIM6:

restart pim6

Clear PIM6 interfaces:

clear ipv6 pim interfaces

Clear PIM6 oil (Outgoing Interface List):

clear ipv6 pim oil

Troubleshooting

Соседи не устанавливаются

Проблема: PIM6 соседи не видны.

Проверка:

  1. PIM6 включен на интерфейсах:

    show ipv6 pim interface
  2. IPv6 connectivity:

    ping6 2001:db8:10::2
  3. PIM Hello на wire:

    tcpdump -i eth0 -vv ip6 proto 103

    Должны видеть PIM Hello на ff02::d.

  4. Firewall блокирует PIM:

    set firewall ipv6 input filter rule 100 action accept
    set firewall ipv6 input filter rule 100 protocol pim
    commit
  5. Разные Hello intervals: Убедитесь что Hello interval совпадает на обоих концах.

  6. MTU проблемы:

    show interfaces ethernet eth0

    Проверьте что MTU достаточный для IPv6 PIM пакетов.

RP не резолвится

Проблема: RP информация отсутствует.

Проверка:

  1. Статический RP настроен:

    show ipv6 pim rp-info

    Должен показывать RP адрес.

  2. RP одинаковый на всех роутерах: Проверьте конфигурацию на всех PIM6 роутерах:

    show protocols pim6 rp
  3. BSR работает:

    show ipv6 pim bsr

    Должен показывать текущий BSR.

  4. C-RP Advertisement доходит до BSR:

    tcpdump -i eth0 -vv 'ip6 proto 103 and dst ff02::d'
  5. Embedded RP формат правильный: Проверьте что группа в формате ff7x::/16 и содержит валидный RP prefix.

Трафик не доходит до получателей

Проблема: Клиенты подписаны, но multicast трафик не получают.

Проверка:

  1. MLD группы активны:

    show ipv6 mld groups
  2. PIM Join отправлен:

    show ipv6 pim join

    Должны видеть (*,G) или (S,G) Join.

  3. Multicast routing table:

    show ipv6 mroute

    Должна быть запись для группы.

  4. PIM state:

    show ipv6 pim state

    Проверьте IIF и OIL.

  5. Трафик на входном интерфейсе:

    tcpdump -i eth0 -n 'ip6 and dst ff3e::1234'
  6. RPF check проходит:

    show ipv6 route 2001:db8:100::10

    Unicast route к источнику должен указывать на IIF для multicast.

  7. Firewall разрешает multicast:

    set firewall ipv6 input filter rule 120 action accept
    set firewall ipv6 input filter rule 120 destination address ff00::/8
    commit

SSM не работает

Проблема: SSM группы не получают трафик.

Проверка:

  1. Группа в SSM диапазоне: Должна быть ff3x::/32 (например ff3e::1234).

  2. MLDv2 включен:

    show ipv6 mld interface

    Version должна быть 2.

    Если нет:

    set protocols pim6 interface eth1 mld version 2
    commit
  3. Клиент использует source-specific join: На Linux:

    smcroute -j eth0 2001:db8:100::10 ff3e::1234
  4. (S,G) state существует:

    show ipv6 pim state ff3e::1234

    Должна быть (S,G) запись, не (*,G).

  5. RP не настроен для SSM: SSM не требует RP. Если есть RP конфигурация для ff3x::/32, удалите:

    delete protocols pim6 rp address <ipv6> group ff3e::/32
    commit

Register пакеты не доходят до RP

Проблема: Источник активен, но RP не получает Register.

Проверка:

  1. DR определен правильно:

    show ipv6 pim interface eth1

    PIM DR должен быть роутер, подключенный к источнику.

  2. RP адрес правильный:

    show ipv6 pim rp-info
  3. Unicast route к RP:

    show ipv6 route 2001:db8:100::1

    Должен быть маршрут к RP.

  4. Register на wire:

    tcpdump -i eth0 -vv 'ip6 proto 103 and dst 2001:db8:100::1'

    Должны видеть Register пакеты.

  5. Firewall на RP:

    set firewall ipv6 input filter rule 100 action accept
    set firewall ipv6 input filter rule 100 protocol pim
    set firewall ipv6 input filter rule 100 source address 2001:db8::/16
    commit

High CPU от PIM6

Проблема: Высокая загрузка CPU на роутере.

Причины и решения:

  1. Слишком много (S,G) entries:

    show ipv6 pim state | wc -l

    Рассмотрите переход на SSM или увеличение ресурсов.

  2. Частые Join/Prune: Увеличьте Join/Prune interval:

    set protocols pim6 join-prune-interval 120
    commit
  3. Слишком частые Hello: Увеличьте Hello interval:

    set protocols pim6 interface eth0 hello 60
    commit
  4. Много MLD Query: Увеличьте MLD interval:

    set protocols pim6 interface eth1 mld interval 125
    commit
  5. Multicast трафик обрабатывается CPU: Проверьте hardware offloading:

    ethtool -k eth0 | grep offload

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

Continuous Monitoring

Мониторинг PIM6 neighbors:

watch -n 5 'show ipv6 pim neighbor'

Мониторинг multicast routes:

watch -n 10 'show ipv6 mroute'

Мониторинг MLD groups:

watch -n 5 'show ipv6 mld groups'

Packet capture для PIM6:

tcpdump -i eth0 -vv ip6 proto 103

Packet capture для MLD:

tcpdump -i eth1 -vv 'icmp6 and (ip6[40] == 130 or ip6[40] == 131 or ip6[40] == 132 or ip6[40] == 143)'

Packet capture для multicast трафика:

tcpdump -i eth1 -n 'ip6 and dst net ff00::/8'

Конкретная группа:

tcpdump -i eth1 -n 'ip6 and dst ff3e::1234'

Логирование

Системные логи:

show log tail 100 | match pim6

Syslog для протоколов:

set system syslog global facility protocols level info
commit

External syslog:

set system syslog host 2001:db8:100::100 facility protocols level info
set system syslog host 2001:db8:100::100 port 514
commit

Debug logging (для troubleshooting):

set system syslog global facility protocols level debug
commit

Осторожно: Debug может генерировать много логов.

После troubleshooting вернуть:

set system syslog global facility protocols level info
commit

Лучшие практики

Дизайн сети

  1. RP размещение:

    • RP в центре сети для минимизации задержки
    • Используйте loopback для RP адреса (стабильность)
    • Рассмотрите redundancy с BSR + несколько C-RP
  2. SSM vs SM:

    • Используйте SSM (ff3x::/32) где возможно
    • SM только для Any-Source Multicast
    • SSM не требует RP и более эффективен
  3. Embedded RP vs Static RP:

    • Embedded RP для упрощения конфигурации
    • Static RP для полного контроля
    • BSR для динамического RP в крупных сетях
  4. Scope selection:

    • ff02::/16 - Link-local (только один hop)
    • ff05::/16 - Site-local (в пределах site)
    • ff08::/16 - Organization-local (вся организация)
    • ff0e::/16 - Global (весь Internet)

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

  1. DR Priority:

    • Устанавливайте высокий DR priority на роутере ближайшем к источнику
    • Контролирует кто отправляет Register на RP
  2. Hello Interval:

    • По умолчанию 30 секунд подходит для большинства сетей
    • Уменьшайте для быстрой сходимости (нагрузка на CPU)
    • Увеличивайте для стабильных сетей с медленными links
  3. MLD Version:

    • Используйте MLDv2 для SSM support
    • MLDv1 только для legacy devices
  4. PIM6 на всех интерфейсах:

    • Включайте PIM6 на всех интерфейсах, участвующих в multicast
    • Отключайте MLD на transit/upstream интерфейсах

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

  1. Firewall для PIM6:

    set firewall ipv6 input filter rule 100 action accept
    set firewall ipv6 input filter rule 100 protocol pim
    set firewall ipv6 input filter rule 100 source address 2001:db8::/16
  2. Ограничение multicast групп:

    set firewall ipv6 input filter rule 120 action accept
    set firewall ipv6 input filter rule 120 destination address ff3e::/32
    set firewall ipv6 input filter rule 120 description 'Allow only company SSM'
  3. Rate limiting для MLD:

    set firewall ipv6 input filter rule 110 action accept
    set firewall ipv6 input filter rule 110 protocol ipv6-icmp
    set firewall ipv6 input filter rule 110 icmpv6 type 130-132
    set firewall ipv6 input filter rule 110 limit rate 10/second
  4. Drop неизвестный multicast:

    set firewall ipv6 input filter rule 999 action drop
    set firewall ipv6 input filter rule 999 destination address ff00::/8
    set firewall ipv6 input filter rule 999 description 'Drop unknown multicast'

Производительность

  1. SPT Switchover:

    • По умолчанию VyOS переключается на SPT сразу
    • Для load на RP можно оставить на shared tree:
    set protocols pim6 spt-switchover infinity-and-beyond
  2. Register Suppression:

    • Увеличьте для снижения нагрузки на DR:
    set protocols pim6 register-suppress-time 120
  3. Hardware Offloading:

    • Включайте где доступно для multicast forwarding
    • Проверка:
    ethtool -k eth0 | grep offload
  4. Мониторинг ресурсов:

    show system resources
    show ipv6 pim state | wc -l

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

PIM6 + OSPFv3

Сценарий: OSPFv3 для unicast, PIM6 для multicast.

# OSPFv3
set protocols ospfv3 area 0 interface eth0
set protocols ospfv3 area 0 interface eth1
set protocols ospfv3 parameters router-id 10.0.0.1

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 rp address 2001:db8:100::1

commit

Важно: PIM6 использует OSPFv3 unicast routes для RPF check.

PIM6 + BGP

Сценарий: BGP для IPv6 unicast, PIM6 для multicast.

# BGP
set protocols bgp system-as 65001
set protocols bgp neighbor 2001:db8:10::254 address-family ipv6-unicast
set protocols bgp neighbor 2001:db8:10::254 remote-as 65000

# PIM6
set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 rp address 2001:db8:100::1

commit

Важно: BGP routes используются для RPF check в PIM6.

PIM6 + VPN (IPsec/WireGuard)

Сценарий: Multicast через VPN туннель.

IPsec с VTI:

# VTI интерфейс
set interfaces vti vti0 address 2001:db8:999::1/64

# PIM6 на VTI
set protocols pim6 interface vti0

# RP
set protocols pim6 rp address 2001:db8:100::1

commit

WireGuard:

# WireGuard интерфейс
set interfaces wireguard wg0 address 2001:db8:888::1/64

# PIM6 на WireGuard
set protocols pim6 interface wg0

commit

Важно: Multicast через VPN может иметь performance impact.

PIM6 + IPv4 (Dual Stack)

Сценарий: Одновременно PIM для IPv4 и PIM6 для IPv6.

# PIM для IPv4
set protocols pim interface eth0
set protocols pim interface eth1
set protocols pim rp address 10.0.0.1

# PIM6 для IPv6
set protocols pim6 interface eth0
set protocols pim6 interface eth1
set protocols pim6 rp address 2001:db8:100::1

commit

Применение:

  • Dual-stack multicast
  • Миграция с IPv4 на IPv6
  • Legacy applications (IPv4) + новые (IPv6)

Сравнение PIM6 с другими решениями

PIM6 vs IGMP Proxy для IPv6

ХарактеристикаPIM6IGMP/MLD Proxy
СложностьВысокаяНизкая
ТопологияЛюбаяПростая (дерево)
МасштабируемостьВысокаяОграниченная
RP требуетсяДа (SM)Нет
RedundancyПолнаяОграниченная
ПрименениеCore/Data centerEdge/Branch

Когда использовать PIM6:

  • Сложная топология
  • Множество источников
  • Data center multicast
  • Требуется redundancy

Когда использовать MLD Proxy:

  • Простая топология (один источник)
  • Branch office
  • IPTV от провайдера
  • Ограниченные ресурсы

PIM6-SM vs PIM6-SSM

ХарактеристикаPIM6-SMPIM6-SSM
RP требуетсяДаНет
Группыff00::/8 (кроме ff3x::/32)ff3x::/32
(*,G) treeДаНет
(S,G) treeДаДа
СложностьВысокаяНизкая
БезопасностьСредняяВысокая
MLD VersionMLDv1/v2MLDv2

Когда использовать PIM6-SM:

  • Any-Source Multicast
  • Множество динамических источников
  • Legacy applications

Когда использовать PIM6-SSM:

  • Известные источники
  • Видео distribution
  • IPTV, streaming
  • Улучшенная безопасность

Автоматизация и скрипты

Мониторинг скрипт

Bash скрипт для проверки PIM6 neighbors:

#!/bin/bash

# pim6-monitor.sh
# Мониторинг PIM6 соседей

LOG_FILE="/var/log/pim6-monitor.log"
EXPECTED_NEIGHBORS=2

check_neighbors() {
    local neighbor_count=$(vtysh -c "show ipv6 pim neighbor" | grep -c "eth0")

    if [ "$neighbor_count" -lt "$EXPECTED_NEIGHBORS" ]; then
        echo "$(date): WARNING - Only $neighbor_count neighbors, expected $EXPECTED_NEIGHBORS" >> "$LOG_FILE"
        return 1
    else
        echo "$(date): OK - $neighbor_count neighbors present" >> "$LOG_FILE"
        return 0
    fi
}

check_neighbors

vtysh -c "show ipv6 pim neighbor"
vtysh -c "show ipv6 pim interface"

Установка в cron:

*/5 * * * * /usr/local/bin/pim6-monitor.sh

RP failover скрипт

Скрипт для проверки RP доступности:

#!/bin/bash

# rp-watchdog.sh
# Проверка RP и переключение на backup

PRIMARY_RP="2001:db8:100::1"
BACKUP_RP="2001:db8:100::2"
LOG_FILE="/var/log/rp-watchdog.log"

check_rp() {
    if ping6 -c 3 -W 2 "$PRIMARY_RP" > /dev/null 2>&1; then
        return 0
    else
        return 1
    fi
}

if ! check_rp; then
    echo "$(date): Primary RP $PRIMARY_RP unreachable, switching to backup" >> "$LOG_FILE"

    vtysh << EOF
configure terminal
protocols pim6 rp address $BACKUP_RP
commit
save
exit
EOF

    echo "$(date): Switched to backup RP $BACKUP_RP" >> "$LOG_FILE"
else
    echo "$(date): Primary RP $PRIMARY_RP is reachable" >> "$LOG_FILE"
fi

Ссылки и ресурсы

RFC Documents

  • RFC 4601 - Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification
  • RFC 7761 - Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (обновление)
  • RFC 3810 - Multicast Listener Discovery Version 2 (MLDv2) for IPv6
  • RFC 2710 - Multicast Listener Discovery (MLD) for IPv6
  • RFC 3956 - Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
  • RFC 4607 - Source-Specific Multicast for IP
  • RFC 5059 - Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)
  • RFC 4291 - IP Version 6 Addressing Architecture

VyOS Documentation

Полезные инструменты

  • FRRouting (FRR) - Routing suite используемый VyOS для PIM6
  • smcroute - Static multicast routing tool
  • iperf3 - Network performance testing (multicast режим)
  • tcpdump - Packet capture
  • Wireshark - Packet analyzer
  • VLC - Media player с multicast поддержкой

Community

Следующие шаги

После настройки PIM6 рекомендуется изучить:

  • PIM (IPv4) - для IPv4 multicast
  • IGMP Proxy - для простых IPv4 multicast сценариев
  • OSPFv3 - для IPv6 unicast routing
  • BGP - для IPv6 BGP routing
  • Firewall - для защиты multicast сетей
  • QoS - для приоритизации multicast трафика

Заключение

PIM6 обеспечивает эффективную multicast маршрутизацию в IPv6 сетях. Правильная конфигурация RP, использование SSM для известных источников и интеграция с MLD обеспечивают стабильную работу современных multicast приложений в Yandex Cloud и VK Cloud.

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

  • PIM6 работает с MLD вместо IGMP
  • RP требуется для PIM6-SM, но не для SSM
  • SSM (ff3x::/32) рекомендуется для большинства сценариев
  • Embedded RP упрощает конфигурацию
  • BSR обеспечивает динамическое распространение RP
  • Firewall и security критичны для production
  • Мониторинг neighbors, RP и multicast routes обязателен