Linee guida per la gestione dei pacchetti per il percorso dati estendibile del commutatore

In questo argomento vengono descritte le linee guida che le estensioni del commutatore estendibili Hyper-V devono seguire per la gestione dei pacchetti ottenuti nel percorso dati di commutatore estendibile.

Nota Nell'interfaccia del commutatore estendibile 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. Per altre informazioni sulle estensioni, vedere Estensioni di commutatori estendibili 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'inoltroibrido.

Le estensioni devono seguire queste linee guida per la gestione dei pacchetti nel percorso dati di commutatore estendibile:

  • Le estensioni che hanno origine pacchetti devono chiamare NdisFSendNetBufferLists per avviare una richiesta di invio nel percorso dati in ingresso. Questa operazione deve essere eseguita in questo modo per consentire l'inoltro appropriato del pacchetto tramite il commutatore estendibile.

  • Un'estensione di acquisizione può monitorare i pacchetti nel percorso dati in ingresso estendibile e in uscita. Tuttavia, questo tipo di estensione deve sempre inoltrare pacchetti e non deve eliminare i pacchetti. Inoltre, l'estensione di acquisizione non deve modificare i dati del pacchetto prima di inoltrare il pacchetto.

  • Nel percorso dati in ingresso estendibile filtrare e inoltrare le estensioni di inoltro possono eseguire le operazioni seguenti:

    • Le estensioni di filtro possono filtrare il traffico dei pacchetti e applicare solo i criteri di conversione o porta personalizzata per il recapito dei pacchetti tramite il commutatore estendibile. Quando i pacchetti di estensione vengono filtrati nel percorso dati in ingresso, possono applicare solo regole di filtro in base alla porta di origine e alla connessione della scheda di rete da cui ha origine il pacchetto. Queste informazioni vengono archiviate nei dati OOB della struttura NET_BUFFER_LIST di un pacchetto e possono essere ottenute usando la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .

      Nota I pacchetti ottenuti nel percorso dati in ingresso non contengono porte di destinazione. È possibile filtrare i pacchetti in base alle porte di destinazione solo sui pacchetti ottenuti nel percorso dati in uscita.

    • Le estensioni di inoltro possono filtrare il traffico dei pacchetti e applicare criteri personalizzati e standard per il recapito dei pacchetti tramite il commutatore estendibile. Quando l'estensione di inoltro filtra i pacchetti nel percorso dati in ingresso, applica regole di filtro in base alla porta di origine e alle porte di destinazione che l'estensione di inoltro assegna al pacchetto.

  • Nel percorso dati in uscita del commutatore estendibile è possibile filtrare e inoltrare le estensioni seguenti:

    • Le estensioni di filtro possono filtrare il traffico dei pacchetti e applicare solo i criteri di conversione o porta personalizzata per il recapito dei pacchetti tramite il commutatore estendibile. Quando l'estensione di filtro filtra i pacchetti nel percorso dati in uscita, può applicare regole di filtro in base solo alle porte di destinazione per un pacchetto.

      I dati della porta di destinazione vengono archiviati nei dati OOB della struttura NET_BUFFER_LIST di un pacchetto. Le estensioni ottengono queste informazioni chiamando la funzione GetNetBufferListDestinations .

    • Le estensioni di inoltro possono filtrare il traffico dei pacchetti e applicare criteri personalizzati e standard per il recapito dei pacchetti tramite il commutatore estendibile. Quando l'estensione di inoltro filtra i pacchetti nel percorso dati in uscita, può applicare regole di filtro in base alle porte di origine o di destinazione per un pacchetto.

    • In base ai criteri applicati su un pacchetto, l'estensione di filtro o inoltro può escludere il recapito del pacchetto in una o più destinazioni. Per altre informazioni su questa procedura, vedere Esclusione del recapito dei pacchetti alle porte di destinazione estendibili.

      In base ai criteri applicati su un pacchetto, l'estensione di inoltro può escludere il recapito del pacchetto in una o più destinazioni. Per altre informazioni, vedere Inoltro ibrido.

  • Nel percorso dati in uscita del commutatore estendibile, il filtro e l'inoltro delle estensioni non devono eseguire le operazioni seguenti:

    • Modificare i dati del pacchetto prima di inoltrare il pacchetto nel percorso dati in uscita.

      Se un'estensione di filtro deve modificare i dati in un pacchetto, deve prima clonare il pacchetto senza conservare le destinazioni di porta. L'estensione deve quindi inserire il pacchetto modificato nel percorso dati in ingresso. Ciò consente alle estensioni sottostanti di applicare criteri al pacchetto modificato e l'estensione di inoltro può aggiungere destinazioni di porta.

      Se l'estensione di inoltro deve modificare i dati in un pacchetto, deve prima clonare il pacchetto prima di assegnare destinazioni di porta. Dopo che il pacchetto è stato modificato e le destinazioni di porta assegnate, l'estensione deve inserire il pacchetto modificato nel percorso dati in ingresso.

      Per altre informazioni, vedere Clonazione del traffico dei pacchetti.

      Nota Se l'estensione clona un pacchetto ottenuto nel percorso dati in uscita, può inserire il nuovo pacchetto nel percorso dati in uscita solo se non ha modificato i dati del pacchetto e ha conservato i dati della porta di destinazione originale.

    • Aggiungere porte di destinazione al pacchetto prima di inoltrare il pacchetto.

      Nota Le estensioni di inoltro possono aggiungere porte di destinazione ai pacchetti ottenuti nel percorso dati in ingresso.

    • Inserire pacchetti di dati nuovi o clonati nel percorso dati in uscita.

  • Nel percorso dati NDIS standard, i dati OOB non estendibili spesso hanno formati diversi a seconda che il pacchetto venga indicato come invio o ricezione. Ad esempio, i dati NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO OOB sono un'unione di strutture specifiche per l'invio e la ricezione.

    Nel percorso dati del commutatore estendibile tutti i pacchetti si spostano nello stack di driver di estensione come invia e riceve. A causa di questo, i dati OOB non estendibili all'interno della struttura di NET_BUFFER_LIST del pacchetto saranno in un formato di invio o ricezione attraverso la durata del flusso attraverso lo stack di driver.

    Il formato di questi dati OOB dipende dalla porta del commutatore estendibile di origine da cui il pacchetto è arrivato al commutatore estendibile. Se la porta di origine è connessa alla scheda di rete esterna, i dati OOB non estendibili saranno in un formato di ricezione. Per altre porte, questi dati OOB saranno in formato di invio.

    Nota Se l'estensione clona la struttura NET_BUFFER_LIST di un pacchetto, deve prendere in considerazione i dati OOB non estendibili se aggiunge o modifica i dati OOB. L'estensione deve chiamare CopyNetBufferListInfo per copiare i dati OOB associati al percorso dati del commutatore estendibile da un pacchetto di origine a un pacchetto clonato. Questa funzione mantiene il formato di invio o ricezione OOB quando i dati vengono copiati nel pacchetto clonato.

  • Se un'estensione elimina un pacchetto dal percorso dati in ingresso, deve chiamare ReportFilteredNetBufferLists. Quando questa funzione viene chiamata, l'interfaccia commutatore estendibile incrementa i contatori e registra gli eventi per i pacchetti eliminati o esclusi.