Wprowadzenie: algorytmy routingu
Internet łączy wiele sieci i prefiksów adresowych. Gdy wysyłasz wiadomość lub żądasz strony, pakiet przechodzi przez routery, które wybierają kolejny etap przekazywania na podstawie adresu docelowego. Każdy router wykonuje lokalną decyzję i przekazuje pakiet do następnego przeskoku. Routery wykonują te decyzje w warstwie sieciowej.
znajduje się na styku dwóch lub więcej sieci i podejmuje kluczową decyzję, dokąd wysłać każdy przechodzący . Ale aby podjąć tę decyzję, potrzebuje mapy. Ta "mapa" nazywana jest tablicą routingui zawiera listę wskazówek: "Aby dotrzeć do sieci X, wyślij pakiet do następnego routera Y."
Topologia sieci może się zmieniać z powodu awarii łączy, dodania routera lub zmiany konfiguracji. Routery pobierają informacje o osiągalności i aktualizują tablice routingu zgodnie z regułami algorytmu routingu. Algorytm może działać rozproszony, więc każdy router wykonuje obliczenia na podstawie lokalnych danych oraz komunikatów protokołu. W dalszych sekcjach opisano trzy rodziny takich algorytmów.
Cel algorytmu routingu: wybór trasy
Algorytm routingu to zbiór zasad i procedur używanych przez routery do poznawania sieci, dzielenia się tą informacją z innymi routerami i obliczania najlepszej ścieżki (lub ścieżek) do wszystkich osiągalnych miejsc docelowych. Ostatecznym celem jest wypełnienie tablicy routingu wysokiej jakości trasami bez pętli.
Kryteria wyboru trasy: metryka
Ocena trasy zależy od protokołu i jego konfiguracji. Nie każdy protokół interpretuje większą wartość jako gorszą, więc definicję kierunku porównania określa dokumentacja danego protokołu. W protokołach, które minimalizują metrykę, o wyborze decyduje . Metryka to wartość liczbowa przypisana do ścieżki. W protokołach opartych na minimalizacji opisuje koszt wykorzystania trasy. Przy identycznych wartościach protokół może stosować dodatkowe kryteria wyboru, takie jak identyfikator routera albo kolejność konfiguracji. Przykładowe metryki to:
- Liczba przeskoków: Liczba routerów, które pakiet musi przekroczyć. Prosta, ale nie uwzględnia prędkości łączy.
- Przepustowość: Zdolność łączy do przenoszenia danych. W uproszczonym modelu wyższa przepustowość może dawać mniejszy składnik kosztu, zapisany jako . OSPF używa kosztu interfejsu i sumuje go na trasie.
- Opóźnienie (Latencja): Czas potrzebny na pokonanie łączy przez pakiet.
- Obciążenie: Jak bardzo zajęte są łącza.
- Koszt: Wartość zdefiniowana administracyjnie, często oparta na kombinacji czynników lub kosztach pieniężnych.
Wektor odległości: wymiana metryk
Wektor odległości wymienia między sąsiadami informacje o osiągalnych celach i metrykach. Router zna własne prefiksy oraz sąsiadów, a dodatkowe trasy wyznacza z otrzymywanych wartości. Wpis trasy zawiera zwykle cel, metrykę i następny przeskok, bez kompletnego opisu wszystkich łączy.
Jak działa: wymiana informacji
Podstawowa zasada algorytmu Wektora Odległości jest prosta i zdecentralizowana, oparta na algorytmie :
- Każdy router utrzymuje tablicę routingu, która zawiera listę wszystkich znanych miejsc docelowych, odległość (metrykę) do tego miejsca oraz następny router (next-hop) na ścieżce.
- W RIP router wysyła okresowo swoją całą tablicę routingu do bezpośrednio podłączonych sąsiadów, zwykle co 30 sekund. Inne protokoły wektora odległości używają własnych timerów i formatów aktualizacji.
- Gdy router otrzymuje tablicę od sąsiada, porównuje otrzymane informacje z własnymi. Dla każdego miejsca docelowego w tablicy sąsiada oblicza nową potencjalną odległość: , gdzie to odległość sąsiada do celu, a to koszt łącza do tego sąsiada.
- Jeśli ta nowo obliczona odległość jest lepsza (niższa) niż ta, którą ma obecnie w swojej tablicy, aktualizuje swój wpis, ustawiając nową, niższą odległość i wpisując sąsiada, od którego otrzymał aktualizację, jako następny przeskok.
Wymiana informacji z sąsiadami prowadzi do kolejnych aktualizacji tras, wysyłanych okresowo albo po zmianie zgodnie z protokołem. Stabilny stan spójnych informacji routingowych nazywany jest .
Przykład: Problem „Liczenia do Nieskończoności”
Wektor odległości wolniej reaguje na niektóre awarie łączy niż na poprawę metryki. Zjawisko narastania metryki w pętli nazywa się problemem liczenia do nieskończoności.
Rozważmy prostą sieć: Router A jest podłączony do Routera B, który jest podłączony do Sieci X. Metryką jest liczba przeskoków.
- Stan Stabilny: B ogłasza, że może dotrzeć do X z metryką (bezpośrednio podłączone). A otrzymuje tę informację, dodaje własny koszt , aby dotrzeć do B, i instaluje trasę do X przez B z metryką .
- Awaria Łącza: Łącze między B a X ulega awarii. B nie ma już trasy do X.
- Rozprzestrzenia się Zła Plotka: Zanim B poinformuje A o awarii, okresowa aktualizacja od A dociera do B. Tablica A mówi: "Mogę dotrzeć do Sieci X w krokach".
- Pętla Routingu: B otrzymuje to ogłoszenie od A i przyjmuje, że A ma ścieżkę do X. Może dotrzeć do A w kroku, więc nowa ścieżka do X prowadzi przez A z kosztem . B aktualizuje swoją tablicę, aby wskazywała na A.
- Rozpoczyna się liczenie: W następnej aktualizacji A informuje B o swojej trasie (koszt ). B aktualizuje swój koszt na . Następnie A słyszy od B (koszt ) i aktualizuje swój koszt na . Potem B słyszy od A (koszt ) i aktualizuje na . Pakiety przeznaczone dla X mogą krążyć między A i B, a metryka rośnie do wartości uznanej przez protokół za nieskończoność. W RIP domyślna wartość nieskończoności wynosi .
Problem ograniczają mechanizmy takie jak dzielony horyzont (pomijanie trasy w ogłoszeniu wysyłanym przez interfejs, z którego została poznana), zatruwanie trasy i liczniki czasu wstrzymania. W RIP wartość 16 oznacza nieskończoność, więc trasy o liczbie przeskoków od 1 do 15 mogą być używane. Klasycznym protokołem wykorzystującym ten algorytm jest ().
Stan łącza: baza topologii
Druga główna rodzina, stan łącza, polega na rozpowszechnianiu opisów lokalnych połączeń. Routery w tym samym obszarze utrzymują zgodną bazę topologii i niezależnie obliczają trasy z własnego punktu widzenia. Baza opisuje relacje między routerami, a jej zakres ogranicza liczbę informacji potrzebnych do obliczeń.
Jak działa: baza topologii i najkrótsza ścieżka
Proces stanu łącza obejmuje kilka kroków opartych na algorytmie i metodzie Najpierw Najkrótsza Ścieżka ():
- Odkrywanie sąsiadów i kosztów łączy: Każdy router najpierw odkrywa swoich bezpośrednio podłączonych sąsiadów i określa koszt (metrykę) łącza do każdego z nich.
- Utwórz Pakiet Stanu Łącza (LSP): Każdy router pakuje te informacje: swój identyfikator, listę sąsiadów i koszt do każdego z nich, w małą wiadomość zwaną .
- Rozpowszechnij informacje w obszarze: Router wysyła swój opis stanu łącza do sąsiadów. Otrzymany opis jest zapisywany, a następnie przekazywany dalej zgodnie z regułami protokołu. Ten proces, znany jako zalewanie (flooding), dostarcza routerom w obszarze kopie opisów innych routerów.
- Zbuduj bazę topologii: Zbierając opisy stanu łącza, każdy router buduje zgodną bazę danych obszaru.
- Uruchom Algorytm Najpierw Najkrótsza Ścieżka (): Mając kompletną mapę, każdy router uruchamia algorytm (), umieszczając siebie w korzeniu drzewa i obliczając najkrótszą ścieżkę do każdego innego węzła i sieci. Wynikiem jest kompletne drzewo najlepszych tras.
- Wypełnij Tablicę Routingu: Z obliczonego drzewa najkrótszych ścieżek router wyodrębnia najlepsze trasy i instaluje je w swojej tablicy routingu.
Po zmianie w sieci, na przykład po awarii łącza, router źródłowy aktualizuje opis stanu i rozsyła go zgodnie z protokołem. Pozostałe routery aktualizują bazę i ponownie uruchamiają . Wynikowe drzewo najkrótszych ścieżek jest przekształcane w wpisy przekazywania dla osiągalnych prefiksów. OSPF () i wykorzystują stan łącza, choć różnią się formatem informacji, typami komunikatów i zakresem zalewania.
Wektor ścieżki: routing między systemami autonomicznymi
Trzecia główna rodzina, wektor ścieżki, służy do wymiany informacji między niezależnie zarządzanymi sieciami zwanymi . W tym modelu wybór trasy może uwzględniać relacje biznesowe, bezpieczeństwo i politykę operatora.
Jak działa: ogłaszanie ścieżki AS
Algorytm wektora ścieżki rozszerza wymianę metryk o listę systemów autonomicznych. Przy przekazywaniu ogłoszenia kolejny AS dopisuje własny numer do atrybutu AS_PATH. Inne atrybuty mogą opisywać źródło, następny przeskok lub preferencję lokalną używaną przy wyborze trasy:
- Routery ogłaszają sieć docelową wraz z pełną ścieżką numerów AS, przez które trasa przebiega, oraz z pozostałymi atrybutami wymaganymi przez protokół.
- Na przykład router w AS 1 może ogłosić swojemu sąsiadowi w AS 2: „Mogę dotrzeć do Sieci Z przez ścieżkę (AS 1).”
- AS 2 następnie ogłasza swojemu sąsiadowi w AS 3: „Mogę dotrzeć do Sieci Z przez ścieżkę (AS 2, AS 1).”
Zapobieganie pętlom i polityki routingu
Lista ścieżki dostarcza dwóch mechanizmów:
- Wykrywanie pętli przez AS_PATH: Router skanuje listę ścieżki. Jeżeli znajduje własny numer AS, odrzuca trasę jako potencjalnie zapętloną. BGP wykorzystuje ten mechanizm do zatrzymania ogłoszenia, które wróciło przez własny system autonomiczny.
- Routing oparty na polityce: Znana lista ścieżki pozwala administratorom wpływać na decyzje routingowe zgodnie z polityką operatora i wymaganiami biznesowymi. Na przykład:
- „Nie akceptuj tras przechodzących przez AS mojego konkurenta.”
- „Preferuj trasy poznane od mojego głównego dostawcy tranzytowego nad zapasowym.”
- „Nie ogłaszaj moich wewnętrznych sieci klienckich innym dostawcom tranzytowym.”
Decyzje wykorzystują zestaw atrybutów ścieżki oraz polityk lokalnych. Atrybuty mogą wpływać na preferencję trasy, jej rozgłaszanie i akceptację, więc wybór może zależeć od reguł operatora. Współczesnym przykładem protokołu wektora ścieżki jest (), używany do routingu między systemami autonomicznymi.