Политики в мультикасте: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 18 промежуточных версий этого же участника)
Строка 1: Строка 1:
Используя policy, можно более эффективно использовать полосу; можно исключить различные проблемы в сети (не большое кол-во state в сети (S,G)), благодаря указанию конкретных групп, конкретных источников; можно предотвратить DoS атак.
{{#description2:IGMP join фильтрация. Политики на PIM соседство. Фильтрация PIM join. Фильтрация PIM register. Фильтрация BSR. Фильтрация MSDP SA сообщений. Фильтрация мультикаст трафика. Информация для подготовки к экзаменам Juniper Networks}}


==IGMP join==
Используя policy, можно
*более эффективно использовать полосу
*исключить различные проблемы в сети (не большое кол-во state в сети (S,G)), благодаря указанию конкретных групп, конкретных источников;
*можно предотвратить DoS атак.
 
=IGMP join=
*можно указать через policy группу (route-filter) и источник (source-address) на которые нельзя подписываться.
*можно указать через policy группу (route-filter) и источник (source-address) на которые нельзя подписываться.
  set policy-options policy-statement block-igmp term 1 from route-filter 235.4.5.6/32 exact
  set policy-options policy-statement block-igmp term 1 from route-filter 235.4.5.6/32 exact
Строка 12: Строка 17:


*каждый join считается как отдельная подписка: (*,g), (s,g) - 2 разных подписки
*каждый join считается как отдельная подписка: (*,g), (s,g) - 2 разных подписки
*каждый join на разные источники для одной и той же группы - отдельные подписки: (s1,g), (s2,g) - 2 разных подписки.
*каждый join на разные источники для одной и той же группы - 2 разные подписки: (s1,g), (s2,g).
*если закоммитить число групп, которое по факту меньше числа уже изученных групп, то все записи сотрутся и хостам придется переподписаться.
*если закоммитить число групп, которое по факту меньше числа уже изученных групп, то все записи сотрутся и хостам придется переподписаться.


==Policy for PIM-SM==
=Policy for PIM-SM=
'''Соседство'''
==Соседство==
фильтруем нежелательных соседей.
Фильтруем нежелательных соседей.
  talisker# show | compare
  set policy-options policy-statement no-macduff term 1 from route-filter 192.168.86.14/32 exact
[edit protocols pim]
  set policy-options policy-statement no-macduff term 1 then reject
+    interface ge-0/0/0.70 {
  set protocols pim interface ge-0/0/0.70 neighbor-policy no-macduff
+        neighbor-policy no-macduff;
 
+    }
[edit policy-options]
policy-statement no-macduff {
+      term 1 {
+          from {
+              route-filter 192.168.86.14/32 exact;
  +          }
+          then reject;
   
  show pim statistics | find "Hello drop"
  show pim statistics | find "Hello drop"
  Hello dropped on neighbor policy              4
  Hello dropped on neighbor policy              4
Строка 36: Строка 32:
Если пришел пакет от роутера с адресом, описанном в policy, такой пакет будет отброшен. Если соседство уже было установлено до создания policy, то соседство будет сохраняться до истечения holdtime.
Если пришел пакет от роутера с адресом, описанном в policy, такой пакет будет отброшен. Если соседство уже было установлено до создания policy, то соседство будет сохраняться до истечения holdtime.


Для указания соседей в policy лучше использовать /32 - linknet адрес, не lo, потому что пакеты идут hop by hop, используя только linknet адреса.
Для указания соседей в policy лучше использовать /32 - linknet адрес, '''не lo''', потому что пакеты идут hop by hop, используя только p2p адреса.


'''Join/prune'''
==Join/prune==
фильтруем вх/исх сообщения
===Фильтруем вх/исх сообщения===
 
Есть несколько параметров по которым можно отстроить policy: ''neighbor, interface, route-filter, source-address-filter''.
Есть несколько параметров по которым можно отстроить policy: ''neighbor, interface, route-filter, source-route-filter''.
*''neighbor'': прописываем физический интерфейсный адрес, т.к. join передается от хопа к хопу.
*''neighbor'': прописываем физический интерфейсный адрес, т.к. join передается от хопа к хопу.
*''interface'': вх логический интерфейс.
*''interface'': вх логический интерфейс.
*''route-filter'': multicast group
*''route-filter'': multicast group
*''source-route-filter'': source address (если исползуем ASM, то адрес RP).
*''source-address-filter'': source address (если исползуем ASM, то адрес RP).


Пример для фильтрации входящих join:
Пример для фильтрации входящих join:
  mortlach# top show | compare
  set protocols pim import no-join
[edit protocols pim]
  set policy-options policy-statement no-join term 1 from route-filter 235.4.5.6/32 exact
import no-join;
  set policy-options policy-statement no-join term 1 from source-address-filter 10.66.66.2/32 exact
  [edit]
  set policy-options policy-statement no-join term 1 then reject
policy-options {
 
+      policy-statement no-join {
+          term 1 {
+              from {
+                  route-filter 235.4.5.6/32 exact;
  +                  source-address-filter 10.66.66.2/32 exact;
  +              }
+              then reject;
Для исходящих join/prune все тоже самое, только  
Для исходящих join/prune все тоже самое, только  
  set protocols pim export ...
  set protocols pim export ...


Диагностика:
Диагностика:
  mortlach> show pim statistics | match "Rx Join/Prunes filtered"
  > show pim statistics | match "Rx Join/Prunes filtered"
  Rx Joins/Prunes filtered                    12
  Rx Joins/Prunes filtered                    12


'''Register'''
===Join suppression===
фильтруем исх сообщения от source DR / вх сообщения на RP. Работает только для ASM, т.к. в SSM получатели уже знают информацию об источниках.
Есть отдельная функция, которая позволяет блокировать отправляемые Join сообщения в сторону upstream роутера, если он видит в сети join от других роутеров к той же сети (т.к. join отправляются на общий адрес 224.0.0.13, то все роутеры в широковещательном сегменте видят сообщения).
 
*''reset-tracking-bit'' - активирует подавление PIM join сообщений на каждом PIM интерфейсе роутера. При этом в пакете сбрасывается значение tracking-bit (1->0).
 
Когда получено несколько одинаковых PIM join на роутер, то активируется некий произвольный временной интервал (66-84 мс), и роутер не передает PIM join в сторону upstream.
*''override-interval'' - max время задержки отправки join при обнаружении такого же join.
*''propagation-delay'' - время, которое upstream роутер, получив prune, ждет join от downstream роутеров.
 
set protocols pim reset-tracking-bit
set protocols pim propagation-delay 100
set protocols pim override-interval 3500
 
==Register==
Работает только для ASM, т.к. в SSM получатели уже знают информацию об источниках.
 
Можно настроить register filter в двух вариантах:
#Если на RP - то фильтр на вход
#Если на DR - то фильтр на выход


Пример для source RP:
Пример для source RP:
  oban# top show | compare
  set protocols pim rp '''rp'''-register-policy  
[edit protocols pim rp]
set protocols pim rp ''no-register''
+    rp-register-policy no-register;
  set policy-options policy-statement ''no-register'' term 1 from route-filter 235.4.5.6/32 exact
[edit]
  set policy-options policy-statement ''no-register'' term 1 from source-address-filter 10.66.66.2/32 exact
  policy-options {
  set policy-options policy-statement ''no-register'' term 1 then reject
+      policy-statement no-register {
+          term 1 {
+              from {
+                  route-filter 235.4.5.6/32 exact;
  +                  source-address-filter 10.66.66.2/32 exact;
  +              }
+              then reject;


Пример для source DR аналогичен по конфигурации, только  
Пример для source DR аналогичен по конфигурации, только  
  set protocols pim rp dr-register-policy no-register
  set protocols pim rp '''dr'''-register-policy ''no-register''


В результате такой фильтрации source DR не будет слать к RP трафик от источника 10.66.66.2 с группой 235.4.5.6. Поэтому при использовании ASM получатели не смогут получать трафик от этого источника, а при использовании SSM получатели его все-равно получат.
В результате такой фильтрации source DR не будет слать к RP трафик от источника 10.66.66.2 с группой 235.4.5.6. Поэтому при использовании ASM получатели не смогут получать трафик от этого источника, а при использовании SSM получатели его все-равно получат.
Строка 93: Строка 91:
  Rx Register msgs filtering drop              3
  Rx Register msgs filtering drop              3


==BSR messages==
=BSR messages=
Обычно используется, чтобы BSR из разных доменов не распространяли информацию о своих RP.
Обычно используется, чтобы BSR из разных доменов не распространяли информацию о своих RP.


Строка 107: Строка 105:
Еще один метод не распространять информацию об RP в другой домен - настроить PIMv1 на интерфейсе (т.к. BSR работает только с v2).
Еще один метод не распространять информацию об RP в другой домен - настроить PIMv1 на интерфейсе (т.к. BSR работает только с v2).


==MSDP SA messages==
=MSDP SA messages=


*SA import
*SA import
Строка 113: Строка 111:


При применении policy проходят только явно разрешенные SA сообщения, для этого обязательно включить accept-all.  
При применении policy проходят только явно разрешенные SA сообщения, для этого обязательно включить accept-all.  
  set policy-option policy-statement block-SA-imort term 1 from neighbor 192.168.1.2 interface ge-0/0/0.0 route-filter 224.7.7.7/32 exact source-address-filter 10.0.107.2/32 exact
  set policy-option policy-statement block-SA-imort term 1 from neighbor 192.168.1.2  
set policy-option policy-statement block-SA-imort term 1 from interface ge-0/0/0.0  
set policy-option policy-statement block-SA-imort term 1 from route-filter 224.7.7.7/32 exact  
set policy-option policy-statement block-SA-imort term 1 from source-address-filter 10.0.107.2/32 exact
  set policy-option policy-statement block-SA-imort term 1 then reject
  set policy-option policy-statement block-SA-imort term 1 then reject
set policy-option policy-statement block-SA-imort term accept-all then accept all
 
  set protocols msdp group AS65009 peer 192.168.1.2 import block-SA-import
  set protocols msdp group AS65009 peer 192.168.1.2 import block-SA-import
  show msdp source-active detail | mat Filtered
  show msdp source-active detail | mat Filtered
*SA export
*SA export
Строка 133: Строка 135:
  set protocols msdp group AS65009 peer 192.168.100.10 active-source-limit 10000 threshold 8000
  set protocols msdp group AS65009 peer 192.168.100.10 active-source-limit 10000 threshold 8000


==Multicast traffic==
=Multicast traffic=
Описано в RFC 2365, называется Administrative scoping (административные ограничения).
Описано в RFC 2365, называется Administrative scoping (административные ограничения).


Строка 166: Строка 168:
*unassigned: 239/10, 239.64/10, 239.128/10
*unassigned: 239/10, 239.64/10, 239.128/10
*link-local: 224/24
*link-local: 224/24
=Дополнительная информация=
*[[Глава 2. Multicast, IGMP]]
*[[Глава 3. Routing protocols (DVMRP, PIM-DM, PIM-SM)]]
*[[MSDP | Глава 4. MSDP]]
*[[Глава 5. PIM-SSM]]

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


Используя policy, можно

  • более эффективно использовать полосу
  • исключить различные проблемы в сети (не большое кол-во state в сети (S,G)), благодаря указанию конкретных групп, конкретных источников;
  • можно предотвратить DoS атак.

IGMP join

  • можно указать через policy группу (route-filter) и источник (source-address) на которые нельзя подписываться.
set policy-options policy-statement block-igmp term 1 from route-filter 235.4.5.6/32 exact
set policy-options policy-statement block-igmp term 1 from source-address 10.66.66.2 exact
set policy-options policy-statement block-igmp term 1 then reject
set protocols igmp interface ge-0/0/0.0 group-policy block-igmp

  • можно ограничить кол-во подписок на интерфейсе.
set protocols igmp interface ge-0/0/0.0 group-limit 100
  • каждый join считается как отдельная подписка: (*,g), (s,g) - 2 разных подписки
  • каждый join на разные источники для одной и той же группы - 2 разные подписки: (s1,g), (s2,g).
  • если закоммитить число групп, которое по факту меньше числа уже изученных групп, то все записи сотрутся и хостам придется переподписаться.

Policy for PIM-SM

Соседство

Фильтруем нежелательных соседей.

set policy-options policy-statement no-macduff term 1 from route-filter 192.168.86.14/32 exact
set policy-options policy-statement no-macduff term 1 then reject
set protocols pim interface ge-0/0/0.70 neighbor-policy no-macduff
show pim statistics | find "Hello drop"
Hello dropped on neighbor policy              4

Если пришел пакет от роутера с адресом, описанном в policy, такой пакет будет отброшен. Если соседство уже было установлено до создания policy, то соседство будет сохраняться до истечения holdtime.

Для указания соседей в policy лучше использовать /32 - linknet адрес, не lo, потому что пакеты идут hop by hop, используя только p2p адреса.

Join/prune

Фильтруем вх/исх сообщения

Есть несколько параметров по которым можно отстроить policy: neighbor, interface, route-filter, source-address-filter.

  • neighbor: прописываем физический интерфейсный адрес, т.к. join передается от хопа к хопу.
  • interface: вх логический интерфейс.
  • route-filter: multicast group
  • source-address-filter: source address (если исползуем ASM, то адрес RP).

Пример для фильтрации входящих join:

set protocols pim import no-join
set policy-options policy-statement no-join term 1 from route-filter 235.4.5.6/32 exact
set policy-options policy-statement no-join term 1 from source-address-filter 10.66.66.2/32 exact
set policy-options policy-statement no-join term 1 then reject

Для исходящих join/prune все тоже самое, только

set protocols pim export ...

Диагностика:

> show pim statistics | match "Rx Join/Prunes filtered"
Rx Joins/Prunes filtered                     12

Join suppression

Есть отдельная функция, которая позволяет блокировать отправляемые Join сообщения в сторону upstream роутера, если он видит в сети join от других роутеров к той же сети (т.к. join отправляются на общий адрес 224.0.0.13, то все роутеры в широковещательном сегменте видят сообщения).

  • reset-tracking-bit - активирует подавление PIM join сообщений на каждом PIM интерфейсе роутера. При этом в пакете сбрасывается значение tracking-bit (1->0).

Когда получено несколько одинаковых PIM join на роутер, то активируется некий произвольный временной интервал (66-84 мс), и роутер не передает PIM join в сторону upstream.

  • override-interval - max время задержки отправки join при обнаружении такого же join.
  • propagation-delay - время, которое upstream роутер, получив prune, ждет join от downstream роутеров.
set protocols pim reset-tracking-bit
set protocols pim propagation-delay 100
set protocols pim override-interval 3500

Register

Работает только для ASM, т.к. в SSM получатели уже знают информацию об источниках.

Можно настроить register filter в двух вариантах:

  1. Если на RP - то фильтр на вход
  2. Если на DR - то фильтр на выход

Пример для source RP:

set protocols pim rp rp-register-policy 
set protocols pim rp no-register
set policy-options policy-statement no-register term 1 from route-filter 235.4.5.6/32 exact
set policy-options policy-statement no-register term 1 from source-address-filter 10.66.66.2/32 exact
set policy-options policy-statement no-register term 1 then reject

Пример для source DR аналогичен по конфигурации, только

set protocols pim rp dr-register-policy no-register

В результате такой фильтрации source DR не будет слать к RP трафик от источника 10.66.66.2 с группой 235.4.5.6. Поэтому при использовании ASM получатели не смогут получать трафик от этого источника, а при использовании SSM получатели его все-равно получат.

Для диагностики:

show pim statistics | match "Rx register msgs filtering drop"
Rx Register msgs filtering drop               3

BSR messages

Обычно используется, чтобы BSR из разных доменов не распространяли информацию о своих RP.

set policy-options policy-statement block-bsr-import term 1 from interface ge-0/0/0.0
set policy-options policy-statement block-bsr-import term 1 then reject
set policy-options policy-statement block-bsr-export term 1 from interface ge-0/0/0.0
set policy-options policy-statement block-bsr-export term 1 then reject
set protocols pim rp bootstrap-import block-bsr-import
set protocols pim rp bootstrap-export block-bsr-export
show pim statistics interface ge-0/0/0.0 | match "V2 Bootstrap"

Еще один метод не распространять информацию об RP в другой домен - настроить PIMv1 на интерфейсе (т.к. BSR работает только с v2).

MSDP SA messages

  • SA import

Для policy используются следующие критерии: neighbor, interface, route-filter (группа), source-address-filter (источник).

При применении policy проходят только явно разрешенные SA сообщения, для этого обязательно включить accept-all.

set policy-option policy-statement block-SA-imort term 1 from neighbor 192.168.1.2 
set policy-option policy-statement block-SA-imort term 1 from interface ge-0/0/0.0 
set policy-option policy-statement block-SA-imort term 1 from route-filter 224.7.7.7/32 exact 
set policy-option policy-statement block-SA-imort term 1 from source-address-filter 10.0.107.2/32 exact
set policy-option policy-statement block-SA-imort term 1 then reject
set protocols msdp group AS65009 peer 192.168.1.2 import block-SA-import
show msdp source-active detail | mat Filtered
  • SA export

Все тоже самое как и для import, только:

set protocols msdp group AS65009 peer 192.168.1.2 export block-SA-export
  • SA limit

- Дефолтное ограничение - 25000. Можно ставить 1-1млн.

- Лимит можно ставить глобально, на группу, на пира. Применятся ВСЕ, а не более специфичные.

- Лимит можно ставить и для конкретной группы источников. При этом для пира стоит общее ограничение и для конкретной группы - применятся оба ограничения.

set protocols msdp active-source-limit maximum 10000 threshold 8000
set protocols msdp group AS65009 peer 192.168.100.10 source 10.1.0.0/16 active-source-limit 500
set protocols msdp group AS65009 peer 192.168.100.10 active-source-limit 10000 threshold 8000

Multicast traffic

Описано в RFC 2365, называется Administrative scoping (административные ограничения).

В основном используется для непрохождения трафика между доменам. Админу нужно задать огрничение для домена - с помощью пограничных интерфейсов.

В Junos 2 метода:

  • Named scoping

Каждая группа должна быть именована. Один интерфейс может принадлежать нескольким группам.

set routing-options multicast scope auto-rp-deiscovery prefix 224.0.1.40/32
set routing-options multicast scope auto-rp-deiscovery interface ge-0/0/0.0
set routing-options multicast scope scoped-range prefix 239.0.0.0/8
set routing-options multicast scope scoped-range interface ge-0/0/0.0
show multicast scope

В примере показано как контролировать auto-RP трафик между доменами, чтобы не использовать RP другого домена.

  • Scope policies

Более гибкий подход. Используя разные термы можно делать выборку по разным интерфейсам, тогда как в named-scope это займет кучу конфига.

Named scope и scoping policy - взаимоисключающие. При этом в named группа - 239.192/16 автоматически добавляется на интерфейсе, а при использовании scoping policy - автоматически не добавляется, нужно писать ручками.

set policy-option policy-stetment mcast-scope term 1 from interface ge-0/0/0.0
set policy-option policy-stetment mcast-scope term 1 from route-filter 239.0.0.0/8 orlonger
set policy-option policy-stetment mcast-scope term 1 from route-filter 224.0.1.40/32 exact
set policy-option policy-stetment mcast-scope term 1 from route-filter 224.0.1.39/32 exact
set policy-option policy-stetment mcast-scope term 1 then reject
set routing-options multicast scope-policy mcast-scope

Известные административные ограничения:

  • site-local: 239.255/16
  • organization-local: 239.192/14 - private use in network.
  • unassigned: 239/10, 239.64/10, 239.128/10
  • link-local: 224/24

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