antiCisco blogs » Blog Archive » Мультикаст. Связка PIM и MSDP

antiCisco blogs


блоги по технологиям и оборудованию cisco от инструкторов

Опубликовано 20 Март , 2012

Введение:
Данная статья написана не мной, а уважаемым Кириллом АКА DJ Kill.
Была поставлена задача отдавать мультикаст поток со своей площадки в удаленный PIM домен. Для этого используется протокол «мультикастового» пиринга MSDP. Оказалось, что в данной задаче есть ряд неочевидных подводных камней, которые изложены ниже.
Итог: локальный мультикаст принимается, удаленные запросы join через MSDP поступают (на удаленной стороне рутер Juniper)
Кому интересны подробности — велкам под кат

Далее — настройки с комментариями:

Конфигурация интерфейса, смотрящая в сторону источника:

interface GigabitEthernet0/1.112
encapsulation dot1Q 112
ip address 10.251.251.1 255.255.255.240
no ip redirects
no ip proxy-arp
ip pim sparse-mode
no snmp trap link-status
end

Обращаю внимание на то, что для работы PIM адрес источника может быть не в одной сети с интерфейсом, смотрящим в его сторону, но для работы MSDP он должен знать reverse path к источнику в обычной табличке маршрутизации.

Интерфейс, смотрящий в «чужую» сеть:

interface GigabitEthernet0/1.111
encapsulation dot1Q 111
ip address 198.18.85.42 255.255.255.252
no ip redirects
no ip proxy-arp
ip pim sparse-mode
no snmp trap link-status
end

ВАЖНО: Принудительно делаем маршрутизатор точкой рандеву для PIM Sparse mode (Randevouz Point):

ip pim rp-address 10.251.251.1

Это обязательное условие для того, чтобы маршрутизатор принимал поток и готов был его передать в MSDP. Dence mode для PIM не нужен.

Поднимаем MSDP:

ip msdp peer 198.18.85.41

После этого можем видеть что появились следующие маршруты:

sh ip mroute
IP Multicast Routing Table
!
(*, 226.100.10.1), 01:34:16/stopped, RP 10.251.251.1, flags: SP
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list: Null
!
(10.251.251.10, 226.100.10.1), 01:33:14/00:03:29, flags: TA
Incoming interface: GigabitEthernet0/1.112, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/1.111, Forward/Sparse, 00:16:59/00:02:30
!
(*, 224.0.1.40), 01:34:16/00:02:32, RP 10.251.251.1, flags: SJCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/1.111, Forward/Sparse, 01:34:16/00:02:32

Видно что маршруты построены.
Флаг A говорит о том, что нужный маршрут отдаётся в MSDP.

Далее можно посмотреть дебаг MSDP:

debug ip msdp detail

Где должно быть видно примерно следующее:

[b]Mar 20 12:25:03 192.168.100.30 6148274: Mar 20 08:25:02.957: MSDP(0): (10.251.251.10/32, 226.100.10.1)[/b]
Mar 20 12:25:03 192.168.100.30 6148275: Mar 20 08:25:02.957: MSDP(0): Sent entire mroute table, mroute_cache_index = 0, Qlen = 0
Mar 20 12:25:03 192.168.100.30 6148276: Mar 20 08:25:02.957: MSDP(0): start_index = 0, sa_cache_index = 0, Qlen = 0
Mar 20 12:25:03 192.168.100.30 6148277: Mar 20 08:25:02.957: MSDP(0): Sent entire sa-cache, sa_cache_index = 0, Qlen = 0
Mar 20 12:25:15 192.168.100.30 6148286: Mar 20 08:25:14.941: MSDP(0): Received 3-byte TCP segment from 198.18.85.41
Mar 20 12:25:15 192.168.100.30 6148287: Mar 20 08:25:14.941: MSDP(0): Append 3 bytes to 0-byte msg 1577 from 198.18.85.41, qs 1

То есть маршрут отдаётся.

В принципе, если с той стороны всё поднято, то мы увидим сразу приходящие от них join и трафик, уходящий в сторону удалённого маршрутизатора.

Далее к этому можно прикрутить ряд «бантиков». Допустим, отфильтровать всё ненужное. Чтобы ничего лишнего не передавалось и не анонсилось. Допустим, если у Вас подняты протоколы маршрутизации, использующие мультикаст MSDP будет этот мультикаст анонсить.
Делается это очень просто:

ip msdp sa-filter in 198.18.85.41 list 111
ip msdp sa-filter out 198.18.85.41 list 111
!
access-list 111 permit ip 10.251.251.0 0.0.0.255 any
access-list 111 deny ip any host 224.0.2.2
access-list 111 deny ip any host 224.0.1.3
access-list 111 deny ip any host 224.0.1.24
access-list 111 deny ip any host 224.0.1.22
access-list 111 deny ip any host 224.0.1.2
access-list 111 deny ip any host 224.0.1.35
access-list 111 deny ip any host 224.0.1.60
access-list 111 deny ip any host 224.0.1.39
access-list 111 deny ip any host 224.0.1.40
access-list 111 deny ip any 239.0.0.0 0.255.255.255
access-list 111 deny ip 10.0.0.0 0.255.255.255 any
access-list 111 deny ip 127.0.0.0 0.255.255.255 any
access-list 111 deny ip 172.16.0.0 0.15.255.255 any
access-list 111 deny ip 192.168.0.0 0.0.255.255 any
access-list 111 deny ip any 232.0.0.0 0.255.255.255
access-list 111 permit ip any any

Ну и для пущей паранои можно включить чтобы MSDP не просто отбрасывал маршруты от удалённого пира, но и писал их в «лог».

ip msdp cache-rejected-sa 100

Вот, вроде, и всё. Всё работает.
Нагрузка на 2851 при этом на 6 мегабитах трафика, летящих сквозь нее порядка 3% CPU.

 

Метки: , ,
Опубликовано: Маршрутизаторы и коммутаторы

 

One Response to “Мультикаст. Связка PIM и MSDP”

comment rss - Trackback

  1. Спасибо за статью!!! Очень интересно и познавательно.
    Вот, кстати, есть пример эмуляции Multicast на cisco:
    http://go-to-easyit.blogspot.com/2012/02/multicast-cisco.html

» Оставить комментарий

Вы должны войти чтобы прокомментировать.