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 NIC tiene los siguientes puertos para la conectividad de red:
Un puerto físico externo para la conectividad a la red física externa.
Una o varias VPort internas que están conectadas a la función física PCI Express (PF) o a las funciones virtuales (FV).
El PF se asocia a la partición primaria de 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.
Una VF está conectada a la partición secundaria de Hyper-V y se expone como un adaptador de red virtual en el sistema operativo invitado que se ejecuta en esa partición.
El conmutador NIC conecta el tráfico de red desde el puerto físico a uno o varios puertos virtuales. 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. Una VPort predeterminada siempre existe en el conmutador NIC predeterminado y nunca se puede eliminar. El VPort predeterminado tiene el VPortId de NDIS_DEFAULT_VPORT_ID.
Cuando el controlador de miniporte PF controla una solicitud de método de identificador de objeto (OID) de OID_NIC_SWITCH_CREATE_SWITCH, crea el conmutador NIC y el VPort predeterminado para ese conmutador. El VPort predeterminado siempre está conectado al PF y siempre está en un estado operativo.
Las VPorts no predeterminadas se crean a través de solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT. Solo se puede conectar una VPort no predeterminada a una VF. Una vez adjuntado, el valor predeterminado está en un estado operativo. También se pueden crear una o varias VPorts no predeterminadas y asociarse al PF. Estas VPorts no son operativas cuando se crean y se pueden poner en funcionamiento a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS.
Nota:
Una vez que una instancia de VPort se vuelve operativa, solo puede convertirse en no operativa cuando se elimina a través de una solicitud de 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 su uso por el VPort predeterminado. Los pares de cola para VPorts no predeterminados se asignan y se asignan cuando se crea VPort a través de la solicitud OID_NIC_SWITCH_CREATE_VPORT .
Las VPorts no predeterminadas se crean y configuran a través de solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT. Las VPort predeterminadas y las VPort no predeterminadas se vuelven a configurar mediante solicitudes de conjunto 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 crear y adjuntar la VPort a una función PCIe, los datos adjuntos no se pueden 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 NDIS 6.30 en Windows Server 2012, solo se puede conectar una VPort no predeterminada a una VF. Sin embargo, se pueden asociar varias VPort no predeterminadas junto con la VPort predeterminada al PF.
Número de pares de colas de hardware que se asignan a una VPort.
Cada VPort tiene un conjunto de pares de colas de hardware que están disponibles para él. Cada par de colas consta de una transmisión independiente y una cola de recepción en el adaptador de red.
Los pares de cola son recursos limitados en el adaptador de red. El número total de pares de cola reservados para su uso por defecto y VPorts no predeterminados se especifica cuando se crea el conmutador NIC. Esto permite que el número de pares de cola 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 cola. 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 cola. Para obtener más información, consulte Asignación simétrica y asimétrica de pares de cola.
Nota
El controlador de miniporte PF informa sobre si admite la asignación asimétrica de pares de cola 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 se cambia dinámicamente. El número de pares de cola asignados a una VPort no se puede cambiar después de crear la VPort.
Nota
Uno o varios pares de cola asignados a VPorts no predeterminados se pueden usar para el escalado lateral de recepción (RSS) mediante el controlador de miniporte VF que se ejecuta 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 una VPort determinada.
Además de los parámetros de configuración, los controladores que se sobreponen pueden configurar filtros de recepción para cada VPort mediante la emisión de solicitudes de método OID de OID_RECEIVE_FILTER_SET_FILTER. El modificador 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 VLAN siempre se especifican juntos en el NDIS_RECEIVE_FILTER_PARAMETERS asociado a la solicitud de OID_RECEIVE_FILTER_SET_FILTER . El conmutador NIC debe filtrar los paquetes entrantes al conmutador cuya dirección MAC de destino y el identificador VLAN coinciden con cualquier condición de filtro de recepción establecida en VPort. El conmutador NIC filtra los paquetes recibidos de otra VPort o del puerto físico externo. Si el paquete coincide con un filtro, el conmutador NIC debe reenviarlo a la VPort.
Se pueden establecer varios pares de direcciones MAC y 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 la siguiente condición:
La dirección MAC de destino del paquete coincide con la dirección MAC del filtro.
El paquete tiene una etiqueta VLAN o (si una etiqueta VLAN está presente) un identificador VLAN de cero.
Las VPorts no predeterminadas se eliminan a través de solicitudes de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT. El VPort predeterminado solo se elimina cuando el conmutador NIC se elimina a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_DELETE_SWITCH.