Dela via


Använda filtrering av virtuell växel

Översikt över filtrering av virtuella switchar

Filtrering av virtuella växlar stöds i Windows 8 och senare versioner av Windows.

Den här WFP-funktionen tillåter filtrering på fält i MAC-huvudet, IP-huvudet och övre protokollportar samt specifika fält för virtuell växel, till exempel virtuell port (VPort) och vm-ID (VM-ID). Dessa lager anropas per paket för alla paket som passerar den virtuella växeln. Dessa lager nås från ett tilläggsfilter för virtuell växel – en typ av LWF-drivrutin (NDIS Lightweight Filter).

En utropsdrivrutin anropar funktionen FwpsvSwitchEventsSubscribe0 för att registrera återuppringningsinmatningspunkter för händelser i det virtuella switchlagret.

Startpunkterna för återanropsmeddelandefunktionerna anges i en FWPS_VSWITCH_EVENT_DISPATCH_TABLE0 struktur. De återanropsfunktioner som är tillgängliga är:

FWPS_VSWITCH_EVENT_TYPE-uppräkningen definierar värdena för parametern eventType för meddelandefunktionerna för virtuell växel.

Callout-drivrutinen måste anropa FwpsvSwitchEventsUnsubscribe0 för att frigöra systemresurserna.

Om en callout-drivrutin returnerar STATUS_PENDING från en WFP-meddelandefunktion returnerar WFP STATUS_PENDING till OID-begäranhanteraren. Utropsdrivrutinen måste anropa funktionen FwpsvSwitchNotifyComplete0 för att slutföra den väntande åtgärden. Efter FwpsvSwitchNotifyComplete0-anropet anropar WFP funktionen NdisFOidRequestComplete för att slutföra OID för den virtuella växeln.

Återuppringningar bör inte lägga till eller ta bort WFP-filter synkront i kontexten för notifieringsfunktionerna. Om meddelandefunktionen dessutom tillåter återanropet att returnera STATUS_PENDING, och utropet returnerar STATUS_PENDING, bör utropet inte lägga till eller ta bort WFP-filter innan meddelandet är slutfört.

Filterskikt och fält för virtuell WFP-växel

Körningsfiltreringslageridentifierare för virtuella växelfiltrering inkluderar:

  • 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

Datafältidentifierare för filtrering av virtuella växlar är:

Vägledning för författare av callouts för WFP Virtual Switch

Port 0-trafik

För anrop för virtuella WFP-växlar är trafik från port 0 (standardport-ID) betrodd och bör inte filtreras. Detta beror på att trafik över port 0 vanligtvis kommer från andra tillägg i drivrutinsstacken och därför behandlas av datasökvägen som privilegierad och betrodd. Virtuella switchutbyggnader använder sparsamt port 0 för situationer som att initiera ett kontrollpaket, som inte bör filtreras eller avvisas av några underliggande tillägg. Mer information om Hyper-V utökningsbar växelkällportsändring finns i Ändra ett pakets utökningsbara källportsdata.

Matchningsregler för pratbubblan

När du definierar en matchande regel för filtrering bör utrop för virtuella switchar inte använda MAC-adressen som grund för jämförelse. MAC-adresser kan ändras vid körning och vissa portar kan generera trafik från flera MAC-adresser. I stället bör anrop använda en mer varaktig matchningsregel, till exempel NIC-ID, som inte ändras.

I/O-virtualisering (IOV) och WFP-samexistens

WFP kan inte aktiveras på en IOV-växel och blockeras av operativsystemet om ett försök görs att aktivera den.

Aktivera eller inaktivera WFP

Installationsprogram för utrop för virtuella WFP-switchar bör inte ändra tillståndet för aktiverade WFP-tillägg; de bör därför inte aktivera eller inaktivera själva WFP.