RIP (Routing Information Protocol)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:05, 23 июня 2016.
Open book.svg Авторство
Иванюшенко В.О.
Согласовано: 15.04.2016
Протокол маршрутной информации
Уровень (по модели OSI): Прикладной
Порт/ID: 520/UDP
Назначение протокола: Маршрутизация в малых сетях
Спецификация: RFC 1058 (v1), RFC 2453 (v2)
Основные реализации:
  • Berkeley routed
  • Zebra
  • Quagga
  • nx-routed
  • Bird
Вступил в силу с: 1969 г.

RIP (англ. Routing Information Protocol – Протокол маршрутной информации) — один из самых простых протоколов маршрутизации. Применяется в небольших компьютерных сетях, позволяет маршрутизаторам динамически обновлять маршрутную информацию (направление и дальность в хопах), получая её от соседних маршрутизаторов.

История

Алгоритм маршрутизации RIP (алгоритм Беллмана — Форда) был впервые разработан в 1969 году, как основной для сети ARPANET.

Прототип протокола RIP — Gateway Information Protocol, часть пакета PARC Universal Packet.

Версия RIP, которая поддерживает протокол интернета была включена в пакет BSD операционной системы Unix под названием routed (route daemon), а также многими производителями, реализовавшими свою версию этого протокола. В итоге протокол был унифицирован в документе RFC 1058.

В период с 1993 по 1998 годы разрабатывался протокол RIP-2 (RFC 2453), который является расширением протокола RIP, обеспечивающим передачу дополнительной маршрутной информации в сообщениях RIP и повышающим уровень безопасности.

Для работы в среде IPv6 была разработана версия RIPng.

Технические характеристики

RIP — так называемый протокол дистанционно-векторной маршрутизации, который оперирует транзитными участками в качестве метрики маршрутизации. Его основные характеристики:

  • В качестве метрики при выборе маршрута используется количество переходов (хопов);
  • Если количество переходов становится дольше 15 – пакет отбрасывается;
  • Каждый RIP-маршрутизатор по умолчанию вещает в сеть свою полную таблицу маршрутизации раз в 30 секунд, довольно сильно нагружая низкоскоростные линии связи;
  • RIP работает на 4 уровне (уровень приложения) стека TCP/IP, используя UDP порт 520.

В современных сетевых средах RIP — не самое лучшее решение для выбора в качестве протокола маршрутизации, так как его возможности уступают более современным протоколам, таким как EIGRP, OSPF. Ограничение на 15 хопов не дает применять его в больших сетях. Преимущество этого протокола — простота конфигурирования.

Формат RIP пакета

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Command (1) Version (1) Routing Domain (должен быть 0) (2)
RIP Entry (20)
  • Command — команда, определяет назначение датаграммы (1 — request; 2 — response)
  • Version — номер версии, в зависимости от версии, определяется формат пакета
  • Routing Domain — идентификатор RIP-системы, к которой принадлежит данное сообщение; часто — номер автономной системы. Используется, когда к одному физическому каналу подключены маршрутизаторы из нескольких автономных систем, в каждой автономной системе поддерживается своя таблица маршрутов. Поскольку сообщения RIP рассылаются всем маршрутизаторам, подключенным к сети, требуется различать сообщения, относящиеся к «своей» и «чужой» автономным системам. Поле использовалось короткое время в версии протокола RIP-2. В протоколе RIP-1 и в текущей версии RIP-2 не используется.
  • RIP Entry (RTE) — запись маршрутной информации RIP. RIP пакет может содержать от 1 до 25 записей RIP Entry.

Формат RIP Entry для протокола RIP-1

Поле Version = 1.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Address family identifier (2) must be zero (2)
IPv4 address (4)
Must be zero (4)
Must be zero (4)
Metric (4)
  • Address family identifier (AFI) — тип адреса, обычно поддерживается только запись AF_INET, которое равно 2 (т. е. используется для протокола IP).
  • Must be zero — должно быть нулём.
  • IPv4 address — IP адрес места назначения (хост или сеть)
  • Metric — метрика маршрута

Формат RIP Entry для протокола RIP-2

Поле Version = 2.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Address family identifier (2) Route Tag (2)
IPv4 address (4)
Subnet mask (4)
Next hop (4)
Metric (4)
  • Address Family Identifier (AFI) — тип адреса, обычно поддерживается только запись AF_INET, которое равно 2 (т.е. используется для протокола IP).
  • Route Tag (RT) — тег маршрута. Предназначен для разделения «внутренних» маршрутов от «внешних», взятых, например, из другого IGP или EGP.
  • IP Address — IP адрес места назначения.
  • Subnet Mask — маска подсети
  • Next Hop — следующий хоп. Содержит IP адрес маршрутизатора к месту назначения. Значение 0.0.0.0 — хопом к месту назначения является отправитель пакета. Необходимо, если протокол RIP не может быть запущен на всех маршрутизаторах.
  • Metric — метрика маршрута.

Аутентификация

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
command (1) version (1) must be zero (2)
0xFFFF Authentication Type (2)
Authentication (16)

Принципы работы протокола RIP

RIP — это простой дистанционно-векторный маршрутизирующий протокол, предназначенный для сетей небольшого и среднего размеров с резервированием. Он не зависит от конкретных поставщиков и версия I этого протокола определена главным образом в документе RFC 1058. Благодаря этой независимости от поставщиков протокол RIP обладает важным достоинством — обеспечивает функциональную совместимость оборудования разных поставщиков. (Протокол RIP поддерживается даже компанией Microsoft, но при условии, что в качестве маршрутизатора используется компьютер с операционной системой Windows 2000.) Кроме того, поскольку RIP представляет собой такой простой протокол, процедура настройки его конфигурации является очень несложной. Но, к сожалению, его простота может также стать причиной возникновения проблем.

Основные операции протокола RIP 1

Основные операции протокола RIP являются очень простыми и подчиняются описанным ниже весьма несложным правилам.

  1. После загрузки маршрутизатора единственными известными ему маршрутами являются маршруты к сетям, к которым он непосредственно подключен.
  2. Согласно протоколу RIP версии 1, маршрутизатор выполняет широковещательную рассыпку информации обо всех известных ему сетях во все непосредственно подключенные сети. Применяемые при этом пакеты принято называть обновлениями или анонсами.
  3. Маршрутизаторы RIP принимают широковещательные пакеты RIP. Это позволяет им получать от других маршрутизаторов такую информацию о сетях, которую они не могли бы получить самостоятельно.
  4. Применяемая в протоколе R1P метрика представляет собой количество транзитных переходов (этот показатель можно неформально определить как количество маршрутизаторов в маршруте) и анонсируется в широковещательных рассылках RIP для каждой сети. Максимально допустимое количество транзитных переходов для RIP равно 15. Метрика 16 считается бесконечно большой.
  5. Предполагается, что информация о любом маршруте, полученная от маршрутизатора RIP, касается маршрута, проходящего через этот маршрутизатор. Иными словами, если маршрутизатор А передает обновление маршрутизатору В, то маршрутизатор В предполагает, что в конце следующего транзитного перехода к сетям, включенным в это обновление, находится маршрутизатор А.
  6. Обновления рассылаются через регулярные интервалы.

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

Рис. 1. Топология сети, применяемой в примере с описанием основных особенностей протокола RIP

После загрузки маршрутизатор Richard рассылает широковещательные сообщения обо всех известных ему сетях маршрутизаторам Stan и Fran и включает в эти анонсы данные о метрике 1 маршрутов к этим сетям. Протокол RIP не предусматривает поиска или определения того, какие маршрутизаторы RIP имеются в сети, поэтому у маршрутизатора Richard нет информации о том, подключен ли к сети 5 еще один маршрутизатор. Поэтому Richard отправляет широковещательное сообщение и в сеть 5. Следует отметить, что в связи с отсутствием информации о других маршрутизаторах Richard не имеет также данных о том, сколько маршрутизаторов подключено к сетям 1 и 4, и подключены ли они вообще. Он просто рассылает широковещательные сообщения, предполагая, что их кто-то примет.

Затем маршрутизаторы Stan и Fran вводят в свои таблицы маршрутизации данные о новых сетях с метрикой 1 (используя метрику, анонсированную в обновлении). Предполагается, что по условиям данного примера в таблицах маршрутизации разрешено иметь только один маршрут к каждой сети назначения, поэтому Stan и Fran вводят в свои таблицы маршрутизации только наилучший маршрут (имеющий минимальную метрику). В связи с этим маршрутизатор Stan не изменяет свою таблицу маршрутизации, чтобы включить в нее сеть 1, анонсированную маршрутизатором Richard, поскольку он уже имеет в своей таблице лучший маршрут к этой сети (с метрикой 0). Аналогичным образом, Fran не вводит новый маршрут к сети 4. На рис. 2 показаны начальная широковещательная рассылка и вызванные ею изменения в таблицах маршрутизации.

Рис. 2. Первоначальная широковещательная рассылка RIP

После этого широковещательную рассылку информации об известных им сетях выполняют маршрутизаторы Fran и Stan и, кроме сведений о непосредственно подключенных к ним подсетях, включают новые сведения, только что полученные от маршрутизатора Richard. Благодаря этой широковещательной рассылке Richard получает информацию о подсетях 3 и 8 (от маршрутизатора Fran) и подсетях 2 и 6 (от маршрутизатора Stan). В ходе этого процесса обновления маршрутизатор Flagg получает данные обо всех сетях в топологии и вводит их в свою таблицу. Следует отметить, что по условиям этого примера разрешается вводить в таблицы только по одному маршруту к каждой сети, поэтому маршрутизатор Flagg, получив данные о двух маршрутах с одинаковой стоимостью к одной и той же сети (например, обновления с данными о сети 5 с метрикой 2 и от Stan, и от Fran), включает в свою таблицу маршрутизации только первый маршрут, полученный в анонсах. На рис. 3 показан процесс проведения второго этапа широковещательной рассылки и вызванные им обновления в таблице маршрутизации.

Рис. 3. Обновления, полученные от маршрутизаторов Fran и Stan

Наконец, маршрутизатор Flagg выполняет широковещательную рассылку информации о своих сетях маршрутизаторам Stan и Fran. На следующем этапе обновления Stan и Fran выполняют широковещательную рассылку сведений об этих новых маршрутах, маршрутизатор Richard принимает эти обновления, и формирование маршрутов в сети заканчивается. Достигнутое в результате этого состояние показано на рис. 4.

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

Тайм-ауты обновления используются для того, чтобы маршрутизатор получал сведения о том, какой должна быть продолжительность ожидания перед отправкой периодических обновлений. В протоколе RIP версии 1 каждое обновление включает Данные обо всех маршрутах (за исключением тех, которые были удалены согласно Правилу разделения диапазона), независимо от того, произошли ли какие-либо изменения со времени последнего обновления или нет. Такой процесс периодической рассылки обновлений обеспечивает для всех маршрутизаторов возможность определить, не произошел ли останов каких-либо других маршрутизаторов (маршрутизаторы как будто "слушают биение пульса" друг друга). Но интервал времени между обновлениями, предусмотренный протоколом RIP, является очень коротким, а при каждом обновлении анонсируется полная таблица маршрутизации, и это означает, что в сложных сетях обновления RIP могут занимать значительную часть пропускной способности. В маршрутизаторах Cisco предусмотрена возможность изменять значение тайм-аута обновления, но при этом необходимо обеспечить, чтобы во всех маршрутизаторах были заданы одинаковые значения таймаута.

Рис. 4. Сеть после достижения установившегося состояния

Разделение диапазона (называемое также расщеплением горизонта — split horizon) — это одно из средств, применяемых в протоколе дистанционно-векторной маршрутизации для снижения вероятности возникновения маршрутных циклов. Это средство предусматривает разделение всего диапазона сетевых интерфейсов по тому признаку, каким образом следует передавать через них маршрутную информацию. В своей простейшей форме разделение диапазона обеспечивает, чтобы информация о маршрутах, полученная через определенный интерфейс, никогда не передавалась снова в виде широковещательных сообщений через тот же интерфейс. Кроме того, сеть, непосредственно связанная с некоторым интерфейсом, никогда не анонсируется через тот же интерфейс. Разделение диапазона с обратным вытеснением (split horizon with poison reverse) позволяет в случае возникновения маршрутного цикла сократить продолжительность перехода сети в установившееся состояние путем анонсирования через определенный интерфейс таких же данных о маршрутах, которые были получены через этот интерфейс, но с бесконечно большой метрикой. За этим кратким описанием следуют примеры, в которых рассматриваются и простой метод разделения диапазона, и метод разделения диапазона с обратным вытеснением, поэтому не беспокойтесь, если это описание вам ещё не совсем понятно.

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

Кроме того, для уменьшения вероятности возникновения маршрутных циклов используется метод вытеснения маршрутов (route poisoning). Без вытеснения маршрутов запись с недостоверными данными о маршруте удаляется из таблицы только по истечении тайм-аута хранения маршрута (route timer) и тайм-аута удаления маршрута (route-flush timer). Тайм-аут хранения маршрута (называемый в ISO тайм-аутом недопустимого маршрута — invalid timer) используется для определения маршрутов, которые стали недействительными. Если в обновлениях по истечении этого тайм-аута больше не появляются сведения о некотором маршруте, маршрут рассматривается как недействительный и для него устанавливается тайм-аут удержания. Тем не менее, маршрут продолжает использоваться (но больше не анонсируется) до момента истечения тайм-аута удаления маршрута. А по истечении тайм-аута удаления маршрута этот маршрут полностью удаляется из таблицы маршрутизации.

По умолчанию для тайм-аута хранения маршрута установлено значение 180 секунд, а для тайм-аута удаления маршрута — 240 секунд. Если не используется метод вытеснения маршрута, маршрутизатор просто перестает анонсировать недействительные маршруты по истечении тайм-аута хранения маршрута. После этого следующий за ним маршрутизатор вынужден ждать истечения своего тайм-аута хранения маршрута и т.д. Это означает, что в больших сетях RIP (с количеством транзитных переходов больше 10) может потребоваться больше 30 минут для передачи информации о недействительном маршруте всем маршрутизаторам (а это ставит под сомнение саму целесообразность применения тайм-аутов удержания). Метод вытеснения маршрута применяется в сочетании с активизированными обновлениями и позволяет сократить это время путем анонсирования маршрута с бесконечно большой метрикой (в протоколе RIP таковой является метрика 16) по истечении тайм-аута хранения маршрута. При использовании в сочетании с активизированными обновлениями метод вытеснения маршрута позволяет сократить до 30 секунд и меньше продолжительность перехода в установившееся состояние сети с количеством транзитных переходов свыше 10.

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

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

Рассмотрим пример простой полносвязной сети (рис. 5) и изучим процесс обновления маршрутов RIP, в котором не применяются какие-либо из описанных выше механизмов предотвращения циклов.

Рис. 5 Простая полносвязная сеть для примера анализа маршрутных циклов

Первоначально все маршрутизаторы имеют информацию о маршрутах только к непосредственно подключенным к ним сетям. Это означает, что таблицы маршрутизации для маршрутизаторов Jack, Danny и Hallorann выглядят так, как показано в табл. 1.


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

Поле получатель
Поле следующий транзитный переход
Поле метрика
Jack
10.0.0.0
-
-

172.16.0.0
-
-
Denny
10.0.0.0
-
-

192.168.1.0
-
-
Halloran
192.168.1.0
-
-

172.16.0.0
-
-

192.168.50.0
-
-

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

Таблица 2. Таблицы маршрутизации для маршрутизаторов, показанных на рис. 5, после перехода сети в установившееся состояние

Поле получатель
Поле следующий транзитный переход
Поле метрика
Jack
10.0.0.0
-
-

172.16.0.0
-
-

192.168.1.0
10.0.0.1
1

192.168.50.0
172.16.0.1
1
Denny
10.0.0.0
-
-

172.16.0.0
10.0.0.2
1

192.168.1.0
-
-

192.168.50.0
192.168.1.2
1
Halloran
10.0.0.0
172.16.0.2
-

172.16.0.0
-
-

192.168.1.0
-
-

192.168.50.0
-
-

Теперь допустим, что в маршрутизаторе Hallorann произошел отказ канала, ведущего к сети 192.168.50.0. Hallorann немедленно удаляет из своей таблицы соответствующую запись (поскольку он уже не подключен непосредственно к этой сети), но не передает маршрутизаторам Jack и Danny сообщения с информацией об этом удалении. (Напомним, что в данном примере не используются какие-либо средства предотвращения циклов.) Поскольку маршрутизаторам Danny и Jack не было сообщено о нарушении в работе сети, они должны ожидать истечения таймаута хранения маршрута к сети 192.168.50.0, который равен 180 секундам, прежде чем прекратить анонсирование данных об этой сети. А поскольку к ним еще не поступили сведения о том, что маршрут к сети 192.168.50.0 стал недействительным, то эти маршрутизаторы продолжают передавать анонсы о нем во все сети (напомним, что в этом примере не используется метод разделения диапазона), в том числе в свои каналы, направленные к маршрутизатору Hallorann, который имеет маршрут к сети 192.168.50.0. Полученное обновление вынуждает маршрутизатор Hallorann ввести в таблицу недействительный маршрут к сети 192.168.50.0, используя один из прочих маршрутизаторов в качестве устройства, находящегося в конце следующего транзитного перехода к этой сети (предположим, что в данном случае таковым является Danny). Теперь таблица маршрутизации для Hallorann имеет вид, показанный в табл. 3.

Таблица 3. Таблица маршрутизации для маршрутизатора Hallorann
Поле получатель
Поле следующий транзитный переход
Поле метрика
10.0.0.0
1172.16.0.2
1
172.16.0.2
-
-
192.168.1.0
-
-
192.168.50.0
192.168.1.1
2

В этот момент возникает цикл. Маршрутизатор Hallorann перенаправляет пакеты, предназначенные для сети 192.168.50.0, маршрутизатору Danny, который перенаправляет их маршрутизатору Hallorann, который снова перенаправляет их к Danny, и т.д. до тех пор, пока не истекает время жизни пакетов (11L). Но через три минуты маршрутизатор Danny узнает о том, что маршрут через маршрутизатор Hallorann больше не действителен (поскольку больше не получает от маршрутизатора Hallorann анонсов о маршруте с метрикой 1), поэтому удаляет маршрут из своей таблицы. Об этом отказе узнает также маршрутизатор Jack и удаляет из своей таблицы первоначальный маршрут к сети 192.168.50.0.

Но на этом проблема не исчерпывается, поскольку маршрутизатор Hallorann продолжает передавать маршрутизаторам Jack и Danny данные о маршруте к сети 192.168.50.0 с метрикой 3 (на основании фиктивных данных о маршруте, полученных от Danny, которые теперь находятся в его таблице). После этого Jack и Danny вводят в свои таблицы маршрут с метрикой 3, направленный к маршрутизатору Hallorann, который как раз и собирается отправить пакет назад к Danny, после чего снова начинается циклическая переброска пакета. В конечном итоге в маршрутизаторе Hallorann истекает таймаут хранения маршрута к сети 192.168.50.0 с метрикой 2, но он получает от маршрутизатора Danny или Jack данные о маршруте с метрикой 4. Затем в маршрутизаторах Danny и Jack истекает тайм-аут хранения маршрута с метрикой 3, но они получают от маршрутизатора Hallorann данные о маршруте с метрикой 5 и т.д. Такой процесс продолжается до тех пор, пока метрика маршрута не достигает значения 16 (примерно через час). Эту проблему кто-то остроумно назвал счетом до бесконечности, и она, по-видимому, представляет основную проблему дистанционно-векторной маршрутизации.

Для решения данной проблемы (а также для устранения маршрутных циклов, которые и являются первопричиной ее возникновения) приступим к внедрению в эту сеть механизмов предотвращения циклов, предусмотренных протоколом RIP, начиная с метода разделения диапазона. Если разрешено применение только метода разделения диапазона, то при отказе в маршрутизаторе Hallorann канала, ведущего к сети 192.168.50.0, он не будет получать фиктивных данных о маршруте к сети 192.168.50.0 от маршрутизатора Danny или Jack. Поскольку Danny получил информацию о маршруте к сети 192.168.50.0 из канала, ведущего к сети 192.168.1.0, метод разделения диапазона исключит для него возможность передать обновление о маршруте к сети 192.168.50.0 в сеть 192.168.1.0. Аналогичным образом, для маршрутизатора Jack будет исключена возможность отправить информацию об обновлении по каналу, ведущему к сети 172 .16.0.0, поскольку он первоначально получил сведения о маршруте именно через этот канал.

Но проблема остается нерешенной, поскольку в течение следующих 180 секунд Danny и Jack продолжают передавать друг к другу через сеть 10.0.0.0 анонсы о маршруте к сети 192.168.50.0 с метрикой 2. Предположим, что маршрутизатор Danny по истечении тайм-аута удалил свои данные о маршруте к сети 192.168.50.0, а маршрутизатор Jack, прежде чем удалить по истечении тайм-аута свои сведения о сети, успел отправить маршрутизатору Danny обновление с информацией об этой сети с метрикой 2. После этого Jack удаляет по тайм-ауту маршрут из своей таблицы обычным образом, но вред уже нанесен. Теперь Danny предполагает, что у него имеется действительный маршрут к сети 192.168.50.0 с метрикой 2, полученный от маршрутизатора Jack. После этого он передает анонс об этом маршруте с метрикой 3 маршрутизатору Hallorann, который вводит его в свою таблицу и передает анонс о маршруте с метрикой 4 маршрутизатору Jack, и т.д. Маршрутный цикл снова возникает. Но ввод в действие в этой сети тайм-аутов удержания позволяет наконец решить проблему.

Если используются тайм-ауты удержания, то после первоначального истечения в маршрутизаторе Danny таймаута хранения маршрута к сети 192.168.50.0 для этого маршрута устанавливается тайм-аут удержания. В течение следующих 180 секунд любые обновления, касающиеся сети 192.168.50.0, игнорируются. Ко времени удаления маршрута, т.е. по истечении тайм-аута удержания маршрутизатор Jack имеет достоверную информацию о том, что маршрут стал недействительным, поэтому возникновение цикла предотвращается. Но описанные выше механизмы предотвращения циклов имеют один недостаток — большие затраты времени. В данном случае требуется 180 секунд для того, чтобы маршрутизаторы Jack и Danny обнаружили, что маршрут к сети 192.168.50.0 является недействительным[1].

При использовании активизированных обновлений и вытеснения маршрута маршрутизатор Hallorann сразу после отказа канала передает маршрутизаторам Danny и Jack анонсы (т.е. активизированные обновления) с бесконечной метрикой (это — вытеснение маршрута), касающиеся сети 192.168.50.0. Последние немедленно отмечают маршрут как предназначенный для удаления по истечении тайм-аута и устанавливают тайм-аут удержания. Тем самым устраняется обычно применяемый первоначальный тайм-аут хранения маршрута, равный 180 секундам. Кроме того, эти маршрутизаторы немедленно рассылают анонсы о маршруте с бесконечной метрикой к сети 192.168.50.0. Хотя в данном случае распространение информации о существовании маршрута с бесконечной метрикой не оказывает значительного влияния на работу всего протокола, оно способствует существенному сокращению продолжительности перехода сети в установившееся состояние, если между маршрутизаторами Jack и Danny имеется еще несколько маршрутизаторов (ведь если применяются только таймауты, предусмотренные по умолчанию, то для распространения информации об обновлении через каждый дополнительный транзитный переход требуется еще около 180 секунд).

Наконец, если канал, ведущий от маршрутизатора Hallorann к сети 192.168.50.0, снова становится работоспособным, Hallorann немедленно рассылает анонс с этой информацией маршрутизаторам Jack и Danny. Если таймауты удержания в маршрутизаторах Jack и Danny уже истекли, то они немедленно сообщают о новом маршруте всем другим маршрутизаторам, в результате чего отпадает необходимость ждать еще 30 секунд до наступления следующего интервала обновления.

Дополнительные возможности протокола RIP версии 1

Теперь, после ознакомления с основными операциями, предусмотренными протоколом RIP, рассмотрим некоторые его дополнительные возможности. Вначале следует уделить внимание предусмотренной в протоколе RIP возможности вводить больше одного маршрута к одной сети в таблицу маршрутизации и осуществлять распределение нагрузки. По умолчанию в маршрутизаторах Cisco могут использоваться вплоть до четырех маршрутов с равной стоимостью и осуществляться распределение нагрузки между ними. В протоколе RIP предусмотрено, что если маршрутизатор получает информацию о маршруте к какойто сети от двух или нескольких маршрутизаторов и во всех этих маршрутах используется одинаковая метрика, то он осуществляет распределение нагрузки между всеми этими маршрутами с равной стоимостью. Например, как показано на рис. 6, маршрутизатор Roland получает информацию о двух маршрутах к сети 192.168.200.0 от маршрутизаторов Flagg и Eddie, и оба они имеют метрику 1. Если Roland представляет собой маршрутизатор Cisco, то вводит оба маршрута в таблицу маршрутизации и перенаправляет по тому и другому маршрутам пакеты, равномерно чередуя эти пакеты (т.е. отправляет 50% пакетов маршрутизатору Flagg и 50% — Eddie). Такая организация работы является очень удобной, если каналы имеют одинаковую скорость, а если нет, то возникает проблема, известная как микрозатор (pinhole congestion).

Рис. 6. Сеть с несколькими маршрутами одинаковой стоимости

Микрозатор возникает, если в маршрутизаторе отсутствуют сведения о том, что два маршрута с одинаковой метрикой характеризуются разной скоростью. Такая проблема наиболее часто проявляется при использовании протокола RIP, поскольку этот протокол не предусматривает способа учета скорости канала. (Применяемые в нем метрики учитывают только количество транзитных переходов.) Но эта проблема может также возникать и при использовании других протоколов (обычно из-за неправильной настройки конфигурации). Если бы в предыдущем примере скорость канала от маршрутизатора Roland к маршрутизатору Flagg составляла 64 Кбит/с, а от маршрутизатора Roland к маршрутизатору Eddie — 1,544 Мбит/с (Т1), то Roland использовал бы только 64 Кбит/с из всей пропускной способности канала, равной 1,544 Мбит/с. В этом и проявляется микрозатор. При такой организации работы затор в канале Т1 фактически не возможен, но не существует способа передать об этом информацию маршрутизатору Roland. Этот маршрутизатор просто передает один пакет по каналу на 64 Кбит/с, второй — по каналу Т1, третий — по каналу на 64 Кбит/с и т.д. А если будут достигнуты пределы пропускной способности канала на 64 Кбит/с, прекратится дальнейшая передача пакетов и по каналу Т1. При использовании протокола RIP единственный способ предотвращения подобного микрозатора состоит в том, чтобы все резервные каналы с одинаковой метрикой имели одинаковую пропускную способность.

Еще одним недостатком протокола RIP версии 1 является то, что в нем не предусмотрена возможность передавать маски вместе с обновлениями маршрутов. Поэтому протокол RIP версии 1 нельзя использовать в сетях, работа которых основана на использовании сложных средств организации подсетей по принципу VLSM или C1DR. Поскольку в протоколе RIP версии 1 не предусмотрена передача масок вместе с обновлениями маршрутов, в маршрутизаторе должно использоваться предполагаемое значение маски, которое относится к полученному обновлению. Ниже перечислены основные правила, которые применяются в протоколе RIP к полученным обновлениям.

  • Если обновление, полученное через интерфейс, относится к сети того же класса, к которому принадлежат IP-адрес любого из интерфейсов маршрутизатора, то протокол RIP предусматривает применение к этому обновлению маски, используемой в интерфейсе. А если после применения к обновлению маски интерфейса устанавливаются биты в части адреса хоста этого обновления, то протокол RIP предусматривает вставку в таблицу маршрута с 32битовой маской (255.255.255.255), а это означает, что маршрут относится к отдельному хосту.
  • Если обновление, поступающее через интерфейс, не относится к сети того же класса, к которому относятся IP-адреса всех интерфейсов маршрутизатора, то протокол RIP предусматривает по умолчанию применение к этому обновлению маски сети класса А, В или С.

Ниже перечислены правила, которые применяются в протоколе RIP при передаче обновлений.

  • При передаче из интерфейса данных об обновлении протокол RIP предусматривает отправку в обновлении номеров подсетей, но не масок, если адрес сети класса А, В или С, соответствующий IP-адресу, применяемому к интерфейсу, через который передается обновление, совпадает с адресом сети класса А, В или С, который относится к записям маршрутов в обновлении, и маска, применяемая к передающему интерфейсу, совпадает с маской, используемой для подсетей в обновлении.
  • Если при передаче из интерфейса данных об обновлении адрес сети класса А, В или С, соответствующий IP-адресу, применяемому к интерфейсу, через который передается обновление, совпадает с адресом сети класса А, В или С, который относится к записям маршрутов в обновлении, но маска, применяемая к передающему интерфейсу, не совпадает с маской, используемой для подсетей в обновлении, протокол RIP не предусматривает отправку обновления.
  • Если при передаче из интерфейса данных об обновлении адрес сети класса А, В или С, соответствующий IP-адресу, применяемому к интерфейсу, через который передается обновление, не совпадает с адресом сети класса А, В или С, который относится к записям маршрутов в обновлении, протокол RIP требует, чтобы маршрут суммировался и рассматривался как маршрут ко всей сети класса А, В или С.

Для ознакомления с практическим примером применения этих правил рассмотрим сеть, показанную на рис. 7.

Рис. 7. Схема сети, применяемая в примере демонстрации правил передачи и приема

В данном примере маршрутизатор Pennywise передает маршрутизатору Silver три записи с данными о маршрутах: 10.0.0.0, 172.16.64.0 и 172.16.80.0. Обновление, касающееся сети 10.14.0.0, сводится к передаче данных о маршруте, относящемся ко всей сети 10.0.0.0, на основании правил передачи, которые предусмотрены протоколом RIP. В этом случае маршрутизатор Silver применяет маску /20 к двум Другим маршрутам к сети 172.16.0.0, поскольку их маска совпадает с маской, используемой в канале, через который были получены обновления.

Но если бы в канале между маршрутизаторами Silver и Pennywise использовалась маска /19, то Silver применил бы маску /19 к данным о маршруте к сети 172 .16.64.0 и маску /32 — к записи, касающейся сети 172 .16. 80.0. Как и при использовании 19 битовой маски, в этой записи были бы установлены биты в части хоста адреса. (Если вам непонятно, с чем это связано, снова перейдите к использованию двоичной арифметики и разделите этот адрес на части с обозначением сети, хоста и подсети на основе 19битовой маски.) Следует отметить, что такая ситуация весьма маловероятна, поскольку если бы в маршрутизаторе Pennywise использовалась маска /19 для канала 172.16.192.0, он никогда бы не отправил в своем обновлении запись 172.16.64. о или 172.16.80.0, согласно второму правилу передачи RIP. Поэтому при использовании маски /20 для сети 172.16.192.0 маршрутизатор Silver никогда не передаст маршрутизатору Pennywise обновление с данными о сети 172.16.128.0.

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

Общий перечень преимуществ и недостатков протокола RIP версии 1 приведен в Таблица 4.
Преимущество
Недостаток
  • Очень прост в изучении и настройке
  • Обычно не становится причиной возникновения циклов
  • Почти полностью гарантируется поддержка маршрутизаторами любых типов
  • Обеспечивает распределение нагрузки
  • Неэффективен (требует значительной части пропускной способности сети)
  • Продолжительное время перехода в установившееся состояние в больших сетях
  • Поддерживает только распределение нагрузки по маршрутам с равной стоимостью. Могут возникать пробпемы, связанные с микрозаторами
  • Не всегда обеспечивает предотвращение циклов
  • Ограниченная масштабируемость (не больше 15 транзитных переходов)
  • Не позволяет учитывать в метрике пропускную способность, задержку или надежность
  • Не поддерживает VLSM
  • Если сеть является большой, сложной и подверженной изменениям, маршрутизаторы могут так и не перейти в установившееся состояние
  • Широковещательные обновления могут вызвать существенные непроизводительные затраты процессорного времени хостов
  • Не поддерживает аутентификацию обновлений, а это означает, что существует возможность намеренно нарушить процесс маршрутизации путем несанкционированного применения маршрутизатора

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

Усовершенствования, связанные с внедрением протокола RIP версии 2

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

  • Поддержка VLSM. Вместе с обновлениями RIP 2 передаются маски подсети.
  • Многоадресатные обновления. Обновления передаются с помощью многоадресатной, а не широковещательной рассылки, поэтому сокращаются непроизводительные затраты процессорного времени в хостах, не участвующих в работе протокола RIP.
  • Поддержка аутентификации. В маршрутизатораx, совместимых с требованиями RFC 2453, поддерживается аутентификация на основе открытого текста. (А в маршрутизаторах Cisco поддерживается также аутентификация с шифрованием по алгоритму MD5.)

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

Примечания

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

См. также

  1. "RIP (сетевой протокол)" материал из Википедии — свободной энциклопедии.
  2. Описание протокола RIP (Routing Information Protocol)