Протокол маршрутной информации (англ. Routing Information Protocol) — один из самых простых протоколов маршрутизации. Применяется в небольших компьютерных сетях, позволяет маршрутизаторам динамически обновлять маршрутную информацию (направление и дальность в хопах), получая ее от соседних маршрутизаторов.
История
Алгоритм маршрутизации RIP (алгоритм Беллмана — Форда) был впервые разработан в 1969 году, как основной для сети ARPANET.
Прототип протокола RIP — Gateway Information Protocol, часть пакета PARC Universal Packet.
Версия RIP, которая поддерживает протокол интернета была включена в пакет BSD операционной системы Unix под названием routed (route daemon), а также многими производителями, реализовавшими свою версию этого протокола. В итоге протокол был унифицирован в документе RFC 1058.
В 1994 году был разработан протокол RIP-2 (RFC 2453), который является расширением протокола RIP, обеспечивающим передачу дополнительной маршрутной информации в сообщениях RIP и повышающим уровень безопасности. Протокол RIP является одним из самых старых протоколов в сети Интернет, наряду с протоколом DVMRP.
Для работы в среде IPv6 была разработана версия RIPng.
Техническая информация
RIP — так называемый протокол дистанционно-векторной маршрутизации, который оперирует транзитными участками (хоп, hop) в качестве метрики маршрутизации. Максимальное количество транзитных участков, разрешенное в RIP — 15 (метрика 16 означает «бесконечно большую метрику»). Каждый RIP-маршрутизатор по умолчанию вещает в сеть свою полную таблицу маршрутизации раз в 30 секунд, довольно сильно нагружая низкоскоростные линии связи. RIP работает в сетях 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) |