Encaminhando pacotes para portas de comutador extensíveis do Hyper-V
Esta página descreve como uma extensão de encaminhamento extensível do Hyper-V pode encaminhar pacotes para uma ou mais portas. Esse tipo de extensão também pode encaminhar pacotes para adaptadores de rede individuais conectados ao adaptador de rede externo comutador extensível.
Nota Somente a extensão de encaminhamento de comutador extensível ou o próprio comutador extensível pode encaminhar pacotes para portas de comutador extensíveis.
Nota Esta página pressupõe que você esteja familiarizado com as informações e diagramas em Visão geral do Comutador Extensível do Hyper-V e encaminhamento híbrido.
Nota Na interface de comutador extensível, os drivers de filtro NDIS são conhecidos como extensíveis extensíveis e a pilha de driver é conhecida como a pilha extensível do driver de comutador. Para obter mais informações sobre extensões, consulte Extensões de Comutador Extensível do Hyper-V.
Se uma extensão de encaminhamento estiver instalada e habilitada na pilha de driver de comutador extensível, ela será responsável por tomar decisões de encaminhamento para cada pacote obtido no caminho de dados de entrada do comutador extensível. Com base nessas decisões de encaminhamento, a extensão adiciona portas de destino à matriz de porta de destino nos dados OOB (fora de banda) da estrutura de NET_BUFFER_LIST do pacote. Depois que o pacote tiver concluído sua passagem do caminho de dados de comutador extensível, a interface de comutador extensível entregará o pacote às portas de destino especificadas.
Nota Se uma extensão de encaminhamento não estiver instalada ou habilitada, a opção extensível tomará as decisões de encaminhamento dos pacotes obtidos do caminho de dados de entrada. A opção adiciona as portas de destino aos dados OOB da estrutura NET_BUFFER_LIST do pacote antes de encaminhar o pacote para o caminho de dados de saída do comutador extensível.
Nota Se o pacote for um pacote NVGRE, a extensão de encaminhamento poderá adicionar portas de destino à matriz de porta de destino. No entanto, o componente HNV (Virtualização de Rede) do Hyper-V da opção extensível é responsável por determinar as portas de destino e encaminhar o pacote. Para obter mais informações, consulte Encaminhamento Híbrido.
A extensão de encaminhamento pode adicionar destinos de porta somente a pacotes obtidos do caminho de dados de entrada. Depois que o pacote é encaminhado até o caminho de dados de saída, as extensões de filtragem e encaminhamento podem excluir a entrega de pacotes para portas de comutador extensíveis. Para obter mais informações, consulte Excluindo a entrega de pacotes para portas de destino de comutador extensível.
Dentro dos dados OOB da estrutura de NET_BUFFER_LIST de um pacote, os dados das portas de destino estão contidos em uma estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Cada elemento na matriz define uma porta de destino e é formatado como uma estrutura NDIS_SWITCH_PORT_DESTINATION .
A extensão de encaminhamento pode chamar as seguintes funções de manipulador do Comutador Extensível do Hyper-V para gerenciar a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY e seus elementos NDIS_SWITCH_PORT_DESTINATION :
AddNetBufferListDestination
Essa função adiciona uma única porta de destino à estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nos dados OOB do pacote.
GetNetBufferListDestinations
Essa função retorna um ponteiro para a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nos dados OOB de um pacote.
GrowNetBufferListDestinations
Essa função adiciona mais elementos de porta de destino à estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY dos dados OOB de um pacote.
UpdateNetBufferListDestinations
Essa função confirma as modificações feitas pela extensão para adicionar ou excluir uma ou mais portas de destino para um pacote. Essas alterações são confirmadas na estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY nos dados OOB do pacote.
Quando a função FilterSendNetBufferLists da extensão de encaminhamento é chamada, o parâmetro NetBufferList contém um ponteiro para uma lista vinculada de estruturas de NET_BUFFER_LIST . Cada uma dessas estruturas especifica um pacote obtido do caminho de dados de entrada.
Para cada estrutura NET_BUFFER_LIST nesta lista, a extensão de encaminhamento adiciona portas de destino para o pacote seguindo estas etapas:
A extensão toma decisões de encaminhamento para o pacote com base em vários tipos de critérios. Esses critérios incluem o seguinte:
Critérios de política com base na porta de origem do pacote e na conexão do adaptador de rede. A extensão de encaminhamento obtém essas informações usando a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
Critérios de política para uma porta de comutador extensível com base nos dados de carga do pacote. Por exemplo, uma política para uma porta de comutador extensível pode incluir um filtro para permitir a entrega apenas de pacotes ip versão 4 (IPv4).
Nota Se o pacote for um pacote NVGRE, o componente HNV da opção extensível será responsável por encaminhar o pacote. No entanto, a extensão de encaminhamento pode aplicar seus próprios critérios de política nos caminhos de entrada e saída. Para obter mais informações, consulte Encaminhamento Híbrido.
Se a extensão determinar que o pacote pode ser encaminhado para uma ou mais portas de comutador extensíveis, ela deverá adicionar portas de destino aos dados OOB do pacote. Para obter mais informações sobre esse procedimento, consulte Adicionando dados extensíveis de porta de destino de comutador a um pacote.
Nota Se o pacote for um pacote NVGRE, a extensão de encaminhamento não será necessária para adicionar portas de destino. Para obter mais informações, consulte Encaminhamento Híbrido.
Se a extensão determinar que o pacote não pode ser encaminhado para nenhuma porta de comutador extensível, ele deverá remover o pacote.
Nota Isso não será verdade se o pacote for um pacote NVGRE. Para obter mais informações, consulte Encaminhamento Híbrido.
Se a extensão tiver adicionado uma ou mais portas de destino para o pacote, ela deverá chamar NdisFSendNetBufferLists para encaminhar o pacote no caminho de dados de saída.
Nota Se o pacote for um pacote NVGRE, o componente HNV da opção extensível será responsável por encaminhar o pacote. Para obter mais informações, consulte Encaminhamento Híbrido.
Para obter mais informações sobre os caminhos de dados de entrada e saída do comutador extensível, consulte Caminho de dados de comutador extensível do Hyper-V.