Partager via


Instructions de gestion des paquets pour le chemin de données de commutateur extensible

Cette rubrique décrit les instructions qui Hyper-V extensions de commutateur extensible doivent suivre pour gérer les paquets obtenus sur le chemin de données de commutateur extensible.

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. Pour plus d’informations sur les extensions, consultez Hyper-V Extensions de commutateur extensibles.

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.

Les extensions doivent suivre ces instructions pour la gestion des paquets dans le chemin de données de commutateur extensible :

  • Les extensions qui proviennent des paquets doivent appeler NdisFSendNetBufferLists pour lancer une demande d’envoi sur le chemin de données d’entrée. Cette opération doit être effectuée de cette façon pour permettre le transfert approprié du paquet via le commutateur extensible.

  • Une extension de capture peut surveiller les paquets sur le chemin des données d'entrée et de sortie extensible du commutateur. Toutefois, ce type d’extension doit toujours transférer des paquets et ne doit pas supprimer les paquets. En outre, l’extension de capture ne doit pas modifier les données de paquet avant de transférer le paquet.

  • Sur le chemin de données d'entrée du commutateur extensible, les extensions de filtrage et de transfert peuvent effectuer les opérations suivantes :

    • Le filtrage des extensions peut filtrer le trafic de paquets et appliquer uniquement des stratégies de port ou de commutateur personnalisées pour la remise de paquets via le commutateur extensible. Lorsque l’extension filtre les paquets dans le chemin de données d’entrée, elle ne peut appliquer que des règles de filtrage basées uniquement sur le port source et la connexion de carte réseau à partir de laquelle le paquet provient. Ces informations sont stockées dans les données OOB de la structure NET_BUFFER_LIST d’un paquet et peuvent être obtenues à l’aide de la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .

      Note Les paquets obtenus sur le chemin de données d’entrée ne contiennent pas de ports de destination. Le filtrage des paquets basés sur les ports de destination ne peut être effectué que sur les paquets obtenus sur le chemin de données de sortie.

    • Les extensions de transfert peuvent filtrer le trafic de paquets et appliquer des stratégies de port ou de commutateur personnalisées et standard pour la remise de paquets via le commutateur extensible. Lorsque l’extension de transfert filtre les paquets dans le chemin de données d’entrée, elle applique des règles de filtrage basées sur le port source ainsi que les ports de destination que l’extension de transfert affecte au paquet.

  • Sur le chemin de données de sortie du commutateur extensible, les extensions de filtrage et de transfert peuvent effectuer les opérations suivantes :

    • Le filtrage des extensions peut filtrer le trafic de paquets et appliquer uniquement des stratégies de port ou de commutateur personnalisées pour la remise de paquets via le commutateur extensible. Lorsque l’extension de filtrage filtre les paquets dans le chemin de données de sortie, elle peut appliquer des règles de filtrage uniquement en fonction des ports de destination d’un paquet.

      Les données de port de destination sont stockées dans les données OOB de la structure NET_BUFFER_LIST d’un paquet. Les extensions obtiennent ces informations en appelant la fonction GetNetBufferListDestinations .

    • Les extensions de transfert peuvent filtrer le trafic de paquets et appliquer des stratégies de port ou de commutateur personnalisées et standard pour la remise de paquets via le commutateur extensible. Lorsque l’extension de transfert filtre les paquets dans le chemin de données de sortie, elle peut appliquer des règles de filtrage basées sur les ports source ou de destination d’un paquet.

    • En fonction des stratégies appliquées sur un paquet, l’extension de filtrage ou de transfert peut exclure la remise du paquet à une ou plusieurs destinations. Pour plus d’informations sur cette procédure, consultez Exclusion de la remise de paquets aux ports de destination de commutateur extensible.

      En fonction des stratégies appliquées sur un paquet, l’extension de transfert peut exclure la remise du paquet à une ou plusieurs destinations. Pour plus d’informations, consultez Transfert hybride.

  • Sur le chemin de données de sortie du commutateur extensible, le filtrage et le transfert des extensions ne doivent pas effectuer les opérations suivantes :

    • Modifiez les données de paquet avant de transférer le paquet sur le chemin de données de sortie.

      Si une extension de filtrage doit modifier les données d’un paquet, elle doit d’abord cloner le paquet sans conserver les destinations de port. Ensuite, l’extension doit injecter le paquet modifié dans le chemin de données d’entrée. Cela permet aux extensions sous-jacentes d’appliquer des stratégies sur le paquet modifié et l’extension de transfert peut ajouter des destinations de port.

      Si l’extension de transfert doit modifier les données d’un paquet, elle doit d’abord cloner le paquet avant d’affecter des destinations de port. Une fois le paquet modifié et les destinations de port affectées, l’extension doit injecter le paquet modifié dans le chemin de données d’entrée.

      Pour plus d’informations, consultez Clonage du trafic de paquets.

      Note Si l’extension clone un paquet obtenu sur le chemin de données de sortie, il peut injecter le nouveau paquet dans le chemin de données de sortie uniquement s’il n’a pas modifié les données de paquet et a conservé les données de port de destination d’origine.

    • Ajoutez des ports de destination au paquet avant de transférer le paquet.

      Note Les extensions de transfert sont autorisées à ajouter des ports de destination aux paquets obtenus sur le chemin de données d’entrée.

    • Injectez des paquets de données nouveaux ou clonés dans le chemin de données de sortie.

  • Dans le chemin de données NDIS standard, les données OOB de commutateur non extensible ont souvent des formats différents selon que le paquet est indiqué en tant qu’envoi ou réception. Par exemple, l'information OOB NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO est une union de structures spécifiques à l’envoi et à la réception.

    Dans le chemin de données du commutateur extensible, tous les paquets passent par la pile des pilotes d'extension, à la fois pour les envois et pour les réceptions. En raison de cela, les données OOB du commutateur non extensible dans la structure NET_BUFFER_LIST du paquet seront au format d'envoi ou de réception pendant toute la durée du flux à travers la pile des pilotes.

    Le format de ces données OOB dépend du port de commutateur extensible source à partir duquel le paquet est arrivé au commutateur extensible. Si le port source est connecté à l'adaptateur réseau externe, les données OOB du commutateur non extensible seront dans un format de réception. Pour les autres ports, ces données OOB sont dans un format d’envoi.

    Note Si l’extension clone la structure NET_BUFFER_LIST d’un paquet, elle doit prendre en compte les données OOB non extensibles si elle ajoute ou modifie les données OOB. L’extension doit appeler CopyNetBufferListInfo pour copier les données OOB associées au chemin de données de commutateur extensible d’un paquet source vers un paquet cloné. Cette fonction conserve le format d’envoi ou de réception OOB lorsque les données sont copiées dans le paquet cloné.

  • Si une extension supprime un paquet à partir de l’entrée du chemin de données de sortie, elle doit appeler ReportFilteredNetBufferLists. Lorsque cette fonction est appelée, l’interface de commutateur extensible incrémente les compteurs et consigne les événements pour les paquets supprimés ou exclus.