Vue d’ensemble des ports de commutateur extensible Hyper-V
Chaque connexion réseau au commutateur extensible Hyper-V est représentée par un port. L’interface de commutateur extensible crée et configure un port avant qu’une connexion réseau ne soit établie. Une fois la connexion réseau détruite, l’interface peut supprimer le port ou le réutiliser pour une autre connexion réseau.
Un port est affecté à chaque partition enfant Hyper-V configurée avec une interface réseau sur le commutateur extensible. Lorsqu’une partition enfant Hyper-V est démarrée, l’interface de commutateur extensible crée un port avant que la carte réseau de la machine virtuelle soit exposée dans le système d’exploitation invité. Une fois la carte réseau de machine virtuelle exposée et initialisée, l’interface de commutateur extensible crée une connexion réseau entre la carte réseau de la machine virtuelle et le port du commutateur extensible. Si la partition enfant est arrêtée, l’interface de commutateur extensible supprime d’abord la connexion réseau, puis supprime le port du commutateur extensible.
Lorsqu’un port de commutateur extensible est créé, il est configuré avec un identificateur et un nom uniques. Une fois créé, le port de commutateur extensible peut être provisionné avec des stratégies qui définissent différents attributs pour la gestion du trafic de paquets sur le port. Par exemple, les stratégies de port standard peuvent être définies pour les attributs VLAN (Virtual LAN) et les restrictions d’accès pour le trafic de port. En outre, les éditeurs de logiciels indépendants (ISV) peuvent définir des stratégies personnalisées avec laquelle des ports individuels peuvent être provisionnés. Pour plus d’informations, consultez Stratégies de port.
Les ports de commutateur extensible se composent des types suivants :
Ports de validation
Les ports de validation sont utilisés pour valider et vérifier les paramètres de port. Ces ports sont temporaires et sont créés sous certaines conditions.
Par exemple, lorsqu’une partition enfant Hyper-V est créée ou reconfigurée pour l’accès réseau, l’interface de commutateur extensible crée un port de validation. L’interface utilise ce port pour vérifier les paramètres de la connexion réseau à la carte réseau de machine virtuelle de la partition. Une fois la vérification terminée, le port de validation est supprimé et un port opérationnel est créé.
Pour plus d’informations, consultez Ports de validation.
Ports opérationnels
Les ports opérationnels sont créés pour héberger une connexion de carte réseau de commutateur extensible. Lorsqu’un port opérationnel est créé, un type de port lui est attribué. Ce type de port est en vigueur après la création du port et avant sa mise à l’arrêt. Pour les ports affectés aux partitions enfants Hyper-V, le type de port opérationnel reste en vigueur pendant que la partition est en cours d’exécution et opérationnelle.
Pour plus d’informations, consultez Ports opérationnels.
Les extensions de commutateur extensible sont averties de la création, de la mise à jour et de la suppression de ports par le biais des demandes d’identificateur d’objet de commutateur extensible (OID) suivantes :
OID_SWITCH_PORT_CREATE
Le bord du protocole du commutateur extensible émet une demande de jeu d’OID de OID_SWITCH_PORT_CREATE pour notifier les extensions de commutateur extensibles de la création d’un port de commutateur extensible.
L’extension peut opposer son veto à la notification de création en retournant STATUS_DATA_NOT_ACCEPTED pour la demande OID. Par exemple, si une extension ne peut pas allouer de ressources pour appliquer ses stratégies configurées sur le port, l’extension met son veto à la notification de création.
Si l’extension accepte la notification de création, elle doit transférer la requête OID vers le bas de la pile du pilote de commutateur extensible. L’extension surveille l’achèvement status de cette demande OID pour déterminer si les extensions sous-jacentes ont opposé leur veto à la notification de création de port.
Les extensions ne peuvent pas transférer les paquets au port nouvellement créé tant qu’une connexion réseau n’est pas créée. Pour plus d’informations sur ce processus, consultez Cartes réseau de commutateur extensible Hyper-V.
OID_SWITCH_PORT_UPDATED
Le bord du protocole du commutateur extensible émet une demande de jeu d’OID de OID_SWITCH_PORT_UPDATED pour informer les extensions de commutateur extensible que les paramètres d’un port de commutateur extensible sont mis à jour. L’OID est émis uniquement pour les ports qui ont déjà été créés et qui n’ont pas encore commencé le processus de suppression/suppression. Actuellement, seul le champ PortFriendlyName est susceptible d’être mis à jour après sa création.
Le bord du protocole du commutateur extensible émet cette requête OID lorsque la connexion réseau précédente au port a été interrompue et que toutes les demandes OID adressées au port ont été effectuées.
Note Cette requête OID peut être émise si aucune connexion de carte réseau n’a été établie auparavant sur le port.
L’extension doit toujours transférer cette demande de jeu d’OID vers le bas de la pile du pilote de commutateur extensible. L’extension ne doit pas faire échouer la demande.
OID_SWITCH_PORT_TEARDOWN
Le bord du protocole du commutateur extensible émet une demande de jeu d’OID de OID_SWITCH_PORT_TEARDOWN pour informer les extensions de commutateur extensible qu’un port de commutateur extensible est en cours de suppression. Le bord du protocole du commutateur extensible émet cette requête OID lorsque la connexion réseau précédente au port a été interrompue et que toutes les demandes OID adressées au port ont été effectuées.
Note Cette requête OID peut être émise si aucune connexion de carte réseau n’a été établie auparavant sur le port.
L’extension doit toujours transférer cette demande de jeu d’OID vers le bas de la pile du pilote de commutateur extensible. L’extension ne doit pas faire échouer la demande.
Une fois que l’extension a transféré cette demande OID, elle ne peut plus émettre de requêtes OID pour le port en cours de suppression.
OID_SWITCH_PORT_DELETE
Le bord du protocole du commutateur extensible émet une demande de jeu d’OID de OID_SWITCH_PORT_DELETE pour notifier les extensions de commutateur extensible qu’un port de commutateur extensible a été supprimé. Le bord du protocole du commutateur extensible émet cette requête OID après l’exécution de la demande de OID_SWITCH_PORT_TEARDOWN et des requêtes OID qui ciblent le port.
L’extension doit toujours transférer cette demande de jeu d’OID vers le bas de la pile du pilote de commutateur extensible. L’extension ne doit pas faire échouer la demande.
Tous les ports de commutateur extensible créés pour les connexions réseau se voient attribuer un identificateur supérieur à NDIS_SWITCH_DEFAULT_PORT_ID. L’identificateur NDIS_SWITCH_DEFAULT_PORT_ID est réservé et utilisé de la manière suivante :
L’identificateur de port source d’un paquet est stocké dans le contexte de transfert hors bande (OOB) du paquet qui est associé à sa structure NET_BUFFER_LIST . Un identificateur de port source de NDIS_SWITCH_DEFAULT_PORT_ID spécifie que le paquet provient de l’extension de commutateur extensible et non d’un port de commutateur extensible. Un paquet avec un identificateur de port source de NDIS_SWITCH_DEFAULT_PORT_ID est approuvé et contourne les stratégies de port de commutateur extensible, telles que les listes de contrôle d’accès (ACL) et la qualité de service (QoS).
L’extension peut souhaiter que le paquet soit traité comme s’il provenait d’un port particulier. Cela permet d’appliquer les stratégies de ce port au paquet. L’extension appelle SetNetBufferListSource pour modifier le port source du paquet.
Toutefois, il peut arriver que l’extension souhaite affecter l’identificateur de port source du paquet à NDIS_SWITCH_DEFAULT_PORT_ID. Par exemple, l’extension peut vouloir définir l’identificateur de port source sur NDIS_SWITCH_DEFAULT_PORT_ID pour les paquets de contrôle propriétaires qui sont envoyés à un appareil sur le réseau externe.
Pour plus d’informations sur le contexte de transfert, consultez Contexte de transfert de commutateur extensible Hyper-V.
Les requêtes d’identificateur d’objet (OID) de OID_SWITCH_NIC_REQUEST sont émises par l’interface de commutateur extensible pour encapsuler les requêtes OID émises sur la carte réseau externe du commutateur extensible. Par exemple, les requêtes OID de déchargement matériel sont encapsulées par l’interface avant d’être émises dans la pile des pilotes de commutateur extensible.
Une extension peut également émettre des requêtes OID encapsulées afin de transférer les requêtes vers le chemin de contrôle de commutateur extensible. Cela permet aux extensions d’interroger ou de configurer les fonctionnalités d’une carte réseau physique sous-jacente.
Le membre InformationBuffer de la structure NDIS_OID_REQUEST de cette requête OID contient un pointeur vers une structure NDIS_SWITCH_NIC_OID_REQUEST . Si le membre SourcePortId est défini sur NDIS_SWITCH_DEFAULT_PORT_ID, cela spécifie que la requête OID provient de l’interface de commutateur extensible. Si DestinationPortId est défini sur NDIS_SWITCH_DEFAULT_PORT_ID, cela spécifie que la requête OID est destinée à être traitée par une extension dans la pile des pilotes de commutateur extensible.
Pour plus d’informations sur le chemin de contrôle pour les requêtes OID, consultez Chemin de contrôle de commutateur extensible Hyper-V pour les demandes OID.
NDIS status indications de NDIS_STATUS_SWITCH_NIC_STATUS sont émises par le bord miniport du commutateur extensible pour encapsuler une indication status de la carte réseau externe du commutateur extensible.
Une extension peut également émettre des indications de status NDIS encapsulées afin de transférer des indications jusqu’au chemin de contrôle du commutateur extensible. Cela permet aux extensions de modifier les fonctionnalités signalées d’une carte réseau physique sous-jacente.
Le membre StatusBuffer de la structure NDIS_STATUS_INDICATION de cette indication contient un pointeur vers une structure NDIS_SWITCH_NIC_STATUS_INDICATION . Si le membre SourcePortId est défini sur NDIS_SWITCH_DEFAULT_PORT_ID, cela spécifie que l’indication status provient de l’interface de commutateur extensible. Si DestinationPortId est défini sur NDIS_SWITCH_DEFAULT_PORT_ID, cela spécifie que la requête OID est destinée à être traitée par une extension dans la pile des pilotes de commutateur extensible.
Pour plus d’informations sur le chemin de contrôle pour les indications de status NDIS, consultez Chemin de contrôle de commutateur extensible Hyper-V pour les indications d’état NDIS.
L’interface de commutateur extensible conserve un compteur de référence pour chaque port qui a été créé. Un port ne sera pas supprimé si son compteur de références a une valeur différente de zéro. L’interface fournit les fonctions de gestionnaire suivantes pour incrémenter ou décrémenter les compteurs de référence d’un port de commutateur extensible :
ReferenceSwitchPort
L’extension de commutateur extensible appelle cette fonction pour incrémenter le compteur de référence d’un port. Bien que le compteur de référence ait une valeur différente de zéro, le bord du protocole du commutateur extensible n’émet pas de demande de jeu d’identificateur d’objet (OID) de OID_SWITCH_PORT_DELETE pour supprimer le port de commutateur extensible.
L’extension doit appeler ReferenceSwitchPort avant d’effectuer toute opération qui nécessite que le port soit dans un état actif. Par exemple, l’extension doit appeler ReferenceSwitchPort avant d’émet une demande de méthode OID de OID_SWITCH_PORT_PROPERTY_ENUM.
Note L’extension ne doit pas appeler ReferenceSwitchPort pour un port après avoir reçu une demande de jeu d’OID de OID_SWITCH_PORT_TEARDOWN pour ce port.
DereferenceSwitchPort
L’extension de commutateur extensible appelle cette fonction pour décrémenter le compteur de référence d’un port.
L’extension doit appeler DereferenceSwitchPort une fois l’opération en cours d’exécution sur le port terminée. Par exemple, si l’extension appelée ReferenceSwitchPort avant a émis une demande de OID_SWITCH_PORT_PROPERTY_ENUM , l’extension doit appeler DereferenceSwitchPort une fois la requête OID terminée.
Note Les ports NDIS et les ports de commutateur extensible sont des objets différents. Les paquets qui transitent par le chemin de données du commutateur extensible sont toujours affectés au numéro de port NDIS de NDIS_DEFAULT_PORT_NUMBER. Toutefois, le numéro de port du commutateur extensible source et de destination du paquet peut être une valeur de NDIS_SWITCH_DEFAULT_PORT_ID ou supérieure. Pour plus d’informations, consultez Chemin des données du commutateur extensible Hyper-V.