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


Поддержка NVGRE в разгрузке большой отправки (LSO)

В NDIS 6.30 (Windows Server 2012) представлена виртуализация сети с использованием универсальной инкапсуляции маршрутизации (NVGRE). Драйверы мини-портов, протоколов и фильтров NDIS, а также сетевые адаптеры, выполняющие разгрузку большой отправки (LSO) версии 2 (LSOV2), должны делать это таким образом, чтобы поддерживать NVGRE.

Примечание На этой странице предполагается, что вы знакомы со сведениями, приведенными в разделе Разгрузка сегментации больших ПАКЕТОВ TCP.

Если NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket имеет значение TRUE , а данные TcpIpChecksumNetBufferListInfo (OOB) допустимы. Это означает, что требуется поддержка NVGRE, а сетевой адаптер должен выполнять разгрузку LSOV2 в пакете в формате NVGRE со следующими условиями:

  • Только значения в NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. Структура LsoV2Transmit допустима. Сетевой адаптер и драйвер мини-порта не должны ссылаться на значения в NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. Структура LsoV1Transmit .
  • NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. LsoV2Transmit. Элемент TcpHeaderOffset не имеет правильного значения смещения и не должен использоваться сетевым адаптером или драйвером мини-порта.

Для поддержки NVGRE в LSOV2 драйверы протоколов и фильтров должны внести следующие изменения:

Сетевые адаптеры и драйверы мини-портов могут использовать значения InnerFrameOffset, TransportIpHeaderRelativeOffset и TcpHeaderRelativeOffset , указанные в структуре NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO . Драйвер сетевого адаптера или мини-порта может выполнять любые необходимые проверки заголовков для заголовка туннеля (внешнего) IP-адреса или последующих заголовков, чтобы проверить эти смещения.

Драйверы минипорта должны обрабатывать ситуации , когда NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. InnerFrameOffset может находиться в списке с точечным сбором, отличном от начала пакета. Драйвер протокола гарантирует, что все добавленные заголовки инкапсуляции (ETH, IP, GRE) будут физически непрерывными и будут находиться в первом MDL пакета.

Драйверы протоколов и фильтров не гарантируют, что общая длина полезных данных TCP точно кратна уменьшенного значения MSS . По этой причине драйверы и сетевые адаптеры мини-портов должны обновлять заголовок IP-адреса туннеля (внешнего). Сетевые адаптеры должны создавать как можно больше полноразмерных сегментов на основе уменьшенного значения MSS в NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. LsoV2Transmit Сведения об OOB. Для каждой отправки LSOv2 может быть создан только один вложенный сегмент MSS .

Драйверы мини-портов должны выполнять следующие действия:

  • Вычисление контрольной суммы для заголовка ТУннеля (внешнего) IP-адреса.
  • Приумножение значения идентификатора IP(IP ID) заголовка IP-адреса туннеля (внешнего) для каждого пакета. Первый пакет должен использовать идентификатор IP-адреса в исходном (внешнем) ip-заголовке туннеля.
  • Увеличивает идентификатор IP-адреса транспортного (внутреннего) IP-заголовка для каждого пакета. Первый пакет должен использовать идентификатор IP-адреса в исходном транспортном (внутреннем) IP-заголовке.
  • Вычисление контрольной суммы для заголовка TCP и транспортного (внутреннего) IP-заголовка.
  • Убедитесь, что полные заголовки, включая заголовки туннеля инкапсуляции (внешние), добавляются к каждому созданному пакету.

Разгрузка сегментации больших ПАКЕТОВ TCP