logo search
СиСПК (ВАСИН)-лекции

9.2. Протоколы вектора расстояния и состояния канала

Протоколы distance-vector рассылают обновления маршрутной информации или модификации (updates) периодически через определенный промежуток времени. При этом обновляются таблицы маршрутизации, которые и хранят всю информацию о маршрутах в сети. При изменении в сети маршрутизатор, обнаруживший такое изменение сразу начинает обмен маршрутной информацией с соседними маршрутизаторами, но этот обмен идет последовательно от маршрутизатора к маршрутизатору с некоторой задержкой, определяемой специальным таймером. Поэтому сходимость (конвергенция) сети, когда все маршрутизаторы будут иметь согласованную информацию о сетевых соединениях, происходит медленно, что является главным недостатком протоколов вектора расстояния.

Протоколы состояния соединения или канала (Link-state) быстро реагируют на изменения в сети, рассылая модификации при изменениях в сетевой топологии, всем маршрутизаторам в пределах некоторой области сети. Протоколы Link-state создают таблицы маршрутизации на основе информации, хранящейся в специальной базе данных (link-state database). В базе данных хранятся пути к адресату назначения, из которых выбирается первый кратчайший (shortest path first), который и помещается в таблицу маршрутизации. Если первый путь становится недоступным, то из базы данных очень быстро может быть выбран другой.

Когда происходят изменения в маршрутах или каналах (пропадают ранее существовавшие или появляются новые), маршрутизатор, первым заметивший изменение в сети, создает извещение о состоянии этого соединения (link-state advertisement - LSA). Сообщение LSA затем передается всем соседним маршрутизаторам. Каждый маршрутизатор, получив копию LSA, модифицирует свою базу данных и транслирует LSA всем соседним устройствам. Такое волновое распространение пакетов (flooding), когда каждое сетевое устройство пересылает пакеты LSA всем своим соседям, гарантирует, что все устройства маршрутизации создадут базы данных, которые точно и согласованно отражают сетевую топологию перед модификацией таблиц маршрутизации.

Наиболее известным в сети Internet протоколом типа distance-vector является Routing Information Protocol (RIP), который использует в качестве метрики число переходов hop count на пути к адресату назначения.

Другим типичным протоколом вектора расстояния является Interior Gateway Routing Protocol (IGRP), который был разработан в корпорации Cisco. Для работы в больших сложных сетях на смену ему пришел протокол Enhanced IGRP (EIGRP), который включает много особенностей протоколов как типа link-state, так и distance-vector. Поэтому он был назван гибридным протоколом (hybrid). Однако его относят к протоколам distance-vector, поскольку обмен маршрутной информацией происходит между соседними маршрутизаторами.

Протокол вектора расстояния RIP Version 1 (RIPv1), или просто RIP, использует счетчик переходов (hop count) в качестве метрики, чтобы определить направление и расстояние до определенного соединения в составной сети. Если существует несколько путей, то RIP выберет путь с наименьшим числом маршрутизаторов или переходов (hops) к адресату назначения. Однако выбранный маршрут не всегда является лучшим путем к адресату, поскольку выбранный маршрут с наименьшим числом устройств может характеризоваться меньшей скоростью передачи по сравнению с альтернативными маршрутами. Кроме того, RIP не может направлять пакеты далее 15 переходов (15 hops), поэтому рекомендован для работы в малых и средних сетях. Протокол RIPv1 требует, чтобы все устройства в сети использовали одинаковую маску подсети, поскольку RIP не включает информацию о маске подсети в модификацию (update) маршрутизации. Такой метод получил название маршрутизации на основе классов (classful routing).

Протокол вектора расстояния RIP Version 2 (RIPv2) обеспечивает маршрутизацию на основе префикса CIDR (см. Лекцию 7), поскольку в модификацию маршрутизации включена информация о маске подсети (о префиксе). Такой метод получил название бесклассовой маршрутизации (classless routing). При этом внутри одной сети могут существовать подсети с масками переменной длины (variable-length subnet masking - VLSM).

Маски переменной длины могут также использоваться протоколом вектора расстояния IGRP. Однако IGRP является протоколом маршрутизации на основе классов (classful routing), т.е. не обеспечивает маршрутизацию на основе префикса. Протокол IGRP может выбирать скорейший путь к адресату на основе полосы пропускания канала, задержки, загрузки и надежности. Максимальное значение hop count протокола IGRP равно 255 вместо 15 протокола RIP.

Протокол EIGRP является расширенной версией протокола IGRP. Он обеспечивает быструю сходимость и малое количество служебной информации, передаваемой в обновлениях, что экономит полосу пропускания. EIGRP является расширенной версией протоколов distance-vector и использует ряд функций протоколов link-state. Протоколы EIGRP и IGRP работают с оборудованием CISCO и не всегда поддерживаются программным обеспечением аппаратуры других фирм.

Наиболее известными в сети Internet протоколами типа Link-state являются протокол Open Shortest Path First (OSPF), а также протокол Intermediate System-to-Intermediate System (IS-IS).

OSPF является маршрутизирующим протоколом состояния канала link-state, разработанным фирмой Engineering Task Force (IETF). Он предназначен для работы в больших гибких составных сетях. Он может работать с оборудованием разных фирм производителей, поэтому получил широкое распространение.

Протокол граничного шлюза (Border Gateway Protocol - BGP) относится к внешним протоколам External Gateway Protocol (EGP). Протокол обеспечивает обмен маршрутизирующей информацией между автономными системами, гарантирует выбор пути, свободный от маршрутных петель (loop-free). Протокол BGP используется основными сетевыми компаниями, в том числе провайдерами Интернет. Протокол BGP принимает решение о выборе маршрута на основе сетевой политики.

9.3. Протокол RIP

Протокол RIP для своей работы использует алгоритм Беллмана-Форда. Пример функционирования алгоритма в сети из четырех последовательно соединенных маршрутизаторов приведен на рис.9.3, где Сеть 1 непосредственно присоединена к маршрутизатору А.

Рис.9.3. Сеть из последовательно соединенных маршрутизаторов

Согласно алгоритма Беллмана-Форда маршрутизатор В получает информацию о пути в Сеть 1 от маршрутизатора А, добавляет 1 к значению вектора расстояния, т.е. увеличивает метрику (hop count) до единицы и посылает копию таблицы маршрутизации маршрутизатору С. В свою очередь маршрутизатор С повышает значение метрики до 2 и обменивается маршрутной информацией с маршрутизатором D, который увеличивает значение метрики до 3. То есть, результирующий вектор или расстояние в сети поэтапно увеличивается.

Эта особенность алгоритма может приводить к появлению маршрутных петель в случае медленной конвергенции после изменений в сети, например, рис.9.4. Предположим, что до изменений наилучшим путем к Сети 1 для маршрутизатора D был путь через маршрутизаторы С и В.

Рис.9.4. Образование маршрутных петель в сети

Метрика пути из маршрутизатора D в сеть 1 была равна 3 переходам. Если, например, вышла из строя Сеть 1 (рис.9.4), то начинается обновление маршрутной информации. При этом может возникнуть маршрутная петля:

  1. Маршрутизатор А посылает сообщение об изменении маршрутов маршрутизатору В и он прекращает передачу пакетов в Сеть 1. Однако маршрутизаторы С, Е и D, еще не получившие обновления, продолжают передачу.

  2. Когда маршрутизатор В отправляет обновления маршрутизаторам С и Е, они прекращают отправлять пакеты в Сеть 1, но маршрутизатор D – продолжает. Он пока считает, что имеется путь в Сеть 1 через маршрутизатор С и метрика равна 3 переходам.

  3. Если маршрутизатор D отправит обновление маршрутизатору Е, то в нем он укажет, что есть альтернативный маршрут в Сеть 1 через маршрутизатор С, но метрика равна 4 переходам.

  4. Маршрутизатор Е обновит свою таблицу маршрутизации и перешлет обновление маршрутизатору В с метрикой в 5 переходов, и так далее по кольцу.

  5. В этом случае любой пакет, предназначенный Сети 1 будет передаваться по кольцу (по петле) от маршрутизатора D к маршрутизатору С, затем к В, Е и снова D.