Déplacement d’un filtre de réception vers un port virtuel

Le pilote qui se superpose émet une demande de jeu d’identificateur d’objet (OID) de OID_RECEIVE_FILTER_MOVE_FILTER pour déplacer un filtre de réception d’un port virtuel (VPort) vers un autre VPort sur le commutateur de carte réseau. En règle générale, le pilote de surlysation, tel que la pile de virtualisation, émet cette demande OID si l’une des conditions suivantes est remplie :

  • La pile de virtualisation définit un filtre de réception sur le VPort par défaut. Ce filtre contient l’adresse mac (media access control) et les paramètres virtual LAN (VLAN) pour la carte réseau de machine virtuelle exposée dans la partition enfant Hyper-V. Cela permet de transférer les paquets entre la carte réseau de machine virtuelle et la carte réseau sous-jacente via le chemin de données synthétiques basée sur le logiciel.

    Une fois que les ressources d’une fonction virtuelle PCI Express (PCIe) ont été allouées et que la VF est attachée à une partition enfant, la pile de virtualisation crée un VPort non par défaut sur la VF. La pile de virtualisation déplace ensuite le filtre de réception de la carte réseau de machine virtuelle du VPort par défaut vers le VPort non par défaut attaché à la VF. Cela permet de transférer des paquets entre la carte réseau de machine virtuelle et la carte réseau sous-jacente via le chemin de données VF basé sur le matériel.

    Pour plus d’informations sur ces chemins de données, consultez Chemins de données SR-IOV.

  • Une VF a été détachée d’une partition enfant Hyper-V dans laquelle le système d’exploitation invité est toujours en cours d’exécution. Dans ce cas, le pilote qui se superpose émet la demande de jeu OID pour déplacer le filtre de réception de la carte réseau de machine virtuelle du VPort non par défaut vers le VPort par défaut attaché au PF. Dans ce cas, le trafic de paquets revient au chemin de données synthétiques.

Pour déplacer un filtre de réception d’un VPort vers un autre VPort, un pilote qui se superpose émet une demande de jeu OID de OID_RECEIVE_FILTER_MOVE_FILTER. Le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS .

Avant que le pilote qui se superpose à la demande de OID_RECEIVE_FILTER_MOVE_FILTER , il doit initialiser une structure de NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS de la manière suivante :

  • Le pilote définit le membre FilterId sur l’identificateur de l’identificateur du filtre de réception précédemment alloué.

    Note Le pilote qui se superpose a obtenu l’identificateur de filtre à partir d’une demande de méthode OID antérieure de OID_RECEIVE_FILTER_SET_FILTER ou de OID_RECEIVE_FILTER_ENUM_FILTERS.

  • Le pilote définit le membre SourceQueueId sur NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Le pilote définit le membre SourceVPortId sur l’identificateur du VPort sur lequel ce filtre a été défini précédemment.

  • Le pilote définit le membre DestQueueId sur NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Le pilote définit le membre DestVPortId sur l’identificateur du VPort sur lequel ce filtre doit être déplacé.

NDIS valide les membres du NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS avant de transférer la demande de jeu OID au pilote PF miniport.

Lorsque le pilote pf miniport gère cette demande de jeu OID, il doit déplacer le filtre de réception dans une opération atomique. Le pilote doit être en mesure de configurer la carte réseau pour supprimer simultanément le filtre d’une file d’attente de réception et VPort et le définir sur une autre file d’attente de réception et VPort.