Введение
Протокол компьютерной сети
Протокол маршрутизации (RIP) является одним из старейших протоколов маршрутизации на основе вектора расстояния, использующим количество переходов (хопов) в качестве метрики маршрутизации. RIP предотвращает образование петель маршрутизации, устанавливая ограничение на максимальное количество хопов в пути от источника до назначения. Максимальное количество хопов, разрешенное для RIP, составляет 15, что ограничивает размер поддерживаемых сетей. RIP реализует механизмы разделения горизонтов, отравления маршрутов и удержания (holddown) для предотвращения распространения некорректной информации о маршрутах. В RIPv1 маршрутизаторы широковещательно рассылают обновления со своей таблицей маршрутизации каждые 30 секунд. На ранних этапах развертывания таблицы маршрутизации были достаточно малы, чтобы трафик не был значительным. Однако с ростом сетей стало очевидно, что каждые 30 секунд может возникать резкий всплеск трафика, даже если маршрутизаторы были инициализированы в разное время. В большинстве сетевых сред RIP не является предпочтительным протоколом маршрутизации из-за медленного времени сходимости и плохой масштабируемости по сравнению с EIGRP, OSPF или IS-IS. Тем не менее, он прост в настройке, поскольку RIP не требует параметров, в отличие от других протоколов. RIP использует протокол пользовательских дейтаграмм (UDP) в качестве транспортного протокола и использует зарезервированный порт 520.
Разработка маршрутизации по вектору расстояния
На основе алгоритмов Беллмана — Форда и Форда — Фулкерсона протоколы маршрутизации на основе векторов расстояний начали внедряться с 1969 года в сетях передачи данных, таких как ARPANET и CYCLADES. Предшественником RIP был протокол Gateway Information Protocol (GWINFO), разработанный компанией Xerox в середине 1970-х годов для маршрутизации в своей экспериментальной сети. В составе набора протоколов Xerox Network Systems (XNS) GWINFO был преобразован в XNS Routing Information Protocol. Этот XNS RIP, в свою очередь, стал основой для ранних протоколов маршрутизации, таких как IPX RIP от Novell, протокол обслуживания таблицы маршрутизации (RTMP) от AppleTalk и IP RIP. В 1982 году дистрибутив Berkley Software Distribution операционной системы UNIX реализовал RIP в демоне routed. Выпуск 4.2BSD оказался популярным и послужил основой для последующих версий UNIX, которые реализовывали RIP в демонах routed или gated. В конечном итоге, RIP был широко внедрен до того, как стандарт, разработанный Чарльзом Хедриком, был утвержден как RIPv1 в 1988 году.
Количество хмелей в РПП
Методика маршрутизации, используемая RIP, подсчитывает количество маршрутизаторов, через которые необходимо пройти, чтобы достичь IP-сети назначения. Число хопов 0 обозначает сеть, непосредственно подключенную к маршрутизатору. 16 хопов обозначают сеть, которая недостижима, согласно ограничению максимального количества хопов в RIP.
Версии
Существует три стандартизированных версии протокола маршрутной информации: RIPv1 и RIPv2 для IPv4 и RIPng для IPv6.
Версия 1
Первоначальная спецификация RIP была опубликована в 1988 году. При запуске и каждые 30 секунд после этого маршрутизатор с реализацией RIPv1 рассылает запрос через каждый интерфейс, поддерживающий RIPv1. Соседние маршрутизаторы, получившие запрос, отвечают сегментом RIPv1, содержащим их таблицу маршрутизации. Запрашивающий маршрутизатор обновляет собственную таблицу маршрутизации, добавляя информацию о доступной IP-сети, количестве хопов и следующем хопе – IP-адресе интерфейса маршрутизатора, с которого был отправлен ответ RIPv1. Когда запрашивающий маршрутизатор получает обновления от разных соседних маршрутизаторов, он обновляет записи о доступных сетях в своей таблице маршрутизации только в том случае, если получает информацию о сети, которой еще нет в таблице, или о том, что до существующей сети можно добраться с меньшим количеством хопов. Таким образом, маршрутизатор RIPv1 в большинстве случаев будет иметь только одну запись для доступной сети – с наименьшим количеством хопов. Если маршрутизатор получает от двух разных соседних маршрутизаторов информацию о том, что до одной и той же сети можно добраться с одинаковым количеством хопов, но разными путями, сеть будет внесена в таблицу маршрутизации дважды, с указанием разных следующих хопов. Маршрутизатор с поддержкой RIPv1 затем выполняет так называемую балансировку нагрузки с равной стоимостью для IP-пакетов. Изначально предполагалось, что благодаря случайной инициализации обновления маршрутизации будут распространяться во времени, но на практике это оказалось не так. Салли Флойд и Ван Джейкобсон показали в 1994 году, что без небольшой рандомизации таймера обновления, таймеры со временем синхронизируются. RIPv1 можно настроить в тихий режим, при котором маршрутизатор запрашивает и обрабатывает таблицы маршрутизации соседних маршрутизаторов, поддерживая свою таблицу маршрутизации и количество хопов до доступных сетей в актуальном состоянии, но не отправляет свою таблицу маршрутизации в сеть без необходимости. Тихий режим обычно используется для хостов. RIPv1 использует классовую маршрутизацию. Периодические обновления маршрутизации не содержат информации о подсетях и не поддерживают маски подсети переменной длины (VLSM). Это ограничение не позволяет использовать подсети разного размера внутри одного класса сети. Иными словами, все подсети в классе сети должны быть одинакового размера. Также отсутствует поддержка аутентификации маршрутизаторов, что делает RIP уязвимым для различных атак.
Аналогичные протоколы
Протокол маршрутизации внутренних шлюзов (IGRP) Cisco был несколько более функциональным, чем RIP. Он принадлежит к тому же основному семейству протоколов маршрутизации на основе вектора расстояния. Компания Cisco прекратила поддержку и распространение IGRP в своем программном обеспечении для маршрутизаторов. Ему на смену пришел протокол Enhanced Interior Gateway Routing Protocol (EIGRP), представляющий собой совершенно новую разработку. Хотя EIGRP по-прежнему использует модель вектора расстояния, он связан с IGRP лишь тем, что использует ту же составную метрику маршрутизации. И IGRP, и EIGRP вычисляли единую составную метрику для каждого маршрута по формуле, включающей пять переменных: пропускную способность, задержку, надежность, нагрузку и MTU; однако на маршрутизаторах Cisco по умолчанию в этом вычислении используются только пропускная способность и задержка.