Puertos virtuales (VPorts)
Un puerto virtual (VPort) es un objeto de datos que representa un puerto interno en el conmutador NIC de un adaptador de red que admite la virtualización de E/S raíz única (SR-IOV). Cada conmutador de NIC tiene los siguientes puertos para la conectividad de red:
Un puerto físico externo para la conectividad a la red física externa.
Uno o más VPorts internos que están conectados a la función física (PF) o a las funciones virtuales (VFs) de PCI Express.
- El PF está asociado a la partición primaria Hyper-V y se expone como un adaptador de red virtual en el sistema operativo de administración que se ejecuta en esa partición.
- Un VF está asociado a la partición secundaria Hyper-V y se expone como un adaptador de red virtual en el sistema operativo invitado que se ejecuta en esa partición.
La NIC conecta el tráfico de red del puerto físico a uno o varios VPorts. Esto proporciona acceso virtualizado a la interfaz de red física subyacente.
Cada VPort tiene un identificador único (VPortId) que es único para el conmutador NIC en el adaptador de red. Siempre existe una VPort predeterminada en el conmutador NIC predeterminado y nunca se puede eliminar. VPort predeterminado tiene el VPortId de NDIS_DEFAULT_VPORT_ID
.
Cuando el controlador de minipuerto PF maneja una solicitud de método de identificador de objeto (OID) de OID_NIC_SWITCH_CREATE_SWITCH, crea el conmutador NIC y su VPort predeterminado. El VPort predeterminado siempre está conectado al PF y siempre está en un estado operativo.
Los VPorts no predeterminados se crean a través de las solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT. Solo se puede conectar un VPort no predeterminado a un VF. Una vez asociado, el valor predeterminado está en un estado operativo. También se pueden crear y adjuntar una o más VPorts no predeterminadas al PF. Estos VPorts no son operativos cuando se crean y pueden activarse a través de una solicitud para establecer el OID de OID_NIC_SWITCH_VPORT_PARAMETERS.
Nota
Después de que un VPort se vuelva operativo, solo puede dejar de estar operativo cuando se elimina a través de una solicitud OID de OID_NIC_SWITCH_DELETE_VPORT.
Cada VPort tiene uno o varios pares de colas de hardware asociados para recibir y transmitir paquetes. El par de colas predeterminado en el adaptador de red está reservado para el VPort predeterminado. Los pares de cola para VPorts no predeterminados se asignan y se distribuyen cuando se crea el VPort a través de la solicitud de OID_NIC_SWITCH_CREATE_VPORT.
Los VPorts no predeterminados se crean y configuran a través de solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT. El VPort predeterminado y los VPort no predeterminados se vuelven a configurar mediante solicitudes de establecimiento de OID de OID_NIC_SWITCH_VPORT_PARAMETERS. Cada solicitud de OID contiene una estructura de NDIS_NIC_SWITCH_VPORT_PARAMETERS que especifica los siguientes parámetros de configuración:
Función PCIe a la que está conectada la VPort.
Cada VPort se puede conectar al PF o con una VF en cualquier momento. Después de que se crea y conecta un VPort a una función PCIe, dicha conexión no se puede cambiar dinámicamente a otra función PCIe.
Nota
El VPort predeterminado siempre está conectado al PF en el adaptador de red.
A partir de la versión NDIS 6.30 en Windows Server 2012, solo se puede conectar un VPort no predeterminado a un VF. Sin embargo, se pueden adjuntar varios VPort no predeterminados junto con el VPort predeterminado al PF.
Número de pares de colas de hardware que se asignan a un VPort.
Cada VPort tiene un conjunto de pares de colas de hardware disponibles. Cada par de colas consta de una cola de transmisión y una cola de recepción independientes en el adaptador de red.
Los pares de colas son recursos limitados en los adaptadores de red. El número total de pares de cola reservados para su uso por los VPorts predeterminados y no predeterminados se especifica cuando se crea el conmutador NIC. Esto permite que el número de pares de colas asignados al VPort predeterminado sea diferente de los VPort no predeterminados.
Cada VPort no predeterminado se puede configurar para tener un número diferente de pares de cola. Esto se conoce como asignación asimétrica de pares de colas. Si la NIC no permite esta asignación asimétrica, cada VPort no predeterminado está configurado para tener el mismo número de pares de cola. Esto se conoce como asignación simétrica de pares de colas. Para obtener más información, consulte Asignación simétrica y asimétrica de pares de colas.
Nota
El controlador de minipuerto PF informa sobre si admite la asignación asimétrica de pares de colas durante MiniportInitializeEx. Para obtener más información, consulte Inicialización de un controlador miniport PF.
El número de pares de cola asignados a cada VPort no cambia dinámicamente. El número de pares de cola asignados a un VPort no se puede cambiar después de crear el VPort.
Nota
Uno o varios pares de cola asignados a los VPorts no predeterminados pueden utilizarse para el escalado en el lado de recepción (RSS) por el controlador de minipuerto VF que opera en el sistema operativo invitado.
Interrumpa los parámetros de moderación para VPort.
Se pueden especificar diferentes tipos de moderación de interrupción para diferentes VPorts. Esto permite que la pila de virtualización controle el número de interrupciones generadas por un VPort determinado.
Además de los parámetros de configuración, los controladores superpuestos pueden configurar filtros de recepción para cada VPort mediante la emisión de solicitudes de métodos OID de OID_RECEIVE_FILTER_SET_FILTER. El conmutador NIC realiza el filtrado de recepción especificado en una base de VPort.
Los parámetros de filtro de recepción para VPorts incluyen condiciones de filtrado de paquetes, como una lista de direcciones de control de acceso multimedia (MAC) y los identificadores de LAN virtual (VLAN). Los filtros para las direcciones MAC y los identificadores de VLAN siempre se especifican juntos en los NDIS_RECEIVE_FILTER_PARAMETERS asociados con la solicitud OID_RECEIVE_FILTER_SET_FILTER. El conmutador NIC debe filtrar los paquetes entrantes al conmutador cuya dirección MAC de destino y identificador VLAN coinciden con cualquier condición de filtro de recepción que se estableció en VPort. El conmutador NIC filtra los paquetes recibidos de otro VPort o del puerto físico externo. Si el paquete coincide con un filtro, el modificador NIC debe reenviarlo a VPort.
Se pueden establecer varios pares de direcciones MAC e identificadores VLAN en VPort. Si solo se establece una dirección MAC, el filtro de recepción especifica que VPort debe recibir paquetes que coincidan con las condiciones siguientes:
La dirección MAC de destino del paquete coincide con la dirección MAC del filtro.
El paquete tiene una etiqueta VLAN o (si existe una etiqueta VLAN) un identificador de VLAN de cero.
Los VPorts no predeterminados se eliminan a través de solicitudes de establecimiento de OID de OID_NIC_SWITCH_DELETE_VPORT. El VPort predeterminado solo se elimina cuando se elimina el conmutador NIC mediante una solicitud de establecimiento de OID de OID_NIC_SWITCH_DELETE_SWITCH.