Compartir a través de


Marcas de envío y recepción de conmutador extensible de Hyper-V

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

El tráfico de paquetes que se mueve a través de la ruta de acceso de datos de conmutador extensible de Hyper-V se obtiene mediante extensiones de la siguiente manera:

  • Una extensión obtiene un paquete de la ruta de acceso de datos de entrada cuando se llama a su función FilterSendNetBufferLists . La extensión reenvía el paquete a las extensiones subyacentes en la ruta de acceso de datos de entrada llamando a NdisFSendNetBufferLists. Las extensiones de filtrado y reenvío también pueden quitar el paquete de la ruta de acceso de datos de entrada llamando a NdisFSendNetBufferListsComplete.

  • Una extensión obtiene un paquete de la ruta de acceso de datos de salida cuando se llama a su función FilterReceiveNetBufferLists . La extensión reenvía el paquete a extensiones excesivas en la ruta de acceso de datos de salida llamando a NdisFIndicateReceiveNetBufferLists. Las extensiones de filtrado y reenvío también pueden quitar el paquete de la ruta de acceso de datos de salida llamando a NdisFReturnNetBufferLists.

Las marcas siguientes se pueden establecer en el parámetro SendFlags de FilterSendNetBufferLists o NdisFSendNetBufferLists:

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Si se establece esta marca, todos los paquetes de una lista vinculada de NET_BUFFER_LIST estructuras originadas en el mismo puerto de origen de conmutador extensible de Hyper-V.

Cuando NDIS llama a FilterSendNetBufferLists, establecerá esta marca si la interfaz extensible del conmutador extensible ha agrupado varios paquetes desde el mismo puerto de origen. Para obtener el mejor rendimiento, las extensiones deben mantener esta agrupación en su lugar y establecer esta marca cuando llama a NdisFSendNetBufferLists. La extensión también puede agregar paquetes originados o clonados a la lista vinculada de estructuras de NET_BUFFER_LIST si la extensión usa el mismo puerto de origen que los demás paquetes de la lista.

Nota Si cada paquete de la lista vinculada de estructuras de NET_BUFFER_LIST usa el mismo puerto de origen, la extensión debe establecer la marca de NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro SendCompleteFlags de NdisFSendNetBufferListsComplete cuando complete la solicitud de envío.

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Si se establece esta marca, todos los paquetes de una lista vinculada de estructuras de NET_BUFFER_LIST se reenviarán al mismo puerto de destino de conmutador extensible.

Una extensión de reenvío puede usar esta marca para una lista vinculada de estructuras de NET_BUFFER_LIST que reenvía en la ruta de acceso de datos de entrada después de determinar los puertos de destino de cada paquete. Esta marca se consume y quita mediante el borde de minipuerto subyacente del conmutador extensible antes de reenviar los paquetes hacia arriba la ruta de acceso de datos de salida.

La captura y el filtrado de extensiones no pueden usar esta marca.

Nota La extensión de reenvío solo determina los puertos de destino del paquete para los paquetes que no son NVGRE. Si el paquete es un paquete NVGRE, el componente Virtualización de red de Hyper-V (HNV) determina los puertos de destino del paquete y reenvía el paquete. Para más información, consulte Reenvío híbrido.

Para obtener el mejor rendimiento, las extensiones de reenvío deben establecer esta marca si todos los paquetes de la lista vinculada se reenvía al mismo puerto de destino. Al establecer esta marca, la extensión confirma que todos los paquetes de la lista vinculada tienen los mismos elementos de puerto de destino en el contexto de reenvío extensible del conmutador.

Nota La extensión de reenvío no debe establecer esta marca para una lista vinculada de paquetes que tienen varios puertos de destino.

Las marcas siguientes se pueden establecer en el parámetro ReceiveFlags de FilterReceiveNetBufferLists o NdisFIndicateReceiveNetBufferLists:

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Si se establece esta marca, todos los paquetes de una lista vinculada de NET_BUFFER_LIST estructuras originadas en el mismo puerto de origen de conmutador extensible de Hyper-V.

Cuando NDIS llama a FilterReceiveNetBufferLists, establecerá esta marca si el conmutador extensible ha agrupado varios paquetes desde el mismo puerto de origen. Para obtener el mejor rendimiento, las extensiones deben mantener esta agrupación en su lugar y establecer esta marca cuando llama a NdisMIndicateReceiveNetBufferLists. Las extensiones también deben agregar paquetes originados o clonados a la lista vinculada de estructuras de NET_BUFFER_LIST si el paquete tiene el mismo puerto de origen que los demás paquetes de la lista.

Nota Si cada paquete de la lista vinculada de NET_BUFFER_LIST estructuras usa el mismo puerto de origen, la extensión debe establecer la marca NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE en el parámetro ReturnFlags de FilterReturnNetBufferLists cuando se complete la solicitud de recepción. La extensión debe establecer esta marca en el parámetro ReturnFlags si llama a NdisFReturnNetBufferLists para devolver paquetes que no se originaron ni clonaron.

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Si se establece esta marca, todos los paquetes de una lista vinculada de estructuras de NET_BUFFER_LIST se reenviarán al mismo puerto de destino de conmutador extensible.

Cuando NDIS llama a FilterReceiveNetBufferLists, establecerá esta marca si el conmutador extensible ha agrupado varios paquetes que tienen los mismos puertos de destino. Para obtener el mejor rendimiento, las extensiones deben mantener esta agrupación en su lugar y establecer esta marca cuando llama a NdisMIndicateReceiveNetBufferLists. Las extensiones también deben agregar paquetes originados o clonados a la lista vinculada de estructuras de NET_BUFFER_LIST si el paquete tiene los mismos puertos de destino que los demás paquetes de la lista.

Nota Cuando una extensión llama a NdisFIndicateReceiveNetBufferLists, no debe establecer la marca NDIS_RECEIVE_FLAGS_RESOURCES en el parámetro ReceiveFlags . La interfaz de conmutador extensible omite esta marca y completará la indicación de recepción llamando a FilterReturnNetBufferLists.