Маршрутизация для групп ЭВМ
Как уже упоминалось выше, достаточно часто возникает ситуация, когда нужно послать через сеть одно и то же сообщение или даже поток данных совокупности ЭВМ, обычно называемой группой. Наиболее массовым приложением этого типа является пересылка мультимедийных данных (IP-телефония, IP-радио, видеоконференции или просто видеофильмы, как это делается вечерами в общежитиях Московского Физтеха).
Группы могут быть постоянными, которые используют специальные выделенные мультикаст-адреса, или временными, формируемыми динамически по желанию участников. В последнем случае каждая ЭВМ сама должна отслеживать, в каких группах она участвует. Для маршрутизации мультикастинга применяются специальные маршрутизаторы, которые не обязательно совпадают с традиционными. Примерно один раз в минуту каждый такой маршрутизатор посылает по мультикастному МАС-адресу (IP-адрес равен 224.0.0.1) запрос о наличии процессов, входящих в какую-либо группу. ЭВМ, которая содержит мультикастный процесс, должна откликнуться, сообщив код группы этого процесса (или процессов). Эта информация далее пересылается маршрутизаторам-соседям. Такие запросы и отклики следуют протоколу IGMP (Internet Group Management Protocol для IPv4) или соответствующей опции ICMP (в случае IPv6). Для маршрутизации мультикастинг-сообщений используется алгоритм типа дерево связей (STP). При этом реализуются различные усовершенствования, способствующие исключению из этого дерева узлов, которые не содержат клиентов соответствующих групп. Для этих целей активно применяется техника туннелей.
Когда процесс посылает мультикастный пакет группе, первый маршрутизатор просматривает свое дерево маршрутного графа и удаляет из него все ребра, которые не ведут к ЭВМ членам группы. Таким образом строятся графы-деревья для каждой из существующих групп. Если маршрутизатор поддерживает маршрутизацию, учитывающую состояния каналов, то дерево может быть построено, например, согласно алгоритму Дикстры, описанному выше в разделе о протоколе OSPF.
В случае маршрутного алгоритма, использующего вектор расстояния, можно применить схему переадресации по пути возврата (reverse path forwarding). Когда маршрутизатор, в зоне которого нет ЭВМ, принадлежащих к группе, получает мультикастное сообщение, он откликается посылкой сообщения PRUN (отсечение) — это уведомление для отправителя, чтобы он более не посылал сюда таких сообщений. Недостатком такого алгоритма является то, что он плохо адаптируется для больших сетей. Предположим, что в сети имеется m групп, каждая из которых содержит n членов. Тогда для каждой группы нужно запоминать n деревьев (всего n*m деревьев). При больших значениях m и n в данной схеме требуется чрезмерно большой объем оперативной памяти.
Альтернативой может служить алгоритм деревьев, базирующихся на ядре группы (corebased trees). В этой версии корень дерева размещается примерно в центре мультикаст-группы. При посылке мультикаст-сообщения оно сначала попадет в корневой маршрутизатор и только затем рассылается вдоль дерева. Дерево в этом случае не является оптимальным, но экономится большой объем памяти, так как вместо n деревьев надо хранить в памяти только одно.
Учитывая то, что мультимедиа является одним из генеральных направлений развития Интернет, следует ожидать разработки новых подходов для транспортировки мультимедийных данных.
9.1. Протокол мультикастинг-маршрутизации PIM
Протокол PIM (Protocol Independent Multicast) призван решить проблемы маршрутизации для произвольного числа и расположения членов группы и для произвольного числа отправителей информации.
Главным преимуществом данного протокола является эффективная поддержка работы рассеянных мультикастинг-групп. Такие группы могут включать членов не только из разных автономных систем, но и находящихся на разных континентах. Протоколы маршрутизации MOSPF и DVMRP хороши для сетей, где нет ограничений по пропускной способности каналов.
PIM базируется на традиционных маршрутных протоколах, конкретно не связан ни с каким из них, но использует сформированные этими протоколами маршрутные таблицы. Существует два режима работы протокола: DM (для компактных групп) и SM (Protocol Independent MulticastSparse Mode (PIMSM)). (Protocol Specification. D. Estrin, D. Farinacci, A. Helmy, D. Thaler, S. Deering, M. Handley, V. Jacobson, C. Liu, P. Sharma, L. Wei, RFC-2117, June 1997) (для рассеянных групп). В режиме DM протокол PIM строит дерево маршрутов аналогично DVMRP.
В режиме SM маршрутизаторы, имеющие члены — мультикастинг-группы, посылают сообщения о присоединении к дереву рассылки в узлы, которые называются точками встречи ( RP — Rendezvous Point). Отправители используют RP для объявления о своем существовании, а получатели — чтобы узнать о новых отправителях. В качестве RP может применяться любой маршрутизатор, поддерживающий протокол PIM.
Когда какой-то клиент хочет подключиться к некоторой группе, ближайший к нему маршрутизатор посылает специальное сообщение о включении в группу (PIM-joint) узлу, объявленному для данной группы точкой встречи (RP). Число RP в сети может быть произвольным. Узел RP пересылает сообщение о включении узлу-отправителю (или отправителям). Если маршрутизатор не имеет информации о RP, включается схема, работающая для компактных групп. При обработке сообщения о включении в группу промежуточные маршрутизаторы формируют часть дерева мультикастинг-маршрутов между RP и получателем. При отправке мультикастинг-пакета соответствующий маршрутизатор посылает узлу RP регистрационное сообщение (PIM-register), куда вкладывается информационный пакет. Если используется несколько RP, отправитель должен посылать пакеты всем RP. Получатель же должен быть подключен лишь к одному из RP. В случае, когда сообщение о включении достигнет отправителя раньше, чем RP, подключение осуществляется, минуя RP. Если необходимо оптимизировать дерево доставки пакетов, маршрутизаторы-получатели должны послать сообщение о включении самому отправителю. После этого дерево соединений видоизменяется. Некоторыми узлами, если требуется, посылается сообщение об отключении. Ниже приведен пример взаимодействия узлов при формировании дерева маршрутов в режиме SM-PIM (рис. 9.1).
Следует заметить, что большинство протоколов маршрутизации мультимедийной информации формируют маршрут не от отправителя к получателю (как это делается обычно в Интернет), а в обратном направлении.
Это имеет под собой веские причины. Дерево рассылки должно быть построено так, чтобы поток отправителя как можно дольше не разветвлялся. Желательно, чтобы разветвления происходили как можно ближе к получателю. Это соображение проиллюстрировано на рис. 9.2. На рисунке условно, в виде сетки маршрутизаторов показан фрагмент сети Интернет. Прямоугольником отмечен передатчик, а в нижней части кружочками приемники – члены группы. Маршруты от передатчика к приемникам можно проложить индивидуально (выделены жирными линиями), а можно и "коллективно". От передатчика до маршрутизатора следует один поток для всех приемников. Такое решение приводит к минимизации сетевой загрузки, ведь всем приемникам посылаются одни и те же пакеты. Чем позже их пути разойдутся, тем лучше. Именно этот алгоритм и реализует протокол PIM. Точки разветвления потоков на рис. 9.2 отмечены крестами (RP).
Получатель посылает PIM-joint пакет в RP, устанавливая канал от RP до получателя. Из рисунка видно, что исходный маршрут D-C-B-A длиннее оптимального D-B-A. Последний может быть реализован после посылки PIM-joint команды от A к D.
При решении транспортных задач в мультимедиа чаще используется протокол UDP (малая избыточность и отсутствие подтверждений).
Ниже приводится более подробное, хотя и неполное описание протокола PIM.
Маршрутизатор получает сообщения Join/Prune от соседних маршрутизаторов, которые обслуживают группы пользователей. Он переадресует информационные пакеты, адресованные группе G, только через те интерфейсы, через которые ранее было получено сообщение Join.
Специальный маршрутизатор DR (Designated Router) рассылает периодически сообщения Join/Prune в точки встречи (RP) для каждой группы, где имеются активные участники. Для описания дерева маршрута используются маршрутные записи, содержащие адрес отправителя, групповой адрес, номер входного интерфейса, через который принимаются пакеты, список интерфейсов, через которые осуществляется рассылка, таймеры, флаги и пр. Выходные интерфейсы указывают на соседние маршрутизаторы, через которые пролегает путь к RP. В центре этого маршрутного дерева, включающего в себя всех членов группы, находится RP. Когда источник информации посылает что-то группе в первый раз, его DR отправляет уникастное сообщение Register маршрутизатору RP.
Чтобы присоединиться к мультикастинг-группе G, ЭВМ передает IGMP-сообщение (или ICMP в случае Ipv6). При этом предполагается, что ЭВМ будет выполнять функции получателя (R).
Когда DR получает уведомление о членстве новой группы, он просматривает соответствующие RP. DR формирует запись мультикастинг-маршрута для группы (*,G) [Wild card — мультикастная запись для группы G, определяющая ее состояние]. Адрес RP включается в специальное поле маршрутной записи, содержащейся в периодически рассылаемых сообщениях Join/Prune (см. рис. 9.1). При этом в список выходных интерфейсов включается тот, к которому подключен новый член группы, а в качестве входного интерфейса указывается тот, через который посылаются уникастные пакеты к RP.
Когда не остается ни одного непосредственно подключенного члена группы, протокол IGMP уведомляет об этом DR. Если DR не имеет ни локальных, ни удаленных получателей, запись (*,G) ликвидируется.