1 Tutorial 10 Protokoły routingu wektora odległości 1. Wprowadzenie Na tym wykładzie poświęconych skupimy się na protokołach bramy wewnętrznej (IGP). Jak wyjaśniono w poprzednim wykładzie, protokoły IGP można podzielić na protokoły wektora odległości i protokoły stanu łącza. Na tym wykładzie opisano cechy, działanie i funkcje protokołów routingu wektora odległości. Używanie każdego typu protokołu routingu ma swoje plusy i minusy. Na tym wykładzie omówiono działanie protokołów wektora odległości, kilka nieodłącznie związanych z nimi wad oraz sposoby, jak sobie z nimi radzić. Zrozumienie działania routingu wektora odległości odgrywa kluczową rolę w umiejętności włączania, weryfikowania i rozwiązywania problemów z tymi protokołami. 2. Wprowadzenie do protokołów routingu wektora odległości 2.1. Protokoły routingu wektora odległości Protokoły routingu dynamicznego pozwalają administratorowi sieci uniknąć czasochłonnego i rygorystycznego obowiązku konfigurowania i zachowywania tras statycznych. Wyobraźmy sobie na przykład utrzymanie konfiguracji statycznego routingu na 28 routerach z ilustracji? Co się stanie, kiedy jedno z łączy przestanie działać? Jak zapewnić dostępność nadmiarowych tras do sieci? W dużych sieciach, takich jak ta na rysunku, najczęściej stosowanym rozwiązaniem jest routing dynamiczny.
2 Do protokołów routingu wektora odległości zaliczamy RIP, IGRP i EIGRP. 2.1.1. RIP Routing Information Protocol (RIP) został pierwotnie zdefiniowany w dokumencie RFC 1058. Ma następujące cechy: metryką używaną przy wyborze drogi jest liczba skoków, jeśli liczba skoków do danej sieci przekracza 15, protokół RIP nie znajdzie trasy do tej sieci, aktualizacje routingu są domyślnie wysyłane jako komunikat rozgłoszeniowy albo grupowy co 30 sekund. 2.1.2. IGRP Interior Gateway Routing Protocol (IGRP) to protokół własnościowy stworzony przez Cisco. Jego najważniejsze cechy to: na złożoną metrykę składają się szerokość pasma, opóźnienie, ładunek i niezawodność, Aktualizacje routingu są rozgłaszane domyślnie co 90 sekund. aktualizacje routingu są wysyłane jako rozgłoszenie domyślnie co 90 sekund, 2.1.3. EIGRP Enhanced IGRP (EIGRP) to własnościowy protokół routingu wektora odległości opracowany przez Cisco. Najważniejsze cechy EIGRP to: potrafi rozkładać obciążenie na trasy nierównorzędne, do obliczania najkrótszej drogi wykorzystuje algorytm DUAL (Diffusing Update Algorithm), nie ma okresowych aktualizacji takich jak w RIP i IGRP. Aktualizacje routingu są wysyłane tylko wtedy, gdy zmieni się topologia.
3 2.2. Technologia wektora odległości 2.2.1. Znaczenie wektora odległości Jak sama nazwa wskazuje, wektor odległości oznacza, że trasy są ogłaszane jako wektory odległości i kierunku. Odległość jest definiowana za pomocą metryki, na przykład liczby skoków, a kierunek to po prostu router następnego skoku albo interfejs wyjściowy. Router używający protokołu routingu wektora odległości nie zna całej drogi do sieci docelowej. Router ten zna tylko: kierunek, w którym należy przesłać pakiety, odległość do sieci docelowej. Na przykład na ilustracji router R1 wie, że odległość do sieci 172.16.3.0/24 to jeden skok, a kierunek to droga od interfejsu S0/0/0 do routera R2. 2.2.2. Działanie protokołów routingu wektora odległości Niektóre protokoły routingu wektora odległości wymagają, aby router regularnie wysyłał każdemu ze swoich sąsiadów całą tablicę routingu jako komunikat rozgłoszeniowy. Metoda ta jest nieefektywna, ponieważ aktualizacje obciążają łącza, a ich przetwarzanie jest marnotrawieniem zasobów procesora. Protokoły routingu wektora odległości mają kilka cech wspólnych. Aktualizacje okresowe są wysyłane w regularnych odstępach czasu (30 sekund w przypadku protokołu RIP i 90 sekund w przypadku protokołu IGRP). Nawet jeżeli topologia nie zmienia się przez wiele dni, aktualizacje okresowe nadal wysyłane są do wszystkich sąsiadów. Sąsiedzi to routery, które wspólnie używają tego samego łącza i na których skonfigurowano ten sam protokół routingu. Router zdaje sobie sprawę tylko z adresów sieciowych własnych interfejsów i zdalnych adresów sieciowych, do których może dotrzeć przez swoich sąsiadów. Nie ma szerszej wiedzy o topologii sieci. Routery używające routingu wektora odległości nie są świadome topologii sieci. Aktualizacje rozgłoszeniowe są wysyłane na adres 255.255.255.255. Sąsiadujące routery, na których skonfigurowano ten sam protokół routingu, przetwarzają te aktualizacje. Inne urządzenia, na przykład komputery osobiste, również przetwarzają aktualizację aż do warstwy 3 i wtedy ją odrzucają. Niektóre protokoły routingu wektora odległości zamiast adresów rozgłoszeniowych (broadcast) używają adresów grupowych (multicast). Do wszystkich sąsiadów okresowo wysyłane są aktualizacje całych tablic routingu, z kilkoma wyjątkami, które omówiono później. Sąsiedzi odbierający te aktualizacje muszą przetwarzać je w całości, aby znaleźć ważne informacje i odrzucić resztę. Niektóre protokoły
4 routingu wektora odległości, na przykład EIGRP, nie wysyłają okresowych aktualizacji tablicy routingu. 2.3. Algorytmy protokołów routingu 2.3.1. Cel użycia algorytmu Sercem protokołu wektora odległości jest algorytm. Jest on używany do obliczania najlepszych tras, następnie informacje te są wysyłane do sąsiednich routerów. Algorytm to procedura wykonania danego zadania zaczynająca się w danym stanie początkowym i kończąca się w określonym stanie końcowym. Różne protokoły routingu używają różnych algorytmów i procesów do instalowania tras w tablicy routingu, wysyłania aktualizacji do sąsiadów i podejmowania decyzji związanych z wyborem tras. Algorytm używany dla protokołów routingu definiuje następujące procesy: mechanizm wysyłania i odbierania informacji o trasach, mechanizm obliczania najlepszych dróg i instalowania tras w tablicy routingu, mechanizm wykrywania zmian w topologii i reagowania na nie. W animacji na routerach R1 i R2 skonfigurowano protokół RIP. Algorytm wysyła i odbiera aktualizacje. Następnie routery R1 i R2 wyłuskują z aktualizacji nowe informacje. W tym przypadku każdy router dowiaduje się o nowej sieci. Algorytm na każdym routerze niezależnie wykonuje obliczenia i aktualizuje tablicę routingu, wprowadzając do niej nowe informacje. Kiedy sieć LAN za routerem R2 zostanie wyłączona, algorytm konstruuje aktualizację wyzwalaną i wysyła ją do routera R1. Następnie router R1 usuwa tę sieć z tablicy routingu. Aktualizacje wyzwalane omówiono w dalszej części tego wykładu.
5 2.4. Cechy protokołów routingu Protokoły routingu mogą być porównywane na podstawie następujących cech: Czas zbieżności definiuje, jak szybko routery w topologii sieci współdzielą się informacjami o trasach i osiągają stan spójnej wiedzy. Im szybsza zbieżność, tym wyższy priorytet protokołu. Konsekwencją wolnej zbieżności w zmieniającej się sieci mogą być pętle routingu, ponieważ niespójne tablice routingu nie są aktualizowane na czas. Skalowalność definiuje, jak duża może być sieć używająca określonego protokołu routingu. Im większa sieć, tym bardziej skalowalny musi być protokół routingu. Bezklasowy (używający VLSM) lub klasowy bezklasowe protokoły routingu umieszczają w aktualizacjach maskę podsieci. Funkcja ta obsługuje używanie masek podsieci o zmiennej długości (VLSM) i lepsze podsumowanie tras. Klasowe protokoły routingu nie uwzględniają maski podsieci i nie obsługują VLSM. Użycie zasobów zapotrzebowanie protokołu routingu na obszar pamięci, wykorzystanie procesora oraz szerokość pasma. Wyższe wymagania odnośnie do zasobów oznaczają konieczność używania urządzeń, które oprócz przekazywania pakietów poradzą sobie też z obsługą działania protokołu routingu. Implementacja i utrzymanie poziom wiedzy o używanym protokole routingu wymagany od administratora sieci do zaimplementowania i utrzymania sieci w zależności od wdrożonego protokołu. W tabeli zebrano zalety i wady protokołów routingu wektora odległości.
6 2.4.1. Porównanie cech protokołów routingu Na ilustracji porównano na podstawie powyższych kryteriów wszystkie protokoły routingu omawiane na tym wykładzie. Mimo że IGRP nie jest już obsługiwany przez system Cisco IOS, znalazł się tu w celu porównania z EIGRP. Poza tym protokół routingu IS-IS, znalazł się tutaj, ponieważ jest powszechnie używanym protokołem bramy wewnętrznej. 3. Wykrywanie sieci 3.1. Zimny start Router po włączeniu zasilania lub po tzw. zimnym starcie, nie wie nic o topologii sieci. Nie wie nawet, czy po drugiej strony jego łączy są jakieś urządzenia. Jedyne informacje, jakie ma, pochodzą z pliku z konfiguracją składowanego w pamięci NVRAM. Jeżeli router uruchomi się bez żadnego problemu, stosuje zapisaną konfigurację. Jak wyjaśniono w rozdziale 1 oraz w rozdziale 2, jeśli adresowanie IP zostało skonfigurowane prawidłowo i interfejsy są aktywne, router na początku wykrywa własne sieci połączone bezpośrednio. 3.1.1. Początkowa wymiana informacji o trasach W przykładzie, po starcie i przed wymiana informacji o routingu, routery wykrywają swoje bezpośrednio podłączone sieci i maski podsieci. Każdy router przetwarza aktualizacje w opisany niżej sposób: R1
7 10.1.0.0 dostępna poprzez interfejs FastEthernet 0/0 10.2.0.0 dostępna poprzez interfejs Serial 0/0/0 R2 R3 10.2.0.0 dostępna poprzez interfejs Serial 0/0/0 10.3.0.0 dostępna poprzez interfejs Serial 0/0/1 10.3.0.0 dostępna poprzez interfejs Serial 0/0/1 10.4.0.0 dostępna poprzez interfejs FastEthernet 0/0 Posiadając te informacje, routery rozpoczynają wymianę informacji o routingu. 3.2. Wymiana informacji o trasach Jeżeli skonfigurowany jest protokół routingu, routery rozpoczynają wymianę aktualizacji. Wstępnie, aktualizacje te zawierając wyłącznie informacje o ich sieciach bezpośrednio połączonych. Po otrzymaniu aktualizacji, router sprawdza nową informację. Każda trasa, która nie jest aktualnie obecna w tablicy routingu, jest dodawana. 3.2.1. Wstępna wymiana W tym momencie routery wysyłają tablice routingu do swoich sąsiadów, które w tym momencie zawierają informacje o trasach bezpośrednio podłączonych. Każdy router przetwarza aktualizacje w opisany niżej sposób:
8 R1 R2 R3 Wysyła z interfejsu Serial 0/0/0 aktualizację o sieci 10.1.0.0. Wysyła z interfejsu FastEthernet 0/0 aktualizację o sieci 10.2.0.0. Na interfejsie Serial 0/0/0 odbiera od routera R2 aktualizację o sieci 10.3.0.0 z metryką 1. Zapisuje w tablicy routingu sieć 10.3.0.0 z metryką 1. Wysyła z interfejsu Serial 0/0/0 aktualizację o sieci 10.3.0.0. Wysyła z interfejsu Serial 0/0/1 aktualizację o sieci 10.2.0.0. Na interfejsie Serial 0/0/0 odbiera od routera R1 aktualizację o sieci 10.1.0.0 z metryką 1. W tablicy routingu zapisuje sieć 10.1.0.0 z metryką 1. Na interfejsie Serial 0/0/1 odbiera od routera R3 aktualizację o sieci 10.4.0.0 z metryką 1. W tablicy routingu zapisuje sieć 10.4.0.0 z metryką 1. Wysyła z interfejsu Serial 0/0/1 aktualizację o sieci 10.4.0.0. Wysyła z interfejsu FastEthernet 0/0 aktualizację o sieci 10.4.0.0. Odbiera na interfejsie Serial 0/0/1 od routera R2 aktualizację o sieci 10.2.0.0 z metryką 1. W tablicy routingu zapisuje sieć 10.2.0.0 z metryką 1. Po tej pierwszej rundzie wymiany aktualizacji każdy router zna sieci połączone bezpośrednio swoich połączonych bezpośrednio sąsiadów. Czy zauważasz, że router R1 nie wie jeszcze o sieci 10.4.0.0, a router R3 o sieci 10.1.0.0? Sieć osiągnie stan zbieżności dopiero wtedy, gdy odbędzie się jeszcze jedna wymiana informacji o trasach. Kontynuując uzyskiwanie zbieżności, routery rozpoczynają kolejną rundę wymiany aktualizacji okresowych. Każdy router ponownie szuka w aktualizacjach nowych informacji. 3.2.2. Kolejna aktualizacja R1, R2 i R3 przesyłają najnowszą tablice routingu do swoich sąsiadów. Każdy router przetwarza aktualizacje w opisany niżej sposób:
9 R1 R2 R3 Wysyła z interfejsu Serial 0/0/0 aktualizację o sieci 10.1.0.0. Wysyła z interfejsu FastEthernet 0/0 aktualizację o sieci 10.2.0.0 i o sieci 10.3.0.0. Odbiera na interfejsie Serial 0/0/0 aktualizację o sieci 10.4.0.0 od routera R2 z metryką 2. Zapisuje w tablicy routingu sieć 10.4.0.0 z metryką 2. Aktualizacja od routera R2 zawiera informacje o sieci 10.3.0.0 na interfejsie Serial 0/0/0 z metryką 1. Nie ma zmiany, a tym samym informacja o trasach pozostaje taka sama. Wysyła z interfejsu Serial 0/0/0 aktualizację o sieci 10.3.0.0 i o sieci 10.4.0.0. Wysyła z interfejsu Serial 0/0/1 aktualizację o sieci 10.1.0.0 i o sieci 10.2.0.0. Odbiera na interfejsie Serial 0/0/0 aktualizację o sieci 10.1.0.0 od routera R1. Nie zawiera ona zmian, a więc informacja o trasach pozostaje taka, jak była. Odbiera na interfejsie Serial 0/0/1 aktualizację o sieci 10.4.0.0 od routera R3. Nie zawiera ona zmian, a więc informacja o trasach pozostaje bez zmian. Wysyła z interfejsu Serial 0/0/1 aktualizację o sieci 10.4.0.0. Wysyła z interfejsu FastEthernet 0/0 aktualizację o sieci 10.2.0.0 i o sieci 10.3.0.0. Odbiera na interfejsie Serial 0/0/1 aktualizację o sieci 10.1.0.0 od routera R2 z metryką 2. Zapisuje w tablicy routingu sieć 10.1.0.0 z metryką 2. Ta sama aktualizacja od routera R2 zawiera informację o sieci 10.2.0.0 na interfejsie Serial 0/0/1 z metryką 1. Nie ma zmiany, dlatego też informacja o trasach pozostaje taka sama. Uwaga: Protokoły routingu wektora odległości z reguły implementują technikę zwaną podzielonym horyzontem (ang. split horizon). Podzielony horyzont zapobiega wysyłaniu informacji z tego samego interfejsu, na którym została odebrana. Na przykład router R2 nie wyśle z interfejsu Serial 0/0/0 aktualizacji zawierającej informacje o sieci 10.1.0.0, ponieważ dowiedział się o tej sieci właśnie przez interfejs Serial 0/0/0. Mechanizm ten jest szczegółowo omówiony w dalszej części rozdziału. 3.3. Zbieżność Czas potrzebny sieci do osiągnięcia stanu zbieżności jest wprost proporcjonalny do rozmiaru tej sieci. Na animacji, router z oddziału Region 4 (B2-R4) wykonuje zimny start. Rysunek
10 pokazuje, wysyłanie aktualizacji nowej informacji o routingu jako aktualizacji przesyłanej między sąsiadami. Potrzeba pięciu rund wymiany aktualizacji okresowych, zanim większość routerów oddziałowych w regionach 1, 2 i 3 dowie się o nowych trasach ogłaszanych przez router B2- R4 Protokoły routingu są porównywane na podstawie tego, jak szybko potrafią propagować te informacje jest to szybkość zbieżności. Na szybkość osiągania zbieżności ma wpływ: w jakim tempie routery ogłaszają zmianę w topologii w aktualizacjach routingu wysyłanych do swoich sąsiadów, szybkość obliczania najlepszych tras za pomocą nowych zebranych informacji o routingu. Sieć nie jest w pełni operacyjna, dopóki nie osiągnie zbieżności. Dlatego właśnie administratorzy sieci wybierają protokoły routingu z krótszymi czasami zbieżności. 4. Utrzymywanie tablicy routingu 4.1. Aktualizacje okresowe w RIPv1 i IGRP Wiele protokołów wektora odległości do wymiany z sąsiadami informacji o trasach i zachowywania aktualnej informacji o trasach w tablicy routingu wykorzystuje aktualizacje okresowe. Przykładami takich protokołów są RIP i IGRP. Routery regularnie wysyłają do sąsiadów tablice routingu. Określenie aktualizacje okresowe (ang. periodic updates) odnosi się do faktu, że router wysyła pełną tablicę routingu do swoich sąsiadów w regularnych odstępach czasu. W przypadku protokołu RIP aktualizacje te są wysyłane co 30 sekund jako rozgłoszenie (255.255.255.255) niezależnie od tego, czy topologia się zmieniła. Ten 30-sekundowy przedział to licznik aktualizacji tras, który pomaga też w śledzeniu wieku informacji o trasach w tablicy routingu.
11 Wiek informacji o trasie w tablicy routingu jest odświeżany za każdym razem, gdy aktualizacja zostanie odebrana. W ten sposób informacje w tablicy routingu można aktualizować, kiedy następuje zmiana w topologii. Przyczyny zmian mogą być różnorakie, na przykład: awaria łącza, wprowadzenie nowego łącza, awaria routera, zmiana parametrów łącza. 4.1.1. Liczniki RIP Oprócz licznika aktualizacji system IOS implementuje dla protokołu RIP trzy dodatkowe liczniki: Licznik uznania trasy za nieistniejącą (ang. invalid) Licznik oczyszczania (ang. flush) Licznik wstrzymania (ang. hold-down) Licznik uznania trasy za nieistniejącą. Jeśli przez 180 sekund (domyślnie) nie pojawi się aktualizacja odświeżająca istniejącą trasę, trasa zostaje oznakowana jako nieprawidłowa przez ustawienie metryki na 16. Trasa pozostaje w tablicy routingu aż do wygaśnięcia licznika oczyszczania. Licznik oczyszczania. Domyślnie licznik oczyszczania jest ustawiony na 240 sekund, czyli 60 sekund dłużej niż licznik uznania trasy za nieistniejącą. Kiedy licznik oczyszczania skończy odliczać czas, trasa zostaje usunięta z tablicy routingu. Licznik wstrzymania Ten licznik zatrzymuje zmianę informacji o trasach, co pozwala zapobiec powstawaniu pętli routingu, kiedy uzgadniana jest nowa topologia. Kiedy trasa zostanie oznakowana jako nieosiągalna, musi pozostać w stanie wstrzymania na tyle długo, aby wszystkie routery w topologii dowiedziały się o nieosiągalnej sieci. Domyślnie licznik wstrzymania jest ustawiony na 180 sekund. Licznik wstrzymania jest omówiony dokładniej w dalszej części rozdziału. Wartości licznika można sprawdzić za pomocą dwóch poleceń: show ip route i show ip protocols. Należy zwrócić uwagę, że w danych show ip route obok każdej trasy znalezionej
12 przez protokół RIP pokazywany jest wyrażony w sekundach czas, jaki upłynął od ostatniej aktualizacji. Informacje te są powtarzane również w wynikach polecenia show ip protocols pod nagłówkiem Last Update. Komenda show ip protocols pokazuje też szczegółową informację, kiedy router R1 powinien rozpocząć wysyłanie następnej partii aktualizacji. Wyświetlone są również domyślne wartości liczników uznania trasy za nieistniejącą, wstrzymywania i oczyszczania. 4.2. Aktualizacje ograniczone EIGRP W przeciwieństwie do innych protokołów routingu wektora odległości EIGRP nie wysyła aktualizacji okresowych. Zamiast nich wysyła aktualizacje ograniczone (ang. bounded updates), kiedy zmieni się droga albo metryka dla danej trasy. Gdy pojawi się nowa trasa albo trzeba usunąć starą, protokół EIGRP wysyła aktualizację z informacjami tylko o tej trasie, a nie całą tablicę routingu. Informacja ta jest wysyłana tylko do tych routerów, którym jest potrzebna. Protokół EIGRP wysyła aktualizacje, które są: nieokresowe, ponieważ nie są wysyłane w regularnych odstępach czasu, częściowe, ponieważ są wysyłane tylko wtedy, gdy w topologii wystąpi zmiana mająca wpływ na informacje o trasach, ograniczone, co oznacza, że ogłaszanie aktualizacji częściowych jest automatycznie ograniczane, aby zaktualizowane zostały tylko te routery, które wymagają tych informacji. 4.3. Aktualizacje wyzwalane Aby przyspieszyć osiągnięcie stanu zbieżności po zmianie w topologii, protokół RIP używa aktualizacji wyzwalanych. Aktualizacja wyzwalana (ang. triggered update) to aktualizacja
13 tablicy routingu wysyłana natychmiastowo w odpowiedzi na zmianę trasy. Aktualizacje wyzwalane nie zwracają uwagi na wskazania licznika aktualizacji. Router wykrywający zmianę natychmiast wysyła komunikat z aktualizacją do sąsiednich routerów. Z kolei routery odbierające generują aktualizacje wyzwalane, które powiadamiają o zmianach ich sąsiadów. Aktualizacje wyzwalane są wysyłane wtedy, kiedy zajdzie jedno z poniższych zdarzeń: Interfejs zmienił stan (został włączony albo wyłączony). Trasa zmieniła stan na osiągalny (albo nieosiągalny). Trasa została zainstalowana w tablicy routingu. Używanie samych aktualizacji wyzwalanych wystarczyłoby, gdyby była gwarancja, że fala aktualizacji natychmiast dotrze do wszystkich odpowiednich routerów. Jednak w przypadku aktualizacji wyzwalanych występują dwa problemy: Pakiety zawierające komunikat o aktualizacji mogą być odrzucane. Pakiety zawierające komunikat o aktualizacji mogą zostać uszkodzone przez jakieś łącze w sieci. Router, który nie odebrał jeszcze aktualizacji wyzwalanej, może po prostu wysłać zwykłą aktualizację w nieodpowiednim czasie, powodując, że zła trasa została ponownie wstawiona do tablicy routingu sąsiada, który wcześnie odebrał już aktualizację wyzwalaną. Kiedy sieć 10.4.0.0 stanie się niedostępna, a router R3 się o tym dowie, wysyła do swoich sąsiadów tę informację Informacja jest następnie ogłaszana w całej sieci. 4.4. Losowe fluktuacje 4.4.1. Problemy z aktualizacjami synchronicznymi Kiedy w wielodostępowych segmentach sieci LAN wiele routerów jednocześnie wysyła aktualizacje routingu, pakiety aktualizacji mogą wchodzić w kolizje i powodować opóźnienia albo zajmować zbyt wiele szerokości pasma. Uwaga: Kolizje są problemem tylko w przypadku używania koncentratorów, a nie przełączników. Wysyłanie aktualizacji w tym samym czasie nazywane jest synchronizacją aktualizacji. Synchronizacja może stać się problemem w przypadku używania protokołów routingu wektora odległości, ponieważ wysyłają one aktualizacje okresowe. Im więcej zsynchronizowanych liczników, tym więcej w sieci kolizji aktualizacji i opóźnień.
14 Początkowo aktualizacje routera nie będą synchronizowane. Ale z upływem czasu liczniki w sieci zostaną globalnie zsynchronizowane. 4.4.2. Rozwiązanie Aby zapobiec synchronizacji aktualizacji pomiędzy routerami, system Cisco IOS używa losowej zmiennej o nazwie RIP_JITTER, która odejmuje zmienną wartość czasu od przedziału aktualizacji dla każdego routera w sieci. Ta losowa fluktuacja, czyli zmienna ilość czasu, mieści się w przedziale od 0 do 15 procent określonego przedziału aktualizacji. W ten sposób przedział aktualizacji różni się losowo w przedziale od 25,5 do 30 sekund od domyślnego przedziału 30-sekundowego. 5. Pętle routingu 5.1. Definicja i konsekwencje Pętla routingu ma miejsce wówczas, gdy pakiet krąży bez przerwy pomiędzy kilkoma routerami, nie docierając nigdy do zamierzonej sieci docelowej. Pętla routingu może wystąpić, kiedy dwa routery lub więcej mają nieprawidłowe informacje o trasach do sieci docelowej. Pętla może być wynikiem: nieprawidłowo skonfigurowanych tras statycznych, nieprawidłowo skonfigurowanej redystrybucji tras (redystrybucja to proces przekazywania informacji o trasach z jednego protokołu routingu do innego protokołu routingu, została omówiona na kursach CCNP), niespójnych tablic routingu, które nie zostały zaktualizowane z powodu wolnej zbieżności w zmieniającej się sieci, nieprawidłowo skonfigurowane lub zainstalowane trasy odrzucające. Działanie protokołów routingu wektora odległości jest proste. Jednym z tego efektów są wady takie jak pętle routingu. Pętle routingu w przypadku używania protokołów routingu stanu łącza zdarzają się znacznie rzadziej, ale w pewnych okolicznościach też mogą występować. Uwaga: IP ma własny mechanizm zapobiegania niekończącej się podróży pakietu po sieci. Pakiet IP ma pole TTL (Time to Live), którego wartość jest zmniejszana o 1 przez każdy router. Jeśli TTL spadnie do 0, router odrzuca pakiet. 5.1.1. Jakie są konsekwencje pętli routingu? Pętla routingu może mieć niszczycielski wpływ na sieć, obniżając jej wydajność, a nawet doprowadzając do przerw w działaniu. Pętla routingu może mieć następujące konsekwencje: Szerokość pasma łącza będzie wykorzystywana na zapętlony ruch w tę i z powrotem pomiędzy routerami. Procesor routera będzie przeciążony przez zapętlone pakiety. Procesor routera zostanie obciążony bezużytecznym przekazywaniem pakietów, co będzie miało negatywny wpływ na zbieżność sieci. Aktualizacje routingu mogą być gubione, mogą też nie być przetwarzane na czas. W takich okolicznościach powstają kolejne pętle routingu, pogarszając sytuację. Pakiety mogą ginąć w "czarnych dziurach", nigdy nie docierając do zamierzonych celów.
15 5.1.2. Przykładowy scenariusz 1. Sieć 10.4.0.0 przestała działać. R3 usuwa ją z tablicy routingu. 2. Router R2 ma wpis o tej sieci i wysyła swoją aktualizację zanim to zrobi R3 3. Router R3 wpisuje błędną trasę do sieci 10.4.0.0 (niewłaściwy interfejs). 4. Powstaje zapętlona trasa do tej sieci. Pakiet zaadresowany do 10.4.0.0 będzie wędrował wkoło pomiędzy R2 i R3 dopóki jego TTL nie spadnie do zera i następnie zostanie usunięty.
16 Jak widać, pętle routingu konsumują szerokość pasma i zasoby routera, co powoduje, że sieć działa wolniej albo nawet przestaje reagować. Istnieje wiele mechanizmów eliminowania pętli routingu, zwłaszcza dla protokołów routingu wektora odległości. Te mechanizmy to: zdefiniowanie maksymalnej metryki, aby zapobiec odliczaniu do nieskończoności, liczniki wstrzymania, podzielony horyzont, zatrucie trasy lub zatrucie wstecz, wyzwalane aktualizacje. 5.2. Problem: odliczanie do nieskończoności Odliczanie do nieskończoności (ang. count to infinity) to sytuacja, w której nieprawidłowe aktualizacje routingu zwiększają wartość metryki dla sieci, która stała się nieosiągalna, do nieskończoności. Przykład: 1. Sieć 10.4.0.0 przestała działać i R3 usuwa ją ze swojej tablicy 2. Aktualizacja z R2 wstawia do R3 niewłaściwy wpis z metryką 2 3. Aktualizacja z R3 do R2 powiela błędny wpis i dodatkowo (zgodnie ze swoim algorytmem) wstawia wartość metryki jako 3
17 4. Po kilku wymianach aktualizacji tablice routingu wyglądają tak 5. Aby w końcu zatrzymać zwiększanie metryki, definiujemy nieskończoność, ustawiając maksymalną wartość metryki. Na przykład nieskończoność dla protokołu RIP została zdefiniowana jako 16 skoków. Kiedy routery odliczą do nieskończoności, oznakują trasę jako nieosiągalną. 5.3. Zapobieganie pętlom routingu za pomocą liczników wstrzymania Wiemy już, że protokoły routingu wektora odległości stosują wyzwalane aktualizacje, aby przyspieszyć proces zbieżności. Pamiętamy, że oprócz wyzwalanych aktualizacji routery używające protokołów routingu wektora odległości wysyłają też aktualizacje okresowe. Załóżmy, że jakaś sieć jest niestabilna. Interfejs raz jest włączony, zaraz potem wyłączony i znowu włączony. Trasa jest niestabilna. Używając wyzwalanych aktualizacji, routery mogą zareagować zbyt szybko i nieświadomie spowodować powstanie pętli routingu. Pętla routingu
18 może również zostać utworzona przez aktualizację okresową wysyłaną przez routery w czasie niestabilności. Dzięki licznikom wstrzymania pętle routingu w takich sytuacjach nie są tworzone. Liczniki te pomagają też uniknąć odliczania do nieskończoności. Liczniki wstrzymania uniemożliwiają zwykłym komunikatom aktualizacji ponownie zainstalować trasę, która mogła ulec awarii. Liczniki wstrzymania nakazują routerom powstrzymać się przez określony czas z wprowadzeniem zmiany. Jeśli trasa zostanie zidentyfikowana jako wyłączona lub prawdopodobnie wyłączona, każda kolejna informacja o takim samym albo gorszym stanie tej trasy jest ignorowana przez predefiniowany czas (okres wstrzymania). Oznacza to, że routery oznakowują tę trasę jako nieosiągalną na taki czas, w którym aktualizacje z tablicami routingu z najbardziej aktualnymi informacjami zdążą dotrzeć do wszystkich zainteresowanych w sieci. Licznik wstrzymania działają w następujący sposób: Sieć 10.4.0.0 przestała działać R3 wysyła do R2 wyzwalaną aktualizację z informacją, że sieć wcześniej dostępna, dostępna już nie jest. R3 oznakowuje sieć jako prawdopodobnie wyłączoną i włącza licznik wstrzymania. R2 wstrzymuje propagację informacji o sieci 10.4.0.0 Jeśli w trakcie okresu wstrzymania od jednego z sąsiednich routerów odebrana zostanie aktualizacja z lepszą metryką dla tej sieci, R2 ponownie instaluje tę sieć, a licznik wstrzymania zostaje usunięty. Jeśli od jednego z sąsiednich routerów w trakcie wstrzymania zostanie odebrana aktualizacja z taką samą albo gorszą metryką dla tej sieci (tutaj od R1), jest ona ignorowana. Tym samym jest więcej czasu na rozpropagowanie informacji o zmianie. Aktualizacja R2 do R1 uruchamia na R1 również licznik wstrzymania
19 Routery R1 i R2 w dalszym ciągu przesyłają pakiety do sieci 10.4.0.0, mimo że została oznakowana jako prawdopodobnie nieczynna. Pozwala to routerowi przezwyciężyć wszystkie trudności związane z przerwami w łączności. Jeśli sieć docelowa jest naprawdę niedostępna, a pakiety są przekazywane, tworzy się czarna dziura, która istnieje do momentu, gdy liczniki wstrzymania skończą odliczać czas. Tutaj w R2 licznik wstrzymania zakończył się i sieć została oznaczona jako nieczynna. Licznik wstrzymania na R1 Zakończył się. Sieć zostaje oznaczona na nim jako nieczynna i cała sieć osiąga stan zbieżności
20 5.4. Reguła podzielonego horyzontu Kolejną metodą stosowaną, aby zapobiec tworzeniu się pętli routingu w wyniku wolnej zbieżności protokołu routingu wektora odległości, jest podzielony horyzont. Reguła podzielonego horyzontu mówi, że router nie powinien ogłaszać sieci z interfejsu, na którym odebrał aktualizację z informacją o tej sieci. Przykład: Router R3 przekazuje do R2 tylko informację o sieci 10.4.0.0. Router R2 odbiera informację i aktualizuje swoją tablicę routingu. W tym wypadku nie będzie żadnych zmian. Router R2 następnie ogłasza sieć 10.4.0.0 routerowi R1 z interfejsu S0/0/0. R2 nie ogłasza sieci 10.4.0.0 routerowi R3 z interfejsu S0/0/1, ponieważ informację o tej trasie odebrał właśnie na tym interfejsie. Zwróćmy uwagę, że router R2 wysyła routerom R1 i R3 różne aktualizacje routingu. Router R1 odbiera informację i aktualizuje swoją tablicę routingu. Router R1 odbiera informację i aktualizuje swoją tablicę routingu. Z powodu podzielonego horyzontu router R1 również nie ogłasza informacji o sieci 10.4.0.0 routerowi R2.
21 Wymieniane są pełne aktualizacje routingu z wyjątkiem takich informacji o trasach, które naruszyłyby regułę podzielonego horyzontu. Efekty są następujące: R2 ogłasza sieci 10.3.0.0 i 10.4.0.0 routerowi R1. R2 ogłasza sieci 10.1.0.0 i 10.2.0.0 routerowi R3. R1 ogłasza sieć 10.1.0.0 routerowi R2. R3 ogłasza sieć 10.4.0.0 routerowi R2. 5.5. Podzielony horyzont z zatruciem wstecz lub zatruciem trasy 5.5.1. Zatrucie trasy Zatrucie trasy (ang. route poisoning) jest kolejną metodą stosowaną przez protokół routingu wektora odległości do zapobiegania pętlom routingu. Zatruwanie tras jest używane do oznaczenia routera jako nieosiągalnego w aktualizacjach tras wysyłanych do innych routerów. Nieosiągalność jest określana jako metryka z wartością maksymalną. W protokole RIP metryka zatrutej trasy ma wartość 16. Przykład działania: Sieć 10.4.0.0 staje się niedostępna z powodu awarii łącza. R3 zatruwa trasę za pomocą metryki o wartości 16, a następnie wysyła aktualizację wyzwalaną z informacją, że sieć 10.4.0.0 jest niedostępna. R2 przetwarza tę aktualizację. Ponieważ metryka ma wartość 16, R2 unieważnia wpis tej trasy w tablicy routingu. R2 następnie wysyła aktualizację z zatrutą trasą do routera R1, ponownie ustawiając wartość metryki na 16. R1 przetwarza aktualizację i unieważnia wpis dla trasy 10.4.0.0 w swojej tablicy routingu. Sieć osiąga zbieżność poprzez zatrucie trasy.
22 Zatruwanie tras przyspiesza proces zbieżności, ponieważ informacja o sieci 10.4.0.0 rozchodzi się po sieci znacznie szybciej, niż w przypadku oczekiwania, aż liczba skoków dotrze do nieskończoności. 5.5.2. Podzielony horyzont z zatruciem wstecz Zatrucie wstecz (ang. poison reverse) można połączyć z techniką podzielonego horyzontu. Metoda ta nazywa się wtedy podzielonym horyzontem z zatruciem wstecz. Reguła podzielonego horyzontu z zatruciem wstecz głosi, że wysyłając aktualizacje z określonego interfejsu, wszystkie sieci, o których router dowiedział się przez ten interfejs, należy oznaczyć jako nieosiągalne. Założenie podzielonego horyzontu z zatruciem wstecz jest takie, że lepiej powiedzieć routerowi, aby ignorował trasę, niż nie mówić mu o niej w ogóle. Przykład: Sieć 10.4.0.0 staję się niedostępna przez awarię łącza. R3 zatruwa metrykę wartością metryki 16, następnie wysyła aktualizację wyzwalaną oznaczającą sieć 10.4.0.0 jako niedostępną. R2 przetwarza aktualizację, unieważnia wpisz w tablicy routingu i natychmiast rozsyła zatruwanie wstecz do R3 (pomimo włączonej reguły podzielonego horyzontu).
23 Zatrucie wstecz to szczególna okoliczność mająca pierwszeństwo przed podzielonym horyzontem. Dzięki temu mechanizmowi router R3 jest odporny na nieprawidłowe aktualizacje informacji o sieci 10.4.0.0. 5.6. IP i TTL TTL (Time to Live) to 8-bitowe pole w nagłówku IP, którego wartość ogranicza liczbę skoków, jakie wykonać może pakiet, podróżując przez sieć, zanim zostanie odrzucony. Pole TTL pozwala uniknąć sytuacji, w której niedoręczalny pakiet krąży bez końca po sieci. Wartość 8-bitowego pola TTL jest ustawiana przez urządzenie wysyłające pakiet. Wartość TTL jest zmniejszana o 1 przez każdy router na drodze do celu. Jeśli wartość w polu TTL osiągnie 0, zanim pakiet dotrze do celu, pakiet zostaje odrzucony, a router wysyła komunikat o błędzie ICMP (Internet Control Message Protocol) z powrotem do źródła pakietu IP. Przykład: wędrówka pakietu w sieci z pętlą routingu.
24 6. Współczesne protokoły routingu wektora odległości 6.1. RIP i EIGRP Jeśli chodzi o protokoły routingu wektora odległości, to tak naprawdę liczą się tylko dwa: RIP i EIGRP. Decyzja, którego protokołu routingu używać w danych okolicznościach, jest zdeterminowana wieloma czynnikami, w tym: rozmiarem sieci, kompatybilnością pomiędzy modelami routerów, wymaganą wiedzą administracyjną. 6.1.1. RIP W ciągu kilku lat protokół RIP przeistoczył się z klasowego protokołu routingu (RIPv1) w beklasowy protokół routingu (RIPv2). RIPv2 to znormalizowany protokół routingu przeznaczony do pracy w środowisku routerów od różnych producentów. Routery wyprodukowane przez różne firmy mogą ze sobą współpracować, używając protokołu RIP. Jest to jeden z najłatwiejszych protokołów do skonfigurowania, dzięki czemu świetnie nadaje się do niewielkich sieci. Jednak RIPv2 nadal ma ograniczenia. Zarówno RIPv1, jak i RIPv2 wykorzystują metrykę, która opiera się tylko na liczbie skoków i może przyjmować maksymalną wartość 15. Oto cechy protokołu RIP: Obsługuje podzielony horyzont i podzielony horyzont z zatruciem wstecz, które to mechanizmy zapobiegają powstawaniu pętli, Potrafi rozkładać obciążenie na maksymalnie sześć tras. Domyślnie są to cztery równorzędne trasy. W protokole RIPv2 pojawiły się przedstawione niżej ulepszenia:
25 W aktualizacjach routingu dołączana jest maska podsieci, dzięki czemu jest to bezklasowy protokół routingu. Mechanizm uwierzytelniania zabezpieczający aktualizacje tablicy routingu. Obsługa masek podsieci o zmiennej długości (VLSM). Zamiast adresów rozgłoszeniowych (broadcast) używane są adresy grupowe (multicast). Obsługa ręcznego podsumowania tras. 6.1.2. EIGRP Enhanced IGRP (EIGRP) został opracowany na bazie IGRP, innego protokołu wektora odległości. EIGRP to bezklasowy protokół routingu wektora odległości z funkcjami znanymi z protokołów routingu stanu łącza. Niemniej w przeciwieństwie do protokołów RIP i OSPF EIGRP to firmowy protokół opracowany przez Cisco i działający tylko na routerach Cisco. Oto cechy protokołu EIGRP: aktualizacje wyzwalane (EIGRP nie ma aktualizacji okresowych, używanie tablicy topologii (ang. topology table) do przechowania wszystkich (a nie tylko najlepszych) tras poznanych dzięki sąsiadom, ustanowienie przyległości z sąsiadującymi routerami za pomocą protokołu Hello EIGRP, obsługa VLSM i ręcznego sumowania tras. Umożliwia to protokołowi EIGRP tworzenie dużych sieci o strukturze hierarchicznej, Zalety protokołu EIGRP: Mimo że trasy są ogłaszane tak jak w protokołach routingu wektora odległości, metryka opiera się na minimalnej szerokości pasma oraz łącznym opóźnieniu trasy, a nie na liczbie skoków. Szybka zbieżność dzięki obliczaniu trasy przez algorytm DUAL (Diffusing Update Algorithm). DUAL do tablicy topologii EIGRP wstawia trasy zapasowe, które są używane w przypadku awarii trasy podstawowej. Ponieważ jest to procedura lokalna, przejście na trasę zapasową jest natychmiastowe i nie wymaga działania innego routera. Aktualizacje ograniczone oznaczają, że EIGRP używa mniej dostępnego pasma, zwłaszcza w dużych sieciach z wieloma trasami EIGRP za pomocą modułów PDM obsługuje wiele protokołów warstwy sieci, w tym IP, IPX i AppleTalk.
26 7. Podsumowanie Jednym z kryteriów podziału protokołów routingu jest typ algorytmu używanego do wyznaczania najlepszej drogi do sieci docelowej. Protokoły routingu można podzielić na protokoły wektora odległości, protokoły stanu łącza i protokoły wektora trasy. Wektor odległości oznacza, że trasy są ogłaszane jako wektory odległości i kierunku. Odległość definiuje się za pomocą metryki, na przykład liczby skoków, a kierunek to po prostu router następnego skoku albo interfejs wyjściowy. Do protokołów routingu wektora odległości zaliczamy: RIPv1 RIPv2 IGRP EIGRP Routery, które używają protokołów routingu wektora odległości, najlepszą drogę do zdalnej sieci ustalają na podstawie informacji uzyskanych od sąsiadów. Jeśli router X dowie się o dwóch drogach do tej samej sieci, jednej o długości siedmiu skoków przez router Y i drugiej o długości 10 skoków przez router Z, wybierze krótszą drogę przez router Y, który będzie routerem następnego skoku. Router X nie ma zielonego pojęcia, jak wyglądają sieci za routerami Y i Z i może podjąć decyzję o wyborze drogi tylko na podstawie informacji wysłanej do niego przez te dwa routery. Protokoły routingu wektora odległości, w przeciwieństwie do protokołów routingu stanu łącza, nie mają mapy topologii Wykrywanie sieci to ważny proces każdego protokołu routingu. W przypadku niektórych protokołów routingu wektora odległości, na przykład RIP, proces poznawania i udostępniania informacji o trasach sąsiadom składa się z kilku etapów. Po otrzymaniu informacji o trasach od jednego sąsiada informacje te są przekazywane innym sąsiadom ze zwiększoną metryką routingu. Protokoły routingu muszą też utrzymywać swoje tablice routingu, aby zawarte w nich informacje były aktualne i ścisłe. RIP wymienia informacje z tablicy routingu ze swoimi sąsiadami co 30 sekund. EIGRP, inny protokół routingu wektora odległości, wysyła jedynie aktualizację ograniczoną tylko wtedy, kiedy w topologii zajdzie jakaś zmiana i tylko tym routerom, którym informacja ta jest potrzebna. Protokół EIGRP omówiono w kolejnym rozdziale. Protokół RIP używa też liczników, dzięki którym może ustalić, że sąsiedni router stał się niedostępny albo niektóre routery nie mają bieżących informacji o trasach. Z reguły dzieje się tak dlatego, że sieć po ostatniej zmiany w topologii nie osiągnęła jeszcze stanu zbieżności. Protokoły routingu wektora odległości używają też aktualizacji wyzwalanych, aby przyspieszyć proces osiągania stanu zbieżności. Jedną z wad protokołów routingu wektora odległości jest możliwość powstawania pętli routingu. Pętle routingu mogą występować wtedy, gdy sieć znajduje się w stanie niezbieżności. Protokoły routingu wektora odległości używają liczników wstrzymania, aby router nie mógł używać innej trasy do niedawno wyłączonej sieci do czasu, aż wszystkie routery zdążą dowiedzieć się o tej zmianie w topologii. Podzielony horyzont i podzielony horyzont z zatruciem wstecz to kolejne mechanizmy zapobiegania powstawaniu pętli routingu. Zgodnie z regułą podzielonego horyzontu, router nigdy nie powinien ogłaszać trasy z interfejsu, na którym się o niej dowiedział. Podzielony horyzont z zatruciem wstecz polega na jawnym oświadczaniu, że dany router nie ma trasy do danej sieci. W tym celu trasa jest zatruwana metryką, której wartość została ustawiona na nieosiągalność.
27 Protokoły routingu wektora odległości są czasami nazywane routingiem przez plotki, mimo że określenie to może być nieco mylące. Protokoły routingu wektora odległości cieszą się popularnością wielu administratorów, ponieważ z reguły łatwo je zrozumieć i zaimplementować. Nie oznacza to jednak, że protokoły routingu stanu łącza są o wiele bardziej skomplikowane i trudniejsze w konfiguracji. Niestety, protokoły routingu stanu łącza zyskały tę nieco niezasłużoną reputację. W kolejnych rozdziałach pokazano, że zrozumienie zasad działania i konfiguracji protokołów routingu stanu łącza jest równie proste jak w przypadku protokołów routingu wektora odległości. 7.1. Pytania sprawdzające Wyjaśnij krótko podstawy działania RIP i IGRP Czym jest zbieżność sieci i dlaczego jest ważna? Jakie są cztery główne zegary czasu w protokole RIP? Wymień 5 technik, jakie stosują protokoły wektora odległości do zapobiegania pętlom routingu. 7.2. Aby nauczyć się więcej Zrozumienie algorytmu protokołu routingu wektora odległości nie jest trudne. Wiele książek i artykułów w Internecie poświęcono wyjaśnieniu jak w sieciach komputerowych wykorzystywane są algorytmy takie jak algorytm Bellmana-Forda. Istnieje kilka serwisów na temat działania tych algorytmów. Warto zapoznać się z niektórymi z nich, aby lepiej zrozumieć zasady działania tego algorytmu. Oto kilka zalecanych pozycji: Interconnections, Bridges, Routers, Switches, and Internetworking Protocols, Radia Perlman Cisco IP Routing, Alex Zinin Routing the Internet, Christian Huitema