Modificación de los datos de puerto de origen de conmutador extensible de un paquete

El puerto de origen del conmutador extensible de Hyper-V lo especifica el miembro SourcePortId en la estructura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO . Esta estructura se encuentra en el contexto de reenvío fuera de banda (OOB) de la estructura NET_BUFFER_LIST del paquete. Para obtener más información sobre este contexto, consulte Contexto de reenvío de conmutador extensible de Hyper-V.

La extensión de conmutador extensible debe seguir estas directrices para modificar el identificador de puerto de origen de un paquete:

  • La extensión de conmutador extensible debe llamar a SetNetBufferListSource para modificar el puerto de origen de un paquete. La extensión no debe modificar directamente el miembro SourcePortId de la estructura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .

  • Si la extensión crea o clona un paquete, debe llamar a la función AllocateNetBufferListForwardingContext después de llamar a NdisAllocateNetBufferList. Esta función asigna un área de contexto de conmutador extensible para los datos de OOB que se usan para reenviar información para el paquete.

    Cuando la extensión llama a AllocateNetBufferListForwardingContext, el miembro SourcePortId se establece en NDIS_SWITCH_DEFAULT_PORT_ID. Esto especifica que el paquete se originó en una extensión en lugar de llegar a un puerto de conmutador extensible.

    Los paquetes con un puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID se tratan mediante la ruta de acceso de datos de extensión de conmutador extensible como con privilegios y confianza. Este tráfico no debe estar sujeto a las directivas que se aplican a los paquetes de otros puertos de origen. Por ejemplo, los paquetes con un identificador de puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID omitir las directivas de conmutador extensible integradas que aplica el borde de minipuerto subyacente del conmutador extensible. Estas directivas incluyen listas de control de acceso (ACL) y calidad de servicio (QoS).

    Cuando la extensión origina el tráfico de paquetes, debe usar el puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID con moderación y cuidado. En la mayoría de los casos, la extensión debe modificar el identificador de puerto de origen a un puerto activo en el conmutador extensible. Esto permite aplicar las directivas de ese puerto al paquete.

    Sin embargo, puede haber situaciones en las que la extensión tenga que usar el puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID para los paquetes que origina. Por ejemplo, si la extensión origina un paquete de control que se debe enviar a su destino en la red física o virtual, debe usar NDIS_SWITCH_DEFAULT_PORT_ID para el identificador de puerto de origen. Esto garantiza que el paquete no se filtrará ni rechazará mediante extensiones subyacentes en la pila de controladores de conmutador extensible.