Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O NDIS 6.30 (Windows Server 2012) apresenta a Virtualização de Rede usando o Encapsulamento de Roteamento Genérico (NVGRE). Os drivers de miniporta, de protocolo e de filtro NDIS, assim como as NICs que descarregam tarefas de soma de verificação, devem fazê-lo de modo a apoiar o NVGRE.
Observação Esta página pressupõe que estejas familiarizado com as informações em Tarefas de descarregamento da soma de verificação.
Se NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket estiver TRUE e as informações de TcpIpChecksumNetBufferListInfo fora de banda (OOB) forem válidas, isso indica que o suporte NVGRE é necessário e a NIC deve calcular a soma de verificação para o cabeçalho IP do túnel (externo), o cabeçalho IP de transporte (interno) e o cabeçalho TCP ou UDP.
Os IsIPv4 e sinalizadores de IsIPv6 na estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO indicam a versão do cabeçalho IP do cabeçalho IP do túnel (externo). A NIC deve analisar o cabeçalho IP de transporte (interno) para determinar a versão IP desse cabeçalho. Como os pacotes de modo misto são permitidos (consulte NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD), a NIC não deve assumir que os cabeçalhos IP internos e externos terão a mesma versão de cabeçalho IP.
NICs e drivers de miniporta podem usar os valores InnerFrameOffset, TransportIpHeaderRelativeOffsete TcpHeaderRelativeOffset fornecidos na estrutura NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. O driver de miniport ou NIC pode executar quaisquer verificações de cabeçalho necessárias no cabeçalho IP do túnel (externo) ou cabeçalhos subsequentes para validar esses deslocamentos.
Observe que quando NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket for TRUE, os campos de deslocamento de cabeçalho existentes NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO.LsoV2Transmit.TcpHeaderOffset e NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO.Transmitir.TcpHeaderOffset, não terá valores corretos e não deve ser usado pela NIC ou driver.
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 adicionados anteriormente (ETH, IP, GRE) sejam fisicamente contíguos e estejam no primeiro MDL do pacote.
Validação da soma de verificação
A validação da soma de verificação para NVGRE é basicamente a mesma que seria de outra forma.
Se uma miniporta receber uma solicitação OID OID_TCP_OFFLOAD_PARAMETERS e for bem-sucedida por NDIS_ENCAPSULATION_TYPE_GRE_MAC (consulte NDIS_OFFLOAD_PARAMETERS), a NIC deverá executar a validação de soma de verificação no cabeçalho IP do túnel (externo), no cabeçalho IP de transporte (interno) e no cabeçalho TCP ou UDP.
Para pacotes encapsulados que têm um cabeçalho de túnel IPv4 (externo) e um cabeçalho de transporte IPv4 (interno), um driver de miniporta deve definir o sinalizador IpChecksumSucceeded na estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO somente se ambas as validações de soma de verificação de cabeçalho IP tiverem sido bem-sucedidas. Para pacotes encapsulados que têm um cabeçalho IPv4 de túnel (externo) e um cabeçalho IPv4 de transporte (interno), o driver de miniporta deve definir o sinalizador IpChecksumFailed se alguma das validações das somas de verificação dos cabeçalhos IP falharem.