Modifica dei dati della porta di origine del commutatore estendibile di un pacchetto

La porta di origine del commutatore estendibile Hyper-V viene specificata dal membro SourcePortId nella struttura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO . Questa struttura è contenuta nel contesto di inoltro fuori banda (OOB) della struttura di NET_BUFFER_LIST del pacchetto. Per altre informazioni su questo contesto, vedere Contesto di inoltro del commutatore estendibile Hyper-V.

L'estensione del commutatore estendibile deve seguire queste linee guida per modificare l'identificatore di porta di origine di un pacchetto:

  • L'estensione del commutatore estendibile deve chiamare SetNetBufferListSource per modificare la porta di origine per un pacchetto. L'estensione non deve modificare direttamente il membro SourcePortId della struttura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .

  • Se l'estensione sta creando o clonando un pacchetto, deve chiamare la funzione AllocateNetBufferListForwardingContext dopo aver chiamato NdisAllocateNetBufferList. Questa funzione alloca un'area di contesto commutatore estendibile per i dati OOB usati per l'inoltro delle informazioni per il pacchetto.

    Quando l'estensione chiama AllocateNetBufferListForwardingContext, il membro SourcePortId è impostato su NDIS_SWITCH_DEFAULT_PORT_ID. Specifica che il pacchetto ha avuto origine da un'estensione anziché arrivare a una porta commutatore estendibile.

    I pacchetti con una porta di origine di NDIS_SWITCH_DEFAULT_PORT_ID vengono considerati dal percorso dati dell'estensione del commutatore estendibile come privilegiato e attendibile. Tale traffico non deve essere soggetto ai criteri applicati ai pacchetti da altre porte di origine. Ad esempio, i pacchetti con un identificatore di porta di origine di NDIS_SWITCH_DEFAULT_PORT_ID ignorano i criteri del commutatore estendibile predefiniti applicati dal bordo miniport sottostante del commutatore estendibile. Questi criteri includono elenchi di controllo di accesso (ACL) e qualità del servizio (QoS).

    Quando l'estensione origina il traffico di pacchetti, deve usare la porta di origine di NDIS_SWITCH_DEFAULT_PORT_ID con moderazione e attenzione. Nella maggior parte dei casi, l'estensione deve modificare l'identificatore della porta di origine in una porta attiva sul commutatore estendibile. In questo modo i criteri di tale porta devono essere applicati al pacchetto.

    Tuttavia, possono verificarsi situazioni in cui l'estensione deve usare la porta di origine di NDIS_SWITCH_DEFAULT_PORT_ID per i pacchetti originato. Ad esempio, se l'estensione ha origine un pacchetto di controllo che deve essere inviato alla destinazione nella rete fisica o virtuale, deve usare NDIS_SWITCH_DEFAULT_PORT_ID per l'identificatore della porta di origine. In questo modo si garantisce che il pacchetto non venga filtrato e rifiutato dalle estensioni sottostanti nello stack di driver del commutatore estendibile.