Глава 5. PIM-SSM

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску

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