NDIS_STATUS_SWITCH_PORT_REMOVE_VF

A indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF status é emitida por uma extensão de encaminhamento extensível do Hyper-V para remover a associação entre um adaptador de rede de máquina virtual (VM) e uma VF (função virtual) PCI Express (PCIe). O VF é exposto e suportado por um adaptador de rede físico subjacente que dá suporte à interface sr-IOV (virtualização de E/S raiz única).

Para emitir a indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF, a extensão de encaminhamento deve encapsular a indicação em uma estrutura NDIS_SWITCH_NIC_STATUS_INDICATION e emitir uma indicação de NDIS_STATUS_SWITCH_NIC_STATUS status.

Para obter mais informações sobre esse processo, consulte Diretrizes para emitir uma indicação de status de NDIS_STATUS_SWITCH_PORT_REMOVE_VF.

Comentários

Uma VF PCIe é criada e alocada por um adaptador físico subjacente que dá suporte à interface SR-IOV. Depois de criada, a pilha de virtualização anexa ou atribui o VF a uma partição filho do Hyper-V. O sistema operacional convidado executado nessa partição expõe um adaptador de rede de VM (máquina virtual) associado ao VF do adaptador físico SR-IOV subjacente.

Depois que os adaptadores de rede virtual e física são atribuídos, os pacotes são roteados diretamente entre o VF e o adaptador de rede da VM. No entanto, como a opção extensível não está envolvida na entrega de pacotes, as políticas extensíveis de porta de comutador não são aplicadas a esses pacotes. Isso inclui políticas de porta para ACLs (listas de controle de acesso) e QoS (qualidade de serviço).

Uma extensão de encaminhamento de comutador extensível pode remover a atribuição do VF para a partição filho emitindo uma indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF status. Essa indicação faz com que os pacotes sejam entregues por meio de uma porta de comutador extensível em vez de diretamente entre o adaptador de rede da VM e o VF do adaptador físico SR-IOV subjacente. Isso permite que as políticas de porta de comutador extensível sejam aplicadas a pacotes recebidos ou enviados pela porta de comutador extensível.

Quando a extensão de encaminhamento faz o NDIS_STATUS_SWITCH_PORT_REMOVE_VF status indicação, ela especifica a porta de comutador extensível à qual o adaptador de rede da VM está conectado.

Para obter mais informações sobre extensões extensíveis de encaminhamento de comutador, consulte Extensões de encaminhamento.

Diretrizes para emitir uma indicação de status de NDIS_STATUS_SWITCH_PORT_REMOVE_VF

Para emitir a indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF status, a extensão de encaminhamento deve seguir estas etapas:

  1. A extensão de encaminhamento inicializa uma estrutura de NDIS_STATUS_INDICATION para a indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF . Para essa indicação, as extensões de encaminhamento definem os seguintes membros da estrutura NDIS_STATUS_INDICATION :

    • O membro StatusCode deve ser definido como NDIS_STATUS_SWITCH_PORT_REMOVE_VF.

    • O membro StatusBuffer deve ser definido como NULL.

    • O StatusBufferSize deve ser definido como zero.

  2. A extensão de encaminhamento inicializa uma estrutura de NDIS_SWITCH_NIC_STATUS_INDICATION . Para remover uma atribuição de VF, a extensão de encaminhamento deve definir os membros da seguinte maneira:

    • O membro DestinationPortId deve ser definido como o identificador de uma porta de comutador extensível à qual o adaptador de rede da VM está conectado.

    • O membro DestinationNicIndex deve ser definido como o valor de índice do adaptador de rede da VM que está conectado à porta especificada.

    • O membro SourcePortId deve ser definido como NDIS_SWITCH_DEFAULT_PORT_ID.

    • O membro SourceNicIndex deve ser definido como NDIS_SWITCH_DEFAULT_NIC_INDEX.

    • O membro StatusIndication deve ser definido como o endereço da estrutura NDIS_STATUS_INDICATION para a indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF .

  3. A extensão de encaminhamento inicializa uma estrutura de NDIS_STATUS_INDICATION para a indicação de NDIS_SWITCH_NIC_STATUS_INDICATION . Para essa indicação, a extensão de encaminhamento define os seguintes membros da estrutura NDIS_STATUS_INDICATION :

  4. A extensão de encaminhamento deve chamar ReferenceSwitchNic para incrementar um contador de referência para o adaptador de rede da VM. Se ReferenceSwitchNic não for concluído com NDIS_STATUS_SUCCESS, a extensão de encaminhamento não deverá encaminhar a indicação de status.

    Nota Se a extensão de encaminhamento recebeu uma solicitação OID_SWITCH_NIC_DISCONNECT definida para o adaptador de VM, ela não deve chamar ReferenceSwitchNic nem encaminhar a indicação de status.

  5. A extensão de encaminhamento chama NdisFIndicateStatus para encaminhar o NDIS_STATUS_INDICATION para extensões sobrepostas na pilha de driver de comutador extensível. Quando a extensão de encaminhamento chama essa função, ela define o parâmetro StatusIndication como um ponteiro para a estrutura NDIS_STATUS_INDICATION para a indicação de NDIS_STATUS_SWITCH_NIC_STATUS .

  6. Depois que NdisFIndicateStatus retornar, a extensão de encaminhamento deverá chamar DereferenceSwitchNic para diminuir o contador de referência para o adaptador de rede da VM.

Nota A extensão de encaminhamento deve seguir as etapas anteriores para cada atribuição de VF que a extensão de encaminhamento está removendo.

Para obter mais informações sobre como uma extensão de encaminhamento encaminha status indicações, consulte Filtrar Indicações de status do módulo.

Diretrizes para determinar atribuições de VF

A extensão de encaminhamento pode enumerar as atribuições atuais de VF para adaptadores de rede virtual emitindo uma solicitação de consulta OID de OID_SWITCH_NIC_ARRAY. Essa solicitação retorna uma estrutura NDIS_SWITCH_NIC_ARRAY que contém uma matriz de estruturas de NDIS_SWITCH_NIC_PARAMETERS . Cada estrutura NDIS_SWITCH_NIC_PARAMETERS especifica os parâmetros de um adaptador de rede exposto em um dos seguintes ambientes:

  • O sistema operacional de gerenciamento executado na partição pai do Hyper-V.

    Os adaptadores de rede expostos neste sistema operacional são especificados com um valor de enumeração NDIS_SWITCH_NIC_TYPE de NdisSwitchNicTypeExternal ou NdisSwitchNicTypeInternal.

  • O sistema operacional convidado que é executado em uma partição filho do Hyper-V.

    Os adaptadores de rede expostos neste sistema operacional são especificados com um valor de enumeração NDIS_SWITCH_NIC_TYPEde NdisSwitchNicTypeSynthetic ou NdisSwitchNicTypeEmulated.

Se a solicitação de consulta OID de OID_SWITCH_NIC_ARRAY for concluída com um status de NDIS_STATUS_SUCCESS, a extensão de encaminhamento poderá determinar atribuições de VF inspecionando cada estrutura NDIS_SWITCH_NIC_PARAMETERS na matriz retornada. Se o membro VFAssigned da estrutura NDIS_SWITCH_NIC_PARAMETERS for definido como TRUE, o adaptador de rede que corresponde à estrutura NDIS_SWITCH_NIC_PARAMETERS será atribuído a uma VF.

A extensão de encaminhamento pode remover a atribuição emitindo uma indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF status. Nesse caso, a extensão de encaminhamento deve definir o membro DestinationPortId do NDIS_SWITCH_NIC_STATUS_INDICATION como o valor do membro PortId da estrutura NDIS_SWITCH_NIC_PARAMETERS .

Para obter mais informações sobre como emitir uma indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF, consulte Diretrizes para emitir uma indicação de status de NDIS_STATUS_SWITCH_PORT_REMOVE_VF.

Requisitos

Versão

Com suporte no NDIS 6.30 e posterior.

Cabeçalho

Ndis.h (inclua Ndis.h)

Confira também


NdisFIndicateStatus

NDIS_STATUS_INDICATION

NDIS_STATUS_SWITCH_NIC_STATUS

NDIS_SWITCH_NIC_ARRAY

NDIS_SWITCH_NIC_PARAMETERS

NDIS_SWITCH_NIC_TYPE

OID_SWITCH_NIC_ARRAY