Глава 5. PIM-SSM: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
Строка 132: Строка 132:
  show pim neighbors extensive      || можно посмотреть RX Join groups!!
  show pim neighbors extensive      || можно посмотреть RX Join groups!!
  show pim statictics
  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"  
  show pim join extensive          || помимо прочего, полезно: "Upstream state: Join to Source, Prune to RP"  
pim traceoptions
  show pim source detail
  show pim source detail
show multicast rpf x.x.x.x
  show pim rps                      || какие rp известны, через какой механизм, какой набор групп приходит
  show pim rps                      || какие rp известны, через какой механизм, какой набор групп приходит
  show pim rps extensive            || помимо того, что выше - видны конкретные группы, статус, time active и много всяких подробностей
  show pim rps extensive            || помимо того, что выше - видны конкретные группы, статус, time active и много всяких подробностей
  show pim bootsrap                || активный BSR роутер
  show pim bootsrap                || активный BSR роутер
show multicast rpf x.x.x.x
show multicast next-hops
show multicast usage
show multicast route extensive      || можно посмотреть и трафик, относящийся к группе
show route table inet.1          || таблица форвардинга - показана пара G+S
show route table inet.0 | net.2    || проверяем, что source-address есть в этой таблице и доступен
  traceoptions            || для диагностики не забываем включать
  traceoptions            || для диагностики не забываем включать
   
   
До того, как проверять PIM, проверяем unicast связность от роутера до источника мультикаста (по таблицам маршрутизации)
До того, как проверять PIM, проверяем unicast связность от роутера до источника мультикаста (по таблицам маршрутизации)
  show pim neighbors  
  show pim neighbors  
  Instance: PIM.master
  Instance: PIM.master
Строка 161: Строка 159:
  T = Tracking Bit      = Join Suppression supported, если нет T - то у соседа настроен: ''reset-tracking-bit''
  T = Tracking Bit      = Join Suppression supported, если нет T - то у соседа настроен: ''reset-tracking-bit''


  show him neighbors detail
  show pim neighbors detail
  Interface: xe-1/2/0.822
  Interface: xe-1/2/0.822
     Address: 192.168.152.49, IPv4, PIM v2, ''sg Join Count: 2'', tsg Join Count: 0
     Address: 192.168.152.49, IPv4, PIM v2, ''sg Join Count: 2'', tsg Join Count: 0
Строка 175: Строка 173:
         Hello Option LAN Prune Delay: delay 500 ms override 2000 ms
         Hello Option LAN Prune Delay: delay 500 ms override 2000 ms
                                       Join Suppression supported
                                       Join Suppression supported
pim {
    traceoptions {
        file pim.log size 10m;
        flag all;
PIM Join и PIM Prune можно посмотреть в '''pim statistics''' (как принятые так и отправленные).
PIM Join и PIM Prune можно посмотреть в '''pim statistics''' (как принятые так и отправленные).


Строка 211: Строка 203:


В monitor traffic interface не будут отображаться PIM Join, PIM Prune. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик.
В monitor traffic interface не будут отображаться PIM Join, PIM Prune. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик.
 
  > show route table inet.1  
 
  nbobkova@tver-r1-ch28-RE0> show route table inet.1  
  235.69.101.1,192.168.151.11/32*[PIM/105] 05:57:24
  235.69.101.1,192.168.151.11/32*[PIM/105] 05:57:24
                       Multicast (IPv4) Composite
                       Multicast (IPv4) Composite
  235.69.101.20,192.168.151.12/32*[PIM/105] 05:57:24
  235.69.101.20,192.168.151.12/32*[PIM/105] 05:57:24
                       Multicast (IPv4) Composite
                       Multicast (IPv4) Composite

Версия 12:21, 15 июля 2020

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 pim join extensive           || помимо прочего, полезно: "Upstream state: Join to Source, Prune to RP" 
show pim source detail
show pim rps                      || какие rp известны, через какой механизм, какой набор групп приходит
show pim rps extensive            || помимо того, что выше - видны конкретные группы, статус, time active и много всяких подробностей
show pim bootsrap                 || активный BSR роутер
show multicast rpf x.x.x.x
show multicast next-hops
show multicast usage
show multicast route extensive      || можно посмотреть и трафик, относящийся к группе 
show route table inet.1          || таблица форвардинга - показана пара G+S
show route table inet.0 | net.2     || проверяем, что source-address есть в этой таблице и доступен
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 pim 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 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. Если требуется помониторить входящие и исходящие пакеты, то можно только замиррорить трафик.

> 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