Поделиться через


Поиск заголовка транспорта для инкапсулированных пакетов в пути получения

При получении пакета сетевая карта, поддерживающая виртуализацию сети с использованием универсальной инкапсуляции маршрутизации (NVGRE), должна сначала определить, инкапсулирован ли пакет, и, если да, тип инкапсуляции.

Примечание В пути отправки пакет инкапсулируется, если NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket имеет значение TRUE.

В пути получения сетевой адаптер должен определить, инкапсулирован ли пакет, проверив номер протокола в поле Протокол заголовка туннеля IPv4 (внешний) или в поле NextHeader заголовка туннеля IPv6 (внешний). Список назначенных номеров протоколов можно найти по адресу https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.

После определения пакета как инкапсулированного пакета сетевой адаптер должен определить смещение транспортного (внутреннего) IP-заголовка путем анализа протокола инкапсулированного пакета.

Для NDIS 6.30 (Windows Server 2012) и более поздних версий поддерживается только инкапсуляция GRE IP. Таким образом, сетевой адаптер должен иметь возможность анализировать следующее в зависимости от объявленных возможностей:

Если сетевая карта обнаруживает неизвестный или неподдерживаемый протокол инкапсуляции, он должен передать пакет без изменений в стек узлов.

Таким образом, на пути получения минипорт должен проанализировать заголовок транспортного (внутреннего) IP-адреса, чтобы определить версию IP-адреса, а также получить доступ к заголовку TCP или UDP. Это новое требование для NDIS 6.30 (Windows Server 2012) и более поздних версий.