Compartir a través de


Tráfico de paquetes de origen

En este tema se describe cómo las extensiones de Hyper-V originan nuevos paquetes e inyecten en la ruta de acceso de datos de conmutador extensible.

Nota En esta página se supone que está familiarizado con la información y los diagramas de Información general del conmutador extensible de Hyper-V y elreenvío híbrido.

Nota En la interfaz de conmutador extensible, los controladores de filtro NDIS se conocen como extensiones de conmutador extensible y la pila de controladores se conoce como pila de controladores de conmutador extensible. Para obtener más información sobre las extensiones, vea Extensiones de conmutador extensible de Hyper-V.

Las extensiones de conmutador extensible solo pueden insertar nuevos paquetes en la ruta de acceso de datos de entrada del conmutador extensible. Esto garantiza que la interfaz de conmutador extensible pueda filtrar y reenviar estos paquetes correctamente. Las extensiones deben seguir estas instrucciones para insertar nuevos paquetes en la ruta de acceso de datos de entrada:

  • La extensión debe asignar primero una estructura de NET_BUFFER_LIST para un nuevo paquete.

  • Una vez que la extensión asigna una estructura de NET_BUFFER_LIST para un nuevo paquete, debe llamar a la función de controlador AllocateNetBufferListForwardingContext para asignar el contexto de reenvío de conmutador extensible para el paquete.

    El contexto de reenvío reside en los datos fuera de banda (OOB) del paquete. Contiene información de reenvío para el paquete, como su puerto de origen y una matriz de uno o varios puertos de destino.

    Para obtener más información sobre el contexto de reenvío, vea Contexto de reenvío de conmutador extensible de Hyper-V.

  • Después de que la extensión llame a AllocateNetBufferListForwardingContext, el puerto de origen del paquete se establecerá en NDIS_SWITCH_DEFAULT_PORT_ID. Un paquete con un identificador de puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID es de confianza y omite las directivas de puerto de conmutador extensible, como listas de control de acceso (ACL) y calidad de servicio (QoS).

    La extensión puede querer que el paquete se trate como si se origina en un puerto determinado. Esto permite que las directivas de ese puerto se apliquen al paquete. La extensión llama a SetNetBufferListSource para cambiar el puerto de origen del paquete.

    Sin embargo, puede haber situaciones en las que la extensión quiera asignar el identificador de puerto de origen del paquete a NDIS_SWITCH_DEFAULT_PORT_ID. Por ejemplo, la extensión puede querer establecer el identificador de puerto de origen en NDIS_SWITCH_DEFAULT_PORT_ID para paquetes de control propietarios que se envían a un dispositivo de la red externa.

  • Si la extensión de reenvío envía un nuevo paquete en la ruta de acceso de datos de entrada, debe determinar los puertos de destino del paquete. Para obtener más información sobre este procedimiento, vea Agregar datos de puerto de destino de conmutador extensible a un paquete.

    Nota Una extensión de captura o filtrado no puede agregar nuevos puertos de destino al nuevo paquete.

  • Cuando la extensión crea un nuevo paquete, los datos del paquete se encuentran en la memoria local o de confianza en el sistema operativo primario de la partición primaria de Hyper-V. La partición secundaria no puede acceder a esta memoria. Por lo tanto, se considera "seguro" de las actualizaciones no sincronizadas por el sistema operativo invitado que se ejecuta en esa partición.

    La extensión debe obtener la unión de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO para el nuevo paquete mediante la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . La extensión debe establecer el miembro IsPacketDataSafe en TRUE. Esto especifica que todos los datos del paquete se encuentran en memoria de confianza.

  • Cuando la extensión llama a NdisFSendNetBufferLists para insertar el paquete en la ruta de acceso de datos de entrada, debe establecer el parámetro Flags con la configuración de la marca de conmutador extensible adecuada. Para obtener más información sobre esta configuración de marca, vea Hyper-V Extensible Switch Send and Receive Flags.

  • Cuando NDIS llama a la función FilterSendNetBufferListsComplete de la extensión para completar la solicitud de envío del nuevo paquete, la extensión debe llamar a FreeNetBufferListForwardingContext para liberar el contexto de reenvío asignado. La extensión debe hacerlo antes de liberar o reutilizar la estructura de NET_BUFFER_LIST para el paquete.

Para obtener más información sobre las rutas de acceso de datos de entrada y salida extensibles del conmutador, consulte Ruta de acceso de datos de conmutador extensible de Hyper-V.