PIM-DM
Материал из Xgu.ru
- Автор: Наташа Самойленко
PIM Dense Mode (PIM-DM) — это один из протоколов из семейства PIM. PIM-DM распространяет информацию об источниках и группах, выполняя флудинг по всему домену PIM.
Хотя в реальной жизни, на сегодняшний день, PIM-DM редко используется, информация о том, как он работает, может помочь понять как работают другие варианты PIM.
Содержание |
[править] Описание работы PIM-DM
В PIM-DM информация об источнике и группе распространяется по всему домену мультикаст. Выполняется это с помощью процедуры флудинга. Распространение информации об источнике и группе происходит независимо от того, есть ли в данный момент клиенты, которые хотят получать данные этой группы.
|
Такая модель распространения трафика называется также push model или implicit join. |
Так как информация передается всем маршрутизаторам, то каждый маршрутизатор знает о существующих группах и источниках. И следовательно, когда появляется клиент, которых хочет получать трафик определенной группы, любой маршрутизатор в мультикаст домене знает где находится источник, который передает данные этой группы, и строит SPT-дерево к источнику.
Как правило, в реальной жизни, этот вариант PIM редко используется.
[править] Сообщения PIM-DM
PIM-DM использует такие сообщения:
- Hello для обнаружения соседей и поддержания связи с соседями
- Prune для удаления ветвей из дерева распространения мультикаст трафика
- Graft для того чтобы добавить ветвь в дерево, после того как она была удалена
- Graft Ack подтверждение добавления в дерево
- Assert для выбора Forwarder
[править] Флудинг трафика по сети
PIM-DM использует процедуру флудинга для того чтобы распространить информацию об источнике и группе по сети. Это позволяет всем маршрутизаторам в домене PIM узнать о появлении нового источника сразу же, как только он появился.
После того как информация о паре (источник, группа) разойдется по сети, даже если маршрутизатор затем будет исключен из SPT-дерева, у него остается информация (S, G). И в любой момент, когда у этого маршрутизатора появятся непосредственно присоединенные клиенты или нижестоящие соседи, которые хотят получать трафик группы, локальный маршрутизатор будет знать куда направить сообщение о добавлении его в дерево, так как он знает об источнике группы.
В PIM-DM флудинг происходит по определенным правилам:
- пакеты мультикаст принимаются на вход только на тех интерфейсах, которые прошли проверку RPF. То есть, если пакеты вошли в интерфейс, который в unicast таблице маршрутизации используется как исходящий для того чтобы отправить трафик на IP-адрес источника.
- если пакет не прошел проверку RPF, то он отбрасывается
- дальше пакеты передаются через исходящий интерфейс, только если:
- на этом интерфейсе есть сосед PIM-DM
- на этом интерфейсы есть непосредственно присоединенные получатели
На рисунке все маршрутизаторы работают по PIM-DM:
- режим PIM-DM включен на всех интерфейсах
- клиенты C1 и C2 до появления источника, запросили получение трафика группы 239.1.1.1
- когда появляется источник, то трафик передается во всей сети, с учетом правил флудинга
[править] Удаление ветвей без получателей. Prune
После первоначального флудинга, маршрутизаторы начинают исключать из дерева ветви, на которых нет получателей. Выполняется удаление ветвей с помощью сообщения Prune.
Причины отправки сообщения Prune:
- Пакет был получен на интерфейсе, который не прошел проверку RPF.
- Когда маршрутизатор обнаруживает два факта:
- нет локально присоединенных хостов, которые хотят получать трафик конкретной группы,
- нет нижестоящих соседей маршрутизаторов, которые хотят получать трафик группы.
- в Ethernet сегменте маршрутизатор получил Prune от одного из нижестоящих соседей и не получил Prune Override от других
[править] State Refresh
В более старых вариантах реализации PIM, процедура флудинга и отправки Prune, соответственно, периодически повторялась:
- когда маршрутизатор получает сообщение Prune на интерфейс он запускает Prune таймер (по умолчанию 3 минуты). Когда таймер истекает, маршрутизатор опять переводит интерфейс в состояние forward.
Позже был добавлен функционал State Refresh.
Сообщения State Refresh периодически генерирует маршрутизатор, который непосредственно присоединен к источнику. Сообщения передаются по всему домену PIM-DM. Когда маршрутизаторы получают сообщение State Refresh, они заново устанавливают таймер Prune. Это предотвращает периодический процесс флудинга.
[править] Prune Override
Если маршрутизатор получаетот нижестоящего соседа сообщение Prune в сети с множественным доступом, то он запускает таймер на 3 секунды, прежде чем исключит интерфейс из дерева. Если в этой сети есть ещё один маршрутизатор, который хочет получать трафик этой группы, то он отправляет сообщение Join. Этот процесс называется Prune Override.
[править] Подключение ранее удаленной ветви. Graft
Если после того, как было отправлено сообщение Prune, необходимо вновь добавить исключенную ветвь дерева, отправляется сообщение Graft.
Маршрутизатор отправляет сообщение Graft если ему необходимо сообщить вышестоящему маршрутизатору, которому до этого было отправлено сообщение Prune, что интерфейс необходимо перевести в состояние forward.
В сообщении Graft указывается для какой группы и источника (S,G) это необходимо сделать.
В ответ на отправку сообщения Graft отправляется подтверждение о получении Graft Ack.
Graft может быть инициирован маршрутизатором, если у него появились непосредственно присоединенные клиенты, которые хотят получать трафик. Или, если нижестоящий маршрутизатор прислал Graft. Тогда локальный маршрутизатор отправляет вышестоящему Graft через свой RPF-интерфейс.
На рисунке в сети появился новый клиент, подключенный к маршрутизатору R6. Клиент отправляет IGMP Join, в котором указано, что он хочет получать трафик группы 239.1.1.1. Маршрутизатор R6 ранее отправил R3 сообщение Prune, и теперь, для того чтобы его включили в дерево, отправляет R3 Graft. R3 подтверждает получение Graft сообщением Graft Ack и включает интерфейс в дерево SPT.
[править] DR в PIM-DM
Когда к сети с множественным доступом присоединены несколько маршрутизаторов, один из них должен выполнять роль выделенного маршрутизатора (Designated Router, DR).
Для выбора выделенного маршрутизатора используются сообщения hello. Маршрутизатор с наибольшим IP-адресом становится DR.
Фактически, DR используется именно в режиме PIM-SM и не имеет большого значения в сетях PIM-DM.
Исключением является ситуация, когда в сети используется IGMPv1, так как IGMPv1 не выбирает Querier. В этом случае DR используется как IGMP Querier.
[править] Настройка PIM-DM
[править] PIM-DM в Cisco
На странице PIM-DM в Cisco описан пример работы PIM-DM на примере схемы, которая изображена на рисунке.
- Основная страница: PIM-DM в Cisco