Compartilhar via


Fluxo de pacotes por meio do caminho de dados de comutador extensível

Este tópico descreve como os pacotes se movem de ou para portas de comutador extensíveis por meio do caminho de dados de comutador extensível do Hyper-V.

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 as extensões, consulte Extensões de Comutador Extensível do Hyper-V.

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

Todo o tráfego de pacotes que chega ao comutador extensível de suas portas segue o mesmo caminho por meio da pilha do driver de comutador extensível. Por exemplo, o tráfego de pacotes recebido da conexão do adaptador de rede externo ou enviado de uma conexão de adaptador de rede de máquina virtual (VM) passa pelo mesmo caminho de dados.

A figura a seguir mostra o caminho de dados de comutador extensível para NDIS 6.40 (Windows Server 2012 R2) e posterior.

Diagrama mostrando a arquitetura de comutador extensível do Hyper-V para NDIS 6.40 e versões posteriores.

A figura a seguir mostra o caminho de dados de comutador extensível para o NDIS 6.30 (Windows Server 2012).

Diagrama mostrando a arquitetura de comutador extensível do Hyper-V para NDIS 6.30.

Para obter mais informações sobre os componentes da interface de comutador extensível, consulte Arquitetura de Comutador Extensível do Hyper-V.

O caminho de dados de comutador extensível tem as seguintes partes, listadas na ordem em que os pacotes fluem por meio delas:

Borda de protocolo sobresso em excesso

  1. Os pacotes chegam ao comutador extensível de adaptadores de rede conectados às portas de comutador. Esses pacotes são emitidos pela primeira vez como solicitações de envio da borda do protocolo da opção extensível para baixo do caminho de dados de entrada do comutador extensível.

    A borda de protocolo do comutador extensível prepara os pacotes para o caminho de dados de entrada. A borda do protocolo aloca uma área de contexto para esses pacotes que contém o contexto de encaminhamento extensível de comutador fora de banda (OOB). Ele preenche os dados OOB com informações sobre a porta de origem e a conexão do adaptador de rede da qual o pacote foi entregue ao comutador extensível.

    Para obter mais informações sobre o contexto de encaminhamento, consulte Contexto de encaminhamento extensível do Hyper-V.

  2. No NDIS 6.40 (Windows Server 2012 R2) e posterior, se o pacote for um pacote NVGRE de um adaptador de rede externo, o comutador extensível definirá o sinalizador NativeForwardingRequired nas informações de OOB (fora de banda) do pacote. Para obter mais informações, consulte Encaminhamento Híbrido.

  3. Se o pacote chegou em uma porta em que o tráfego tem uma sub-rede virtual, o comutador extensível define o membro VirtualSubnetId da estrutura NDIS_NET_BUFFER_LIST_VIRTUAL_SUBNET_INFO do pacote.

    Nota A sub-rede virtual pode ser uma sub-rede HNV ou uma sub-rede virtual de terceiros.

Caminho de dados de entrada

  1. Uma extensão obtém um pacote do caminho de dados de entrada quando 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 remover o pacote do caminho de dados de entrada chamando NdisFSendNetBufferListsComplete.

  2. Ao capturar extensões, obtenha pacotes no caminho de dados de entrada, eles podem inspecionar os dados do pacote. No entanto, a captura de extensões não deve concluir as solicitações de envio de pacotes no caminho de dados de entrada. Essas extensões devem sempre encaminhar os pacotes para extensões subjacentes na pilha de driver de comutador extensível.

    Uma extensão de captura também pode originar pacotes no caminho de dados de entrada. Por exemplo, a extensão pode originar pacotes para relatar condições de tráfego a um aplicativo de monitoramento remoto.

    Para obter mais informações sobre como originar pacotes por uma extensão, consulte Originando o tráfego de pacotes.

  3. Ao filtrar extensões, obtenha pacotes no caminho de dados de entrada, elas podem fazer o seguinte:

    • Remova pacotes com base em políticas de porta ou comutador extensível personalizados.

      Para obter mais informações sobre essas políticas, consulte Políticas de Comutador Extensível do Hyper-V.

      Nota Os pacotes obtidos no caminho de dados de entrada não têm portas de destino definidas nos dados OOB do pacote. Como resultado, as extensões de filtragem só devem impor políticas personalizadas com base nos dados do pacote ou na porta de origem do pacote ou na conexão do adaptador de rede.

  • Clone ou modifique pacotes obtidos do caminho de dados de entrada.

  • Injete novos pacotes no caminho de dados de entrada.

  1. No NDIS 6.40 e posterior, após as extensões de captura e filtragem, mas antes da extensão de encaminhamento no caminho de dados de entrada, a opção extensível faz o seguinte:

    • Se o pacote for um pacote NVGRE de um adaptador de rede externo, o endereço no cabeçalho do pacote será um endereço de provedor (PA). A opção extensível indica isso definindo o sinalizador NativeForwardingRequired nas informações de OOB (fora de banda) do pacote. Para obter mais informações, consulte Encaminhamento Híbrido.

    • A opção extensível aplica as políticas de entrada internas ao pacote. Essas políticas podem incluir ACLs (listas de controle de acesso de entrada), Guarda DHCP e Roteador Guard.

  2. Se uma extensão de encaminhamento não estiver habilitada na pilha de driver de comutador extensível, a matriz de portas de destino de um pacote será determinada pela opção extensível.

  3. Se uma extensão de encaminhamento estiver habilitada, ela deverá fazer o seguinte quando obter pacotes no caminho de dados de entrada:

    • No NDIS 6.40 e posterior, se o pacote for um pacote NVGRE (consulte Encaminhamento Híbrido), a extensão de encaminhamento não poderá modificar a matriz de porta de destino nos dados OOB do pacote no caminho de dados de entrada. No entanto, ele pode remover o pacote.

    • Se o pacote não for um pacote NVGRE, a extensão de encaminhamento deverá adicionar portas de destino à matriz de porta de destino nos dados OOB do pacote.

    • A extensão de encaminhamento deve remover pacotes com base em políticas de porta ou comutador extensível padrão ou personalizado. As políticas de porta ou comutador padrão incluem propriedades de segurança e VLAN (LAN virtual). Se uma extensão de encaminhamento não estiver habilitada na pilha de driver de comutador extensível, essas políticas serão impostas pelo comutador extensível.

      Nota 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 atribui ao pacote.

Além disso, a extensão de encaminhamento pode fazer o seguinte:

  • Clone ou modifique pacotes obtidos do caminho de dados de entrada.

  • Injete novos pacotes no caminho de dados de entrada.

Borda do miniporto subjacente

  1. Quando o pacote chega à borda do miniporto subjacente do comutador extensível, a opção extensível aplica suas políticas internas ao pacote. Essas políticas incluem ACLs (listas de controle de acesso) e propriedades de QoS (qualidade do serviço). Se o pacote não for descartado devido a essas políticas, o comutador extensível origina uma indicação de recebimento para o pacote e encaminha o pacote para o caminho de dados de saída.

    Nota Se o espelhamento de porta estiver habilitado em uma porta à qual o pacote deve ser entregue, a borda do miniporto adicionará uma porta de destino aos dados OOB do pacote para a porta espelho. A borda do miniporte faz isso independentemente de uma extensão de encaminhamento estar instalada e habilitada na pilha do driver de comutador extensível. A borda do miniporto só adicionará a porta espelho se ela ainda não estiver especificada na matriz de portas de destino para o pacote.

  2. Se uma extensão de encaminhamento não estiver habilitada, a opção extensível determinará as portas de destino do pacote e adicionará essas portas de destino aos dados OOB do pacote antes de encaminhar o pacote até o caminho de dados de saída.

  3. No NDIS 6.40 e posterior, o componente HNV executa qualquer encapsulamento ou descapsulação NVGRE necessário após a entrada e antes da saída, para que a extensão de encaminhamento possa ver o pacote em forma encapsulada e descapsulada. Por exemplo, se o pacote chegou de um adaptador de rede externo e é destinado a uma VM interna, a extensão de encaminhamento obtém o pacote encapsulado na entrada e o pacote descapsulado na saída.

    Nota No pacote encapsulado, o endereço no cabeçalho do pacote é um endereço de espaço de pa (endereço do provedor). No pacote descapsulado, é um endereço de espaço de ca (endereço do cliente).

    1. Se o pacote for um pacote NVGRE que chegou de um adaptador de rede externo, o componente HNV (Virtualização de Rede Hyper-V) do comutador extensível executará a descapsulação NVGRE no pacote. O componente HNV determina os destinos do pacote de acordo com as políticas de HNV e, em seguida, o comutador extensível encaminha o pacote até o caminho de dados de saída.

    2. Se o pacote chegou de uma VM interna, o componente HNV executará o encapsulamento NVGRE no pacote se as políticas HNV forem definidas para o pacote. O componente HNV determina os destinos do pacote de acordo com as políticas de HNV e, em seguida, o comutador extensível encaminha o pacote até o caminho de dados de saída.

    3. Caso contrário, a extensão de encaminhamento encaminhará o pacote até o caminho de dados de saída.

  4. No NDIS 6.30, se uma extensão de encaminhamento estiver habilitada, ela deverá encaminhar o pacote até o caminho de dados de saída.

Caminho de dados de saída

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

  2. Quando a extensão de encaminhamento obtém um pacote no caminho de dados de saída, ela pode inspecionar as informações de porta de destino do pacote nos dados OOB.

    Nota A extensão obtém essas informações dos dados OOB chamando GetNetBufferListDestinations.

Com base em políticas padrão ou personalizadas de comutador ou porta, a extensão pode excluir a entrega do pacote para uma ou mais portas de destino contidas nos dados OOB.

  1. No NDIS 6.40 (Windows Server 2012 R2) e posterior, após a extensão de encaminhamento, mas antes das extensões de filtragem e captura no caminho de dados de saída, o comutador extensível aplica as políticas de saída internas ao pacote. Essas políticas podem incluir modo de tronco, modo de monitoramento, ACLs de saída e propriedades de QoS (qualidade de serviço).

  2. Ao filtrar extensões obter um pacote no caminho de dados de saída, elas podem inspecionar as informações de porta de destino do pacote nos dados OOB. Com base em políticas personalizadas de comutador ou porta, a extensão pode excluir a entrega do pacote para uma ou mais portas de destino contidas nos dados OOB.

    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 Clonagem ou Tráfego de Pacotes.

  3. Ao capturar extensões, obtenha pacotes no caminho de dados de saída, eles podem inspecionar os dados do pacote. No entanto, se a extensão de captura precisar originar pacotes para relatar condições de tráfego a um aplicativo de monitoramento remoto, ela deverá originar esse tráfego de pacotes chamando NdisFSendNetBufferLists para iniciar uma operação de envio no caminho de dados de entrada.

  4. Quando o pacote chega à borda do protocolo de sobreposição do comutador extensível, a interface de comutador extensível encaminha o pacote para todas as portas de destino especificadas.

  5. Depois que o pacote for encaminhado, a interface concluirá o pacote pelo mesmo caminho inverso. Primeiro, a interface chama a função FilterReturnNetBufferLists da extensão para concluir os pacotes encaminhados no caminho de dados de saída. Em seguida, a interface chama a função FilterSendNetBufferListsComplete da extensão para concluir pacotes encaminhados no caminho de dados de entrada.

    Quando o pacote é concluído no caminho de dados de saída e de entrada, a extensão executa qualquer limpeza de pacote necessária e pós-processamento que possa ser necessário.