PIM

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Наташа Самойленко


Protocol Independent Multicast (PIM) — это группа протоколов, которые занимаются маршрутизацией мультикаст. И, хотя некоторые основы работы протоколов из этой группы одинаковы, каждый конкретный протокол работает по-разному.

"Protocol independent" в названии протокола означает, что PIM может работать с unicast таблицей маршрутизации, независимо от того, как именно она заполнены. То есть, он может использовать, например, маршруты OSPF, EIGRP, статические маршруты и др. Кроме того, сам PIM не передает информацию о маршрутах, а строит дерево для передачи мультикаст трафика на основе таблицы маршрутизации unicast.

На этой странице описываются принципы работы PIM, которые одинаковы во всех вариантах протокола. А также кратко описаны основы работы каждого варианта PIM. Подробная информация на страницах соответствующих варианту PIM.


Содержание

[править] Маршрутизация мультикаст

PIM это один из протоколов для маршрутизации мультикаст. Однако PIM не строит отдельной таблицы маршрутизации, не передает маршруты, а использует существующую таблицу маршрутизации unicast для передачи трафика и служебных сообщений.

Как и другим протоколам, для того чтобы маршрутизировать мультикаст, PIM должен построить дерево для передачи мультикаст. В зависимости от того, какой именно вариант PIM работает, может использоваться sourse tree, shared tree, одно из них, или оба одновременно.

Для PIM таблица маршрутизации мультикаст будет состоять не из маршрутов, как для unicast, и из записей вида (источник, группа) или (S, G). Эти записи могут быть двух типов:

  • (S, G) — когда известен источник. Эта запись характерна для SPT-дерева,
  • (*, G) — когда дерево строится к некой общей точке (RP). Эта запись характерна для shared tree.

Кроме самой записи, (S, G) или (*, G), для каждой записи хранится информация о том, какой интерфейс локального маршрутизатора ведет вверх по дереву, к источнику или RP (и откуда, соответственно, будет приходить данные мультикаст), и какие интерфейсы ведут вниз, к получателям или нижестоящим соседям (куда данные мультикаст будут передаваться).

Подробнее о деревьях передачи мультикаст трафика, а также о важной терминологии о направлении движения по дереву:

Основная страница: Multicast_distribution_tree

Второе фундаментальное понятие, связанное с маршрутизацией мультикаст — проверка RPF.

Reverse Path Forwarding (RPF) — это проверка, которую выполняют маршрутизаторы, для того чтобы убедиться, что multicast трафик передается по пути без петель.

Подробнее об RPF:

Основная страница: RPF

[править] Семейство протоколов PIM

PIM может работать в нескольких режимах, которые можно считать разными протоколами. Базовые принципы работы, такие как, установка отношений соседства, проверка RPF, работают во всех вариантах PIM одинаково. Разные варианты протокола отличает то, как маршрутизаторы заполняют таблицу маршрутизации мультикаст, как маршрутизатор передает пакеты, которые получил от источника, каким образом маршрутизаторы узнают об источниках и группах.

Два основных режима, в которых может работать PIM:

  • Dense Mode (PIM-DM)
    • Логика работы протокола предполагает, что в домене много получателей мультикаст. Как правило, этот вариант PIM редко используется
    • PIM-DM использует только деревья SPT
    • В PIM-DM маршрутизаторы распространяют (флудят) трафик по всему домену мультикаст
      • С помощью этого все маршрутизаторы узнают о существующих парах (источник, группа)
    • Если у маршрутизатора нет клиентов, которые хотят получать данные мультикаст или нет нижестоящих соседей, то маршрутизатор просит вышестоящего соседа исключить себя из дерева SPT
    • Так как информация распространяется по всему домену мультикаст, то на каждом маршрутизаторе в домене будут записи (S, G) для каждой пары (источник, группа), которые есть в домене.
      • Это значит, что все маршрутизаторы в мультикаст домене знают обо всех группах и источниках, которые есть в домене
  • Sparse Mode (PIM-SM)
    • PIM-SM использует shared деревья
      • Но также и SPT деревья
    • Первоначальное построение дерева для передачи трафика проходит через RP, с помощью которой координируется работа в мультикаст домене
      • Все маршрутизаторы в мультикаст домене знают об RP (как именно они узнают об RP, написано в разделе PIM-SM)
      • В дальнейшем возможно переключение на SPT
    • Источники трафика регистрируются на RP (таким образом RP знает о паре (S, G))
      • Запись (S, G), в отличие от PIM-DM, есть только на RP и маршрутизаторе, который регистрировал источник на RP
      • То есть, только RP знает обо всех группах и источниках в домене. Остальные маршрутизаторы знают только об RP
    • В PIM-SM маршрутизаторы не флудят трафик. Дерево строится по необходимости, с вершиной в RP
      • Когда появляются клиенты, которые хотят получаться трафик определенной группы, маршрутизатор, ближайший к клиентам, отправляет по направлению к RP запрос на добавление себя в дерево
    • Пока в сети нет клиентов, которые хотят получать трафик, у маршрутизаторов в домене мультикаст не хранятся записи (S, G) или (*, G).
      • Записи (S, G) есть на RP и на маршрутизаторах, которые регистрировали источники
      • Записи (*, G) появляются, когда есть клиенты, которые хотят получать трафик какой-то группы
      • При переключении на SPT, на маршрутизаторах появятся записи (S, G)

Также в Cisco отдельно выделяют вариант PIM Sparse-Dense, который является гибридом соответствующих вариантов PIM. Подробнее о нем на странице PIM-SM в Cisco.


Кроме протоколов PIM-DM и PIM-SM, есть также протоколы, которые основаны на PIM-SM, но имеют свою специфику работы:

  • Bidirectional PIM (BIDIR-PIM)
    • Предполагается, что источники и клиенты могут быть одними и теми же устройствами
    • Создан для работы по модели many-to-many
    • От PIM-SM BIDIR отличает то, как трафик идет от источника к RP.
      • Принцип передачи трафика от RP к получателям остается неизменным.
    • BIDIR-PIM использует только shared деревья
    • В BIDIR-PIM по shared tree можно двигаться и вверх и вниз, дерево двунаправленное (отсюда и название протокола)
    • Нет процесса регистрации источника и проверки RPF
      • Новый механизм, который заменяет регистрацию и проверку RPF, это Designated Forwarder (DF)
  • Source-Specific Multicast PIM (PIM-SSM)
    • Работает с IGMPv3
      • IGMPv3 позволяет клиентам отправлять запрос на получения трафика не только определенной группы, но и от определенного источника
      • IGMPv3 совместим с IGMPv2, то есть может отправлять запросы вида (*, G)
    • Обычно используется диапазон 232.0.0.0/8
    • PIM-SSM использует деревья SPT, так как клиент отправляет запрос вида (S, G). То есть, источник уже известен
    • Регистрация источника самим PIM не нужна

[править] Одновременное использование протоколов

Протоколы PIM-SM, BIDIR-PIM и PIM-SSM могут одновременно использоваться сети. Они не исключают друг друга. Если все три протокола должны работать в сети одновременно, то разграничение их работы выполняется назначением разным протоколам разных диапазонов групп. То есть, в итоге, именно группа определяет каким образом будет обрабатываться трафик, по правилам какого протокола.

Так как каждый из протоколов ориентирован на определенную модель работы, то выбрать конкретный протокол довольно просто.

PIM-DM на сегодняшний день уже считается устаревшим протоколом и редко используется.

PIM-SM используется чаще других и при небольших количествах групп и источников, может работать в любой сети.

BIDIR-PIM используется для оптимизации работы сетей, в которых используются приложения с моделью взаимодействия many-to-many. По сравнению с работой PIM-SM, в BIDIR-PIM эти приложения намного меньше влияют на сеть даже при большом количестве групп и источников.

PIM-SSM используется в сетях, где поддерживается IGMPv3, так как именно в этой версии IGMP клиент может указать рассылку от какого источника он желает (или не желает) получать.

[править] PIM-DM

PIM-DM.gif

В PIM-DM информация об источнике и группе распространяется по всему домену мультикаст. Выполняется это с помощью процедуры флудинга. Распространение информации об источнике и группе происходит независимо от того, есть ли в данный момент клиенты, которые хотят получать данные этой группы.

Так как информация передается всем маршрутизаторам, то каждый маршрутизатор знает о существующих группах и источниках. И следовательно, когда появляется клиент, которых хочет получать трафик определенной группы, любой маршрутизатор в мультикаст домене знает где находится источник, который передает данные этой группы, и строит SPT-дерево к источнику.

Как правило, в реальной жизни, этот вариант PIM редко используется.


Основная страница: PIM-DM

[править] PIM-SM

PIM-SM.gif

В PIM-SM информация не флудится по всему домену, как в PIM-DM. В PIM-SM маршрутизаторы добавляются в дерево передачи мультикаст трафика, только если они явно отправляют PIM Join. То есть, явно сообщают о том, что они хотят получать трафик определенной группы. Это происходит, когда у маршрутизатора есть непосредственно присоединенные клиенты, которые хотят получать трафик (отправили IGMP Join), или когда он получил PIM Join от нижестоящего маршрутизатора.

Для координации работы в домене PIM-SM, одному из маршрутизаторов назначается роль rendezvous point (RP). RP знает обо всех парах (источник, группа) в домене. А все остальные маршрутизаторы обязательно должны знать, IP-адрес RP.

Когда появляется новый источник мультикаст, маршрутизатор, который непосредственно присоединен к источнику, регистрирует источник на RP. Таким образом RP узнает об источнике и о том, на какой адрес группы источник передает трафик, то есть о паре (S, G).

Когда маршрутизаторы получают запросы от клиентов, на присоединение к группе, то они отправляют запрос "вверх" к RP. То есть, строят shared дерево с вершиной в RP (shared потому что RP будет вершиной для всех групп). Так как RP знает об источнике, то от RP до источника строится дерево SPT, с вершиной в источнике. RP соединяет эти два дерева.


Основная страница: PIM-SM

[править] Bidirectional PIM

Bidirectional PIM (BIDIR-PIM) создан для оптимизации работы PIM в сетях, где модель взаимодействия many-to-many. То есть, в таких сетях, где получатели и источники это одни и те же устройства.

По сути, BIDIR-PIM использует как основу PIM-SM, но с некоторыми изменениями.

BIDIR-PIM использует только RPT-деревья (shared tree). И, вместо проверки RPF, использует понятие Designated Forwarder (DF). А деревья, которые BIDIR-PIM строит к RP, теперь двунаправленные.

Основная страница: BIDIR-PIM

[править] Формат сообщений PIM

Основная страница: PIM/Формат пакетов

[править] Общие возможности различных режимов PIM

Несмотря на то, что разные варианты работы PIM (а можно сказать и разные протоколы из семейства PIM), работают по-разному, у них есть базовые общие принципы работы.

[править] Отношения соседства

Все протоколы из семейства протоколов PIM, устанавливают отношения соседства с помощью сообщений Hello.

Сообщения Hello по умолчанию отправляются каждые 30 секунд на адрес 224.0.0.13 (All-PIM-Routers).

Кроме обнаружения соседей, с помощью сообщений Hello, отслеживается состояние соседей.

Для работы PIM это очень важно, так как отправка трафика, отправка служебных сообщений, проверка RPF, возможно только на тех интерфейсах где обнаружены соседи PIM.

[править] Сообщения Assert и выбор Forwarder

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

Когда маршрутизатор получает на исходящем интерфейсе с множественным доступом пакет multicast, он начинает отправлять сообщение Assert в сегмент. В сообщении передается информация об источнике и группе, метрике маршрута к источнику и administrative distance, которая соответствует маршруту к источнику.

Маршрутизатор, который будет отправлять трафик в сеть, определяется на основании сообщений Assert таким образом:

  • Маршрутизатор который анонсирует наименьшую AD протокола маршрутизации, который использовался для получения маршрута к источнику.
  • Если AD совпадает, то выигрывает маршрутизатор который анонсирует наименьшую метрику для маршрута, который ведет к источнику.
  • Если метрика совпадает, то выигрывает маршрутизатор с наибольшим IP-адресом в этой локальной сети.

Маршрутизатор, который был выбран, называется Forwarder.

После выборов Forwarder продолжает отправлять multicast трафик в сеть. Другие маршрутизаторы, которые участвовали в выборах, исключают интерфейс ведущий в сегмент с множественным доступом из списка исходящих интерфейсов.

[править] Изменения unicast таблицы маршрутизации

Если таблица маршрутизации изменилась и путь к источнику multicast трафика новый, то PIM-DM тоже должен внести изменения.

Когда изменяется RPF-маршрутизатор, PIM-DM сначала отправляет сообщение Prune прежнему RPF-маршрутизатору. Затем сообщение Graft отправляется новому RPF-маршрутизатору для того чтобы построить новое дерево.

[править] PIM в Cisco

Основная страница: PIM в Cisco
Основная страница: Multicast в Cisco

[править] Multicast в ProCurve

Основная страница: Multicast в ProCurve

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

Источник — «http://xgu.ru/wiki/PIM»