IPv6 bei Longhorn und Vista

Vista ist die erste Windows-Version, die IPv6 voll unterstützt. Wie Longhorn unterstützt es einen neuen TCP/IP-Stack, der auf den wahlweisen Betrieb mit IPv4 und IPv6 optimiert ist. Der Artikel gibt einen Überblick über die wesentlichen Änderungen.

Microsoft hat – erstmals seit längerer Zeit – den TCP/IP-Stack von Windows wieder grundlegend überarbeitet. Die Basis für den bisherigen Stack wurde bereits mit Windows NT 3.51 gelegt. Danach wurde er zwar noch einige Male überarbeitet, aber nie von Grund auf neu geschrieben. Auch die IPv6-Unterstützung ab Windows XP und dem Windows Server 2003 war nur eine Erweiterung.

Microsoft hat sich nun bei der Entwicklung der gemeinsamen Basis für Windows Vista und Longhorn dafür entschieden, den Stack neu zu entwickeln. Damit soll das Zusammenspiel der beiden IP-Versionen optimiert und die geänderten Anforderungen an TCP/IP-Netzwerke besser bedient werden.

Solange man sich nicht näher mit der Konfiguration des Stacks beschäftigt, merkt man davon zunächst in den meisten Einsatzsituationen nichts. Je intensiver man sich aber mit TCP/IP auseinandersetzt, desto deutlicher werden die Unterschiede. Wichtig ist, dass die Änderungen keine Auswirkungen auf normale Anwendungen haben.

Dual-Layer-Architektur

Die wichtigste Änderung ist, dass nun für die Unterstützung von IPv4 und IPv6 mit einer Dual-Layer Architektur anstelle eine Dual-Stack-Architektur gearbeitet wird. Die Architektur des TCP/IP-Stacks wird weiter unten noch näher betrachtet.

Diese Änderung bedeutet konkret, dass es keinen IPv6-Stack mehr gibt, wie es noch bei Windows XP und dem Windows Server 2003 der Fall ist. Die Schichten für den Transport und die Erstellung von Frames sind nun identisch. Nur bei der Netzwerkschicht gibt es Unterschiede, weil dort die Spezifika der beiden Protokolle berücksichtigt werden müssen.

Für die praktische Nutzung bedeutet das zunächst, dass man nicht länger Stacks installieren muss. Die Unterstützung für IPv4 und IPv6 ist generell aktiviert, wenn mit TCP/IP gearbeitet wird, was ohnehin zwingend ist. Aus Entwicklersicht bringt diese Änderung aber auch wichtige Vorteile. Statt wie bisher Änderungen an zwei Treibern durchführen zu müssen, sind sie nun nur noch an einer Stelle erforderlich. Das vereinfacht die Entwicklung und erhöht potenziell die Softwarequalität.

Weitere Änderungen im Stack

Neben dieser sehr spezifischen Anpassung für IPv6 gibt es noch einige weitere Neuerungen, die generell für TCP/IP gelten, in diesem Rahmen aber ebenfalls erwähnt werden sollen:

  • Für die Programmierung wurde die neue Schnittstelle WSK (Winsock Kernel) eingerichtet, über die Clients auf den Stack zugreifen können. Sie ersetzt das TDI (Transport Driver Interface), das aus Kompatibilitätsgründen weiterhin unterstützt wird.

  • Mit so genannten Routing Compartments werden definierte Trennungen zwischen verschiedenen Netzwerkverbindungen geschaffen. Damit werden getrennte Routing-Tabellen geschaffen. Verkehr aus dem Internet kann damit beispielsweise nicht mehr ungewollt in ein angeschlossenes privates Netzwerk geroutet werden.

  • Bei der Überprüfung von Paketen wird nun mit einem strong host model gearbeitet. Dabei werden eingehende Pakete daraufhin überprüft, ob sie ein lokales Ziel haben und mit dem Adapter übereinstimmen. Pakete werden nur akzeptiert, wenn sie einer dem Adapter zugewiesenen Adresse entsprechen. Das war bisher nicht so. Angriffe auf Multihomed-Systeme, bei denen es mehrere Schnittstellen mit unterschiedlichen Adressen gibt, werden somit vermieden.

  • Über neue APIs im Bereich der Sicherheit, insbesondere für die Filterung, können Firewallsysteme und Paketfilter einfacher angebunden werden. Das Framework wird als WFP (Windows Filtering Platform) bezeichnet. Darüber hinaus stehen neue Schnittstellen zur Verfügung, mit denen zusätzliche Module dynamisch in den Stack geladen und wieder entfernt werden können.

  • Die Mechanismen für das Offloading des TCP/IP-Stacks auf Hardwarekomponenten wurden verbessert.

  • Die Konfiguration wird dadurch erleichtert, dass sich mehr Parameter anpassen lassen, ohne das System neu starten zu müssen.

  • Für die Performance in unterschiedlichen Umgebungen ist die Erkennung der Netzwerke und die darauf basierende automatische Konfiguration von Parametern wie der Größe des TCP-Empfangsfensters von Bedeutung. Dies führt bis zu einem gewissen Grad zu einer Selbstoptimierung des Stacks.

Weitere wichtige Optimierungen finden sich im Bereich der Sicherheit. Hier wurde der Schutz gegen die bekannten Ansätze für Denial-of-Service-Attacken deutlich ausgebaut.