Протокол-независимая многоадресная рассылка ( PIM ) — это семейство протоколов многоадресной маршрутизации для сетей IP , которые обеспечивают распределение данных по принципу «один ко многим» и «многие ко многим» по локальной сети , глобальной сети или Интернету . Он называется протокол-независимым, поскольку PIM не включает в себя собственный механизм обнаружения топологии , а вместо этого использует информацию о маршрутизации, предоставляемую другими протоколами маршрутизации . PIM не зависит от конкретного протокола одноадресной маршрутизации; он может использовать любой протокол одноадресной маршрутизации, используемый в сети. PIM не создает собственные таблицы маршрутизации . PIM использует таблицу одноадресной маршрутизации для пересылки по обратному пути . [1] : 56–57
Существует четыре варианта PIM:
PIM-SM обычно используется в системах IPTV для маршрутизации многоадресных потоков между VLAN , подсетями или локальными сетями. [5]
Существует две версии PIM. Версии напрямую несовместимы, хотя могут сосуществовать в одной сети. Сетевое оборудование может реализовывать обе версии. PIMv2 имеет следующие улучшения по сравнению с PIMv1: используется один RP для каждой группы. Обнаружение RP выполняется маршрутизатором Bootstrap Router (BSR). Группы могут быть либо разреженными, либо плотными; Интерфейсы могут быть либо теми, либо другими. Общие улучшения гибкости и эффективности протокола. [1] : 59
Независимая от протокола многоадресная рассылка - разреженный режим ( PIM-SM ) - это протокол для эффективной маршрутизации пакетов Интернет-протокола (IP) в многоадресные группы, которые могут охватывать глобальные и междоменные интернеты. Протокол называется протоколонезависимым, потому что он не зависит от какого-либо конкретного протокола одноадресной маршрутизации для обнаружения топологии, а разреженным - потому что он подходит для групп, где очень низкий процент узлов (и их маршрутизаторов ) будет подписываться на многоадресную сессию. В отличие от более ранних протоколов многоадресной маршрутизации с плотным режимом, таких как DVMRP и плотная многоадресная маршрутизация, которые пересылали пакеты по сети, а затем отсекали ветви, где не было получателей, PIM-SM явно строит дерево от каждого отправителя к получателям в многоадресной группе. [6]
Маршрутизатор получает явные сообщения Join/Prune от тех соседних маршрутизаторов, у которых есть члены нижестоящей группы.
После того, как другие маршрутизаторы, которым необходимо получать эти групповые пакеты, подпишутся, RP отпишется от этой многоадресной группы, если только ему также не нужно будет пересылать пакеты на другой маршрутизатор или узел. Кроме того, маршрутизаторы будут использовать пересылку по обратному пути , чтобы гарантировать отсутствие петель для пересылки пакетов среди маршрутизаторов, которые хотят получать многоадресные пакеты.
Dense mode multicast — один из режимов, который multicast может использовать для построения дерева для отправки пакетов подписчикам multicast. Это альтернатива разреженному режиму.
Основное предположение, лежащее в основе плотного режима, заключается в том, что поток многоадресных пакетов имеет приемников в большинстве мест. Разреженный режим предполагает относительно меньшее количество приемников. Плотный режим идеально подходит для групп, где многие узлы подписываются на получение многоадресных пакетов, так что большинство маршрутизаторов должны получать и пересылать эти пакеты (группы высокой плотности).
Это различие проявляется в начальном поведении и механизмах двух протоколов. Dense Mode использует довольно простой подход к обработке маршрутизации многоадресной IP-рассылки . Источник изначально осуществляет широковещательную рассылку на каждый маршрутизатор , напрямую подключенный к нему. Эти соседние маршрутизаторы далее пересылают данные своим соседям. Когда маршрутизатор не желает получать данные этой группы (если нет других соседних маршрутизаторов PIM и ни один хост не заинтересован в группе), он отправляет сообщение Prune, чтобы указать на отсутствие интереса. Получив сообщение Prune, маршрутизатор изменит свое состояние так, чтобы он не пересылал эти пакеты из этого интерфейса . Если каждый интерфейс на маршрутизаторе будет очищен, маршрутизатор также будет очищен. [6]
В более старых версиях Cisco IOS PIM-DM перенаправлял весь многоадресный трафик каждые 3 минуты. Это нормально для многоадресной рассылки с небольшим объемом, но не для многоадресных потоков пакетов с более высокой пропускной способностью. Более поздние версии Cisco IOS поддерживают новую функцию, называемую PIM Dense Mode State Refresh, начиная с 12.1(5)T. Эта функция использует сообщения обновления состояния PIM для обновления состояния Prune на исходящих интерфейсах. Еще одним преимуществом является более быстрое распознавание изменений топологии. По умолчанию сообщения обновления состояния PIM отправляются каждые 60 секунд.
Кроме того, маршрутизаторы будут использовать пересылку по обратному пути , чтобы гарантировать отсутствие петель для пересылки пакетов между маршрутизаторами, желающими получать многоадресные пакеты. Когда пакет данных получен на не-RPF интерфейсе, требуется механизм для предотвращения петель. Если не-RPF интерфейс является LAN, отправляется сообщение Assert. Затем маршрутизаторы Non-Forwarder отправляют Prune на свой RPF интерфейс, если им не нужен многоадресный поток. Отправляется только один такой Prune во время перехода к отсутствию интерфейсов в списке исходящих интерфейсов (OILIST). Приемник Prune LAN задерживает его действие на 3 секунды, так что если другому маршрутизатору LAN все еще нужен многоадресный поток, он может отправить сообщение PIM Join, чтобы противодействовать (отменить) Prune. («Этому маршрутизатору это не нужно, но мне все еще нужно!»)
Предположим, что маршрутизатор Pruned, и некоторое время спустя получатель запрашивает многоадресный поток с сообщением IGMP. Затем маршрутизатор отправляет сообщение Graft. По сути, «эй, мне нужен этот многоадресный поток здесь сейчас».