Автор работы: Пользователь скрыл имя, 08 Июня 2014 в 15:22, дипломная работа
Основной целью группового вещания является создание эффективного механизма передачи данных по схеме "один-ко-многим" и "многие-ко-многим". Традиционные механизмы стека TCP/IP доставки пакетов мало пригодны для поддержки группового вещания. Например, использование уникальных адресов (unicast) приводит к необходимости установления многочисленных двухточечных соединений между отправителем и каждым из получателей. Другим способом передачи данных является широковещательная передача, когда станция направляет пакеты, используя широковещательные адреса (broadcast). Пакеты с такими адресами передаются всем конечным узлам указанной сети независимо от того, нужны ли они каждому из них. Во многих ситуациях такой способ передачи также оказывается неэффективным вследствие своей избыточности, которая ведет к чрезмерному росту трафика, особенно в крупных сетях.
Алгоритмы остового дерева выглядят более привлекательными. Они требуют больше логики от групповых маршрутизаторов; но высокая эффективность и стоит дороже. Первым был применен алгоритм простого остового дерева. Он создавал одно дерево для существующей в настоящее время топологии Internet.
Если групповой маршрутизатор получал групповую датаграмму, когда дерево было уже построено, он перенаправлял ее через каждый из интерфейсов дерева связности, за исключением того, через который она поступила. Таким образом удавалось не допускать циклов, возникающих при использовании простого алгоритма лавинной адресации, и маршрутизатор не обременялся обязанностью поддержания таблиц для перенаправленных за последнее время пакетов (во избежание дублирования).
Хотя алгоритм остового дерева добавляет еще один управляющий поток данных в сети (для поддержания топологии дерева) и требует дополнительных накладных расходов на обработку в маршрутизаторе, он обеспечивает большую, по сравнению с алгоритмом лавинной адресации, эффективность. Тем не менее у этого метода есть свои недостатки: не исключено, что он предоставит не наилучшие пути до всех целевых объектов по групповому адресу и источнику. Он просто направляет групповые датаграммы через интерфейсы остового дерева, безотносительно к групповому адресу и источнику и не обращая внимания на то, есть ли адресаты в какой-либо части дерева. Другими словами, алгоритм полного остового дерева работает со всеми групповыми операциями, даже если группа пуста.
Дерево связности стало шагом вперед, но все еще было недостаточно эффективным и масштабируемым, поэтому продолжались испытания и опробования многих других групповых протоколов, но для групповой адресации использовался протокол направления по обратному пути (Reverse Path Forwarding, сокращенно RPF). Данный алгоритм формирует групповое остовое дерево. Это значит, что для каждого группового источника (узла, являющегося отправителем групповой датаграммы) строится отдельное индивидуальное Дерево между этим источником и всеми потенциальными узлами-получателями.
Когда интерфейс маршрутизатора принимает групповую датаграмму, маршрутизатор определяет, находится ли интерфейс, через который была получена датаграмма, на кратчайшем пути до источника. Если маршрутизатор убеждается, что интерфейс обеспечивает кратчайший путь назад до источника, то он направляет полученную датаграмму в каждый активный интерфейс, за исключением того, из которого поступила датаграмма. В противном случае маршрутизатор понимает, что интерфейс не предоставляет кратчайшего пути назад до источника, и отбрасывает датаграмму.
Интерфейс, заданный как кратчайший путь назад до источника, называется родительским каналом (parent link), а интерфейс, в который маршрутизатор направляет групповую датаграмму, - дочерним каналом (child link).
Маршрутизатор получает информацию, позволяющую ему определить кратчайший путь назад до источника из своих маршрутных таблиц. Если используется протокол обновления маршрутной информации типа состояние канала», такой как OSPF, то каждый маршрутизатор поддерживает маршрутную таблицу групповой и индивидуальной адресации для всей сети. При работе с протоколом типа «вектор-расстояние», таким как RIP или RIPv2, необходимо обновление маршрутов. Мы рассмотрим это подробнее при обсуждении протокола DVMRP.
RPF имеет множество преимуществ по сравнению с описанным ранее механизмом. Его просто реализовать. Групповые датаграммы направляются по нескольким каналам, так как RPF позволяет строить индивидуальные остовые деревья для каждой пары (источник, группа).
RPM был задуман как алгоритм, который применяет отсечение и наращивание. На самом деле были разработаны и другие протоколы, но RPM работает во многих алгоритмах групповой адресации, особенно в алгоритмах типа «вектор-расстояние», таких как DVMRP. RPM позволяет подрезать дерево так, чтобы групповые датаграммы приходили в те ветви и листовые сегменты, в которых есть активные участники. Алгоритм, по существу, направляет первый групповой пакет каждой пары (источник, группа) всем участвующим в процессе маршрутизаторам остового дерева (источник, группа). Протокол IGMP помогает алгоритму определить, какие сегменты содержат активные группы узлов. С помощью IGMP групповые маршрутизаторы могут выяснить членский состав групп в каждой подсети-листе. Таким образом групповой маршрутизатор узнает, есть ли в каком-либо из его сегментов активные группы узлов. Если группа узлов не активна, маршрутизатор не станет направлять групповую датаграмму через этот интерфейс - она отрезана. RPM позволяет маршрутизатору отсылать сообщение об отрезании назад через интерфейс, через который поступила групповая датаграмма (его родительский канал), что по существу дает возможность вышестоящему соседу отключить интерфейс, ведущий к этому нижестоящему маршрутизатору, т.к. нет необходимости направлять групповые датаграммы маршрутизатору, если он всего лишь собирается выкинуть их.
Сообщения об отрезании отсылаются только один раз для каждого группового пакета, для которого у маршрутизатора нет группового интерфейса. Если этот вышестоящий маршрутизатор не располагает ни одной сетью-листом для группы узлов, и интерфейсы остальных ветвей прислали обратно сообщение об отрезании, то вышестоящий маршрутизатор может также отослать сообщение об отрезании своему вышестоящему маршрутизатору (в свой родительский канал). Следующий вышестоящий маршрутизатор отключил бы свой интерфейс, ведущий к этому нижестоящему маршрутизатору.
Такое использование сообщений об отрезании создает истинную топологию остового дерева, при которой групповые датаграммы будут направляться только интерфейсам, имеющим активные групповые узлы. Как же снова вырастить ветку или создать листья? Периодически, отрезанные интерфейсы удаляются из таблицы маршрутизатора, а ветви и листья опять вырастают. Это позволяет вновь направлять групповые данные по этим ветвям, что приводит к новому потоку сообщений об отрезании для создания эффективно работающего дерева.
Такой алгоритм избавляет от многих проблем, за исключением одной - проблемы масштабирования. Он все еще не позволяет расширять сеть до тысяч или десятков тысяч маршрутизаторов с сотнями или тысячами адресуемых групп. Первый групповой пакет получают все маршрутизаторы, а после этого необходимо постоянно рассылать сообщения об отрезании для сохранения эффективности алгоритма остового дерева.
Описанные ранее алгоритмы строят деревья связности с корнем в узле-источнике. Может быть построено множество деревьев для разных источников. Узел-источник - это, в сущности, корень остового дерева, то есть дерево растет из источника. Когда источников много - немало и корней. Если осуществляется несколько групповых взаимодействий, то существует множество корней. Алгоритм СВТ создает единое дерево перенаправления, которое совместно используется всеми членами группы. Ядро этого дерева (корень) опирается на центральный маршрутизатор, а не на отправителя групповой датаграммы.
СВТ работает по принципу создания опорной сети, содержащей, по крайней мере, один центральный маршрутизатор. Групповые сообщения для группы передаются в этом направлении. Любой узел, который желает получить групповую информацию конкретной группы, передает сообщение о присоединении (Join) по направлению к центральной опорной сети. Для каждого источника должен быть задан хотя бы один IP-адрес центрального маршрутизатора. Центр состоит, по меньшей мере, из одного маршрутизатора, работающего в качестве центрального. Несколько маршрутизаторов могут выступать в качестве центральных, и в таком случае каналы, соединяющие эти центральные маршрутизаторы, становятся центральной опорной сетью.
В сети, имеющей не одну группу, допускается создание нескольких деревьев. Концепция не предполагает использования одного дерева групповой адресации всеми группами. Однако для каждой группы существует только одно дерево групповой адресации.
После выдачи сообщения о присоединении каждый промежуточный маршрутизатор запоминает интерфейс и адресуемую группу, а затем посылает сообщение по направлению к центру. Проводя подобную операцию, маршрутизатор приобретает возможность передавать групповые данные по направлению к центру для этой группы. Получив такие данные, центральные маршрутизаторы отошлют их обратно в групповом режиме через все порты, за исключением того, через который данные поступили.
Этот алгоритм способен запросто применять архитектуру, под которую были разработаны другие протоколы. Чтобы реализовать протокол, необходимо организовать функции динамического выбора центральной опорной сети и управления. Самый известный протокол, работающий с данным алгоритмом, -Protocol Independent Multicast (PIM) Sparse Mode (он обсуждается позже). У алгоритма есть и преимущества, и недостатки: поскольку каждая группа опирается на одно дерево с корнем в центре, информацией о состоянии маршрутизатора легче управлять, вследствие чего требуется меньше ресурсов на маршрутизаторе. Сведения, которые приходится передавать между маршрутизаторами для отслеживания этих состояний, также меньше в объеме, что приводит к большей эффективности использования пропускной способности линии. Тем не менее, поскольку все персональные данные и управляющие сообщения посылаются по направлению к определенному центру, перегрузка может стать неизбежной.
Distance Vector Multicast Routing Protocol, протокол групповой маршрутизации типа «вектор-расстояние».
DVMRP использует алгоритм групповой адресации по обратному пути (RPM) для динамического построения деревьев групповой доставки и определения положения маршрутизатора в дереве групповой адресации по отношению к исходящей подсети групповой датаграммы. DVMRP — это протокол групповой маршрутизации, поддерживающий концепции широковещательной ретрансляции и обрезания. С помощью алгоритма направления данных по обратному пути он определяет, следует ли направлять датаграмму нижестоящему маршрутизатору. Дерево группового направления данных создается между источником и всеми членами группы (приемниками).
Чтобы DVMRP мог работать, необходимо построить две таблицы: маршрутов индивидуальной адресации и маршрутов перенаправления.
Таблица маршрутов индивидуальной адресации позволяет выяснить, через соответствующий ли порт (вышестоящий интерфейс) получена датаграмма. С помощью таблицы перенаправления определяется, через какие интерфейсы маршрутизатор должен перенаправить групповую датаграмму (нижестоящий интерфейс).
Для построения таблицы маршрутов индивидуальной адресации DVMRP пе-редают сообщения о маршрутах каждому из объектов подсетей источников. Эта таблица обрабатывается так же, как и таблица протокола RIP: в ней вычисляется и размещается наикратчайшее расстояние до источника. Таблица перенаправления создается путем широковещательной ретрансляции первой полученной групповой датаграммы и ожидания ответных сообщений о прививании и отрезании от других маршрутизаторов, показывающих, кому нужна и кому не нужна датаграмма. Почему просто не использовать таблицу маршрутов индивидуальной адресации? Все делается для того, чтобы стало возможным направление группового потока данных по отличному от маршрута индивидуальной адресации маршруту, а также чтобы осуществить поддержку туннельного интерфейса, с которым не умеет работать поток данных индивидуальной адресации.
Маршрутизаторы, использующие протокол DVMRP, поддерживают два типа интерфейса: интерфейс маршрутизатора (router) и туннельный интерфейс (tunnel). Групповой интерфейс маршрутизатора - понятие очевидное, в отличие от туннельного интерфейса. Концепция туннелей позволяет сделать возможным существование негрупповых маршрутизаторов в сети с групповой адресацией. Групповые датаграммы инкапсулируются в IP-пакетах индивидуальной адресации (посредством вложения группового IP-пакета в IP), которые отсылаются через маршрутизаторы с индивидуальной адресацией. Последняя запись в списке – это конец туннеля, представляющего собой маршрутизатор, вновь поддерживающий групповую IP-адресацию. Последний маршрутизатор обрезает информацию индивидуальной адресации и отсылает датаграмму дальше.
DVMRP - протокол, который применяет распределенный алгоритм маршрутизации типа «вектор-расстояние» для того, чтобы каждый маршрутизатор мог определить расстояние от себя до любого источника потока данных с групповой IP-адресацией. При этом DVMRP создает деревья доставки между источником и адресуемыми источником, распределенными по сети узлами групп рассылки.
Сопоставим протокол групповой маршрутизации DVMRP и протокол определения членства узла IGMP. IGMP работает между узлами и маршрутизаторами, a DVMRP - только между маршрутизаторами.
Однако следует заметить, что в протоколе IPv4 инкапсуляция данных DVMRP выполняется с помощью протокола IP-инкапсуляции со значением 2, что обозначает IGMP. DVMRP при инкапсуляции IGMP взаимодействует с применением значения типа IP-протокола, равного 2. Это не означает, что IGMP работает между маршрутизаторами; просто посредством инкапсуляции IGMP он отсылает свои данные.
DVMRP-маршрутизатор может узнавать о соседних DVMRP-маршрутизаторах через процесс, известный как Neighbor Discovery (обнаружение соседей), при помощи зондирующего пакета (probe packet). После инициализации DVMRP-маршрутизатор отправляет эти поисковые пакеты для сообщения другим DVMRP-маршрутизаторам, что он работоспособен. Такие сообщения рассылаются периодически (каждые 10 с) по групповому адресу всех DVMRP-маршрутизаторов (All DVMRP Routers). Каждое сообщение должно содержать список соседних DVMRP-маршрутизаторов, о существовании которых в данном интерфейсе известно отправителю. Другие маршрутизаторы на других интерфейсах не включаются в этот список. Сообщения является строго локальным. Маршрутизаторы должны видеть собственные IP-адреса в сообщениях своих соседей. Зондирующие пакеты позволяют другим DVMRP-маршрутизаторам узнавать друг о друге, а также определять, когда соседний маршрутизатор прекращает существовать. Если DVMRP-маршрутизатор не получает сообщения от соседа в течение 35 с, он считает, что сосед стал неработоспособным.