IPv6 Dualstacking

IPv6 nähert sich mit mehr oder weniger großen Schritten, dass man vor IPv6 keine Angst haben muss und dass es sogar Vorteile bringt IPv6 parallel zu IPv4 einzusetzen soll dieser Artikel erläutern.

Unterschiede

Zunächst sollen mal ein paar grundlegende Unterschiede (abgesehen von der Länge der IP-Adresse) zu IPv4 erläutert werden, zugleich werden die entsspanchenden Kommandos aufgelistet, mit denen IPv6 informationen abgerufen, bzw. gesteutert werden können.
Daraus kann man ersehen das IPv6 weit mehr ist, als nur eine Vergrößerung des IP-Adressraumes auf 128 bits.

Adressierung

Die augenfälligste Änderung ist wohl die Erweiterung des IP-Adressraumes auf 128 bits. Subnetzmasken gibts es nicht mehr, stattdessen gibt es Präfixe bzw. erfolgt die Darstellung in der CIDR Notation.
Die Adresswerte werden Hexadezimal in Blöcken zu je 16 bits unterteilt, Blöcke mit 0 können weggelassen werden, wenn diese aufeinanderfolgend sind, z.B. 2001:15c0:6657::1/64.

Wo ist arp?

ARP gibt es bei IPv6 nicht mehr, es wurde durch NDP (Neighbor Discovery Protocol) ersetzt. NDP hat eine zentrale Rolle bei IPv6, es verwaltet den Destination Cache (next hop information) und ist auch für das Auffinden des Präfixes und der Router verantwortlich. Hierzu sind folgende die ICMP6 Typen wichtig:

  • 133 Router Solicitation (RS): Rundsendung an alle Hosts im selben Netz, jeder Router antwortet mit einem Router Advertisement.
  • 134 Router Advertisement (RA): Antwort eines Routers, kann u.A. auch die Präfixe enthalten.
  • 135 Neighbor Solicitation (NS): Neben der Auflösung der IPv6 Adressen in physikalische (Link-Layer) Adressen, wird damit auch die Neighbour Unreachability Detection (NUD) durchgeführt, die Informationen werden im Neighbour Cache abgelegt.
  • 136 Neighbor Advertisement (NA): Antwort auf NS, beinhaltet die Link-Layer Adresse.
  • 137 Redirect: Next-Hop Informationen des Routers.
Die Kommandos um mit NDP zu arbeiten sind von OS zu OS verschieden,
Linux:
ip -6 neigh show # anzeigen des neighbour caches ip -6 neigh help # hilfe FreeBSD:
ndp -a WindowsXP via netsh:
netsh>interface netsh interface>ipv6 netsh interface ipv6>show neigh

Wieso hat jedes Interface sofort eine IPv6 Adresse zugewiesen?

Nachdem IPv6 installiert bzw. geladen wurde, hat jedes Interface sofort eine IPv6 Adresse zugewiesen, diese speziellen Adressen sind die sog. Link-Local Adressen, diese beginnen alle mit dem Prefix fe80::/10. Diese Adressen sind nur innerhalb des selben Subnetzes erreichbar und werden nicht weitergeroutet. Der Vorteil dabei ist, dass das Gerät sofort IPv6 technisch kommunizieren kann, dadurch ergibt sich auch eine Änderung beim Einsatz von DHCP, da das Endgerät ja bereits iptechnisch vorkonfiguriert ist.
[root@foobar /]# ifconfig eth0 Link encap:Ethernet HWaddr 00:1a:4a:63:de:c2 inet6 addr: fe80::21a:4bff:fe93:dec2/64 Scope:Link

Interface Autokonfiguration

Mit IPv6 ist die Autokonfiguration ohne DHCP ermöglicht, dazu werden die letzten 64 bits der IPv6 Adresse automatisch befüllt, entweder wird dazu die 48 bit MAC-Adresse des Interfaces herangezogen und auf 64 bits "aufgeblasen" (EUI-64) oder dies erfolgt zufällig. Aus Datenschutzgründen wurden nachträglich Privacy Extensions definiert. Nachdem ein Gerät eine Adresse gewählt hat, muss eine Duplicate Address Detection (DUD) erfolgen, welche mitels NDP durchgeführt wird.

Weitere Unterschiede in Stichwortform

  • IPSec ist integrierter Bestandteil.
  • Fragmentierung entlang des Pfades gibt es nicht mehr, PMTU Discovery ist verpflichtend, min. MTU ist 1280 Bytes.
  • Private Adressbereiche gibt es nicht mehr, siehe Link-Local Adressen.
  • Integrierte Flow-Controll (QoS).
  • Einfaches Siedeln des Netzes durch simples Ändern des Präfixes am Router.
  • Konstante Headerlänge (40 bytes), dadurch effizienteres Routing.