Funciones virtuales sr-IOV
Una función virtual PCI Express (PCIe) es una función PCIe ligera en un adaptador de red que admite virtualización de E/S raíz única (SR-IOV).
El VF está asociado a la función física PCIe (PF) en el adaptador de red y representa una instancia virtualizada del adaptador de red. Cada VF tiene su propio espacio de configuración pci. Cada VF también comparte uno o varios recursos físicos en el adaptador de red, como un puerto de red externo, con el PF y otros VFs.
Un VF no es un dispositivo PCIe completo. Sin embargo, proporciona un mecanismo básico para transferir directamente datos entre una partición secundaria de Hyper-V y el adaptador de red SR-IOV subyacente. Los recursos de software asociados para la transferencia de datos están directamente disponibles para el VF y están aislados del uso de las otras máquinas virtuales o pf. Sin embargo, la configuración de la mayoría de estos recursos se realiza mediante el controlador de miniporte PF que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V.
Un VF se expone como un adaptador de red virtual (adaptador de red VF) en el sistema operativo invitado que se ejecuta en una partición secundaria de Hyper-V. Después de asociar el VF a un puerto virtual (VPort) en el conmutador NIC del adaptador de red SR-IOV, el controlador PCI virtual (VPCI) que se ejecuta en la máquina virtual expone el adaptador de red VF. Una vez expuesto, el administrador de PnP en el sistema operativo invitado carga el controlador de minipuerto VF.
Nota:
Una partición secundaria de Hyper-V también se conoce como máquina virtual (VM).
El controlador de miniporte VF es un controlador de minipuerto NDIS que se instala en la máquina virtual para administrar el VF. Cualquier operación que realice el controlador de miniporte VF no debe afectar a ningún otro VF ni al PF en el mismo adaptador de red.
El controlador de minipuerto VF puede funcionar como cualquier controlador de dispositivo PCI. Puede leer y escribir en el espacio de configuración PCI de VF. Sin embargo, el acceso al dispositivo PCI virtual es una operación con privilegios y se administra mediante el controlador de miniporte PF de la siguiente manera:
Cuando el controlador de minipuerto VF llama a NdisMGetBusData para leer datos del espacio de configuración PCI del adaptador de red VF, se notifica la pila de virtualización. Esta pila se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V. Cuando se notifica a la pila de la solicitud de lectura, emite una solicitud de método de identificador de objeto (OID) de OID_SRIOV_READ_VF_CONFIG_SPACE al controlador de minipuerto PF. Los datos que se van a leer se especifican en una estructura de NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS contenida en la solicitud OID.
El controlador lee los datos solicitados del espacio de configuración de PCI de VF y devuelve los datos completando la solicitud OID. A continuación, estos datos se devuelven al controlador de minipuerto de VF cuando se completa la llamada a NdisMGetBusData .
Cuando el controlador de minipuerto VF llama a NdisMSetBusData para escribir datos en el espacio de configuración PCI del adaptador de red VF, se notifica a la pila de virtualización la solicitud de escritura. Emite una solicitud de método OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE al controlador de miniporte PF. Los datos que se van a escribir se especifican en una estructura de NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS contenida en la solicitud OID.
El controlador escribe los datos en el espacio de configuración de PCI de VF y devuelve el estado de la solicitud cuando completa la solicitud OID. Este estado se devuelve al controlador de minipuerto de VF una vez completada la llamada a NdisMSetBusData .
El controlador de minipuerto VF también puede comunicarse con el controlador de minipuerto PF. Esta ruta de comunicación se realiza a través de una interfaz backchannel. Para obtener más información, vea SR-IOV PF/VF Backchannel Communication.
Nota El controlador de minipuerto VF debe tener en cuenta que se ejecuta en un entorno virtualizado para que pueda comunicarse con el controlador de miniporte PF para determinadas operaciones. Para obtener más información sobre cómo lo hace el controlador, consulte Inicialización de un controlador miniport de VF.