Partager via


Hyper-V indicateurs d'envoi et de réception pour le commutateur extensible

Note Cette page part du principe 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 de commutateur extensible Hyper-V est obtenu par les extensions de la manière suivante :

  • Une extension obtient un paquet à partir du chemin de 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 de données d’entrée en appelant NdisFSendNetBufferLists. Les extensions de filtrage et de transfert peuvent également supprimer le paquet du chemin de 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 vers des extensions sur le chemin de 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 switch extensible a regroupé plusieurs paquets à partir du même port source. Pour obtenir les 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és à 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 de structures 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 lors de la fin de 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 de données d’entrée après avoir déterminé les ports de destination de chaque paquet. Cet indicateur est consommé et supprimé par la couche de miniport sous-jacente du commutateur extensible avant qu'il ne transfère les paquets dans le chemin de données de sortie.

Les extensions de capture et de filtrage ne peuvent pas utiliser ce paramètre.

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 Hyper-V Network Virtualization (HNV) détermine les ports de destination du paquet et transfère le paquet. Pour plus d’informations, consultez Transfert hybride.

Pour des performances optimales, 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 ReceiveFlags de 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 obtenir les meilleures performances, les extensions doivent conserver ce regroupement en place et définir cet indicateur lorsqu’elles appellent NdisMIndicateReceiveNetBufferLists. Les extensions doivent également ajouter des paquets provenant ou clonés à 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 de NET_BUFFER_LIST structures 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 lorsque la demande de réception est terminée. L’extension doit définir cet indicateur dans le paramètre ReturnFlags s’il appelle NdisFReturnNetBufferLists pour renvoyer les paquets qu’il 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 obtenir les meilleures performances, les extensions doivent conserver ce regroupement en place et définir cet indicateur lorsqu’elles appellent NdisMIndicateReceiveNetBufferLists. Les extensions doivent également ajouter des paquets provenant ou clonés à 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.