Протокол информации о маршрутизации ( RIP ) — один из старейших протоколов маршрутизации на основе вектора расстояния , который использует количество переходов в качестве показателя маршрутизации . RIP предотвращает образование петель маршрутизации , ограничивая количество прыжков , разрешенных на пути от источника к месту назначения. Максимальное количество переходов, разрешенное для RIP, равно 15, что ограничивает размер сетей, которые может поддерживать RIP.
RIP реализует механизмы разделения горизонта , отравления маршрутов и удержания для предотвращения распространения неправильной информации о маршрутизации.
Маршрутизаторы RIPv1 передают обновления своей таблицы маршрутизации каждые 30 секунд. В ранних развертываниях таблицы маршрутизации были достаточно маленькими, поэтому трафик не был значительным. Однако по мере того, как сети росли в размерах, стало очевидно, что каждые 30 секунд может возникать огромный всплеск трафика, даже если маршрутизаторы инициализировались в случайное время.
В большинстве сетевых сред RIP не является предпочтительным выбором протокола маршрутизации , поскольку его время конвергенции и масштабируемость хуже, чем у EIGRP , OSPF или IS-IS . Однако его легко настроить, поскольку RIP не требует никаких параметров, в отличие от других протоколов.
RIP использует протокол пользовательских дейтаграмм (UDP) в качестве транспортного протокола, и ему назначается зарезервированный номер порта 520. [1]
Протоколы маршрутизации на основе вектора расстояния , основанные на алгоритме Беллмана-Форда и алгоритме Форда-Фалкерсона , начали внедряться с 1969 года в сетях передачи данных , таких как ARPANET и CYCLADES . Предшественником RIP был протокол информации о шлюзе (GWINFO), разработанный компанией Xerox в середине 1970-х годов для маршрутизации своей экспериментальной сети. В рамках набора протоколов Xerox Network Systems (XNS) GWINFO преобразуется в протокол информации о маршрутизации XNS. Этот XNS RIP, в свою очередь, стал основой для ранних протоколов маршрутизации, таких как Novell IPX RIP, AppleTalk Routing Table Maintenance Protocol (RTMP) и IP RIP. В дистрибутиве Berkley Software Distribution операционной системы UNIX 1982 года RIP был реализован в демоне маршрутизации . Версия 4.2BSD оказалась популярной и стала основой для последующих версий UNIX, в которых RIP был реализован в демоне маршрутизации или шлюзования . В конечном итоге RIP получил широкое распространение [2] до того, как стандарт, написанный Чарльзом Хедриком, был принят как RIPv1 в 1988 году. [3]
Метрика маршрутизации, используемая RIP, подсчитывает количество маршрутизаторов, которые необходимо пройти для достижения IP-сети назначения. Число переходов 0 обозначает сеть, которая напрямую подключена к маршрутизатору. 16 переходов обозначают сеть, которая недоступна в соответствии с ограничением переходов RIP. [4]
Существует три стандартизированные версии протокола информации о маршрутизации: RIPv1 и RIPv2 для IPv4 и RIPng для IPv6 .
Исходная спецификация RIP была опубликована в 1988 году. [3] При запуске и каждые 30 секунд после этого маршрутизатор с реализацией RIPv1 передает на адрес 255.255.255.255 сообщение запроса через каждый интерфейс с поддержкой RIPv1. Соседние маршрутизаторы, получившие сообщение запроса, отвечают сегментом RIPv1, содержащим их таблицу маршрутизации . Запрашивающий маршрутизатор обновляет свою собственную таблицу маршрутизации, указывая доступный IP-адрес сети, количество переходов и следующий переход, то есть IP-адрес интерфейса маршрутизатора, с которого был отправлен ответ RIPv1. Поскольку запрашивающий маршрутизатор получает обновления от разных соседних маршрутизаторов, он будет обновлять только доступные сети в своей таблице маршрутизации, если он получает информацию о доступной сети, которой еще нет в его таблице маршрутизации, или информацию о том, что сеть, которую он имеет в своей таблице маршрутизации, является достижим с меньшим количеством переходов. Таким образом, маршрутизатор RIPv1 в большинстве случаев будет иметь только одну запись для доступной сети — сеть с наименьшим количеством переходов. Если маршрутизатор получает информацию от двух разных соседних маршрутизаторов о том, что одна и та же сеть доступна с одинаковым количеством переходов, но по двум разным маршрутам, сеть будет внесена в таблицу маршрутизации дважды с разными маршрутизаторами следующего перехода. Маршрутизатор с поддержкой RIPv1 затем выполнит так называемую балансировку нагрузки с равной стоимостью для IP-пакетов. [4]
Маршрутизаторы с поддержкой RIPv1 не только запрашивают таблицы маршрутизации других маршрутизаторов каждые 30 секунд, они также прослушивают входящие запросы от соседних маршрутизаторов и по очереди отправляют свою собственную таблицу маршрутизации. Таким образом, таблицы маршрутизации RIPv1 обновляются каждые 25–35 секунд. [4] Протокол RIPv1 добавляет небольшую случайную переменную времени ко времени обновления, чтобы избежать синхронизации таблиц маршрутизации по локальной сети. [5] Считалось, что в результате случайной инициализации обновления маршрутизации будут распространяться во времени, но на практике это было не так. Салли Флойд и Ван Джейкобсон показали в 1994 году, что без небольшой рандомизации таймера обновления таймеры синхронизируются с течением времени. [6]
RIPv1 можно настроить в тихом режиме, чтобы маршрутизатор запрашивал и обрабатывал соседние таблицы маршрутизации, а также обновлял свою таблицу маршрутизации и количество переходов для доступных сетей, но не отправлял без необходимости свою собственную таблицу маршрутизации в сеть. Тихий режим обычно реализуется на хостах. [7]
RIPv1 использует классовую маршрутизацию. Периодические обновления маршрутизации не содержат информации о подсети и не поддерживают маски подсети переменной длины (VLSM). Это ограничение делает невозможным наличие подсетей разного размера внутри одного класса сети . Другими словами, все подсети в классе сети должны иметь одинаковый размер. Также отсутствует поддержка аутентификации маршрутизатора, что делает RIP уязвимым для различных атак.
Из-за недостатков исходной спецификации RIP, версия RIP 2 (RIPv2) была разработана в 1993 году, [4] опубликована в 1994 году, [8] и объявлена Интернет-стандартом 56 в 1998 году. [9] Она включала возможность передачи информации о подсети. , тем самым поддерживая бесклассовую междоменную маршрутизацию (CIDR). Для обеспечения обратной совместимости ограничение количества переходов осталось равным 15. RIPv2 имеет средства для полного взаимодействия с более ранней спецификацией, если все поля протокола Must Be Zero в сообщениях RIPv1 указаны правильно. Кроме того, функция переключения совместимости [9] позволяет выполнять тонкую настройку совместимости.
Чтобы избежать ненужной нагрузки на хосты, не участвующие в маршрутизации, RIPv2 рассылает всю таблицу маршрутизации всем соседним маршрутизаторам по адресу 224.0.0.9 , в отличие от RIPv1, который использует широковещательную рассылку . Одноадресная адресация по-прежнему разрешена для специальных приложений.
Аутентификация ( MD5 ) для RIP была введена в 1997 году. [10] [11]
Теги маршрутов также были добавлены в RIP версии 2. Эта функция позволяет различать маршруты, полученные по протоколу RIP, и маршруты, полученные по другим протоколам.
RIPng (RIP следующего поколения) — это расширение RIPv2 для поддержки IPv6 , интернет-протокола следующего поколения. [12] Основные различия между RIPv2 и RIPng:
RIPng отправляет обновления на порт UDP 521, используя группу многоадресной рассылки ff02::9 .
Сообщения RIP используют протокол пользовательских дейтаграмм на порту 520, и все сообщения RIP, которыми обмениваются маршрутизаторы, инкапсулируются в дейтаграмму UDP. [4]
RIP определил два типа сообщений:
Протокол информации о маршрутизации использует в своей работе следующие таймеры: [13]
Собственный протокол внутренней маршрутизации шлюза Cisco (IGRP) был несколько более функциональным протоколом, чем RIP. Он принадлежит к тому же базовому семейству протоколов маршрутизации с вектором расстояния .
Cisco прекратила поддержку и распространение IGRP в своем программном обеспечении маршрутизаторов. На смену ему пришел усовершенствованный протокол маршрутизации внутреннего шлюза (EIGRP), который представляет собой совершенно новую конструкцию. Хотя EIGRP по-прежнему использует модель вектора расстояния, она связана с IGRP только тем, что использует ту же составную метрику маршрутизации. И IGRP, и EIGRP рассчитывали единую составную метрику для каждого маршрута по формуле пяти переменных: пропускная способность , задержка , надежность , нагрузка и MTU ; хотя на маршрутизаторах Cisco по умолчанию в этом расчете используются только пропускная способность и задержка.