Partager via


Transfert de paquets vers des cartes réseau physiques

Note Cette page suppose que vous êtes familiarisé avec les informations et les diagrammes des pages suivantes :

Cette page décrit comment les extensions de transfert de commutateur extensible Hyper-V peuvent transférer des demandes d’envoi de paquets aux cartes physiques sous-jacentes. Une ou plusieurs cartes réseau physiques peuvent être liées à la carte réseau externe de commutateur extensible.

Par exemple, la carte réseau externe de commutateur extensible peut être liée au bord de miniport virtuel d’un pilote intermédiaire de multiplexeur NDIS (MUX). Le pilote intermédiaire MUX lui-même peut être lié à une équipe d’un ou plusieurs réseaux physiques sur l’hôte. Cette configuration est connue sous le nom d’équipe de commutateur extensible. Pour plus d’informations sur les équipes de commutateur extensibles, consultez Types de configurations de cartes réseau physiques.

Dans cette configuration, les extensions de commutateur extensible sont exposées à chaque carte réseau de l’équipe de commutateur extensible. Cela permet une extension de transfert dans la pile de pilotes de commutateur extensible pour gérer la configuration et l’utilisation de cartes réseau individuelles dans l’équipe. Par exemple, l’extension peut prendre en charge une solution de basculement d’équilibrage de charge (LBFO) sur l’équipe en transférant les paquets sortants vers des adaptateurs individuels. Par exemple, l’extension est connue sous le nom de fournisseur d’association. Pour plus d’informations sur les fournisseurs d’association, consultez Extensions du fournisseur d’association.

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, sauf s’il s’agit d’un paquet NVGRE. (Pour plus d’informations sur les paquets NVGRE, consultez Transfert hybride.) En fonction de ces décisions de transfert, l’extension peut ajouter des ports de destination dans les données OOB (out-of-band) 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 aucune extension de transfert n’est installée ou activée, le commutateur extensible prend lui-même 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 de données de sortie du commutateur extensible.

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. Dans les données OOB de la structure NET_BUFFER_LIST de chaque paquet, les données des ports de destination sont contenues dans une structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . L’extension obtient la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY et ses éléments en appelant GetNetBufferListDestinations.

Note Pour améliorer les performances, une extension de transfert peut appeler la fonction GrowNetBufferListDestinations au lieu de GetNetBufferListDestinations pour obtenir un pointeur vers la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . L’extension le fait si elle détermine qu’elle a besoin d’éléments de tableau supplémentaires dans les données OOB du paquet pour les ports de destination. Pour plus d’informations, consultez Ajout de données de port de destination de commutateur extensible à un paquet.

Chaque élément du tableau NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY définit un port de destination et est mis en forme en tant que structure NDIS_SWITCH_PORT_DESTINATION . Cette structure contient les membres suivants :

  • Le membre PortId contient une valeur qui spécifie le port de destination sur le commutateur extensible.

  • Le membre NicIndex spécifie l’index de la carte réseau connectée au port de commutateur extensible spécifié par le membre PortId .

    Pour plus d’informations sur ces valeurs d’index, consultez Valeurs d’index de carte réseau.

Si l’extension de transfert ajoute un port de destination connecté à la carte réseau externe, l’extension peut spécifier l’index d’une carte réseau physique sous-jacente. Par exemple, l’extension peut fonctionner comme un fournisseur d’association pour la prise en charge LBFO sur une équipe de commutateur extensible. Cela permet à l’extension d’équilibrer la surcharge du trafic en transférant les demandes d’envoi à différents adaptateurs de l’équipe.

L’extension de transfert doit suivre ces instructions lorsqu’elle ajoute ou modifie une structure de NDIS_SWITCH_PORT_DESTINATION pour transférer les demandes d’envoi à une carte réseau physique sous-jacente :

  • Si le membre PortId spécifie le port de commutateur extensible auquel la carte réseau externe est connectée, l’extension doit définir le membre NicIndex sur l’une des valeurs d’index suivantes :

    • Si une seule carte réseau physique est liée à la carte réseau externe, l’extension doit définir le membre NicIndex sur NDIS_SWITCH_DEFAULT_NIC_INDEX ou un.

    • Si plusieurs cartes réseau physiques sont liées à la carte réseau externe, l’extension doit définir le membre NicIndex sur la valeur d’index différente de zéro de la carte réseau de destination dans l’équipe de commutateur extensible.

    Note Si le membre PortId ne spécifie pas le port de commutateur extensible auquel la carte réseau externe est connectée, l’extension doit définir le membre NicIndexsur NDIS_SWITCH_DEFAULT_NIC_INDEX.

  • Une fois que l’extension a ajouté tous les ports de destination pour le paquet, elle doit appeler NdisFSendNetBufferLists pour transférer le paquet sur le chemin des données d’entrée.

Pour plus d’informations sur l’ajout de ports de destination à un paquet, consultez Transfert de paquets vers des ports de commutateur extensible Hyper-V.

Pour plus d’informations sur le chemin des données de sortie, consultez Chemin des données de commutateur extensible Hyper-V.