Partilhar via


Modificando os dados da porta de origem do switch extensível de um pacote

A porta de origem do switch extensível Hyper-V é especificada pelo membro SourcePortId na estrutura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO. Essa estrutura está contida no contexto de encaminhamento fora de banda (OOB) da estrutura NET_BUFFER_LIST do pacote. Para obter mais informações sobre esse contexto, consulte Hyper-V Extensible Switch Forwarding Context.

A extensão de switch extensível deve seguir estas diretrizes para modificar o identificador de porta de origem de um pacote:

  • A extensão de switch extensível deve chamar SetNetBufferListSource para modificar a porta de origem de um pacote. O membro SourcePortId da estrutura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO não deve ser modificado diretamente pela extensão.

  • Se a extensão estiver criando ou clonando um pacote, ela deverá chamar a função AllocateNetBufferListForwardingContext depois de chamar NdisAllocateNetBufferList. Esta função aloca uma área de contexto de switch extensível para os dados OOB que são usados para encaminhar informações para o pacote.

    Quando a extensão chama AllocateNetBufferListForwardingContext, o membro SourcePortId é definido como NDIS_SWITCH_DEFAULT_PORT_ID. Isso especifica que o pacote se originou de uma extensão em vez de chegar a uma porta de switch extensível.

    Os pacotes com uma porta de origem de NDIS_SWITCH_DEFAULT_PORT_ID são considerados privilegiados e confiáveis pela trajetória de dados da extensão do "switch" extensível. Esse tráfego não deve estar sujeito às políticas aplicadas a pacotes de outras portas de origem. Por exemplo, pacotes com um identificador de porta de origem de NDIS_SWITCH_DEFAULT_PORT_ID contornam as políticas internas do switch extensível que são aplicadas pela borda subjacente da miniporta do switch extensível. Essas políticas incluem listas de controle de acesso (ACLs) e qualidade de serviço (QoS).

    Quando a extensão está originando tráfego de pacotes, ela deve usar a porta de origem do NDIS_SWITCH_DEFAULT_PORT_ID com moderação e cuidado. Na maioria dos casos, a extensão deve modificar o identificador da porta de origem para uma porta ativa no switch extensível. Isso permite que as políticas dessa porta sejam aplicadas ao pacote.

    No entanto, pode haver situações em que a extensão tenha que usar a porta de origem do NDIS_SWITCH_DEFAULT_PORT_ID para os pacotes que ela origina. Por exemplo, se a extensão originar um pacote de controle que precisa ser enviado para seu destino na rede física ou virtual, ele deve usar NDIS_SWITCH_DEFAULT_PORT_ID para o identificador de porta de origem. Isso garante que o pacote não será filtrado e rejeitado por extensões subjacentes na pilha de driver de switch extensível.