Inoltro di pacchetti a schede di rete fisiche

Nota Questa pagina presuppone che si abbia familiarità con le informazioni e i diagrammi nelle pagine seguenti:

In questa pagina viene descritto come le estensioni di inoltro di commutatori Hyper-V possono inoltrare richieste di pacchetti a schede fisiche sottostanti. Una o più schede di rete fisiche possono essere associate alla scheda di rete esterna estendibile.

Ad esempio, la scheda di rete esterna estendibile può essere associata al bordo miniport virtuale di un driver intermedio multixer (MUX) NDIS. Il driver intermedio MUX può essere associato a un team di una o più reti fisiche nell'host. Questa configurazione è nota come team di commutatori estendibili. Per altre informazioni sui team di commutatori estendibili, vedere Tipi di configurazioni della scheda di rete fisica.

In questa configurazione le estensioni del commutatore estendibili vengono esposte a ogni scheda di rete nel team del commutatore estendibile. In questo modo, un'estensione di inoltro nello stack di driver commutatore estendibile consente di gestire la configurazione e l'uso di singole schede di rete nel team. Ad esempio, l'estensione può fornire supporto per una soluzione di failover di bilanciamento del carico (LBFO) nel team inoltrando pacchetti in uscita a singoli adattatori. Ad esempio, l'estensione è nota come provider di teaming. Per altre informazioni sui provider di teaming, vedere Estensioni del provider di team.

Se un'estensione di inoltro è installata e abilitata nello stack di driver di commutatore estendibile, è responsabile di prendere decisioni di inoltro per ogni pacchetto ottenuto nel percorso dati in ingresso estendibile, a meno che il pacchetto non sia un pacchetto NVGRE. Per altre informazioni sui pacchetti NVGRE, vedere Inoltro ibrido. In base a queste decisioni di inoltro, l'estensione può aggiungere porte di destinazione ai dati OOB (out-of-band) della struttura di NET_BUFFER_LIST del pacchetto. Dopo aver completato l'attraversamento del percorso dati del commutatore estendibile, l'interfaccia del commutatore estendibile recapita il pacchetto alle porte di destinazione specificate.

Nota Se un'estensione di inoltro non è installata o abilitata, il commutatore estendibile stesso prende le decisioni di inoltro per i pacchetti ottenuti dal percorso dati in ingresso. L'opzione aggiunge le porte di destinazione ai dati OOB della struttura di NET_BUFFER_LIST del pacchetto prima di inoltrare il pacchetto verso l'alto il percorso dati di uscita del commutatore estendibile.

Quando viene chiamata la funzione FilterSendNetBufferLists dell'estensione di inoltro, il parametro NetBufferList contiene un puntatore a un elenco collegato di strutture NET_BUFFER_LIST . Ognuna di queste strutture specifica un pacchetto ottenuto dal percorso dati in ingresso. All'interno dei dati OOB della struttura di NET_BUFFER_LIST di ogni pacchetto, i dati per le porte di destinazione sono contenuti in una struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . L'estensione ottiene la struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY e i relativi elementi chiamando GetNetBufferListDestinations.

Nota Per migliorare le prestazioni, un'estensione di inoltro può chiamare la funzione GrowNetBufferListDestinations anziché GetNetBufferListDestinations per ottenere un puntatore alla struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY. L'estensione esegue questa operazione se determina che richiede elementi di matrice aggiuntivi nei dati OOB del pacchetto per le porte di destinazione. Per altre informazioni, vedere Aggiunta di dati della porta di destinazione estendibile a un pacchetto.

Ogni elemento nella matrice di NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY definisce una porta di destinazione e viene formattata come struttura NDIS_SWITCH_PORT_DESTINATION . Questa struttura contiene i membri seguenti:

  • Il membro PortId contiene un valore che specifica la porta di destinazione nel commutatore estendibile.

  • Il membro NicIndex specifica l'indice della scheda di rete connessa alla porta commutatore estendibile specificata dal membro PortId .

    Per altre informazioni su questi valori di indice, vedere Valori di indice della scheda di rete.

Se l'estensione di inoltro aggiunge una porta di destinazione connessa alla scheda di rete esterna, l'estensione può specificare l'indice di una scheda di rete fisica sottostante. Ad esempio, l'estensione potrebbe funzionare come provider di teaming per il supporto di LBFO su un team di switch estendibile. Ciò consente all'estensione di bilanciare il sovraccarico del traffico inoltrando richieste a schede diverse del team.

L'estensione di inoltro deve seguire queste linee guida quando aggiunge o modifica una struttura NDIS_SWITCH_PORT_DESTINATION per inoltrare le richieste a una scheda di rete fisica sottostante:

  • Se il membro PortId specifica la porta del commutatore estendibile a cui è connessa la scheda di rete esterna, l'estensione deve impostare il membro NicIndex su uno dei valori di indice seguenti:

    • Se una sola scheda di rete fisica è associata alla scheda di rete esterna, l'estensione deve impostare il membro NicIndex su NDIS_SWITCH_DEFAULT_NIC_INDEX o uno.

    • Se più schede di rete fisiche sono associate alla scheda di rete esterna, l'estensione deve impostare il membro NicIndex sul valore di indice diverso da zero della scheda di rete di destinazione nel team del commutatore estendibile.

    Nota Se il membro PortId non specifica la porta del commutatore estendibile a cui è connessa la scheda di rete esterna, l'estensione deve impostare il membro NicIndex su NDIS_SWITCH_DEFAULT_NIC_INDEX.

  • Dopo aver aggiunto tutte le porte di destinazione per il pacchetto, è necessario chiamare NdisFSendNetBufferLists per inoltrare il pacchetto nel percorso dati in ingresso.

Per altre informazioni su come aggiungere porte di destinazione a un pacchetto, vedere Inoltro di pacchetti a porte estendibili Hyper-V.

Per altre informazioni sul percorso dei dati in uscita, vedere Percorso dati estendibile Hyper-V.