Seminararbeit zu IPv6 Migration
Christian Stadach
... < zurück ... [Linux und Netzwerke, Softwareentwicklung mit Eclipse] ... [Internet Protokoll Version 6] ... vor >
Übersicht: Internet Protokoll Version 6
- IPv6 Adressierung
- Darstellung von IPv6 Adressen
- Kategorien des IPv6 Adressen
- Adresspräfixe
- Aufteilung des IPv6-Adressraums
- Header-Aufbau
- Erweiterungs-Header
Grundlegendes
Um die Migrationsmethoden für eine Umstellung von IPv4 auf IPv6 verstehen zu können, sind Kenntnisse der Grundlagen des IPv6 Protokolls vorauszusetzten. In diesem Kapitel werden Grundlagen und Unterschiede gegenüber dem IPv4 erläutert.
IPv6 Adressierung
Darstellung von IPv6 Adressen
Die Adresslänge wurde beim IPv6 um 96 Bits auf 128 Bit verlängert. Dies ermöglicht theoretisch ca. 340 Sextillionen Adressen. Zum Vergleich erlaubt der 32 Bit Adressbereich beim IPv4 ca. 4 Milliarden Adressen.
Ähnlich zum IPv4 wird die Adresse beim IPv6 in Blöcke aufgeteilt. Die 128 Bits der IPv6 Adresse ergeben hier 8 Blöcke. Jeder 16 Bit Block wird als Hexadezimalzahl angegeben und die einzelnen Blöcke werden durch Doppelpunkte getrennt. Diese Darstellung sieht also beispielsweise folgender Maßen aus:
1234:5678:9ABC:DEF:0123:4567:89AB:CDEF
Um diese Darstellung zu vereinfachen gibt es zwei Regeln.
- Führende Nullen können weggelassen werden. Bsp. aus 0042 wird 42, aus 0000 wird 0.
- Aufeinander folgende Nuller-Blöcke können durch einen doppelten Doppelpunkt (::) weggelassen werden. Diese Regel darf allerdings nur einmal angewendet werden. Bsp. aus 1234:5678:0:0:0:4567:89AB:CDEF wird also 1234:5678::4567:89AB:CDEF.
Kategorien des IPv6 Adressen
Das IPv6 beschreibt 3 Kategorien von IP Adressen:
-
Unicast-Adressen
Mit diesen Adressen wird ein Interface direkt indentifiziert. Bei dieser Adressierungsart sendet ein Quellsystem direkt an ein Zielsystem. Es gibt Unterschiedliche Typen von Unicast-Adressen (Vgl. Abbildung 2).
-
Multicast-Adressen
Diese Adressen indentifizieren Gruppen von Interfaces, die sich in der Regel auf unterschiedliche Geräte verteilen. Pakete mit Multicast-Adressen werden gleichzeitig an alle Mitglieder einer Multicast-Gruppe versendet.
-
Anycast-Adressen
Eine Anycast-Adresse ist wie eine Multicast-Adresse auch eine Adresse für eine Gruppe von Interfaces in unterschiedlichen Geräten. Der Unterschied hierbei besteht in der Übermittlung der Pakete. Die Daten werden an ein Interface der Anycast-Gruppe versendet, welches diese dann an ein weiteres Mitglied weitersendet und so weiter.
Adresspräfixe
Ähnlich dem Classless-Inter-Domain-Routing beim IPv4 wird die Aufteilung des Adressraums beim IPv6 durch eine Präfixlängennotation durchgeführt. Hierbei bestimmt man einen IPv6 Adressbereich wie folgt:
IPv6-Adresse/Präfixlänge
An einem Beispiel erklärt 2001:CFF:0:CD30::/60 bedeutet, dass die ersten 60 Bit als Präfix fest sind und die nachfolgenden 68 Bits beliebig vergeben werden können.
Aufteilung des IPv6-Adressraums
Die Präfixlängennotation ermöglicht es, im Vergleich zu der im IPv4 vorhandenen Aufteilung des Adressraumes in Netzwerkklassen, flexiblere Adresstypen festzulegen. Um welchen Adresstyp es sich handelt wird durch das Adresspräfix festgelegt. Einzelne Typen von IPv6-Adressen zeigt Abbildung 1.
Abbildung 1: Typen von IPv6 Adressen und Ihre Präfixe (Aus Buch [1], Seite 255)
So handelt es sich zum Beispiel bei den 6to4 Adressen ebenfalls um Globale-Unicast-Adressen, da das Präfix 2002:w.x.y.z::/48 sich ebenfalls im Präfixbereich der Globalen-Unicast-Adressen befindet (2000::/3)
Die Aufteilung des IPv6 Adressraums wird von der IANA (Internet Assigned Numbers Authority) koordiniert. Und kann im Internet eingesehen werden3.
Abbildung 2: IANA IPv6 Assignments
Header-Aufbau
Wie in Abbildung 3 ersichtlich ist, wurde der Header des IPv6 gegenüber dem IPv4 Header stark verändert.
Diese Vereinfachung des Headers lässt sich mit dem Weglassen einzelner Funktionen wie zum Beispiel der Neuberechnung der Header-Prüfsumme und des Fragment Offsets bei der Fragmentierung von Paketen begründen. Die Berechnung einer Prüfsumme geschieht schon sowohl im Layer 2 als auch im Layer 4 des OSI Modells und muss nicht auch noch auf Layer 3 geschehen. Desweiteren geschieht die Fragmentierung von Datenpakteten nur noch beim Absender. Dies erleichtert die Arbeit, die ein Router bei der Weiterleitung von Paketen in andere Netze vornehmen muss immens.
Abbildung 3: Gegenüberstellung der Protokollheader (Quelle: Wikimedia Commons)
>
Die einzelnen Felder im IPv6 Header haben folgende Bedeutung:
Feld | Beschreibung |
---|---|
Version | IP Version (hier also 6) |
Traffic Class | Ermöglichung einer Quality of Service (QOS), dies ermöglicht eine Prioritätsvergabe. Das nach RFC 2474 festgelegte Differentiated Services Feld garantiert hier eine Abwärtskompatibilität zu IPv4 |
Flow Label | Setzt die ID einer virtuellen Ende zu Ende Verbindung fest. Dies ermöglicht es Routern Pakete bereits nach der Erkennung eines bereits bekannten Flow Labels weiter zu leiten, ohne den Rest des Headers zu lesen |
Payload Length | Beschreibt die Länge des nach dem Header angehängten Datenpakets (inklusive Erweiterungs Header) |
Next Header | Hier wird der Header-Typ angezeigt, der direkt nach dem IPv6-Header folgt. Hierbei handelt es sich entweder um den Header eines im OSI-Modell nächst höher angeordneten Protokolls oder um einen Erweiterungs-Header, der eine optionale Erweiterung des IPv6-Headers ermöglicht. |
Hop Limit | Das Hop-Limit entspricht dem Time-to-Live Feld im IPv4 Header. Es beschreibt die maximale Anzahl von Routern, die ein Paket auf dem Weg zum Ziel durchlaufen darf. |
Source Address | IP-Adresse des Quell-Rechners |
Destination Adress | IP-Adresse des Ziel-Rechners |
Erweiterungs-Header
Das Next-Header-Feld ermöglicht es den IP-Header modular zu erweitern. Es zeigt an was für ein Header-Typ nach dem IP-Header folgt. Hier kann entweder direkt der TCP- beziehungsweise UDP-Header mit den dazugehörigen Daten vorkommen oder es wird zuerst ein Erweiterungs-Header, der auch ein Next-Header Feld enthält eingesetzt. So lassen sich beliebig viele Erweiterungs Header in einem IPv6 Paket verschachteln.
Hier eine Übersicht der im Protokoll definierten Erweiterungs Header:
-
Hop-by-Hop Options Header
Enthält sogenannte Type-Length-Value (TLV) Angaben, welche auch als Optionen bezeichnet werden. Der Header wird bei jedem Hop (Router) interpretiert und ist darum aus Performancegründen an erster Stelle.
-
Destination Options Header
Dieser Header enthält ebenfalls TLV Angaben, diese können entweder für Router oder für das Empfängersystem bestimmt sein. Wenn die TLV-Angabe für Router bestimmt ist muss der Header direkt nach dem Hop-by-Hop Header angeordnet sein. Bei TLV-Angaben für das Empfängersystem sollte der Header möglichs weit hinten eingefügt werden. Dieser Header kann demnach bis zu 2 mal pro Datenpaket angegeben werden.
Routing Header
Dieser Header enthält eine Liste von Routern, die das Datenpaket auf dem Weg zu seinem Ziel passieren muss.
Fragment Header
Der Fragment Header ermöglicht es ein langes Datenpaket in eine Reihe von Teilpaketen aufzuteilen. Er enthält ebenfalls die Informationen die benötigt werden, um das Paket am Ziel wieder zusammen zu setzten. Dieser Header ersetzt also das Fragment-Offset und die Flags, die im IPv4 Header zu finden sind.
Authentication Header
Dieser Header wird benutzt um die Datenquelle zu authentifizieren. So kann sicher gestellt werden, dass die Daten von einem gültigen Quellrechner stammen.
Ausserdem wird die Datenintegrität überprüft, um sicher zu gehen, dass die Daten auf dem Übertragungsweg nicht mutwillig verändert wurden.
Encapsulated Security Payload
Will man die Vertraulichkeit einer Datenübertragung sicher stellen, lässt sich die Encapsulated Security Payload einsetzten. Sie wird meist zusammen mit dem Authentication Header eingesetzt und erweitert dessen Möglichkeit um eine Verschlüsselung der übertragenen Daten.
Mobility Header
Dieser Header soll die Mobilität von Endgeräten unterstützen. Er wird benutzt um, die sogenannten Mobility Options bei Mobile IPv6 zu übermitteln.
- Vgl. o.V., 2008: http://www.iana.org/assignments/ipv6-address-space, Abruf:27.11.2008