Modificando os dados extensíveis da porta de origem do comutador de um pacote
A porta de origem do comutador extensível do 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 de NET_BUFFER_LIST do pacote. Para obter mais informações sobre esse contexto, consulte Contexto de encaminhamento extensível do Hyper-V.
A extensão de comutador extensível deve seguir estas diretrizes para modificar o identificador de porta de origem de um pacote:
A extensão de comutador extensível deve chamar SetNetBufferListSource para modificar a porta de origem de um pacote. A extensão não deve modificar diretamente o membro SourcePortId da estrutura NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .
Se a extensão estiver criando ou clonando um pacote, ela deverá chamar a função AllocateNetBufferListForwardingContext depois de chamar NdisAllocateNetBufferList. Essa função aloca uma área de contexto de comutador extensível para os dados OOB 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 comutador extensível.
Pacotes com uma porta de origem de NDIS_SWITCH_DEFAULT_PORT_ID são tratados pelo caminho de dados de extensão de comutador extensível como privilegiado e confiável. Esse tráfego não deve ser submetido à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 ignorar as políticas de comutador extensíveis internas que são aplicadas pela borda do miniporto subjacente do comutador extensível. Essas políticas incluem ACLs (listas de controle de acesso) e QoS (qualidade do serviço).
Quando a extensão está originando o tráfego de pacotes, ela deve usar a porta de origem de 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 comutador 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 precisa usar a porta de origem de NDIS_SWITCH_DEFAULT_PORT_ID para pacotes originados. Por exemplo, se a extensão originar um pacote de controle que precisa ser enviado para seu destino na rede física ou virtual, ela deverá usar NDIS_SWITCH_DEFAULT_PORT_ID para o identificador da porta de origem. Isso garante que o pacote não será filtrado e rejeitado por extensões subjacentes na pilha extensível do driver de comutador.