Encaminhando indicações de status do NDIS de adaptadores de rede física
Este tópico discute o método usado por extensíveis extensíveis de encaminhamento de comutador para encaminhar indicações de NDIS status de um adaptador físico subjacente. Um ou mais adaptadores físicos subjacentes podem ser associados ao adaptador de rede externo do comutador extensível do Hyper-V.
Por exemplo, o adaptador de rede externo pode ser associado à borda do miniporto virtual de um driver intermediário MUX (multiplexer 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 de provedor de agrupamento.
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 subjacentes para o NDIS 6.40 (Windows Server 2012 R2) e posteriores.
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 subjacentes para o NDIS 6.30 (Windows Server 2012).
Nota Na interface de comutador extensível, os drivers de filtro NDIS são conhecidos como extensíveis extensíveis e a pilha de driver é conhecida como a pilha extensível do driver de comutador.
A interface de comutador extensível encaminha o NDIS status indicações que foram geradas pelos adaptadores físicos subjacentes. Se um adaptador de rede externo estiver associado a uma equipe de comutador extensível, a indicação de status do NDIS será originada pela borda do adaptador virtual de um driver MUX. Caso contrário, a indicação de status é originada pelo único adaptador de rede física associado ao adaptador de rede externo.
Quando uma indicação de status NDIS chega à interface de comutador extensível, ela encapsula a indicação dentro de uma estrutura de NDIS_SWITCH_NIC_STATUS_INDICATION. Em seguida, a borda do miniporto do comutador extensível emite uma indicação NDIS_STATUS_SWITCH_NIC_STATUS que contém essa estrutura.
Depois que a extensão de encaminhamento receber a indicação de status do NDIS, ela poderá encaminhar os dados de indicação originais ou modificar os dados antes de encaminhar a indicação.
Nota Somente extensões de encaminhamento podem modificar os dados antes de encaminhar a indicação de status. Para obter mais informações sobre esse tipo de extensão, consulte Extensão de encaminhamento.
Uma extensão de encaminhamento pode modificar e encaminhar status indicações de qualquer adaptador físico subjacente associado ao adaptador de rede externo do comutador extensível. Normalmente, a extensão emite esses status indicações para alterar os recursos anunciados de descarregamento de hardware do adaptador físico subjacente. Por exemplo, a extensão pode modificar e encaminhar status indicações para os seguintes tipos de descarregamentos de hardware:
Segurança do Protocolo internet (IPsec)
Fila de máquina virtualizada (VMQ)
Virtualização de E/S de raiz única (SR-IOV)
Se a extensão de encaminhamento estiver encaminhando uma indicação de status do NDIS, ela deverá definir os membros da estrutura NDIS_SWITCH_NIC_STATUS_INDICATION da seguinte maneira:
O membro SourcePortId deve ser definido como o identificador da porta à qual o adaptador de rede externo está conectado. O adaptador de rede externo está associado a um ou mais adaptadores físicos. Para obter mais informações, consulte Adaptadores de Rede Externa.
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.
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 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 uma extensão de encaminhamento 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 o adaptador de rede externo. Isso garante que a interface do comutador extensível não exclua a conexão do adaptador de rede enquanto o contador de referência não for zero.
Quando a extensão chama ReferenceSwitchNic, ela define 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 .
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 um NDIS encapsulado status indicação, 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 de destino. A extensão define os parâmetros SwitchPortId e SwitchNicIndex com os mesmos valores usados na chamada para ReferenceSwitchNic.
Para obter mais informações sobre drivers MUX, consulte Drivers intermediários do MUX do NDIS.