Routing jest spisanym zestawem sposobów jak przejść (przesłać pakiety) z jednej sieci do drugiej. Jest to jedna z podstawowych własności routerów umożliwiających przesyłanie danych w Internecie.
Zostaną omówione podstawowe informacje dotyczące klasyfikacji protokołów routingu jak i wymienione te najczęściej używane.
Na wstępie warto zaznaczyć, że określenia oryginalne (angielskojęzyczne) użyte do tych zagadnień mają wiele tłumaczeń. Stąd może się pojawić wrażenie pewnego braku standardu w języku polskim. I tak: ang. routing - pl. trasowanie, ruting, rutowanie.
Ze względu na powszechność niektórych określeń w wykładzie przyjęto tę najbardziej powszechną - chociaż jak powszechnie wiadomo „większość na ogół się myli”.
Właściwie każdy komputer wyposażony w system operacyjny może pełnić rolę routera. Ze względów bezpieczeństwa funkcja ta jest wyłączana w przypadku zwykłych hostów. W praktyce najczęściej stosuje się do celu przesyłania pakietów specjalistyczne urządzenia, które mają zbliżoną budowę do standardowych jednostek obliczeniowych. Ze względu na specjalistyczne funkcje, które muszą pełnić są też wyposażone w odpowiedni system operacyjny typowy dla producenta tych urządzeń.
Router dzięki wpisom w tablicy routingu obsługuje ruch pakietów w warstwie L3 modelu ISO/OSI.
Wbudowane mechanizmy unożliwiają również filtrowanie pakietów zwiększając tym samym poziom bezpieczeństwa sieci, które są obsługiwane przez te urządzenia.
Dodatkowo odpowiednie algorytmy doboru optymalnych ścieżek umożliwiają efektywne i niezawodne przesyłanie pakietów w sieci. Router korzysta przy tym z informacji wymienianych z urządzeniami sąsiednimi.
Rola, którą spełnia to urządzenia wymusza inny przepływ danych w ramach poszczególnych warstw modelu ISO/OSI niż przepływ danych w klasycznym hoście.
Najłatwiej prześledzić różnice przepływu danych przez poszczególne urządzenia na przykładzie. Załóżmy, że komputer X chce wysłać dane do położonego w odległej lokalizacji (innej podsieci) komputera Y.
Dane przechodzą przez kolejne warstwy: Aplikacji, Prezentacji, Sesji, Transportową, Sieci, Łącza Danych, Fizyczną. W trakcie przechodzenia przez poszczególne warstwy są one kolejno enkapsulowane w porcje informacji typowe dla poszczególnych warstw. Po dotarciu do warstwy Fizycznej ramka wysyłana jest do urządzenia sieciowego, które pełni role bramy wyjściowej (getaway). W przypadku sieci lokalnych rolę tą pełni router (A) obsługujący daną sieć. Router ten rozpakowuje ramkę i sprawdza adres docelowy i źródłowy. Następnie na podstawie wpisów w tablicy routingu decyduje, którędy (poprzez które sąsiednie routery) przesłać pakiet do miejsca przeznaczenia.
Sytuacja taka powtarza się na kolejnych routerach (B,C) w trakcie przesyłania pakietów do celu. W przypadku ostatniego routera na trasie urządzenie to przesyła ramkę bezpośrednio na MAC adres urządzenia, do którego jest adresowany pakiet.
W urządzeniu tym (Y) następuje proces odwrotny, tzn. dane przechodząc kolejno przez poszczególne warstwy są składane do postaci pierwotnej.
Aby przesłać dalej pakiety postać tych danych musi być zgodna ze standardami dla protokołów routowalnych, czyli takich, które będą mogły być przesyłane przez router. Protokół routowalny kieruje zatem ruchem użytkowym. Do protokołów takich zalicza się przede wszystkim IP. Innymi protokołami routowalnymi są m.in. Apple Talk, IPX.
Sam proces routowania pakietów obsługiwany jest przez protokoły routujące. Zadaniem tych protokołów jest wybieranie optymalnych tras przesyłania pakietów w oparciu o informacje o dostępnych trasach (zawarte w tabeli routingu). Protokół routujący służy zatem do komunikacji pomiędzy samymi routerami i wymiany informacji o trasach.
Protokół ten jest bezpołączeniowy, co oznacza, że do przesłania danych nie potrzebne jest zestawienie połączenia pomiędzy nadawcą i odbiorcą. Jest to protokół, który został opracowany do działania również w sytuacjach ekstremalnych, np. w czasie wojny. W związku z tym, używa wszelkich dostępnych ścieżek, aby dostarczyć pakiety do celu.
Protokół IP wykorzystuje wszystkie posiadane mechanizmy, aby dostarczyć pakiet do celu. Protokół ten nie dba o potwierdzenie, czy dane dotarły do adresata, stąd też często jest określany jako zawodny. Określenie „zawodny” jest trochę nieprecyzyjne, ponieważ pakiety wysyłane są wszelkimi możliwymi trasami. Za potwierdzenie właściwego przesłania odpowiadają protokoły wyższych warstw.
W przypadku tego pierwszego wpisy dokonywane są ręcznie przez administratora systemu. To administrator musi znać topologię sieci i na jej podstawie dokonuje wyznaczenia optymalnych tras przesyłania pakietów.
W przypadku routingu dynamicznego za wymianę informacji na temat topologii sieci i zachodzących zamianach w połączeniu routerów odpowiadają protokoły routingu.
Szczegółowo routing statyczny i dynamiczny zostaną omówione na kolejnych slajdach.
Wymiana informacji umożliwia protokołom utrzymanie poprawnych tras. Część z protokołów wysyła cyklicznie informacje dotyczące topologii sieci. Powoduje to niepotrzebne obciążanie łączy. Lepszym rozwiązaniem wykorzystywanym przez niektóre protokoły dynamicznego routingu jest wysyłanie uaktualnień w momencie, gdy nastąpią zmiany w topologii sieci.
Innym rozwiązaniem poprawiającym efektywność przesyłania uaktualnień jest przesyłanie tylko tej części tablicy routingu, której dotyczą zmiany.
typ protokołu - wpis, który z protokołów routingu dostarczył informacji na temat danej trasy odniesienie do punktu docelowego/następnego przeskoku - informacja o tym, gdzie znajduje się punkt docelowy lub jak (przez który router) do niego dotrzeć. metryka routingu - informacja o metryce routingu dla danego protokołu interfejs wyjściowy - interfejs, przez który należy wysłać pakiet, aby trafił do sieci docelowej.
W pierwszej kolumnie pokazane są sieci i hosty docelowe. Kolumna „Gateway” informuje, przez jaką bramę następuje komunikacja do wymienionej w poprzedniej kolumnie lokalizacji.
Kolejna kolumna „Flags” podaje następujące informacje: - U - trasa działająca (ang. up) - G - trasa prowadzi przez bramę - H - trasa zdefiniowana do hosta docelowego, a nie do sieci (pierwszy i ostatni wiersz).
Ostatnia kolumna informuje o tym, przez który interfejs odbywa się komunikacja.
Administrator w oparciu o wiedzę, którą posiada, dokonuje wpisów, które są następnie podstawą do kierowania przez router pakietów. Ten sposób konfiguracji routera sprawdza się w sytuacjach, gdy obsługiwana sieć ma nieskomplikowany schemat połączeń. Ewentualne błędy przy przesyłaniu pakietów są wynikiem błędnych wpisów. Stąd są stosunkowo proste w diagnostyce. Administrator ma też możliwość zdefiniowania dystansu administracyjnego. Dzięki takiemu dodatkowemu wpisowi można ustawiać ścieżki zapasowe na wypadek uszkodzenia jednej z tras. Routing statyczny można mieszać z routingiem dynamicznym wtedy zwykle trasy zdefiniowane statycznie są trasami zapasowymi. W takich przypadkach należy użyć wyższej wartości dystansu administracyjnego dla trasy zdefiniowanej w sposób statyczny niż dla trasy wyznaczonej przez protokół routingu.
Zaletą takiej konfiguracji jest również fakt nie obciążania sieci dodatkowymi pakietami z informacjami o topologii (lub jej zmianach), które są przesyłane w przypadku stosowania routingu dynamicznego.
Wadą takiego rozwiązania jest potrzeba ręcznej ingerencji w przypadku awarii któregoś z łączy pośrednich oraz trudność przy definiowaniu połączeń redundantnych na wypadek awarii.
Na slajdzie została podana składnia polecenia ustawienia routingu statycznego w systemie UNIX. W przykładzie pokazano przykładowe wywołanie tego polecenia. Zwykle również w sposób statyczny definiowane są trasy domyślne stacji roboczych i innych urządzeń końcowych. Przykład definiowania tras domyślnych zostanie pokazany na następnym slajdzie.
Na slajdzie pokazano przykład deklaracji domyślnej ścieżki w systemie UNIX. W tym przypadku wszystkie pakiety, dla których nie została odnaleziona ścieżka w tabeli routingu zostaną przesłane na adres 194.29.145.1.
W ramach systemów autonomicznych wykorzystuje się protokoły wewnętrzne (ang. Interior Gateway Protocol). Jak sugeruje nazwa są to protokoły, które umożliwiają komunikację wewnątrz jakiejś większej organizacji. Przykładem takich protokołów są: RIP (wersja 1 i 2), OSPF, EIGRP.
Same systemy autonomiczne są również połączone z innymi systemami. W komunikacji pomiędzy systemami autonomicznymi potrzeba użyć protokołu routingu, który będzie w stanie obsłużyć możliwe różne standardy protokołów. Protokoły routingu, które są w stanie przenosić informacje pomiędzy systemami autonomicznymi nazywamy protokołami zewnętrznymi (ang. Exterior Gateway Protocol). Przykładem takiego protokołu jest BGP.
W przypadku protokołów wektora odległości (ang. distance vector) wyznaczenie trasy routingu oparte jest o znalezienie kierunku, w którym należy przesłać pakiety oraz określeniu odległości (ilości skoków - routerów) do sieci przeznaczenia pakietów. Taki sposób podejścia skutkuje tym, że każdy router widzi sieć przez pryzmat routerów sąsiednich. Protokoły tego typu są dosyć proste algorytmicznie i nie wymagają dużych nakładów obliczeniowych. Niestety ze względu na stosowaną metrykę (liczbę skoków) protokoły te wyznaczają najkrótszą trasę, która nie zawsze musi być najszybsza.
W protokołach, które analizują stan łącza tworzona jest jednolita mapa topologii całej sieci. Do tworzenia topologii sieci używany jest m.in. algorytm Dijkstry. Algorytmy protokołów stan-łącze lepiej wyznaczają optymalną trasę przesyłania pakietów niż protokołu wektora odległości.
RIP (ang. Routing Information Protocol) w wersji 1 i 2. OSPF (ang. Open Shortest Path First) BGP (ang. Border Gateway Protoco) IGRP (ang. Interior Gateway Routing Protocol) EIGRP (ang. Enhanced IGRP).
Pierwsze trzy protokoły są zdefiniowane jako otwarte standardy. Dwa ostatnie z wymienionych są protokołami zaproponowanymi przez firmę Cisco.
Optymalizacja - pod tym wymaganiem kryje się zdolność algorytmu do wyboru ścieżek o najlepszych metrykach. Odporność na błędy i stabilność - zdolność protokołu do radzenia sobie w przypadku nieprzewidzianych awarii. Szybka zbieżność - w przypadku zmiany dostępnych tras następuje przesyłanie informacji na temat zmian do wszystkich routerów, które obsługują routing dynamiczny. Szybka zbieżność gwarantuje, że po zmianie topologii połączeń informacja na temat zmian zostanie możliwie szybko rozpropagowana wśród pozostałych routerów. Elastyczność - cecha, która pozwala na zastosowanie w sieci urządzeń o różnych parametrach. Dotyczy ona również zmiennych warunków pracy w sieci, np. zmiana szerokości pasma, zmiany opóźnień występujących w sieci. Prostota i niski narzut - protokół routingu jest implementowany jako program komputerowy na poszczególnych routerach. Proste algorytmy routingu, które nie wymagają dużych narzutów obliczeniowych w niewielkim stopniu obciążają zasoby sprzętowe urządzenia. Ma to szczególnie istotne znaczenie przy dużych tablicach routingu i rozbudowaniu sieci komputerowych.
szerokość pasma - zwykle im szybsze łącze, tym bardziej preferowane, np. łącze 1Gb/s będzie bardziej preferowane niż łącze modemowe o prędkości 56kb/s Opóźnienie - jest czasem potrzebnym do przesłanie pakietów w pojedynczym łączu danych. Im czas opóźnienia mniejszy tym lepsze własności łącza Obciążenie - intensywność wykorzystanie danego łącza przez innych użytkowników. Im mniejsza tym więcej zasobów może być przeznaczone na przesyłane dane. niezawodność - liczba awarii w danym łączu. Im mniejsza tym łącze bardziej niezawodne. Liczba przeskoków [ang. hoop count] - określa liczbę pośrednich routerów przez, które będzie przesyłany pakiet. W niektórych protokołach, np. w RIP, jest to jedyna miara. Im mniejsza liczba przeskoków (pośrednich routerów), przez które musi być przesłany pakiet do miejsca przeznaczenia, tym lepiej. Impulsy zegarowe - czas opóźnienia łącza jest liczony impulsami zegara komputera IBM PC (ok. 1/18 s) Koszt - wartość oszacowania opłat przypadających na koszt przesłania danych przez łącze.
Wymienione cechy są użyteczne przy definiowaniu metryki routingu jednak w praktyce stosowane protokoły wykorzystują tylko wybrane z nich. Warto zauważyć, że wymienione parametry w sposób naturalny opisują właściwości sieci komputerowych.
Protokół ten obsługuje tylko adresację z podziałem na klasy, stąd nie nadaje się do obsługi sieci z zastosowaną adresacją VLSM.
Protokół ten wysyła aktualizację w formie rozgłaszania na adres broadcastowy 255.255.255.255. Aktualizacja tras wysyłana jest co 30 s.
Metryka stosowana w tym protokole to liczba przeskoków. Maksymalna liczba przeskoków w danej trasie to 15. Zatem jeśli licznik przeskoków osiągnie wartość 16 to dany adres docelowy zaznaczany jest jako nieosiągalny.
Protokół ten umożliwia zrównoważenie obciążenia na maksymalnie 6 ścieżkach, przy czym muszą mieć one równe koszty przesyłania.
command - (1B) pole określające funkcje pakietu. Pole to może zawierać następujące wartości: request (1) - żądanie przesłania tablicy routingu response (2) - odpowiedź na żądanie traceon (3) - pakiety z taką wartością pola powinny być ignorowane traceoff (4) - pakiety z taką wartością pola powinny być ignorowane reserverd (5) - pakiety z taką wartością pola powinny być ignorowane - pole zarezerwowane dla SUN Microsystems. version - (1B) pole numeru wersji protokołu RIP AFI (ang. Address Family Identyfier) (2B) - określa, który protokół jest routowany. Dla protokołu IP wartość tego pola wynosi 2. IP address - (4B) Adres sieci must be zero - (2B lub 4B) pole wypełnione zerami.
Specyfikacja protokołu w wersji 2 została podana w dokumencie RFC 1723. Protokół ten korzysta z tego samego algorytmu wyznaczania tras co jego poprzednik. Z tego względu nie nadaje się on do bardziej skomplikowanych topologii sieciowych.
Cechami charakteryzującymi ten protokół są: Wysyłanie razem z informacją o trasie również maski podsieci - możliwe jest dzięki temu stosowanie metody VLSM. Wprowadza uwierzytelnienie - możliwe jest przesyłanie informacji uwierzytelniających zarówno tekstem jawnym jak i szyfrowanych. Format pakietu uwierzytelniającego zostanie podany na kolejnych slajdach. Umieszcza adres IP routera następnego przeskoku w wysyłanych przez siebie aktualizacjach tras - dzięki temu inne routery, wiedzą przez który router prowadzi lepsza trasa. Korzysta ze znaczników tras zewnętrznych - przenosi informacje uzyskane przy pomocy innych protokołów do sieci wewnętrznej, zaznaczając jednocześnie, że jest to informacja ze źródła zewnętrzenego Wysyła aktualizacje tras na adres multicastowy - korzysta z rozsyłania grupowego na adres z klasy D o numerze IP 224.0.0.9
Wysyłanie informacji o masce podsieci umożliwia zastosowanie techniki VLSM. Dzięki temu wysyłana informacja o trasie jest pełna.
W odróżnieniu od wersji 1 RIP w wersji 2 możliwe jest stosowanie uwierzytelniania przy przesyłaniu informacji o topologii sieci. Podnosi to znacznie bezpieczeństwo.
Kolejną zmianą poprawiającą efektywność przesyłania uaktualnień jest wysyłanie ich na adres rozsyłania grupowego: 224.0.0.9. Dzięki temu tylko routery, do których jest adresowane uaktualnienie muszą przetworzyć pakiet. W wersji 1 RIP informacje o routingu były rozsyłane na adres rozgłoszeniowy (255.255.255.255) w związku z tym wszystkie maszyny musiały przetworzyć otrzymane pakiety. To w znacznym stopniu obciążało routery i całą sieć.
command - (1B) pole komendy version - (1B) wersja protokołu RIP AFI (ang. address family identyfier) - (2B) pole identyfikujące jaki protokół będzie przesyłany. W przypadku IP wpisana jest tam wartość 2. Gdy pole ma ustawioną wartość 0xFFFF, to pakiet niesie informację o autoryzacji. route tag (2B) - określa czy trasa jest wysłana z lokalnego routera obsługującego protokół RIP (trasa wewnętrzna) czy też innego routera obsługującego inne protokoły (trasa zewnętrzna). IP address - (4B) jeśli w polu AFI jest wartość 2, to pole to przechowuje adres IP subnet mask - (4B) maska podsieci next hop - (4B) adres następnego routera na trasie (następnego skoku) metric - (4B) metryka
Format pakietu zawierającego informację o autoryzacji zostanie pokazany na następnym slajdzie.
Jeśli na routerach zostanie aktywowana funkcja autoryzacji w protokole RIPv2, to pakiety nie zawierające nagłówka autoryzacyjnego będą odrzucane przez routery .
Jedną z nich jest metoda podzielonego horyzontu (ang. split horizon). Metoda ta nie pozwala routerowi, który wysłał informację o danej sieci na przyjmowanie informacji o tej sieci od innych routerów.
Inną metodą eliminującą zapętlenia jest blokowanie (zatruwanie) trasy (ang. route poisoning). Router, który wykrył, że sieć do niego przylegająca jest niedostępna zapisuje trasę w swojej tablicy routingu jako niedostępną (metryka = 16) i wysyła uaktualnienia do sąsiednich routerów. Blokuje („zatruwa”) w ten sposób trasę do tej sieci dla innych routerów.
Protokół ten posiada wiele cech, które wyróżniają go w stosunku do wcześniej opisywanego protokołu RIPv1 jak również kilka ulepszeń w stosunku do wersji 2 RIP, m.in.: nie ma ograniczeń dot. liczby przeskoków, obsługuje VLSM, wykorzystuje adres rozsyłania grupowego, szybsza zbieżność, bardziej skuteczna metryka, możliwość równoważenia obciążenia, możliwość uwierzytelnienia, podział sieci na obszary.
Nagłówek pakietu zawiera również wpisy dotyczące uwierzytelnienia (typ uwierzytelnienia) oraz same dane uwierzytelniające.
W momencie uruchomienia protokołu na routerze zaczyna on wymieniać dane na temat tablic routingu z sąsiednimi routerami. Każdy router posiada takie samo odzwierciedlenie topologii sieci, dzięki temu trasy, które są wyliczane przez poszczególne routery są zgodne.
Komunikacja pomiędzy routerami odbywa się poprzez przesłanie pakietu hello. Pakiet taki jest wyróżniany poprzez wpis o wartości 1 w polu „Typ”. Pakiet taki jest wysyłany na adres rozsyłania grupowego 224.0.0.5, który jest dedykowany dla wszystkich routerów OSPF. Po rozesłaniu informacji inicjujących, pakiety „Hello” są przesyłane co 10s lub 30 s w celu potwierdzania właściwej pracy urządzeń.
Po nawiązaniu komunikacji routery wymieniają się informacjami na temat topologii za pomocą komunikatów LSA (ang. Link State Advertisement). Przy dużej liczbie routerów w danym segmencie przesłanie informacji LSA wymagałoby przesłania NxN komunikatów. Stąd w celu zmniejszenia liczby wysyłanych pakietów wybiera się dwa routery: router desygnowany DR (ang. Designated Router) oraz zapasowy router desygnowany BDR (ang. Back-up Designated Router). Szczegółowy opis wyboru tych routerów wykracza poza ramy tego wykładu.
Wszystkie routery w danym segmencie wysyłają informacje o stanie łącz do routera DR (lub w momencie uszkodzenia DR do BDR). Router desygnowany rozsyła potem te komunikaty do wszystkich routerów w segmencie. Dzięki temu ilość wysyłanych komunikatów wynosi 2xN.
Informacje dotyczące routerów desygnowanych oraz identyfikatory są przesyłane w pakiecie „Hello”, który został przedstawiony na następnym slajdzie.
Pakiet ten zawiera wszelkie informacje niezbędne do przeprowadzenia procesu uzgadniania pomiędzy routerami.
Protokół ten został wprowadzony w 1994 r przez firmę Cisco. Jest on następcą protokołu IGRP, który działał w oparciu o wektor odległości. Ze względu na fakt, że protokół EIGRP ustanawia relacje z sąsiednimi urządzeniami budując w ten sposób spójną topologię sieci protokół ten posiada również cechy typowe dla protokołów typu stan łącza.
Jego specyfikacje znajdują się dokumentach RFC: - RFC 1771 - opis protokołu BGP4 - RFC 1772 - informacje nt. BGP Application - RFC 1773 - Informacje nt. BGP Experience - RFC 1774 - Informacje nt. BGP Protocol Analysis - RFC 1655 - Informacje nt. BGP MIB Protokół ten jest obecnie najczęściej wykorzystywanym protokołem do wymiany tablic routingu pomiędzy różnymi systemami autonomicznymi.
relacja wewnętrzna (Internal BGP) - gdy routery należą do tego samego systemu autonomicznego relacja zewnętrzna (External BGP), gdy routery należą do różnych systemów autonomicznych
Wymiana komunikatów pomiędzy routerami odbywa się na porcie 179 protokołu TCP.
W celu otwarcia sesji routery wysyłają komunikat OPEN, w którym określają parametry sesji.
Komunikat UPDATE umożliwia wymianę informacji na temat tablic routingu. Przy pierwszym połączeniu wysyłane są pełne tablice routingu, przy kolejnych tylko te które uległy zmianom.
Gdy nie ma zmian, to wysyłany jest komunikat KEEPALIVE sygnalizujący poprawne działanie obu routerów i łącza.
Omówiono również klasyfikację protokołów routingu.
Podane zostały podstawowe informacje na temat protokołów rotingu.