Partager via


Indicateurs d’envoi et de réception du commutateur extensible Hyper-V

Note Cette page suppose que vous êtes familiarisé avec les informations et les diagrammes dans Vue d’ensemble du commutateur extensible Hyper-V et du transfert hybride.

Le trafic de paquets qui se déplace sur le chemin de données du commutateur extensible Hyper-V est obtenu par les extensions de la manière suivante :

  • 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.

  • 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.

Les indicateurs suivants peuvent être définis dans le paramètre SendFlags de FilterSendNetBufferLists ou NdisFSendNetBufferLists :

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST proviennent du même port source de commutateur extensible Hyper-V.

Lorsque NDIS appelle FilterSendNetBufferLists, il définit cet indicateur si l’interface extensible du commutateur extensible a regroupé plusieurs paquets à partir du même port source. Pour de meilleures performances, les extensions doivent conserver ce regroupement en place et définir cet indicateur lorsqu’elles appellent NdisFSendNetBufferLists. L’extension peut également ajouter des paquets provenant ou cloné à la liste liée de structures NET_BUFFER_LIST si l’extension utilise le même port source que les autres paquets de la liste.

Note Si chaque paquet de la liste liée des structures de NET_BUFFER_LIST utilise le même port source, l’extension doit définir l’indicateur NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE dans le paramètre SendCompleteFlags de NdisFSendNetBufferListsComplete lorsqu’elle termine la demande d’envoi.

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST doivent être transférés vers le même port de destination de commutateur extensible.

Une extension de transfert peut utiliser cet indicateur pour une liste liée de structures NET_BUFFER_LIST qu’elle transfère sur le chemin des données d’entrée après avoir déterminé les ports de destination de chaque paquet. Cet indicateur est consommé et supprimé par le bord miniport sous-jacent du commutateur extensible avant qu’il ne transfère les paquets vers le chemin des données de sortie.

La capture et le filtrage des extensions ne peuvent pas utiliser cet indicateur.

Note L’extension de transfert détermine uniquement les ports de destination du paquet pour les paquets non NVGRE. Si le paquet est un paquet NVGRE, le composant HNV (Hyper-V Network Virtualization) détermine les ports de destination du paquet et transfère le paquet. Pour plus d’informations, consultez Transfert hybride.

Pour de meilleures performances, les extensions de transfert doivent définir cet indicateur si tous les paquets de la liste liée doivent être transférés vers le même port de destination. En définissant cet indicateur, l’extension reconnaît que tous les paquets de la liste liée ont les mêmes éléments de port de destination dans le contexte de transfert de commutateur extensible.

Note L’extension de transfert ne doit pas définir cet indicateur pour une liste liée de paquets qui ont plusieurs ports de destination.

Les indicateurs suivants peuvent être définis dans le paramètre ReceiveFlagsde FilterReceiveNetBufferLists ou NdisFIndicateReceiveNetBufferLists :

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST proviennent du même port source de commutateur extensible Hyper-V.

Lorsque NDIS appelle FilterReceiveNetBufferLists, il définit cet indicateur si le commutateur extensible a regroupé plusieurs paquets à partir du même port source. Pour de meilleures performances, les extensions doivent maintenir ce regroupement en place et définir cet indicateur lorsqu’il appelle NdisMIndicateReceiveNetBufferLists. Les extensions doivent également ajouter tous les paquets provenant ou cloné à la liste liée de structures NET_BUFFER_LIST si le paquet a le même port source que les autres paquets de la liste.

Note Si chaque paquet de la liste liée des structures de NET_BUFFER_LIST utilise le même port source, l’extension doit définir l’indicateur NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE dans le paramètre ReturnFlags de FilterReturnNetBufferLists une fois la demande de réception terminée. L’extension doit définir cet indicateur dans le paramètre ReturnFlags si elle appelle NdisFReturnNetBufferLists pour retourner des paquets qu’elle n’a pas créés ou clonés.

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST doivent être transférés vers le même port de destination de commutateur extensible.

Lorsque NDIS appelle FilterReceiveNetBufferLists, il définit cet indicateur si le commutateur extensible a regroupé plusieurs paquets qui ont les mêmes ports de destination. Pour de meilleures performances, les extensions doivent maintenir ce regroupement en place et définir cet indicateur lorsqu’il appelle NdisMIndicateReceiveNetBufferLists. Les extensions doivent également ajouter tous les paquets provenant ou cloné à la liste liée de structures NET_BUFFER_LIST si le paquet a les mêmes ports de destination que les autres paquets de la liste.

Note Lorsqu’une extension appelle NdisFIndicateReceiveNetBufferLists, elle ne doit pas définir l’indicateur NDIS_RECEIVE_FLAGS_RESOURCES dans le paramètre ReceiveFlags . L’interface de commutateur extensible ignore cet indicateur et termine l’indication de réception en appelant FilterReturnNetBufferLists.