Individuazione dell'intestazione di trasporto per i pacchetti incapsulati nel percorso di ricezione

Quando si riceve un pacchetto, una scheda di interfaccia di rete che supporta la virtualizzazione di rete tramite l'incapsulamento del routing generico (NVGRE) deve innanzitutto determinare se il pacchetto è incapsulato e, in tal caso, il tipo di incapsulamento.

Nota Nel percorso di invio un pacchetto viene incapsulato se NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket è TRUE.

Nel percorso di ricezione, la scheda di interfaccia di rete deve determinare se il pacchetto è incapsulato controllando il numero di protocollo nel campo Protocollo dell'intestazione del tunnel IPv4 (esterno) o il campo NextHeader dell'intestazione del tunnel IPv6 (esterno). L'elenco dei numeri di protocollo assegnati è disponibile in https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.

Una volta determinato che un pacchetto è un pacchetto incapsulato, la scheda di interfaccia di rete deve determinare l'offset all'intestazione IP di trasporto (interno) analizzando il protocollo del pacchetto incapsulato.

Per NDIS 6.30 (Windows Server 2012) e versioni successive, è supportata solo l'incapsulamento IP GRE. La scheda di interfaccia di rete dovrebbe quindi essere in grado di analizzare quanto segue, a seconda delle funzionalità annunciate:

Se la scheda di interfaccia di rete rileva un protocollo di incapsulamento sconosciuto o non supportato, deve passare il pacchetto invariato allo stack host.

Pertanto, nel percorso di ricezione, il miniport deve analizzare l'intestazione IP di trasporto (interno) per determinare la versione IP e per accedere all'intestazione TCP o UDP. Si tratta di un nuovo requisito per NDIS 6.30 (Windows Server 2012) e versioni successive.