Compartilhar via


Suporte a NVGRE no USO (Descarregamento de Segmentação UDP)

O NDIS 6.85 apresenta a Virtualização de Rede usando o NVGRE (Encapsulamento de Roteamento Genérico) com o USO (descarregamento de segmentação UDP). Os drivers de miniporto, protocolo e filtro NDIS, bem como NICs que executam USO, devem dar suporte a encapsulamentos NVGRE e VXLAN.

Observação: este artigo pressupõe que você esteja familiarizado com as informações em USO (Descarregamento de Segmentação UDP).

Se NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket é TRUE e as informações de UdpSegmentationOffloadInfo fora de banda (OOB) são válidas, o suporte a NVGRE e VXLAN é necessário. A NIC deve executar o descarregamento uso no pacote encapsulado por NVGRE/VXLAN com a seguinte condição:

Para dar suporte ao NVGRE no USO, os drivers de protocolo e filtro devem:

Os drivers NICs e miniport podem usar os valores InnerFrameOffset, TransportIpHeaderRelativeOffset e TcpHeaderRelativeOffset fornecidos na estrutura NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO . O driver NIC ou miniport pode executar as verificações de cabeçalho necessárias no cabeçalho IP do túnel (externo) ou cabeçalhos subsequentes para validar esses deslocamentos.

Os drivers de miniporta devem lidar com o caso em que NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. InnerFrameOffset pode estar em uma lista de dispersão diferente do início do pacote. O driver de protocolo garantirá que todos os cabeçalhos de encapsulamento prefixados (ETH, IP, GRE/VXLAN) serão fisicamente contíguos e estarão no primeiro MDL do pacote.

Os drivers de protocolo e filtro não garantem que o comprimento total da carga UDP seja um múltiplo exato do valor reduzido do MSS quando UdpSegmentation.SubMssFinalSegmentSupported estiver definido nos recursos de NDIS_OFFLOAD . Por esse motivo, os drivers de miniporto e NICs com SubMssFinalSegmentSupported devem atualizar o cabeçalho IP do túnel (externo). As NICs devem gerar o máximo possível de segmentos de tamanho completo com base no valor reduzido do MSS no NDIS_UDP_SEGMENTATION_OFFLOAD_NET_BUFFER_LIST_INFO. Transmitir Informações de OOB. Somente um segmento sub MSS pode ser gerado por LSOv2 send.

Os drivers de miniporta devem:

  • Compute a soma de verificação do cabeçalho IP do túnel (externo).
  • Incremente o valor de identificação de IP (ID de IP) do cabeçalho IP do túnel (externo) para cada pacote. O primeiro pacote deve usar a ID de IP no cabeçalho IP do túnel original (externo).
  • Incremente a ID de IP do cabeçalho IP de transporte (interno) para cada pacote. O primeiro pacote deve usar a ID de IP no cabeçalho IP de transporte original (interno).
  • Compute a soma de verificação para o cabeçalho UDP e o cabeçalho IP de transporte (interno).
  • Verifique se os cabeçalhos completos, incluindo os cabeçalhos de túnel de encapsulamento (externos), são adicionados a cada pacote gerado.

Descarregamento de segmentação UDP (USO)