Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve as diretrizes que as extensões de switch extensível Hyper-V devem seguir para gerir pacotes recebidos no caminho de dados do switch extensível.
Observação Na interface de comutador extensível, os drivers de filtro NDIS são conhecidos como extensões de comutador extensível e a pilha de drivers é conhecida como a pilha de drivers de comutador extensível . Para obter mais informações sobre as extensões, consulte Hyper-V Extensões de Comutador 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 Encaminhamento Híbrido.
As extensões devem seguir estas diretrizes para o gerenciamento de pacotes no caminho de dados do switch extensível:
As extensões que originam pacotes devem chamar NdisFSendNetBufferLists para iniciar uma solicitação de envio no caminho de dados de entrada. Isso deve ser feito desta forma para permitir o encaminhamento adequado do pacote através do comutador extensível.
Uma extensão de captura pode monitorar pacotes no caminho de dados de entrada e saída do switch extensível. No entanto, esse tipo de extensão deve sempre encaminhar pacotes e não deve soltá-los. Além disso, a extensão de captura não deve modificar os dados do pacote antes de encaminhar o pacote.
No percurso de dados de entrada do switch extensível, as extensões de filtragem e encaminhamento podem realizar o seguinte:
As extensões de filtragem podem filtrar o tráfego de pacotes e impor apenas políticas personalizadas de porta ou switch para entrega de pacotes por meio do switch extensível. Quando a extensão filtra pacotes no caminho de dados de entrada, ela só pode aplicar regras de filtragem com base apenas na porta de origem e na conexão do adaptador de rede da qual o pacote se originou. Essas informações são armazenadas nos dados OOB da estrutura NET_BUFFER_LIST de um pacote e podem ser obtidas usando a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL.
Observação Os pacotes obtidos no caminho de dados de entrada não contêm portas de destino. A filtragem de pacotes com base nas portas de destino só pode ser feita em pacotes obtidos no trajeto de dados de saída.
As extensões de encaminhamento podem filtrar o tráfego de pacotes e impor políticas de porta ou switch personalizadas e padrão para entrega de pacotes por meio do switch extensível. Quando a extensão de encaminhamento filtra pacotes no caminho de dados de entrada, ela aplica regras de filtragem com base na porta de origem, bem como nas portas de destino que a extensão de encaminhamento atribui ao pacote.
No caminho de dados de saída do switch extensível, as extensões de filtragem e encaminhamento podem fazer o seguinte:
As extensões de filtragem podem filtrar o tráfego de pacotes e impor apenas políticas personalizadas de porta ou switch para entrega de pacotes por meio do switch extensível. Quando a extensão de filtragem filtra pacotes no caminho de dados de saída, ela pode aplicar regras de filtragem baseadas apenas nas portas de destino de um pacote.
Os dados da porta de destino são armazenados nos dados OOB da estrutura NET_BUFFER_LIST de um pacote. As extensões obtêm essas informações chamando a função GetNetBufferListDestinations.
As extensões de encaminhamento podem filtrar o tráfego de pacotes e impor políticas de porta ou switch personalizadas e padrão para entrega de pacotes por meio do switch extensível. Quando a extensão de encaminhamento filtra pacotes no caminho de dados de saída, ela pode aplicar regras de filtragem com base nas portas de origem ou de destino de um pacote.
Com base nas políticas impostas a um pacote, a extensão de filtragem ou encaminhamento pode excluir a entrega do pacote para um ou mais destinos. Para mais informações sobre este procedimento, consulte Excluir a entrega de pacotes para as portas de destino do switch extensível.
Com base nas políticas impostas a um pacote, a extensão de encaminhamento pode excluir a entrega do pacote para um ou mais destinos. Para obter mais informações, consulte Hybrid Forwarding.
No caminho de dados de saída do comutador extensível, as extensões de filtragem e encaminhamento não devem fazer o seguinte:
Modifique os dados do pacote antes de encaminhá-lo no caminho de dados de saída.
Se uma extensão de filtragem precisar modificar os dados de um pacote, ela deve primeiro clonar o pacote sem manter os destinos de porta. Em seguida, a extensão deve injetar o pacote modificado no caminho de dados de entrada. Isso permite que as extensões subjacentes imponham políticas no pacote modificado e a extensão de encaminhamento pode adicionar destinos de porta.
Se a extensão de encaminhamento precisar modificar os dados em um pacote, ela deverá primeiro clonar o pacote antes de atribuir destinos de porta. Depois que o pacote tiver sido modificado e os destinos de porta atribuídos, a extensão deverá injetar o pacote modificado no caminho de dados de entrada.
Para obter mais informações, consulte Cloning Packet Traffic.
Nota Se a extensão clonar um pacote que foi obtido no caminho de dados de saída, ela poderá injetar o novo pacote no caminho de dados de saída somente se não tiver alterado os dados do pacote e tiver preservado os dados da porta de destino original.
Adicione portas de destino ao pacote antes de encaminhá-lo.
Observação as extensões de encaminhamento podem adicionar portas de destino aos pacotes recebidos no caminho de entrada de dados.
Injete pacotes de dados novos ou clonados no caminho de dados de saída.
No caminho de dados NDIS padrão, os dados OOB de switch não extensíveis geralmente têm formatos diferentes, dependendo se o pacote está sendo indicado como um envio ou um recebimento. Por exemplo, os dados OOB do NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO são uma união de estruturas específicas de envio e de receção.
No caminho de dados do switch extensível, todos os pacotes se movem pela pilha do driver de extensão tanto no envio como na recepção. Devido a isso, os dados OOB do switch não extensível dentro da estrutura NET_BUFFER_LIST do pacote estarão num formato de envio ou de receção durante toda a duração do fluxo através da pilha de drivers.
O formato desses dados OOB depende da porta do switch extensível de origem a partir da qual o pacote chegou ao switch extensível. Se a porta de origem estiver conectada ao adaptador de rede externo, os dados OOB do switch não extensível estarão em formato de recepção. Para outras portas, estes dados OOB estarão num formato de transmissão.
Nota Se a extensão clonar a estrutura NET_BUFFER_LIST de um pacote, ela deverá levar em consideração os dados OOB do switch não extensível se adicionar ou modificar os dados OOB. A extensão deve chamar CopyNetBufferListInfo para copiar os dados OOB associados ao caminho de dados do switch extensível de um pacote de origem para um pacote clonado. Esta função manterá o formato de envio ou recebimento do OOB quando os dados forem copiados para o pacote clonado.
Se uma extensão descartar um pacote da entrada ou saída do caminho de dados, deverá chamar ReportFilteredNetBufferLists. Quando essa função é chamada, a interface do switch extensível incrementa contadores e registra eventos para os pacotes descartados ou excluídos.