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

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{#description2:PIM ASM. Как работает PIM SSM. Адресное пространство PIM SSM. Использование IGMPv3 и SSM. PIM-SM + SSM. Конфигурация PIM SSM. Траблшутинг. Информация для подготовки к экзаменам Juniper Networks}}
==ASM==
==ASM==


- Нахождение источника - задача сети.
*Нахождение источника - задача сети.
:*PIM-DM: флуд от источника всем получателям. Из-за этого хранится много (S,G) => проблемы с масштабируемостью.
:*PIM-DM: флуд от источника всем получателям. Из-за этого хранится много (S,G) => проблемы с масштабируемостью.
:*PIM-SM: регистрация источника на RP. Более сложный механизм.
:*PIM-SM: регистрация источника на RP. Более сложный механизм.
:*Междоменный мультикаст: MSDP.
:*Междоменный мультикаст: MSDP.


- Поддерживает несколько типов приложений:
*Поддерживает несколько типов приложений:
:*One-to-many
:*One-to-many
:*Many-to-many
:*Many-to-many


- Распределение адресного пространства - адреса групп должны быть уникальными в глобальной сети.
*Распределение адресного пространства - адреса групп должны быть уникальными в глобальной сети.
:* Выделены блоки SDP/SAP, GLOP, Admin scoped.
:* Выделены блоки SDP/SAP, GLOP, Admin scoped.


Строка 17: Строка 19:
*Нахождение источника - задача приложения у получателя.
*Нахождение источника - задача приложения у получателя.
:*Получатель уже знает о необходимом источнике.
:*Получатель уже знает о необходимом источнике.
:*Получатель подписывает на определенный канал - (S,G). Требуется IGMPv3. При этом для междоменного мультикаста больше не нужно использование MSDP. И RP, кажется, тоже.
:*Получатель подписывает на определенный канал - (S,G).  
:*Приложение должно поддерживать IGMPv3.
*Для междоменного мультикаста больше не нужно использование MSDP и RP.
*Использует часть PIM-SM функционала:
*Использует часть PIM-SM функционала:
:*Всегда используется (S,G) source-based tree.
:*Всегда используется (S,G) source-based tree.
Строка 24: Строка 28:
:*Выделен блок: 232/8.
:*Выделен блок: 232/8.
:*Один и тот же адрес группы может использоваться разными источниками на просторах всего интернета. Из-за этого усложнены DoS атаки.
:*Один и тот же адрес группы может использоваться разными источниками на просторах всего интернета. Из-за этого усложнены DoS атаки.
==Как работает==
*Получатель знает все источники и группы, к которым он может подписаться (может быть заранее полученный список каналов на приставке).
*От получателя subscribe (S,G), используя IGMPv3 (include mode).
*DR на сегменте получателя шлет join (S,G) в сторону источника и начинает строить source-based tree.
*DR на сегменте источника как только получил join (S,G) - начинает слать трафик по shortest path tree (spt) к получателю.


==Разница в терминологии==
==Разница в терминологии==
Строка 36: Строка 46:
SSM не работает с shared-tree. SSM не обрабатывает сообщения вида: (*,G).
SSM не работает с shared-tree. SSM не обрабатывает сообщения вида: (*,G).


Junos позволяет назначать другое поведение для адресных блоков:
Junos позволяет определить другое поведение для адресных блоков:
 
*Добавлять адресное пространство для использования только SSM.
- Добавлять адресное пространство для использования только SSM.
  set routing-options multicast ssm-groups 227.0.0.0/24
  set routing-options multicast ssm-groups 227.0.0.0/24
 
*Позволяет ASM использовать SSM блок.
- Позволяет ASM использовать SSM блок.
  set routing-options multicast asm-override-ssm
  set routing-options multicast asm-override-ssm


Строка 52: Строка 60:
В IGMPv3 включены 2 новых опции:
В IGMPv3 включены 2 новых опции:
*include (этот режим обеспечивает определение источника для группы => используется только SSM)
*include (этот режим обеспечивает определение источника для группы => используется только SSM)
*exclude (этот режим позволяет исключать определенный источник из join сообщения => поддерживается только ASM)
*exclude (этот режим позволяет исключать определенный источник из join сообщения => поддерживается ASM)


'''IGMPv3 работа получателя'''
'''IGMPv3 работа получателя'''
Строка 78: Строка 86:
Блок 232/8 работает только с обменом сообщений для source-based tree. Никаких сообщений для shared-tree.
Блок 232/8 работает только с обменом сообщений для source-based tree. Никаких сообщений для shared-tree.


-Сегмент получателя (receiver DR):
*Сегмент получателя (receiver DR):
:*игнорируются любый (*,G) сообщения
:*игнорируются любый (*,G) сообщения
:*не должен отправлять (*,G) upstream роутерам
:*не должен отправлять (*,G) upstream роутерам


-Сегмент источника (source DR):
*Сегмент источника (source DR):
:*не должен отправлять register сообщения к RP, когда получен трафик от источника.
:*не должен отправлять register сообщения к RP, когда получен трафик от источника.


-RP роутер:
*RP роутер:
:*игнорирует register сообщения от source DR.
:*игнорирует register сообщения от source DR.
:*игнорирует SA сообщения от  MSDP пиров.
:*игнорирует SA сообщения от  MSDP пиров.


-Другие роутеры:
*Другие роутеры:
:*игнорируют все (*,G) сообщения от downstream роутеров.
:*игнорируют все (*,G) сообщения от downstream роутеров.


Строка 97: Строка 105:


На интерфейсах к сторону получателей - IGMPv3. При этом на такие интерфейсы буду приходить и запросы от IGMPv1, v2, которые будет использовать для своей работы ASM.
На интерфейсах к сторону получателей - IGMPv3. При этом на такие интерфейсы буду приходить и запросы от IGMPv1, v2, которые будет использовать для своей работы ASM.
 
*На сети нужен ASM + SSM: в этом случае конфиг должен быть как для стандартной PIM-SM модели с определенным RP discovery механизмом.
-На сети нужен ASM + SSM: в этом случае конфиг должен быть как для стандартной PIM-SM модели с определенным RP discovery механизмом.
*На сети нужен только SSM: в этом случае нужно просто сконфигурировать все интерфейсы в sparse mode.
 
-На сети нужен только SSM: в этом случае нужно просто сконфигурировать все интерфейсы в sparse mode.


Для использования адресного пространства совместно:
Для использования адресного пространства совместно:
  set routing-options multicast ssm-groups 224.0.0.0/7
  set routing-options multicast ssm-groups 227.0.0.0/24
  set routing-options multicast asm-override-ssm
  set routing-options multicast asm-override-ssm


Если получатели на поддерживают IGMPv3, SSM maps могут переделать join из (*,G) в (S,G):
===SSM-mapping===
Если получатели не поддерживают IGMPv3, SSM maps могут переделать join из (*,G) в (S,G):


1.
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 from route-filter 232.7.7.7/32 exact
  set policy-options policy-statement ssm-mapping-policy term 1 then accept
  set policy-options policy-statement ''ssm-mapping-policy'' term 1 then accept
2.
2.
  set routing-options multicast ssm-map test policy ssm-mapping-policy
  set routing-options multicast ssm-map ''ssm-mapping-example'' policy ''ssm-mapping-policy''
  set routing-options multicast ssm-map test source 192.168.100.10
  set routing-options multicast ssm-map ''ssm-mapping-example'' source 192.168.100.10
3.
3.
  set protocols igmp interface ge-0/0/0.0 ssm-map test
  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)
result: (*, 232.7.7.7) -> (192.168.100.10, 232.7.7.7)
 
Для IPv6 делается все точно по такому же алгоритму, только в конце ssm-map применяется в рамках протокола mld.


Для troubleshoting используются все те же команды.
Для 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
==Дополнительная информация==
*[[Глава 3. Routing protocols (DVMRP, PIM-DM, PIM-SM)]]
*[[Глава 2. Multicast, IGMP]]
*[[Политики в мультикасте | Глава 6. Политики в мультикасте]]

Текущая версия на 18:39, 15 июля 2021


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

Дополнительная информация