Open Shortest Path First (OSPF) ist eininternes IP-Routing-Protokoll vomTyp "Verbindungsstatus". Es wurdeab 1987im Rahmen derInternet Engineering Task Force(IETF) entwickelt. Die aktuelle Version von OSPFv2 ist 1997 inRFC 2328 beschrieben. Eine Version 3 ist seit 2008 inRFC 5340 definiert (ursprünglich inRFC 2740 im Jahr 1999) und ermöglicht die Verwendung von OSPF in einem NetzwerkIPv6.
Die OSPF-Arbeitsgruppe wurde 1987 innerhalb der IETF gebildet , um RIP zu ersetzen . Es ist vom von BBN entwickelten ARPANET- Protokoll inspiriert . Version 1 wurde 1990 in RFC 1131 veröffentlicht (aber nie implementiert). Version 2 wurde 1991 als RFC 1247 beschrieben. 1992 empfahl die Internet Engineering Steering Group (IESG) OSPF als IGP für das Internet in RFC 1371.
In OSPF stellt jeder Router Adjazenzbeziehungen zu seinen unmittelbaren Nachbarn her, indem er in regelmäßigen Abständen Hallo- Nachrichten sendet . Jeder Router kommuniziert dann die Liste der Netzwerke, mit denen er verbunden ist, über LSA- Nachrichten ( Link-State Advertisements ) , die Schritt für Schritt an alle Router des Netzwerks weitergegeben werden. Der Satz von LSAs bildet für jeden Bereich eine Link-State-Datenbank (LSDB), die für alle teilnehmenden Router in diesem Bereich identisch ist. Jeder Router verwendet dann Dijkstra-Algorithmus , Shortest Path First (SPF) die schnellste Route zu jedem der bekannten Netzwerken im LSDB zu bestimmen.
Das ordnungsgemäße Funktionieren von OSPF erfordert daher eine vollständige Konsistenz bei der SPF-Berechnung, sodass beispielsweise Routen nicht gefiltert oder innerhalb eines Gebiets zusammengefasst werden können.
Im Falle einer Änderung der Topologie werden neue LSAs Schritt für Schritt weitergegeben, und der SPF-Algorithmus wird auf jedem Router erneut ausgeführt.
Um zu vermeiden, dass die gesamte Datenbank von Links weitergegeben wird, und um die negativen Auswirkungen von Flattern oder Flattern (schnelle Änderung der Verfügbarkeit eines Links) zu begrenzen , werden alle Router in verwandte Gruppen unterteilt, die als Bereiche bezeichnet werden und an deren Grenze Zusammenfassungen möglich sind gemacht sein. Jeder Bereich wird durch eine positive oder Null-Ganzzahl unterschieden, die von 0 bis 4.294.967.295 variiert. Diese Zahl wird manchmal in Punkt-Dezimal-Schreibweise ausgedrückt, genau wie eine IP-Adresse . Jedes Subnetz gehört zu einem einzelnen Bereich.
Es gibt immer einen Backbone-Bereich , Bereich 0 oder Bereich 0.0.0.0, mit dem alle anderen Bereiche verbunden sind.
Die Bereiche sind logisch zusammenhängend. Wenn die Router, aus denen ein Bereich besteht, physisch nicht zusammenhängend sind, werden virtuelle Verbindungen zwischen den Routern konfiguriert, die einen gemeinsamen Staging-Bereich haben. Diese virtuellen Verbindungen gehören zu Bereich 0. Das Protokoll behandelt sie als nicht nummerierte Punkt-zu-Punkt-Verbindungen.
Jeder Router wird anhand einer eindeutigen Router-ID im Netzwerk identifiziert . Die Router-ID ist eine positive 32-Bit-Zahl, die normalerweise als IP-Adresse dargestellt wird. Wenn keine explizite Konfiguration vorliegt, wird die höchste lokale IP-Adresse verwendet. Wenn Loopback- Schnittstellen vorhanden sind , wird die höchste IP-Adresse als Router-ID verwendet. Die Ermittlung der Router-ID erfolgt erst bei der Initialisierung des OSPF-Prozesses und bleibt danach unabhängig von der Neukonfiguration oder der Zustandsänderung der Schnittstellen bestehen.
Es gibt folgende Arten von Routern:
Interner Router ein Router, dessen Schnittstellen sich alle im selben Bereich befinden; Area Border Router (ABR) einen Router mit Schnittstellen in verschiedenen Bereichen; Autonomous System Boundary Router (ASBR) einen Router, der Routen von anderen Routing-Protokollen oder statischen Routen in OSPF einfügt; Backbone-Router ein Router, von dem mindestens eine Schnittstelle zum Bereich 0 gehört. Alle ABRs sind Backbone-Router.OSPF verwendet das IP-Protokoll Nr. 89. Die TTL der Pakete wird auf 1 gesetzt, um ihre Weitergabe über das Teilnetzwerk hinaus zu verhindern, und das ToS- Feld wird auf 0 gesetzt. OSPF verwendet Multicast- Adressen in Broadcast- und Punkt-zu-Punkt-Netzwerken.
OSPF-Pakete haben eine Größe von bis zu 65535 Byte und verwenden bei Bedarf die IP-Fragmentierung. Es wird jedoch empfohlen, die MTU der Verbindung zu berücksichtigen , um eine Fragmentierung zu vermeiden, indem die LSAs nach Möglichkeit in LS Update-Nachrichten verteilt werden, die kleiner als die MTU sind.
LSAs können auch bis zu 64 KB groß sein , sind jedoch im Allgemeinen klein, mit Ausnahme von Typ 1 ( Router-LSA ), der für Router mit vielen OSPF-Schnittstellen groß sein kann.
Es gibt 5 Arten von OSPF-Paketen:
Hallo (Typ 1) Entdeckung von Nachbarn und Aufrechterhaltung von Nachbarschaften; Datenbankbeschreibung (DBD, Typ 2) Beschreibung der LSAs; Verbindungsstatusanforderung (Typ 3) Anfordern einer LSA; Verbindungsstatusaktualisierung (LSU, Typ 4) Aktualisieren eines LSA; Verbindungsstatusbestätigung (Typ 5) Bestätigung eines LSA.Typ 1 (Hallo) wird zum Einrichten und Verwalten von Nachbarschaften verwendet, die anderen Typen werden für die LSDB-Synchronisation verwendet.
LSA-Pakete sind ein Subtyp des LSU-Pakets. Folgende Typen sind definiert:
Typ 1 (Router) von einem Router gesendet, beschreibt den Status seiner Schnittstellen; Typ 2 (Netzwerk) Broadcasting by a DR (Designated Router) beschreibt die an ein Subnetz angeschlossenen Router. Typ 3 (Zusammenfassung) Routenzusammenfassung durch eine ABR; Typ 4 (Interarea-Zusammenfassung) Route zu ASBR, generiert von einem ABR; Typ 5 (extern) von einem ASBR gesendet, beschreibt eine externe Route; Typ 6 (Multicast-Gruppenmitgliedschaft) von MOSPF verwendet; Typ 7 (externe NSSA) externe Route, die von einem ASBR einer NSSA generiert wird.Die Typen 1 und 2 bilden die internen Routen eines Gebiets (Intra-Area), die Typen 3 und 4 sind Inter-Area-Routen (IA). Backbone-Router sind für die Übertragung von Routing-Informationen zwischen Bereichen verantwortlich.
Die externen Routen sind unterteilt in:
Typ E1 Die Kosten für den Zugriff auf die ASBR werden zur Anfangsmetrik der externen Route addiert. Typ E2 Die Kosten für die Metrik sind fest und hängen nicht von den Kosten für den ASBR ab.LSAs werden durch den Ursprungsrouter, den LSA-Typ und die LSA-ID identifiziert. Die Bedeutung der letzteren variiert je nach Art der LSA:
LSA-Typ | LSA ID |
---|---|
1 | Die Router-ID des Senders |
2 | Die IP-Adresse der DR-Schnittstelle |
3 | Die Zielnetzwerkadresse |
4 | Die ASBR-Router-ID |
5 | Die Adresse des externen Netzwerks |
Der Typ 1 LSA (Router) ist in vier Untertypen unterteilt, die vom beschriebenen Netzwerktyp abhängen.
+ Verbindungstyp 1Subtyp | Beschreibung | Link ID | Daten verknüpfen |
---|---|---|---|
1 | Punkt zu Punkt | Router-ID des Nachbarn | IP-Adresse der Schnittstelle oder MIB-II ifIndex, wenn die Schnittstelle nicht nummeriert ist |
2 | Verbindung zu einem Transitnetz | DR-Schnittstellenadresse | IP-Adresse der Schnittstelle |
3 | Link zu einem Stub-Netzwerk | Netzwerkadresse | Netzwerkmaske |
4 | virtueller Link | Router-ID des Nachbarn | IP-Adresse der Schnittstelle |
Alle LSAs werden mit einer Prüfsumme geliefert , die die Datenintegrität gewährleistet. Dies wird nach Erhalt der LSA überprüft, in der LSDB aufgezeichnet und unverändert an die Nachbarn übertragen. Es wird dann in regelmäßigen Abständen erneut überprüft, um sicherzustellen, dass der Inhalt der LSDB nicht beschädigt wurde.
LSA-ManagementLSAs zeichnen sich durch ihren Heimrouter, Typ und LSA-ID aus. Die Sequenznummern (32-Bit-Ganzzahl mit Vorzeichen) erhöhen sich mit jeder Änderung um 1, wobei die erste Sequenznummer 0x80000001 (InitialSequenceNumber, -2 31 +1) bis 0x7fffffff (2 31 ) ist. Jede Version des LSA ersetzt die Versionen mit der niedrigeren Sequenznummer. Wenn keine Änderung vorgenommen wird, werden die LSAs alle 30 Minuten aktualisiert (LSRefreshTime). Ein LSA, der das Alter von einer Stunde erreicht (MaxAge), wird aus der LSDB entfernt. Der Ursprungsrouter des LSA kann angeben, dass der LSA nicht aktualisiert wird, indem das DoNotAge-Bit in den Optionen auf 1 gesetzt wird.
LSAs werden zuverlässig gesendet. Wenn ein Router einen LSA nach einer Topologieänderung aktualisieren muss, erhöht er seine Sequenznummer und sendet sie als Link-State Update-Paket (das möglicherweise mehr als einen LSA enthält) an seine benachbarten Nachbarn. LSAs werden dann explizit bestätigt, andernfalls werden sie erneut übertragen. Router, die die LSA empfangen, vergleichen ihre Sequenznummer mit der bereits vorhandenen. Wenn sie höher ist, registrieren sie die LSA in der LSDB und geben sie auch an ihren Nachbarn weiter. Das Feld LS Age wird bei jeder Übertragung erhöht, um Endlosschleifen nach einem Softwarefehler zu vermeiden. Wenn ein LSA mit einer Sequenznummer empfangen wird, die mit der bereits in der LSDB vorhandenen identisch ist, jedoch einen Altersunterschied von weniger als 15 Minuten aufweist (MaxAgeDiff), wird der LSA ignoriert.
Ein Router am Ursprung eines LSA, den er aus der LSDB entfernen möchte, sendet ihn mit einem LS Age = MaxAge, wodurch er eliminiert wird.
Router aktualisieren eine LSA nicht häufiger als alle 5 Sekunden (MinLSInterval). Router lehnen Aktualisierungen von einem LSA ab, der bereits vor weniger als einer Sekunde aktualisiert wurde.
Wir unterscheiden folgende Arten von Bereichen:
Bereich 0 Rückgratbereich; regelmäßiger Bereich jeder Bereich, wobei der Backbone-Bereich eine bestimmte Iteration ist; Stummelbereich Gebiet, in das keine LSAs vom Typ 5 übertragen werden (externe Routen); total stub area Mit Ausnahme einer Standardroute wird dort kein LSA vom Typ 3, 4, 5 oder 7 weitergegeben. nicht so stumpfer Bereich (NSSA) Art des Stub-Bereichs, der die Injektion externer Routen über einen LSA vom Typ 7 ermöglicht. Typ 7 wird in Typ 5 umgewandelt, wenn er außerhalb des Bereichs übertragen wird. total NSSA NSSA ohne LSA 3 und 4 mit Ausnahme einer Standardroute.Es ist nicht möglich, virtuelle Links über einen Stub-Bereich oder interne ASBRs zu einem Stub-Bereich zu erstellen.
Punkt zu Punkt | Übertragung | Point-to-Multipoint (nicht gesendet) |
Point-to-Multipoint (Broadcast) |
NBMA | |
---|---|---|---|---|---|
DR / BDR | Nein | Ja | Nein | Nein | Ja |
hallo / tot | 10s / 40s | 10s / 40s | 30er / 120er Jahre | 30er / 120er Jahre | 30er / 120er Jahre |
Entdeckung der Nachbarn | Ja | Ja | Nein | Ja | Nein |
RFC 2328 | Ja | Ja | Ja | Cisco | Ja |
In einem Subnetz werden die Router, die sich mithilfe des Hallo- Protokolls gegenseitig erkennen, als Nachbarn bezeichnet . In Punkt-zu-Mehrpunkt- und NBMA-Netzwerken werden Nachbarn explizit konfiguriert. Solange die Parameter der Nachbarn kompatibel sind, versuchen sie, eine Adjazenzbeziehung zu bilden. Die Herstellung der Nachbarschaft ist vor dem Austausch von Routing-Informationen erforderlich.
Die Adjazenz kann folgende Zustände annehmen:
Nieder Zu diesem Segment wurden keine Informationen empfangen. Versuch Zeigt in NBMA-Netzwerken an, dass keine aktuellen Informationen vom konfigurierten Nachbarn empfangen wurden. Drin ein Hallo-Paket wurde empfangen; 2-Wege Es wurde ein Hallo-Paket empfangen, das eine eigene Router-ID enthält, die anzeigt, dass eine bidirektionale Kommunikation besteht. Die Wahl der DR und des BDR findet in diesem Zustand statt. Die Entscheidung, eine Nachbarschaft zu bilden, wird am Ende dieses Zustands getroffen. ExStart Router versuchen, anfängliche Sequenznummern festzulegen, die in Informationsaustauschpaketen verwendet werden. Für diesen Austausch wird einer der Router zum primären Router und der andere zum sekundären. Austausch Router senden ihre LSDB über Datenbankbeschreibungspakete (DBD). Wird geladen Der Austausch der LSDBs ist abgeschlossen. Die Router fordern die benötigten LSAs an. Voll Die LSDB wird synchronisiert und die Nachbarschaft hergestellt.Hallo- Nachrichten werden in regelmäßigen Abständen an Schnittstellen gesendet, an denen OSPF aktiv ist. Bei Punkt-zu-Punkt-Verbindungen und Broadcast-Verbindungen werden sie unter der Multicast- Adresse 224.0.0.5 (AllSPFRouters) gesendet. Bei Links ohne Broadcast werden sie an die Unicast-IP-Adresse des Nachbarn gesendet.
Folgende Informationen finden Sie insbesondere im Hallo-Paket:
Die Bereichsnummer ist im OSPF-Paket-Header enthalten. Eine Nachbarschaft wird nicht gebildet, wenn bestimmte Parameter nicht kompatibel sind (Bereichsnummer, Art des Bereichs (Stub oder nicht), Hallo / Totperioden, Authentifizierung).
Für OSPF-Router ist eine Adjazenzbeziehung erforderlich, um Routing-Informationen gemeinsam zu nutzen. In einem Broadcast-Netzwerk ( Ethernet ) wäre die Last übermäßig hoch, wenn jeder Router eine Nachbarschaft mit dem anderen Router herstellen und Verbindungsstatusinformationen austauschen würde, die Anzahl der Nachbarschaften oder in . Um dieses Problem zu lösen, wählen wir einen DR (Designated Router), der alle Informationen zum Status der Links empfängt und diese erneut an die anderen Router überträgt. Da dies zu einem kritischen Punkt des Netzwerks wird, wird auch ein BDR (Backup Designated Router) festgelegt. Die Adjazenzzahl ist daher 2n-1, dh in . Die anderen Router werden als DR Other bezeichnet .
OSPF verwendet nur Multicast für die Kommunikation mit den folgenden zwei Adressen:
Nur der DR generiert den Netzwerk- LSA (Typ 2), der dem Teilnetzwerk entspricht. Die LSID hierfür ist die IP-Adresse des DR im Subnetz. Dieser LSA listet auch die an das Subnetz angeschlossenen Router auf.
Wahl der DRFür ein bestimmtes Subnetz vom Typ Broadcast oder NBMA hat jeder OSPF-Router einen Wert namens Priorität zwischen 0 und 255. Wenn die Priorität auf 0 konfiguriert ist, nimmt der Router nicht an der Wahl teil und kann daher weder DR noch BDR werden.
Andere Router, die sich mindestens im 2-Wege-Status befinden, sind berechtigt.
Die Wahl beginnt mit dem BDR. Wenn bereits mehrere Router in ihren Hallo-Paketen als BDR angegeben sind, wird derjenige mit der höchsten Priorität als BDR beibehalten, und wenn mehrere Router mit der höchsten Priorität vorhanden sind, derjenige, dessen Router-ID die ist Das höchste wird als BDR beibehalten. Wenn es nur einen Router gibt, der angibt, dass es sich um den BDR handelt, bleibt diese Auswahl bestehen. Wenn die Kandidatenliste leer ist, ist der BDR der nicht DR-fähige Router mit der höchsten Priorität. Wenn mehr als einer vorhanden ist, bleibt der mit der höchsten Router-ID erhalten.
Wir gehen mit der DR genauso vor, wenn es keinen DR-Kandidaten gibt, wird der BDR zum DR befördert und die Wahl des BDR wird erneut wie im vorherigen Absatz begonnen.
Die anderen Router befinden sich neben DR und BDR. Im Falle eines Versagens der DR wird die BDR zur DR und eine Neuwahl der BDR wird durchgeführt.
Wenn nach diesem Verfahren ein Router zum Netzwerk hinzugefügt wird, während bereits ein DR und ein BDR vorhanden sind, bleiben die DRs und BDRs auch dann bestehen, wenn die Priorität des Neuankömmlings höher ist.
Sobald die Nachbarschaft hergestellt ist, bestimmen die Router einen primären und einen sekundären Router sowie eine anfängliche Sequenznummer. Der primäre Router sendet DBD-Pakete (Database Description) an den sekundären Router. Diese bestehen aus einer Liste von LSA-Headern (jedoch ohne die tatsächlichen LSA-Daten). Der sekundäre Router notiert die LSAs, die er nicht hat oder deren Sequenznummern höher sind als der in seiner LSDB und wird sie dann von der primären mit Link State Requests-Paketen beanspruchen. Der primäre Router antwortet darauf mit Verbindungsstatusaktualisierungspaketen, die die angeforderten LSAs enthalten. Die Sekundärseite sendet dann die Verbindungsstatus-Aktualisierungspakete, die den LSAs entsprechen, über die die Primärseite nicht verfügt oder die auf der Sekundärseite aktueller sind.
Sobald die Synchronisation abgeschlossen ist, wechselt die Adjazenz in den Status "Voll" und die LSAs werden normal gesendet.
Routen können in OSPF auf zwei Ebenen zusammengefasst werden:
OSPF verwendet eine numerische Metrik, die auf additiven Kosten basiert, die von 1 bis 65535 variieren können. Die Spezifikation gibt dieser Metrik keine besondere Bedeutung, wobei die Einschränkung darin besteht, dass das Hinzufügen der Kosten aufeinanderfolgender Links zur Bestimmung der Gesamtkosten eine Bedeutung haben muss .
Cisco verwendet einen Standardwert für die Kosten einer Verbindung, der (10 8 ) / (Verbindungsbandbreite in Bit / s) beträgt. Beispielsweise kostet eine 10-Mbit / s- Verbindung 10 Euro. Um Verbindungen mit sehr hoher Geschwindigkeit ( 1 Gbit / s und mehr) zu berücksichtigen , können Sie die Kosten für jede Verbindung manuell festlegen oder eine Referenzbandbreite festlegen größer als die Standardeinstellung.
Unabhängig von der Metrik werden die folgenden Straßentypen in dieser Reihenfolge bevorzugt:
OSPF kann die Last auf mehrere Links verteilen, solange die Metrik für jedes Ziel genau gleich ist.
OSPF-Pakete können Gegenstand von zwei Arten der Authentifizierung sein: Die erste besteht aus einem Kennwort, das im Clear im Paket übertragen wird, die zweite besteht aus einer MD5- Hash- Funktion, die für das Paket berechnet wird, und einem gemeinsam genutzten Kennwort.
OSPF verwendet den Dijkstra-Algorithmus , um den besten Weg zu bestimmen. Es wird auch als SPF- Algorithmus ( Shortest Path First ) oder Shortest Path First- Algorithmus bezeichnet. Es wurde von Edsger Dijkstra formuliert .
OSPF löst seine Aktualisierungen immer dann aus, wenn sich die Netzwerktopologie ändert, wodurch die Konvergenzzeit verkürzt wird. Nach einem Update richtet ein Router eine topologische Datenbank ein, die die Berechnung der Netzwerkzugänglichkeit dank der Berechnung eines Topologiebaums ermöglicht, dessen Stamm der Router ist.
OSPFv2 funktioniert nur mit und für IPv4. OSPFv3 wurde daher in RFC 5340 definiert . OSPFv3 funktioniert über IPv6-Links und ermöglicht nur das Routing von IPv6 in den anfänglichen RFCs. OSPFv3 gibt die Authentifizierung von OSPFv2 zugunsten von IPsec auf . OSPFv3 funktioniert eher mit Links (in IPv6 adressiert, mit mindestens Link-Local-Adressen) als mit Subnetzen wie OSPFv2. Infolgedessen haben LSA-IDs nichts mehr mit der Adressierung zu tun, die jetzt in neuen LSAs separat transportiert wird:
Anschließend RFC 5838 eingeführt , um den Begriff der Adresse Familie , die gleichzeitig für verschiedene Adressfamilien Sende verschiedene Routing und Topologieinformationen OSPFv3 ermöglicht, sowohl IPv4 als auch IPv6 einschließlich. Es ist zu beachten, dass OSPFv3 selbst immer auf in IPv6 adressierten Links ausgeführt wird. Seit diesem RFC wäre OSPFv3 theoretisch in der Lage, OSPFv2 vollständig zu ersetzen (abgesehen von jeglicher Vorstellung von Stabilität und Reifegrad der Implementierung).