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.
Die Architektur
Bild 1 zeigt die neue Architektur des TCP/IPStacks. Hier wird das Dual-Layer-Prinzip für die parallele Nutzung von IPv4 und IPv6 deutlich. Nur auf dem Network Layer sind beide Protokolle implementiert. Auf allen anderen Ebenen wird dagegen mit einheitlichen Komponenten gearbeitet.
Beim Transport Layer gibt es neben TCP und UDP auch Raw für den direkten Zugriff auf die IP-Protokolle. Auf dem Framing Layer finden sich die bekannten Netzwerktypen, die heute erforderlich sind, einschließlich der Unterstützung für das Tunneling von IPv4 und IPv6.
Interessant ist die oberste Schicht, über die Anwendungen auf TCP/IP zugreifen. Die Windows Sockets als klassische User-Mode-Schnittstelle arbeiten über AFD (Anciliary Function Driver). Dabei handelt es sich um einen speziellen Treiber für Socket-Funktionen.
Neben der bisherigen TDI-Schnittstelle, die unter anderem von NetBT (NetBIOS over TCP/IP) genutzt wird, sollte die neue Schnittstelle WSK von Anwendungsentwicklern heute bevorzugt verwendet werden.
Alles in allem ist die Architektur des TCP/IPStacks sehr schlank und übersichtlich geworden – und eine saubere Architektur ist eine gute Basis für ein effizientes Funktionieren eines solchen Stacks.
Die Implementierung von IPv6
Neben der grundlegenden Überarbeitung des IPv6-Stacks wurden auch unzählige Änderungen direkt auf der Ebene von IPv6 vorgenommen. Sowohl der Umgang mit dem Protokoll als auch die Funktionalität wurden optimiert.
Wie schon eingangs erwähnt, wird IPv6 standardmäßig als Protokoll installiert und aktiviert. Wenn IPv6 aktiviert ist, versucht der Stack, über IPv6 zu arbeiten. Bei der Namensauflösung geben DNS-Server potenziell sowohl IPv6- als auch IPv4-Adressen zurück. Falls allerdings keine IPv6-Adressen geliefert werden, wird mit IPv4 gearbeitet. Für die Performance der Netzwerkkommunikation macht dieser Ansatz also zunächst keinen Unterschied. Grundsätzlich ist es in Netzwerken mit IPv6-Unterstützung sinnvoll, mit diesem Protokoll zu arbeiten, da es einige Vorteile bietet, beispielsweise bei der Kommunikation über NATs (Network Address Translators).
Da die Infrastrukturkomponenten wie DNS aber IPv6 unterstützen und auch bei der automatischen Zuweisung von IP-Adressen IPv6-Adressen zugeordnet werden, dürften viele Netzwerke zumindest intern mit IPv6 arbeiten. Ob IPv6 auch über die Grenzen des LANs hinaus genutzt wird, hängt insbesondere davon ab, ob die eingesetzten Router auch IPv6 unterstützen.
Zu beachten ist auch, dass manche DNS-Server im Internet nicht korrekt für den Einsatz von IPv6 konfiguriert sind, sodass es zu Problemen bei der Namensauflösung kommen kann. Daher kann es für eine Übergangsphase erforderlich sein, IPv6 zu deaktivieren, bis der Internetprovider seinen DNS-Server so umgestellt hat, dass er Anforderungen an die Namensauflösung auch von Dual-IP-Stack-Systemen korrekt bearbeitet.
Zu den wesentlichen Neuerungen bei Windows Vista und Longhorn in Bezug auf IPv6 gehört die grafische Schnittstelle für die Konfiguration des Protokolls. Man muss also nicht mehr, wie noch beim Windows Server 2003 und Windows XP, mit netsh interface ipv6 arbeiten, sondern kann in gewohnter Weise die GUI verwenden.
Wichtig ist weiterhin, dass IPsec nun voll unterstützt wird (Bild 4). Insbesondere können nun auch die Verschlüsselung und IKE (Internet Key Exchange) genutzt werden. Die Konfiguration kann über die Gruppenrichtlinien in gleicher Weise wie bei IPsec für IPv4 erfolgen. Da IPsec gerade im Zusammenhang mit dem Schutz von Netzwerkinfrastrukturen deutlich an Bedeutung gewonnen hat, ist eine volle Unterstützung dieses Sicherheitsprotokolls unverzichtbar.
Weitere Neuerungen
Neben den genannten Änderungen und den weiter unten behandelten Anpassungen bei Teredo gibt es noch einige weitere Neuerungen:
-
Mit MLDv2 (Multicast Listener Discovery) wird die Registrierung für Multicast-Verkehr mit definierten Filtern unterstützt, sodass die Kommunikation beispielsweise auf bestimmte Hosts beschränkt oder definierte Hosts von der Kommunikation ausgeschlossen werden können.
-
LLMNR (Link-Local Multicast Name Resolution) wird verwendet, um die Namensauflösung in lokalen Subnetzen ohne DNS-Server wie beispielsweise kleinen privaten Netzwerken oder Adhoc-Drahtlosnetzwerken durchzuführen. Das Konzept entspricht in seinem Ergebnis der Broadcast-basierten Namensauflösung, die bei Ipv4-Netzwerken genutzt werden kann.
-
In URLs werden IPv6-Adressen unterstützt, die in eckige Klammern gesetzt werden müssen. Diese Funktion dürfte aufgrund der Komplexität von IPv6-Adressen vor allem für Administratoren interessant sein.
-
IPv6 kann nun auch über PPP (Point-to-Point Protocol) genutzt werden. Das ist vor allem in Verbindung mit Einwählverbindungen – auch bei PPPoE, das für DSL wichtig ist – von Relevanz.
-
L2TP (Layer 2 Tunneling Protocol) lässt sich ebenfalls mit IPv6 nutzen.
-
Die IP-Konfiguration über DHCP wird nun auch mit IPv6 unterstützt. Der DHCP-Server von Windows Server Longhorn bietet die volle IPv6-Unterstützung.
-
Für die Netzwerkschnittstellen werden zufällige IDs generiert, um Scans nach den bekannten IDs der Hersteller von Netzwerkkarten zu vermeiden.
Teredo
Teredo ist eine der zentralen Technologien in der Migrationsphase von IPv4 zu IPv6. Sie ermöglicht die Kommunikation zwischen Clients mit IPv4-und IPv6-Adressen und Systemen mit globalen IPv6-Adressen, auch wenn die Systeme durch ein oder mehrere NATs voneinander getrennt sind. NATs haben in den vergangenen Jahren erheblich an Bedeutung gewonnen, weil die IPv4-Adressräume nicht ausreichen. Das Problem ist, dass damit gegen ein grundlegendes Designprinzip des Internets verstoßen wird, das eindeutige IP-Adressen für jeden Knoten vorsieht. Mit IPv6 wird das wieder der Fall sein, da der Adressraum ausreichend groß ist.
Teredo verwendet globale IP-Adressen, um die Systeme auch außerhalb des NATs sichtbar zu machen. Dafür ist keine Konfigurationsanpassung des NATs erforderlich. Bei Windows Vista ist Teredo standardmäßig aktiviert, wird aber nicht genutzt. Erst wenn ein Benutzer eine Anwendung, die Teredo erfordert, installiert oder wenn die Einstellungen der Windows-Firewall für Teredo angepasst werden, wird auch mit diesem Protokoll gearbeitet. Beim Windows Server Longhorn ist Teredo dagegen standardmäßig deaktiviert.
Die Sicherheit von IPv6-Verkehr über Teredo wird dadurch gewährleistet, dass die Windows-Firewall in den neuen Windows-Versionen sehr viel differenzierter arbeitet und auch IPv6 schützt. In der Summe hat Microsoft bei Vista und Longhorn die Erweiterungen vorgenommen, die für eine effiziente Nutzung von IPv6 erforderlich sind. Zumindest von der Seite des Windows-Betriebssystems her gibt es keine Hürden für die Umstellung auf die neue IP-Version mehr. Für Unternehmensnetzwerke bedeutet die Einführung von IPv6 dennoch einen erheblichen Aufwand. In kleineren Netzwerken wird man dagegen, sobald der Internet-Provider IPv6 unterstützt und man beispielsweise einen DSL-Router mit IPv6-Unterstützung hat, sehr einfach mit dem neuen Protokoll arbeiten können.