Wprowadzenie do protokołu RIP
Router musi znać następny przeskok do odległych sieci, aby przekazywać datagramy IP. Routing statyczny wymaga ręcznego utrzymywania wpisów, więc przy zmianach topologii i wzroście sieci potrzebny jest protokół dynamiczny. Protokół Informacji o Trasach (RIP) należy do najstarszych i najprostszych protokołów tego typu.
RIP jest klasycznym przykładem algorytmu . Jeśli sąsiad podaje metrykę 10 do celu, router dodaje koszt jednego przeskoku, czyli 1, i oblicza wartość 11. Następnie porównuje tę wartość z metrykami otrzymanymi od innych sąsiadów.
Jako , RIP jest przeznaczony do działania wewnątrz jednego systemu autonomicznego, zwykle w sieciach małych lub średnich. RIPv1 pokazuje działanie wektora odległości i ograniczenia routingu klasowego.
Jak działa RIP: aktualizacje co 30 sekund
RIP opiera wymianę informacji na okresowych aktualizacjach. Routery nie utrzymują sesji sąsiedztwa takiej jak BGP. Wysyłają komunikaty do sąsiadów zgodnie z zasadami adresowania danej sieci i przyjmują ich odpowiedzi. Implementacja może lekko losować moment wysłania, aby ograniczyć jednoczesne transmisje.
Mechanizm Podstawowy
- Okresowe aktualizacje: Zwykle co 30 sekund router z uruchomionym RIP wysyła pełny zestaw tras dopuszczonych do ogłoszenia w komunikatach aktualizacyjnych. Implementacja może rozłożyć czas wysyłania niewielkim losowym przesunięciem. Aktualizacja wyzwalana może przekazać zmianę przed kolejnym cyklem okresowym.
- Transmisja rozgłoszeniowa: W RIPv1 na sieciach obsługujących rozgłoszenia komunikaty są wysyłane jako na adres . Datagram może odebrać każde urządzenie w lokalnej sieci, choć host, który nie prowadzi procesu RIP, odrzuca go po sprawdzeniu odpowiednich pól. Na łączach punkt-punkt adresowanie może być bezpośrednie.
- Transport UDP: Komunikaty RIP są enkapsulowane w datagramach UDP (User Datagram Protocol). UDP nie tworzy połączenia ani nie gwarantuje dostarczenia, dlatego RIP powtarza informacje w kolejnych aktualizacjach i korzysta z liczników czasu. RIP używa portu UDP .
- Aktualizacja tablicy routingu: Po otrzymaniu aktualizacji router analizuje każdą trasę i zwiększa jej metrykę o 1, zgodnie z kosztem jednego przeskoku. Jeśli wynik jest lepszy, wpisuje trasę do własnej tablicy i ustawia nadawcę jako następny przeskok. Zmiana informacji od aktualnego następnego przeskoku może również zwiększyć znaną metrykę.
Przykład: Poznawanie Nowej Trasy
- Router A jest bezpośrednio połączony z Routerem B. Router B jest bezpośrednio połączony z siecią .
- W swojej 30-sekundowej aktualizacji, Router B rozgłasza swoją tablicę, która zawiera wpis: "Cel: , Metryka: 1 (bezpośrednio podłączone)".
- Router A otrzymuje to rozgłoszenie. Sprawdza swoją tablicę. Nie ma trasy do .
- Router A oblicza własną metrykę: .
- Router A instaluje nową trasę: "Cel: , Metryka: 2, Następny-Przeskok: ".
Metryka RIP: Liczba Przeskoków
Aby wybrać trasę, RIP używa metryki liczby przeskoków (ang. hop count). Wartość zwiększa się o 1 przy każdym przejściu przez kolejny router. W typowej konfiguracji każdy taki krok ma koszt 1.
Trasę do sieci bezpośrednio podłączonej zwykle inicjalizuje się kosztem 1. Router ogłaszający ją przekazuje tę wartość, a każdy kolejny router zwiększa ją o 1. W efekcie trasa poznana przez jeden sąsiedni router ma metrykę 2.
Ograniczenie: Prędkość nie ma znaczenia
Liczba przeskoków nie opisuje przepustowości, opóźnienia ani obciążenia łącza. Dwa łącza o różnych parametrach mogą więc otrzymać ten sam koszt.
W powyższym przykładzie pakiet musi trafić z serwera podłączonego do Routera A do serwera podłączonego do Routera D.
- Ścieżka 1 (przez B): Pakiet przechodzi z A do B (1 przeskok), a następnie z B do D (kolejny 1). Całkowita liczba przeskoków wynosi 2. Ta ścieżka wykorzystuje łącze 1 Gb/s.
- Ścieżka 2 (przez C): Pakiet przechodzi z A do C (1 przeskok), a następnie z C do D (kolejny 1). Całkowita liczba przeskoków wynosi 2. Ta ścieżka wykorzystuje łącza 56 kb/s.
Ponieważ RIP minimalizuje liczbę przeskoków, obie ścieżki mają w tym przykładzie metrykę 2. Sam RIP nie rozróżnia ich przepustowości, więc reguła rozstrzygająca może skierować ruch przez wolniejsze łącza, mimo że druga trasa ma większą przepustowość. To ograniczenie zmniejsza przydatność RIP w sieciach z różnymi typami łączy.
Maksymalna Liczba Przeskoków
RIP definiuje maksymalną poprawną metrykę na 15. Wartość 16 oznacza nieskończoność, czyli trasę nieosiągalną. Limit ogranicza rozmiar obsługiwanych sieci i pomaga zakończyć część pętli, choć nie zastępuje mechanizmów split horizon ani triggered updates.
Konwergencja i Problem Liczenia do Nieskończoności
RIP opiera się na okresowych aktualizacjach i danych od sąsiadów, więc po zmianie topologii routery potrzebują czasu na uzgodnienie nowych metryk. Ten czas nazywa się konwergencją i decyduje o chwili uzyskania nowych tras po awarii łącza.
Scenariusz: Liczenie do Nieskończoności
Rozpatrzmy scenariusz awarii używany do wyjaśnienia pętli w prostych protokołach wektora odległości. Dla przejrzystości przyjmijmy, że split horizon, poisoned reverse i aktualizacje wyzwalane są wyłączone.
| Czas | Metryka Routera A do Y | Metryka Routera B do Y | Akcja |
|---|---|---|---|
| T0 | 3 | 2 | Stan stabilny. C może dotrzeć do Y w 1 przeskoku, B w 2, A w 3. |
| T1 | 3 | 2 | Łącze od C do Y ulega awarii. C oznacza trasę jako nieosiągalną. |
| T2 | 3 | 4 (przez A) | B otrzymuje aktualizację od A (który wciąż ma starą trasę, metryka 3). B myśli, że znalazł nową ścieżkę przez A. Powstaje pętla routingu (B->A->B). |
| T3 | 5 (przez B) | 4 | A otrzymuje aktualizację od B (metryka 4) i aktualizuje własną metrykę na 5. Pętla trwa. |
| ... | ... | ... | Metryki rosną... |
| T-final | 16 | 16 | Metryka osiąga 16, a trasa jest uznana za nieosiągalną. |
Gdy pętla jest aktywna, pakiety do Sieci Y mogą być przekazywane między routerami aż do wygaśnięcia pola TTL, co zużywa przepustowość i zasoby procesora. Metryki rosną przy kolejnych aktualizacjach, aż osiągną wartość 16. Czas zależy od topologii, timerów i użytych aktualizacji wyzwalanych.
Liczniki Czasu i Mechanizmy Zapobiegania Pętlom
RIP stosuje kilka liczników czasu i mechanizmów ograniczających skutki nieaktualnych informacji oraz pętli routingu.
Liczniki Czasu
- Licznik Aktualizacji (30s): Definiuje, jak często wysyłane są aktualizacje routingu.
- Licznik Unieważnienia (180s): Jeśli router nie otrzyma aktualizacji dla określonej trasy przez 180 sekund, uznaje ją za nieosiągalną i ustawia metrykę 16. Wpis pozostaje w tablicy podczas dalszego rozgłaszania tej informacji.
- Licznik Usunięcia (120s): Po 120 sekundach od unieważnienia, czyli po 300 sekundach od ostatniej poprawnej aktualizacji (180 + 120 = 300s), wpis jest usuwany z tablicy routingu.
Techniki Zapobiegania Pętlom
- Dzielony Horyzont (Split Horizon): Router nie ogłasza trasy przez interfejs, przez który ją poznał. Ogranicza to proste pętle między dwoma routerami, lecz nie usuwa wszystkich pętli w większej topologii.
- Zatruwanie Trasy (Route Poisoning): Po wykryciu awarii router może rozgłosić daną trasę z metryką 16. Sąsiednie routery oznaczają ją wtedy jako nieosiągalną. Wariant poisoned reverse rozgłasza taką wartość przez interfejs, z którego trasa została poznana, a wyzwalana aktualizacja ogranicza czas potrzebny na przekazanie zmiany.
Ograniczenia i Przestarzałość RIPv1
RIPv1 ma ograniczenia wynikające z klasowego formatu aktualizacji, braku uwierzytelniania oraz użycia rozgłoszeń. Z tego powodu nie odpowiada wymaganiom wielu współczesnych sieci.
- Jest Klasowym Protokołem Routingu: Aktualizacje routingu RIPv1 nie zawierają informacji o masce podsieci. Router wyznacza maskę na podstawie klasy adresu, na przykład /8 dla klasy A albo /16 dla klasy B. Oznacza to, że RIPv1 nie obsługuje . Projekt wykorzystujący podsieci o różnych rozmiarach wymaga protokołu przekazującego maskę razem z prefiksem.
- Brak Uwierzytelniania: RIPv1 nie ma mechanizmu uwierzytelniania aktualizacji routingu. Urządzenie z dostępem do segmentu może więc wysłać fałszywe informacje, które skierują ruch przez nieprawidłowy następny przeskok albo do nieosiągalnego celu.
- Użycie Rozgłoszeń: RIPv1 wysyła aktualizacje jako rozgłoszenia. Każdy host w segmencie może odebrać taką ramkę, choć urządzenie bez procesu RIP odrzuci datagram po sprawdzeniu adresowania i protokołu. Powoduje to ruch oraz obsługę, których można uniknąć przez multicast RIPv2.
RIPv1 jest dziś traktowany jako protokół historyczny. Analiza jego działania pomaga zrozumieć ewolucję protokołów routingu. RIPv2 zachował podstawową metrykę i dodał obsługę VLSM, uwierzytelniania oraz aktualizacji multicastowych.