Zum Hauptinhalt springen

4. Packet Processing (Paketverarbeitung)

4. Packet Processing (Paketverarbeitung)

Dieser Abschnitt beschreibt die SRv6-Paketverarbeitung an SR-Quell-, Transit- und SR-Segmentendpunktknoten.

4.1. SR Source Node (SR-Quellknoten)

Ein Quellknoten leitet ein Paket in eine SR-Richtlinie. Wenn die SR-Richtlinie zu einer Segmentliste führt, die ein einzelnes Segment enthält, und es nicht erforderlich ist, Informationen zum SRH-Flag hinzuzufügen oder TLV hinzuzufügen, wird die DA auf den einzelnen Segmentlisteneintrag gesetzt, und der SRH KANN weggelassen werden.

Bei Bedarf wird der SRH wie folgt erstellt:

Die Felder Next Header und Hdr Ext Len werden wie in [RFC8200] angegeben gesetzt.

Das Feld Routing Type wird auf 4 gesetzt.

Die DA des Pakets wird mit dem Wert des ersten Segments gesetzt.

Das erste Element der SRH-Segmentliste ist das letzte Segment. Das zweite Element ist das vorletzte Segment, und so weiter.

Das Feld Segments Left wird auf n-1 gesetzt, wobei n die Anzahl der Elemente in der SR-Richtlinie ist.

Das Feld Last Entry wird auf n-1 gesetzt, wobei n die Anzahl der Elemente in der SR-Richtlinie ist.

TLVs (einschließlich HMAC) können gemäß ihrer Spezifikation gesetzt werden.

Das Paket wird in Richtung der Zieladresse des Pakets (das erste Segment) weitergeleitet.

4.1.1. Reduced SRH (Reduzierter SRH)

Wenn eine Quelle nicht erfordert, dass die gesamte SID-Liste im SRH erhalten bleibt, kann ein reduzierter SRH verwendet werden.

Ein reduzierter SRH enthält nicht das erste Segment der zugehörigen SR-Richtlinie (das erste Segment befindet sich bereits in der DA des IPv6-Headers), und das Feld Last Entry wird auf n-2 gesetzt, wobei n die Anzahl der Elemente in der SR-Richtlinie ist.

4.2. Transit Node (Transitknoten)

Wie in [RFC8200] spezifiziert, ist der einzige Knoten, der berechtigt ist, den Routing-Erweiterungsheader (und damit den SRH) zu überprüfen, der Knoten, der der DA des Pakets entspricht. Jeder andere Transitknoten DARF den darunterliegenden Routingheader NICHT überprüfen und MUSS das Paket gemäß seiner IPv6-Routingtabelle in Richtung der DA weiterleiten.

Wenn sich eine SID in der Zieladresse eines IPv6-Headers eines Pakets befindet, wird sie durch ein IPv6-Netzwerk als IPv6-Adresse geroutet. SIDs oder die Präfixe, die SIDs abdecken, und ihre Erreichbarkeit können durch Mittel verteilt werden, die außerhalb des Umfangs dieses Dokuments liegen. Beispielsweise können [RFC5308] oder [RFC5340] verwendet werden, um ein Präfix anzukündigen, das die SIDs auf einem Knoten abdeckt.

4.3. SR Segment Endpoint Node (SR-Segmentendpunktknoten)

Ohne die Details einer Implementierung einzuschränken, erstellt der SR-Segmentendpunktknoten Forwarding Information Base (FIB) Einträge für seine lokalen SIDs.

Wenn ein SRv6-fähiger Knoten ein IPv6-Paket empfängt, führt er eine Longest-Prefix-Match-Suche auf der Zieladresse des Pakets durch. Diese Suche kann eines der folgenden Ergebnisse zurückgeben:

  • Einen FIB-Eintrag, der eine lokal instanziierte SRv6-SID darstellt

  • Einen FIB-Eintrag, der eine lokale Schnittstelle darstellt, die nicht lokal als SRv6-SID instanziiert ist

  • Einen FIB-Eintrag, der eine nichtlokale Route darstellt

  • Keine Übereinstimmung

4.3.1. FIB Entry Is a Locally Instantiated SRv6 SID (FIB-Eintrag ist eine lokal instanziierte SRv6-SID)

Dieses Dokument und dieser Abschnitt definieren eine einzelne SRv6-SID. Zukünftige Dokumente können zusätzliche SRv6-SIDs definieren. In einem solchen Fall wird der gesamte Inhalt dieses Abschnitts in diesem Dokument definiert.

Wenn der FIB-Eintrag eine lokal instanziierte SRv6-SID darstellt, verarbeiten Sie die nächste Header-Kette des IPv6-Headers wie in Abschnitt 4 von [RFC8200] definiert. Abschnitt 4.3.1.1 beschreibt, wie ein SRH verarbeitet wird; Abschnitt 4.3.1.2 beschreibt, wie ein Upper-Layer-Header oder das Fehlen eines Next Header verarbeitet wird.

Die Verarbeitung dieser SID ändert Segments Left und kann, wenn sie zum Verarbeiten von TLVs konfiguriert ist, die "Daten mit variabler Länge" von TLV-Typen ändern, die sich unterwegs ändern. Daher ist Segments Left veränderbar, und TLVs, die sich unterwegs ändern, sind veränderbar. Der Rest des SRH (Flags, Tag, Segmentliste und TLVs, die sich unterwegs nicht ändern) sind bei der Verarbeitung dieser SID unveränderbar.

4.3.1.1. SRH Processing (SRH-Verarbeitung)
S01. Wenn ein SRH verarbeitet wird {
S02. Wenn Segments Left gleich Null ist {
S03. Fahren Sie mit der Verarbeitung des nächsten Headers im Paket fort,
dessen Typ durch das Next Header Feld im
Routingheader identifiziert wird.
S04. }
S05. Sonst {
S06. Wenn die lokale Konfiguration TLV-Verarbeitung erfordert {
S07. Führen Sie TLV-Verarbeitung durch (siehe TLV-Verarbeitung)
S08. }
S09. max_last_entry = ( Hdr Ext Len / 2 ) - 1
S10. Wenn ((Last Entry > max_last_entry) oder
S11. (Segments Left größer als (Last Entry+1) ist) {
S12. Senden Sie eine ICMP Parameter Problem, Code 0, Nachricht an
die Quelladresse, die auf das Segments Left
Feld zeigt, und verwerfen Sie das Paket.
S13. }
S14. Sonst {
S15. Dekrementieren Sie Segments Left um 1.
S16. Kopieren Sie Segment List[Segments Left] vom SRH zur
Zieladresse des IPv6-Headers.
S17. Wenn das IPv6 Hop Limit kleiner oder gleich 1 ist {
S18. Senden Sie eine ICMP Time Exceeded -- Hop Limit Exceeded in
Transit Nachricht an die Quelladresse und verwerfen
Sie das Paket.
S19. }
S20. Sonst {
S21. Dekrementieren Sie das Hop Limit um 1
S22. Übergeben Sie das Paket erneut an das IPv6-Modul zur Übertragung
zum neuen Ziel.
S23. }
S24. }
S25. }
S26. }
4.3.1.1.1. TLV Processing (TLV-Verarbeitung)

Die lokale Konfiguration bestimmt, wie TLVs verarbeitet werden sollen, wenn das aktive Segment eine in diesem Dokument definierte lokale SID ist. Die Definition der lokalen Konfiguration liegt außerhalb des Umfangs dieses Dokuments.

Nur zur Veranschaulichung werden unten zwei Beispiele für lokale Konfigurationen bereitgestellt, die einer SID zugeordnet sein können.

Beispiel 1: Für jedes von Schnittstelle I2 empfangene Paket TLV-Verarbeitung überspringen

Beispiel 2: Für jedes von Schnittstelle I1 empfangene Paket Wenn das erste TLV HMAC ist { Verarbeiten Sie das HMAC TLV } Sonst { Verwerfen Sie das Paket }

4.3.1.2. Upper-Layer Header or No Next Header (Upper-Layer-Header oder kein Next Header)

Beim Verarbeiten des Upper-Layer-Headers eines Pakets, das einem lokal als in diesem Dokument definierte SRv6-SID instanziierten FIB-Eintrag entspricht:

WENN (Upper-Layer-Header ist IPv4 oder IPv6) und
die lokale Konfiguration erlaubt {
Führen Sie IPv6-Dekapselung durch
Übergeben Sie das dekapselte Paket erneut an das IPv4- oder IPv6-Modul
}
SONST {
Senden Sie eine ICMP parameter problem Nachricht an die Quelladresse und
verwerfen Sie das Paket. Fehlercode (4) "SR Upper-layer
Header Error", Zeiger auf den Offset des Upper-Layer-
Headers gesetzt.
}

Ein eindeutiger Fehlercode ermöglicht es einem SR-Quellknoten, einen Fehler bei der SID-Verarbeitung an einem Endpunkt zu erkennen.

4.3.2. FIB Entry Is a Local Interface (FIB-Eintrag ist eine lokale Schnittstelle)

Wenn der FIB-Eintrag eine lokale Schnittstelle darstellt und nicht lokal als SRv6-SID instanziiert ist, wird der SRH wie folgt verarbeitet:

Wenn Segments Left Null ist, muss der Knoten den Routingheader ignorieren und mit der Verarbeitung des nächsten Headers im Paket fortfahren, dessen Typ durch das Next Header Feld im Routingheader identifiziert wird.

Wenn Segments Left ungleich Null ist, muss der Knoten das Paket verwerfen und eine ICMP Parameter Problem, Code 0, Nachricht an die Quelladresse des Pakets senden, die auf den nicht erkannten Routing Type zeigt.

4.3.3. FIB Entry Is a Nonlocal Route (FIB-Eintrag ist eine nichtlokale Route)

Die Verarbeitung wird durch dieses Dokument nicht geändert.

4.3.4. FIB Entry Is a No Match (FIB-Eintrag ist keine Übereinstimmung)

Die Verarbeitung wird durch dieses Dokument nicht geändert.