Gerenciando solicitações de OID de descarregamento de hardware para adaptadores de rede física
Este tópico discute como uma extensão de encaminhamento de comutador extensível do Hyper-V gerencia solicitações de OID (identificador de objeto) para tecnologias de descarregamento de hardware em adaptadores físicos subjacentes sobre o caminho de controle de 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.
A figura a seguir mostra um exemplo de uma equipe de comutador extensível para o NDIS 6.40 (Windows Server 2012 R2) e posterior.
A figura a seguir mostra um exemplo de uma equipe de comutador extensível 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 e a pilha de driver é conhecida como a pilha extensível de driver de comutador.
Ao lidar com a solicitação OID de OID_SWITCH_NIC_REQUEST, uma extensão de encaminhamento pode participar da configuração da equipe de comutador extensível para descarregamentos de hardware. Por exemplo, se a extensão gerenciar os adaptadores de rede física de uma equipe de comutador extensível, ela poderá encaminhar a solicitação de OID_SWITCH_NIC_REQUEST para um adaptador físico que dê suporte ao descarregamento de hardware.
O NDIS e os drivers de filtro e protocolo sobrepostos podem emitir solicitações de OID para tecnologias de descarregamento de hardware para o adaptador de rede física subjacente. Quando essas solicitações de OID chegam à interface de comutador extensível, ela encapsula a solicitação OID dentro de um NDIS_SWITCH_NIC_OID_REQUEST. Em seguida, a borda do protocolo do comutador extensível emite uma solicitação OID de OID_SWITCH_NIC_REQUEST que contém essa estrutura.
A interface de comutador extensível encapsula os OIDs para as seguintes tecnologias de descarregamento de hardware:
Descarregamento de IPsec (internet protocol security) (versão 2)
As seguintes solicitações de OID IPsec são encapsuladas:
A extensão de encaminhamento não deve falhar ou vetar essas solicitações de OID.
Para obter mais informações sobre a versão 2 da tecnologia de descarregamento de hardware IPsec, consulte Descarregamento IPsec versão 2.
Virtualização de E/S de raiz única (SR-IOV)
As seguintes solicitações OID SR-IOV são encapsuladas:
A extensão de encaminhamento pode vetar solicitações OID de OID_NIC_SWITCH_ALLOCATE_VF e OID_NIC_SWITCH_CREATE_VPORT concluindo a solicitação com um código de status diferente de NDIS_STATUS_SUCCESS. No entanto, a extensão não deve vetar as outras solicitações OID SR-IOV.
Para obter mais informações sobre a tecnologia de descarregamento de hardware SR-IOV, consulte Sr-IOV (Virtualização de E/S de Raiz Única).
VMQ (fila de máquina virtualizada)
As seguintes solicitações de OID do VMQ são encapsuladas:
A extensão de encaminhamento pode vetar solicitações OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE e OID_RECEIVE_FILTER_SET_FILTER concluindo a solicitação com um código de status diferente de NDIS_STATUS_SUCCESS. No entanto, a extensão não deve vetar as outras solicitações de OID do VMQ.
Para obter mais informações sobre a tecnologia de descarregamento de hardware da VMQ, consulte VMQ (Fila de Máquina Virtual).
A extensão de encaminhamento deve seguir estas diretrizes para lidar com solicitações OID de descarregamento de hardware:
A plataforma de mensagens instantâneas da Microsoft anuncia apenas os recursos comuns de descarregamento para a equipe em geral. No entanto, a extensão pode gerar solicitações de OID para consultar os recursos de cada adaptador na equipe.
Depois que a extensão tiver determinado os recursos de hardware dos adaptadores físicos na equipe, ela poderá encaminhar solicitações de conjunto de OID para descarregamentos de hardware para um adaptador mais adequado para o descarregamento.
Todas as solicitações de OID de descarregamento de hardware originadas por drivers de filtro ou protocolo excessivamente serão encapsuladas em uma estrutura de NDIS_SWITCH_NIC_OID_REQUEST . Todas as solicitações de OID de descarregamento de hardware originadas pela extensão de encaminhamento também devem ser encapsuladas em uma estrutura de NDIS_SWITCH_NIC_OID_REQUEST .
A extensão encaminha a solicitação OID encapsulada para um adaptador de rede física subjacente por meio de uma solicitação de conjunto OID de OID_SWITCH_NIC_REQUEST. Para obter mais informações sobre esse procedimento, consulte Encaminhando solicitações OID para adaptadores de rede física.
A extensão não deve modificar nem falhar nas solicitações de OID de descarregamento de hardware para limpar, liberar ou concluir a alocação de recursos de descarregamento. Por exemplo, a extensão não deve falhar nas solicitações OID de OID_RECEIVE_FILTER_CLEAR_FILTER ou OID_NIC_SWITCH_DELETE_VPORT. A interface de comutador extensível deve lidar com essas solicitações de OID para limpo informações de estado para esses recursos.
A extensão pode modificar ou falhar solicitações de OID de descarregamento de hardware para alocar, mover ou definir recursos de descarregamento. Por exemplo, a extensão pode falhar ou modificar solicitações OID de OID_NIC_SWITCH_ALLOCATE_VF ou OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA.
A extensão pode originar qualquer OIDs de descarregamento de hardware para um adaptador de rede física subjacente. No entanto, a extensão não deve originar um OID de descarregamento de hardware que limpe ou libere os recursos de descarregamento que a extensão não alocou.
Por exemplo, a extensão não deve originar uma solicitação de OID de descarregamento de hardware de OID_RECEIVE_FILTER_FREE_QUEUE se não tiver originado uma solicitação de OID_RECEIVE_FILTER_ALLOCATE_QUEUE para a mesma fila.
Nota A extensão só poderá originar sua própria solicitação OID de descarregamento de hardware encapsulado se estiver filtrando a mesma solicitação OID que foi emitida por drivers sobrepostos. Nesse caso, a extensão não deve encaminhar a solicitação OID original. Em vez disso, a extensão deve chamar NdisFOidRequestComplete para concluir essa solicitação quando o NDIS chamar seu FilterOidRequestComplete para concluir a solicitação OID originada.
Se a extensão estiver encaminhando uma solicitação OID de descarregamento de hardware para um adaptador de rede física subjacente, o membro DestinationNicIndex da estrutura NDIS_SWITCH_NIC_OID_REQUEST deverá ser definido como o valor de índice diferente de zero do adaptador. Para obter mais informações sobre esses valores de índice, consulte Valores de índice do adaptador de rede.
Além disso, o membro DestinationPortId deve ser definido como o identificador da porta de comutador extensível à qual o adaptador de rede externo está conectado.
Se a extensão estiver originando uma solicitação OID de descarregamento de hardware para alocar recursos para uma partição filho do Hyper-V, o membro SourcePortId da estrutura NDIS_SWITCH_NIC_OID_REQUEST deverá ser definido como o identificador da porta de comutador extensível à qual a partição está conectada.
O membro SourceNicIndex deve ser definido como NDIS_SWITCH_DEFAULT_NIC_INDEX.
Quando a extensão chama NdisFOidRequest para encaminhar a solicitação OID, ela deve definir o parâmetro OidRequest como um ponteiro para uma estrutura NDIS_OID_REQUEST para uma solicitação OID OID_SWITCH_NIC_REQUEST .
Para obter mais informações sobre como a extensão filtra solicitações OID, consulte Filtrando solicitações OID em um driver de filtro NDIS.
Para obter mais informações sobre drivers MUX, consulte Drivers intermediários do NDIS MUX.