Condividi tramite


Uso del filtro del commutatore virtuale

Panoramica del filtro del commutatore virtuale

Il filtro del commutatore virtuale è supportato in Windows 8 e versioni successive di Windows.

Questa funzionalità WFP consente di filtrare i campi dell'intestazione MAC, dell'intestazione IP e delle porte del protocollo superiore, nonché campi specifici del commutatore virtuale, ad esempio la porta virtuale (VPort) e l'identificatore di macchina virtuale (ID macchina virtuale). Questi livelli vengono richiamati per ogni pacchetto per tutti i pacchetti che attraversano il commutatore virtuale. Questi livelli sono accessibili da un filtro di estensione del commutatore virtuale, ovvero un tipo di driver di filtro NDIS lightweight (LWF).

Un driver callout chiama la funzione FwpsvSwitchEventsSubscribe0 per registrare i punti di ingresso del callback per gli eventi del livello del commutatore virtuale.

I punti di ingresso per le funzioni di notifica di callback vengono specificati in una struttura FWPS_VSWITCH_EVENT_DISPATCH_TABLE0. Le funzioni di callback disponibili includono:

L'enumerazione FWPS_VSWITCH_EVENT_TYPE definisce i valori per il parametro eventType delle funzioni di notifica del commutatore virtuale.

Il driver callout deve infine chiamare FwpsvSwitchEventsUnsubscribe0 per liberare le risorse di sistema.

Se un driver callout restituisce STATUS_PENDING da una funzione di notifica WFP, il WFP restituirà STATUS_PENDING al gestore della richiesta OID. Il driver callout deve chiamare la funzione FwpsvSwitchNotifyComplete0 per completare l'operazione in sospeso. Dopo la chiamata a FwpsvSwitchNotifyComplete0 , WFP chiama la funzione NdisFOidRequestComplete per completare l'OID per il commutatore virtuale.

I callback non devono aggiungere o eliminare filtri WFP in modo sincrono nel contesto delle funzioni di notifica. Inoltre, se la funzione di notifica consente al callback di restituire STATUS_PENDING e il callout restituisce STATUS_PENDING, il callout non deve aggiungere o eliminare filtri WFP prima di completare la notifica.

Campi e livello filtro commutatore virtuale WFP

Gli identificatori del livello di filtro in fase di esecuzione per il filtro del commutatore virtuale includono:

  • 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

Gli identificatori dei campi dati per il filtro del commutatore virtuale includono:

Indicazioni per i callout writer del commutatore virtuale WFP

Traffico della porta 0

Per i callout del commutatore virtuale WFP, il traffico dalla porta 0 (l'ID porta predefinito) è attendibile e non deve essere filtrato. Questo perché, in genere, il traffico sulla porta 0 ha origine da altre estensioni nello stack di driver e viene quindi considerato dal percorso dati come privilegiato e attendibile. Le estensioni del commutatore virtuale useranno con moderazione la porta 0 per situazioni come l'origine di un pacchetto di controllo, che non devono essere filtrate e rifiutate da eventuali estensioni sottostanti. Per altre informazioni sulla modifica della porta di origine del commutatore estendibile Hyper-V, vedere Modifica dei dati della porta di origine del commutatore estendibile di un pacchetto.

Regole di corrispondenza callout

Quando si definisce una regola di corrispondenza per il filtro, i callout del commutatore virtuale non devono usare l'indirizzo MAC come base per il confronto. Gli indirizzi MAC possono cambiare in fase di esecuzione e alcune porte possono generare traffico da più indirizzi MAC. I callout devono invece usare una regola di corrispondenza più durevole, ad esempio l'ID scheda di interfaccia di rete, che non cambierà.

I/O Virtualization (IOV) e coesistenza WFP

Il WFP non può essere abilitato su un commutatore IOV e viene bloccato dal sistema operativo se viene effettuato un tentativo di abilitarlo.

Abilitazione o disabilitazione del WFP

I programmi di installazione per i callout del commutatore virtuale WFP non devono modificare lo stato abilitato dell'estensione WFP; cioè, non dovrebbero abilitare o disabilitare il WFP stesso.