Compartilhar via


Movendo um filtro de recebimento para uma porta virtual

O driver sobreposto emite uma solicitação de conjunto de OID (identificador de objeto) de OID_RECEIVE_FILTER_MOVE_FILTER para mover um filtro de recebimento de uma porta virtual (VPort) para outro VPort no comutador NIC. Normalmente, o driver de sobreposição, como a pilha de virtualização, emite essa solicitação OID se qualquer uma das seguintes condições for verdadeira:

  • A pilha de virtualização define um filtro de recebimento no VPort padrão. Esse filtro contém o endereço MAC (controle de acesso à mídia) e os parâmetros de VLAN (LAN virtual) para o adaptador de rede da VM (máquina virtual) exposto na partição filho do Hyper-V. Isso permite que os pacotes sejam encaminhados entre o adaptador de rede da VM e o adaptador de rede subjacente pelo caminho de dados sintéticos baseado em software.

    Depois que os recursos para uma VF (função virtual) PCI Express (PCIe) são alocados e o VF é anexado a uma partição filho, a pilha de virtualização cria um VPort não padrão no VF. Em seguida, a pilha de virtualização move o filtro de recebimento para o adaptador de rede da VM do VPort padrão para o VPort não padrão anexado à VF. Isso permite que os pacotes sejam encaminhados entre o adaptador de rede da VM e o adaptador de rede subjacente pelo caminho de dados VF baseado em hardware.

    Para obter mais informações sobre esses caminhos de dados, consulte Caminhos de dados SR-IOV.

  • Uma VF foi desanexada de uma partição filho do Hyper-V na qual o sistema operacional convidado ainda está em execução. Nesse caso, o driver sobreposto emite a solicitação de conjunto de OID para mover o filtro de recebimento para o adaptador de rede da VM do VPort não padrão para o VPort padrão anexado ao PF. Quando isso acontece, o tráfego de pacotes é revertido para o caminho de dados sintético.

Para mover um filtro de recebimento de um VPort para outro VPort, um driver sobreposto emite uma solicitação de conjunto de OID de OID_RECEIVE_FILTER_MOVE_FILTER. O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS .

Antes que o driver de sobreposição emita a solicitação de OID_RECEIVE_FILTER_MOVE_FILTER , ele deve inicializar uma estrutura NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS da seguinte maneira:

  • O driver define o membro FilterId como o identificador do identificador do filtro de recebimento alocado anteriormente.

    Nota O driver sobreposto obteve o identificador de filtro de uma solicitação de método OID anterior de OID_RECEIVE_FILTER_SET_FILTER ou OID_RECEIVE_FILTER_ENUM_FILTERS.

  • O driver define o membro SourceQueueId como NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • O driver define o membro SourceVPortId como o identificador do VPort no qual esse filtro foi definido anteriormente.

  • O driver define o membro DestQueueId como NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • O driver define o membro DestVPortId como o identificador do VPort no qual esse filtro deve ser movido.

O NDIS valida os membros do NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS antes de encaminhar a solicitação de conjunto de OID para o driver de miniporto PF.

Quando o driver de miniporto PF manipula essa solicitação de conjunto de OID, ele deve mover o filtro de recebimento em uma operação atômica. O driver deve ser capaz de configurar o adaptador de rede para remover simultaneamente o filtro de uma fila de recebimento e VPort e defini-lo em uma fila de recebimento diferente e VPort.