Gestion des requêtes OID de déchargement matériel sur des cartes réseau physiques

Cette rubrique aborde la façon dont une extension de transfert de commutateur extensible Hyper-V gère les demandes d’identificateur d’objet (OID) pour les technologies de déchargement matériel sur les adaptateurs physiques sous-jacents via le chemin de contrôle du commutateur extensible.

Par exemple, la carte réseau externe peut être liée à l’interface virtuelle du miniport d’un pilote intermédiaire NDIS multiplexeur (MUX). Le pilote MUX est lié à un groupement d’un ou plusieurs réseaux physiques sur l’hôte. Cette configuration est appelée équipe de commutateur extensible.

Dans cette configuration, une extension de commutateur extensible est exposée à chaque carte réseau du groupe. Cela permet à l’extension de gérer la configuration et l’utilisation de cartes réseau individuelles dans l’équipe. Par exemple, une extension de transfert 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 extension de transfert qui gère une équipe de commutateurs extensibles est appelée fournisseur d’association. Pour plus d’informations sur les fournisseurs d’association, consultez Extensions de fournisseur d’association.

La figure suivante montre un exemple d’équipe de commutateur extensible pour NDIS 6.40 (Windows Server 2012 R2) et versions ultérieures.

Diagramme montrant une équipe de commutateur extensible pour NDIS 6.40.

La figure suivante illustre un exemple d’équipe de commutateur extensible pour NDIS 6.30 (Windows Server 2012).

Diagramme illustrant une équipe de commutateur extensible pour NDIS 6.30.

Remarque Dans l’interface de commutateur extensible, les pilotes de filtre NDIS sont appelés extensions de commutateur extensible et la pile des pilotes est appelée pile de pilotes de commutateur extensible.

En gérant la requête OID de OID_SWITCH_NIC_REQUEST, une extension de transfert peut participer à la configuration de le groupe de commutateurs extensibles pour les déchargements matériels. Par exemple, si l’extension gère les cartes réseau physiques d’une équipe de commutateur extensible, elle peut transférer la demande OID_SWITCH_NIC_REQUEST à une carte physique qui prend en charge le déchargement matériel.

NDIS et les pilotes de protocole et de filtre supérieurs peuvent émettre des demandes OID pour les technologies de déchargement matériel sur la carte réseau physique sous-jacente. Lorsque ces requêtes OID arrivent à l’interface de commutateur extensible, elle encapsule la requête OID à l’intérieur d’un NDIS_SWITCH_NIC_OID_REQUEST. Ensuite, l'interface du protocole du commutateur extensible émet une requête OID de OID_SWITCH_NIC_REQUEST qui contient cette structure.

L’interface de commutateur extensible encapsule les OID pour les technologies de déchargement matériel suivantes :

Sécurité du protocole internet (IPsec), offload (version 2)
Les requêtes IPsec OID suivantes sont encapsulées :

L’extension de transfert ne doit pas échouer, ni rejeter, ces demandes OID.

Pour en savoir plus sur la version 2 de la technologie de déchargement matériel IPsec, consultez Déchargement IPsec version 2.

Virtualisation d’E/S avec racine unique (SR-IOV)
Les requêtes OID SR-IOV suivantes sont encapsulées :

L’extension de transfert peut rejeter les demandes OID de OID_NIC_SWITCH_ALLOCATE_VF et de OID_NIC_SWITCH_CREATE_VPORT en terminant la demande avec un code d’état autre que NDIS_STATUS_SUCCESS. Toutefois, l’extension ne doit pas rejeter les autres demandes OID SR-IOV.

Pour en savoir plus sur la technologie de déchargement matériel SR-IOV, consultez Virtualisation d’E/S à racine Unique (SR-IOV).

file d’attente de machines virtualisées (VMQ)
Les requêtes OID VMQ suivantes sont encapsulées :

L’extension de transfert peut rejeter les demandes OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE et de OID_RECEIVE_FILTER_SET_FILTER en terminant la demande avec un code d’état autre que NDIS_STATUS_SUCCESS. Toutefois, l’extension ne doit pas opposer de veto aux autres demandes VMQ OID.

Pour en savoir plus sur la technologie de déchargement matériel VMQ, consultez File d’attente d’ordinateurs virtuels (VMQ).

L'extension de transfert doit respecter ces directives pour gérer les requêtes OID de déchargement matériel :

  • La plateforme de messagerie instantanée Microsoft annonce uniquement les fonctionnalités communes de délestage pour toute l'équipe. Toutefois, l’extension peut générer des requêtes OID pour interroger les fonctionnalités de chaque adaptateur de l’équipe.

    Une fois que l’extension a déterminé les fonctionnalités matérielles des adaptateurs physiques de l’équipe, elle peut transférer les demandes de définition d’OID pour les déchargements matériels vers un adaptateur qui convient le mieux au déchargement.

  • Toutes les demandes OID de déchargement matériel provenant du protocole ou des pilotes de filtre supérieurs sont encapsulées dans une structure NDIS_SWITCH_NIC_OID_REQUEST. Toutes les demandes OID de déchargement matériel qui proviennent de l’extension de transfert doivent être également encapsulées dans la structure NDIS_SWITCH_NIC_OID_REQUEST.

    L’extension transfère la demande OID encapsulée à une carte réseau physique sous-jacente via une demande de définition OID de OID_SWITCH_NIC_REQUEST. Pour en savoir plus sur cette procédure, consultez « Transfert de requêtes OID vers des cartes réseau physiques.

  • L’extension ne doit pas modifier ou échouer les requêtes OID de déchargement matériel pour effacer, libérer ou terminer l’allocation des ressources de déchargement. Par exemple, l’extension ne doit pas échouer aux requêtes OID de OID_RECEIVE_FILTER_CLEAR_FILTER ou de OID_NIC_SWITCH_DELETE_VPORT. L’interface de commutateur extensible doit gérer ces demandes OID pour nettoyer les informations d’état de ces ressources.

    L’extension peut modifier ou échouer les requêtes OID de déchargement matériel pour allouer, déplacer ou définir des ressources de déchargement. Par exemple, l’extension peut échouer ou modifier des requêtes OID de OID_NIC_SWITCH_ALLOCATE_VF ou de OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA.

  • L’extension peut lancer n’importe quel OID de déchargement matériel vers une carte réseau physique sous-jacente. Toutefois, l’extension ne doit pas initier un OID de déchargement matériel qui supprime ou libère des ressources de déchargement que l’extension n’a pas allouées.

    Par exemple, l’extension ne doit pas initier une requête OID de déchargement matériel de OID_RECEIVE_FILTER_FREE_QUEUE si elle n’a pas initié une requête de OID_RECEIVE_FILTER_ALLOCATE_QUEUE pour la même file d’attente.

    Remarque L’extension peut uniquement émettre sa propre requête OID de déchargement matériel encapsulée si elle filtre la même requête OID émise par les pilotes supérieurs. Dans ce cas, l’extension ne doit pas transférer la requête OID d’origine. Au lieu de cela, l’extension doit appeler NdisFOidRequestComplete pour terminer cette requête lorsque NDIS appelle son FilterOidRequestComplete pour terminer la requête OID d’origine.

  • Si l’extension transfère une requête OID de déchargement matériel à une carte réseau physique sous-jacente, le membre DestinationNicIndex de la structure NDIS_SWITCH_NIC_OID_REQUEST doit être défini sur la valeur d’index non nulle de la carte. Pour plus d’informations sur ces valeurs d’index, consultez les valeurs d’index de l'adaptateur réseau .

    En outre, le membre DestinationPortId doit être défini sur l’identificateur du port de commutateur extensible auquel la carte réseau externe est connectée.

  • Si l’extension est à l’origine d’une requête OID de déchargement matériel pour allouer des ressources à une partition enfant Hyper-V, le membre SourcePortId de la structure NDIS_SWITCH_NIC_OID_REQUEST doit être défini sur l’identificateur du port de commutateur extensible auquel la partition est connectée.

    Le membre SourceNicIndex doit être défini sur NDIS_SWITCH_DEFAULT_NIC_INDEX.

  • Lorsque l’extension appelle NdisFOidRequest pour transférer la requête OID, elle doit définir le paramètre OidRequest sur un pointeur vers une structure NDIS_OID_REQUEST pour une requête OID OID_SWITCH_NIC_REQUEST.

Pour plus d’informations sur la façon dont l’extension filtre les requêtes OID, consultez filtrage des requêtes OID dans un pilote de filtre NDIS.

Pour plus d’informations sur les pilotes MUX, consultez la section Pilotes intermédiaires NDIS MUX.