Перейти до вмісту

Routing Information Protocol

Матеріал з Вікіпедії — вільної енциклопедії.

Routing Information Protocol, RIP — один із найрозповсюдженіших протоколів маршрутизації в невеликих комп'ютерних мережах, який дозволяє маршрутизаторам динамічно оновлювати маршрутну інформацію (напрямок і дальність в хопах), отримуючи її від сусідніх маршрутизаторів.

Історія

[ред. | ред. код]

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

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

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

У 1994 р. був розроблений протокол RIP2 (RFC 2453), який є розширенням протоколу RIP, що забезпечує передачу додаткової маршрутної інформації в повідомленнях RIP і підвищує рівень безпеки.

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

Технічна інформація

[ред. | ред. код]

RIP — так званий дистанційно-векторний протокол, який оперує хопами як метрикою маршрутизації. Максимальна кількість хопів, дозволений RIP — 15 (метрика 16 означає «нескінченно велику метрику», тобто недосяжний сегмент мережі). Кожен RIP-маршрутизатор за замовчуванням сповіщає в мережу свою повну таблицю маршрутизації раз на 30 секунд, генеруючи досить багато трафіку на низькошвидкісних лініях зв'язку. RIP працює на мережевому рівні стека TCP/IP, використовуючи UDP порт 520.

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

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

[ред. | ред. код]
      0               1               2               3
      0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  command (1)  |  version (1)  |       must be zero (2)        |
     +---------------+---------------+-------------------------------+
     |                                                               |
     ~                         RIP Entry (20)                        ~
     |                                                               |
     +---------------+---------------+---------------+---------------+

command — Команда, визначає призначення датаграми (1 — request; 2 — response)

version — Номер версії, залежно від версії, визначається формат пакета

must be zero — повинно бути нулем;

RIP Entry — (RTE) Запис маршрутної інформації RIP. RIP пакет може містити від 1 до 25 записів RIP Entry.


Формат RIP Entry для протоколу RIP-1 (version = 1)

[ред. | ред. код]
      0               1               2               3
      0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | 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
   0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Address Family Identifier (2) |        Route Tag (2)          |
  +-------------------------------+-------------------------------+
  |                         IP 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
   0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Command (1)   | Version (1)   |            unused             |
  +---------------+---------------+-------------------------------+
  |             0xFFFF            |    Authentication Type (2)    |
  +-------------------------------+-------------------------------+
  ~                       Authentication (16)                     ~
  +---------------------------------------------------------------+

Command — команда, визначає призначення датаграми (1 — запит, 2 — відповідь)

Version — номер версії;, залежно від версії, визначається формат пакету.

unused — зарезервоване поле.

0xFFFF — вводиться значення FFFF в поле сімейство, щоб вказати, що вхід містить інформацію аутентифікації, а не інформацію маршрутизації.

Authentication Type — визначає метод, який використовується для аутентифікації.

Authentication — містить реальні дані аутентифікації.

Реалізації

[ред. | ред. код]

Див. також

[ред. | ред. код]