|
OSPF v.2 jest opisany w RFC2328. Open Shortest Path First (OSPF)
jest protokołem typu Interior Gateway Protocol (IGP) wykorzystywanym
wewnątrz większych sieciach systemów autonomicznych (Autonomous System
- AS). Za AS jest uważana grupa routerów i hostów stosujących wspólny
IGP i zarządzanych przez jedną jednostkę (właściciela, administratora).
OSPF i Link-state
OSPF określa najkrótszą ścieżkę do przeznaczenia przez system
AS, wykorzystując algorytm, który umiejscawia router w tzw. „korzeniu
drzewa”, kalkulując najniższy koszt do pożądanej lokalizacji
(przeznaczenia). W związku z tym, każdy router ma inny wygląd topologii
sieci, nawet jeśli otrzymują te same informacje link-state database.
OSPF jest protokołem typu link-state,
w związku z tym wykorzystuje link state advertisements (LSAs) by
poinformować inne routery o zmianach w topologii, które wykrył. Inaczej
niż RIP, który wysyła co 30 sekund całą tablicę routingu , OSPF
natychmiast wysyła multicastem LSA, gdy wykryje zmiany w sieci. Jednak
wysyła on tylko ta część tabeli routingu, która została zmieniona. By
ograniczyć broadcast LSA, system autonomiczny AS jest dzielony na kilka
oddzielnych stref (area). Kiedy skonfigurowana jest dana strefa to LSA
i konfiguracje SPF (Shortest Path First) na routerze są ograniczone
tylko do zmian wewnątrz tej strefy. Podstawową strefą jest Backbone
0.0.0.0, do którego przylegają poszczególne strefy Area X.X.X.X.
Routery w Backbone znają całą topologię sieci nazywamy je BR (Border Router), routery w Area znają
tylko wewnętrzną topologię tej strefy.
Istnieją różne typy
routerów w sieci OSPF. Routery, których wszystkie interfejsy należą do
tej samej strefy, nazywane są routerami wewnętrznymi IR (internal
routers). Skoro IR należą do tej samej strefy, to mają one dokładnie
taką samą bazę danych (link-state database) jak inne routery w tej
strefie. Jeśli router należy do więcej niż jednej strefy, jest on
nazywany ABR (Area Border Router). ABR odpowiedzialny jest za
dystrybucję rozgłoszeń tras przez jego interfejsy do odpowiednich
stref. Router, który ma uruchomionych kilka protokołów lub działa jako
gateway (brama) do innych zewnętrznych routerów nazywany jest ASBR
(Autonomous System Border Router). Implementacja OSPF obsługuje
wykorzystanie wielu ścieżek ECMP (Equal Cost Multi Path) – load
balancing.
Typu pakietów OSPF
Nagłówek pakietu OSPF
Protokół OSPF (Open Shortest Path First) wykorzystuje protokół IP do przenoszenia swoich pakietów. Numer protokołu w nagłówku IP dla OSPF wynosi 89. Wszystkie pakiety protokołu OSPF mają ten sam format nagłówka, który jest przedstawiony poniżej.

Wersja: Numer wersji OSPF.
Typ: Typ pakietu OSPF. W OSPF wyróżnia się 5 typów pakietów, takich jak poniżej:
- Typ 1 Hello - Odkrywanie/zarządzanie sąsiadami
- Typ 2 Database Description - Sumaryzacja zawartości bazy danych
- Typ 3 Link State Request - Download bazy danych
- Typ 4 Link State Update - Aktualizacja bazy danych
- Typ 5 Link State Ack - Potwierdzenie rozpływowe
Długość pakietu: Długość pakietu OSPF w bajtach, łącznie z długością nagłówka OSPF.
Router ID: Identyfikator routera OSPF, który wysłał ten pakiet.
Area ID: 32 bitowy numer identyfikacyjny obszaru OSPF (AREA), do której należy ten pakiet. Wszystkie pakiety OSPF są skojarzone z jedną areą.
Suma kontrolna: standardowa suma kontrolna taka jak w IP, liczona z całego pakietu OSPF łącznie z agłówkiem, ale bez 64-bitów pola Autoryzacji.
AuType: Identyfikuje procedurę autoryzacji pakietu OSPF.
- 0 - brak autoryzacji
- 1 - proste hasło
- 2 - autoryzacja kryptograficzna (algorytm MD5)
Autoryzacja: 64-bitowe pole schematu autoryzacji.
Gdy OSPF wykorzystuje sieć broadcastową do wymiany swoich pakietów to stosuje multicast. Dla celów OSPF zarezerwowano dwa adresy multicastowe:
224.0.0.5 - AllSPFRouters, pakiet do wszystich routerów OSPF.
224.0.0.6 - AllDRouters, pakiet do wszystkich routerów DR (DR + BDR).
Dodatkowo pakiet OSPF ma ustawione pole TOS na wartość bitową 0000 i IP precedens na Internetwork Control.
Pakiet OSPF Hello
Pakiety Hello są typem 1 pakietu OSPF. Są one wysyłane okresowo na wszystkie interfejsy w celu ustanowienia i zarządzania relacjami z sąsiadami (dynamiczne odkrywanie sąsiadów, sprawdzanie ich obecności, potwierdzanie obecności). Wszystkie routery przyłączone do wspólnej sieci muszą zgodzić się na wspólne parametry jakimi są Maska sieci, HelloInterval i RouterDeadInterval. Jeśli te parametry się różnią, to możliwy jest brak ustanowienia sąsiedztwa.

Maska sieci: maska sieci przypisana do interfejsu, z którego wysłano pakiet Hello.
Opcje: dodatkowe funkcjonalności obsługiwane przez router.
- E-bit - rozgłaszanie (floodowanie) AS-external-LSA
- MC-bit - opisuje czy datagram multicastowy IP jest przekazywany zgodnie z RFC1584 "Multicast Extensions to OSPF".
- N/P-bit - opisuje obsługę Type-7 LSA wg. RFC3101 "The OSPF NSSA Option".
- EA-bit - wyraża chęć do otzrymywania i przekazywania External-Attributes-LSA.
- DC-bit - obsługa żądania łączy wg. RFC1793 "Extending OSPF to Support Demand Circuits".
HelloInterval: ilość sekund między pakietami Hello.
Rtr Pri: Router Priority - priorytet routera, wykorzystywaniu przy wyborze routera DR i BDR [(Backup) Designated Router]. Wartość 0 oznacza wyłaczenie z elekcji do DR i BDR.
RouterDeadInterval: ilość sekund przed deklaracją, że router jest nieosiągalny.
Designated Router: router desygnowany dla tej sieci. DR jest identyfikowany przez swój adres IP interfejsu w tej sieci. 0.0.0.0 oznacza, że brak jest DR.
Backup Designated Router: zapasowy router desygnowany dla tej sieci. BDR jest identyfikowany przez swój adres IP interfejsu w tej sieci. 0.0.0.0 oznacza, że brak jest BDR.
Neighbor: kolejne pola z RouterID sąsiadów, od których ten router ostatnio usłyszał poprawne pakiety Hello. Ostatnio oznacza, że w ciągu sekund jakie wyznacza RouterDeadInterval.
Pakiet OSPF Database Description
Pakiet Database Description (opis bazy danych) jest pakietem OSPF typu 2. Pakiety DD (Database Description) są wymieniane po zainicjalizowaniu sąsiedztwa między routerami OSPF i oposują zawartość bazy danych link-state. W celu wymiany informacji wykorzystuje się mechanizm odpytanie - odpowiedź między routerami. Jeden z routerów OSPF jest wyznaczany jako główny (master - patrz bit MS w pakiecie DD ustawiony na 1), a drugi jako podrzędny (slave - bit MS=0). Master wysyła pakiety DD (odpytując swoją bazę), które są potwierdzane przez router slave (odpowiedź). Routery stosują numer sekwencyjny, aby odpowiedzi powiązać z odpytaniami.

MTU interfejsu: wielkość w bajtach największego datagramu IP, jaki może zostać wysłany na ten interfejs bez fragmentacji.
Opcje: dodatkowe funkcjonalności obsługiwane przez router.
bit I: bit Inicjalizacji (Init), jeśli ustawiony na 1, to pakiet jest pierwszym w sekwencji pakietów DD.
bit M: bit More (więcej), jeśli ustawiony na 1, wskazuje, że nadejdzie więcej pakietów DD.
bit MS: bit Master/Slave (główny/podrzędny), jeśli ustawiony na 1, wskazuje, że router OSPF jest głównym routerem w procesie wymiany bazy danych. 0 oznacza, że podrzędnym (slave).
Numer sekwencyjny DD: stosowany do numerowania sekwencji pakietów DD. Wartość początkowa jest tą wartością, która przyjdzie wraz z bitem Init. Następnie jest inkrementowana, aż do całkowitego przesłania bazy danych.
Pola Nagłówek LSA i ... : pozostała część pakietu DD zawiera części bazy danych link-state. Każdy LSA (Link State Advertisement) w bazie danych jest opisany przez nagłówek LSA.
Pakiet OSPF Link State Request
Pakiet Link State Request (pakiet OSPF LSR)jest pakietem OSPF typu 3. Jest on wykorzystywany przez sąsiedni router po procesie wymiany bazy danych link-state między routerami OSPF i stwierdzeniu, że część informacji w bazie jest przeterminowana. Pakiet LSR jest zapytaniem do sąsiedniego routera OSPF o konkretną aktualną część informacji. Może być ich kilka. Router wysyłający pakiet LSR oczekuje odpowiedzi dla konkretnej instancji. Każda instancja w bazie danych ma swój numer sekwencyjny, sumę kontrolną LS i wiek LS, jednak te wartości nie są zawarte w pakiecie LSR, w związku z tym router OSPF może otrzymać wiele instancji w odpowiedzi.

Każdy żądany LSA (Link State Advertisement) w pakiecie OSPF Link State Request jest określony przez swój typ LS, Link State ID i Advertising Router (router rozgłaszający), co unikalnie identyfikuje LSA, ale nie jego instancję, dlatego też należy rozumieć żądanie przez pakiet LSR najświeższej (najbardziej aktualnej) instancji.
Pakiet OSPF Link State Update
Pakiet Link State Update (LSU) jest pakietem OSPF typu 4. Te pakiety rozgłaszają LSA (mechanizm floodingu - rozpływu informacji). Każdy pakiet LSU przenosi zbiór kilku LSA na odległość jednego skoku routera od źródła wysłania. Pakiety LSU są multicastami w sieciach obsługujących multicast/broadcast, W celu zapewnienia większej niezawodności pakiety LSU są potwierdzane przez pakiety Link State Acknowledgment. Jeśli jest potrzebna retransmisja konkretnej LSA, to retransmitowane LSA są zawsze wysyłane bezpośrednio do sąsiada.

# LSA: liczba LSA zawartych w aktualizacji
Zawartosć pakietu OSPF LSU składa się z listy LSA, gdzie każdy LSA zaczyna się 20 bajtowym nagłówkiem.
Pakiet OSPF Link State Acknowledgment
Pakiet Link State Acknowledgment jest pakietem OSPF typu 5. Pakiety te są wykorzystywane do niezawodnego przekazywania LSA (Link State Advertisement) poprzez ich potwierdzenie. Kilka LSA może zostać potwierdzonych przez jeden pakiet Link State Acknowledgment. Pakiet Link State Acknowledgment może być wysłany multicastem pod adres AllSPFRouters (224.0.0.5) lub unicastem do konkretnego routera, który wysłał pakiet Link State Update. Format tego pakietu jest zbliżony do pakietu DD.

Każdy potwierdzony LSA jest opisany przez swój nagłówek LSA. Zawiera informacje potrzebne do unikalnej identyfikacji zarówno LSA jak i jego aktualnej instancji.
Typy LSA
W OSPF wyróżniamy pięć różnych typów LSA (Link State Advertisement). KAżdy LSA rozpoczyna się standardowym 20 bajtowym nagłókiem LSA.
Każdy LSA opisuje fragment domeny routingu OSPF. Każdy router wysyła router-LSA, w dodatku jeśli router został wybrany na Designated Router to również wysyła network-LSA.
Wszystkie LSA są floodowane przez domenę routingu OSPF, w celu zapewnienia, że wszystkie routery maja te same informację. Zbiór LSA w routerze nazywamy bazą danych link-state (link-state database). Z bazy tej router tworzy drzewo najkrótszej ścieżki z sobą jako rootem (SPF - Shortest Path First), co w konsekwencji pozwala na stworzenie tabeli routingu.
Wyróżniamy następujące typy LSA (identyfikowane przez pole Typ LSA w nagłóku LSA):
| Typ LS |
Znaczenie
|
| 1 |
Router-LSA |
| 2 |
Network-LSA |
| 3 |
Summary-LSA (sieć IP) |
| 4 |
Summary-LSA (ASBR) |
| 5 |
AS-external-LSA |
Nagłówek LSA
Wszystkie LSA mają taki sam nagłówek 20 bajtowy, który zawiera wystarczającą ilość informacji do unikalnej identyfikacji LSA czyli typ LSA, Link State ID i Advertising Router. W tym samym czasie w domenie OSPF może istnieć wiele instancji LSA w związku z tym ważne jest określenie, która instancja jest najnowsza. Do tego celu stosuje się wiek LSA (LSA age), numer sekwencyjny LS i sumę kontrolną LS, pola, które sa również zawarte w nagłóku LSA.

Wiek LS: czas w sekundach odkąd od momentu wysłania LSA
Opcje: dodatkowe funkcjonalności obsługiwane przez opisywaną część domeny routingu. Patrz opcje w pakiecie OSPF Hello.
Typ LS: typ LSA, każdy LSA ma odrębny format.
Link State ID: pole identyfikuje część środowiska sieciowego opisywanego przez LSA. Zawartość tego pola zależy od wartości pola Typ LS.
Advertising Router: RouterID routera, który wysłał LSA.
Numer Sekwencyjny LS: wykrywa stare lub powielone LSA. Kolejne instancje LSA mają kolejne numery sekwencyjne LS.
Suma kontrolna LS: Suma kontrolna liczona wg. algorytmu Fletchera całej zawartości LSA łącznie z nagłówkiem LSA, ale bez pola Wiek LS.
Długość: liczona w bajtach długość LSA łącznie z 20 bajtowym nagłówkiem LSA.
|