Portas virtuais (VPorts)
Uma porta virtual (VPort) é um objeto de dados que representa uma porta interna no comutador NIC de um adaptador de rede que dá suporte à virtualização de E/S raiz única (SR-IOV). Cada comutador NIC tem as seguintes portas para conectividade de rede:
Uma porta física externa para conectividade com a rede física externa.
Um ou mais VPorts internos que estão conectados à função física PCI Express (PF) ou às funções virtuais (VFs).
- O PF é anexado à partição pai Hyper-V e é exposto como um adaptador de rede virtual no sistema operacional de gerenciamento executado nessa partição.
- Uma VF (Função Virtual) é anexada à partição filha do Hyper-V e é exposta como um adaptador de rede virtual no sistema operacional convidado que é executado nessa partição.
O comutador NIC faz a ponte do tráfego de rede da porta física para uma ou mais VPorts. Isso fornece acesso virtualizado à interface de rede física subjacente.
Cada VPort tem um identificador único (VPortId) exclusivo para o switch NIC no adaptador de rede. Um VPort padrão sempre existe no comutador NIC padrão e nunca pode ser excluído. O VPort padrão tem o VPortId de NDIS_DEFAULT_VPORT_ID
.
Quando o driver de miniporta PF manipula uma solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_CREATE_SWITCH, ele cria o comutador NIC e o VPort padrão para esse comutador. O VPort padrão é sempre anexado ao PF e está sempre em um estado operacional.
VPorts não padrão são criadas por meio de solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT. Somente um VPort não padrão pode ser anexado a uma VF. Uma vez anexado, o padrão está em estado operacional. Um ou mais VPorts não padrão também podem ser criados e anexados ao PF. Esses VPorts não são operacionais quando criados e podem se tornar operacionais por meio de uma solicitação para definir os parâmetros do OID em OID_NIC_SWITCH_VPORT_PARAMETERS.
Nota
Depois que um VPort se torna operacional, ele só pode se tornar não operacional quando é excluído por meio de uma solicitação OID de OID_NIC_SWITCH_DELETE_VPORT.
Cada VPort possui um ou mais pares de filas de hardware associados, utilizados para o recebimento e transmissão de pacotes. O "queue pair" padrão no adaptador de rede é reservado para uso pela VPort padrão. Os pares de fila para VPorts não padrão são alocados e atribuídos quando o VPort é criado por meio da solicitação OID_NIC_SWITCH_CREATE_VPORT.
VPorts não padrão são criadas e configuradas por meio de solicitações de método de OID de OID_NIC_SWITCH_CREATE_VPORT. As VPorts padrão e as VPorts não padrão são reconfiguradas através de solicitações para definir o OID para OID_NIC_SWITCH_VPORT_PARAMETERS. Cada solicitação OID contém uma estrutura NDIS_NIC_SWITCH_VPORT_PARAMETERS que especifica os seguintes parâmetros de configuração:
A função PCIe à qual o VPort está anexado.
Cada VPort pode ser anexada à PF ou a uma VF a qualquer momento. Depois que o VPort é criado e anexado a uma função PCIe, o anexo não pode ser alterado dinamicamente para outra função PCIe.
Nota
O VPort padrão é sempre anexado ao PF no adaptador de rede.
A partir do NDIS 6.30 no Windows Server 2012, apenas um VPort não padrão pode ser anexado a uma VF. No entanto, várias VPorts não padrão, além da VPort padrão, podem ser anexadas à PF.
O número de pares de filas de hardware atribuídos a uma VPort.
Cada VPort tem um conjunto de pares de filas de hardware que estão disponíveis para ela. Cada par de filas consiste em uma fila de transmissão e recebimento separada no adaptador de rede.
Os pares de filas são recursos limitados no adaptador de rede. O número total de pares de filas reservados para uso pelas VPorts padrão e não padrão é especificado quando o switch NIC é criado. Isso permite que o número de pares de fila atribuídos ao VPort padrão difira dos VPorts não padrão.
Cada VPort não padrão pode ser configurado para ter um número diferente de pares de fila. Isso é conhecido como alocação assimétrica de pares de filas. Se a NIC não permitir essa alocação assimétrica, cada VPort não padrão será configurado para ter o mesmo número de pares de fila. Isso é conhecido como alocação simétrica de pares de filas. Para obter mais informações, consulte Atribuição Simétrica e Assimétrica de Pares de Filas.
Nota
O driver de miniporta da PF informa se ele dá suporte à alocação assimétrica de pares de filas durante MiniportInitializeEx. Para obter mais informações, consulte Inicializando um Driver de Miniporta da PF.
O número de pares de fila atribuídos a cada VPort não é alterado dinamicamente. O número de pares de fila atribuídos a um VPort não pode ser alterado após a criação do VPort.
Nota
Um ou mais pares de filas atribuídos às VPorts não padrão podem ser usados para o escalonamento do lado de recebimento (RSS) pelo driver de miniporta da VF em execução no sistema operacional convidado.
Parâmetros de moderação de interrupção da VPort.
Diferentes tipos de moderação de interrupção podem ser especificados para VPorts diferentes. Isso permite que a pilha de virtualização controle o número de interrupções geradas por uma VPort específica.
Além dos parâmetros de configuração, drivers sobrepostos podem configurar filtros de recebimento para cada VPort emitindo solicitações de método de OID de OID_RECEIVE_FILTER_SET_FILTER. O comutador da NIC realiza a filtragem de recebimento especificada em uma base baseada em VPort.
Os parâmetros de filtro de recebimento para VPorts incluem condições de filtragem de pacotes, como uma lista de endereços MAC (controle de acesso de mídia) e os identificadores de VLAN (LAN virtual). Os filtros para endereços MAC e identificadores de VLAN são sempre especificados em conjunto no NDIS_RECEIVE_FILTER_PARAMETERS associado à solicitação de OID_RECEIVE_FILTER_SET_FILTER. O switch NIC deve filtrar os pacotes de entrada para o switch cujo endereço MAC de destino e identificador de VLAN correspondam a qualquer condição de filtro de recepção definida no VPort. O switch NIC filtra os pacotes recebidos de outro VPort ou da porta física externa. Se o pacote corresponder a um filtro, o comutador NIC deverá encaminhá-lo para o VPort.
Vários pares de identificador de VLAN e endereço MAC podem ser definidos no VPort. Se apenas um endereço MAC estiver definido, o filtro de recebimento especificará que o VPort deve receber pacotes que correspondam às seguintes condições:
O endereço MAC de destino do pacote corresponde ao endereço MAC do filtro.
O pacote tem uma marca VLAN ou (se uma marca VLAN estiver presente) um identificador de VLAN igual a zero.
VPorts não padrão são excluídas por meio de solicitações de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT. A VPort padrão só é excluída quando o comutador da NIC é excluído por meio de uma solicitação de conjunto de OID de OID_NIC_SWITCH_DELETE_SWITCH.