Partilhar via


SR-IOV Funções virtuais (VFs)

Uma função virtual (VF) PCI Express (PCIe) é uma função PCIe leve num adaptador de rede que suporta virtualização de E/S de raiz única (SR-IOV).

O VF está associado à função física PCIe (PF) no adaptador de rede e representa uma instância virtualizada do adaptador de rede. Cada VF tem seu próprio espaço de configuração PCI. Cada VF também compartilha um ou mais recursos físicos no adaptador de rede, como uma porta de rede externa, com o PF e outros VFs.

Um VF não é um dispositivo PCIe completo. No entanto, ele fornece um mecanismo básico para transferir dados diretamente entre a partição filho Hyper-V e o adaptador de rede SR-IOV subjacente. Os recursos de software associados à transferência de dados estão diretamente disponíveis para o VF e são isolados do uso pelos outros VFs ou pelo PF. No entanto, a configuração da maioria desses recursos é realizada pelo driver de miniporta PF que é executado no sistema operacional de gerenciamento da partição pai Hyper-V.

Um VF é exposto como um adaptador de rede virtual (adaptador de rede VF) no sistema operativo convidado que é executado em uma partição filha Hyper-V. Depois que o VF é associado a uma porta virtual (VPort) no switch NIC do adaptador de rede SR-IOV, o driver PCI virtual (VPCI) executado na VM expõe o adaptador de rede VF. Uma vez exposto, o gerenciador PnP no sistema operacional convidado carrega o driver de miniporta VF.

Observação

Uma partição secundária Hyper-V também é conhecida como máquina virtual (VM).

O driver de miniporta VF é um driver de miniporta NDIS instalado na VM para gerenciar o VF. Qualquer operação executada pelo driver de miniporta VF não deve afetar nenhum outro VF ou PF no mesmo adaptador de rede.

O driver de miniporta VF pode funcionar como qualquer driver de dispositivo PCI. Ele pode ler e gravar no espaço de configuração PCI da VF. No entanto, o acesso ao dispositivo PCI virtual é uma operação privilegiada e é gerenciado pelo driver de miniporta PF da seguinte maneira:

  • Quando o driver de miniporta VF chama NdisMGetBusData para ler os dados do espaço de configuração PCI do adaptador de rede VF, a pilha de virtualização é notificada. Essa pilha é executada no sistema operacional de gerenciamento da partição pai Hyper-V. Quando a pilha é notificada da solicitação de leitura, ela emite uma solicitação de método de identificador de objeto (OID) de OID_SRIOV_READ_VF_CONFIG_SPACE para o driver de miniporta PF. Os dados a serem lidos são especificados em uma estrutura NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS contida na solicitação OID.

    O driver lê os dados solicitados do espaço de configuração VF PCI e retorna os dados completando a solicitação OID. Esses dados são retornados ao driver de miniporta VF quando a chamada para NdisMGetBusData é concluída.

  • Quando o driver de miniporta VF chama NdisMSetBusData para gravar dados no espaço de configuração PCI do adaptador de rede VF, a pilha de virtualização é notificada da solicitação de gravação. Ele emite uma solicitação de método OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE para o driver de miniporta PF. Os dados a serem gravados são especificados em uma estrutura NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS contida na solicitação OID.

    O driver grava os dados no espaço de configuração VF PCI e retorna o status da solicitação quando conclui a solicitação OID. Esse status é retornado ao driver de miniporta VF após a conclusão da chamada para NdisMSetBusData .

O driver de miniporta VF também pode se comunicar com o driver de miniporta PF. Este caminho de comunicação é através de uma interface backchannel. Para mais informações, consulte SR-IOV Comunicação de canal de retorno PF/VF.

Observação O driver de miniporta VF deve estar ciente de que está sendo executado em um ambiente virtualizado para que possa se comunicar com o driver de miniporta PF para determinadas operações. Para obter mais informações sobre como o driver faz isso, consulte Inicializando um driver de miniporta VF.