Reenvío de paquetes a puertos de conmutador extensible de Hyper-V
En esta página se describe cómo una extensión de reenvío extensible de conmutadores de Hyper-V puede reenviar paquetes a uno o varios puertos. Este tipo de extensión también puede reenviar paquetes a adaptadores de red individuales que están conectados al adaptador de red externo de conmutador extensible.
Nota Solo la extensión de reenvío de conmutador extensible o el propio conmutador extensible pueden reenviar paquetes a puertos de conmutador extensibles.
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.
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, consulte Extensiones de conmutador extensible de Hyper-V.
Si se instala y habilita una extensión de reenvío en la pila de controladores de conmutador extensible, es responsable de tomar decisiones de reenvío para cada paquete que obtiene en la ruta de acceso de datos de entrada extensible del conmutador. En función de estas decisiones de reenvío, la extensión agrega puertos de destino a la matriz de puertos de destino en los datos fuera de banda (OOB) de la estructura de NET_BUFFER_LIST del paquete. Una vez que el paquete ha completado su recorrido de la ruta de acceso de datos del conmutador extensible, la interfaz de conmutador extensible entrega el paquete a los puertos de destino especificados.
Nota Si una extensión de reenvío no está instalada o habilitada, el conmutador extensible toma las decisiones de reenvío para los paquetes que obtiene de la ruta de acceso de datos de entrada. El modificador agrega los puertos de destino a los datos OOB de la estructura de NET_BUFFER_LIST del paquete antes de reenviar el paquete a la ruta de acceso de datos de salida del conmutador extensible.
Nota Si el paquete es un paquete NVGRE, la extensión de reenvío puede agregar puertos de destino a la matriz de puertos de destino. Sin embargo, el componente virtualización de red de Hyper-V (HNV) del conmutador extensible es responsable de determinar los puertos de destino y reenviar el paquete. Para más información, consulte Reenvío híbrido.
La extensión de reenvío solo puede agregar destinos de puerto a los paquetes obtenidos de la ruta de acceso de datos de entrada. Una vez que el paquete se reenvía a la ruta de acceso de datos de salida, las extensiones de filtrado y reenvío pueden excluir la entrega de paquetes a puertos de conmutador extensibles. Para obtener más información, vea Exclusión de la entrega de paquetes a puertos de destino de conmutador extensible.
Dentro de los datos OOB de la estructura NET_BUFFER_LIST de un paquete, los datos de los puertos de destino se encuentran en una estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Cada elemento de la matriz define un puerto de destino y tiene el formato de estructura NDIS_SWITCH_PORT_DESTINATION .
La extensión de reenvío puede llamar a las siguientes funciones de controlador de conmutador extensible de Hyper-V para administrar la estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY y sus elementos de NDIS_SWITCH_PORT_DESTINATION :
AddNetBufferListDestination
Esta función agrega un único puerto de destino a la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY en los datos OOB del paquete.
GetNetBufferListDestinations
Esta función devuelve un puntero a la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY en los datos OOB de un paquete.
GrowNetBufferListDestinations
Esta función agrega más elementos de puerto de destino a la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY de los datos OOB de un paquete.
UpdateNetBufferListDestinations
Esta función confirma las modificaciones realizadas para agregar o excluir uno o varios puertos de destino para un paquete. Estos cambios se confirman en la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY en los datos OOB del paquete.
Cuando se llama a la función FilterSendNetBufferLists de la extensión de reenvío, el parámetro NetBufferList contiene un puntero a una lista vinculada de estructuras de NET_BUFFER_LIST . Cada una de estas estructuras especifica un paquete obtenido de la ruta de acceso de datos de entrada.
Para cada estructura de NET_BUFFER_LIST de esta lista, la extensión de reenvío agrega puertos de destino para el paquete siguiendo estos pasos:
La extensión toma decisiones de reenvío para el paquete en función de varios tipos de criterios. Estos criterios incluyen lo siguiente:
Criterios de directiva basados en el puerto de origen del paquete y la conexión del adaptador de red. La extensión de reenvío obtiene esta información mediante la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
Criterios de directiva para un puerto de conmutador extensible basado en los datos de carga del paquete. Por ejemplo, una directiva para un puerto de conmutador extensible puede incluir un filtro para permitir la entrega de solo paquetes ip versión 4 (IPv4).
Nota Si el paquete es un paquete NVGRE, el componente HNV del conmutador extensible es responsable de reenviar el paquete. Sin embargo, la extensión de reenvío puede aplicar sus propios criterios de directiva en las rutas de acceso de entrada y salida. Para más información, consulte Reenvío híbrido.
Si la extensión determina que el paquete se puede reenviar a uno o varios puertos de conmutador extensibles, debe agregar puertos de destino a los datos OOB 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 Si el paquete es un paquete NVGRE, la extensión de reenvío no es necesaria para agregar puertos de destino. Para más información, consulte Reenvío híbrido.
Si la extensión determina que el paquete no se puede reenviar a ningún puerto de conmutador extensible, debe quitar el paquete.
Nota Esto no es true si el paquete es un paquete NVGRE. Para más información, consulte Reenvío híbrido.
Si la extensión ha agregado uno o varios puertos de destino para el paquete, debe llamar a NdisFSendNetBufferLists para reenviar el paquete en la ruta de acceso de datos de salida.
Nota Si el paquete es un paquete NVGRE, el componente HNV del conmutador extensible es responsable de reenviar el paquete. Para más información, consulte Reenvío híbrido.
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.