Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação Esta página pressupõe que esteja familiarizado com as informações e diagramas em Visão geral do Hyper-V de Comutador Extensível e de Encaminhamento Híbrido.
A estrutura NET_BUFFER_LIST de cada pacote que percorre o trajeto de dados do switch extensível Hyper-V contém dados fora de banda (OOB). Esses dados especificam a porta de origem de onde o pacote se originou, bem como uma ou mais portas de destino para entrega de pacotes. Esses dados OOB são conhecidos como o contexto de encaminhamento extensível de switch .
Nota O contexto de encaminhamento do switch extensível é diferente da estrutura NET_BUFFER_LIST_CONTEXT. Isso permite que as extensões aloquem suas próprias estruturas de contexto sem afetar o contexto de encaminhamento.
O contexto de encaminhamento do switch extensível é alocado e libertado da seguinte maneira:
Quando um pacote chega ao switch extensível de um adaptador de rede, a interface do comutador extensível aloca o contexto de encaminhamento e o associa à estrutura NET_BUFFER_LIST do pacote.
Quando o pacote é entregue nas suas portas de destino, a interface libera o contexto de encaminhamento da estrutura NET_BUFFER_LIST do pacote.
Se uma extensão do comutador extensível injetar um pacote novo ou clonado no caminho de dados do comutador extensível, deverá alocar o contexto de encaminhamento antes de chamar NdisFSendNetBufferLists.
Depois que a extensão aloca uma estrutura de NET_BUFFER_LIST para um pacote novo ou clonado, ela deve chamar a função AllocateNetBufferListForwardingContext para alocar o contexto de encaminhamento para o pacote. Quando a solicitação de pacote de envio é concluída, a extensão deve chamar FreeNetBufferListForwardingContext antes de liberar ou reutilizar a estrutura NET_BUFFER_LIST.
Observação Quando a extensão chama AllocateNetBufferListForwardingContext, a porta de origem do pacote é definida 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. Sob certas condições, a extensão pode querer alterar a porta de origem do pacote. Para mais informações, consulte Modificar os Dados da Porta de Origem do Switch Extensível de um Pacote.
Para obter mais informações, consulte Hyper-V Operações de Envio e Recepção do Switch Extensível.
Todas as extensões de comutador extensível podem invocar as seguintes funções de manipulador de comutador extensível para aceder aos dados no contexto de encaminhamento do pacote:
AllocateNetBufferListForwardingContext
Aloca o contexto de encaminhamento do switch extensível e prepara uma estrutura NET_BUFFER_LIST para operações de envio e receção dentro do switch extensível.
CopyNetBufferListInfo
Copia o contexto de encaminhamento da estrutura NET_BUFFER_LIST de um pacote de origem para a estrutura NET_BUFFER_LIST de um pacote de destino. Esses dados incluem a porta de origem do switch extensível e informações do adaptador de rede. As informações da porta de destino do switch extensível também podem ser copiadas para o pacote de destino.
FreeNetBufferListForwardingContext
Libera os recursos no contexto extensível de encaminhamento de switch de uma estrutura NET_BUFFER_LIST. Esses dados foram usados para operações de envio ou recebimento em um switch extensível Hyper-V e foram alocados anteriormente chamando a função AllocateNetBufferListForwardingContext.
GetNetBufferListDestinations
Retorna as portas de destino do contexto de encaminhamento da estrutura NET_BUFFER_LIST de um pacote.
Uma extensão de encaminhamento é responsável por adicionar portas de destino para um pacote, a menos que o pacote seja um pacote NVGRE. (Para obter mais informações, consulte Hybrid Forwarding.) A extensão chama as seguintes funções de manipulador de switch extensível para adicionar ou atualizar as portas de destino dentro do contexto de encaminhamento do pacote:
AddNetBufferListDestination
Adiciona um único destino à área de contexto de encaminhamento do switch extensível para um pacote especificado por uma estrutura NET_BUFFER_LIST.
Nota Esta chamada confirma a alteração na área de contexto de encaminhamento. Nesse caso, a extensão de encaminhamento não precisa chamar UpdateNetBufferListDestinations.
GrowNetBufferListDestinos
Aumenta o tamanho do array de portas de destino na área de contexto de encaminhamento da estrutura NET_BUFFER_LIST de um pacote.
UpdateNetBufferListDestinations
Confirma as modificações que a extensão fez em uma ou mais portas de destino de switches extensíveis num pacote. Esta função atualiza o contexto de encaminhamento da estrutura de NET_BUFFER_LIST de um pacote com essas alterações.
Observação Depois que a extensão de encaminhamento executa as alterações das portas de destino para o contexto de encaminhamento, as portas de destino não podem ser removidas e apenas o membro IsExcluded da estrutura NDIS_SWITCH_PORT_DESTINATION de uma porta de destino pode ser alterado. Para mais informações, consulte Excluindo a entrega de pacotes para as portas de destino do comutador extensível.
Tópicos relacionados
Hyper-V Contexto de Encaminhamento de Switch Extensível
Hyper-V Tipos de dados do contexto de encaminhamento de switch extensível