Протокол RIP

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

 

Для решения этих задач были разработаны протоколы маршрутизации, которые можно поделить на классы:

 

  • Dynamic - vector routing protocols
  • Link state routing protocols

Представителем первого класса является протокол RIP (Routing Information Protocol).

Протокол RIP

Протокол RIP является наиболее часто используемым протоколом (в основном из-за того, что он был включен в стандартную поставку популярной ОС BSD UNIX 4.x). Идея его такова:

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

Данный протокол обладает рядом недостатков:

  • Не предусмотрена защита от циклических маршрутов. Поэтому системный администратор должен проверить их отсутствие в таблицах.
  • Максимальное количество хопов в маршруте 15, что делает его непригодным для применения в больших сетях и большим количеством роутеров.
  • Протокол обладает таким свойством как Slow Convergence. Медленное перестроение таблиц маршрутизации на роутерах при изменении топологии сети. Это связано с тем, что роутеры пересылают всю таблицу маршрутизации, и перед сеансами связи есть некоторые промежутки времени. Из-за них как раз и может возникнуть такая ситуация, что далеко расположенные роутеры будут пересылать пакеты по маршруту в который входит отключенный канал. (Чтобы уменьшить время перестроения таблиц, было ограничено число хопов пятнадцатью.)

Как решения этой проблемы возможны варианты:

    1. 1) Переждать некоторое время, пока все роутеры в сети получат сообщение об отключении канала и перестроят свои таблицы маршрутизации. (Ждать приходится довольно долго)

 

    1. 2) "Разграничение горизонтов". Роутер запоминает имя интерфейса, с которого пришло сообщение об отключении канала и перестает пересылать на этот интерфейс пакеты. И при дальнейшей пересылке таблиц маршрутизации не пересылать сообщения о возможности прохождения пакетов по маршрутам через данный интерфейс. (Тут возникают проблемы в соединении между фреймами сети.)

Здесь Ѓ , ‚ , ѓ , „  - маршрутизаторы, A, B, C, D, E - сети. Хосты в сетях не показаны за ненадобностью. Мы будем следить за формированием таблицы маршрутов в узле Ѓ.

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

A=1а Ѓ

B=1а Ѓ

Следовательно, узел Ѓ рассылает в сети А и В вектор расстояний (А=1,В=1).

Аналогично узел ‚ рассылает в сети A, C, D вектор (A=1,C=1,D=1). Узел Ѓ получает этот вектор из сети А, увеличивает расстояния на 1 (A=2,C=2,D=2) и сравнивает с данными в своей таблице маршрутов. Новое расстояние до сети А оказывается больше, чем уже внесенное в таблицу (А=1), следовательно, новое значение игнорируется. Поскольку сети C и D вовсе не фигурируют в его таблице маршрутов, они туда вносятся. В узле Ѓ имеем:

A=1а Ѓ

B=1а Ѓ

C=2а ‚

D=2а ‚

Узел „ в свою очередь рассылает вектор (D=1,E=1) в сети D и E. Узел ‚ получает этот вектор из сети D, увеличивает расстояния на 1, после чего добавляет себе в таблицу данные о сети Е (Е=2а „ ). Ранее из узла Ѓ он получил информацию о сети В и добавил себе в таблицу строку В=2а Ѓ . Узел ‚ рассылает в сети A, C, D свой обновленный вектор расстояний (A=1,B=2,C=1,D=1,E=2).

Узел Ѓ получает этот вектор от ‚ из сети А, увеличивает расстояния на 1: (A=2,B=3,C=2,D=2,E=3) и замечает, что все указанные расстояния, кроме расстояния до сети Е, больше либо равны значениям, имеющимся в его таблице. Сеть Е в таблице узла Ѓ отсутствует, следовательно, она туда вносится, и в узле Ѓ мы получаем:

A=1а Ѓ

B=1а Ѓ

C=2а ‚

D=2а ‚

Е=3а ‚

Далее маршрутизатор ѓ , ранее не работавший по каким-либо причинам, рассылает в сети В, С, Е свой вектор (В=1,С=1,Е=1). Узел Ѓ получает этот вектор из сети В, увеличивает расстояния на 1 и обнаруживает, что расстояние Е=2 меньше имеющегося в таблице Е=3, следовательно запись о сети Е в таблице заменяется на Е=2а ѓ. Остальные элементы полученного от ѓ вектора не вызывают обновления таблицы.

Итоговая таблица маршрутов маршрутизатора Ѓ :

A=1а Ѓ

B=1а Ѓ

C=2а ‚

D=2а ‚

Е=2а ѓ

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

Реализация протокола RIP

Существуют две версии протокола RIP: RIP-1 и RIP-2. Версия 2 имеет некоторые усовершенствования, как то: возможность маршрутизации сетей по модели CIDR (кроме адреса сети передается и маска), поддержка мультикастинга, возможность использования аутентификации RIP-сообщений и др.

Типы и формат сообщений

В протоколе RIP имеются два типа сообщений, которыми обмениваются маршрутизаторы:

  • ответ (response) - рассылка вектора расстояний;
  • запрос (request) - маршрутизатор (например, после своей загрузки) запрашивает у соседей их маршрутные таблицы или данные об определенном маршруте.

В RIP сообщения инкапсулируются в udp-дейтограммы, при этом передача осуществляется через порт 520. В качестве метрики RIP использует число шагов до цели. Если между отправителем и приемником расположено три маршрутизатора, считается, что между ними 4 шага. Такой вид метрики не учитывает различий в пропускной способности или загруженности отдельных сегментов сети. Применение вектора расстояния не может гарантировать оптимальность выбора маршрута, ведь, например, два шага по сегментам сети Ethernet обеспечат большую пропускную способность, чем один шаг через последовательный канал на основе интерфейса RS-232.

Маршрут по умолчанию имеет адрес 0.0.0.0 (это верно и для других протоколов маршрутизации). Каждому маршруту ставится в соответствие таймер тайм-аута и "сборщика мусора". Тайм-аут-таймер сбрасывается каждый раз, когда маршрут инициализируется или корректируется. Если со времени последней коррекции прошло 3 минуты или получено сообщение о том, что вектор расстояния равен 16, маршрут считается закрытым. Но запись о нем не стирается, пока не истечет время "уборки мусора" (2мин). При появлении эквивалентного маршрута переключения на него не происходит, таким образом, блокируется возможность осцилляции между двумя или более равноценными маршрутами. Формат сообщения протокола RIP имеет вид, показанный в таблице 2. Поле команда определяет выбор согласно следующей таблице:

Таблица 1. Значение кодов поля команда

Команда

Значение

1

Запрос на получение частичной или полной маршрутной информации;

2

Отклик, содержащий информацию о расстояниях из маршрутной таблицы отправителя;

3

Включение режима трассировки (устарело);

4

Выключение режима трассировки (устарело);

5-6

Зарезервированы для внутренних целей sun microsystem.

Поле версия для RIP равно 1 (для RIP-2 двум). Поле набор протоколов сети i определяет набор протоколов, которые используются в соответствующей сети (для Интернет это поле имеет значение 2). Поле расстояние до сети i содержит целое число шагов (от 1 до 15) до данной сети. В одном сообщении может присутствовать информация о 25 маршрутах.

Вложения:
Скачать этот файл (RIP.pps)Протокол RIP[Презентация]137 kB