Indicaciones de estado de NDIS procedentes de adaptadores de red físicos
En este tema se describe el método que usa una extensión de reenvío de conmutador extensible para originar indicaciones de estado NDIS para un adaptador de red conectado al conmutador. La extensión puede originar una indicación de estado NDIS para los siguientes tipos de adaptadores:
Uno o varios adaptadores físicos subyacentes que están enlazados al adaptador de red externo del conmutador extensible.
Por ejemplo, el adaptador de red externo se puede enlazar al borde de miniporte 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.
Un adaptador de red de máquina virtual (VM) que se expone dentro de una partición secundaria de Hyper-V y conectado a un puerto de conmutador extensible.
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 adaptadores de red físicos y de máquina virtual 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 adaptadores de red físicos y de máquina virtual para NDIS 6.30 (Windows Server 2012).
Nota En la interfaz de conmutador extensible, los controladores de filtro NDIS se conocen como extensiones y la pila de controladores se conoce como pila de controladores de conmutador extensible.
Una extensión de reenvío puede originar indicaciones de estado de descarga de hardware encapsuladas para sobrescribir controladores en la pila extensible del controlador de conmutador. Esto también permite que la extensión cambie las funcionalidades de descarga actuales del equipo subyacente de adaptadores físicos enlazados al adaptador de red externo del conmutador extensible. Cuando un equipo de adaptadores está enlazado al adaptador de red externo, solo se anuncian las funcionalidades comunes del equipo a NDIS o controladores de filtro y protocolo excesivos. La extensión puede ampliar las funcionalidades anunciadas originando indicaciones de estado encapsuladas para anunciar funcionalidades compatibles con algunos adaptadores del equipo. Por ejemplo, la extensión puede emitir una indicación de NDIS_STATUS_RECEIVE_FILTER_CURRENT_CAPABILITIES encapsulada para cambiar las funcionalidades de filtro de recepción habilitadas actualmente para todo el equipo.
Nota Solo las extensiones de reenvío pueden originar indicaciones de estado encapsuladas. Para obtener más información sobre este tipo de extensión, vea Reenvío de extensión.
Normalmente, la extensión de reenvío origina indicaciones de estado NDIS encapsuladas para cambiar las funcionalidades de descarga de hardware anunciadas del adaptador físico subyacente. Por ejemplo, la extensión puede originar indicaciones de estado para los siguientes tipos de descargas de hardware:
Seguridad del protocolo de Internet (IPsec).
Cola de máquinas virtualizadas (VMQ).
Virtualización de E/S de raíz única (SR-IOV).
La extensión de reenvío también puede originar indicaciones de estado NDIS encapsuladas para cambiar los recursos de descarga de hardware asignados a una partición secundaria de Hyper-V. A partir de NDIS 6.30, la extensión puede emitir una indicación de NDIS_STATUS_SWITCH_PORT_REMOVE_VF encapsulada para quitar el enlace entre un adaptador de red de máquina virtual y una función virtual PCI Express (PCIe) (VF). El VF se expone y admite un adaptador de red físico subyacente que admite la interfaz de virtualización de E/S raíz única (SR-IOV).
Si la extensión de reenvío origina una indicación de estado NDIS encapsulada para los recursos de descarga de hardware de un adaptador físico subyacente, debe establecer los miembros de la estructura de NDIS_SWITCH_NIC_STATUS_INDICATION de la siguiente manera:
El miembro DestinationPortId debe establecerse en NDIS_SWITCH_DEFAULT_PORT_ID.
El miembro DestinationNicIndex debe establecerse en NDIS_SWITCH_DEFAULT_NIC_INDEX
El miembro SourcePortId debe establecerse en el identificador del puerto de conmutador extensible al que está conectado el adaptador de red externo.
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 extensibles enlazado al adaptador de red externo.
Nota La extensión de reenvío también debe establecer este miembro en NDIS_SWITCH_DEFAULT_NIC_INDEX si solo se enlaza un único adaptador de red físico al adaptador de red externo.
El miembro StatusIndication debe establecerse en un puntero a una estructura de NDIS_STATUS_INDICATION . Esta estructura contiene los datos de la indicación de estado NDIS encapsulada.
Si la extensión de reenvío se origina una indicación de estado NDIS para los recursos de descarga de hardware de una partición secundaria de Hyper-V, debe establecer los miembros de la estructura de NDIS_SWITCH_NIC_STATUS_INDICATION de la siguiente manera:
Los miembros DestinationPortId y DestinationNicIndex deben establecerse en los valores correspondientes del índice del puerto y del adaptador de red para la conexión de red que usa la partición.
El miembro SourcePortId debe establecerse en NDIS_SWITCH_DEFAULT_PORT_ID.
El miembro SourceNicIndex debe establecerse en NDIS_SWITCH_DEFAULT_NIC_INDEX.
El miembro StatusIndication debe establecerse en un puntero a una estructura de NDIS_STATUS_INDICATION . Esta estructura contiene los datos de la indicación de estado NDIS encapsulada.
Cuando la extensión 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 la conexión del adaptador de red de origen o de destino. Esto garantiza que la interfaz del conmutador extensible no eliminará la conexión del adaptador de red mientras que su contador de referencia no es cero.
Cuando la extensión llama a ReferenceSwitchNic, establece los parámetros de las siguientes maneras:
Si la extensión de reenvío origina una indicación de estado NDIS encapsulada para un adaptador físico subyacente, 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 .
Si la extensión de reenvío origina una indicación de estado NDIS para una partición secundaria de Hyper-V, establece el parámetro SwitchPortId en el valor especificado para el miembro DestinationPortId . La extensión también establece el parámetro SwitchNicIndex en el valor especificado para el miembro DestinationNicIndex .
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 solicitud de OID filtrada, debe llamar a NdisFIndicateStatus dentro del contexto de la llamada a su función FilterStatus .
Después de que NdisFIndicateStatus devuelva, 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.