Gestione del contesto di inoltro del commutatore estendibile Hyper-V
Nota Questa pagina presuppone che si abbia familiarità con le informazioni e i diagrammi in Panoramica del commutatore estendibile Hyper-V e dell'inoltro ibrido.
La struttura NET_BUFFER_LIST per ogni pacchetto che attraversa il percorso dati del commutatore estendibile Hyper-V contiene dati fuori banda (OOB). Questi dati specificano la porta di origine da cui ha avuto origine il pacchetto, nonché una o più porte di destinazione per il recapito dei pacchetti. Questi dati OOB sono noti come contesto di inoltro del commutatore estendibile.
Nota Il contesto di inoltro del commutatore estendibile è diverso dalla struttura NET_BUFFER_LIST_CONTEXT . Ciò consente alle estensioni di allocare le proprie strutture di contesto senza influire sul contesto di inoltro.
Il contesto di inoltro del commutatore estendibile viene allocato e liberato nel modo seguente:
Quando un pacchetto arriva al commutatore estendibile da una scheda di rete, l'interfaccia del commutatore estendibile alloca il contesto di inoltro e la associa alla struttura NET_BUFFER_LIST del pacchetto.
Quando il pacchetto viene recapitato alle porte di destinazione, l'interfaccia libera il contesto di inoltro dalla struttura di NET_BUFFER_LIST del pacchetto.
Se un'estensione del commutatore estendibile inserisce un pacchetto nuovo o clonato nel percorso dati del commutatore estendibile, deve allocare il contesto di inoltro prima di chiamare NdisFSendNetBufferLists.
Dopo che l'estensione alloca una struttura NET_BUFFER_LIST per un pacchetto nuovo o clonato, deve chiamare la funzione AllocateNetBufferListForwardingContext per allocare il contesto di inoltro per il pacchetto. Al termine della richiesta di invio di pacchetti, l'estensione deve chiamare FreeNetBufferListForwardingContext prima di liberare o riutilizzare la struttura NET_BUFFER_LIST .
Nota Quando l'estensione chiama AllocateNetBufferListForwardingContext, la porta di origine per il pacchetto è impostata su NDIS_SWITCH_DEFAULT_PORT_ID. Specifica che il pacchetto ha avuto origine da un'estensione anziché arrivare a una porta commutatore estendibile. In determinate condizioni, l'estensione potrebbe voler modificare la porta di origine per il pacchetto. Per altre informazioni, vedere Modifying a Packet's Extensible Switch Source Port Data.For more information, see Modifying a Packet's Extensible Switch Source Port Data.
Per altre informazioni, vedere Operazioni di trasmissione e ricezione del commutatore estendibile Hyper-V.
Tutte le estensioni del commutatore estendibile possono chiamare le funzioni del gestore commutatore estendibili seguenti per accedere ai dati all'interno del contesto di inoltro del pacchetto:
AllocateNetBufferListForwardingContext
Alloca il contesto di inoltro del commutatore estendibile e prepara una struttura di NET_BUFFER_LIST per le operazioni di invio o ricezione all'interno del commutatore estendibile.
CopyNetBufferListInfo
Copia il contesto di inoltro dalla struttura NET_BUFFER_LIST di un pacchetto di origine alla struttura di NET_BUFFER_LIST di un pacchetto di destinazione. Questi dati includono le informazioni sulla porta di origine del commutatore estendibile e sulla scheda di rete. Le informazioni sulla porta di destinazione del commutatore estendibile possono anche essere copiate nel pacchetto di destinazione.
FreeNetBufferListForwardingContext
Libera le risorse nel contesto di inoltro del commutatore estendibile di una struttura di NET_BUFFER_LIST . Questi dati sono stati usati per le operazioni di invio o ricezione in un commutatore estendibile Hyper-V ed è stato allocato in precedenza chiamando la funzione AllocateNetBufferListForwardingContext .
GetNetBufferListDestinations
Restituisce le porte di destinazione dal contesto di inoltro della struttura di NET_BUFFER_LIST di un pacchetto.
Un'estensione di inoltro è responsabile dell'aggiunta di porte di destinazione per un pacchetto, a meno che il pacchetto non sia un pacchetto NVGRE. Per altre informazioni, vedere Inoltro ibrido. L'estensione chiama le funzioni del gestore del commutatore estendibili seguenti per aggiungere o aggiornare le porte di destinazione all'interno del contesto di inoltro del pacchetto:
AddNetBufferListDestination
Aggiunge una singola destinazione all'area del contesto di inoltro del commutatore estendibile per un pacchetto specificato da una struttura NET_BUFFER_LIST .
Nota Questa chiamata esegue il commit della modifica nell'area del contesto di inoltro. In questo caso, l'estensione di inoltro non deve chiamare UpdateNetBufferListDestinations.
GrowNetBufferListDestinations
Aumenta le dimensioni della matrice di porte di destinazione nell'area del contesto di inoltro della struttura di NET_BUFFER_LIST di un pacchetto.
UpdateNetBufferListDestinations
Esegue il commit delle modifiche apportate dall'estensione a una o più porte di destinazione del commutatore estendibili di un pacchetto. Questa funzione aggiorna il contesto di inoltro della struttura NET_BUFFER_LIST di un pacchetto con queste modifiche.
Nota Dopo che l'estensione di inoltro esegue il commit delle modifiche per le porte di destinazione nel contesto di inoltro, le porte di destinazione non possono essere rimosse e solo il membro IsExcluded della struttura NDIS_SWITCH_PORT_DESTINATION di una porta di destinazione può essere modificato. Per altre informazioni, vedere Esclusione del recapito di pacchetti alle porte di destinazione del commutatore estendibile.
Argomenti correlati
Contesto di inoltro del commutatore estendibile Hyper-V
Tipi di dati del contesto di inoltro del commutatore estendibile Hyper-V