Wewnętrzny protokół routingu systemu autonomicznego w internecie - protokół OSPF
Omawiając algorytmy routingu, potraktowaliśmy sieć po prostu jako zbiór połączonych ze sobą routerów. Jeden router był nieodróżnialny od innego w tym sensie, że wszystkie routery za pomocą tego samego algorytmu routingu wyznaczały ścieżki biegnące na obszarze całej sieci. W praktyce tego typu model i jego jednorodny zestaw routerów używających identycznego algorytmu routingu jest trochę bardziej uproszczony, przynajmniej z dwóch następujących istotnych powodów:
- Skala. Wraz ze wzrostem liczby routerów obciążenie związane z przetwarzaniem, przechowywaniem i przesyłaniem informacji związanych z routingiem staje się niedopuszczalne. Obecnie publiczny internet składa się z setek milionów hostów. Magazynowanie danych na temat routingu na każdym z tych hostów oczywiście wymagałoby ogromnej ilości pamięci. Obciążenie związane z rozgłaszaniem aktualizacji algorytmu stanu łącza wśród wszystkich routerów internetowych spowodowałoby, że dla przesyłanych pakietów danych nie pozostałaby żadna wolna przepustowość! Algorytm wektora odległości uwzględniający tak dużą liczbę routerów z pewnością nigdy nie zakończyłby konwergencji. Oczywiście muszą zostać podjęte kroki mające na celu zmniejszenie złożoności wyznaczania tras w przypadku tak dużych sieci jak internet.
- Autonomia administracyjna. Internet to sieć dostawców ISP, z których każdy obejmuje własną sieć routerów. Dostawca ISP zwykle chce operować swoją siecią w wybrany przez niego sposób (na przykład stosować dowolny wybrany algorytm routingu lub ukrywać przed światem zewnętrznym aspekty związane z siecią wewnętrzną organizacji). W idealnej sytuacji organizacja powinna być w stanie uruchamiać sieć i zarządzać nią zgodnie ze swoimi wymaganiami, a także jednocześnie mieć możliwość połączenia swojej sieci z sieciami zewnętrznymi.
Problemy związane ze skalą i autonomią administracyjną są rozwiązywane przez organizowanie routerów za pomocą systemów autonomicznych. Każdy taki system składa się z grupy routerów, które zwykle podlegają tej samej jednostce administracyjnej. Często jest tak, że routery dostawcy ISP i łącza między nimi tworzą jeden system autonomiczny. Jednak niektórzy dostawcy ISP dzielą swoje sieci na wiele takich systemów. Część dostawców ISP warstwy 1. buduje jeden wielki system autonomiczny obejmujący całą sieć takiego dostawcy, natomiast inni dostawcy dzielą swoje sieci na dziesiątki połączonych systemów. System autonomiczny jest identyfikowany na podstawie globalnego numeru ASN (ang. autonomous system number) [RFC 1930]. Te numery, podobnie jak adresy IP, są przydzielane przez lokalne jednostki rejestracyjne ICANN [ICANN 2016].
Routery wchodzące w skład tego samego systemu autonomicznego używają identycznego algorytmu routingu i dysponują informacjami na temat innych routerów. Algorytm routingu funkcjonujący w obrębie systemu autonomicznego jest nazywany wewnętrznym protokołem routingu systemu autonomicznego.
Protokół OSPF
OSPF i jego bliski kuzyn protokół IS-IS są powszechnie stosowane jako wewnętrzny protokół routingu systemu autonomicznego w internecie. Słowo „Open” w nazwie Open Shortest Path First wskazuje, że specyfikacja protokołu routingu OSPF jest publicznie dostępna (w przeciwieństwie na przykład do protokołu EIGRP firmy Cisco, który niedawno został udostępniony [Savage 2015] po ok. 20 latach bycia zastrzeżonym protokołem tej firmy). Najnowsza (druga) wersja protokołu OSPF jest zdefiniowana w ogólnie dostępnym dokumencie RFC 2328.
Protokół OSPF jest protokołem stanu łącza, który dystrybuuje informacje na temat stanu łącza i korzysta z algorytmu Dijkstry wyznaczającego ścieżkę o najmniejszym koszcie. W protokole OSPF router tworzy mapę topologii (graf) całego systemu autonomicznego. W dalszej kolejności router lokalnie uruchamia algorytm Dijkstry, aby wyznaczyć drzewo najkrótszych ścieżek prowadzących do wszystkich podsieci. Sam router pełni rolę korzenia drzewa. Koszt poszczególnych łączy jest określany przez administratora sieci (należy zapoznać się z poniższą ramką „Podstawy w praktyce — Określanie wag łączy w protokole OSPF”). Administrator może dla wszystkich łączy ustawić koszt wynoszący 1, dzięki czemu możliwe będzie zastosowanie routingu minimalnego przeskoku. Może też zdecydować się na określanie wag łączy, które są odwrotnie proporcjonalne do ich pojemności. W ten sposób można sprawić, że ruch sieciowy nie będzie kierowany do łączy o niewielkiej przepustowości. Protokół OSPF nie narzuca tego, w jaki sposób należy definiować wagi łączy. Za to jest odpowiedzialny administrator sieci. Jednak protokół oferuje mechanizmy, które dla określonego zestawu wag łączy wyznaczają ścieżkę o najmniejszym koszcie.
W protokole OSPF router rozgłasza informacje dotyczące trasowania do wszystkich pozostałych routerów systemu autonomicznego, a nie tylko do sąsiednich routerów. Router rozsyła informacje na temat stanu łącza każdorazowo, gdy ulega on zmianie (na przykład zmienia się koszt lub status dostępności łącza). Ponadto router okresowo rozgłasza stan łącza (przynajmniej co 30 minut), nawet jeśli stan ten się nie zmienił. W dokumencie RFC 2328 stwierdzono, że takie okresowe aktualizowanie ogłoszeń dotyczących stanu łącza poprawia stabilność algorytmu stanu łącza. Ogłoszenia protokołu OSPF są umieszczone w komunikatach protokołu transferowanych bezpośrednio przez protokół IP (w polu nagłówka datagramu IP protokół OSPF jest identyfikowany przez liczbę 89). A zatem protokół OSPF musi we własnym zakresie implementować takie funkcje jak niezawodny transfer komunikatów i rozgłaszanie informacji na temat stanu łącza. Protokół OSPF sprawdza też, czy łącza są sprawne (za pomocą komunikatu HELLO przesyłanego do sąsiedniego węzła) i umożliwia routerowi pobranie od sąsiedniego routera bazy danych przechowującej informacje na temat stanu łączy całej sieci.
Oto niektóre zaawansowane funkcje protokołu OSPF:
- Bezpieczeństwo. Wymiana komunikatów między routerami OSPF (na przykład aktualizacje informacji na temat stanu łącza) jest uwierzytelniana. Dzięki temu tylko zaufane routery systemu autonomicznego mogą używać protokołu OSPF. W ten sposób zapobiega się wprowadzeniu przez intruzów (lub studentów praktycznie wykorzystujących właśnie nabytą wiedzę z zakresu sieci) niepoprawnych danych do tabel routerów. Domyślnie pakiety przesyłane między routerami OSPF nie są uwierzytelniane i mogą zostać sfałszowane. Można skonfigurować dwa typy uwierzytelniania — uwierzytelnianie proste i MD5 (należy się zapoznać z omówieniem uwierzytelnienia MD5 i uwierzytelnienia w ogólności zamieszczonym w rozdziale 8.). W przypadku prostego uwierzytelniania dla każdego routera jest ustawiane to samo hasło. Gdy router wysyła pakiet protokołu OSPF, dołącza do niego hasło w niezaszyfrowanej postaci. Oczywiście proste uwierzytelnianie nie jest w pełni bezpieczne. Uwierzytelnianie MD5 jest oparte na wspólnych tajnych kluczach konfigurowanych dla wszystkich routerów. Każdy router oblicza wartość skrótu MD5 dla każdego pakietu OSPF. Wartość jest określana na podstawie zawartości pakietu i skonfigurowanego tajnego klucza (zobacz omówienie kodów uwierzytelniania komunikatów w rozdziale 8.). W dalszej kolejności uzyskaną wartość skrótu router umieszcza w pakiecie protokołu OSPF. Za pomocą wcześniej zdefiniowanego tajnego klucza router odbiorczy oblicza wartość skrótu MD5 pakietu i porównuje ją z wartością zawartą w pakiecie, tym samym weryfikując jego autentyczność. W przypadku uwierzytelniania MD5 są też stosowane numery sekwencyjne, które chronią przed atakami przez powtarzanie.
- Wiele ścieżek o identycznym koszcie. Jeżeli istnieje wiele ścieżek o takim samym koszcie, prowadzących do węzła docelowego, protokół OSPF umożliwia ich zastosowanie (oznacza to, że gdy dostępnych jest wiele ścieżek o jednakowym koszcie, cały ruch sieciowy nie musi być przesyłany tylko jedną ścieżką).
- Zintegrowana obsługa routingu związanego z rozsyłaniem grupowym i jednostkowym. Protokół MOSPF (ang. Multicast OSPF) [RFC 1584] oferuje rozszerzenia protokołu OSPF obsługujące routing związany z rozsyłaniem grupowym. Protokół MOSPF korzysta z istniejącej bazy danych protokołu OSPF przechowującej informacje na temat łączy, a także mechanizm rozgłaszania informacji dotyczących stanu łączy stosowanych przez protokół OSPF poszerza o nowy typ ogłoszenia zawierającego dane na temat stanu łączy.
- Obsługa hierarchii w obrębie pojedynczego systemu autonomicznego. System autonomiczny używający protokołu OSPF można hierarchicznie skonfigurować i podzielić na obszary. W każdym obszarze jest stosowany jego własny algorytm routingu stanu łącza. Ponadto każdy router znajdujący się w obszarze rozgłasza informacje na temat stanu łączy pozostałym routerom obszaru. W obrębie każdego obszaru jeden lub więcej routerów brzegowych odpowiada za trasowanie pakietów poza obszar. Dokładnie jeden obszar systemu autonomicznego, używający protokołu OSPF ma przypisaną rolę obszaru szkieletowego. Podstawowym zadaniem obszaru szkieletowego jest trasowanie ruchu sieciowego między pozostałymi obszarami systemu autonomicznego. Obszar szkieletowy zawsze swoim zakresem obejmuje wszystkie routery brzegowe obszarów systemu autonomicznego, a także może uwzględniać routery, które nie są brzegowymi. Routing realizowany między obszarami systemu autonomicznego wymaga, aby najpierw pakiet został przekazany routerowi brzegowemu obszaru (w ramach wewnętrznego routingu obszaru), a następnie za pośrednictwem obszaru szkieletowego do routera brzegowego docelowego obszaru i ostatecznego miejsca przeznaczenia.
OSPF jest stosunkowo złożonym protokołem. Z konieczności jego omówienie było pobieżne. Więcej informacji można znaleźć w źródłach [Huitema 1998; Moy 1998; RFC 2328]
Opracowano na podstawie: