RIP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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. Також існує можливість шифрувати аутентифікаційний код за допомогою .


   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 — містить реальні дані аутентифікації.

Реалізації[ред.ред. код]

Див. також[ред.ред. код]