Redirection des paquets vers les adaptateurs réseau physiques
Remarque Cette page suppose que vous connaissez les informations et les diagrammes des pages suivantes :
- Extensions de transfert
- Transfert hybride
- Extensions de commutateurs extensibles Hyper-V
- Vue d'ensemble du commutateur extensible Hyper-V
- Extensions de fournisseur d’association
Cette page décrit comment les extensions de transfert du commutateur extensible Hyper-V peuvent acheminer les requêtes d'envoi de paquets vers les adaptateurs physiques sous-jacents. Une ou plusieurs cartes réseau physiques peuvent être liées à la carte réseau externe du commutateur extensible.
Par exemple, la carte réseau externe d'un commutateur extensible peut être liée à l'interface virtuelle du miniport d’un pilote intermédiaire NDIS multiplexeur (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 appelée équipe de commutateur extensible. Pour en savoir plus sur les groupes de commutateurs 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 du groupe de commutateurs extensibles. Ainsi, une extension de transfert dans la pile de pilotes du commutateur extensible peut gérer la configuration et utiliser chaque carte réseau du groupe. Par exemple, l’extension peut prendre en charge une solution de basculement d’équilibrage de charge (LBFO) sur le groupe en transférant des paquets sortants vers des cartes réseaux individuelles. Une telle extension est connue sous le nom de fournisseur d'association. Pour plus d’informations sur les fournisseurs d'association, consultez Extensions de 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’il obtient sur le chemin de données d’entrée extensible du commutateur, sauf si le paquet est 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.
Remarque Si une extension de transfert n’est pas installée ou activée, le commutateur extensible lui-même prend les décisions de transfert pour les paquets qu’il obtient à partir du chemin de 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 haut du chemin de données de sortie du commutateur extensible.
Lorsque la fonctionde l’extension de transfertFilterSendNetBufferLists 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 de 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.
Remarque Pour améliorer les performances, une extension de transfert peut appeler la fonctionGrowNetBufferListDestinationsau 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 comme structure NDIS_SWITCH_PORT_DESTINATION. Cette structure contient les membres suivants :
Le PortId membre 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 qui est connectée au port de commutateur extensible spécifié par le membre PortId.
Pour en savoir plus sur ces valeurs d'index, consultez Valeurs d’index des cartes 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 en tant que fournisseur d'association pour la prise en charge d'une LBFO sur un groupe de commutateurs extensibles. Cela permet à l’extension d’équilibrer la surcharge du trafic en transférant les demandes d’envoi à différentes cartes du groupe.
L’extension de transfert doit suivre ces instructions quand elle ajoute ou modifie une structure de NDIS_SWITCH_PORT_DESTINATION pour transférer des demandes d'envoi à un adaptateur réseau physique sous-jacent :
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 sur un.
Si plusieurs cartes réseau physiques sont liées à la carte réseau externe, l’extension doit définir le membre NicIndex sur une valeur d’index différente de zéro de la carte réseau de destination dans le groupe de commutateurs extensibles.
Remarque 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 NicIndex sur NDIS_SWITCH_DEFAULT_NIC_INDEX.
Une fois que l’extension a ajouté tous les ports de destination du paquet, elle doit appeler NdisFSendNetBufferLists pour transférer le paquet sur le chemin de données d’entrée.
Pour plus d’informations sur l’ajout de ports de destination à un paquet, consultez Transfert de paquets vers Hyper-V Ports de commutateur extensible.
Pour plus d’informations sur le chemin de données de sortie, consultez le chemin de données du commutateur extensible Hyper-V.