NDIS_STATUS_SWITCH_PORT_REMOVE_VF
A indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF é emitida por uma extensão de encaminhamento de comutador extensível 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 de virtualização de E/S raiz única (SR-IOV).
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 status NDIS_STATUS_SWITCH_NIC_STATUS.
Para obter mais informações sobre esse processo, consulte Guidelines for Issuing an NDIS_STATUS_SWITCH_PORT_REMOVE_VF Status Indication.
Observações
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 é anexada ou atribui, a VF a uma partição filho Hyper-V. O sistema operacional convidado executado nesta 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 o comutador extensível não está envolvido na entrega de pacotes, as políticas de porta de comutador extensível não são aplicadas a esses pacotes. Isso inclui políticas de porta para ACLs (listas de controle de acesso) e QoS (qualidade do serviço).
Uma extensão extensível de encaminhamento de comutador pode remover a atribuição do VF para a partição filho emitindo uma indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF. 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 a indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF, 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 de para emissão de uma indicação de status de NDIS_STATUS_SWITCH_PORT_REMOVE_VF
Para emitir a indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF, a extensão de encaminhamento deve seguir estas etapas:
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 do 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.
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 do deve ser definido como NDIS_SWITCH_DEFAULT_NIC_INDEX.
O membro statusindication deve ser definido como o endereço da estrutura de NDIS_STATUS_INDICATION para a indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF.
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:
O membro statuscode deve ser definido como NDIS_STATUS_SWITCH_NIC_STATUS.
O membro StatusBuffer deve ser definido como o endereço da estrutura de NDIS_SWITCH_NIC_STATUS_INDICATION.
O StatusBufferSize deve ser definido como o comprimento, em bytes, da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION e da estrutura NDIS_STATUS_INDICATION para a indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF.
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.
Observação Se a extensão de encaminhamento tiver recebido uma solicitação OID_SWITCH_NIC_DISCONNECT definida para o adaptador de VM, ela não deverá chamar ReferenceSwitchNic nem encaminhar a indicação de status.
As chamadas de extensão de encaminhamento 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.
Depois que NdisFIndicateStatus retorna, a extensão de encaminhamento deve chamar DereferenceSwitchNic para decrementar o contador de referência do adaptador de rede da VM.
Observação 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 indicações de status, 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 de VF atuais 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 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 Hyper-V.
Os adaptadores de rede expostos neste sistema operacional são especificados com um valor de enumeração NDIS_SWITCH_NIC_TYPE de 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 as atribuições de VF inspecionando cada estrutura NDIS_SWITCH_NIC_PARAMETERS na matriz retornada. Se o membro VFAssigned da estrutura NDIS_SWITCH_NIC_PARAMETERS estiver definido como TRUE, o adaptador de rede que corresponde à estrutura NDIS_SWITCH_NIC_PARAMETERS será atribuído a um VF.
A extensão de encaminhamento pode remover a atribuição emitindo uma indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF. Nesse caso, a extensão de encaminhamento deve definir o membro DestinationPortId do NDIS_SWITCH_NIC_STATUS_INDICATION para 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 Guidelines for Issuing an NDIS_STATUS_SWITCH_PORT_REMOVE_VF Status Indication.
Requisitos
Versão |
Com suporte no NDIS 6.30 e posterior. |
Cabeçalho |
Ndis.h (inclua Ndis.h) |