Протокол RIP, OSPF, IGRP, EIGRP.


Протокол маршрутизации RIP

Первая версия протокола RIP (англ. Routing Information Protocol version 1, RIPv1) использует технологию векторов расстояний и рассылает полную таблицу маршрутизации каждые 30 секунд. Максимальный диаметр сети — 15 переходов. Полное описание RIPv1 содержится в RFC 1058.

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

При внесении в таблицу маршрутизации записи, полученной от другого маршрутизатора, с ней связывается таймер. Если за 180 секунд (шестикратный период рассылки) не будет получено повторное сообщение, содержащее этот же маршрут, запись станет недействительной.

Протокол RIP использует UDP-дейтаграммы, передаваемые через 520-й порт. Каждое сообщение протокола RIP состоит из заголовка фиксированной длины (4 байта, см. рис.1) и нескольких (от 1 до 25) записей (длиной по 20 байт, см. рис. 2), соответствующих записям таблицы маршрутизации. Первая версия протокола RIP использует только часть полей, имеющихся в заголовке и записях; все остальные биты должны быть установлены в “0”. Если размер таблицы маршрутизации превышает 25 записей, то она передается в нескольких сообщениях.

Рис. 1. Формат заголовка сообщения протокола RIPv1.

Рис. 2. Формат заголовка сообщения протокола RIPv1.

Поле Команда определяет тип операции, которую выполнит маршрутизатор, приняв это сообщение. Основные используемые значения:

«1» — запрос, «2»— ответ. Поле Версия хранит номер версии протокола RIP.

Поле Идентификатор адресной схемы указывает тип адреса (IP-адресам соответствует идентификатор «2»).

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

Поле Метрика хранит количество переходов от данного маршрутизатора до указанной сети или узла. При вычислении метрики в RIP маршрутизатор всегда учитывает самого себя, т.е. непосредственно подключенная сеть находится на расстоянии одного перехода, сеть, непосредственно подключенная к соседнему маршрутизатору — двух переходов и т.д. Администратор может вручную устанавливать большие метрики для сетей, подключенных через низкоскоростные каналы. Значение метрики, равное 16, указывает на отсутствие соединения с данной сетью (прием “poison reverse”). Вторая версия протокола RIP (описанная в RFC 1388) поддерживает маски подсети, бесклассовую маршрутизацию CIDR и групповую передачу. Форматы заголовка и записи сообщения протокола RIP версии 2 показаны на рис. 3 и 4 соответственно.

Рис. 3. Формат заголовка сообщения протокола RIPv1.

Рис. 4. Формат заголовка сообщения протокола RIPv1.

Поле Домен маршрутизации может использоваться при внешней маршрутизации. По умолчанию оно должно содержать нули.

Наиболее существенное отличие RIPv2 от RIPv1 — в наличии поля Маска подсети, позволяющего выполнять маршрутизацию не только для сетей классов A,B и C, но и для любых подсетей.

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

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

В отличие от RIPv1, не поддерживающего аутентификацию отправителя сообщения, RIPv2 допускает замену первой записи после заголовка на запись аутентификации (см. рис. 5), и в безопасном режиме игнорирует сообщения от неаутентифицированных источников.

Рис. 5. Формат записи аутентификации сообщения протокола RIPv2.

Протокол RIP хорошо подходит для использования в небольших сетях, в качестве протокола внутренней маршрутизации в автономных системах с небольшим количеством маршрутизаторов.


Протокол маршрутизации OSPF

Протокол OSPF (англ. Open Shortest Path First) использует технологию состояний связей и описан в RFC 1247 и RFC 2328.

Сообщения OSPF передаются в IP-дейтаграммах со значением «89» в поле заголовка «Протокол». Информация о состоянии каналов широковещательно рассылается каждым маршрутизатором всем своим соседям каждые 30 минут (даже в том случае, если никаких изменений с момента прошлой рассылки не было). Если топология сети изменилась, сообщения об этом рассылаются немедленно.

Протокол OSPF позволяет администратору либо задавать метрики маршрутов произвольно (исходя из собственных, часто неформализуемых соображений), либо выбирать способ вычисления сложной метрики. Метрика по умолчанию — время передачи по каналу одного бита, деленное на 10 наносекунд (10-8 c), например, для Ethernet 10 Мбит/с эта метрика равна 10 ((1/107)/10-8 = 10), для Ethernet 100 Мбит/с — 1, а для модемного канала связи с пропускной способностью 28800 бит/с — 3472.

Каждый маршрутизатор строит описание графа сети (вершины — маршрутизаторы и сети, ребра — однонаправленные связи между ними) в виде базы данных состояний связей: для каждой связи хранится ее метрика. Графы, построенные всеми маршрутизаторами, должны совпадать. По базе данных состояний связей алгоритм Дейкстры вычисляет кратчайшие пути от заданной вершины (соответствующей данному маршрутизатору) до всех остальных вершин. Результат его работы заносится в таблицу маршрутизации.

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

На рис. 6 показан заголовок сообщения протокола OSPF.

Рис. 6. Формат заголовка сообщения протокола OSPF.

Поле Версия — номер версии протокола OSPF (текущая версия — 2). Поле Тип — содержит тип сообщения из следующего перечня:

1 — проверка достижимости (англ. HELLO),

2 — описание базы данных (англ. Database description), 3 — запрос состояния связей (англ. Link state request),

4 — обновление состояния связей (англ. Link state update),

5 — подтверждение состояния (англ. Link state acknowledgement).

Поле Длина сообщения — длина сообщения (с заголовком) в байтах.

Поле IP-адрес маршрутизатора — адрес маршрутизатора, отправившего сообщение (должен быть выбран адрес одного из интерфейсов).

Поле Идентификатор области — номер области, к которой относится сообщение; обычно используется IP-адрес подсети.

Поле Контрольная сумма — вычисляется для всего сообщения (с заголовком, но без полей аутентификационных данных) по алгоритму протокола IP.

Поле Тип аутентификации:

«0» — нет аутентификации,

«1» — аутентификация по паролю.

Поле Аутентификационные данные: если аутентификация используется, то в этом поле хранится, например, пароль.


Протоколы внутренней маршрутизации IGRP и EIGRP

Протокол IGRP (англ. Interior Gateway Routing Protocol, внутренний протокол маршрутизации шлюзов) разработан фирмой Cisco Systems в начале 1980-х и использует технологию векторов расстояний. Протокол IGRP используется только в маршрутизаторах фирмы Cisco. Его принципиальные отличия от RIPv1 сводятся к следующему:

— метрика вычисляется исходя из пропускной способности, задержки, нагрузки и надежности связей;

— максимальный диаметр сети — 255 хопов (по умолчанию — 100); - период рассылки обновлений — 90 секунд;

— при использовании нескольких путей к одной сети нагрузка распределяется не равномерно, а пропорционально их метрикам;

— более экономная структура служебных пакетов.

В протоколе IGRP используются многие из перечисленных выше дополнительных функций протоколов на основе векторов расстояний: расщепленный горизонт (англ. split horizon), расщепленный горизонт c ответом-заглушкой (англ. split horizon with poison reverse), пережидание (англ. hold-down), мгновенное обновление (англ. triggered updates или flash updates).

Гибридный протокол EIGRP (англ. Enhanced Interior Gateway Routing Protocol, усовершенствованный внутренний протокол маршрутизации шлюзов) разработан фирмой Cisco Systems на основе IGRP в ответ на появление протокола OSPF. Как и IGRP, протокол EIGRP используется только в маршрутизаторах фирмы Cisco. Перечислим основные усовершенствования EIGRP по сравнению с IGRP:

специальный алгоритм распространения информации об изменениях топологии сети — алгоритм DUAL (англ. Diffuse Update Algorithm, алгоритм распространения обновлений);

поддержка бесклассовой адресации;

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

Алгоритм DUAL основан на определении для каждой подсети назначения двух (а не единственного, как в других протоколах) маршрутизаторов: преемника (англ. successor) и возможного преемника (англ. feasible successor). Для каждого возможного маршрута до подсети назначения вычисляются две метрики: объявленное расстояние (англ. advertised distance) и возможное расстояние (англ. feasible distance). Объявленное расстояние вычисляется как сумма метрик всех связей, составляющих маршрут, кроме самой первой. Возможное расстояние — это просто сумма метрик всех связей, составляющих маршрут.

Маршрутизатором — преемником для подсети назначается тот из соседних маршрутизаторов, через который проходит маршрут с минимальным значением объявленного расстояния. Маршрутизатором — возможным преемником для подсети назначается тот из соседних маршрутизаторов, через который проходит маршрут, объявленного расстояние для которого меньше, чем возможное расстояние для маршрута через преемника. Возможный преемник используется для доставки пакетов к подсети назначения в том случае, если доставка пакетов через преемника невозможна.