IPv6-Header und Extension Headers

IPv6-Header und Extension Headers

Jedes IPv6-Datenpaket besteht aus einem Header (Kopf) und dem Payload, in dem sich die Nutzdaten befinden. Der Header ist den Nutzdaten vorangestellt.
Bei IPv6 ist der Header auf einfache Verarbeitung optimiert. Konkret bedeutet das, dass er aus einem Bereich mit einer festen Länge von 40 Byte besteht, der nur Informationen enthält, die für das IP-Routing wichtig sind. Optionale Informationen sind in einem oder mehreren Extension Headers ausgelagert, die sich zwischen Header und Payload befinden. Allerdings dürften die meisten IPv6-Pakete ohne Extension Headers auskommen.

Aufbau des IPv6-Headers

Version Traffic Class Flow Label
Payload Length Next Header Hop Limit
Source Address
Destination Address
Um die Verarbeitung der IPv6-Pakete zu vereinfachen wurde die Länge des IPv6-Headers auf 40 Byte fest definiert. Optionale Informationen werden in die Extension-Headers verlagert. Der feste Teil des IPv6-Headers enthält unter anderem die IPv6-Adresse von Sender und Empfänger. Das IPv4-Feld Time-to-live (TTL) ist das Hop Limit. Auf die Prüfsummenberechnung und Fragmentierung wird verzichtet, was den IPv6-Routern das Leben erleichtert.

Bedeutung der Felder im IPv6-Header

Feld Größe Beschreibung
Version 4 Bit Gibt die Protokollversion an (in diesem Fall 6)
Traffic Class 8 Bit Dient der Priorisierung des Paketes im Zuge des Quality of Service (QoS)
Flow Label 20 Bit Hier kann definiert werden, ob dieses Paket einer Klasse zugeordnet werden soll, die der Router speziell behandelt
Payload Length 16 Bit Gibt die Länge des Paketes (ohne Header, jedoch mit Erweiterungsheader) an
Next Header 8 Bit Kann auf Extension Header verweisen
Hop Limit 8 Bit Dieser Wert wird bei jedem Knoten, der das Paket weiterleitet, um 1 dekrementiert. Erreicht er den Wert 0, verfällt das Paket
Source Address 128 Bit Gibt die Senderadresse an
Destination Address 128 Bit Gibt die Zieladresse an

Optionale Header-Informationen sind in den sogenannten Extension Headers zwischen Header und Payload untergebracht. Das hat den Vorteil, dass es keine Größenbeschränkung für Optionen gibt und neue Optionen eingeführt werden können ohne den Header zu verändern. Die einzige Grenze liegt darin, dass ein Extension Header im Datenpaket Platz finden muss, was unter Umständen den Platz für den Payload reduziert, weil das IPv6-Paket in seiner Gesamtheit nur eine bestimmte Größe haben darf. Das heißt, Extension Headers verkürzen den Platz für die Nutzdaten.

Ein Extension Header wird vom Sender zwischen IPv6-Header und den Nutzdaten (TCP- oder UDP-Datagramm) eingefügt. Die Header können verkettet werden. Es muss aber eine bestimmte Reihenfolge eingehalten werden und jeder Header darf nur einmal vorkommen. Mit einer Ausnahme. Befindet sich ein Routing Header im Paket, darf davor ein weiterer Destination Options Header stehen.
Die Größe einer Header-Erweiterung muss ein Vielfaches von 64 Bit (8 Byte) betragen, um die Verarbeitung zu vereinfachen.

Extension Headers werden, von einer Ausnahme abgesehen, vom Ziel verarbeitet, was wesentlich effizienter ist. Der Hop-by-Hop Options Header muss von jedem Router auf dem Pfad zum Ziel ausgewertet werden. Wenn er vorhanden ist, muss er direkt als erstes auf den IPv6-Header folgen.

IPv6-Header-Extensions

Header-Erweiterungen tragen eine definierte Nummer, die sich in das bestehende System der Protokollnummern einfügt.

Nummer Extension Header
0 Hop-by-Hop Options
43 Routing
44 Fragment
51 Authentication Header (AH)
50 Encapsulation Security Payload (ESP)
60 Destination Options
135 Mobility
139 Host Identity Protocol
140 Shim6 Protocol
59 No Next Header (Ende eines Header-Stapels)

Die Reihenfolge bei einer Verkettung entspricht die der Tabelle mit Ausnahme des Destination Options Header, der ein zweites mal vorkommen darf.
Alle Extension Header enthalten ein Next-Header-Feld, in dem der nächste Extension Header oder das darüberliegende Protokoll gekennzeichnet ist.