4.2 Optionen
Die beiden derzeit definierten Erweiterungsheader – der Hop-by-Hop Options Header und der Destination Options Header – tragen eine variable Anzahl von Optionen (options), die im TLV-Format (Type-Length-Value, Typ-Länge-Wert) kodiert sind:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
Option Type (Optionstyp) – 8-Bit-Optionstyp-Bezeichner.
Opt Data Len (Optionsdatenlänge) – 8-Bit-Ganzzahl ohne Vorzeichen. Die Länge des Option Data-Feldes dieser Option in Oktetten.
Option Data (Optionsdaten) – Feld variabler Länge. Optionstyp-spezifische Daten.
Die Sequenz von Optionen in einem Header MUSS strikt in der Reihenfolge verarbeitet werden, in der sie im Header erscheinen; ein Empfänger DARF NICHT den Header nach einem bestimmten Optionstyp durchsuchen und diesen verarbeiten, bevor alle vorherigen Optionen verarbeitet wurden.
Die interne Kodierung des Option Type-Bezeichners ist so gestaltet, dass die beiden höchstwertigen Bits die Aktion angeben, die ein IPv6-Knoten ausführen MUSS, wenn er den Option Type nicht erkennt:
00 - Diese Option überspringen und die Verarbeitung des Headers fortsetzen.
01 - Das Paket verwerfen.
10 - Das Paket verwerfen und unabhängig davon, ob die Destination Address
des Pakets eine Multicast-Adresse ist, eine ICMP-Parameter-Problem-
Nachricht (Code 2) an die Source Address des Pakets senden, die auf
den nicht erkannten Option Type zeigt.
11 - Das Paket verwerfen und nur dann, wenn die Destination Address des
Pakets keine Multicast-Adresse ist, eine ICMP-Parameter-Problem-
Nachricht (Code 2) an die Source Address des Pakets senden, die auf
den nicht erkannten Option Type zeigt.
Das dritthöchste Bit des Option Type gibt an, ob die Option Data der Option auf dem Weg zum endgültigen Ziel des Pakets geändert werden kann. Wenn ein Authentication Header im Paket vorhanden ist, MUSS für jede Option, deren Daten sich unterwegs ändern können, das gesamte Option Data-Feld bei der Berechnung oder Überprüfung des Authentifizierungswertes des Pakets als Null-Oktette behandelt werden.
0 - Option Data ändert sich unterwegs nicht
1 - Option Data kann sich unterwegs ändern
Die drei höchstwertigen Bits SOLLTEN als Teil des Option Type und nicht unabhängig davon betrachtet werden. Das heißt, eine bestimmte Option wird durch den vollständigen 8-Bit-Option Type identifiziert, nicht nur durch die niederwertigen 5 Bits des Option Type.
Der Hop-by-Hop Options Header und der Destination Options Header verwenden denselben Option Type-Nummernraum. Die Spezifikation einer bestimmten Option kann jedoch deren Verwendung auf nur einen dieser beiden Header beschränken.
Einzelne Optionen können spezifische Ausrichtungsanforderungen haben, um sicherzustellen, dass Werte mit mehreren Oktetten im Option Data-Feld an natürlichen Grenzen liegen. Die Ausrichtungsanforderung einer Option wird mit der Notation xn+y angegeben, was bedeutet, dass der Option Type an einem ganzzahligen Vielfachen von x Oktetten plus y Oktetten vom Beginn des Headers erscheinen MUSS. Zum Beispiel:
2n bedeutet jeder 2-Oktett-Offset vom Beginn des Headers.
8n+2 bedeutet jeder 8-Oktett-Offset vom Beginn des Headers plus 2 Oktette.
Es gibt zwei Auffülloptionen (padding options), die verwendet werden, wenn nachfolgende Optionen ausgerichtet werden müssen und um den enthaltenden Header auf ein Vielfaches von 8 Oktetten aufzufüllen. Alle IPv6-Implementierungen MÜSSEN diese Auffülloptionen erkennen:
Pad1-Option (Ausrichtungsanforderung: keine)
+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+
Hinweis! Das Format der Pad1-Option ist ein Sonderfall – sie hat kein Längen- und Wertfeld.
Die Pad1-Option wird verwendet, um ein einzelnes Oktett Auffüllung in den Options-Bereich eines Headers einzufügen. Wenn mehr als ein Oktett Auffüllung benötigt wird, SOLLTE die unten beschriebene PadN-Option anstelle mehrerer Pad1-Optionen verwendet werden.
PadN-Option (Ausrichtungsanforderung: keine)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
Die PadN-Option wird verwendet, um zwei oder mehr Oktette Auffüllung in den Options-Bereich eines Headers einzufügen. Für N Oktette Auffüllung enthält das Opt Data Len-Feld den Wert N-2, und die Option Data besteht aus N-2 Null-Oktetten.
Anhang B enthält Formatierungsrichtlinien für die Gestaltung neuer Optionen.