Политики в мультикасте: различия между версиями
м |
|||
(не показано 19 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{#description2:IGMP join фильтрация. Политики на PIM соседство. Фильтрация PIM join. Фильтрация PIM register. Фильтрация BSR. Фильтрация MSDP SA сообщений. Фильтрация мультикаст трафика. Информация для подготовки к экзаменам Juniper Networks}} | |||
Используя 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 на разные источники для одной и той же группы - | *каждый 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" | |||
show pim statistics | find "Hello drop" | |||
Hello dropped on neighbor policy 4 | Hello dropped on neighbor policy 4 | ||
Если пришел пакет от роутера с адресом, описанном в policy, такой пакет будет отброшен. Если соседство уже было установлено до создания policy, то соседство будет сохраняться до истечения holdtime. | Если пришел пакет от роутера с адресом, описанном в policy, такой пакет будет отброшен. Если соседство уже было установлено до создания policy, то соседство будет сохраняться до истечения holdtime. | ||
Для указания соседей в policy лучше использовать /32 - linknet адрес, не lo, потому что пакеты идут hop by hop, используя только | Для указания соседей в policy лучше использовать /32 - linknet адрес, '''не lo''', потому что пакеты идут hop by hop, используя только p2p адреса. | ||
==Join/prune== | |||
===Фильтруем вх/исх сообщения=== | |||
Есть несколько параметров по которым можно отстроить policy: ''neighbor, interface, route-filter, source-address-filter''. | |||
Есть несколько параметров по которым можно отстроить policy: ''neighbor, interface, route-filter, source- | |||
*''neighbor'': прописываем физический интерфейсный адрес, т.к. join передается от хопа к хопу. | *''neighbor'': прописываем физический интерфейсный адрес, т.к. join передается от хопа к хопу. | ||
*''interface'': вх логический интерфейс. | *''interface'': вх логический интерфейс. | ||
*''route-filter'': multicast group | *''route-filter'': multicast group | ||
*''source- | *''source-address-filter'': source address (если исползуем ASM, то адрес RP). | ||
Пример для фильтрации входящих join: | Пример для фильтрации входящих 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 все тоже самое, только | Для исходящих join/prune все тоже самое, только | ||
set protocols pim export ... | set protocols pim export ... | ||
Диагностика: | Диагностика: | ||
> show pim statistics | match "Rx Join/Prunes filtered" | |||
Rx Joins/Prunes filtered 12 | 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 в двух вариантах: | |||
#Если на RP - то фильтр на вход | |||
#Если на DR - то фильтр на выход | |||
Пример для source RP: | Пример для 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 аналогичен по конфигурации, только | Пример для 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 из разных доменов не распространяли информацию о своих RP. | Обычно используется, чтобы BSR из разных доменов не распространяли информацию о своих RP. | ||
Строка 107: | Строка 105: | ||
Еще один метод не распространять информацию об RP в другой домен - настроить PIMv1 на интерфейсе (т.к. BSR работает только с v2). | Еще один метод не распространять информацию об RP в другой домен - настроить PIMv1 на интерфейсе (т.к. BSR работает только с v2). | ||
=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 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= | |||
Описано в 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 в двух вариантах:
- Если на RP - то фильтр на вход
- Если на 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