Compartir a través de


Secuencia de inicialización de función virtual

Un adaptador de red que admita la virtualización de E/S raíz única (SR-IOV) debe ser capaz de admitir los siguientes componentes de hardware:

  • Función física de PCI Express (PCIe) (PF). El PF siempre existe en el adaptador de red y está conectado a la partición primaria de Hyper-V.

    Para obtener más información sobre este componente de hardware, vea SR-IOV Physical Function (PF).

  • Una o varias funciones virtuales PCIe (VF). Cada VF debe inicializarse y adjuntarse a una partición secundaria de Hyper-V antes de que los componentes de red del sistema operativo invitado puedan enviar o recibir paquetes a través del VF.

    Para obtener más información sobre este componente de hardware, consulte SR-IOV Virtual Functions (VFs).

El controlador de minipuerto PF, que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V, inicializa y asigna recursos para un VF en el adaptador de red SR-IOV. Después de que NDIS llame a la función MiniportInitializeEx del controlador de miniporte PF, NDIS y la pila de virtualización pueden emitir solicitudes de identificador de objeto (OID) al controlador de minipuerto PF para hacer lo siguiente:

  • Cree un conmutador NIC en el adaptador de red. El conmutador de NIC conecta el tráfico de red entre las máquinas virtuales, PF y el puerto de red físico.

    Para obtener más información, consulte Conmutadores NIC.

    Nota A partir de Windows Server 2012, la interfaz SR-IOV solo admite un conmutador NIC en el adaptador de red. Este modificador se conoce como el conmutador NIC predeterminado, al que hace referencia el identificador NDIS_DEFAULT_SWITCH_ID.

  • Solicite al controlador de minipuerto PF que inicialice y asigne recursos para un VF en el adaptador de red.

    Para obtener más información, consulte SR-IOV Virtual Functions (VFs).

  • Cree un puerto virtual (VPort) en el conmutador NIC y asócielo al VF.

    Para obtener más información, consulte Puertos virtuales (VPorts).

En el diagrama siguiente se muestran los pasos implicados en la inicialización de VF.

Secuencia de inicialización de vf de ejemplo que muestra las llamadas de la pila de virtualización a ndis y, a continuación, al controlador de miniporte pf.

NDIS, la pila de virtualización y el controlador de minipuerto PF siguen estos pasos durante la secuencia de inicialización de VF:

  1. NDIS lee la configuración de conmutador predeterminada del Registro y emite una solicitud de método OID de OID_NIC_SWITCH_CREATE_SWITCH para aprovisionar el conmutador en el adaptador de red. Los parámetros que se pasan en esta solicitud de OID incluyen información sobre cómo configurar recursos de hardware importantes, como VFs y VPorts. También incluye información sobre cómo distribuir los recursos entre los VPorts no predeterminados y el VPort predeterminado que se adjuntan al PF.

    Una vez que el controlador de minipuerto PF ha completado correctamente el OID, el conmutador NIC está listo para usarse para crear VPorts y asignar VFs en él.

    Para obtener más información sobre cómo crear un conmutador NIC, consulte Creación de un conmutador NIC.

  2. Un VF se trata como un mecanismo de descarga para el adaptador de red de máquina virtual (VM). Este adaptador se expone en el sistema operativo invitado que se ejecuta en la partición secundaria de Hyper-V. De forma predeterminada, los componentes de red del sistema operativo invitado envían y reciben paquetes a través de la ruta de acceso de datos sintéticas basada en software. Sin embargo, si se habilita una partición secundaria para la descarga de VF, la pila de virtualización emite solicitudes de OID al controlador de miniporte PF para la asignación de recursos y la inicialización de un VF. Después de adjuntar el VF a la partición secundaria y una VPort en el conmutador NIC, los componentes de red envían y reciben paquetes a través de la ruta de acceso de datos de VF. Para obtener más información sobre estas rutas de acceso de datos, consulte Rutas de acceso de datos sr-IOV.

    Si se ha habilitado una partición secundaria de Hyper-V para la descarga de VF, la pila de virtualización emite una solicitud de método OID de OID_NIC_SWITCH_ALLOCATE_VF al controlador de minipuerto PF. Los parámetros que se pasan en esta solicitud de OID incluyen el identificador del conmutador NIC en el que se asigna el VF. Otros parámetros incluyen identificadores para la partición secundaria a la que se asociará el VF.

    El controlador de minipuerto PF asigna los recursos de hardware y software necesarios para el VF. El controlador de minipuerto PF también determina el identificador del solicitante PCIe (RID) para el VF mediante una llamada a NdisMGetVirtualFunctionLocation. El RID se usa para DMA y la reasignación de interrupciones cuando el VF genera solicitudes e interrupciones de DMA.

    El controlador de miniporte PF devuelve el RID junto con el identificador VF cuando completa correctamente la solicitud de OID_NIC_SWITCH_ALLOCATE_VF .

    Para obtener más información sobre la asignación de recursos para una instancia de VF, consulte Asignación de recursos para una función virtual.

  3. La pila de virtualización crea un VPort en el conmutador NIC mediante la emisión de una solicitud de método OID de OID_NIC_SWITCH_CREATE_VPORT al controlador de minipuerto PF. Los parámetros que se pasan en esta solicitud de OID incluyen el identificador del conmutador NIC en el que se va a crear el VPort. Otros parámetros incluyen el identificador del VF al que se asociará VPort.

    Nota El VPort predeterminado en el conmutador NIC siempre existe y está conectado al PF. Solo se puede crear una única instancia de VPort no predeterminada y adjuntarla a una instancia de VF.

    Antes de que NDIS reenvíe la solicitud de OID al controlador de miniporte PF, asigna un identificador VPort válido que es único a través del adaptador de red.

    Cuando el controlador de minipuerto PF controla la solicitud de OID, asigna los recursos de hardware necesarios para VPort y conserva el identificador de VPort. Este identificador se usa en solicitudes OID posteriores y llamadas de función SR-IOV.

    Para obtener más información sobre cómo crear una instancia de VPort, consulte Creación de un puerto virtual.

  4. La partición secundaria de Hyper-V puede iniciarse mucho antes de asignar un VF y VPort. Durante este tiempo, los componentes de red del sistema operativo invitado envían y reciben paquetes a través de la ruta de acceso de datos sintéticas. Esto implica el tráfico de paquetes a través del VPort predeterminado que está conectado al PF. Para enlazar el tráfico a la partición secundaria, la pila de virtualización configura el VPort predeterminado con el control de acceso multimedia (MAC) y los filtros de LAN virtual (VLAN) para el adaptador de red de máquina virtual de la partición secundaria.

    Una vez asignados los recursos de VF y VPort, la pila de virtualización emite una solicitud de método OID de OID_RECEIVE_FILTER_MOVE_FILTER al controlador de miniporte PF. Esta solicitud de OID mueve los filtros MAC y VLAN para el adaptador de red de la máquina virtual del VPort predeterminado al VPort que está conectado al VF. Esto hace que los paquetes que coincidan con estos filtros se reenvíen al VF VPort a través de la ruta de acceso de datos de VF.

    Nota Los filtros de recepción existentes se pueden mover del VPort predeterminado al VPort de VF mediante OID_RECEIVE_FILTER_MOVE_FILTER. Además, se pueden establecer nuevos filtros en VF VPort mediante OID_RECEIVE_FILTER_SET_FILTER.

Una vez que el VF y VPort se hayan creado correctamente y los filtros MAC se hayan establecido en VPort, la pila de virtualización notifica al proveedor de servicios virtuales (VSP) de Virtual PCI (VPCI). Este VSP se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V. La notificación informa al VSP de VPCI de que el VF que se ha asignado correctamente y asociado a una partición secundaria. VSP de VPCI envía mensajes a través del bus de máquina virtual (VMBus) al cliente de servicio virtual (VSC) VPCI que se ejecuta en el sistema operativo invitado de la partición secundaria. EL VSC de VPCI es un controlador de bus que expone un dispositivo PCI para el adaptador de red VF.

Una vez expuesto el adaptador de red VF, el subsistema PnP que se ejecuta en el sistema operativo invitado detecta el adaptador y carga el controlador de minipuerto VF. Este controlador se registra con NDIS. Una vez inicializado el controlador de miniporte VF y los filtros de paquetes adecuados se configuran en el adaptador de red VF, la ruta de acceso de datos VF está totalmente operativa. Como resultado, el tráfico de paquetes en el sistema operativo invitado cambió a esta ruta de acceso de datos desde la ruta de acceso de datos sintética.