logo search
Технологии корпоративных сетей

Протокол rip

Протокол RIP (Routing Information Protocol) описан в документе RFC 1058. Протокол RIP относится к классу протоколов IGP. Этот протокол является од­ним из первых протоколов обмена маршрутной информацией между маршру­тизаторами в IP-сети. Существует также версия этого протокола для сетей IPX/SPX компании Novell. Впервые протокол RIP появился в 1982 году как часть стека протокола TCP/IP для UNIX, разработанной Berkley Software Dist­ribution. Исторически протокол RIP близко связан с семейством сетевых про­токолов фирмы Xerox. Преимуществом протокола RIP является его простота. Недостатком — увеличение трафика за счет периодической рассылки широко­вещательных сообщений.

Протокол RIP стал стандартным протоколом маршрутизации внутри отдель­ной автономной системы (АС), хотя он существенно ограничивает размер авто­номной системы. Это связано с тем, что протокол RIP не поддерживает длинные пути, которые содержат более 15 переходов.

Протокол RIP использует алгоритм длины вектора (Distance vector algo­rithm). Этот алгоритм основывается на тех же принципах, что и алгоритм Беллмана-Форда, который был применен в первом протоколе маршрутизации для сетей ARPANET и исходит из предположения, что каждый маршрутизатор может вычислить самый короткий маршрут и соответствующее расстояние до каждой сети. То есть, каждый маршрутизатор выбирает ближайший соседний маршрутизатор, который расположен на этом самом коротком маршруте до полу­чателя. Выбор осуществляется на основании информации о стоимости путей (выбирается путь с меньшей стоимостью). Стоимость вычисляется по инфор­мации, имеющейся в таблицах маршрутизации всех соседних маршрутизаторов (маршрутизаторы регулярно обмениваются между собой таблицами маршрути­зации). Этот алгоритм хорошо работает в небольших сетях. В больших сетях он заполняет сеть широковещательным трафиком. Протокол не всегда точно и быс­тро учитывает изменения сетевой топологии, так как маршрутизаторы не имеют точного представления о топологии сети, а располагают только информацией, полученной от своих соседей. Протокол RIP использует в качестве метрики маршрута количество переходов, то есть число маршрутизаторов, которые долж­на миновать дейтаграмма, прежде чем она достигнет получателя. Маршрутиза­торы с поддержкой протокола RIP всегда выбирают маршрут с наименьшим числом переходов.

Таблица маршрутизации RIP содержит следующие поля:

При включении маршрутизатора таблица маршрутизации заполняется описа­нием сетей, которые напрямую подключены к данному маршрутизатору. Затем соседние маршрутизаторы шлют ему свою информацию. Периодически каждый маршрутизатор посылает сообщения об обновлении маршрута всем своим сосе­дям. Эти сообщения содержат информацию из таблицы маршрутизации. Если объем информации слишком велик и не помещается в одно сообщение протоко­ла RIP, она будет разделена на части и помещена в несколько сообщений. Перед передачей сообщений об обновлении маршрута соседним маршрутизаторам мар­шрутизатор увеличивает количество переходов до получателя на единицу.

Когда сообщения об обновлении маршрута приходят на маршрутизатор, он обновляет свою таблицу маршрутизации в соответствии со следующими прави­лами:

Реакция протокола RIP на изменения в топологии сети зависит от того, как маршрутизатор информирует своих соседей о модификации его таблицы марш­рутизации. Однако следует учитывать, что если сетевая топология изменяется, то соседи могут перестать быть соседями. Кроме того, если маршрутизатор вы­ходит из строя, он не может известить своих соседей об изменениях в топологии. Таким образом, в случае отсутствия сообщений об обновлении маршрутизации предполагаемый маршрут может не отражать произошедшие изменения.

Все маршрутизаторы, участвующие в обмене сообщениями об обновлении маршрута по протоколу RIP, посылают эти сообщения через определенный ин­тервал, который по умолчанию составляет 30 с. Если маршрутизатор не получа­ет сообщения от маршрутизатора, который отвечает за определенную запись в таблице маршрутизации за временной интервал, равный увеличенному в шесть раз интервалу обмена (по умолчанию 180 с), он предполагает, что либо его со­седний маршрутизатор вышел из строя, либо между ними нарушилась связь. Затем маршрутизатор помечает отказавший маршрут как некорректный и, в ко­нечном счете, удаляет его из своей таблицы маршрутизации. Когда маршрутиза­тор получит информацию о новом маршруте от другого своего соседа, он будет использоваться вместо старого удаленного маршрута. Шестикратное увеличение интервала необходимо для того, чтобы избежать исключения маршрута при слу­чайной потере одного сообщения об обновлении.

Кроме того, маршрутизатору чрезвычайно важно оповестить своих соседей о том, что не существует корректного маршрута к определенному получателю. Протокол RIP позволяет выполнить это с помощью стандартных сообщений об обновлении маршрутизации. Для обозначения недостижимости получателя ко­личество переходов устанавливается равным 16. Это значение можно считать «бесконечностью», так как допустимые маршруты не могут иметь более 15 пере­ходов. Если какая-либо сеть становится недостижимой, все соседние маршрути­заторы установят метрику для этой сети равной 16. В следующем цикле посылки сообщений об обновлении маршрутизаторы передадут эти данные всем своим соседям, указав для них число переходов к недостижимой сети равным 16. На рис. 8.9 показан пример сетевой топологии с вышедшим из строя каналом связи.

Протокол RIP гарантирует, что таблицы маршрутизации за определенное время (время сходимости) станут правильными. Однако алгоритм в текущем своем состоянии не гарантирует, что время сходимости будет мало. Может ока­заться так, что до истечения времени сходимости в сеть будут внесены измене­ния, и тогда все начнется заново. Вопрос о том, сколько времени требуется для сходимости процесса извещения об изменении маршрутов, является достаточно сложным. Когда происходит выход из строя канала связи или возникают другие проблемы в сети, некоторые из существующих маршрутов становятся недоступ­ными или менее подходящими для передачи. Проблема в том, что, в принципе, соседние маршрутизаторы могут обмениваться между собой не вполне правиль­ной информацией. Эта информация будет передана дальше по сети. Она будет исправлена только при следующих итерациях. Медленная сходимость может иметь достаточно серьезные последствия. В частности, может увеличиться объем трафика сообщений об изменениях маршрутов, которыми обмениваются марш­рутизаторы, могут образовываться логические петли маршрутизации и т. д.

На рис. 8.10 показана логическая петля, образованная маршрутизаторами М2 и М3.

Маршрутизатор М2 может достигнуть целевой сети через маршрутизатор Ml за 1 переход. Маршрутизатор М3 получает эту информацию из периодических сообщений об обновлении от маршрутизатора М2. Поэтому МЗ может достиг­нуть целевую сеть через маршрутизатор М2 за 2 перехода. В следующем цикле посылки сообщений об обновлении маршрутизатор МЗ известит маршрутизатор М2 о достижимости целевой сети за 3 перехода. В результате маршрутизатор М2 будет иметь два маршрута в целевую сеть: первый маршрут с использовани­ем маршрутизатора Ml и количеством переходов 1, а второй маршрут с исполь­зованием маршрутизатора МЗ и количеством переходов 3. Маршрутизатор М2 выберет маршрут через маршрутизатор Ml, так как он имеет наименьшую мет­рику.

В случае, если канал связи между маршрутизаторами Ml и М2 выйдет из строя, М2 не получит сообщение об обновлении в требуемый интервал времени и удалит из своей таблицы запись о маршруте в целевую сеть через Ml. В ре­зультате у маршрутизатора М2 будет сформирована запись о маршруте в целе­вую сеть через маршрутизатор МЗ за 3 перехода. Следовательно, М2 будет пересылать весь трафик маршрутизатору МЗ, тот его пошлет обратно М2 и т. д. Таким образом образуется логическая петля маршрутизации. Обмен пакетами между маршрутизаторами будет продолжаться до тех пор, пока поле TTL в за­головке IP-дейтаграммы не станет равно 0. Тогда дейтаграмма будет удалена одним из маршрутизаторов.

Существует несколько технологий, которые ускоряют сходимость протокола RIP IP и повышают его производительность. К ним относятся: расщепление горизонта (Split-Horizon), обратное исправление (Poison Reverse), мгновенное изменение (Triggered Update) и временный отказ от приема информации Hold-Down (приостановка) и Garbage-Collection (сборка мусора).

Описанная проблема «обоюдного обмана» может быть решена путем опре­деления направления посылки маршрутной информации. Согласно технологии Split-Horizon маршрутизатор не будет распространять информацию об опреде­ленном маршруте через порт, который явился источником данной информации. Другими словами, маршрутизатор не будет информировать о достижимости получателя своего соседа, от которого была получена информация о маршруте к получателю. На рис. 8.11 показано, каким образом Split-Horizon устранит обра­зовавшуюся петлю.

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

Технология Poison Reverse решает те же задачи, что и Split-Horizon, одна­ко немного другим способом. Маршрутизаторы распространяют информацию о маршрутах через порты, которые явились источниками информации. Но эти маршруты указываются как недостижимые — количество переходов устанавли­вается равным 16 (рис. 8.12).

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

Однако при изменении сетевой топологии скорость сходимости в этой схеме может увеличиться, так как упоминаются и достижимые, и недостижимые маршруты.

Основным недостатком этой технологии является то, что она увеличивает нагрузку на сеть. Во многих случаях администратор может согласиться с мед­ленной сходимостью ради уменьшения загрузки сети, вызываемой потоком со­общений об обновлении.

Технологии Split-Horizon и Poison Reverse хорошо работают в случае двух маршрутизаторов в петле. Однако возможны ситуации, когда три или более маршрутизаторов «обманывают друг друга». Например, маршрутизатор Ml по­лагает, что имеет маршрут к какой-либо сети через маршрутизатор М2, марш­рутизатор М2 — через МЗ, МЗ — через М4, а М4 — снова через Ml. Для ускорения сходимости в подобных ситуациях служит технология Triggered Up­date, которая требует, чтобы маршрутизатор немедленно посылал сообщения об обновлении своим соседям, если он обнаружил изменение в метрике маршрута. Сообщение должно быть послано, даже если не пришло время для регулярных сообщений. Естественно, это ускорит сходимость, но увеличит трафик в сети. Поэтому технология Triggered Update может вызвать чрезмерную загрузку сети с ограниченной пропускной способностью. Все реализации протокола RIP долж­ны предусматривать предел частоты немедленной посылки сообщений об обнов­лении (скажем, не чаще чем раз в секунду), чтобы не загружать сеть. Простым решением данной проблемы является установка таймера на случайное число между одной и пятью секундами. После обнуления таймера происходит посылка сообщения об обновлении. Если произошли другие изменения в сети, при кото­рых немедленно высылаются дополнительные сообщения, маршрутизатор дол­жен выждать обнуление таймера и только затем посылать новое сообщение. Таймер после этого устанавливается в другое случайное число в заданном интервале.

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

Маршруты в таблице маршрутизации, создаваемой с помощью протокола RIP, могут иметь различные состояния. Например, для маршрутизаторов фирмы 3Com маршруты могут находиться в одном из следующих состояний:

На рис. 8.13 показана смена состояний маршрута в таблице маршрутизации.

Сетевому администратору в автономной системе требуется контроль за ис­пользованием ресурсов сети. В частности, желательно ограничить поток сообще­ний о маршрутизации. Существует набор средств, которые позволяют администратору контролировать содержимое сообщений об обновлении маршрута. Перечислим их на примере маршрутизатора NetBuilder II фирмы 3Com. В частности:

Протокол RIP для передачи сообщений использует дейтаграммы UDP и про­токольный порт 520. Полное сообщение протокола RIP, включая заголовок и данные, инкапсулируется в поле данных дейтаграммы UDP, которая, в свою очередь, инкапсулируется в IP-дейтаграмму (рис. 8.14).

Все сообщения протокола RIP состоят из заголовка фиксированной длины и следующей за ним таблицы маршрутизации (точнее, ее подмножества) передаю­щего маршрутизатора. В таблице представлен список достижимых сетей (рис. 8.15). Цифра 0 на рис. 8.15 означает, что это поле, согласно спецификации, должно быть нулевым.

Команда (8 бит)

Версия (8 бит)

0(16 бит)

Идентификатор адресной схемы (16 бит)

0(16 бит)

IP-адрес (32 бита)

0(32 бита)

0(32 бита)

Количество переходов (32 бита)

Идентификатор адресной схемы (16 бит)

0(16 бит)

IP-адрес (32 бита)

0(32 бита)

0(32 бита)

Количество переходов (32 бита)

...

Идентификатор адресной схемы (16 бит)

0(16 бит)

IP-адрес (32 бита)

0(32 бита)

0(32 бита)

Количество переходов (32 бита)

Рис. 8.15. Формат сообщения протокола RIP

Часть сообщения (запись из таблицы маршрутизации), начинающаяся с поля «Идентификатор адресной схемы» и заканчивающаяся полем «Количество пере­ходов», может повторяться в сообщении до 25 раз. Это позволяет каждому сооб­щению протокола RIP переносить до 25 адресов, которые занимают до 500 байтов. Это ограничение вызвано тем, что максимальный размер сообщений составляет 521 байт, не включая заголовков протоколов IP и UDP. Маршрути­затору может потребоваться передать несколько сообщений для рассылки всей таблицы маршрутизации своим соседям. Не существует специальных требова­ний к последовательности посылки сообщений, так как все маршруты обрабаты­ваются независимо.

Поля в сообщении протокола RIP имеют следующие значения:

Поля, которые должны быть заполнены нулями, являются частью адресного поля, но не используются, так как адреса IP занимают только 4 байта. Протокол RIP может работать с сетевыми адресами длиной до 12 байт.

Выше рассматривался протокол маршрутизации RIP версии 1 (RIP-1 IP). Однако существует версия 2 этого популярного протокола (RIP-2 IP), описан­ная в документе RFC 1388. Версия 2 поддерживает CIDR, аутентификацию, подсети и групповую передачу. На рис. 8.16 показан формат сообщений прото­кола RIP-2.

Команда (8 бит)

Версия (8 бит)

Домен маршрутизации (16 бит)

Идентификатор адресной схемы (16 бит)

Метка маршрута (16 бит)

IP-адрес (32 бита)

Маска подсети (32 бита)

Следующий переход (32 бита)

Метрика (32 бита)

Рис. 8.16. Формат сообщения протокола RIP-2 IP

Сообщения версии 1 содержат нулевые неиспользуемые поля. Это позволяет задействовать их для расширений, предлагаемых в версии 2. Протокол RIP-2 IP наследует все поля первой версии и добавляет следующие:

Номер версии для протокола RIP-2 IP равен 2. При получении такого сооб­щения маршрутизатором, поддерживающим протокол RIP-1 IP, он просто про­игнорирует любые поля, которые согласно версии 1 протокола должны содержать нули. Поэтому он будет корректно обрабатывать все записи, не использующие расширений RIP-2 IP (например, простое поле с IP-адресом по­лучателя без указания маски подсети).

Протокол RIP-1 IP не поддерживает безопасность. Любое устройство (рабо­чая станция или сервер), посылающее сообщение UDP через порт 520, будет рассматриваться маршрутизатором как его сосед. Отсутствие аутентификации возлагает на администратора дополнительные задачи по управлению правилами. Например, администратору может понадобиться вручную настроить список ав­торизованных соседей.

Протокол RIP-2 IP поддерживает аутентификацию. Стандарт допускает за­мену первой записи в сообщении на сегмент аутентификации. Таким образом, сообщение может содержать сегмент аутентификации и 24 записи из таблицы маршрутизации в стандартной форме RIP-2 IP. На рис. 8.17 показан формат сегмента аутентификации протокола RIP-2 IP.

Сегмент аутентификации определяется тем, что поле «Идентификатор адрес­ной схемы» равно %FFFFF. Затем указывается тип схемы аутентификации, и следующие 16 байт отводятся под данные аутентификации. После получения сообщения маршрутизаторы проверят сегмент аутентификации (если протокол RIP-2 IP работает в безопасном режиме) и будут игнорировать любые сообще­ния с некорректной аутентификацией.

Так как протокол RIP был разработан достаточно давно и практически не изменялся за это время, он обладает существенными недостатками, которые ограничивают его применение в сложных сетях: