Transfert de paquets vers des ports de commutateur extensible Hyper-V

Cette page décrit comment une extension de transfert de commutateur extensible Hyper-V peut transférer des paquets vers un ou plusieurs ports. Ce type d’extension peut également transférer des paquets vers des cartes réseau individuelles qui sont connectées à la carte réseau externe du commutateur extensible.

Note Seule l’extension de transfert de commutateur extensible ou le commutateur extensible lui-même peut transférer des paquets vers des ports de commutateur extensibles.

Note Cette page suppose que vous êtes familiarisé avec les informations et les diagrammes dans Vue d’ensemble du commutateur extensible Hyper-V et du transfert hybride.

Note Dans l’interface de commutateur extensible, les pilotes de filtre NDIS sont appelés extensions de commutateur extensible et la pile de pilotes est appelée pile de pilotes de commutateur extensible. Pour plus d’informations sur les extensions, consultez Extensions de commutateur extensible Hyper-V.

Si une extension de transfert est installée et activée dans la pile de pilotes de commutateur extensible, elle est chargée de prendre des décisions de transfert pour chaque paquet qu’elle obtient sur le chemin de données d’entrée du commutateur extensible. En fonction de ces décisions de transfert, l’extension ajoute des ports de destination dans le tableau de ports de destination dans les données hors bande (OOB) de la structure NET_BUFFER_LIST du paquet. Une fois que le paquet a terminé sa traversée du chemin de données du commutateur extensible, l’interface de commutateur extensible remet le paquet aux ports de destination spécifiés.

Note Si une extension de transfert n’est pas installée ou activée, le commutateur extensible prend les décisions de transfert pour les paquets qu’il obtient à partir du chemin des données d’entrée. Le commutateur ajoute les ports de destination aux données OOB de la structure NET_BUFFER_LIST du paquet avant de transférer le paquet vers le chemin des données de sortie du commutateur extensible.

Note Si le paquet est un paquet NVGRE, l’extension de transfert peut ajouter des ports de destination au tableau de ports de destination. Toutefois, le composant Hyper-V Network Virtualization (HNV) du commutateur extensible est chargé de déterminer les ports de destination et de transférer le paquet. Pour plus d’informations, consultez Transfert hybride.

L’extension de transfert peut ajouter des destinations de port uniquement aux paquets obtenus à partir du chemin de données d’entrée. Une fois le paquet transféré vers le haut du chemin de données de sortie, le filtrage et le transfert des extensions peuvent exclure la remise de paquets vers les ports de commutateur extensibles. Pour plus d’informations, consultez Exclusion de la remise de paquets aux ports de destination du commutateur extensible.

Dans les données OOB de la structure NET_BUFFER_LIST d’un paquet, les données des ports de destination sont contenues dans une structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Chaque élément du tableau définit un port de destination et est mis en forme en tant que structure NDIS_SWITCH_PORT_DESTINATION .

L’extension de transfert peut appeler les fonctions de gestionnaire de commutateur extensible Hyper-V suivantes pour gérer la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY et ses éléments NDIS_SWITCH_PORT_DESTINATION :

AddNetBufferListDestination
Cette fonction ajoute un port de destination unique à la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY dans les données OOB du paquet.

GetNetBufferListDestinations
Cette fonction retourne un pointeur vers la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY dans les données OOB d’un paquet.

GrowNetBufferListDestinations
Cette fonction ajoute d’autres éléments de port de destination à la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY des données OOB d’un paquet.

UpdateNetBufferListDestinations
Cette fonction valide les modifications apportées par l’extension pour ajouter ou exclure un ou plusieurs ports de destination pour un paquet. Ces modifications sont validées dans la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY dans les données OOB du paquet.

Lorsque la fonction FilterSendNetBufferLists de l’extension de transfert est appelée, le paramètre NetBufferList contient un pointeur vers une liste liée de structures NET_BUFFER_LIST . Chacune de ces structures spécifie un paquet obtenu à partir du chemin des données d’entrée.

Pour chaque structure NET_BUFFER_LIST de cette liste, l’extension de transfert ajoute des ports de destination pour le paquet en procédant comme suit :

  1. L’extension prend des décisions de transfert pour le paquet en fonction de différents types de critères. Ces critères sont les suivants :

    • Critères de stratégie basés sur le port source et la connexion de la carte réseau du paquet. L’extension de transfert obtient ces informations à l’aide de la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .

    • Critères de stratégie pour un port de commutateur extensible en fonction des données de charge utile du paquet. Par exemple, une stratégie pour un port de commutateur extensible peut inclure un filtre pour autoriser la remise uniquement des paquets IP version 4 (IPv4).

    Note Si le paquet est un paquet NVGRE, le composant HNV du commutateur extensible est responsable du transfert du paquet. Toutefois, l’extension de transfert peut appliquer ses propres critères de stratégie dans les chemins d’entrée et de sortie. Pour plus d’informations, consultez Transfert hybride.

  2. Si l’extension détermine que le paquet peut être transféré vers un ou plusieurs ports de commutateur extensibles, elle doit ajouter des ports de destination aux données OOB du paquet. Pour plus d’informations sur cette procédure, consultez Ajout de données de port de destination de commutateur extensible à un paquet.

    Note Si le paquet est un paquet NVGRE, l’extension de transfert n’est pas nécessaire pour ajouter des ports de destination. Pour plus d’informations, consultez Transfert hybride.

  3. Si l’extension détermine que le paquet ne peut pas être transféré vers un port de commutateur extensible, elle doit supprimer le paquet.

    Note Cela n’est pas vrai si le paquet est un paquet NVGRE. Pour plus d’informations, consultez Transfert hybride.

  4. Si l’extension a ajouté un ou plusieurs ports de destination pour le paquet, elle doit appeler NdisFSendNetBufferLists pour transférer le paquet sur le chemin des données de sortie.

    Note Si le paquet est un paquet NVGRE, le composant HNV du commutateur extensible est responsable du transfert du paquet. Pour plus d’informations, consultez Transfert hybride.

Pour plus d’informations sur les chemins de données d’entrée et de sortie des commutateurs extensibles, consultez Chemin des données de commutateur extensible Hyper-V.