Моя ХАТА

PIM

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 трафик передается по пути без петель.

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 не нужна