MSDP

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску

Overview

Используется только для IPv4.

Междоменный обмен мультикастом, использующий PIM-SM.

+: Каждый ISP сам решает где расположить RP.

+: Между доменами в качестве маршрутизации используется BGP (делаем RPF check). Если топологии unicast и multicast одинаковые - BGP в inet.0. Если разные - MP-BGP в inet.2.

Проблема заключается в том, что если источник и получатель находятся в разных доменах (разные AS в данном случае), то они не смогут "найти друг друга".

MSDP распространяет информацию от RP из других доменов об источниках (т.к. их меньше в сети, чем получателей), используя Source-active message (SA).

Как это происходит:

  • RP (AS1) знает об источнике
  • RP (AS1) шлет инфу об источнике к RP (AS2), используя SA message.
  • RP (AS2) получает (S,G) и т.о. все получатели смогут соединиться с этим новым источником из другой AS.

Обычно запускается на PIM-SM RP, но можно использовать и на non-RP роутерах.

При сконфигурированном MSDP также строятся shared tree (от RP к получателю), source tree (от RP к источнику). И также как и в PIM-SM при получении первого мультикаст пакета DR роутером, он пытается построить shortest-path tree.

MSPD также устанавливает соседство, используя TCP (639 порт). Как только установилось соседство между MSDP peers => возможен обмен SA message.

В SA-message содержится: originating RP, source, group.

Когда у RP в одной AS появляется получатель и нужная группа находится в другой AS, RP как и в PIM-SM начинает слать PIM-join к источнику (в другую AS).

Процесс установления сессии

  • Роутер с наибольшим ip становится пассивным и слушает TCP 639 от активных роутеров.

Состояния:

  • Disable: MSDP peer не сконфигурирован.
  • Inactive: MSDP peer сконфигурирован, но не слушает или не подключен.
  • Connect: active MSDP peer пытается установить TCP сессию.
  • Listen: passive MSDP peer сконфигурирован и слушает 639 порт.
  • Established: TCP сессия установлена.

Флудинг SA-сообщений (source-active):

  • Исходное SA сообщение отправляется, когда источник в первый раз зарегистрировался на RP.
  • Если источник все еще активен, RP будет отправлять SA сообщения каждые 60 секунд.
  • SA сообщения проходят RPF-check, когда прилетают к MSDP peer.
  • Если сообщение прошло RPF-check, MSDP peer хранит его в своем кэше (inet.4). Также сообщения пересылаются всем MSDP пирам, за исключением пира, от которого пришло SA.
clear msdp cache

Iner-AS MSDP

  • !!!картинку вставить!!! и описать все своими словами!!

?? когда RP (AS14) шлет join (S,G) к source (AS12) - передается ли какое-то время инкапсулированный трафик? и по какому пути построит, если имеет несколько выходов до source.

FPR-check для SA сообщений (Peer RPF-check)

SA сообщения флудятся всем пирам, исключая тот, от которого пришло сообщение. SA сообщения обязательно должны пройти RPF check.

Проверяется то, чтобы originated RP и MSDP peer сидят за одним интерфейсом, и трафик передается только в сторону от originated RP.

Правила:

RPF check проходит, если:

  • Originating RP = MSDP peer данного маршрутизатора.
  • SA сообщения получены от non-originating RP:
  • сообщение получено от MSDP peer, который является BGP next-hop для originating RP.
  • IGP next-hop MSDP peer = next-hop to originating RP.
  • MSDP peer находится в последней AS, в AS-path к originating RP.

RPF-check не делается, если:

  • SA сообщение от MSDP peer из mesh группы.
  • SA сообщение от default MSDP peer. (случай с stub доменом, где используется всего один единственный MSDP peer).

Mesh groups

Используют для уменьшения флуда SA сообщений => между MSDP peers внутри mesh group не распространяются SA-message, т.к. смысла в них нет. Все члены Mesh-group получат SA от originating members.

Обычно используют для intra-domain, потому что SA не проходят RPF-check, а автоматически становятся accept.

Флуд в mesh-groups:

  • SA, полученные от соседей по mesh группы не передаются другим членам. Сообщения принимаются и флудятся другим MSDP peers (не из этой же mesh-group).
  • SA, полученные от пиров, не состоящих в группах - подвергаются обычному RPF-check. Если проверка прошла успешно - SA флудятся всем остальным пирам (в других AS и в mesh-group).

Config

set protocols msdp local-address 212.1.254.3
set protocols msdp group anycast-rp mode mesh-group
set protocols msdp group anycast-rp peer 212.1.254.14
set protocols msdp group anycast-rp peer 212.1.254.2
set protocols msdp group customers mode mesh-group
set protocols msdp group customers export export-msdp-nbn-groups
set protocols msdp group customers export export-msdp-nbn-sources
set protocols msdp group customers peer 89.20.131.85 local-address 89.20.131.84
set protocols msdp group customers peer 89.20.131.15 local-address 89.20.131.14
set protocols msdp peer 192.168.2.1 default-peer      || используем, чтобы убедиться, что все SA принимаются от этого пира

Troubleshoting

show msdp
show mspd peer 212.1.254.14 detail
show msdp source-active 
show route table inet.4        || SA cache
show msdp statisctics

Traceoptions

set protocols msdp traceoptions file msdp-debug
set protocols msdp traceoptions file size 10m
set protocols msdp traceoptions file files 30
set protocols msdp traceoptions file world-readable
set protocols msdp traceoptions flag state
set protocols msdp traceoptions flag general detail
set protocols msdp traceoptions flag source-active detail

Anycast RP

Обеспечивает работу нескольких RP для группы, что хорошо в плане отказоустойчивости.

Принцип: Несколько RP используют 1 ip (anycast). Эффект достигается засчет введения нескольких RP, использующих одинаковый IP. Источники и получатели при этом используют ближайшую по unicast RP.

Может возникнуть проблема, что получатель и источник сойдутся на разных RP. Для решения этой проблемы используем MSDP.

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

  • failover timeout зависит только от сходимости IGP.
  • распределение нагрузки на RP для группы - становится возможным.

MSDP работает только с IPv4. Anycast-PIM поддерживает IPv4, IPv6.

Настройка

  • Создаем уникальный ip на loopback (основной для протоколов маршрутизации) - помечаем его как primary. Также для надежности лучше его прописать как router-id.
  • Создаем неуникальный ip на loopback (для anyacst-RP) - назначаем его как local RP.
  • Non-RP роутеры должны "изучить" anycast-RP, используя любой discovery механизм (обычно все-таки это static RP, так как он самый простой).
  • Включаем MSDP mesh peering с другими anycast-RP роутерами.