Indicações de status de NDIS de adaptadores de rede física de origem
Este tópico discute o método usado por uma extensão de encaminhamento de comutador extensível para originar o NDIS status indicações para um adaptador de rede conectado ao comutador. A extensão pode originar uma indicação de status NDIS para os seguintes tipos de adaptadores:
Um ou mais adaptadores físicos subjacentes associados ao adaptador de rede externo do comutador extensível.
Por exemplo, o adaptador de rede externo pode ser associado à borda do miniporto virtual de um driver intermediário MUX (multiplexador NDIS). O driver MUX está associado a uma equipe de uma ou mais redes físicas no host. Essa configuração é conhecida como uma equipe de comutador extensível.
Nessa configuração, uma extensão de comutador extensível é exposta a todos os adaptadores de rede da equipe. Isso permite que a extensão gerencie a configuração e o uso de adaptadores de rede individuais na equipe. Por exemplo, uma extensão de encaminhamento pode fornecer suporte para uma solução lbfo (failover de balanceamento de carga) sobre a equipe encaminhando pacotes de saída para adaptadores individuais. Uma extensão de encaminhamento que gerencia uma equipe de comutador extensível é conhecida como um provedor de agrupamento. Para obter mais informações sobre provedores de agrupamento, consulte Extensões do provedor de agrupamento.
Um adaptador de rede de VM (máquina virtual) exposto em uma partição filho do Hyper-V e conectado a uma porta de comutador extensível.
A figura a seguir mostra o caminho de controle de comutador extensível do Hyper-V para NDIS status indicações de adaptadores de rede física e de VM para NDIS 6.40 (Windows Server 2012 R2) e posterior.
A figura a seguir mostra o caminho de controle de comutador extensível do Hyper-V para NDIS status indicações de adaptadores de rede física e de VM para NDIS 6.30 (Windows Server 2012).
Nota Na interface de comutador extensível, os drivers de filtro NDIS são conhecidos como extensões e a pilha de driver é conhecida como a pilha extensível de driver de comutador.
Uma extensão de encaminhamento pode originar o descarregamento de hardware encapsulado status indicações a drivers de sobreposição na pilha de driver de comutador extensível. Isso também permite que a extensão altere os recursos de descarregamento atuais da equipe subjacente de adaptadores físicos associados ao adaptador de rede externo do comutador extensível. Quando uma equipe de adaptadores está associada ao adaptador de rede externo, apenas os recursos comuns da equipe são anunciados para NDIS ou drivers de protocolo e filtros em excesso. A extensão pode estender os recursos anunciados originando indicações encapsuladas status para anunciar recursos com suporte de alguns adaptadores na equipe. Por exemplo, a extensão pode emitir uma indicação de NDIS_STATUS_RECEIVE_FILTER_CURRENT_CAPABILITIES encapsulada para alterar os recursos de filtro de recebimento habilitados no momento para toda a equipe.
Nota Somente extensões de encaminhamento podem originar indicações de status encapsuladas. Para obter mais informações sobre esse tipo de extensão, consulte Extensão de encaminhamento.
Normalmente, a extensão de encaminhamento origina indicações de NDIS status encapsuladas para alterar os recursos de descarregamento de hardware anunciados do adaptador físico subjacente. Por exemplo, a extensão pode originar status indicações para os seguintes tipos de descarregamentos de hardware:
IPsec (internet protocol security).
VMQ (fila de máquina virtualizada).
SR-IOV (Virtualização de E/S de raiz única).
A extensão de encaminhamento também pode originar indicações encapsuladas de NDIS status para alterar os recursos de descarregamento de hardware alocados para uma partição filho do Hyper-V. A partir do NDIS 6.30, a extensão pode emitir uma indicação de NDIS_STATUS_SWITCH_PORT_REMOVE_VF encapsulada para remover a associação entre um adaptador de rede de VM e uma VF (função virtual) PCI Express (PCIe). A VF é exposta e suportada por um adaptador de rede física subjacente que dá suporte à interface SR-IOV (virtualização de E/S de raiz única ).
Se a extensão de encaminhamento originar uma indicação de NDIS encapsulada status para os recursos de descarregamento de hardware de um adaptador físico subjacente, ela deverá definir os membros da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION da seguinte maneira:
O membro DestinationPortId deve ser definido como NDIS_SWITCH_DEFAULT_PORT_ID.
O membro DestinationNicIndex deve ser definido como NDIS_SWITCH_DEFAULT_NIC_INDEX
O membro SourcePortId deve ser definido como o identificador da porta de comutador extensível à qual o adaptador de rede externo está conectado.
O membro SourceNicIndex deve ser definido como NDIS_SWITCH_DEFAULT_NIC_INDEX. Isso permite que a indicação de status seja interpretada como proveniente de toda a equipe de comutador extensível associada ao adaptador de rede externo.
Nota A extensão de encaminhamento também deve definir esse membro como NDIS_SWITCH_DEFAULT_NIC_INDEX se apenas um único adaptador de rede física estiver associado ao adaptador de rede externo.
O membro StatusIndication deve ser definido como um ponteiro para uma estrutura NDIS_STATUS_INDICATION . Essa estrutura contém os dados para a indicação de status NDIS encapsulada.
Se a extensão de encaminhamento estiver originando uma indicação de NDIS status para os recursos de descarregamento de hardware de uma partição filho do Hyper-V, ela deverá definir os membros da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION da seguinte maneira:
Os membros DestinationPortId e DestinationNicIndex devem ser definidos como os valores correspondentes do índice de porta e adaptador de rede para a conexão de rede usada pela partição.
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 um ponteiro para uma estrutura NDIS_STATUS_INDICATION . Essa estrutura contém os dados para a indicação de status NDIS encapsulada.
Quando a extensão emite a indicação de status NDIS encapsulada, ela deve seguir estas etapas:
A extensão chama ReferenceSwitchNic para incrementar um contador de referência para a conexão do adaptador de rede de origem ou de destino. Isso garante que a interface de comutador extensível não exclua a conexão do adaptador de rede enquanto o contador de referência for diferente de zero.
Quando a extensão chama ReferenceSwitchNic, ela define os parâmetros das seguintes maneiras:
Se a extensão de encaminhamento estiver originando uma indicação de NDIS encapsulada status para um adaptador físico subjacente, ela definirá o parâmetro SwitchPortId como o valor especificado para o membro SourcePortId. A extensão também define o parâmetro SwitchNicIndex como o valor especificado para o membro SourceNicIndex .
Se a extensão de encaminhamento estiver originando uma indicação de NDIS status para uma partição filho do Hyper-V, ela definirá o parâmetro SwitchPortId como o valor especificado para o membro DestinationPortId. A extensão também define o parâmetro SwitchNicIndex como o valor especificado para o membro DestinationNicIndex .
Nota Se ReferenceSwitchNic não retornar NDIS_STATUS_SUCCESS, a indicação de status NDIS encapsulada não poderá ser emitida.
A extensão chama NdisFIndicateStatus para encaminhar a notificação de status encapsulada.
Nota Se a extensão estiver encaminhando uma solicitação OID filtrada, ela deverá chamar NdisFIndicateStatus dentro do contexto da chamada para sua função FilterStatus .
Depois que NdisFIndicateStatus retornar, a extensão chamará DereferenceSwitchNic para limpar o contador de referência para a conexão do adaptador de rede de origem ou destino. A extensão define os parâmetros SwitchPortId e SwitchNicIndex com os mesmos valores usados na chamada para ReferenceSwitchNic.