Inoltro delle richieste OID alle schede di rete fisiche
In questo argomento viene illustrato come le estensioni del commutatore estendibili Hyper-V inoltrano le richieste di identificatore oggetto (OID) per le schede fisiche sottostanti sul percorso di controllo del commutatore estendibile Hyper-V. L'estensione può anche originare richieste OID alle schede di rete fisiche sottostanti seguendo i metodi descritti in questo argomento.
Ad esempio, la scheda di rete esterna può essere associata al bordo miniport virtuale di un driver intermedio multixer (MUX) NDIS. Il driver MUX è associato a un team di una o più reti fisiche nell'host. Questa configurazione è nota come team di commutatori estendibili.
In questa configurazione un'estensione del commutatore estendibile viene esposta a ogni scheda di rete nel team. In questo modo l'estensione consente di gestire la configurazione e l'uso di singole schede di rete nel team. Ad esempio, un'estensione di inoltro può fornire supporto per una soluzione di failover di bilanciamento del carico (LBFO) nel team inoltrando pacchetti in uscita a singoli adattatori. Un'estensione di inoltro che gestisce un team di switch estendibile è nota come provider di teaming. Per altre informazioni sui provider di teaming, vedere Estensioni del provider di team.
La figura seguente mostra un esempio di team di commutatori estendibili per NDIS 6.40 (Windows Server 2012 R2) e versioni successive.
La figura seguente mostra un esempio di team di commutatori estendibili per NDIS 6.30 (Windows Server 2012).
Nota Nell'interfaccia del commutatore estendibile Hyper-V, i driver di filtro NDIS sono noti come estensioni di commutatori estendibili e lo stack di driver è noto come stack di driver di commutatore estendibile.
Le richieste OID devono essere incapsulate per inoltrare la richiesta a una scheda di rete fisica sottostante. Le richieste OID vengono prima incapsulate all'interno di una struttura NDIS_SWITCH_NIC_OID_REQUEST . Le richieste OID vengono quindi inoltrate tramite il percorso di controllo commutatore estendibile da una richiesta del set OID di OID_SWITCH_NIC_REQUEST.
Le richieste OID alle schede fisiche sottostanti vengono rilasciate dagli elementi seguenti:
Interfaccia del commutatore estendibile.
Le richieste OID, ad esempio richieste di offload hardware, vengono rilasciate tramite il protocollo o i driver di filtro che vengono eseguiti in uno dei seguenti:
Sistema operativo di gestione eseguito nella partizione padre Hyper-V.
Sistema operativo guest in esecuzione nella partizione figlio Hyper-V.
Quando queste richieste OID vengono ricevute dal commutatore estendibile, vengono incapsulate e inoltrate sul percorso di controllo commutatore estendibile. Quando un'estensione di inoltro riceve la richiesta OID incapsulata, può inoltrare la richiesta a un adattatore fisico sottostante. Questa capacità è particolarmente utile per configurare il team del commutatore estendibile per gli offload hardware.
Ad esempio, il driver MUX annuncia le funzionalità comuni dell'intero team di switch estendibile. Tuttavia, l'estensione di inoltro può inviare richieste OID per eseguire query o impostare le singole funzionalità delle schede all'interno del team. Quindi, l'estensione di inoltro può originare un'indicazione di stato NDIS dalla scheda di rete esterna per notificare ai driver overlying le funzionalità che si applicano all'intero team. Per altre informazioni su questa procedura, vedere Indicazioni sullo stato di NDIS provenienti da schede di rete fisiche.
Quando l'estensione di inoltro inoltra la richiesta OID sul percorso del controllo, viene ricevuta dalla scheda di rete esterna. A questo punto, la richiesta OID viene decapsulata e inoltrata alla scheda di rete fisica specificata.
Nota A partire da Windows Server 2012, solo le richieste OID di offload hardware vengono incapsulate e inoltrate in questo modo. Ad esempio, le richieste OID di offload per la coda di macchine virtuali (VMQ) o la sicurezza del protocollo Internet (IPsec) vengono incapsulate e inoltrate sul percorso di controllo commutatore estendibile. Per altre informazioni, vedere Gestione delle richieste OID di offload hardware alle schede di rete fisiche.
Estensione di inoltro.
L'estensione di inoltro può originare le proprie richieste OID incapsulate e inoltrarle a una scheda di rete fisica sottostante. L'estensione di inoltro può incapsulare le richieste NDIS OID standard. L'estensione di inoltro può anche incapsulare le richieste OID private definite dal fornitore hardware indipendente (IHV) per le schede di rete fisiche. Ciò consente un'estensione di inoltro sviluppata anche dall'IHV per abilitare o disabilitare attributi proprietari su singoli adattatori fisici nel team.
Inoltre, l'estensione di inoltro può originare richieste OID di offload hardware incapsulate per allocare risorse per una partizione figlio Hyper-V specificata. Ad esempio, l'estensione di inoltro può originare richieste OID incapsulate di OID_RECEIVE_FILTER_ALLOCATE_QUEUE per allocare una VMQ per una partizione figlio specificata. In questo caso, l'estensione incapsula la richiesta come origine dalla porta del commutatore estendibile e dalla connessione della scheda di rete associata alla partizione.
Nota L'estensione di inoltro può originare solo la richiesta OID di offload hardware incapsulata solo se filtra la stessa richiesta OID rilasciata dai driver overlying. In questo caso, l'estensione non deve inoltrare la richiesta OID originale. L'estensione deve invece chiamare NdisFOidRequestComplete per completare questa richiesta quando NDIS chiama filteroidRequestComplete per completare la richiesta OID originata.
Filtro o acquisizione di estensioni
Un'estensione di filtro o acquisizione può originare le proprie richieste di query OID incapsulate e inoltrarle a una scheda di rete fisica sottostante. Queste estensioni possono incapsulare le richieste di query OID NDIS standard o richieste di query OID private definite dal fornitore hardware indipendente (IHV) per le schede di rete fisiche.
Nota Solo le estensioni di inoltro possono originare richieste di set OID incapsulate alle schede fisiche sottostanti.
L'estensione di inoltro deve seguire questi passaggi quando inoltra, reindirizza o origina una richiesta OID incapsulata per un adattatore fisico sottostante:
Se l'estensione di inoltro ha origine una richiesta OID, deve inizializzare una struttura di NDIS_OID_REQUEST allocata dall'estensione con le informazioni correlate alla richiesta.
Se l'estensione inoltra una richiesta OID, non deve modificare la struttura NDIS_OID_REQUEST esistente a cui fa riferimento il parametro OidRequest della funzione FilterOidRequest . L'estensione deve invece chiamare NdisAllocateCloneOidRequest per allocare memoria per una nuova struttura NDIS_OID_REQUEST e copiare tutte le informazioni dalla struttura NDIS_OID_REQUEST esistente.
L'estensione imposta i membri di una struttura di NDIS_SWITCH_NIC_OID_REQUEST allocata dall'estensione ai valori seguenti:
Il membro DestinationPortId deve essere impostato sull'identificatore della porta di commutatore estendibile a cui è connessa la scheda di rete esterna.
Il membro DestinationNicIndex deve essere impostato sul valore di indice diverso da zero della scheda di rete fisica sottostante.
Per altre informazioni su questi valori di indice, vedere Valori di indice della scheda di rete.
Se l'estensione di inoltro ha origine una richiesta OID di offload hardware per una partizione figlio Hyper-V, il membro SourcePortId deve essere impostato sull'identificatore della porta usata dalla partizione. Inoltre, il membro SourceNicIndex deve essere impostato sull'indice della scheda di rete per la connessione di rete a tale porta.
Se l'estensione di inoltro ha origine una richiesta OID standard o privata per scopi specifici, i membri SourcePortId e SourceNicIndex devono essere impostati su zero.
Se l'estensione di inoltro inoltra o reindirizza una richiesta OID di offload hardware, deve conservare i valori dei membri SourcePortId e SourceNicIndex impostati dall'interfaccia del commutatore estendibile.
Il membro OidRequest deve essere impostato su un puntatore a una struttura di NDIS_OID_REQUEST inizializzata per la richiesta OID incapsulata. L'estensione di inoltro alloca e inizializza questa struttura o usa la copia clonata della struttura.
L'estensione imposta i membri di una struttura NDIS_OID_REQUEST allocata dall'estensione ai valori seguenti:
Il membro Oid deve essere impostato su OID_SWITCH_NIC_REQUEST.
Il membro InformationBuffer deve contenere un puntatore a un buffer contenente i dati della richiesta OID generati o filtrati.
Il membro InformationBufferLength deve contenere la lunghezza, in byte, del buffer contenente i dati della richiesta OID generati o filtrati.
L'estensione imposta gli altri membri su valori validi per la struttura NDIS_OID_REQUEST .
L'estensione chiama ReferenceSwitchNic per incrementare un contatore di riferimento per l'indice della scheda di rete fisica di destinazione. Ciò garantisce che l'interfaccia del commutatore estendibile non eliminerà la connessione della scheda di rete fisica mentre il contatore di riferimento non è zero.
Quando l'estensione chiama ReferenceSwitchNic, imposta il parametro SwitchPortId sul valore specificato per il membro DestinationPortId . L'estensione imposta anche il parametro SwitchNicIndex sul valore specificato per il membro DestinationNicIndex .
Nota Se ReferenceSwitchNic non restituisce NDIS_STATUS_SUCCESS, la richiesta OID non può essere inoltrata alla scheda di rete fisica di destinazione.
Se l'estensione di inoltro ha origine una richiesta OID di offload hardware per una partizione figlio Hyper-V, chiama anche ReferenceSwitchNic per incrementare un contatore di riferimento per l'indice della connessione della scheda di rete di origine associata alla partizione. Ciò garantisce che l'interfaccia del commutatore estendibile non eliminerà la connessione della scheda di rete fisica mentre il contatore di riferimento non è zero.
Quando l'estensione chiama ReferenceSwitchNic, imposta il parametro SwitchPortId sul valore specificato per il membro SourcePortId . L'estensione imposta anche il parametro SwitchNicIndex sul valore specificato per il membro SourceNicIndex .
Nota Se ReferenceSwitchNic non restituisce NDIS_STATUS_SUCCESS, la richiesta OID non può essere inoltrata alla scheda di rete fisica di destinazione.
L'estensione chiama NdisFOidRequest per inoltrare la richiesta OID incapsulata alla porta del commutatore estendibile di destinazione e alla scheda di rete specificati.
Nota Se l'estensione inoltra una richiesta OID filtrata, deve chiamare NdisFOidRequest nel contesto della chiamata alla funzione FilterOidRequest . Se l'estensione inoltra le richieste OID generate, chiama NdisFIndicateStatus mentre si trova nello stato Esecuzione,Riavvio, Sospensione e Sospensione. Per altre informazioni su questi stati, vedere Filtra stati e operazioni del modulo.
Quando NDIS chiama la funzione FilterOidRequestComplete , l'estensione chiama DereferenceSwitchNic per cancellare il contatore di riferimento per l'indice della scheda di rete fisica di destinazione.
Se l'estensione di inoltro ha generato una richiesta OID di offload hardware per una partizione figlio Hyper-V, chiama anche DereferenceSwitchNic per cancellare il contatore di riferimento per l'indice della connessione della scheda di rete di origine per la scheda di rete.
In entrambi i casi, l'estensione imposta i parametri SwitchPortId e SwitchNicIndex sullo stesso valore usato nella chiamata a ReferenceSwitchNic.
Per altre informazioni su come l'estensione genera richieste OID, vedere Generazione di richieste OID da un driver di filtro NDIS.
Per altre informazioni sui driver MUX, vedere Driver intermedi MUX NDIS.