Compartilhar via


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.

Diagrama mostrando uma equipe de comutador extensível para o NDIS 6.40.

A figura a seguir mostra um exemplo de uma equipe de comutador extensível para o NDIS 6.30 (Windows Server 2012).

Diagrama ilustrando uma equipe de comutador extensível para o NDIS 6.30.

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.