Inoltro di pacchetti alle porte del commutatore estendibile Hyper-V
Questa pagina descrive come un'estensione di inoltro del commutatore estendibile Hyper-V può inoltrare i pacchetti a una o più porte. Questo tipo di estensione può anche inoltrare pacchetti a singole schede di rete connesse alla scheda di rete esterna del commutatore estendibile.
Nota Solo l'estensione di inoltro del commutatore estendibile o il commutatore estendibile può inoltrare i pacchetti alle porte commutatori estendibili.
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.
Nota Nell'interfaccia del commutatore estendibile, i driver di filtro NDIS sono noti come estensioni del commutatore estendibile e lo stack di driver è noto come stack di driver switch estendibile. Per altre informazioni sulle estensioni, vedere Estensioni del commutatore estendibile Hyper-V.
Se un'estensione di inoltro viene installata e abilitata nello stack di driver del commutatore estendibile, è responsabile di prendere decisioni di inoltro per ogni pacchetto ottenuto nel percorso dati di ingresso del commutatore estendibile. In base a queste decisioni di inoltro, l'estensione aggiunge le porte di destinazione nella matrice di porte di destinazione nei dati fuori banda (OOB) della struttura di NET_BUFFER_LIST del pacchetto. Dopo che il pacchetto ha 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, l'opzione estendibile prende le decisioni di inoltro per i pacchetti che ottiene 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.
Nota Se il pacchetto è un pacchetto NVGRE, l'estensione di inoltro può aggiungere porte di destinazione all'array di porte di destinazione. Tuttavia, il componente Hyper-V Network Virtualization (HNV) del commutatore estendibile è responsabile della determinazione delle porte di destinazione e dell'inoltro del pacchetto. Per altre informazioni, vedere Inoltro ibrido.
L'estensione di inoltro può aggiungere destinazioni di porta solo ai pacchetti ottenuti dal percorso dati in ingresso. Dopo l'inoltro del pacchetto al percorso dati in uscita, il filtro e l'inoltro delle estensioni possono escludere il recapito dei pacchetti alle porte switch estendibili. Per altre informazioni, vedere Esclusione del recapito di pacchetti alle porte di destinazione del commutatore estendibile.
All'interno dei dati OOB della struttura di NET_BUFFER_LIST di un pacchetto, i dati per le porte di destinazione sono contenuti in una struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Ogni elemento nella matrice definisce una porta di destinazione e viene formattato come struttura NDIS_SWITCH_PORT_DESTINATION .
L'estensione di inoltro può chiamare le funzioni del gestore del commutatore estendibile Hyper-V seguenti per gestire la struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY e i relativi elementi NDIS_SWITCH_PORT_DESTINATION :
AddNetBufferListDestination
Questa funzione aggiunge una singola porta di destinazione alla struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nei dati OOB del pacchetto.
GetNetBufferListDestinations
Questa funzione restituisce un puntatore alla struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nei dati OOB di un pacchetto.
GrowNetBufferListDestinations
Questa funzione aggiunge altri elementi della porta di destinazione alla struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY dei dati OOB di un pacchetto.
UpdateNetBufferListDestinations
Questa funzione esegue il commit delle modifiche apportate dall'estensione per aggiungere o escludere una o più porte di destinazione per un pacchetto. Queste modifiche vengono sottoposte a commit nella struttura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nei dati OOB del pacchetto.
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.
Per ogni struttura NET_BUFFER_LIST in questo elenco, l'estensione di inoltro aggiunge le porte di destinazione per il pacchetto seguendo questa procedura:
L'estensione prende decisioni di inoltro per il pacchetto in base a vari tipi di criteri. Questi criteri includono quanto segue:
Criteri basati sulla porta di origine del pacchetto e sulla connessione della scheda di rete. L'estensione di inoltro ottiene queste informazioni utilizzando la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
Criteri per una porta commutatore estendibile in base ai dati di payload del pacchetto. Ad esempio, un criterio per una porta commutatore estendibile può includere un filtro per consentire il recapito solo di pacchetti IP versione 4 (IPv4).
Nota Se il pacchetto è un pacchetto NVGRE, il componente HNV del commutatore estendibile è responsabile dell'inoltro del pacchetto. Tuttavia, l'estensione di inoltro può applicare i propri criteri nei percorsi in ingresso e in uscita. Per altre informazioni, vedere Inoltro ibrido.
Se l'estensione determina che il pacchetto può essere inoltrato a una o più porte switch estendibili, deve aggiungere le porte di destinazione ai dati OOB del pacchetto. Per altre informazioni su questa procedura, vedere Aggiunta di dati della porta di destinazione del commutatore estendibile a un pacchetto.
Nota Se il pacchetto è un pacchetto NVGRE, l'estensione di inoltro non è necessaria per aggiungere le porte di destinazione. Per altre informazioni, vedere Inoltro ibrido.
Se l'estensione determina che il pacchetto non può essere inoltrato a qualsiasi porta del commutatore estendibile, deve eliminare il pacchetto.
Nota Questo non vale se il pacchetto è un pacchetto NVGRE. Per altre informazioni, vedere Inoltro ibrido.
Se l'estensione ha aggiunto una o più porte di destinazione per il pacchetto, deve chiamare NdisFSendNetBufferLists per inoltrare il pacchetto nel percorso dati in uscita.
Nota Se il pacchetto è un pacchetto NVGRE, il componente HNV del commutatore estendibile è responsabile dell'inoltro del pacchetto. Per altre informazioni, vedere Inoltro ibrido.
Per altre informazioni sui percorsi dati di ingresso e uscita estendibili del commutatore, vedere Percorso dati commutatore estendibile Hyper-V.