Partilhar via


Localizando o cabeçalho de transporte para pacotes encapsulados no caminho de recebimento

Ao receber um pacote, uma NIC que dá suporte à Virtualização de Rede usando nvgre (encapsulamento de roteamento genérico) deve primeiro determinar se o pacote é encapsulado e, em caso afirmativo, o tipo de encapsulamento.

Nota No caminho de envio, um pacote será encapsulado se NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket é TRUE.

No caminho de recebimento, a NIC deve determinar se o pacote é encapsulado verificando o número do protocolo no campo Protocolo do cabeçalho do túnel IPv4 (externo) ou o campo NextHeader do cabeçalho do túnel IPv6 (externo). A lista de números de protocolo atribuídos pode ser encontrada em https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.

Depois que um pacote é determinado como um pacote encapsulado, a NIC deve determinar o deslocamento para o cabeçalho IP de transporte (interno) analisando o protocolo do pacote encapsulado.

Para o NDIS 6.30 (Windows Server 2012) e posterior, há suporte apenas para encapsulamento de IP GRE. Portanto, a NIC deve ser capaz de analisar o seguinte, dependendo dos recursos anunciados:

Se a NIC encontrar um protocolo de encapsulamento desconhecido ou sem suporte, ele deverá passar o pacote inalterado para a pilha de host.

Assim, no caminho de recebimento, o miniporto deve analisar o cabeçalho IP de transporte (interno) para determinar a versão do IP, bem como para acessar o cabeçalho TCP ou UDP. Esse é um novo requisito para o NDIS 6.30 (Windows Server 2012) e posterior.