Verwenden der Filterung virtueller Switches

Übersicht über die Filterung virtueller Switches

Die Filterung virtueller Switches wird in Windows 8 und höheren Versionen von Windows unterstützt.

Dieses WFP-Feature ermöglicht das Filtern nach Feldern des MAC-Headers, IP-Headers und oberen Protokollports sowie nach spezifischen Feldern für virtuelle Switches, z. B. virtueller Port (VPort) und VM-ID (VM-ID). Diese Ebenen werden pro Paket für alle Pakete aufgerufen, die den virtuellen Switch durchlaufen. Auf diese Ebenen kann über einen Erweiterungsfilter für virtuelle Switches zugegriffen werden– ein Typ des LWF-Treibers (NDIS Lightweight Filter).

Ein Legendentreiber ruft die FwpsvSwitchEventsSubscribe0-Funktion auf, um Rückrufeinstiegspunkte für Ereignisse der virtuellen Switchebene zu registrieren.

Die Einstiegspunkte für die Rückrufbenachrichtigungsfunktionen werden in einer FWPS_VSWITCH_EVENT_DISPATCH_TABLE0-Struktur angegeben. Zu den verfügbaren Rückruffunktionen gehören:

Die FWPS_VSWITCH_EVENT_TYPE-Enumeration definiert die Werte für den eventType-Parameter der Benachrichtigungsfunktionen des virtuellen Switches.

Der Legendentreiber muss schließlich FwpsvSwitchEventsUnsubscribe0 aufrufen, um die Systemressourcen freizugeben.

Wenn ein Legendentreiber STATUS_PENDING aus einer WFP-Benachrichtigungsfunktion zurückgibt, gibt WFP STATUS_PENDING an den OID-Anforderungshandler zurück. Der Legendentreiber muss die Funktion FwpsvSwitchNotifyComplete0 aufrufen, um den ausstehenden Vorgang abzuschließen. Nach dem Aufruf von FwpsvSwitchNotifyComplete0 ruft WFP die NdisFOidRequestComplete-Funktion auf, um die OID für den virtuellen Switch abzuschließen.

Rückrufe sollten WFP-Filter nicht synchron im Kontext der Benachrichtigungsfunktionen hinzufügen oder löschen. Wenn die Benachrichtigungsfunktion zulässt, dass der Rückruf STATUS_PENDING zurückgibt und die Legende STATUS_PENDING zurückgibt, sollte die Legende vor abschluss der Benachrichtigung keine WFP-Filter hinzufügen oder löschen.

Filterebene und -felder des virtuellen WFP-Switches

Zu den Laufzeitfilterungsschichtbezeichnern für die Filterung virtueller Switches gehören:

  • FWPS_LAYER_INGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_EGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V6
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V6

Zu den Datenfeldbezeichnern für die Filterung virtueller Switches gehören:

Leitfaden für WFP Virtual Switch Callout Writers

Port 0 Datenverkehr

Bei WFP-Legenden für virtuelle Switches ist der Datenverkehr von Port 0 (die Standardport-ID) vertrauenswürdig und sollte nicht gefiltert werden. Dies liegt daran, dass Datenverkehr über Port 0 im Allgemeinen von anderen Erweiterungen im Treiberstapel stammt und daher vom Datenpfad als privilegiert und vertrauenswürdig behandelt wird. Virtuelle Switch-Erweiterungen verwenden Port 0 nur sparsam für Situationen, z. B. den Ursprung eines Steuerungspakets, das nicht von zugrunde liegenden Erweiterungen gefiltert und abgelehnt werden sollte. Weitere Informationen zur Quellport-Mofifizierung des erweiterbaren Hyper-V-Switches finden Sie unter Ändern der Quellportdaten eines erweiterbaren Switches eines Pakets.

Regeln für den Abgleich von Legenden

Beim Definieren einer Abgleichsregel zum Filtern sollten Legenden für virtuelle Switche die MAC-Adresse nicht als Grundlage für den Vergleich verwenden. MAC-Adressen können sich zur Laufzeit ändern, und einige Ports generieren möglicherweise Datenverkehr von mehreren MAC-Adressen. Stattdessen sollten Legenden eine dauerhaftere Übereinstimmungsregel wie die NIC-ID verwenden, die sich nicht ändert.

E/A-Virtualisierung (IOV) und WFP-Koexistenz

WFP kann nicht auf einem IOV-Switch aktiviert werden und wird vom Betriebssystem blockiert, wenn versucht wird, es zu aktivieren.

Aktivieren oder Deaktivieren von WFP

Installationsprogramme für virtuelle WFP-Switch-Legenden sollten den WFP-Erweiterungsstatus nicht ändern. Das heißt, sie sollten WFP selbst nicht aktivieren oder deaktivieren.