Flux de paquets via le chemin de données du commutateur extensible
Cette rubrique décrit comment les paquets se déplacent vers ou depuis des ports de commutateur extensible via le chemin des données de commutateur extensible Hyper-V.
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.
Note Cette page suppose que vous êtes familiarisé avec les informations fournies dans Vue d’ensemble du commutateur extensible Hyper-V et du transfert hybride.
Tout le trafic de paquets qui arrive au commutateur extensible à partir de ses ports suit le même chemin à travers la pile de pilotes de commutateur extensible. Par exemple, le trafic de paquets reçu à partir de la connexion de la carte réseau externe ou envoyé à partir d’une connexion de carte réseau de machine virtuelle passe par le même chemin de données.
La figure suivante montre le chemin de données de commutateur extensible pour NDIS 6.40 (Windows Server 2012 R2) et versions ultérieures.
La figure suivante montre le chemin de données de commutateur extensible pour NDIS 6.30 (Windows Server 2012).
Pour plus d’informations sur les composants de l’interface de commutateur extensible, consultez Architecture de commutateur extensible Hyper-V.
Le chemin de données de commutateur extensible comporte les parties suivantes, répertoriées dans l’ordre dans lequel les paquets transitent par eux :
- Périphérie de protocole excessive
- Chemin des données d’entrée
- Bord miniport sous-jacent
- Chemin des données de sortie
Périphérie de protocole excessive
Les paquets arrivent au commutateur extensible à partir de cartes réseau connectées aux ports du commutateur. Ces paquets sont d’abord émis en tant que requêtes d’envoi à partir de la périphérie du protocole du commutateur extensible vers le chemin des données d’entrée du commutateur extensible.
Le bord du protocole du commutateur extensible prépare les paquets pour le chemin de données d’entrée. La périphérie du protocole alloue une zone de contexte pour ces paquets qui contient le contexte de transfert de commutateur extensible hors bande (OOB). Il remplit les données OOB avec des informations sur le port source et la connexion de carte réseau à partir de laquelle le paquet a été remis au commutateur extensible.
Pour plus d’informations sur le contexte de transfert, consultez Contexte de transfert de commutateur extensible Hyper-V.
Dans NDIS 6.40 (Windows Server 2012 R2) et versions ultérieures, si le paquet est un paquet NVGRE provenant d’une carte réseau externe, le commutateur extensible définit l’indicateur NativeForwardingRequired dans les informations hors bande (OOB) du paquet. Pour plus d’informations, consultez Transfert hybride.
Si le paquet est arrivé sur un port où le trafic a un sous-réseau virtuel, le commutateur extensible définit le membre VirtualSubnetId de la structure NDIS_NET_BUFFER_LIST_VIRTUAL_SUBNET_INFO pour le paquet.
Note Le sous-réseau virtuel peut être un sous-réseau HNV ou un sous-réseau virtuel tiers.
Chemin des données d’entrée
Une extension obtient un paquet à partir du chemin des données d’entrée lorsque sa fonction FilterSendNetBufferLists est appelée. L’extension transfère le paquet aux extensions sous-jacentes sur le chemin des données d’entrée en appelant NdisFSendNetBufferLists. Les extensions de filtrage et de transfert peuvent également supprimer le paquet du chemin des données d’entrée en appelant NdisFSendNetBufferListsComplete.
Lorsque la capture d’extensions obtient des paquets sur le chemin des données d’entrée, elles peuvent inspecter les données de paquet. Toutefois, la capture d’extensions ne doit pas terminer les demandes d’envoi de paquets sur le chemin des données d’entrée. Ces extensions doivent toujours transférer les paquets vers les extensions sous-jacentes dans la pile de pilotes de commutateur extensible.
Une extension de capture peut également créer des paquets sur le chemin des données d’entrée. Par exemple, l’extension peut provenir de paquets afin de signaler les conditions de trafic à une application de surveillance à distance.
Pour plus d’informations sur l’origine des paquets par une extension, consultez Trafic de paquets d’origine.
Lorsque les extensions de filtrage obtiennent des paquets sur le chemin des données d’entrée, elles peuvent effectuer les opérations suivantes :
Supprimez des paquets en fonction de stratégies de commutateur ou de port extensibles personnalisées.
Pour plus d’informations sur ces stratégies, consultez Stratégies de commutateur extensible Hyper-V.
Note Les paquets obtenus sur le chemin de données d’entrée n’ont pas de ports de destination définis dans les données OOB du paquet. Par conséquent, les extensions de filtrage ne doivent appliquer que des stratégies personnalisées basées sur les données du paquet ou sur le port source ou la connexion de carte réseau du paquet.
Clonez ou modifiez les paquets obtenus à partir du chemin des données d’entrée.
Injectez de nouveaux paquets dans le chemin des données d’entrée.
Dans NDIS 6.40 et versions ultérieures, après les extensions de capture et de filtrage, mais avant l’extension de transfert sur le chemin des données d’entrée, le commutateur extensible effectue les opérations suivantes :
Si le paquet est un paquet NVGRE provenant d’une carte réseau externe, l’adresse dans l’en-tête de paquet est une adresse d’espace d’adresse de fournisseur (PA). Le commutateur extensible l’indique en définissant l’indicateur NativeForwardingRequired dans les informations hors bande (OOB) du paquet. Pour plus d’informations, consultez Transfert hybride.
Le commutateur extensible applique les stratégies d’entrée intégrées au paquet. Ces stratégies peuvent inclure des listes de contrôle d’accès d’entrée (ACL), DHCP Guard et Router Guard.
Si une extension de transfert n’est pas activée dans la pile de pilotes de commutateur extensible, le tableau de ports de destination d’un paquet est déterminé par le commutateur extensible.
Si une extension de transfert est activée, elle doit effectuer les opérations suivantes lorsqu’elle obtient des paquets sur le chemin des données d’entrée :
Dans NDIS 6.40 et versions ultérieures, si le paquet est un paquet NVGRE (voir Transfert hybride), l’extension de transfert ne peut pas modifier le tableau de ports de destination dans les données OOB du paquet dans le chemin des données d’entrée. Toutefois, il peut supprimer le paquet.
Si le paquet n’est pas un paquet NVGRE, l’extension de transfert doit ajouter des ports de destination au tableau de ports de destination dans les données OOB du paquet.
L’extension de transfert doit supprimer les paquets en fonction des stratégies de commutateur ou de port extensible standard ou personnalisé. Les stratégies standard de commutateur ou de port incluent des propriétés de sécurité et de réseau local virtuel (VLAN). Si une extension de transfert n’est pas activée dans la pile de pilotes de commutateur extensible, ces stratégies sont appliquées par le commutateur extensible.
Note Lorsque l’extension de transfert filtre les paquets dans le chemin des données d’entrée, elle applique des règles de filtrage en fonction du port source ainsi que des ports de destination que l’extension affecte au paquet.
En outre, l’extension de transfert peut effectuer les opérations suivantes :
Clonez ou modifiez les paquets obtenus à partir du chemin des données d’entrée.
Injectez de nouveaux paquets dans le chemin des données d’entrée.
Bord miniport sous-jacent
Lorsque le paquet arrive au bord du miniport sous-jacent du commutateur extensible, le commutateur extensible applique ses stratégies intégrées au paquet. Ces stratégies incluent des listes de contrôle d’accès (ACL) et des propriétés de qualité de service (QoS). Si le paquet n’est pas supprimé en raison de ces stratégies, le commutateur extensible génère une indication de réception pour le paquet et transfère le paquet vers le chemin des données de sortie.
Note Si la mise en miroir de ports est activée sur un port vers lequel le paquet doit être remis, la périphérie miniport ajoute un port de destination aux données OOB du paquet pour le port miroir. Le bord du miniport effectue cette opération, qu’une extension de transfert soit installée ou activée dans la pile de pilotes de commutateur extensible. Le bord miniport ajoute uniquement le port miroir s’il n’est pas déjà spécifié dans le tableau des ports de destination pour le paquet.
Si une extension de transfert n’est pas activée, le commutateur extensible détermine les ports de destination du paquet et ajoute ces ports de destination aux données OOB du paquet avant de transférer le paquet vers le chemin de données de sortie.
Dans NDIS 6.40 et versions ultérieures, le composant HNV effectue toute encapsulation ou décapsulation NVGRE nécessaire après l’entrée et avant la sortie, afin que l’extension de transfert puisse voir le paquet sous forme encapsulée et décapsulée. Par exemple, si le paquet est arrivé d’une carte réseau externe et est destiné à une machine virtuelle interne, l’extension de transfert obtient le paquet encapsulé à l’entrée et le paquet décapsulé en sortie.
Note Dans le paquet encapsulé, l’adresse dans l’en-tête de paquet est une adresse d’espace d’adresse de fournisseur (PA). Dans le paquet décapsulé, il s’agit d’une adresse d’espace d’adresse client (CA).
Si le paquet est un paquet NVGRE qui est arrivé d’une carte réseau externe, le composant Hyper-V Network Virtualization (HNV) du commutateur extensible effectue la décapsulation NVGRE sur le paquet. Le composant HNV détermine les destinations du paquet en fonction des stratégies HNV, puis le commutateur extensible transfère le paquet vers le chemin des données de sortie.
Si le paquet est arrivé d’une machine virtuelle interne, le composant HNV effectue l’encapsulation NVGRE sur le paquet si des stratégies HNV sont définies pour le paquet. Le composant HNV détermine les destinations du paquet en fonction des stratégies HNV, puis le commutateur extensible transfère le paquet vers le chemin des données de sortie.
Sinon, l’extension de transfert transfère le paquet vers le haut du chemin de données de sortie.
Dans NDIS 6.30, si une extension de transfert est activée, elle doit transférer le paquet vers le haut du chemin des données de sortie.
Chemin des données de sortie
Une extension obtient un paquet à partir du chemin de données de sortie lorsque sa fonction FilterReceiveNetBufferLists est appelée. L’extension transfère le paquet aux extensions qui se superposent sur le chemin des données de sortie en appelant NdisFIndicateReceiveNetBufferLists. Les extensions de filtrage et de transfert peuvent également supprimer le paquet du chemin de données de sortie en appelant NdisFReturnNetBufferLists.
Lorsque l’extension de transfert obtient un paquet sur le chemin de données de sortie, elle peut inspecter les informations de port de destination du paquet dans les données OOB.
Note L’extension obtient ces informations à partir des données OOB en appelant GetNetBufferListDestinations.
En fonction des stratégies de commutateur ou de port standard ou personnalisé, l’extension peut exclure la remise du paquet à un ou plusieurs ports de destination contenus dans les données OOB.
Dans NDIS 6.40 (Windows Server 2012 R2) et versions ultérieures, après l’extension de transfert, mais avant le filtrage et la capture des extensions sur le chemin de données de sortie, le commutateur extensible applique les stratégies de sortie intégrées au paquet. Ces stratégies peuvent inclure le mode jonction, le mode analyse, les listes de contrôle d’accès de sortie et les propriétés de qualité de service (QoS).
Lorsque les extensions de filtrage obtiennent un paquet sur le chemin de données de sortie, elles peuvent inspecter les informations de port de destination du paquet dans les données OOB. En fonction des stratégies de commutateur ou de port personnalisées, l’extension peut exclure la remise du paquet à un ou plusieurs ports de destination contenus dans les données OOB.
Si l’extension de filtrage doit modifier les données d’un paquet, elle doit d’abord cloner le paquet sans préserver les destinations de port. Ensuite, l’extension doit injecter le paquet modifié dans le chemin des données d’entrée. Cela permet aux extensions sous-jacentes d’appliquer des stratégies sur le paquet modifié et l’extension de transfert peut ajouter des destinations de port.
Pour plus d’informations, consultez Clonage ou Trafic de paquets.
Lorsque la capture des extensions obtient des paquets sur le chemin des données de sortie, elles peuvent inspecter les données de paquet. Toutefois, si l’extension de capture doit provenir de paquets afin de signaler les conditions de trafic à une application de surveillance à distance, elle doit créer ce trafic de paquets en appelant NdisFSendNetBufferLists pour lancer une opération d’envoi sur le chemin des données d’entrée.
Lorsque le paquet arrive à la périphérie du protocole trop haut du commutateur extensible, l’interface de commutateur extensible transfère le paquet vers tous les ports de destination spécifiés.
Une fois le paquet transféré, l’interface termine le paquet via le même chemin d’accès inverse. Tout d’abord, l’interface appelle la fonction FilterReturnNetBufferLists de l’extension pour terminer les paquets transférés sur le chemin de données de sortie. Ensuite, l’interface appelle la fonction FilterSendNetBufferListsComplete de l’extension pour terminer les paquets transférés sur le chemin des données d’entrée.
Lorsque le paquet est terminé à la fois sur le chemin de données de sortie et d’entrée, l’extension effectue le nettoyage et le post-traitement des paquets nécessaires qui peuvent être nécessaires.