Vyhledání hlavičky přenosu pro zapouzdřené pakety v cestě příjmu
Při příjmu paketu musí síťová karta podporující virtualizaci sítě pomocí obecného zapouzdření směrování (NVGRE) nejprve určit, zda je paket zapouzdřen, a pokud ano, typ zapouzdření.
Poznámka Na odesílací trase je paket zapouzdřen, pokud NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO.IsEncapsulatedPacket je TRUE.
Na přijímací cestě musí síťová karta určit, zda je paket zapouzdřený, zkontrolováním čísla protokolu v poli Protocol hlavičky (vnější) tunelu IPv4 nebo v poli NextHeader hlavičky (vnější) tunelu IPv6. Seznam přiřazených čísel protokolu najdete v https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.
Jakmile je paket určen jako zapouzdřený, musí síťová karta určit posun k (vnitřní) IP hlavičce transportního protokolu parsováním protokolu zapouzdřeného paketu.
Pro rozhraní NDIS 6.30 (Windows Server 2012) a novější se podporuje pouze zapouzdření PROTOKOLU GRE IP. Síťová karta by proto měla být schopná analyzovat následující, v závislosti na inzerovaných schopnostech:
- GRE (RFC 2784: Obecná zapouzdření směrování (GRE)) hlaviček
- RFC 2890: Rozšíření klíčů a pořadových čísel pro GRE
- Hlavičky IPv4 (RFC 791: Protokol IP)
- IPv6 (RFC 2460: Protokol IP, verze 6 (IPv6)) hlavičky
Pokud síťová karta najde neznámý nebo nepodporovaný protokol zapouzdření, musí paket předat do hostitelského zásobníku beze změny.
Proto na cestě příjmu musí miniport parsovat hlavičku transportního (vnitřního) IP protokolu, aby určil verzi IP a dostal se k hlavičce TCP nebo UDP. Toto je nový požadavek na rozhraní NDIS 6.30 (Windows Server 2012) a novější.