Modification des données de port de la source de commutateur extensible d’un paquet

Le port source du commutateur extensible Hyper-V est spécifié par le membre SourcePortId dans la structure NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO . Cette structure est contenue dans le contexte de transfert hors bande (OOB) de la structure NET_BUFFER_LIST du paquet. Pour plus d’informations sur ce contexte, consultez Contexte de transfert de commutateur extensible Hyper-V.

L’extension de commutateur extensible doit suivre ces instructions pour modifier l’identificateur de port source d’un paquet :

  • L’extension de commutateur extensible doit appeler SetNetBufferListSource pour modifier le port source d’un paquet. L’extension ne doit pas modifier directement le membre SourcePortId de la structure NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .

  • Si l’extension crée ou clone un paquet, elle doit appeler la fonction AllocateNetBufferListForwardingContext après avoir appelé NdisAllocateNetBufferList. Cette fonction alloue une zone de contexte de commutateur extensible pour les données OOB utilisées pour le transfert d’informations pour le paquet.

    Lorsque l’extension appelle AllocateNetBufferListForwardingContext, le membre SourcePortId est défini sur NDIS_SWITCH_DEFAULT_PORT_ID. Cela spécifie que le paquet provient d’une extension au lieu d’arriver à un port de commutateur extensible.

    Les paquets avec un port source de NDIS_SWITCH_DEFAULT_PORT_ID sont traités par le chemin de données de l’extension de commutateur extensible comme privilégiés et approuvés. Ce trafic ne doit pas être soumis aux stratégies appliquées aux paquets provenant d’autres ports sources. Par exemple, les paquets avec un identificateur de port source de NDIS_SWITCH_DEFAULT_PORT_ID contourner les stratégies de commutateur extensible intégrées qui sont appliquées par le bord miniport sous-jacent du commutateur extensible. Ces stratégies incluent les listes de contrôle d’accès (ACL) et la qualité de service (QoS).

    Lorsque l’extension est à l’origine du trafic de paquets, elle doit utiliser le port source de NDIS_SWITCH_DEFAULT_PORT_ID avec parcimonie et précaution. Dans la plupart des cas, l’extension doit modifier l’identificateur de port source en port actif sur le commutateur extensible. Cela permet d’appliquer les stratégies de ce port au paquet.

    Toutefois, il peut arriver que l’extension utilise le port source de NDIS_SWITCH_DEFAULT_PORT_ID pour les paquets dont elle provient. Par exemple, si l’extension provient d’un paquet de contrôle qui doit être envoyé à sa destination sur le réseau physique ou virtuel, elle doit utiliser NDIS_SWITCH_DEFAULT_PORT_ID pour l’identificateur de port source. Cela garantit que le paquet ne sera pas filtré et rejeté par les extensions sous-jacentes dans la pile de pilotes de commutateur extensible.