Протокол маршрутной информации ( RIP ) — один из старейших протоколов маршрутизации на основе векторов расстояний , который использует количество переходов в качестве метрики маршрутизации . RIP предотвращает возникновение петель маршрутизации , устанавливая ограничение на количество переходов, разрешенных на пути от источника до места назначения. Максимальное количество переходов, разрешенных для RIP, составляет 15, что ограничивает размер сетей, которые может поддерживать RIP.
RIP реализует механизмы разделения горизонта , отравления маршрута и удержания для предотвращения распространения неверной информации о маршрутизации.
В маршрутизаторах RIPv1 обновления маршрутной таблицы передавались каждые 30 секунд. В ранних развертываниях таблицы маршрутизации были достаточно малы, так что трафик не был значительным. Однако по мере роста сетей стало очевидно, что может быть огромный всплеск трафика каждые 30 секунд, даже если маршрутизаторы инициализировались в случайные моменты времени.
В большинстве сетевых сред RIP не является предпочтительным выбором протокола маршрутизации , поскольку его время сходимости и масштабируемость слабы по сравнению с EIGRP , OSPF или IS-IS . Однако его легко настроить, поскольку RIP не требует никаких параметров, в отличие от других протоколов.
RIP использует протокол пользовательских дейтаграмм (UDP) в качестве транспортного протокола и ему назначен зарезервированный номер порта 520. [1]
На основе алгоритма Беллмана-Форда и алгоритма Форда-Фалкерсона протоколы маршрутизации на основе вектора расстояния начали внедряться с 1969 года в сетях передачи данных, таких как ARPANET и CYCLADES . Предшественником RIP был протокол Gateway Information Protocol (GWINFO), разработанный Xerox в середине 1970-х годов для маршрутизации экспериментальной сети. Как часть набора протоколов Xerox Network Systems (XNS), GWINFO трансформировался в протокол маршрутной информации XNS. Этот XNS RIP, в свою очередь, стал основой для ранних протоколов маршрутизации, таких как Novell IPX RIP, AppleTalk Routing Table Maintenance Protocol (RTMP) и IP RIP. Berkeley Software Distribution 1982 года операционной системы UNIX реализовал RIP в демоне routed . Выпуск 4.2BSD оказался популярным и стал основой для последующих версий UNIX, которые реализовали RIP в демоне routed или gated . В конечном итоге протокол 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 в 1993 году была разработана версия RIP 2 (RIPv2), [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 Interior Gateway Routing Protocol (IGRP) был несколько более эффективным протоколом, чем RIP. Он принадлежит к тому же базовому семейству протоколов маршрутизации на основе векторов расстояний .
Cisco прекратила поддержку и распространение IGRP в своем программном обеспечении маршрутизаторов. Его заменил Enhanced Interior Gateway Routing Protocol (EIGRP), который является совершенно новой разработкой. Хотя EIGRP по-прежнему использует модель вектора расстояния, он связан с IGRP только в использовании той же составной метрики маршрутизации. И IGRP, и EIGRP вычисляли одну составную метрику для каждого маршрута по формуле из пяти переменных: пропускная способность , задержка , надежность , нагрузка и MTU ; хотя на маршрутизаторах Cisco по умолчанию в этом расчете используются только пропускная способность и задержка.