Глава 5. PIM-SSM: различия между версиями
Строка 133: | Строка 133: | ||
show pim statictics | show pim statictics | ||
show multicast usage | show multicast usage | ||
show multicast route extensive | show multicast route extensive || можно посмотреть и трафик, относящийся к группе | ||
show route table inet.1 | show route table inet.1 || таблица форвардинга - показана пара G+S | ||
show route table inet.0 | net.2 || проверяем, что source-address есть в этой таблице и доступен | |||
show multicast next-hops | show multicast next-hops | ||
show pim join extensive || помимо прочего, полезно: "Upstream state: Join to Source, Prune to RP" | show pim join extensive || помимо прочего, полезно: "Upstream state: Join to Source, Prune to RP" | ||
Строка 145: | Строка 146: | ||
traceoptions || для диагностики не забываем включать | traceoptions || для диагностики не забываем включать | ||
До того, как проверять PIM, проверяем unicast связность от роутера до источника мультикаста (по таблицам маршрутизации) | |||
show pim neighbors | show pim neighbors | ||
Instance: PIM.master | Instance: PIM.master | ||
Строка 179: | Строка 182: | ||
PIM Join и PIM Prune можно посмотреть в '''pim statistics''' (как принятые так и отправленные). | PIM Join и PIM Prune можно посмотреть в '''pim statistics''' (как принятые так и отправленные). | ||
> show multicast route group 235.69.101.1 extensive | |||
Instance: master Family: INET | |||
Group: 235.69.101.1 | |||
Source: 192.168.151.11/32 | |||
Upstream interface: xe-1/2/0.822 | |||
Downstream interface list: | |||
xe-1/2/0.900 | |||
Number of outgoing interfaces: 1 | |||
Session description: Unknown | |||
'''Statistics: 447 kBps, 332 pps, 7110535 packets''' | |||
Next-hop ID: 1048579 | |||
Upstream protocol: PIM | |||
Route state: Active | |||
'''Forwarding state: Forwarding''' | |||
Cache lifetime/timeout: 360 seconds | |||
Wrong incoming interface notifications: 28 | |||
Uptime: 06:01:21 | |||
> show pim statistics interface xe-1/2/0.822 | > show pim statistics interface xe-1/2/0.822 | ||
Строка 190: | Строка 211: | ||
В monitor traffic interface не будут отображаться PIM Join, PIM Prune. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик. | В monitor traffic interface не будут отображаться PIM Join, PIM Prune. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик. | ||
nbobkova@tver-r1-ch28-RE0> show route table inet.1 | |||
235.69.101.1,192.168.151.11/32*[PIM/105] 05:57:24 | |||
Multicast (IPv4) Composite | |||
235.69.101.20,192.168.151.12/32*[PIM/105] 05:57:24 | |||
Multicast (IPv4) Composite |
Версия 19:42, 5 октября 2017
ASM
- Нахождение источника - задача сети.
- PIM-DM: флуд от источника всем получателям. Из-за этого хранится много (S,G) => проблемы с масштабируемостью.
- PIM-SM: регистрация источника на RP. Более сложный механизм.
- Междоменный мультикаст: MSDP.
- Поддерживает несколько типов приложений:
- One-to-many
- Many-to-many
- Распределение адресного пространства - адреса групп должны быть уникальными в глобальной сети.
- Выделены блоки SDP/SAP, GLOP, Admin scoped.
SSM
- Нахождение источника - задача приложения у получателя.
- Получатель уже знает о необходимом источнике.
- Получатель подписывает на определенный канал - (S,G).
- Приложение должно поддерживать IGMPv3.
- Для междоменного мультикаста больше не нужно использование MSDP и RP.
- Использует часть PIM-SM функционала:
- Всегда используется (S,G) source-based tree.
- В основном использует 1 тип приложений: One-to-many
- Распределние адресного пространства:
- Выделен блок: 232/8.
- Один и тот же адрес группы может использоваться разными источниками на просторах всего интернета. Из-за этого усложнены DoS атаки.
Как работает
- Получатель знает все источники и группы, к которым он может подписаться (может быть заранее полученный список каналов на приставке).
- От получателя subscribe (S,G), используя IGMPv3 (include mode).
- DR на сегменте получателя шлет join (S,G) в сторону источника и начинает строить source-based tree.
- DR на сегменте источника как только получил join (S,G) - начинает слать трафик по shortest path tree (spt) к получателю.
Разница в терминологии
- Address identifier: (G) vs (S,G)
- Address destination: group vs channel
- Receiver protocol: IGMPv1,2,3 vs IGMPv3
- Receiver Operations: Join,Leave vs Subscribe/Unsubscribe
- Address range: 224/4, exclude 232/8 vs 232/8
Адресное пространство
SSM не работает с shared-tree. SSM не обрабатывает сообщения вида: (*,G).
Junos позволяет определить другое поведение для адресных блоков:
- Добавлять адресное пространство для использования только SSM.
set routing-options multicast ssm-groups 227.0.0.0/24
- Позволяет ASM использовать SSM блок.
set routing-options multicast asm-override-ssm
IGMPv3 + SSM
ASM использует 1,2,3 версии протокола. Group joins не определяют конкретный источник. 3 версия предусматривает работу именно с (S,G), что не очень то подходит по ASM, поэтому для ASM IGMPv3 работает только в режиме exclude.
SSM использует только 3 версию. При подписке должны быть определены источник и группа. Этот функционал может обеспечить IGMPv3 include mode.
В IGMPv3 включены 2 новых опции:
- include (этот режим обеспечивает определение источника для группы => используется только SSM)
- exclude (этот режим позволяет исключать определенный источник из join сообщения => поддерживается ASM)
IGMPv3 работа получателя
- получатель отправляет membership report на DA = 224.0.0.22
membership report включает в себя 3 основных типа:
- current-state record: MODE_IS_INCLUDE, MODE_IS_EXCLUDE;
- filter-mode-change (когда происходит смена режима): CHANGE_TO_INCLUDE_MODE, CHANGE_TO_EXCLUDE_MODE;
- source-list-change (когда происходит подписка/отписка): ALLOW_NEW_SOURCES, BLOCK_OLD_SOURCES;
Для SSM модели используется только 3 операции:
- подписка: ALLOW_NEW_SOURCES
- поддержание подписки: MODE_IS_INCLUDE
- отписка: BLOCK_OLD_SOURCES
Типы Query
- general query ->224.0.0.1
- group-specific query
- group-source-specific-query (include source address).
PIM-SM + SSM
SSM это упрощенная форма PIM-SM. Используется только часть функционала от PIM-SM.
Блок 232/8 работает только с обменом сообщений для source-based tree. Никаких сообщений для shared-tree.
- Сегмент получателя (receiver DR):
- игнорируются любый (*,G) сообщения
- не должен отправлять (*,G) upstream роутерам
- Сегмент источника (source DR):
- не должен отправлять register сообщения к RP, когда получен трафик от источника.
- RP роутер:
- игнорирует register сообщения от source DR.
- игнорирует SA сообщения от MSDP пиров.
- Другие роутеры:
- игнорируют все (*,G) сообщения от downstream роутеров.
Вообще, PIM-SM позволяет использовать как ASM, так и SSM. В зависимости от получаемых сообщений и сконфигурированных SSM блоков, DR роутер устанавливает либо shared tree к RP, либо source-based tree к источнику.
Config
На интерфейсах к сторону получателей - IGMPv3. При этом на такие интерфейсы буду приходить и запросы от IGMPv1, v2, которые будет использовать для своей работы ASM.
- На сети нужен ASM + SSM: в этом случае конфиг должен быть как для стандартной PIM-SM модели с определенным RP discovery механизмом.
- На сети нужен только SSM: в этом случае нужно просто сконфигурировать все интерфейсы в sparse mode.
Для использования адресного пространства совместно:
set routing-options multicast ssm-groups 227.0.0.0/24 set routing-options multicast asm-override-ssm
SSM-mapping
Если получатели не поддерживают IGMPv3, SSM maps могут переделать join из (*,G) в (S,G):
1.
set policy-options policy-statement ssm-mapping-policy term 1 from route-filter 232.7.7.7/32 exact set policy-options policy-statement ssm-mapping-policy term 1 then accept
2.
set routing-options multicast ssm-map ssm-mapping-example policy ssm-mapping-policy set routing-options multicast ssm-map ssm-mapping-example source 192.168.100.10
3.
set protocols igmp interface ge-0/0/0.0 ssm-map ssm-mapping-example
result: (*, 232.7.7.7) -> (192.168.100.10, 232.7.7.7)
Для IPv6 делается все точно по такому же алгоритму, только в конце ssm-map применяется в рамках протокола mld.
Для troubleshoting используются все те же команды.
Troubleshooting
show pim interfaces show pim neighbors extensive || можно посмотреть RX Join groups!! show pim statictics show multicast usage show multicast route extensive || можно посмотреть и трафик, относящийся к группе show route table inet.1 || таблица форвардинга - показана пара G+S show route table inet.0 | net.2 || проверяем, что source-address есть в этой таблице и доступен show multicast next-hops show pim join extensive || помимо прочего, полезно: "Upstream state: Join to Source, Prune to RP" pim traceoptions show pim source detail show multicast rpf x.x.x.x show pim rps || какие rp известны, через какой механизм, какой набор групп приходит show pim rps extensive || помимо того, что выше - видны конкретные группы, статус, time active и много всяких подробностей show pim bootsrap || активный BSR роутер traceoptions || для диагностики не забываем включать
До того, как проверять PIM, проверяем unicast связность от роутера до источника мультикаста (по таблицам маршрутизации)
show pim neighbors Instance: PIM.master Interface IP V Mode Option Uptime Neighbor addr xe-1/1/0.910 4 2 HPLGT 13w2d5h 212.1.253.189 xe-1/2/0.822 4 2 HPLG 03:08:00 192.168.152.49
B = Bidirectional Capable = bidirectional mode supported G = Generation Identifier = gracefull restart turned on for pim H = Hello Option Holdtime, L = Hello Option LAN Prune Delay, P = Hello Option DR Priority, T = Tracking Bit = Join Suppression supported, если нет T - то у соседа настроен: reset-tracking-bit
show him neighbors detail Interface: xe-1/2/0.822 Address: 192.168.152.49, IPv4, PIM v2, sg Join Count: 2, tsg Join Count: 0 BFD: Disabled Hello Option Holdtime: 105 seconds 102 remaining Hello Option DR Priority: 1 Hello Option Generation ID: 1593016797 Hello Option LAN Prune Delay: delay 1000 ms override 3000 ms Address: 192.168.152.50, IPv4, PIM v2, Mode: Sparse, sg Join Count: 0, tsg Join Count: 0 Hello Option Holdtime: 65535 seconds Hello Option DR Priority: 1 Hello Option Generation ID: 1898464853 Hello Option LAN Prune Delay: delay 500 ms override 2000 ms Join Suppression supported
pim { traceoptions { file pim.log size 10m; flag all;
PIM Join и PIM Prune можно посмотреть в pim statistics (как принятые так и отправленные).
> show multicast route group 235.69.101.1 extensive Instance: master Family: INET Group: 235.69.101.1 Source: 192.168.151.11/32 Upstream interface: xe-1/2/0.822 Downstream interface list: xe-1/2/0.900 Number of outgoing interfaces: 1 Session description: Unknown Statistics: 447 kBps, 332 pps, 7110535 packets Next-hop ID: 1048579 Upstream protocol: PIM Route state: Active Forwarding state: Forwarding Cache lifetime/timeout: 360 seconds Wrong incoming interface notifications: 28 Uptime: 06:01:21
> show pim statistics interface xe-1/2/0.822 Instance: PIM.master Family: INET PIM Interface statistics for xe-1/2/0.822 PIM Message type Received Sent Rx errors V2 Hello 389 413 0 V2 Register 0 0 0 V2 Register Stop 0 0 0 V2 Join Prune 0 195 0
В monitor traffic interface не будут отображаться PIM Join, PIM Prune. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик.
nbobkova@tver-r1-ch28-RE0> show route table inet.1 235.69.101.1,192.168.151.11/32*[PIM/105] 05:57:24 Multicast (IPv4) Composite 235.69.101.20,192.168.151.12/32*[PIM/105] 05:57:24 Multicast (IPv4) Composite