Reenvío de solicitudes de OID a adaptadores de red físicos
En este tema se describe cómo las solicitudes de identificador de objeto (OID) extensible de Extensiones de conmutador de Hyper-V para adaptadores físicos subyacentes a través de la ruta de acceso de control de conmutador extensible de Hyper-V. La extensión también puede originar solicitudes de OID a adaptadores de red físicos subyacentes siguiendo los métodos descritos en este tema.
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.
En la ilustración siguiente se muestra un ejemplo de un equipo de conmutador extensible para NDIS 6.40 (Windows Server 2012 R2) y versiones posteriores.
En la ilustración siguiente se muestra un ejemplo de un equipo de conmutadores extensible para NDIS 6.30 (Windows Server 2012).
Nota En la interfaz del conmutador extensible de Hyper-V, 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.
Las solicitudes OID se deben encapsular para reenviar la solicitud a un adaptador de red físico subyacente. Las solicitudes de OID se encapsulan primero dentro de una estructura de NDIS_SWITCH_NIC_OID_REQUEST . A continuación, las solicitudes OID se reenvía a través de la ruta de acceso de control de conmutador extensible mediante una solicitud de conjunto de OID de OID_SWITCH_NIC_REQUEST.
Las solicitudes de OID a los adaptadores físicos subyacentes se emiten a continuación:
Interfaz de conmutador extensible.
Las solicitudes de OID, como las solicitudes de descargas de hardware, se emiten mediante el uso excesivo de controladores de protocolo o filtro que se ejecutan en una de las siguientes opciones:
Sistema operativo de administración que se ejecuta en la partición primaria de Hyper-V.
Sistema operativo invitado que se ejecuta en la partición secundaria de Hyper-V.
Cuando el conmutador extensible recibe estas solicitudes de OID, se encapsulan y reenvían a través de la ruta de acceso de control de conmutador extensible. Cuando una extensión de reenvío recibe la solicitud OID encapsulada, puede reenviar la solicitud a un adaptador físico subyacente. Esta capacidad es especialmente útil para configurar el equipo de conmutadores extensibles para las descargas de hardware.
Por ejemplo, el controlador MUX anuncia las funciones comunes de todo el equipo de conmutadores extensibles. Sin embargo, la extensión de reenvío puede emitir solicitudes de OID para consultar o establecer las funcionalidades individuales de los adaptadores dentro del equipo. A continuación, la extensión de reenvío puede originar una indicación de estado NDIS del adaptador de red externo para notificar a los controladores sobre las funcionalidades que se aplican a todo el equipo. Para obtener más información sobre este procedimiento, vea Indicaciones de estado de NDIS de origen de adaptadores de red físicos.
Cuando la extensión de reenvío reenvía la solicitud OID a través de la ruta de acceso de control, la recibe el adaptador de red externo. En este momento, la solicitud OID se descapsula y se reenvía al adaptador de red físico especificado.
Nota A partir de Windows Server 2012, solo las solicitudes OID de descarga de hardware se encapsulan y reenvía de esta manera. Por ejemplo, las solicitudes de descarga de OID para la cola de máquinas virtuales (VMQ) o la seguridad del protocolo de Internet (IPsec) se encapsulan y reenvía a través de la ruta de acceso de control de conmutador extensible. Para obtener más información, consulte Administración de solicitudes de OID de descarga de hardware a adaptadores de red físicos.
Una extensión de reenvío.
La extensión de reenvío puede originar sus propias solicitudes OID encapsuladas y reenviarlas a un adaptador de red físico subyacente. La extensión de reenvío puede encapsular las solicitudes OID NDIS estándar. La extensión de reenvío también puede encapsular las solicitudes de OID privadas definidas por el proveedor de hardware independiente (IHV) para los adaptadores de red físicos. Esto permite una extensión de reenvío que también ha desarrollado el IHV para habilitar o deshabilitar atributos propietarios en adaptadores físicos individuales del equipo.
Además, la extensión de reenvío puede originar solicitudes OID de descarga de hardware encapsuladas para asignar recursos para una partición secundaria de Hyper-V especificada. Por ejemplo, la extensión de reenvío puede originar solicitudes OID encapsuladas de OID_RECEIVE_FILTER_ALLOCATE_QUEUE para asignar una VMQ para una partición secundaria especificada. En este caso, la extensión encapsula la solicitud como originada en el puerto de conmutador extensible y la conexión del adaptador de red asociada a la partición.
Nota La extensión de reenvío solo puede originar su propia solicitud de OID de descarga de hardware encapsulada si filtra la misma solicitud de OID que se emitió mediante controladores sobreagregar. En este caso, la extensión no debe reenviar la solicitud de OID original. En su lugar, la extensión debe llamar a NdisFOidRequestComplete para completar esta solicitud cuando NDIS llama a su FilterOidRequestComplete para completar la solicitud de OID originada.
Filtrado o captura de extensiones
Una extensión de filtrado o captura puede originar sus propias solicitudes de consulta OID encapsuladas y reenviarlas a un adaptador de red físico subyacente. Estas extensiones pueden encapsular las solicitudes de consulta OID OID estándar de NDIS o las solicitudes de consulta OID privadas definidas por el proveedor de hardware independiente (IHV) para los adaptadores de red físicos.
Nota Solo las extensiones de reenvío pueden originar solicitudes de conjunto de OID encapsuladas en adaptadores físicos subyacentes.
La extensión de reenvío debe seguir estos pasos cuando reenvía, redirige o origina una solicitud OID encapsulada para un adaptador físico subyacente:
Si la extensión de reenvío se origina en una solicitud OID, debe inicializar una estructura de NDIS_OID_REQUEST asignada por la extensión con la información relacionada con la solicitud.
Si la extensión reenvía una solicitud OID, no debe cambiar la estructura de NDIS_OID_REQUEST existente a la que hace referencia el parámetro OidRequest de la función FilterOidRequest . En su lugar, la extensión debe llamar a NdisAllocateCloneOidRequest para asignar memoria para una nueva estructura de NDIS_OID_REQUEST y copiar toda la información de la estructura NDIS_OID_REQUEST existente.
La extensión establece los miembros de una estructura de NDIS_SWITCH_NIC_OID_REQUEST asignada por la extensión en los valores siguientes:
El miembro DestinationPortId debe establecerse en el identificador del puerto de conmutador extensible al que está conectado el adaptador de red externo.
El miembro DestinationNicIndex debe establecerse en el valor de índice distinto de cero del adaptador de red físico subyacente.
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 origina una solicitud de OID de descarga de hardware para una partición secundaria de Hyper-V, el miembro SourcePortId debe establecerse en el identificador del puerto que usa la partición. Además, el miembro SourceNicIndex debe establecerse en el índice del adaptador de red para la conexión de red a ese puerto.
Si la extensión de reenvío origina una solicitud de OID estándar o privada para sus propios fines, los miembros SourcePortId y SourceNicIndex deben establecerse en cero.
Si la extensión de reenvío está reenviando o redirigiendo una solicitud de OID de descarga de hardware, debe conservar los valores de los miembros SourcePortId y SourceNicIndex establecidos por la interfaz de conmutador extensible.
El miembro OidRequest debe establecerse en un puntero a una estructura de NDIS_OID_REQUEST inicializada para la solicitud OID encapsulada. La extensión de reenvío asigna e inicializa esta estructura o usa la copia clonada de la estructura.
La extensión establece los miembros de una estructura de NDIS_OID_REQUEST asignada por la extensión en los valores siguientes:
El miembro Oid debe establecerse en OID_SWITCH_NIC_REQUEST.
El miembro InformationBuffer debe contener un puntero a un búfer que contenga los datos de solicitud de OID generados o filtrados.
El miembro InformationBufferLength debe contener la longitud, en bytes, del búfer que contiene los datos de solicitud de OID generados o filtrados.
La extensión establece los demás miembros en valores válidos para la estructura de NDIS_OID_REQUEST .
La extensión llama a ReferenceSwitchNic para incrementar un contador de referencia para el índice del adaptador de red físico de destino. Esto garantiza que la interfaz del conmutador extensible no eliminará la conexión del adaptador de red físico mientras que su contador de referencia no es cero.
Cuando la extensión llama a ReferenceSwitchNic, 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, la solicitud OID no se puede reenviar al adaptador de red físico de destino.
Si la extensión de reenvío se origina en una solicitud de OID de descarga de hardware para una partición secundaria de Hyper-V, también llama a ReferenceSwitchNic para incrementar un contador de referencia para el índice de la conexión de adaptador de red de origen asociada a la partición. Esto garantiza que la interfaz del conmutador extensible no eliminará la conexión del adaptador de red físico mientras que su contador de referencia no es 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, la solicitud OID no se puede reenviar al adaptador de red físico de destino.
La extensión llama a NdisFOidRequest para reenviar la solicitud OID encapsulada al puerto de conmutador extensible de destino y al adaptador de red especificados.
Nota Si la extensión reenvía una solicitud de OID filtrada, debe llamar a NdisFOidRequest en el contexto de la llamada a su función FilterOidRequest . Si la extensión reenvía las solicitudes de OID que ha generado, llama a NdisFIndicateStatus mientras se encuentra en los estados En ejecución, Reinicio, Pausado y Pausa . Para obtener más información sobre estos estados, vea Filtrar estados y operaciones del módulo.
Cuando NDIS llama a la función FilterOidRequestComplete , la extensión llama a DereferenceSwitchNic para borrar el contador de referencia para el índice del adaptador de red físico de destino.
Si la extensión de reenvío originó una solicitud de OID de descarga de hardware para una partición secundaria de Hyper-V, también llama a DereferenceSwitchNic para borrar el contador de referencia para el índice de la conexión del adaptador de red de origen para el adaptador.
En ambos casos, 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 cómo la extensión emite solicitudes de OID, consulte Generación de solicitudes de OID a partir de un controlador de filtro NDIS.
Para obtener más información sobre los controladores MUX, consulte Controladores intermedios de NDIS MUX.