Протокол DVMRP

Дистанционно-векторный протокол маршрутизации группового вещания (Distance Vector Multicast Routing Protocol, DVMRP), описанный в спецификации RFC 1075, может быть характеризован с самых общих позиций следующим образом:

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

Протокол DVMRT был одним из первых протоколов продвижения группового трафика в исследовательской сети МВопе. Групповая маршрутизация в ранней версии МВопе была, в сущности, управляемой формой широковещания, когда пришедший пакет с групповым адресом передавался через все интерфейсы, кроме входного. Для борьбы с зацикливанием пакетов с групповыми адресами маршрутизаторы запоминали факт продвижения данного пакета и при его поступлении в следующий раз просто отбрасывали. Для сокращения бесполезного трафика в сети применялся протокол IGMP. С помощью этого протокола маршрутизаторы выясняли, имеются ли в непосредственно подключенных к нему сетях конечные узлы, принадлежащие к определенной группе, или нет. В том случае, когда маршрутизатор определял, что к некоторому интерфейсу подключена сеть, в которой нет членов группы, являющихся получателями группового пакета, он не передавал копию этого пакета чрез данный выходной интерфейс.

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

Рис. 1 Управляемое широковещание

Чтобы модернизировать протокол DVMPR, понадобилось несколько лет дополнительных усилий.

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

Такие пути образуют дерево с вершиной в источнике, соединяющее кратчайшими путями все маршрутизаторы, к которым непосредственно подключены локальные сети, содержащие получателей данной группы, с маршрутизатором, к которому непосредственно подсоединена сеть, содержащая источник. Дерево для источника S и членов показанной на рисунке группы образуется оставшимися (незачеркнутыми) путями.

Дальнейший прогресс в области алгоритмов маршрутизации для группового вещания был связан с разработкой алгоритма плотного режима, получившего название широковещание и усечение (broadcast-and-prune). Этот алгоритм рассчитан на то, что сети плотно «населены» членами различных групп, поэтому ситуация, когда в какой-либо подсети члены группы отсутствуют, считается редкой и отрабатывается особо. В этом «особом» случае маршрутизатор, обнаруживший подсеть, не содержащую членов группы, оповещает об этом другие маршрутизаторы и инициирует процедуру усечения избыточных маршрутов.

Результирующее дерево называется деревом реверсивного кратчайшего пути. Для его построения необходимо выполнить следующие действия:

1. Источник отправляет пакет по своей локальной сети с групповым адресом. Присоединенный к локальной сети маршрутизатор получает пакеты и отправляет их на все выходные интерфейсы.

2. Каждый маршрутизатор, который получает пакеты, выполняет RPF-проверку. Маршрутизатор принимает пакеты по некоторому интерфейсу только в том случае, если считает, что через него проходит самый эффективный обратный путь к источнику. Все пакеты, принимаемые с «правильного» интерфейса, продвигаются на все выходные интерфейсы. Все остальные просто отбрасываются.

3. В конце концов пакет достигает тупикового маршрутизатора (лист на графе маршрутизаторов) с некоторым количеством присоединенных хостов. Такой маршрутизатор должен проверить, имеются ли в какой-либо из присоединенных к нему сетей члены группы, адрес которой указан в данном пакете. Для этого маршрутизатор периодически рассылает IGMP-запросы. Если члены группы присутствуют, то маршрутизатор распространяет пакет по локальной сети, а сообщение об усечении (prune) не посылает. Если же у маршрутизатора-листа нет получателей для группы, то он посылает сообщение об усечении по направлению к источнику через интерфейс RPF, то есть через интерфейс, который маршрутизатор-лист должен использовать для продвижения пакетов к данному источнику.

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

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

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

Этот недостаток и стал толчком к разработке нового класса протоколов, названных протоколами разряженного режима. Вместо ориентации на существование большого количества членов группы, протоколы разряженного режима подразумевают наличие их в небольшом количестве, причем рассеянном по сети, как это часто и бывает в действительности. Мы рассмотрим два протокола «разряженного» режима — MOSPF и PIM-SM.