OSPF (Open Shortest Path First) ist ein [[interior_gateway_protocol|Interior Gateway Protocol]] auf Layer 3 im [[osi|OSI Modell]] zur dynamischen Verwaltung von Routinginformationen. [[EIGRP]] arbeitet mit AS (Autonomous Systems), OSPF arbeitet mit Areas. EIGRP verwendet kein Transportprotokoll sondern hat nur eine eigene Protokoll-ID im IP Header OSPF ist ein **Link-State-Routingprotokoll** und basiert auf dem [[shortest_path_first|Open Shortest Path First]] Algorythmus (auch genannt Dijkstra-Algorithmus), einem mathematischen Verfahren zur Bestimmung des kürzesten Pfades zwischen zwei Knoten in einem Graphen. Es verwendet Link-State-Informationen, um eine Topologie des Netzwerks aufzubauen und die besten Pfade zu berechnen. Hello und Dead timer müssen übereinstimmen! Wenn man mehrere OSPF Areas hat müssen **alle Areas mit Area 0 verbunden** sein. Kann auch über Tunnel sein. Siehe [[https://www.youtube.com/watch?v=fLiXCOWvwec|hier]]. =====Link State Informationen===== Link State Informationen werden in Netzwerkpaketen ausgetauscht. ====LSA==== LSA (Link State Advertisement) sind Nachrichten, die von OSPF-Routern verwendet werden, um die Zustandsinformationen ihrer direkt verbundenen Links zu teilen. Diese Informationen beinhalten beispielsweise die Verfügbarkeit von Links, die Kosten der Verbindung und andere relevante Informationen. Jeder Router sendet periodisch LSAs an alle anderen Router im OSPF-Netzwerk, um die Netzwerkzustände zu aktualisieren. Siehe [[https://networklessons.com/ospf/ospf-lsa-types-explained|LSA Types]]. ====LSU==== LSU (Link State Update) Nachrichten werden verwendet, um LSAs zwischen OSPF-Routern auszutauschen. Wenn ein Router neue Zustandsinformationen über seine Links hat, sendet er ein LSU an seine Nachbarn, um diese Informationen zu verbreiten. ====DBD==== DBD (Database Description) Nachrichten werden verwendet, um den initialen Austausch von LSA-Datenbankinformationen zwischen OSPF-Routern zu erleichtern. Wenn zwei Router eine OSPF-Verbindung herstellen, beginnen sie mit dem Austausch von DBD-Nachrichten, um festzustellen, welche LSAs in ihren Datenbanken fehlen oder veraltet sind. =====Link-State-Datenbank===== Jeder OSPF-Router enthält eine Link-State-Datenbank, die Informationen über die gesamte Topologie des Netzwerks enthält. Diese Informationen umfassen die Liste der Router im Netzwerk, ihre Verbindungen und Kosten zu anderen Routern sowie andere Statusinformationen. +-------+--------------+-----------+---------------+ | Ziel | Nächst-Hop | Distanz | Schnittstelle | +-------+--------------+-----------+---------------+ | A | Direkt | 0 | Eth0 | | B | B | 2 | Eth1 | | C | B | 3 | Eth2 | | ... | ... | ... | ... | +-------+--------------+-----------+---------------+ =====SPF-Berechnung===== SPF ([[shortest_path_first|Shortest Path First]]) wird verwendet, um den kürzesten Pfad zwischen einem Router und allen anderen Routern im Netzwerk mit Hilfe des Dijkstra-Algorithmus zu ermitteln. =====Area===== OSPF **zerlegt das Netz in kleine "Areas"**. Bei Verwendung von OSPF sendet ein Router, sobald er feststellt, dass es eine Änderung in den Routing-Tabellen gegeben hat (weil zum Beispiel das Netzwerk neu konfiguriert wurde), diese Information an alle anderen OSPF-Hosts innerhalb des Netzwerks, so dass alle über identische Routing-Tabellen verfügen. =====Funktion===== Die Kommunikation zwischen OSPF-Bereichen (Areas) erfolgt über Area Border Router (ABR). Ein ABR ist ein Router, der sich in mindestens zwei OSPF-Bereichen befindet und Routing-Informationen zwischen den Bereichen austauscht. Der ABR stellt sicher, dass die Routing-Informationen korrekt und konsistent zwischen den Bereichen propagiert werden. * Nachbarschaftsbildung: Die OSPF-Router bilden Nachbarschaften mit ihren direkten Nachbarn, indem sie Hallo-Nachrichten austauschen. Die Nachbarn überprüfen die Konnektivität, um sicherzustellen, dass sie über eine stabile Verbindung verfügen. * Link-State-Informationen: Jeder OSPF-Router sammelt Informationen über seine Verbindungen und erstellt LSAs, die die Zustände der Verbindungen repräsentieren. Diese LSAs werden in der Link-State-Datenbank des Routers gespeichert und periodisch an die Nachbarn gesendet. * Link-State-Datenbank-Synchronisierung: Die Router tauschen ihre LSAs aus und aktualisieren ihre Link-State-Datenbanken. Durch den Austausch von LSAs können die Router die Topologie des Netzwerks verstehen und die Kosten für die Erreichung der Ziele berechnen. * SPF-Berechnung: Nachdem die Link-State-Datenbanken synchronisiert sind, führt jeder Router eine SPF-Berechnung durch, um die besten Pfade zu allen anderen Routern zu ermitteln. Die SPF-Berechnung basiert auf dem Dijkstra-Algorithmus und berücksichtigt die Kosten der Verbindungen zwischen den Routern. * Bildung der Routing-Tabelle: Basierend auf den Ergebnissen der SPF-Berechnung erstellt jeder Router seine Routing-Tabelle, die angibt, welcher Ausgang für jedes Ziel verwendet werden soll. Die Routing-Tabelle wird regelmäßig aktualisiert, um Änderungen in der Topologie widerzuspiegeln. * Routing-Aktualisierungen: OSPF ermöglicht eine schnelle Konvergenz des Netzwerks, indem es Routing-Aktualisierungen übermittelt, sobald Veränderungen in der Topologie auftreten. Diese Aktualisierungen werden über das OSPF-Protokoll verbreitet und ermöglichen eine effiziente Anpassung an Verbindungsfehler oder andere Ereignisse. =====Router-Typen===== OSPF definiert verschiedene Router-Typen, die jeweils unterschiedliche Rollen im Netzwerk haben: * **Internal Router**: Ein interner Router ist ein OSPF-Router, der nur mit OSPF-Routern im gleichen OSPF-Bereich kommuniziert. * **Area Border Router (ABR)**: Ein ABR ist ein OSPF-Router, der sich in mehreren OSPF-Bereichen befindet und Routing-Informationen zwischen den Bereichen austauscht. * **Autonomous System Boundary Router (ASBR)**: Ein ASBR ist ein OSPF-Router, der mit Routern außerhalb des OSPF-Bereichs kommuniziert, zum Beispiel mit Routern in anderen autonomen Systemen. {{ospf_router.png}} In einem OSPF Netzwerk mit mehr als zwei Routern kann die Anzahl der OSPF Nachrichten zwischen den Routern sehr groß werden. Um diese Last zu reduzieren, werden in Multiaccess Netzwerken (wie Ethernet) DR und BDR verwendet. Dabei werden LSU Pakete von Routern nur noch vom DR akzeptiert und falls dieser ausfällt vom BDR. Wie bei einem Domain Controller. * **Designated Router (DR)**: Der DR ist der Knoten, der als zentraler Punkt für die Kommunikation in einem OSPF-Multiaccess-Netzwerk dient. Er ist für die Weiterleitung der Hello-Pakete, die Wahl der BDR und die Weiterleitung von LSUs (Link State Updates) an alle anderen Router im Netzwerk verantwortlich. Der DR ist eine gewählte Rolle und normalerweise ist der Router mit der höchsten Priorität (Priority) der DR. Falls die Prioritäten gleich sind, wird der Router mit der höchsten Router-ID zum DR. * **Backup Designated Router (BDR)**: Der BDR ist der Router, der den DR ersetzt, falls dieser ausfällt. Der BDR übernimmt alle Aufgaben des DR, wenn dieser nicht mehr verfügbar ist. Der BDR ist der Router mit der zweithöchsten Priorität. =====Router ID===== Jedem Router wird eine router-id konfiguriert oder automatisch zugewiesen. Diese wird von OSPF zur Verwaltung an zentraler Stelle gespeichert. Router mit der selben router-id werden niemals Nachbarn, es kann aber doppelte geben. Die router-id wird durch eine der folgenden Methoden (der Reihe nach) ermittelt * manuell konfiguriert * höchste IP auf einem Loopback Interface * hochste IP auf einem Nicht-Loopback Interface =====Auth===== Siehe [[https://www.youtube.com/watch?v=d-QX8X8EyQI|OSPF Auth]]. =====Single Area OSPF Lab===== {{ospf_lab_gns3.png}} !R1 int fa0/0 ip address 10.0.1.1 255.255.255.252 no shut int fa1/0 ip address 10.0.3.1 255.255.255.252 no shut !R2 int fa0/0 ip address 10.0.1.2 255.255.255.252 no shut int fa1/0 ip address 10.0.2.1 255.255.255.252 no shut !R3 int fa0/0 ip address 10.0.3.2 255.255.255.252 no shut int fa1/0 ip address 10.0.2.2 255.255.255.252 no shut Um OSPF zu aktivieren kann man das entweder auf jedem Interface einzeln. int fa0/0 ip ospf 1 area 0 oder im globalen Konfigurationsmodus automatisch indem man alle Netze angibt router ospf 1 network 10.0.1.1 255.255.255.252 area 0 network 10.0.3.1 255.255.255.252 area 0 =====Multi Area OSPF Lab===== {{ospf_multiarea_lab_gns3.png}} R1, R2 und R3 sind konfiguriert wie im Beispiel oben. !R4 int fa0/0 ip address 10.0.4.2 255.255.255.252 no shut ip ospf 1 area 1 !R5 int fa0/0 ip address 10.0.5.2 255.255.255.252 no shut ip ospf 1 area 2 !R2 int fa1/1 ip address 10.0.4.1 255.255.255.252 no shut ip ospf 1 area 1 !R3 int fa1/1 ip address 10.0.5.1 255.255.255.252 no shut ip ospf 1 area 2 {{ospf_cheatsheet.pdf}} =====Links===== * [[https://www.youtube.com/watch?v=9d97P4MF73k|Kevin Wallace - OSPF Basics Theory - Youtube]] * [[https://www.youtube.com/watch?v=C5AlMvhIeXI|Multi Area OSPF Configuration and redistribution - David Bombal - Youtube]] * [[https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/command/iro-cr-book/ospf-s1.html|Cisco OSPF Command reference]] * [[https://www.youtube.com/watch?v=kfvJ8QVJscc|Basics]] * [[https://youtu.be/gMSTuxKAoxY|OSPF Attacks - Black Hat]] * [[https://youtu.be/IQj1eIxy9CQ|Configure and troubleshoot OSPF]]