Compartir a través de


Reenvío de paquetes a adaptadores de red físicos

Nota En esta página se supone que está familiarizado con la información y los diagramas de las páginas siguientes:

En esta página se describe cómo las extensiones de reenvío extensible de conmutadores de Hyper-V pueden reenviar solicitudes de paquetes a adaptadores físicos subyacentes. Uno o varios adaptadores de red físicos se pueden enlazar al adaptador de red externo del conmutador extensible.

Por ejemplo, el adaptador de red externo de conmutador extensible se puede enlazar al borde de miniporte virtual de un controlador intermedio de multiplexador NDIS (MUX). El propio controlador intermedio MUX se puede enlazar a un equipo de una o varias redes físicas en el host. Esta configuración se conoce como un equipo de conmutadores extensible. Para obtener más información sobre los equipos de conmutadores extensibles, consulte Tipos de configuraciones de adaptadores de red físicos.

En esta configuración, las extensiones de conmutador extensible se exponen a todos los adaptadores de red del equipo de conmutadores extensibles. Esto permite una extensión de reenvío en la pila de controladores de conmutador extensible para administrar la configuración y el uso de adaptadores de red individuales en el equipo. Por ejemplo, la extensión puede proporcionar compatibilidad con una solución de conmutación por error de equilibrio de carga (LBFO) a través del equipo reenviando paquetes salientes a adaptadores individuales. Por ejemplo, la extensión se conoce como proveedor de formación de equipos. Para obtener más información sobre los proveedores de formación de equipos, consulte Teaming Provider Extensions.

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, a menos que el paquete sea un paquete NVGRE. (Para obtener más información sobre los paquetes NVGRE, consulte Reenvío híbrido). En función de estas decisiones de reenvío, la extensión puede agregar puertos de destino a 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 propio 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.

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. Dentro de los datos OOB de la estructura de NET_BUFFER_LIST de cada paquete, los datos de los puertos de destino se encuentran en una estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . La extensión obtiene la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY y sus elementos llamando a GetNetBufferListDestinations.

Nota Para mejorar el rendimiento, una extensión de reenvío puede llamar a la función GrowNetBufferListDestinations en lugar de GetNetBufferListDestinations para obtener un puntero a la estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . La extensión lo hace si determina que necesita elementos de matriz adicionales en los datos OOB del paquete para los puertos de destino. Para obtener más información, vea Agregar datos de puerto de destino de conmutador extensible a un paquete.

Cada elemento de la matriz NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY define un puerto de destino y tiene el formato de estructura NDIS_SWITCH_PORT_DESTINATION . Esta estructura contiene los siguientes miembros:

  • El miembro PortId contiene un valor que especifica el puerto de destino en el conmutador extensible.

  • El miembro NicIndex especifica el índice del adaptador de red que está conectado al puerto de conmutador extensible especificado por el miembro PortId .

    Para obtener más información sobre estos valores de índice, vea Valores de índice del adaptador de red.

Si la extensión de reenvío agrega un puerto de destino que está conectado al adaptador de red externo, la extensión puede especificar el índice de un adaptador de red físico subyacente. Por ejemplo, la extensión podría funcionar como proveedor de formación de equipos para la compatibilidad con LBFO a través de un equipo de conmutadores extensible. Esto permite que la extensión equilibre la sobrecarga del tráfico mediante el reenvío de solicitudes a diferentes adaptadores del equipo.

La extensión de reenvío debe seguir estas directrices cuando agrega o modifica una estructura de NDIS_SWITCH_PORT_DESTINATION para reenviar solicitudes a un adaptador de red físico subyacente:

  • Si el miembro PortId especifica el puerto de conmutador extensible al que está conectado el adaptador de red externo, la extensión debe establecer el miembro NicIndex en uno de los siguientes valores de índice:

    • Si solo un adaptador de red físico está enlazado al adaptador de red externo, la extensión debe establecer el miembro NicIndex en NDIS_SWITCH_DEFAULT_NIC_INDEX o uno.

    • Si hay varios adaptadores de red físicos enlazados al adaptador de red externo, la extensión debe establecer el miembro NicIndex en el valor de índice distinto de cero del adaptador de red de destino en el equipo de conmutador extensible.

    Nota Si el miembro PortId no especifica el puerto de conmutador extensible al que está conectado el adaptador de red externo, la extensión debe establecer el miembro NicIndex en NDIS_SWITCH_DEFAULT_NIC_INDEX.

  • Una vez que la extensión ha agregado todos los puertos de destino para el paquete, debe llamar a NdisFSendNetBufferLists para reenviar el paquete en la ruta de acceso de datos de entrada.

Para obtener más información sobre cómo agregar puertos de destino a un paquete, consulte Reenvío de paquetes a puertos de conmutador extensible de Hyper-V.

Para obtener más información sobre la ruta de acceso de datos de salida, consulte Ruta de acceso de datos de conmutador extensible de Hyper-V.