AB 03 — IPv6 — Theorie
Kapitel 1 - Einführung zu IPv6
IPv6 (Internet Protocol Version 6) ist die neueste Version des Internetprotokolls, das für die Übertragung von Daten in Computer-Netzwerken verwendet wird. Es wurde entwickelt, um die Einschränkungen von IPv4 zu überwinden, das seit den 1980er Jahren verwendet wird.
Fangen wir mit einem Bild an:
Dieses Bild ist schon alt, aber es zeigt dir den Grund, warum wir IPv6 brauchen… uns gehen die IPv4-Adressen aus!
Das Hauptmerkmal von IPv6 ist die größere Anzahl von verfügbaren IP-Adressen. IPv4 kann nur maximal 4,3 Milliarden IP-Adressen bereitstellen, während IPv6 eine (fast) unbegrenzte Anzahl an Adressen bereitstellt. Dies ist wichtig, da immer mehr Geräte an das Internet angeschlossen werden und eine eindeutige IP-Adresse erfordern.
IPv6 bietet auch verbesserte Funktionalitäten, einschließlich besserer Datensicherheit, einfacherer Konfiguration und bessere Unterstützung für Mobilgeräte und das Internet der Dinge (IoT).
Trotz dieser Vorteile hat die Übertragung von IPv4 auf IPv6 einige Herausforderungen, einschließlich Kompatibilitätsproblemen mit bestehenden Geräten und Netzwerken sowie hohen Kosten für die Umstellung.
Insgesamt ist IPv6 ein wichtiger Schritt in Richtung einer zukunftssicheren und vernetzten Welt und wird es ermöglichen, dass immer mehr Geräte und Menschen an das Internet angeschlossen werden.
Was ist also mit IPv4 passiert? Was ist schief gelaufen? Wir haben 32 Bits, was uns 4.294.467.295 IP-Adressen gibt. Erinnerst du dich an die Klassen A, B und C? Als das Internet eingeführt wurde, bekamst du ein Netzwerk der Klasse A, B oder C. Mit Klasse C erhältst du einen Block von 256 IP-Adressen, mit Klasse B sind es 65.535 IP-Adressen und mit Klasse A sogar 16.777.216 IP-Adressen. Große Unternehmen wie Apple, Microsoft, IBM und andere haben ein oder mehrere Klasse-A-Netze. Brauchten sie wirklich mehr als 16 Millionen IP-Adressen? Viele IP-Adressen wurden einfach verschwendet.
Wir begannen, VLSM (Variable Length Subnet Mask) zu verwenden, so dass wir jede beliebige Subnetzmaske verwenden und kleinere Subnetze erstellen konnten, wir mussten nicht mehr die Klasse A, B oder C Netzwerke verwenden. Wir haben auch angefangen, NAT und PAT zu benutzen, damit wir viele private IP-Adressen hinter einer einzigen öffentlichen IP-Adresse haben können.
Trotzdem ist das Internet in einer Weise gewachsen, die vor 20 Jahren niemand erwartet hätte. Trotz all unserer coolen Tricks wie VLSM und NAT/PAT brauchen wir wirklich mehr IP-Adressen, und deshalb brauchen wir IPv6.
Was ist mit IPv5 passiert? Gute Frage…IP Version 5 wurde für ein experimentelles Projekt namens “Internet Stream Protocol” verwendet. Es ist in einem RFC definiert, falls es dich interessiert.
IPv6 hat 128-Bit-Adressen und verfügt über einen viel größeren Adressraum als das 32-Bit-IPv4, das uns etwas mehr als 4 Milliarden Adressen bot. Vergiss nicht, dass jedes zusätzliche Bit die Anzahl der IP-Adressen verdoppelt… also gehen wir von 4 Milliarden auf 8 Milliarden, 16, 32, 64, usw. Verdopple weiter, bis du 128 Bits erreichst. Mit 128 Bits ist dies der größte Wert, den du erstellen kannst:
340,282,366,920,938,463,463,374,607,431,768,211,456
Das ist unglaublich… Damit haben wir genug IP-Adressen für Netzwerke auf der Erde, dem Mond, dem Mars und dem Rest des Universums. Um das in die richtige Perspektive zu rücken, lass uns den gesamten IPv6- und IPv4-Adressraum nebeneinanderstellen:
IPv6: 340282366920938463463374607431768211456 IPv4: 4294467295
Noch ein paar andere schöne Zahlen: Der gesamte IPv6-Adressraum ist 4294467295-mal so groß wie der gesamte IPv4-Adressraum.
Oder, wenn du Prozentzahlen magst: Der gesamte IPv4-Adressraum ist nur 0,000000000000000000000000001,26% des gesamten IPv6-Adressraums.
Der Hauptgrund, IPv6 zu nutzen, ist, dass wir mehr Adressen brauchen, aber es bietet auch einige neue Funktionen:
Kein Broadcast-Verkehr: Das stimmt, wir verwenden keine Broadcasts mehr. Wir verwenden stattdessen Multicast. Das bedeutet, dass einige Protokolle wie ARP durch andere Lösungen ersetzt werden.
Zustandslose Autokonfiguration: Das ist wie ein “Mini-DHCP-Server”. Router, auf denen IPv6 läuft, sind in der Lage, das IPv6-Präfix und die Gateway-Adresse an Hosts weiterzugeben, so dass diese sich automatisch konfigurieren und Zugang außerhalb ihres eigenen Netzwerks erhalten können.
Umnummerierung von Adressen: Die Umnummerierung von statischen IPv4-Adressen in deinem Netzwerk ist mühsam. Wenn du die zustandslose Autokonfiguration für IPv6 nutzt, kannst du das aktuelle Präfix einfach mit einem anderen austauschen.
Mobilität: IPv6 bietet integrierte Unterstützung für mobile Geräte. Hosts können von einem Netzwerk in ein anderes wechseln und ihre aktuelle IPv6-Adresse behalten.
Kein NAT / PAT: Wir haben so viele IPv6-Adressen, dass wir NAT oder PAT nicht mehr brauchen. Jedes Gerät in deinem Netzwerk kann eine öffentliche IPv6-Adresse haben.
IPsec: IPv6 hat native Unterstützung für IPsec, du musst es nicht benutzen, aber es ist in das Protokoll eingebaut.
Verbesserter Header: Der IPv6-Header ist einfacher und benötigt keine Prüfsummen. Außerdem gibt es ein Flow-Label, mit dem man schnell erkennen kann, ob bestimmte Pakete zum selben Flow gehören.
Migrationstools: IPv4 und IPv6 sind nicht kompatibel, daher brauchen wir Migrationswerkzeuge. Wir können verschiedene Tunneling-Techniken verwenden, um IPv6 über IPv4-Netzwerke zu transportieren (oder andersherum). Der gleichzeitige Betrieb von IPv4 und IPv6 wird “Dual Stack” genannt.
Wie sieht eine IPv6-Adresse aus? Wir verwenden ein anderes Format als IPv4:
X:X:X:X:X:X:X:X, wobei X ein 16-Bit-Hexadezimalfeld ist
Wir verwenden keine Dezimalzahlen wie bei IPv4. Wir verwenden jetzt hexadezimale Zahlen. Hier ist ein Beispiel für eine aktuelle IPv6-Adresse:
2041:1234:140F:1122:AB91:564F:875B:131B
Jetzt stell dir vor, du musst einen deiner Benutzer oder Kollegen anrufen und ihn bitten, diese IPv6-Adresse anzupingen, wenn du versuchst, eine Störung zu beheben… Klingt lustig, oder?
Um die Sache etwas bequemer zu machen, ist es möglich, IPv6-Adressen zu kürzen, worauf im nächsten Kapitel eingegangen wird.
Kapitel 2 - IPv6 Notation
IPv6-Adressen sind hexadezimal und da sie 128 Bit lang sind, sind sie ziemlich lang. Stell dir vor, du musst einen Freund oder eine Freundin anrufen und ihn/sie bitten, die folgende Adresse anzupingen:
2041:0000:140F:0000:0000:0000:875B:131B
Um uns das Leben ein bisschen leichter zu machen, können IPv6-Adressen gekürzt werden. Schauen wir uns ein paar Beispiele an:
Original: 2041:0000:140F:0000:0000:0000:875B:131B Kurz: 2041:0000:140F::875B:131B
Wenn es eine Reihe von Nullen gibt, kannst du sie einmal entfernen. Im obigen Beispiel habe ich den gesamten Teil 0000:0000:0000 entfernt. Das kannst du nur einmal machen, denn dein IPv6-Gerät füllt den restlichen Platz mit Nullen auf, bis es eine 128-Bit-Adresse hat.
Es gibt aber noch mehr, die Adresse kann noch mehr gekürzt werden:
Kurz: 2041:0000:140F::875B:131B Kürzer: 2041:0:140F::875B:131B
Wenn du einen Block mit 4 Nullen hast, kannst du diese entfernen und eine einzelne Null übriglassen. Dein IPv6-Gerät fügt dann die restlichen 3 Nullen hinzu.
Führende Nullen können auch entfernt werden, hier ist eine weitere Adresse, um dies zu demonstrieren:
Original: 2001:0001:0002:0003:0004:0005:0006:0007 Kurz: 2001:1:2:3:4:5:6:7
Wenn wir diese Nullen entfernen, erhalten wir eine schöne kurze IPv6-Adresse.
Um diese Regeln zusammenzufassen:
Eine ganze Kette von Nullen kann entfernt werden, aber nur einmal.
4 Nullen können entfernt werden, sodass nur eine einzige Null übrigbleibt.
Führende Nullen können entfernt werden.
Kapitel 3 - Das IPv6 Prefix
IPv4-Adressen haben eine Subnetzmaske, aber anstatt etwas wie 255.255.255.0 einzugeben, verwenden wir für IPv6 eine Präfixlänge. Hier ist ein Beispiel für ein IPv6-Präfix:
2001:1111:2222:3333::/64
Das ist in etwa dasselbe wie 192.168.1.1 /24. Die Zahl hinter dem / ist die Anzahl der Bits, die wir für das Präfix verwenden. Im obigen Beispiel bedeutet das, dass 2001:1111:2222:3333 das Präfix (64 Bits) ist und alles dahinter für Hosts verwendet werden kann.
Bei der Berechnung von Subnetzen für IPv4 können wir die Subnetzmaske verwenden, um die Netzwerkadresse zu bestimmen, und für IPv6 können wir etwas Ähnliches tun. Für jede beliebige IPv6-Adresse können wir das Präfix berechnen, aber das funktioniert ein bisschen anders.
Hier ist eine IPv6-Adresse, die einem Host zugewiesen werden könnte:
2001:1234:5678:1234:5678:ABCD:EF12:1234/64
Welcher Teil dieser IPv6-Adresse ist das Präfix und welcher Teil identifiziert den Host?
Da wir ein /64 verwenden, bedeutet das, dass die ersten 64 Bits das Präfix sind. Jedes hexadezimale Zeichen steht für 4 binäre Bits, das heißt, dieser Teil ist das Präfix:
2001:1234:5678:1234
Dieser Teil besteht aus 16 hexadezimalen Zeichen. 16 x 4 bedeutet 64 Bits. Das ist also das Präfix. Der Rest der IPv6-Adresse identifiziert den Host:
5678:ABCD:EF12:1234
Wir haben also herausgefunden, dass “2001:1234:5678:1234” das Präfix ist, aber es so aufzuschreiben ist nicht korrekt. Um das Präfix richtig aufzuschreiben, müssen wir am Ende dieses Präfixes Nullen hinzufügen, damit es wieder eine 128-Bit-Adresse ist, und die Präfixlänge hinzufügen:
2001:1234:5678:1234:0000:0000:0000:0000/64 ist ein gültiges Präfix, aber wir können es kürzen. Die Nullen können entfernt und durch ein einzelnes “:“ ersetzt werden:
2001:1234:5678:1234::/64
Das ist die kürzeste Art, das Präfix aufzuschreiben. Schauen wir uns ein anderes Beispiel an:
3211::1234:ABCD:5678:1010:CAFE/64
Bevor wir sehen können, was das Präfix ist, sollten wir die komplette Adresse aufschreiben, da diese hier gekürzt wurde (siehe das :: ). Füge einfach die Nullen hinzu, bis wir wieder eine vollständige 128-Bit-Adresse haben:
3211:0000:0000:1234:ABCD:5678:1010:CAFE/64
Wir haben immer noch eine Präfixlänge von 64 Bit. Ein einzelnes hexadezimales Zeichen entspricht 4 binären Bits, also sind die ersten 16 hexadezimalen Zeichen das Präfix:
3211:0000:0000:1234
Jetzt können wir am Ende Nullen hinzufügen, um wieder eine 128-Bit-Adresse zu erhalten und die Präfixlänge hinzuzufügen:
3211:0000:0000:1234::/64
Das ist ein gut aussehendes Präfix, aber wir können ihn noch ein bisschen kürzer machen:
3211:0:0:1234::/64
4 Nullen in einer Reihe können durch eine einzige ersetzt werden, also ist “3211:0:0:1234::/64” das kürzeste Präfix, das wir machen können.
Je nach Länge des Präfixes macht es die Berechnungen sehr einfach oder (sehr) schwierig. In den Beispielen, die ich dir gerade gezeigt habe, hatten beide Präfixe eine Länge von 64. Was wäre, wenn ich eine Präfixlänge von /53 oder so hätte?
Jedes hexadezimale Zeichen steht für 4 binäre Bits. Wenn deine Präfixlänge ein Vielfaches von 16 ist, ist es einfach zu berechnen, denn 16 binäre Bits entsprechen 4 hexadezimalen Zeichen.
Hier ist eine Illustration:
Bei einer Präfixlänge von 64 haben wir also 4 “Blöcke” mit jeweils 4 hexadezimalen Zeichen, was die Berechnung vereinfacht. Wenn die Präfixlänge ein Vielfaches von 4 ist, ist es immer noch nicht so schlimm, weil die Grenze ein einzelnes hexadezimales Zeichen ist.
Wenn die Länge des Präfixes kein Vielfaches von 16 oder 4 ist, müssen wir einige binäre Berechnungen durchführen. Schau dir folgendes Beispiel an:
2001:1234:abcd:5678:9877:3322:5541:aabb/53
Das ist unsere IPv6-Adresse und ich würde gerne das Präfix für diese Adresse wissen. Wo soll ich anfangen?
Zuerst muss ich herausfinden, in welchem “Block” sich mein 53. Bit befindet:
Irgendwo im blauen Block finden wir das 53. Bit. Um zu wissen, was das Präfix ist, müssen wir diese hexadezimalen Zeichen in binär umrechnen:
Wir haben jetzt den Block, der das 53. Bit enthält. Hier ist die Grenze zwischen “Präfix” und “Host”:
Jetzt setzen wir die Host-Bits auf 0, so dass nur noch das Präfix übrig bleibt. Zum Schluss rechnen wir von binär zurück nach Hexadezimal:
Setze diesen Block wieder ein und setze auch alle anderen Host-Bits auf 0:
Wir haben jetzt unser Präfix gefunden! 2001:1234:abcd:5000::/53 ist die Antwort.
Kapitel 3.1 - Globales Unicast Pefix
IPv6 Globale Unicast-Präfix-Zuweisungen
In diesem Kapitel schauen wir uns an, wie du IPv6-Präfixe und Subnetze erstellen kannst, damit du dein gesamtes Netzwerk mit IPv6 konfigurieren kannst. Wir fangen oben an, wo die IANA (Internet Assigned Numbers Authority) für die globale Koordinierung des IPv4- und IPv6-Adressraums zuständig ist, und arbeiten uns bis ganz nach unten vor, wo wir unseren Routern, Switches und VLANs Subnetze und IPv6-Adressen zuweisen.
Die IANA “besitzt” den gesamten IPv6-Adressraum und weist bestimmte Präfixe an die RIRs (Regional Internet Registry) zu. Zurzeit gibt es 5 RIRs:
Wenn ein großer ISP (oder ein großes Unternehmen) in Nordamerika IPv6-Adressen benötigt, wendet er sich an ARIN, das ihm ein IPv6-Präfix zuweist, wenn er alle Anforderungen erfüllt. Der ISP kann dann Präfixe an seine Kunden vergeben.
Werfen wir einen Blick auf einige aktuelle Präfixe:
Die IANA verwendet das Präfix 2000::/3 für den globalen Unicast-Adressraum.
Laut dieser Liste hat RIPE NCC das Präfix 2001:4000::/23 von der IANA erhalten.
Ein großer ISP namens Ziggo in den Niederlanden erhält von RIPE NCC das Präfix 2001:41f0::/32.
Der ISP weist einem seiner Kunden das Präfix 2001:41f0:4060::/48 zu.
Jetzt liegt es an den Kunden, was sie mit ihrem IPv6-Präfix machen wollen.
IPv6 Globale Unicast-Subnetz-Zuweisungen
Unser Kunde hat das Präfix 2001:41f0:4060::/48 erhalten und möchte es nutzen, um IPv6 in seinem gesamten Netzwerk zu konfigurieren. Wo fangen wir an? Wirf einen Blick auf das Bild unten:
Das 48-Bit-Präfix, das wir erhalten haben, wird normalerweise als globales Routing-Präfix oder Site-Präfix bezeichnet. Die Schnittstellen-ID ist normalerweise 64 Bit lang, d.h. wir haben 16 Bits übrig, um Subnetze zu erstellen.
Wenn ich will, kann ich noch ein paar Bits von der Interface ID stehlen, um noch mehr Subnetze zu erstellen, aber das ist nicht nötig. Mit 16 Bits können wir 65.536 Subnetze erstellen … mehr als genug für die meisten von uns. Schauen wir mal, was wir für unseren Kunden tun können:
16 Bits geben uns 4 hexadezimale Zeichen. Alle möglichen Kombinationen, die wir mit diesen 4 hexadezimalen Zeichen erstellen können, sind unsere möglichen Subnetze. Alles von 0000 bis FFFF sind gültige Subnetze:
2001:41f0:4060:0000::/64
2001:41f0:4060:0001::/64
2001:41f0:4060:0002::/64
2001:41f0:4060:0003::/64
2001:41f0:4060:0004::/64
2001:41f0:4060:0005::/64
2001:41f0:4060:0006::/64
2001:41f0:4060:0007::/64
2001:41f0:4060:0008::/64
2001:41f0:4060:0009::/64
2001:41f0:4060:000A::/64
2001:41f0:4060:000B::/64
2001:41f0:4060:000C::/64
2001:41f0:4060:000D::/64
2001:41f0:4060:000E::/64
2001:41f0:4060:000F::/64
2001:41f0:4060:0010::/64
2001:41f0:4060:0011::/64
2001:41f0:4060:0012::/64
2001:41f0:4060:0013::/64
2001:41f0:4060:0014::/64
Und so weiter…
Jetzt weißt du, welche Subnetze du verwenden kannst. Hier ist ein Beispiel für ein kleines Netzwerk, in dem wir einige dieser Subnetze verwenden:
Im obigen Beispiel habe ich einige sinnvolle Zahlen verwendet, z.B. verwenden wir für VLAN 10 2001:41f0:4060:10::/64. Eine andere gute Option wäre 2001:41f0:4060:A::/64, da das A in Hexadezimal gleich 10 in Dezimal ist. Für die VLANs ist es am besten, ein /64 zu verwenden, damit du die Autokonfiguration für Hosts nutzen kannst.
Kapitel 4 - Adress-Typen
IPv6 sieht anders aus als IPv4, aber es gibt einige Ähnlichkeiten. Zum Beispiel haben wir Unicast-Adressen und wir haben immer noch einen “öffentlichen” und einen “privaten” Bereich. Wir verwenden unterschiedliche Bezeichnungen dafür, aber die Idee ist dieselbe. Einer der Unterschiede ist, dass IPv6 einige zusätzliche Unicast-Adressentypen hat.
Wir haben immer noch Multicast, das gleiche Konzept, aber wir verwenden andere Adressen. Außerdem gibt es einige reservierte Adressen, die ihren IPv4-Gegenstücken ähnlich sind.
Neu ist Anycast, eine Adresse, die mehreren Geräten zugewiesen werden kann, so dass die Pakete immer an das nächstgelegene Ziel weitergeleitet werden. Außerdem gibt es in IPv6 keinen Broadcast-Verkehr mehr.
Kapitel 4.1 - Unicast
Global Unicast
Die globalen Unicast-IPv6-Adressen sind ähnlich wie die öffentlichen IPv4-Adressen. Diese Adressen können im Internet verwendet werden. Der große Unterschied zu IPv4 ist jedoch, dass IPv6 über so viel Adressraum verfügt, dass wir globale Unicast-Adressen auf jedem Gerät im Netzwerk verwenden können.
Unique Local
Einzigartige lokale Adressen funktionieren wie die privaten IPv4-Adressen. Du kannst diese Adressen in deinem eigenen Netzwerk verwenden, wenn du nicht vorhast, dich mit dem Internet zu verbinden oder wenn du IPv6 NAT verwenden willst. Der Vorteil von eindeutigen lokalen Adressen ist, dass du dich nicht bei einer Behörde registrieren lassen musst, um einen Adressraum zu erhalten. Das Präfix FC00::/7 ist für eindeutige lokale Adressen reserviert. Wenn du dies implementierst, musst du das L-Bit auf 1 setzen, was bedeutet, dass die ersten beiden Ziffern FD sind. Hier ist ein Beispiel:
Sehen wir uns nun alle Felder der eindeutigen lokalen Adresse an. Die ersten 7 Bits zeigen an, dass wir eine eindeutige lokale Adresse haben. 1111 110 im Binärformat ist FC im Hexadezimalformat. Das L-Bit (8. Bit) muss jedoch auf 1 gesetzt werden, so dass wir am Ende 1111 1101 erhalten, was FD in Hexadezimal bedeutet.
Die globale ID (40 Bits) kannst du dir selbst auswählen. Normalerweise würde ein ISP ein Präfix wählen, aber jetzt ist es an dir, dir etwas auszudenken. Was übrig bleibt, sind 16 Bits, die wir für verschiedene Subnetze verwenden können. Damit haben wir ein 64-Bit-Präfix und es bleiben 64 Bits für die Schnittstellen-ID übrig.
Nehmen wir ein Beispiel… Nehmen wir an, wir haben ein LAN und wollen eindeutige lokale IPv6-Adressen verwenden und wir benötigen 10 Subnetze:
Das Präfix beginnt mit FD.
Wir haben 40 Bits für die globale ID, jedes hexadezimale Zeichen entspricht 4 Bits, also können wir 10 hexadezimale Zeichen wählen. Nehmen wir AB:1234:5678 als globale ID.
Unser erstes Subnetz wird mit 0000 beginnen.
So sieht das Ergebnis aus:
FDAB:1234:5678:0000::/64 wird unser erstes Subnetz sein. Die anderen Subnetze könnten wie folgt aussehen:
FDAB:1234:5678:0000::/64
FDAB:1234:5678:0001::/64
FDAB:1234:5678:0002::/64
FDAB:1234:5678:0003::/64
FDAB:1234:5678:0004::/64
FDAB:1234:5678:0005::/64
Und so weiter…
Wenn du nur mit IPv6 herumspielst, kannst du eine einfache globale ID wie 00:0000:0000 verwenden, die du zu :: abkürzen kannst. Für Produktionsnetzwerke ist es besser, etwas zu wählen, das wirklich einzigartig ist. Wenn du mehrere Standorte verbinden willst, die eindeutige lokale Adressen verwenden, musst du sicherstellen, dass sich die globalen IDs nicht überschneiden.
Link-Local
Link-Lokale Adressen sind etwas Neues in IPv6. Wie der Name schon sagt, funktionieren diese Adressen nur auf dem lokalen Link, wir leiten diese Adressen nie weiter. Diese Adressen werden verwendet, um IPv6-Pakete in einem einzigen Subnetz zu senden und zu empfangen.
Wenn du IPv6 auf einer Schnittstelle aktivierst, erstellt das Gerät automatisch eine link-local Adresse. Wir verwenden die link-local Adresse z.B. für die Nachbarschaftserkennung (der Ersatz für ARP) und als Next-Hop-Adresse für Routen in deiner Routing-Tabelle.
Wir verwenden den Bereich FE80::/10 für link-lokale Adressen, das bedeutet, dass die ersten 10 Bits 1111 1110 10 sind.
Die ersten 10 Bits sind immer 1111 1110 10, was bedeutet, dass wir mit FE80 beginnen. Technisch gesehen sind die folgenden Adressen alle gültige link-local Adressen:
FE8 - 1111 1110 1000
FE9 - 1111 1110 1001
FEA - 1111 1110 1010
FEB - 1111 1110 1011
Diese link-local Adressen werden jedoch automatisch vom Host erzeugt, der die 54 Bits auf Nullen setzt. Das bedeutet, dass du normalerweise nur link-lokale Adressen siehst, die mit FE80 beginnen.
Unspecified
Die 0:0:0:0:0:0:0:0 Adresse wird als unspezifizierte Adresse bezeichnet, :: ist die verkürzte Version dieser Adresse. Sie sollte nie auf einem Host konfiguriert werden und wird verwendet, um anzuzeigen, dass der Host keine Adresse hat.
Loopback
Die Adresse 0:0:0:0:0:0:0:1 wird als Loopback-Adresse bezeichnet, die Kurzversion lautet ::1. IPv6-Geräte können diese Adresse verwenden, um ein IPv6-Paket an sich selbst zu senden, was normalerweise zu Testzwecken verwendet wird. Sie sollte niemals einer physischen Schnittstelle zugewiesen werden. Diese Adresse ist das Äquivalent zur IPv4-Adresse 127.0.0.1.
Kapitel 4.2 - Multicast
In IPv6 verwenden wir Multicast für IPv6-(Routing-)Protokolle und für den Benutzerverkehr. Wir verwenden das Präfix FF::/8 für den Multicast-Verkehr (1111 1111 im Binärformat). Schauen wir uns mal an, wie die Adressen aussehen:
Die ersten 8 Bits zeigen an, dass wir eine Multicast-Adresse haben. Die nächsten 4 Bits werden verwendet, um Flags zu setzen. Diese werden für einige spezielle Dinge wie eingebettete RP verwendet. Die Scope-Bits werden verwendet, um den “Scope” des Multicast-Verkehrs anzugeben. Damit kannst du angeben, ob der Multicast-Verkehr auf link-local, organisation local oder global (Internet) beschränkt werden soll.
Nachfolgend findest du eine Übersicht mit einigen der gängigsten IPv6-Multicast-Adressen:
FF02::1 - alle Knoten im lokalen Netzwerksegment.
FF02::2 - alle Router im lokalen Netzwerksegment.
FF02::5 - alle OSPFv3-Router.
FF02::6 - alle OSPFv3 DR-Router.
FF02::9 - RIPng-Router
FF02::A - EIGRP-Router
Wenn du genau hinsiehst, kannst du sehen, dass einige dieser Adressen ihren IPv4-Multicast-Pendants ähneln. Zum Beispiel verwenden wir in IPv4 224.0.0.05 und 224.0.0.6 für OSPF, während wir FF02::5 und FF02::6 für IPv6 verwenden. Wir verwenden 224.0.0.9 für RIPv2 und FF02::9 für RIPng.
Kapitel 4.3 - Anycast
Die Anycast-Adresse ist neu in IPv6. Dieselbe Adresse kann mehreren Geräten zugewiesen und in einem Routing-Protokoll bekannt gegeben werden. Wenn du ein Paket an eine Anycast-Adresse sendest, wird es an die nächstgelegene Schnittstelle weitergeleitet. Etwas Ähnliches ist auch in IPv4 möglich, aber es war nie “offiziell” möglich. Es gibt kein bestimmtes Präfix für Anycast-Adressen. Jede Unicast-Adresse, die du auf mehr als einem Gerät verwendest, ist plötzlich eine Anycast-Adresse. Der einzige Unterschied besteht darin, dass du das Gerät konfigurieren und angeben musst, dass die Adresse für Anycast verwendet werden soll.
Kapitel 5 - EUI-64
EUI-64 (Extended Unique Identifier) ist eine Methode, mit der wir IPv6-Hostadressen automatisch konfigurieren können. Ein IPv6-Gerät verwendet die MAC-Adresse seiner Schnittstelle, um eine eindeutige 64-Bit-Schnittstellen-ID zu erzeugen. Eine MAC-Adresse besteht jedoch aus 48 Bit und die Schnittstellen-ID aus 64 Bit. Was sollen wir mit den fehlenden Bits machen?
Um die fehlenden Bits zu füllen, gehen wir folgendermaßen vor:
Wir nehmen die MAC-Adresse und teilen sie in zwei Teile auf.
Wir fügen “FFFE” zwischen den beiden Teilen ein, so dass wir einen 64-Bit-Wert erhalten.
Wir invertieren das 7. Bit der Schnittstellen-ID.
Wenn meine MAC-Adresse also 1234.5678.ABCD lautet, wird die Schnittstellen-ID folgendermaßen aussehen:
Oben siehst du, wie wir die MAC-Adresse aufteilen und FFFE in die Mitte setzen. Der letzte Schritt, das Invertieren des 7. Bits, ist nicht enthalten. Dazu musst du die ersten beiden hexadezimalen Zeichen des ersten Bytes in Binärzeichen umwandeln, das 7. Das heißt, wenn es eine 0 ist, musst du es in eine 1 umwandeln, und wenn es eine 1 ist, muss es zu einer 0 werden.
Das 7. Bit ist das universelle eindeutige Bit. Bei einer “eingebauten” MAC-Adresse ist dieses Bit immer auf 0 gesetzt. Normalerweise ändern die Leute die MAC-Adressen ihrer Schnittstellen nicht, was bedeutet, dass EUI-64 das 7. Bit in den meisten Fällen von 0 auf 1 ändert.
Damit erhalten wir Folgendes:
Wir nehmen die ersten beiden hexadezimalen Zeichen des ersten Bytes, die “12”, und konvertieren sie zurück ins Binärformat. Dann invertieren wir das 7. Bit von 1 auf 0 und wandeln die Adresse wieder in hexadezmal um. Dies sieht folgendermaßen aus:
Kapitel 6 - Neighbour Discovery Protocol
IPv6 Solicited Node Multicast Address
Jedes Gerät, das eine IPv6-Adresse verwendet, berechnet auch eine Multicast-Gruppenadresse für eine solicited und tritt diesem bei. Diese Adresse wird für die IPv6-Nachbarschaftserkennung benötigt, die wir für die Adressermittlung auf Schicht zwei verwenden.
Alle Solicited Node Multicast-Gruppenadressen beginnen mit FF02::1:FF /104:
FF /8 ist der IPv6 multicast Bereich.
FF02 /16 ist das multicast link local scope
IPv6 Neighbor Discovery Protocol
Einer der Unterschiede zwischen IPv4 und IPv6 ist, dass wir kein ARP (Address Resolution Protocol) mehr verwenden. ND (Neighbor Discovery Protocol) ersetzt die Funktion von ARP.
ND verwendet ICMP und Solicited-Node-Multicast-Adressen, um die Layer-2-Adressen anderer IPv6-Hosts im selben Netzwerk (Local Link) zu ermitteln. Dazu verwendet es zwei Nachrichten:
Neighbor Solicitation Nachricht
Nachbar-Ankündigungsnachricht (Neighbor Advertisement)
Schauen wir uns diese beiden Nachrichten genauer an.
IPv6-Nachbarschaftsanfrage (Neighbor Solicitation Message)
Die Neighbor Solicitation Message wird in erster Linie verwendet, um die Schicht-2-Adresse einer anderen IPv6-Adresse auf der lokalen Verbindung zu finden. Sie wird auch für DAD (Duplicated Address Detection) verwendet. In diesem Paket ist die Quelladresse die Quelladresse des Hosts, der die Nachbarschaftsanfrage sendet. Die Zieladresse ist die Multicast-Adresse des angefragten Knotens des entfernten Hosts. Diese Nachricht enthält auch die Schicht-2-Adresse des Hosts, der sie sendet. Im ICMP-Header dieses Pakets findest du den Typwert 135.
Die Verwendung von Solicited-Node-Multicast-Adressen als Ziel ist viel effizienter als die an alle Hosts gesendeten ARP-Anfragen von IPv4.
Jedes IPV6-Gerät errechnet eine Solicited-Node-Multicast-Adresse, indem es die Multicast-Gruppenadresse (FF02::1:FF /104) nimmt und die letzten sechs hexadezimalen Zeichen seiner IPv6-Adresse hinzufügt. Dann tritt er dieser Multicast-Gruppenadresse bei und “hört” sie an.
Wenn ein Host die Schicht-2-Adresse eines anderen Hosts herausfinden möchte, sendet er die Nachbarschaftsanfrage an die Multicast-Adresse des entfernten Hosts. Er kann die Solicited-Node-Multicast-Adresse des entfernten Hosts berechnen, da er die Multicast-Gruppenadresse und die IPv6-Adresse, die er erreichen will, kennt.
Das Ergebnis ist, dass nur der entfernte Host die Nachbarschaftsaufforderung erhält. Das ist viel effizienter als ein Broadcast, den jeder empfängt.
IPv6 Neighbor Advertisement Message
Sobald der entfernte Host die Nachbarschaftsaufforderung erhält, antwortet er mit der Nachbarschaftsanzeige. Die Quelladresse ist die IPv6-Adresse des Hosts, und die Zieladresse ist die IPv6-Adresse des entfernten Hosts, der die Nachbarschaftsanfrage gesendet hat. Der wichtigste Teil ist, dass diese Nachricht die Layer-2-Adresse des Hosts enthält. Die Nachbarschaftsnachricht verwendet den Typ 136 im ICMPv6-Header.
Sobald R1 die Nachbarschaftsanzeige erhält, können die beiden IPv6-Hosts miteinander kommunizieren.
Kapitel 7 - Stateless Autoconfig
Die zustandslose Autokonfiguration für IPv6 ist wie ein “Mini-DHCP”-Server für IPv6. Router, auf denen IPv6 läuft, können Clients, die nach einer IPv6-Adresse suchen, das Präfix des Netzwerks und eine Gateway-Adresse mitteilen. IPv6 verwendet das NDP (Neighbor Discovery Protocol), und dieses Protokoll bietet unter anderem RS (Route Solicitation) und RA (Router Advertisement) Nachrichten, die einem IPv6-Gerät helfen, eine IPv6-Adresse automatisch zu konfigurieren.
Werfen wir einen Blick auf ein Konfigurationsbeispiel:
R2 hat eine IPv6-Adresse und wird Router Advertisements senden. R1 wird dies nutzen, um seine eigene IPv6-Adresse zu konfigurieren.


























