IPv6 (Internet Protocol Version 6) ist eine IP-Protokollversion, die von der Internet Engineering Task Force (IETF) erarbeitet wurde. Diese Protokollversion soll das bisher verwendete IP-Protokoll Version 4 (IPv4) ablösen und stellt ein standardisiertes Verfahren zur Übertragung von Datenpaketen in Rechnernetzen dar. Zentrale Funktionen von IPv6 sind die Adressierung von Netzwerkelementen über sogenannte IPv6-Adressen sowie die Paketweiterleitung zwischen Teilnetzen (Routing). Einer der Hauptgründe für die Entwicklung von IPv6 ist die Knappheit an öffentlichen Internetadressen. IPv4 verwendet 32-Bit-Adressen. Daraus ergibt sich ein Adressraum mit ca. 4,3 Milliarden Adressen. IPv6 verwendet dahingegen IPv6-Adressen mit einer Länge von 128 Bit. Diese Adresslänge erlaubt eine unvorstellbare Menge von 2^128 oder 3,4 x 10^38 IPv6-Adressen. 

Aufbau einer IPv6-Adresse

IPv6-Adressen bestehen aus 8 Blöcken zu 16 Bit mit jeweils vierstelligen hexadezimalen Zahlen. Diese Blöcke werden jeweils durch einen Doppelpunkt getrennt. Beispiel: 

2001:0620:0000:0000:0211:24FF:FE80:C12C

Die vorderen 64-Bit werden für das Routing verwendet und bezeichnen das Netzwerkpräfix. Das Netzwerkpräfix kennzeichnet das Netzwerk, das Subnetz bzw. den Adressbereich. Die hinteren 64-Bit werden als Interface Identifier (IID) bezeichnet. Der Interface Identifier kennzeichnet einen Host in diesem Netz und wird aus der 48-Bit-MAC-Adresse des Interfaces gebildet und in eine 64-Bit-Adresse umgewandelt. Hierbei handelt es sich um das modifizierte EUI-64-Format. Somit ist das Interface unabhängig vom Netzwerkpräfix eindeutig identifizierbar. 

Die von IPv4 bekannte Netz- bzw. Subnetzmaske fällt bei IPv6 ersatzlos weg. Um trotzdem eine Segmentierung durchführen zu können, wird die Präfixlänge definiert und mit einem "/" (Slash) an die eigentliche IPv6-Adresse angehängt. Beispiel: 

Ein Subnetzwerk mit den IPv6-Adressen 2001:0820:9511:0000:0000:0000:0000:0000 bis 2001:0820:9511:FFFF:FFFF:FFFF:FFFF:FFFF kann mit der Notation 2001:0820:9511::/48 beschrieben werden. 

Adresszuweisung

In der Regel bekommen Internetprovider (ISP) von der RIR /32-Netze zugeteilt, die diese wiederum in Subnetze gliedern. An Endkunden werden entweder /48-Netze oder /56-Netze vergeben. 

Privacy Extensions

Eine IPv6-Adresse, die auf dem modifizierten EUI-64-Format beruht, lässt Rückschlüsse auf die zugrundeliegende MAC-Adresse zu. Da dies bei Nutzern Bedenken bezüglich des Datenschutzes hervorrufen könnte, wurde mit Privacy-Extensions ein Verfahren entwickelt, um den Hostanteil der IPv6-Adressen zu anonymisieren. Zu diesem Zweck hebt Privacy Extensions die Kopplung von Interface Identifier und MAC-Adresse auf und generiert temporäre Interface Identifier für ausgehende Verbindungen. 

Notationregeln

Weil IPv6-Adressen sehr lang sein können, werden sie in der Regel gekürzt. In RFC 5952 wurden diesbezüglich verbindliche Notationsregeln definiert. Diese beinhalten unter Anderem folgende Regeln: 

  • Führende Nullen innerhalb eines Blockes dürfen ausgelassen werden. 

  • Ein einzelner Block aus 4 Nullen wird zu einer Null zusammengefasst. 

  • Aufeinanderfolgende folgende Blöcke deren Wert 0 bzw. 0000 beträgt, werden durch zwei Doppelpunkte ("::") gekürzt. Diese Kürzung darf jedoch nur einmal in einer Adresse vorgenommen werden, da sonst die Eindeutigkeit verloren geht. Beispiel: 

    Die Adresse 2001:0dc8:0:0:8d5:0:0:0 somit wie folgt gekürzt werden: 2001:0dc8:0:0:8d5:0:: oder 2001:0dc8:0::8d5:0:0:0 

  • Sind mehrere Null-Sequenzen in der Adresse enthalten, darf nur die am weitesten links stehende Sequenz ersetzt werden. 

URL-Notation

In einer URL werden IPv6-Adressen in eckige Klammern eingeschlossen. Beispiel: 

http://[2001:0db8:83a3:08d3::0380:7344]/ 

Portnummern müssen hinter der schließenden Klammer stehen. Diese werden mit einem Doppelpunkt abgetrennt. 

http://[2001:0db8:83a3:08d3::0380:7344]:8080/ 

Das Prozentzeichen (%) wird weiterhin für die Kennzeichnung der hexadezimalen Zeichencodierung in URLs verwendet. Innerhalb der URL muss das Prozentzeichen durch seinen eigenen Hex-Code "%25" ersetzt werden (RFC 6874). Dies ist notwendig, wenn man die Verbindung über eine bestimmte Schnittstelle erzwingen will. 

IPv6-Adresstypen

Wie bei IPv4 wurden auch bei IPv6 verschiedene Adressbereiche mit speziellen Aufgaben und Eigenschaften definiert. Diese wurden in RFC 4291 und RFC 5156 spezifiziert und lassen sich bereits durch die ersten Bits einer IPv6-Adresse, das sogenannte Formatpräfix, identifizieren. 

  • Loopback-Addressen: Die Adresse 0:0:0:0:0:0:0:1 (auch ::1/128) wird Loopback-Adresse genannt. Es handelt sich um die Adresse des eigenen Standorts. 

  • Link-Local-Adressen: Link-Local-Adressen sind nur innerhalb von lokalen Netzwerken gültig und beginnen mit dem Formatpräfix FE80::/10. Diese Adressen werden zur Adressierung von Elementen innerhalb eines lokalen Netzwerks sowie zur Autokonfiguration oder für die Neighbour-Discovery verwendet. In der Regel reicht der Geltungsbereich einer Link-Local-Adresse bis zum nächsten Router, sodass jedes an das Netzwerk angebundene Gerät in der Lage ist, mit diesem zu kommunizieren, um sich eine globale IPv6-Adresse zu generieren. Dieser Prozess wird Neighbor Discovery genannt. 

  • Unique-Local-Adressen: Für private lokale Netze wurden für das IPv6-Protokoll reservierte Adressbereiche definiert. Diese werden in RFC 4193 beschrieben und haben eine ähnliche Funktion wie die privaten Adressebereiche, die im IPv4-Protokoll festgelegt sind. Unique-Local-Adressen befinden sich im Adressbereich "fc00::/7" (fc00… bis fdff…) und werden nicht im Internet geroutet. Vielmehr sind sie nur inerhalb eines definierten Netzwerkbereichs gültig. Unterscheiden muss man zwischen dem Präfix "fc" und "fd", da diese unterschiedliche Bedeutungen haben. Während IPv6-Adressen mit dem Präfix fc vom Provider vergeben werden, können IPv6-Adressen mit dem Präfix fd im eigenen lokalen Netzwerk verwendet werden. 

  • Global-Unicast-Adressen: Bei Global-Unicast-Adressen handelt es sich um weltweit einmalige Adressen, die weltweit geroutet werden. Diese werden von einem Netzwerkgerät benötigt, um eine Verbindung zum Internet aufzubauen. Ein Host kann mehrere dieser IPv6-Adressen besitzen. Diese werden vom Host mittels Autokonfiguration bezogen. 

  • Multicast-Adressen: Mit Multicast-Adressen kann man eine Eins-zu-viele-Kommunikation realisieren. Pakete, die an eine Multicast-Adresse gesendet werden, erreichen alle Netzwerkgeräte, die Teil der Multicast-Gruppe sind. Hierbei kann ein Gerät parallel mehreren Multicast-Gruppen angehören. Wird für ein Netzwerkgerät eine IPv6-Unicast-Adresse erstellt, wird dieses automatisch Mitglied von bestimmten Multicast-Gruppen, die für die Erkennung, Erreichbarkeit und Präfixermittlung benötigt werden. Multicast-Adressen sind durch das Präfix "ff::/8" gekennzeichnet. Danach folgen 4 Bit für Flags und weitere 4 Bit für die Angabe des Multicast Scopes. 

    Multicast-Adressen enden mit einer Nummer, die für eine Multicast-Gruppe steht. Eine Liste der Multicast-Gruppen finden Sie unter https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml 

  • Anycast-Adressen: Adressen dieses Typs können an Gruppen von Empfängergeräten adressiert werden. Die Datenpakete werden hierbei nur an sondern nur an das Gerät gesendet, das dem Sender am nächsten ist. Anycast-Adressen kommen daher im Rahmen der Lastenverteilung und Ausfallsicherheit zum Einsatz. 

IPv6-Paketformat

Das IPv6-Protokoll zeichnet sich durch ein vereinfachtes Paketformat aus. Der Header verfügt über eine feste Länge von 40 Bytes. Optionale Informationen werden in Extension Headers zwischen dem IPv6-Kopfdatenbereich und der eigentlichen Nutzlast ausgelagert. So können Optionen eingefügt werden, ohne dass sich der Header verändert. Zu den Informationen, die IPv6-Kopferweiterungen beinhalten können, zählen unter anderem Knoten-zu-Knoten-Optionen, Zieloptionen, Routing-Optionen sowie Optionen zu Fragmentierung, Authentifikation und Verschlüsselung. Weitere Informationen zum IPv6-Paketformat finden Sie in RFC 2460

Stateless Address Autoconfiguration

Die Stateless Address Autoconfiguration (SLAAC) ist ein Verfahren zur zustandslosen und automatischen Konfiguration von IPv6-Adressen an einem Netzwerk-Interface. Mittels dieses Verfahrens kann ein Host vollautomatisch eine funktionsfähige Internetverbindung aufbauen. Stateless bedeutet in diesem Zusammenhang, dass die jeweilige IPv6-Adresse nicht zentral vergeben und gespeichert wird. Vielmehr erzeugt der Host zur initialen Kommunikation mit dem Router eine link-lokale IPv6-Adresse und weist sich diese zu. Mit dieser link-lokalen IPv6-Adresse kann ein Gerät mittels des Neighbour Discovery Protocols (NDP) nach den Routern in seinem Netzwerksegment suchen. Dies geschieht durch eine Anfrage an die Multicast-Adresse, über die alle Router eines Segments erreichbar sind.

Nach dem Erhalt einer solchen Anfrage versendet ein Router Informationen zu verfügbaren Präfixen. Um die doppelte Vergabe von IPv6-Adressen zu vermeiden, führt der Host bei einer neu generierten IPv6-Adresse eine Duplicate Address Detection (DAD) durch. Dazu schickt der Host eine Anfrage an die generierte Adresse ins lokale Netz. Als Antwort-Adresse dient eine Multicast-Adresse. Wenn eine andere Station die IPv6-Adresse bereits nutzt, kommt eine Antwort zurück. Wenn keine Antwort von dieser Adresse zurückkommt, verwendet der Host die IPv6-Adresse für die Kommunikation. 

Neighbour Discovery Protocol

Das Neighbour Discovery Protocol (NDP) ist ein IPv6-Protokoll. Es wird unter anderem verwendet, um wird verwendet, um IPv6-Adressen in Link-Layer-Adressen (MAC-Adressen) aufzulösen. Darüber hinaus wird es zum Aktualisieren der gecachten Adressen verwendet. Wenn sich ein Knoten nicht im gleichen Netzwerk befindet, wird NDP verwendet, um einen Router zu finden, der die Pakete weiterleiten kann. Ferner erfüllt dieses Protokoll unter anderem noch folgende Aufgaben: 

  • Parameterermittlung 

  • Stateless Address Autoconfiguration 

  • Adressauflösung (Address Resolution mit Neighbor Discovery) 

  • Erkennung der Nichterreichbarkeit des Nachbarn (Neighbor Unreachability Detection, NUD) 

  • Erkennung doppelter Adressen (Duplicate Address Detection, DAD) 

  • Umleitung (Redirect) 

Weitere Informationen zum Neighbour Discovery Protocol finden Sie in RFC 4861.

DHCP6

DHCP ist ein Protokoll, das für die Verwaltung der IP-Konfiguration in einem TCP/IP-Netzwerk verwendet wird. Dieses ermöglicht es, angeschlossene Clients ohne manuelle Konfiguration der Netzwerkschnittstelle in ein bestehendes Netzwerk einzubinden. In einem IPv6-Netzwerk wird DHCP6 eigentlich nicht benötigt, da diese Aufgabe durch die Stateless Address Autoconfiguration (SLAAC) übernommen wird. Es können jedoch gute Gründe für die Verwendung von DHCP6 sprechen. Dies trifft z. B. zu, wenn der IPv6-Client die Optionen der IP-Konfiguration nicht mittels Stateless Address Autoconfiguration entgegen nehmen kann. In diesem Fall können mittels Stateless Address Autoconfiguration die IP-Adresse und mittels DHCPv6 die restlichen Konfigurationsparameter zugeteilt werden.