Filtrando extensões
Uma extensão de filtragem de comutador extensível do Hyper-V pode inspecionar, modificar e inserir pacotes no caminho de dados de comutador extensível. Com base na porta do comutador extensível e nas configurações de política de alternância, a extensão pode remover um pacote ou excluir sua entrega para uma ou mais portas de destino.
As extensões de filtragem são invocadas após a captura de extensões no caminho de dados de entrada e após as extensões de encaminhamento no caminho de dados de saída. Para obter mais informações sobre esses caminhos de dados, consulte Caminho de dados de comutador extensível do Hyper-V.
Uma extensão de filtragem pode fazer o seguinte com pacotes que foram obtidos no caminho de dados de entrada:
Filtre o tráfego de pacotes e imponha políticas personalizadas de porta ou comutador para entrega de pacotes por meio do comutador extensível. Quando a extensão de filtragem filtra pacotes no caminho de dados de entrada, ela 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 (fora de banda) da estrutura de NET_BUFFER_LIST de um pacote e podem ser obtidas usando a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
Nota Os pacotes obtidos no caminho de dados de entrada não contêm portas de destino. A filtragem de pacotes com base em portas de destino só pode ser feita em pacotes obtidos no caminho de dados de saída.
As políticas personalizadas são definidas pelo ISV (fornecedor independente de software). As configurações de propriedade para esse tipo de política são gerenciadas por meio da camada de gerenciamento WMI do Hyper-V. A extensão de filtragem é definida com essas configurações de propriedade por meio de uma solicitação OID (identificador de objeto) de OID_SWITCH_PORT_PROPERTY_UPDATE e OID_SWITCH_PROPERTY_UPDATE.
Para obter mais informações sobre políticas de porta extensível personalizadas ou de comutador, consulte Gerenciando políticas de comutador extensível do Hyper-V.
Nota Somente extensões de encaminhamento podem impor políticas de porta padrão para entrega de pacotes por meio do comutador extensível.
Injete pacotes novos, modificados ou clonados no caminho de dados de entrada.
Para obter mais informações, consulte Operações de envio e recebimento extensíveis do Hyper-V.
Uma extensão de filtragem pode fazer o seguinte com pacotes que foram obtidos no caminho de dados de saída:
Filtre o tráfego de pacotes e imponha políticas personalizadas de porta ou comutador para entrega de pacotes por meio do comutador extensível. Quando a extensão de filtragem 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. Os dados da porta de destino são armazenados nos dados OOB da estrutura de NET_BUFFER_LIST de um pacote. As extensões obtêm essas informações chamando a função GetNetBufferListDestinations .
Exclua a entrega do pacote para uma ou mais portas de destino de comutador extensíveis. Isso permite que a extensão de filtragem exclua a entrega de um pacote para portas de comutador extensíveis.
Para obter mais informações sobre como excluir a entrega de pacotes para portas de comutador extensíveis, consulte Excluindo a entrega de pacotes para portas de destino de comutador extensível.
Gerencie o fluxo de tráfego para uma ou mais portas de destino adiando o encaminhamento de pacotes até o caminho de dados de saída.
Por exemplo, uma extensão de filtragem que dá suporte à funcionalidade de QoS (qualidade de serviço) pode querer chamar imediatamente NdisFSendNetBufferLists para encaminhar pacotes especificados com um valor de prioridade mais alto. Dependendo do fluxo de tráfego, a extensão pode querer encaminhar pacotes com um valor de prioridade mais baixo posteriormente.
Modifique os dados do pacote. Se a extensão de filtragem precisar modificar os dados em um pacote, ela deverá primeiro clonar o pacote sem preservar 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.
Para obter mais informações, consulte Clonando o tráfego de pacotes.
Além de inspecionar solicitações OID e indicações de status do NDIS, uma extensão de filtragem pode fazer o seguinte:
Vete a criação de uma conexão extensível de porta de comutador ou adaptador de rede retornando STATUS_DATA_NOT_ACCEPTED para os OIDs de comutador extensíveis aplicáveis. Por exemplo, a extensão de filtragem pode vetar uma solicitação de criação de porta retornando STATUS_DATA_NOT_ACCEPTED quando o driver recebe uma solicitação de conjunto de OID de OID_SWITCH_PORT_CREATE.
Nota As extensões de filtragem não criam nem excluem portas ou conexões de adaptador de rede. A borda do protocolo do comutador extensível emite OIDs para notificar os drivers de filtro subjacentes sobre a criação ou exclusão de portas ou conexões de adaptador de rede. Para obter mais informações, consulte Hyper-V Extensible Switch Port and Network Adapter States.
Vete a adição ou atualização de uma opção extensível ou política de porta retornando STATUS_DATA_NOT_ACCEPTED para os OIDs de comutador extensíveis aplicáveis. Por exemplo, a extensão de filtragem pode vetar a adição de uma política de porta retornando STATUS_DATA_NOT_ACCEPTED quando a extensão recebe uma solicitação de conjunto de OID de OID_SWITCH_PORT_PROPERTY_ADD.
Para obter mais informações sobre políticas de comutador extensíveis, consulte Gerenciando políticas de comutador extensível do Hyper-V.
Uma extensão de filtragem tem os seguintes requisitos:
Uma extensão de filtragem deve ser desenvolvida como um driver de filtro NDIS que dê suporte à interface de comutador extensível.
Para obter mais informações sobre drivers de filtro, consulte Drivers de filtro NDIS.
Para obter mais informações sobre como escrever uma extensão de filtragem, consulte Escrevendo extensões de comutador extensível do Hyper-V.
Nota A Plataforma de Filtragem do Windows (WFP) fornece uma extensão de filtragem de comutador extensível (Wfplwfs.sys ). Essa extensão permite que filtros WFP ou drivers de texto explicativo interceptem pacotes ao longo do caminho de dados de comutador extensível do Hyper-V. Isso permite que os filtros ou drivers de texto explicativo executem a inspeção ou modificação de pacotes usando o gerenciamento do WFP e as funções do sistema. Para obter uma visão geral do WFP, consulte Plataforma de Filtragem do Windows.
O arquivo INF para uma extensão de filtragem deve instalar o driver como um driver de filtro de modificação. Os drivers de filtro de monitoramento de NDIS não podem ser instalados na pilha extensível do driver de comutador.
Para obter mais informações sobre como modificar drivers de filtro, consulte Tipos de drivers de filtro.
Para obter mais informações sobre os requisitos do INF para modificar drivers de filtro, consulte Configurando um arquivo INF para um driver de filtro de modificação.
O valor FilterClass no arquivo INF do driver de filtro deve ser definido como ms_switch_filter. Para obter mais informações, consulte Requisitos inf para extensões de comutador extensível do Hyper-V.
Qualquer número de extensões de filtragem pode ser associado e habilitado na pilha de driver para cada instância de um comutador extensível. Por padrão, várias extensões de filtragem são ordenadas com base em quando foram instaladas. Por exemplo, várias extensões de filtragem são colocadas em camadas na pilha de driver de comutador extensível com a extensão instalada mais recentemente em camadas acima de outras extensões de filtragem na pilha.
Depois que eles são associados e habilitados em uma instância de comutador extensível, as camadas de extensões de filtragem na pilha extensível do driver de comutador podem ser reordenadas. Para obter mais informações, consulte Reordenando extensões de comutador extensível do Hyper-V.