Partilhar via


Hyper-V Sinalizadores de Envio e Recebimento de Switch Extensível

Observação Esta página pressupõe que você esteja familiarizado com as informações e diagramas em Visão geral do Hyper-V Comutador Extensível e do Encaminhamento Híbrido.

O tráfego de pacotes que se move pelo caminho de dados do switch extensível Hyper-V é obtido por extensões da seguinte maneira:

  • Uma extensão obtém um pacote do caminho de dados de entrada quando a sua função FilterSendNetBufferLists é chamada. A extensão encaminha o pacote para extensões subjacentes no caminho de dados de entrada chamando NdisFSendNetBufferLists. As extensões de filtragem e encaminhamento também podem descartar o pacote do percurso de dados de entrada chamando NdisFSendNetBufferListsComplete.

  • Uma extensão obtém um pacote do caminho de dados de saída quando a sua função FilterReceiveNetBufferLists é chamada. A extensão encaminha o pacote para extensões sobrepostas no caminho de dados de saída chamando NdisFIndicateReceiveNetBufferLists. As extensões de filtragem e encaminhamento também podem descartar o pacote do caminho de dados de saída chamando NdisFReturnNetBufferLists.

Os seguintes sinalizadores podem ser definidos no parâmetro SendFlags de FilterSendNetBufferLists ou NdisFSendNetBufferLists:

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Se este sinalizador estiver definido, todos os pacotes em uma lista ligada de estruturas de NET_BUFFER_LIST originaram-se da mesma porta de origem do comutador extensível Hyper-V.

Quando o NDIS chama FilterSendNetBufferLists, definirá este indicador se a interface extensível do comutador extensível tiver agrupado vários pacotes a partir da mesma porta de origem. Para obter o melhor desempenho, as extensões devem manter esse agrupamento no lugar e definir esse sinalizador quando ele chama NdisFSendNetBufferLists. A extensão também pode adicionar quaisquer pacotes originados ou clonados à lista vinculada de estruturas NET_BUFFER_LIST se a extensão usar a mesma porta de origem que os outros pacotes na lista.

Observação Se cada pacote na lista vinculada de estruturas NET_BUFFER_LIST usa a mesma porta de origem, a extensão deve definir o sinalizador de NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro SendCompleteFlags de NdisFSendNetBufferListsComplete quando concluir a solicitação de envio.

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas NET_BUFFER_LIST devem ser encaminhados para a mesma porta de destino do switch extensível.

Uma extensão de encaminhamento pode usar esse sinalizador para uma lista vinculada de estruturas de NET_BUFFER_LIST que encaminha no caminho de dados de entrada depois de determinar as portas de destino de cada pacote. Este sinalizador é consumido e removido pela interface miniport subjacente do switch extensível antes de encaminhar os pacotes pelo caminho de saída de dados.

As extensões de captura e filtragem não podem usar esse sinalizador.

Observação A extensão de encaminhamento determina apenas as portas de destino do pacote para pacotes não-NVGRE. Se o pacote for um pacote NVGRE, o componente Hyper-V Network Virtualization (HNV) determinará as portas de destino do pacote e encaminhará o pacote. Para obter mais informações, consulte Hybrid Forwarding.

Para obter o melhor desempenho, as extensões de encaminhamento devem definir esse sinalizador se todos os pacotes na lista vinculada forem encaminhados para a mesma porta de destino. Ao definir esse sinalizador, a extensão está reconhecendo que todos os pacotes na lista vinculada têm os mesmos elementos de porta de destino no contexto de encaminhamento de switch extensível.

Observação A extensão de encaminhamento não deve definir esse sinalizador para uma lista vinculada de pacotes que têm várias portas de destino.

Os seguintes sinalizadores podem ser definidos no parâmetro ReceiveFlags de FilterReceiveNetBufferLists ou NdisFIndicateReceiveNetBufferLists:

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Se esse sinalizador estiver definido, todos os pacotes em uma lista vinculada de estruturas de NET_BUFFER_LIST originados da mesma porta de origem do switch extensível Hyper-V.

Quando o NDIS chama FilterReceiveNetBufferLists, ele definirá esse sinalizador se o switch extensível tiver agrupado vários pacotes da mesma porta de origem. Para obter o melhor desempenho, as extensões devem manter esse agrupamento no lugar e definir esse sinalizador quando ele chama NdisMIndicateReceiveNetBufferLists. As extensões também devem adicionar quaisquer pacotes originados ou clonados à lista vinculada de estruturas NET_BUFFER_LIST se o pacote tiver a mesma porta de origem que os outros pacotes na lista.

Observação Se cada pacote na lista vinculada de estruturas NET_BUFFER_LIST usar a mesma porta de origem, a extensão deverá definir o sinalizador NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE no parâmetro ReturnFlags de FilterReturnNetBufferLists quando a solicitação de recebimento for concluída. A extensão deve definir este sinalizador no parâmetro ReturnFlags caso chame NdisFReturnNetBufferLists para retornar pacotes que não foram originados ou clonados.

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Se esse sinalizador for definido, todos os pacotes em uma lista vinculada de estruturas NET_BUFFER_LIST devem ser encaminhados para a mesma porta de destino do switch extensível.

Quando o NDIS chama FilterReceiveNetBufferLists, ele definirá esse sinalizador se o switch extensível tiver agrupado vários pacotes que tenham as mesmas portas de destino. Para obter o melhor desempenho, as extensões devem manter esse agrupamento no lugar e definir esse sinalizador quando ele chama NdisMIndicateReceiveNetBufferLists. As extensões também devem adicionar quaisquer pacotes originados ou clonados à lista vinculada de estruturas NET_BUFFER_LIST se o pacote tiver as mesmas portas de destino que os outros pacotes na lista.

Observação Quando uma extensão chama NdisFIndicateReceiveNetBufferLists, ela não deve definir o sinalizador NDIS_RECEIVE_FLAGS_RESOURCES no parâmetro ReceiveFlags . A interface de switch extensível ignora este sinalizador e completará a recepção chamando FilterReturnNetBufferLists.