8. Protocol Packet Processing (Protokollpaketverarbeitung)
Dieses Kapitel beschreibt detailliert, wie OSPF-Router empfangene Protokollpakete verarbeiten. Dies ist der zentrale Teil der OSPF-Implementierung und deckt die Verarbeitungslogik aller Pakettypen ab.
Kapitelübersicht (Chapter Overview)
OSPF verwendet 5 verschiedene Protokollpakettypen, jeder mit einem spezifischen Verarbeitungsablauf:
- Hello-Pakete
- Database Description (DD) Pakete
- Link State Request (LSR) Pakete
- Link State Update (LSU) Pakete
- Link State Acknowledgment (LSAck) Pakete
8.1 Empfangen von Protokollpaketen (Receiving Protocol Packets)
Allgemeine Empfangsverarbeitung (General Reception Processing)
Schritt 1: IP-Layer-Empfang
- Zieladresse: 224.0.0.5 (AllSPFRouters) oder 224.0.0.6 (AllDRouters) oder Unicast
- Protokollnummer: 89 (OSPF)
- IP TTL: Muss 1 sein (außer bei virtuellen Links)
Schritt 2: OSPF-Header-Validierung
| Prüfelement | Anforderung | Verarbeitung bei Fehler |
|---|---|---|
| Version Number | Muss 2 sein | Paket verwerfen |
| Packet Type | 1-5 gültig | Paket verwerfen |
| Checksum | Muss korrekt sein | Paket verwerfen |
| Area ID | Muss übereinstimmen | Paket verwerfen |
| Authentication | Muss bestehen | Paket verwerfen |
8.2 Hello-Paketverarbeitung (Hello Packet Processing)
Empfang von Hello-Paketen
Verarbeitungsablauf
Hello empfangen
↓
Hello-Parameter validieren
↓
Neighbor suchen/erstellen
↓
Neighbor-Status aktualisieren
↓
DR/BDR-Wahl prüfen
Hello-Parameter-Validierung
Parameter, die übereinstimmen müssen
| Parameter | Beschreibung | Verarbeitung bei Nichtübereinstimmung |
|---|---|---|
| Network Mask | Netzwerkmaske | Paket verwerfen |
| Hello Interval | Hello-Sendeintervall | Paket verwerfen |
| Dead Interval | Neighbor-Ablaufintervall | Paket verwerfen |
| Options | Options-Flags | Paket verwerfen |
8.3 Database Description Paketverarbeitung (DD Packet Processing)
Empfang von DD-Paketen
Voraussetzung
- Neighbor-Status muss >= ExStart sein
- Andernfalls Paket verwerfen
Verarbeitungslogik-Verzweigungen
Verzweigung 1: ExStart-Status
Master-Bestimmung
if (Empfangenes DD enthält Flags I, M, MS):
if (Neighbor Router ID > Lokale Router ID):
Dieser Router wird Slave
Neighbor wird Master
Sequenznummer des Neighbors akzeptieren
else:
Dieses DD ignorieren
8.4 Link State Request Paketverarbeitung (LSR Packet Processing)
Empfang von LSR-Paketen
Voraussetzung
- Neighbor-Status muss >= Exchange sein
- Andernfalls Paket verwerfen
Verarbeitungsablauf
LSR empfangen
↓
Anforderungsliste durchlaufen
↓
Jedes LSA in LSDB suchen
↓
Gefunden: Zu LSU-Antwort hinzufügen
Nicht gefunden: BadLSReq-Ereignis
↓
LSU-Paket senden
8.5 Link State Update Paketverarbeitung (LSU Packet Processing)
Empfang von LSU-Paketen
Verarbeitungskomplexität
- LSU kann mehrere LSAs enthalten
- Jedes LSA wird unabhängig verarbeitet
- Komplexester Pakettyp
LSA-Validierung
Schritt 1: Grundvalidierung
| Prüfelement | Anforderung |
|---|---|
| LS Checksum | Muss korrekt sein |
| LS Type | Muss bekannter Typ sein |
| LS Age | Muss <= MaxAge (3600s) sein |
8.6 Link State Acknowledgment Paketverarbeitung (LSAck Packet Processing)
Empfang von LSAck-Paketen
Verarbeitungsablauf
LSAck empfangen
↓
Liste bestätigter LSA-Header durchlaufen
↓
In Link State Retransmission List suchen
↓
Gefunden und übereinstimmend: Aus Neuübertragungsliste entfernen
Nicht gefunden oder nicht übereinstimmend: Diese Bestätigung ignorieren
8.7 Senden von Protokollpaketen (Sending Protocol Packets)
Sendeentscheidung
Hello-Pakete
- Periodisches Senden (Hello Interval)
- Ziel: AllSPFRouters (224.0.0.5)
DD-Pakete
- Während Datenbanksynchronisation
- Ziel: Unicast-Adresse des Neighbors
LSU-Pakete
- Antwort auf LSR: Unicast
- Flooding neuer LSAs: Multicast oder Unicast
8.8 Neuübertragungsmechanismus (Retransmission Mechanism)
Link State Retransmission List
Zweck
- Unbestätigte LSAs verfolgen
- Jeder Neighbor pflegt eine unabhängige Liste
RxmtInterval
- Standardwert: 5 Sekunden
- Konfigurierbar
- Sollte bei Hochlatenzlinks erhöht werden
Technische Zusammenfassung (Technical Summary)
Schlüssel-Verarbeitungsprinzipien
-
Strenge Validierung
- Alle Pakete müssen mehrere Validierungsebenen durchlaufen
- Jede Nichtübereinstimmung führt zur sofortigen Verwerfung
- Gewährleistet Protokollsicherheit
-
Statusgesteuert
- Neighbor-Status bestimmt Verarbeitungslogik
- Klare Zustandsübergänge
- Vermeidet ungültige Operationen
-
Zuverlässige Übertragung
- Bestätigungsmechanismus
- Neuübertragungsmechanismus
- Sequenznummernerkennung
Referenzen (References)
- Vollständiger Text: RFC 2328 Section 8
Hinweis (Note): Die Protokollpaketverarbeitung ist der Kern der OSPF-Implementierung. Das Verständnis des Verarbeitungsablaufs jedes Pakettyps ist für die korrekte Implementierung und Fehlerbehebung unerlässlich.