NDIS – Network Driver Interface Specification
Abkürzung: NDIS
NDIS ist die Schnittstelle, über die unter Windows Netzwerkkarten und Protokollstapel miteinander reden. Sie wurde von Microsoft und 3Com entwickelt und trennt zwei Dinge, die sonst aneinander gebunden wären: den Treiber, der eine bestimmte Hardware ansteuert, und die Protokollimplementierung, die IP, IPv6 oder etwas anderes spricht.
Der Nutzen dieser Trennung ist, dass ein Kartenhersteller nicht wissen muss, welche Protokolle auf seinem Adapter laufen, und ein Protokoll nicht, welche Karte darunter steckt.
Die drei Treiberarten in der NDIS-Architektur
NDIS ordnet die Teilnehmer in Rollen, und diese Rollen sind der Schlüssel zum Verständnis der ganzen Schicht:
Miniport-Treiber steuern die Hardware. Sie kennen Register, Puffer und Unterbrechungsanforderungen der Karte und bieten nach oben die einheitliche NDIS-Schnittstelle an. Das ist der Treiber, den ein Hersteller mitliefert.
Protokolltreiber sitzen darüber und implementieren einen Stapel. Unter Windows ist das vor allem TCP/IP; historisch kamen hier NetBEUI und IPX/SPX dazu.
Filtertreiber hängen sich zwischen beide und sehen den Verkehr in beiden Richtungen. Sie können mitlesen, verändern, verwerfen oder einspeisen. Seit NDIS 6 sind sie als Light-Weight Filter (LWF) vorgesehen — ein Rahmen, der eigens für solche Zwischenschichten geschaffen wurde.
Diese dritte Rolle ist der Grund, aus dem NDIS über die Treiberentwicklung hinaus Bedeutung hat: Paketmitschnitt, Firewalls, VPN-Clients, Netzwerk-Teaming und die virtuellen Switche von Hyper-V arbeiten alle als Filter in diesem Rahmen.
Der Bruch zwischen NDIS 5 und NDIS 6
Die Versionsgeschichte wäre uninteressant, gäbe es nicht einen harten Schnitt. NDIS 6.0 kam mit Windows Vista und löste die bis dahin gültige Fassung 5.x ab, die seit Windows 2000 und XP in Gebrauch war. Danach folgten Erweiterungen im Takt der Betriebssystemversionen — 6.20 mit Windows 7, 6.30 mit Windows 8, weitere Punktversionen mit Windows 10 und 11.
Der Unterschied ist nicht kosmetisch. NDIS 5 kannte für Zwischenschichten nur den Intermediate-Treiber, der sich als Karte ausgab und eine Karte benutzte — aufwendig, fehleranfällig und bei mehreren gleichzeitig instabil. NDIS 6 ersetzte das durch die Light-Weight Filter und brachte zugleich die Funktionen, von denen moderner Durchsatz abhängt:
| Funktion | Was sie leistet |
|---|---|
| RSS (Receive Side Scaling) | verteilt eingehende Pakete auf mehrere Prozessorkerne |
| Offloading | verlagert Prüfsummenbildung und Segmentierung in die Karte |
| VMQ, später SR-IOV | gibt virtuellen Maschinen eigene Warteschlangen beziehungsweise direkten Hardwarezugang |
Ohne diese Mechanismen ist ein Adapter jenseits von einem Gigabit nicht auszulasten, weil ein einzelner Kern die Unterbrechungen nicht mehr abarbeitet.
Für die Praxis folgt daraus die wichtigste Aussage dieses Artikels: Ein Werkzeug, das noch auf NDIS 5 aufsetzt, ist auf aktuellen Windows-Versionen am Ende. Genau das war das Schicksal von WinPcap — nicht fehlender Wille zur Pflege, sondern eine Treiberschnittstelle, die Microsoft nicht mehr trägt. Npcap als Nachfolger ist ein NDIS-6-Light-Weight-Filter, und daraus folgen auch seine zusätzlichen Fähigkeiten.
Wo NDIS im Betrieb auffällt
Gestapelte Filter summieren sich. Jeder Filtertreiber sieht jedes Paket. Ein System mit Mitschnitttreiber, VPN-Client, Endpoint-Schutz und Teaming hat eine Kette, die Durchsatz kostet und bei Fehlern schwer einzugrenzen ist. Die Reihenfolge der Filter ist dabei festgelegt und nicht beliebig — ein Punkt, der bei Wechselwirkungen zwischen Sicherheitsprodukten regelmäßig zum Thema wird.
Übrig gebliebene Bindungen. In den Eigenschaften eines Adapters erscheinen alle gebundenen Protokolle und Filter. Deinstallierte Software hinterlässt hier gelegentlich Einträge, die den Adapter weiter beeinflussen — ein Grund für Netzwerkprobleme, die mit der Verkabelung nichts zu tun haben.
Offloading als Fehlerquelle bei der Analyse. Verlagert die Karte die Prüfsummenbildung, steht im Mitschnitt auf demselben Rechner eine ungültige Prüfsumme, weil sie erst nach dem Mitschneiden eingesetzt wird. Wer darin einen Fehler sieht, sucht ein Problem, das es nicht gibt.
Abgrenzung
ODI (Open Data-Link Interface) ist das Gegenstück aus der Novell-Welt und erfüllte dieselbe Aufgabe für NetWare-Umgebungen.
Npcap und WinPcap sind Anwendungen der NDIS-Schnittstelle: Treiber, die als Filter beziehungsweise als Protokolltreiber Kopien des Verkehrs nach oben geben.
WFP (Windows Filtering Platform) ist eine getrennte, höher ansetzende Schnittstelle für Filterung auf Paket- und Verbindungsebene. Npcap nutzt sie für den Loopback-Mitschnitt, weil NDIS Verkehr eines Rechners mit sich selbst nicht sieht.
pktmon ist das Bordmittel, das ohne zusätzlichen Treiber auskommt, weil es auf vorhandene Komponenten aufsetzt.
Quellen
- Microsoft: Network Driver Interface Specification (NDIS) — Windows Driver Kit
- Microsoft: NDIS Filter Drivers und NDIS Versions in Windows
- Npcap: Architekturbeschreibung des NDIS-6-Treibers