Portas virtuais (VPorts)

Uma porta virtual (VPort) é um objeto de dados que representa uma porta interna na opção NIC de um adaptador de rede que dá suporte à virtualização de E/S raiz única (SR-IOV). Cada opção 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 ao PCI Express Physical Function (PF) ou VFs (funções virtuais).

    O PF é anexado à partição pai do Hyper-V e é exposto como um adaptador de rede virtual no sistema operacional de gerenciamento executado nessa partição.

    Um VF é anexado à partição filho do Hyper-V e é exposto como um adaptador de rede virtual no sistema operacional convidado executado nessa partição.

A opção NIC conecta o tráfego de rede da porta física para uma ou mais VPorts. Isso fornece acesso virtualizado ao adaptador de rede físico subjacente.

Cada VPort tem um identificador exclusivo (VPortId) exclusivo para a opção NIC no adaptador de rede. Um VPort padrão sempre existe na opção 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 miniporto PF manipula uma solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_CREATE_SWITCH, ele cria a opção NIC e o VPort padrão para essa opção. O VPort padrão é sempre anexado ao PF e está sempre em um estado operacional.

VPorts não padrão são criados 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 um VF. Depois de anexado, o padrão está em um 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 de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS.

Observação

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 tem um ou mais pares de fila de hardware associados a ele para receber e transmitir pacotes. O par de filas padrão no adaptador de rede é reservado para uso pelo 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 criados e configurados por meio de solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT. Os VPorts padrão e VPorts não padrão são reconfigurados por meio de solicitações de conjunto de OID de 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 anexado ao PF ou com um VF a qualquer momento. Depois que o VPort for criado e anexado a uma função PCIe, o anexo não poderá ser alterado dinamicamente para outra função PCIe.

    Observação

    O VPort padrão é sempre anexado ao PF no adaptador de rede.

A partir do NDIS 6.30 em Windows Server 2012, apenas um VPort não padrão pode ser anexado a um VF. No entanto, várias VPorts não padrão junto com o VPort padrão podem ser anexadas ao PF.

  • O número de pares de fila de hardware atribuídos a um VPort.

    Cada VPort tem um conjunto de pares de fila de hardware que estão disponíveis para ele. 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 por padrão e VPorts não padrão é especificado quando a opção NIC é criada. Isso permite que o número de pares de fila atribuídos ao VPort padrão difere 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 fila. Se a NIC não permitir essa alocação assimétrica, cada VPort não padrão será configurado para ter um número igual de pares de fila. Isso é conhecido como alocação simétrica de pares de fila. Para obter mais informações, consulte Atribuição simétrica e assimétrica de pares de fila.

    Observação

    O driver de miniporto PF relata se ele dá suporte à alocação assimétrica de pares de fila durante MiniportInitializeEx. Para obter mais informações, consulte Inicializando um driver de miniporto 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.

Observação

Um ou mais pares de fila atribuídos aos VPorts não padrão podem ser usados para receber OSS (dimensionamento lateral) pelo driver de miniporto VF executado no sistema operacional convidado.

  • Interromper parâmetros de moderação para o 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 um VPort específico.

Além dos parâmetros de configuração, os drivers sobrepostos podem configurar filtros de recebimento para cada VPort emitindo solicitações de método OID de OID_RECEIVE_FILTER_SET_FILTER. A opção NIC executa a filtragem de recebimento especificada em uma base de VPort.

Os parâmetros de filtros de recebimento para VPorts incluem condições de filtragem de pacotes, como uma lista de endereços MAC (controle de acesso à mídia) e os identificadores de VLAN (LAN virtual). Os filtros para endereços MAC e identificadores de VLAN são sempre especificados juntos na NDIS_RECEIVE_FILTER_PARAMETERS associada à solicitação OID_RECEIVE_FILTER_SET_FILTER . A opção NIC deve filtrar pacotes de entrada para a opção cujo endereço MAC de destino e o identificador de VLAN correspondem a qualquer condição de filtro de recebimento definida no VPort. A opção NIC filtra os pacotes recebidos de outro VPort ou da porta física externa. Se o pacote corresponder a um filtro, a opção NIC deverá encaminhá-lo para o VPort.

Vários pares de identificador mac e identificador de VLAN 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 à seguinte condição:

  • 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 de zero.

VPorts não padrão são excluídos por meio de solicitações de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT. O VPort padrão só é excluído quando a opção NIC é excluída por meio de uma solicitação de conjunto de OID de OID_NIC_SWITCH_DELETE_SWITCH.