Опубликован: 28.09.2007 | Уровень: специалист | Доступ: платный
Лекция 9:

Маршрутизация для групп ЭВМ

Запись (*,G), инициирует формирование маршрутизатором DR сообщения Join/Prune с RP-адресом в его join-списке и установленными битами WC и RPT. Равенство WC =1 говорит о том, что согласно этой записи будут пересылаться пакеты любого отправителя. Список удаления (prune) остается пустым. Когда бит RPT=1, это указывает на то, что подключение осуществлено через общее RP-дерево и, следовательно, сообщение Join/Prune будет идти по этому RP-дереву. Когда бит WC= 1, это означает, что адрес принадлежит RP, а получатели предполагают получать пакеты от всех отправителей (см. http://book.itep.ru/4/44/pim_4495.htm).

Каждый маршрутизатор, расположенный по пути к отправителю, создает и отслеживает изменения маршрутной записи для (*,G), когда он получает сообщения Join/Prune с RPT=WC=1. Интерфейс, через который получено сообщение Join/Prune, добавляется к списку выходных интерфейсов (oif) для (*,G). На основе этой записи каждый маршрутизатор по пути между получателем и RP посылает сообщение Join/Prune, в котором RP включен в список join. Поле данных этого пакета содержит мультикаст-адрес=G, Join=RP, WC-бит, RPT-бит, Prune=NULL.

Когда ЭВМ начинает посылать мультикастинг-пакеты группе, сначала DR должен доставить их в RP для последующей раздачи по дереву. DR отправителя в начале инкапсулирует каждый информационный пакет в сообщение Register и отправляет его по уникастному адресу RP данной группы. RP извлекает каждое сообщение Register и переадресует вложенные информационные пакеты вдоль RP-дерева.

Если поток данных позволяет использовать дерево кратчайшего пути до отправителя (SPT — Shortest Pass Tree), RP может сформировать новую маршрутную запись для дерева мультикаст-маршрута, специфичного для данного отправителя (SP-дерево).

DR отправителя прекратит инкапсуляцию информации в пакеты Register, когда он получит сообщение RegisterStop от RP. RP отправляет сообщения RegisterStop в качестве отклика на сообщение Register, если RP не имеет более активных членов группы.

Новый приемник может подключиться к существующему RP-дереву, для которого установлено состояние обрезания (например, из-за того, что другие получатели переключились на SP-деревья). В этом случае состояние обрезания аннулируется, чтобы обеспечить доставку данных новому получателю.

В стабильном состоянии каждый маршрутизатор периодически посылает сообщения Join/Prune для каждой маршрутной записи PIM. Сообщения Join/Prune посылаются соседу, указанному в соответствующей записи. Такие сообщения позволяют отследить изменения состояния системы и топологию членства в группе.

Чтобы получить информацию о RP, все маршрутизаторы в пределах PIM-домена собирают сообщения Bootstrap. Сообщения Bootstrap пересылаются от узла к узлу в пределах домена. За организацию рассылки этих сообщений несет ответственность специальный маршрутизатор BSR (bootstrap router). Сообщения Bootstrap используются для выполнения динамического выбора BSR, когда это необходимо, а также для получения информации об RP. Домен в этом контексте представляет собой набор смежных маршрутизаторов, поддерживающих PIM, и сконфигурированных для совместной работы в рамках границ, определенных пограничными маршрутизаторами PMBR (PIM Multicast Border Router), которые соединяют PIM-домен с остальным Интернет.

Маршрутизаторы применяют набор доступных RP (называемый {RPSet}), чтобы осуществить связь отдельных групп с RP. Некоторое число маршрутизаторов в домене конфигурируется как кандидаты для выполнения функций BSR. Для назначения BSR в домене существуют простые правила выбора. Часть маршрутизаторов в домене конфигурируются так же, как кандидаты для работы в качестве RP (C-RP); как правило, это те же маршрутизаторы, что и кандидаты в BSR. Кандидат в RP периодически посылает всем BSR домена уникастное сообщение CandidateRPAdvertisement (CRPAdvs). C-RP-Advs включает в себя адрес C-RP, а также опционный групповой адрес и поле длины маски. BSR включает набор этих кандидатов в RP (набор RP), вместе с соответствующим групповым префиксом периодически рассылаемых сообщений.

Маршрутизаторы получают и запоминают содержимое сообщений Bootstrap. Когда DR получает указание о членстве в группе от IGMP, DR использует хэш-функцию для установления соответствия между групповым адресом и одним из C-RP, чей префикс включает в себя данную группу. Для конкретной группы G, хэш-функция задействует только те C-RP, чьи групповые префиксы покрывают G. Когда соответствие установлено, DR посылает сообщение Join/Prune (или уникастный пакет Register) соответствующему RP.

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

Если зона PIM-домена теряет доступ к старому BSR, выбирается новый BSR, — он разошлет RP-набор, который содержит RP, доступные в пределах данной зоны. Любая область в любой заданный момент времени обслуживается только одним BSR, который и осуществляет посылку сообщений Bootstrap.

Чтобы обеспечить совместимость с сетями, работающими в режиме DM, с протоколами типа DVMRP, все пакеты, генерируемые в области PIM-SM, должны быть переправлены мультикастным пограничным маршрутизаторам области PMBR (Multicast Border Router) и переадресованы в сеть DVMRP. Маршрутизатор PMBR размещается на границе домена PIM-SM и взаимодействует с другими типами мультикаст-маршрутизаторов, например, теми, которые поддерживают протокол DVMRP. Таким образом, PMBR должен поддерживать оба протокола. Для совместной работы все маршрутизаторы должны поддерживать специальный тип маршрутных записей, обозначаемых (*,*,RP).

Информационные пакеты соответствуют записи (*,*,RP), если нет никаких других записей, например, (S,G) или (*,G), а групповой адрес места назначения пакета согласуется с RP, указанным в записи (*,*,RP). В этом смысле запись (*,*,RP) представляет собой объединение всех групп, которые работают через данную точку встречи RP. PMBR инициализируют состояние (*,*,RP) для каждой RP в каждом доменном наборе RP. Состояние (*,*,RP) заставляет PMBR посылать сообщения (*,*,RP) Join/Prune каждой активной точке встречи в домене. В результате деревья рассылки строятся так, что передают все пакеты, возникающие в пределах PIM-домена (и ретранслируются в точки встречи) в направлении пограничных маршрутизаторов PMBR.

PMBR осуществляют также доставку внешних пакетов маршрутизаторам в пределах PIM-домена. Для решения этой задачи маршрутизаторы инкапсулируют внешние пакеты, полученные через интерфейсы DVMRP, в сообщения Register, после чего уникастным образом переадресуют их в точку встречи RP PIM-домена. Сообщение Register имеет бит, указывающий на то, что пакет сформирован пограничным маршрутизатором.

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

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

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

При наличии параллельных проходов к источнику или RP для выбора маршрута применяются сообщения Assert. Используя сообщения Assert, адресованные 224.0.0.13 (группа ALL-PIM-ROUTERS) в локальной сети, вышестоящий маршрутизатор может узнать, где осуществляется переадресация сообщений. Нижестоящие маршрутизаторы, получая сообщения Assert, узнают, какой маршрутизатор выбран в качестве ретранслятора и куда следует посылать сообщение Join. Обычно это тот же нижележащий маршрутизатор-сосед (Reverse Path Forwarding — RPF), но иногда это может быть и не так, например, когда в локальной сети используется несколько протоколов маршрутизации. RPF-сосед для конкретного отправителя или RP является следующим маршрутизатором, которому переправляются пакеты по пути к отправителю или RP. По этой причине он может рассматриваться как хорошая промежуточная инстанция для пересылки пакетов отправителем.

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

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

Сообщения Assert нужны для маршрутных записей (*,G), так как для деревьев RP и SP некоторых групп в сетях с множественным доступом могут возникать зоны перекрытия. Когда Assert посылается для записи (*,G), RPT-бит устанавливается равным 1. Первый бит поля предпочтения всегда устанавливается равным 1, чтобы отметить, что проход соответствует RP-дереву. RPT-бит всегда обнуляется для предпочтения, которое относится к записям SP-деревьев. Это приводит к тому, что проход через SP-дерево выглядит всегда предпочтительнее, чем проход через RP-дерево. Когда деревья SP и RP перекрываются для какой-то LAN, этот механизм устраняет дублирование для данной сети.

DR может уступить процесс (*,G) Assert другому маршрутизатору LAN, если существует несколько проходов к RP через LAN. В этом случае DR не является более ближайшим маршрутизатором для местных получателей, и он удаляет LAN из своего (*,G)-списка выходных интерфейсов. Маршрутизатор-победитель становится "ближайшим" и ответственным за рассылку сообщений (*,G) Join для RP.

Подавление Join/Prune может использоваться в локальных сетях с множественным доступом, чтобы сократить число дублирующих сообщений управления. Для нормальной работы протокола этого не требуется. Если получено сообщение Join/Prune, которое соответствует существующим маршрутным записям (S,G), (*,G) или (*,*,RP) для данного входного интерфейса, а содержимое поля Holdtime сообщения Join/Prune больше, чем Join/PruneHoldtime получателя, может быть запущен таймер Join/PruneSuppression маршрутной записи получателя, чтобы заблокировать последующие сообщения Join/Prune. После завершения работы таймера получатель отправляет сообщение Join/Prune и возобновляет периодическую посылку Join/Prune для данной записи. Таймер Join/PruneSuppression должен перезапускаться каждый раз, когда приходит сообщение Join/Prune с большим значением Holdtime.

Когда уникастная маршрутизация претерпевает изменения, RPF производит проверку активных маршрутных записей (S,G), (*,G) и (*,*,RP) и вносит необходимые поправки. Входной интерфейс может быть добавлен в список выходных интерфейсов с помощью последующих сообщений Join/Prune, поступающих от нижестоящих узлов. Сообщения Join/Prune, полученные текущим входным интерфейсом, игнорируются, а сообщения, полученные новыми или существующими выходными интерфейсами, обрабатываются. Остальные выходные интерфейсы останутся в прежнем состоянии до тех пор, пока не будут отключены нижележащими маршрутизаторами или по тайм-ауту из-за отсутствия соответствующих сообщений Join/Prune. Если маршрутизатор имеет запись (S,G) с установленным битом SPT, а обновленная запись iif(S,G) не отличается от iif(*,G) или iif(*,*,RP), то маршрутизатор переводит бит SPT в нулевое состояние.

Соседи-маршрутизаторы, поддерживающие протокол PIM, периодически обмениваются сообщениями Hello. Сообщения Hello могут также рассылаться мультикастным образом с использованием адреса 224.0.0.13 (группа ALL-PIM-ROUTERS). Пакет содержит значение Holdtime (время сохранения информации).

Когда маршрутизатор получает сообщение Hello, он запоминает IP-адрес соседа, устанавливает таймер отправки на время, которое соответствует Holdtime, заключенное в Hello, и определяет выделенный маршрутизатор (DR) для данного интерфейса. В качестве DR выбирается объект с наибольшим IP.

Когда маршрутизатор, который является активным DR, получает Hello от нового соседа (например, от IP-адреса, которого нет в таблице DR), DR уникастным образом передает RP-информацию новому соседу.

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

Сообщения Join/Prune служат для того, чтобы подключить или удалить ветвь мультикастинг-дерева рассылки. Сообщение содержит как join-, так и prune-списки, любой из них может иметь нулевую длину. Они также содержат все подключенные и отсоединенные источники данных, достижимые через данный узел адресат сообщения. Период отправки сообщений Join/Prune определяется значением [Join/PrunePeriod].

Маршрутизатор периодически посылает сообщения Join/Prune каждому конкретному RPF-соседу, соответствующему каждой маршрутной записи (S,G), (*,G) и (*,*,RP). Сообщения Join/Prune посылаются только тогда, когда RPF-сосед является PIM-соседом.

Кроме периодически рассылаемых сообщений некоторые из Join/Prune пакетов могут генерироваться как следствие следующих событий:

a. создана новая маршрутная запись, или

b. список выходных интерфейсов перешел из нулевого в ненулевое состояние или наоборот.

Может так случиться, что размер сообщения Join/Prune превысит MTU сети. В этом случае сообщение может быть фрагментировано, информация, относящаяся к различным группам, будет послана в разных пакетах. Однако если сообщение Join/Prune должно быть фрагментировано, полный prune-список, соответствующий группе G, должен быть включен в одно сообщение Join/Prune согласно RP-дереву Join для G. Если такая семантическая фрагментация невозможна, при транспортировке пакетов от соседа к соседу должна использоваться IP-фрагментация.

Для любой новой записи (S,G), (*,G) или (*,*,RP), сформированной входящим сообщение Join/Prune, бит SPT сбрасывается.

Если запись имеет таймер Join/PruneSuppression и полученное сообщение Join/Prune не указывает на маршрутизатор в качестве места назначения, тогда принимающий маршрутизатор просматривает join- и prune-списки, чтобы выяснить, нет ли там адресов, полностью соответствующих существующим состояниям (S,G), (*,G) или (*,*,RP), для которых принимающий маршрутизатор осуществляет рассылку сообщений Join/Prune. Элемент join- или prune-списка полностью соответствует маршрутной записи только тогда, когда их IP-адреса и RPT-флаги равны. Если приходящее сообщение Join/Prune полностью соответствует существующим записям (S,G), (*,G) или (*,*,RP), а сообщение Join/Prune приходит на входной интерфейс для данной записи, маршрутизатор сравнивает Holdtime сообщения со своим собственным значением Join/Prune-Holdtime. Если его значение Join/Prune-Holdtime меньше, запускается таймер Join/PruneSuppression. Если Join/PruneHoldtime равно Holdtime сообщения, коллизия разрешается в пользу отправителя сообщения Join/Prune, который имеет больший IP-адрес. Когда время Join/Prune таймера истекает, маршрутизатор отправляет сообщение Join/Prune для соответствующей маршрутной записи.

Когда отправитель начинает отправку данных группе, его пакеты инкапсулируются в сообщения Register и посылаются в RP. Если скорость передачи гарантируется каналом, RP устанавливает соответствующее состояние для отправителя и начинает посылать сообщения (S,G) Join/Prune отправителю с S в join-списке.

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

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова
виктор виноградов
виктор виноградов
Россия, Курская область
Евгений Миловзоров
Евгений Миловзоров
Россия, Пенза, ПГУ, 2004