0x1b - ESCAPE
HTML PDF Postscript
 Der Router macht die Musik 
IPv6 Geschrieben von Beat Rubischon (Link) am Donnerstag, 8. November 2007, 22:15
aus dem *wer-verteilt-die-ips* dept.

Praktisch jedes aktuell erhältliche Betriebssystem ist IPv6 enabled - Linux, MacOS X, ja selbst Windows bringt seit Vista den IPv6 Stack einfach so mit. Doch wie kommt ein System zu "seiner" IP?

Als ich mit IPv6 begann, übernahm ich fälschlicherweise die Vorstellung "einer IP" von IPv4. Dabei gibt es nicht nur eine, sondern normalerweise mehrere. Die erste, automatisch konfigurierte Adresse, ist die Link Level Addresse aus dem Prefix fe80::/10. Sie wird - wenn vorhanden - aus der Mac-Adresse gebildet:
beat@tito:~$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:30:1B:B0:86:F4  
          inet6 addr: fe80::230:1bff:feb0:86f4/64 Scope:Link
Dann kommen die globalen Adressen. Sie können statisch konfiguriert werden - normalerweise konfiguriert der Host sie selbst, sobald er von einem Router im selben Netz ein Router Advertisment bekommt, in dem ein Prefix und ein Gateway steht. Aktuell finden sich Adressen aus dem Prefix 2001::/16 (native IPv6) und 2002::/16 (6to4) - 3ffe::/16 ist nicht mehr in Verwendung. Ich announce beispielsweise den Prefix 2001:8e0:1006:1::/64 in dieses Netz (es müssen immer /64 sein, damit die automatische Konfiguration funktioniert!) und der Host baut sich mit der Mac-Adresse eine eigene IPv6 Adresse zusammen:
eth0      Link encap:Ethernet  HWaddr 00:30:1B:B0:86:F4  
          inet6 addr: 2001:8e0:1006:1:230:1bff:feb0:86f4/64 Scope:Global
          inet6 addr: fe80::230:1bff:feb0:86f4/64 Scope:Link
Genauso konfiguriert er sich den Default Gateway - man beachte, dass hier nicht eine "offizielle" IP eingetragen wird, sondern die Link Level IP des Gateways:
beat@tito:~$ ip -6 route 
...
default via fe80::216:47ff:fe58:3339 dev eth0 \
  proto kernel  metric 1024  expires 894sec \
  mtu 1500 advmss 1440 hoplimit 64
Sobald ein Default Gateway vorhanden ist, beginnen die Programme IPv6 zu nutzen.

Dieses Router Advertisement kann vom Host mit einer Router Solicitation messages provoziert werden. Allerdings antworten nicht alle Router darauf - mein Cisco 836 hat in dieser Hinsicht einen Bug im IOS. Die periodischen Announcements reichen aber aus, dass die Hosts sich selbst konfigurieren. Die Frage ist natürlich, wie oft ein solches Announcement geschickt werden soll, da es sich um Netzwerktraffic handelt, der gerade von schmalbrüstigen Geräten wie WLAN angebundene SIP Phones eigentlich möglichst nicht verarbeitet werden will. Auch stellt sich die Frage, welche TTL ein solches Announcement haben soll - die RFCs schweigen sich darüber komplett aus.

Selbstverständlich kann der Router bzw. die Router mehrere Prefixes announcen, die der Host anschliessend konfiguriert. Damit sollen Anbindungen über mehrere Uplinks (Multihoming) realisiert werden und die weltweite BGP Tabelle um all die PI (Provider Independent) Netze erleichtert werden. Allerdings scheint hier noch nicht das letzte Wort gesprochen zu sein und die Regeln, wie ein Host seinen ausgehenden Traffic verteilen soll, sind noch nicht definiert.

Eigentlich fehlt jetzt noch eines - der DNS. Dafür gibt es zwei Ansätze: Einerseits sind drei Site Level IP Adresses definiert (fec0:0:0:ffff::[1-3]), die als DNS Server fungieren sollen. Ich habe sie auf meinem internen DNS entsprechend konfiguriert:
beat@max:~$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:30:1B:AD:EC:F0  
          inet6 addr: fec0:0:0:ffff::1/128 Scope:Site
          inet6 addr: fec0:0:0:ffff::2/128 Scope:Site
          inet6 addr: fec0:0:0:ffff::3/128 Scope:Site
          inet6 addr: 2001:8e0:1006::2/64 Scope:Global
          inet6 addr: fe80::230:1bff:fead:ecf0/64 Scope:Link
Zumindest Windows XP soll diese Adressen verwenden, wenn es keine anderen kennt. Der jeweilig lokale Router muss einfach wissen, wie diese IPs erreicht werden können - das muss nicht immer derselbe DNS Server sein, sondern kann auch auf die geografisch Naheliegendsten verweisen.

Die andere Alternative ist DHCPv6. Ueber das Router Advertisement kann definiert werden, ob ein DHCP Server angefragt werden soll und ob dieser für die IP Nummer oder nur für Zusatzinformationen wie DNS benutzt werden soll. Zumindest RedHat versucht eine DHCP Anfrage während der Installation abzusetzen - eine unangenehme Verzögerung in reinen IPv4 Netzen.

Diese Site Level Adressen aus dem Prefix fc00::/7 sind so etwas wie "private IPv6" Adressen. Die Diskussion ist jedoch vorhanden, ob das in dieser Form überhaupt propagiert werden soll - schliesslich ist IPv6 ohne Uplink eigentlich völlig sinnlos und es existieren mit MDNS durchaus Mechanismen, über die Link Level IP direkt Kontakt in einem LAN aufzunehmen. Aber der Prefix ist da und er kann in übliche /64 Blöcke aufgeteilt und verteilt werden.

Eine weitere Umstellung ist die Tatsache, dass IPv6 keinen Broadcast mehr kennt. Alle Informationen, die wie die Router Advertisements an mehrere Hosts verteilt werden sollen, müssen per Multicast an Gruppenadressen aus dem Prefix ff00::/8 geschickt werden. Das erscheint auf den ersten Blick massiv aufwendiger als ein simpler Broadcast - funktioniert aber auch in nicht Broadcast fähigen Netzen wie Frame Relay oder X.25. IPv6 eliminiert damit die diversen, recht unterschiedlichen Anpassungen an physikalischen Layer wie PPP, Frame Relay oder Ethernet.

Auch wird das Aushandeln von IP Nummern über PPP verändert: LCP handelt nur die Link Level IP aus, allfällige globale IPs sollen per Router Advertisement konfiguriert werden. Was übrigens zumindest beim MacOS X PPP nicht funktioniert.

Die ganze Geschichte ist auf den ersten Blick etwas gewöhnungsbedürftig und braucht Einarbeitungszeit. Weiterhin sind die Implementationen recht unterschiedlich und die endgültigen Wege noch weitgehendst offen. Dennoch sind viele Ideen bestechend genial und einfach - Experimentieren lohnt sich daher auf alle Fälle!

Permalink

Das Kleingedruckte: Der Besitzer der folgenden Kommentare ist wer immer sie eingeschickt hat. Wir sind in keiner Weise für sie verantwortlich.

  • Re: Der Router macht die Musik
    Geschrieben von Ignatios Souvatzis am Mittwoch, 28. November 2007, 17:44

    Ahem...

    die ersten IPv6-fähigen Betriebssysteme waren
    wohl die BSDs (NetBSD, FreeBSD, OpenBSD) auf
    Basis des Codes der japanischen KAME-Gruppe (auch MacoS-X ist in diesem Sinne dazu zu rechnen),
    die beiden Betriesysteme von Digital Equipment (Tru64 und OpenVMS) und von Sun (Solaris), alle vor mindestens 8 Jahren. Es gab damals schon erste Linux-Varianten mit zumindest experimentellem IPv6; bis sich die Linux-Macher aber auf eine gemeinsame endgültige Codebasis einigten, vergingen einige Jahre (das passierte kürzlich erst).

    Zu Microsoft Windows NT gab es einen experimentellen Patch von deren Forschungslabor, in XP ist es schon ab Werk integriert, muss aber extra eingeschaltet werden (Kommandozeilen: ipv6 install). Kein Grund, auf Vista zu warten.