Reenvío de indicaciones de estado de NDIS desde adaptadores de red físicos
En este tema se describe el método que usan las extensiones de reenvío de conmutador extensible para reenviar indicaciones de estado NDIS desde un adaptador físico subyacente. Uno o varios adaptadores físicos subyacentes se pueden enlazar al adaptador de red externo del conmutador extensible de Hyper-V.
Por ejemplo, el adaptador de red externo se puede enlazar al borde de minipuerto virtual de un controlador intermedio de multiplexador NDIS (MUX). El controlador MUX está enlazado a un equipo de una o varias redes físicas en el host. Esta configuración se conoce como un equipo de conmutadores extensible.
En esta configuración, una extensión de conmutador extensible se expone a todos los adaptadores de red del equipo. Esto permite que la extensión administre la configuración y el uso de adaptadores de red individuales en el equipo. Por ejemplo, una extensión de reenvío 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. Una extensión de reenvío que administra un equipo de conmutadores extensible 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.
En la ilustración siguiente se muestra la ruta de acceso de control extensible de conmutador de Hyper-V para las indicaciones de estado NDIS de los adaptadores de red físicos subyacentes para NDIS 6.40 (Windows Server 2012 R2) y versiones posteriores.
En la ilustración siguiente se muestra la ruta de acceso de control extensible de conmutador de Hyper-V para las indicaciones de estado NDIS de los adaptadores de red físicos subyacentes para NDIS 6.30 (Windows Server 2012).
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.
La interfaz de conmutador extensible reenvía las indicaciones de estado NDIS generadas por los adaptadores físicos subyacentes. Si un adaptador de red externo está enlazado a un equipo de conmutadores extensible, la indicación de estado NDIS se origina en el borde del adaptador virtual de un controlador MUX. De lo contrario, la indicación de estado se origina en el único adaptador de red físico enlazado al adaptador de red externo.
Cuando una indicación de estado NDIS llega a la interfaz de conmutador extensible, encapsula la indicación dentro de una estructura de NDIS_SWITCH_NIC_STATUS_INDICATION . A continuación, el borde de minipuerto del conmutador extensible emite una NDIS_STATUS_SWITCH_NIC_STATUS indicación de que contiene esta estructura.
Una vez que la extensión de reenvío recibe la indicación de estado NDIS, puede reenviar los datos de indicación original o modificarlos antes de reenviar la indicación.
Nota Solo las extensiones de reenvío pueden modificar los datos antes de reenviar la indicación de estado. Para obtener más información sobre este tipo de extensión, vea Reenvío de extensión.
Una extensión de reenvío puede modificar y reenviar indicaciones de estado de cualquier adaptador físico subyacente enlazado al adaptador de red externo del conmutador extensible. Normalmente, la extensión emite estas indicaciones de estado para cambiar las funcionalidades de descarga de hardware anunciadas del adaptador físico subyacente. Por ejemplo, la extensión puede modificar y reenviar indicaciones de estado para los siguientes tipos de descargas de hardware:
Protocolo de seguridad de Internet (IPSec)
Cola de máquinas virtualizadas (VMQ)
Virtualización de E/S raíz única (SR-IOV)
Si la extensión de reenvío reenvía una indicación de estado NDIS, debe establecer los miembros de la estructura NDIS_SWITCH_NIC_STATUS_INDICATION de la siguiente manera:
El miembro SourcePortId debe establecerse en el identificador del puerto al que está conectado el adaptador de red externo. El adaptador de red externo está enlazado a uno o varios adaptadores físicos. Para obtener más información, consulte Adaptadores de red externos.
El miembro SourceNicIndex debe establecerse en NDIS_SWITCH_DEFAULT_NIC_INDEX. Esto permite que la indicación de estado se interprete como originada por todo el equipo de conmutadores extensible que está enlazado al adaptador de red externo.
El miembro DestinationPortId debe establecerse en NDIS_SWITCH_DEFAULT_PORT_ID.
El miembro DestinationNicIndex debe establecerse en NDIS_SWITCH_DEFAULT_NIC_INDEX.
El miembro StatusIndication debe establecerse en un puntero a una estructura NDIS_STATUS_INDICATION . Esta estructura contiene los datos de la indicación de estado NDIS encapsulada.
Cuando una extensión de reenvío emite la indicación de estado NDIS encapsulada, debe seguir estos pasos:
La extensión llama a ReferenceSwitchNic para incrementar un contador de referencia para el adaptador de red externo. Esto garantiza que la interfaz de conmutador extensible no eliminará la conexión del adaptador de red mientras que su contador de referencia es distinto de cero.
Cuando la extensión llama a ReferenceSwitchNic, establece el parámetro SwitchPortId en el valor especificado para el miembro SourcePortId . La extensión también establece el parámetro SwitchNicIndex en el valor especificado para el miembro SourceNicIndex .
Nota Si ReferenceSwitchNic no devuelve NDIS_STATUS_SUCCESS, no se puede emitir la indicación de estado NDIS encapsulada.
La extensión llama a NdisFIndicateStatus para reenviar la notificación de estado encapsulada.
Nota Si la extensión reenvía una indicación de estado NDIS encapsulada, debe llamar a NdisFIndicateStatus dentro del contexto de la llamada a su función FilterStatus .
Después de que se devuelva NdisFIndicateStatus , la extensión llama a DereferenceSwitchNic para borrar el contador de referencia para la conexión del adaptador de red de origen o de destino. La extensión establece los parámetros SwitchPortId y SwitchNicIndex en los mismos valores que usó en la llamada a ReferenceSwitchNic.
Para obtener más información sobre los controladores MUX, consulte Controladores intermedios de NDIS MUX.