Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF é emitida por uma extensão de encaminhamento de switch extensível Hyper-V para remover a ligação entre um adaptador de rede de máquina virtual (VM) e uma função virtual (VF) PCI Express (PCIe). O VF é exposto e suportado por um adaptador de rede físico subjacente que suporta a interface de virtualização de E/S de 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 Diretrizes para emitir uma indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF.
Comentários
Um PCIe VF é criado e alocado por um adaptador físico subjacente que suporta a interface SR-IOV. Uma vez criada, a pilha de virtualização anexa, ou atribui, o VF a uma partição filho Hyper-V. O sistema operacional convidado executado nessa partição expõe um adaptador de rede de máquina virtual (VM) que está vinculado 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 VM. No entanto, como o switch extensível não está envolvido na entrega de pacotes, as políticas de porta de switch extensível não são aplicadas a esses pacotes. Isso inclui políticas de porta para listas de controle de acesso (ACLs) e qualidade de serviço (QoS).
Uma extensão de encaminhamento de switch extensível pode remover a atribuição do VF à 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 switch extensível em vez de diretamente entre o adaptador de rede VM e o VF do adaptador físico SR-IOV subjacente. Isso permite que as políticas de porta de switch extensível sejam aplicadas a pacotes recebidos ou enviados pela porta de switch extensível.
Quando a extensão de encaminhamento faz a indicação de status NDIS_STATUS_SWITCH_PORT_REMOVE_VF, ela especifica a porta do switch extensível à qual o adaptador de rede VM está conectado.
Para obter mais informações sobre extensões de encaminhamento de switch extensíveis, consulte Forwarding Extensions.
Orientações para a emissão de uma indicação de estatuto 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 NDIS_STATUS_SWITCH_PORT_REMOVE_VF. Para esta indicação, as extensões de encaminhamento definem os seguintes membros da estrutura NDIS_STATUS_INDICATION:
O StatusCode membro 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 VF, a extensão de encaminhamento deve definir os membros da seguinte maneira:
O membro do DestinationPortId deve ser definido como o identificador de uma porta de switch extensível à qual o adaptador de rede VM está conectado.
O membro do DestinationNicIndex deve ser definido como o valor de índice do adaptador de rede VM conectado à porta especificada.
O SourcePortId membro 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 para o endereço da estrutura de NDIS_STATUS_INDICATION para a indicação NDIS_STATUS_SWITCH_PORT_REMOVE_VF.
A extensão de encaminhamento inicializa uma estrutura de NDIS_STATUS_INDICATION para a indicação NDIS_SWITCH_NIC_STATUS_INDICATION. Para esta indicação, a extensão de encaminhamento define os seguintes membros da estrutura NDIS_STATUS_INDICATION:
O StatusCode membro deve ser definido como NDIS_STATUS_SWITCH_NIC_STATUS.
O membro do StatusBuffer deve ser definido como o endereço da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION.
O StatusBufferSize deve ser definido para o comprimento, em bytes, da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION e da estrutura NDIS_STATUS_INDICATION para a indicação 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 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 de conjunto de OID_SWITCH_NIC_DISCONNECT para o adaptador de VM, ela não deverá chamar ReferenceSwitchNic nem encaminhar a indicação de status.
A extensão de encaminhamento chama NdisFIndicateStatus para encaminhar o NDIS_STATUS_INDICATION para extensões sobrepostas na pilha de driver de switch 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 NDIS_STATUS_SWITCH_NIC_STATUS.
Depois que NdisFIndicateStatus retorna, a extensão de encaminhamento deve chamar DereferenceSwitchNic para diminuir o contador de referência para o adaptador de rede VM.
Nota A extensão de encaminhamento deve seguir as etapas anteriores para cada atribuição 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 Filter Module Status Indications.
Diretrizes para determinar atribuições de FV
A extensão de encaminhamento pode enumerar as atribuições 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 NDIS_SWITCH_NIC_PARAMETERS. Cada estrutura NDIS_SWITCH_NIC_PARAMETERS especifica os parâmetros de um adaptador de rede que é exposto em um dos seguintes ambientes:
O sistema operacional de gerenciamento que é 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 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 do OID_SWITCH_NIC_ARRAY for concluída com um status de NDIS_STATUS_SUCCESS, a extensão de encaminhamento poderá determinar atribuições VF inspecionando cada estrutura NDIS_SWITCH_NIC_PARAMETERS na matriz retornada. Se o VFAssigned membro 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 DestinationPortId membro do NDIS_SWITCH_NIC_STATUS_INDICATION para o valor do PortId membro 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 NDIS_STATUS_SWITCH_PORT_REMOVE_VF.
Requerimentos
Versão |
Suportado no NDIS 6.30 e posterior. |
Cabeçalho |
Ndis.h (inclui Ndis.h) |