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


Отправка сетевых данных с помощью разгрузки IPsec версии 2

[Функция разгрузки задач IPsec является устаревшей и не должна использоваться.]

Транспорт TCP/IP предоставляет сведения о разгрузке IPsec версии 2 (IPsecOV2) для одного или нескольких SAs с OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID. Прежде чем драйвер минипорта возвращает успешный результат для OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA, драйвер минипорта инициализирует дескриптор разгрузки. Транспорт TCP/IP запрашивает у драйвера мини-порта разгрузку обработки структуры NET_BUFFER_LIST путем указания сведений IPsecOV2 в NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO и NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO структурах, которые являются частью NET_BUFFER_LIST сведений о внеполосном канале (OOB).

Транспорт TCP/IP предоставляет дескриптор разгрузки в элементе OffloadHandleNDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO , который указывает дескриптор исходящей связи безопасности (SA) для части транспортного (сквозное подключение) пакета отправки.

Транспорт TCP/IP предоставляет следующие сведения о заголовке в структуре NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO :

  • Смещения заголовка AH, заголовка ESP или и того, и другого.

  • Следующее значение протокола (идентичное значению, которое содержится в трейлере ESP).

  • Длина панели, которая используется для объединенной разгрузки большой отправки (LSO) и разгрузки IPsec.

Кроме того, если пакет отправки будет передаваться через туннель, транспорт TCP/IP предоставляет NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO структуру. Эта структура задает дескриптор разгрузки в исходящий sa для части туннеля пакета отправки. Дополнительные сведения о доступе к сведениям об объекте см. в разделе Доступ к сведениям NET_BUFFER_LIST в IPsec Offload версии 2.

Драйвер минипорта предоставил дескриптор разгрузки в ответ на запрос на набор OID OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA. Дополнительные сведения об SAs см. в статье Управление связями безопасности в IPsec Offload версии 2.

Когда драйвер минипорта обрабатывает запрос на отправку в функции MiniportSendNetBufferLists , драйвер мини-порта:

  • Проверяет, настроено ли оборудование для обработки служб разгрузки IPsec. Если оборудование не настроено для обработки служб разгрузки IPsec, драйвер мини-порта должен обработать запрос на отправку без предоставления служб разгрузки.

  • Проверяет дескрипторы в NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO и NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO структурах, чтобы определить, требуется ли криптографическая обработка IPsec. Нулевое значение дескриптора разгрузки указывает, что для NET_BUFFER_LIST не должна выполняться разгрузка задач IPsec. Если драйверу мини-порта не удается найти разгруженный sa, соответствующий указанному дескриптору разгрузки, пакет отправки должен завершиться ошибкой со значением NDIS_STATUS_FAILURE .

  • Проверяет дескрипторы в структурах NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO , чтобы определить, следует ли выполнять разгрузку сегментации для NET_BUFFER_LIST.

  • Завершает необходимую обработку AH и ESP для всех пакетов отправки в NET_BUFFER_LIST. Когда сетевой адаптер выполняет обработку IPsec для отправляемого пакета, он выполняет криптографические операции с данными пакета. Транспорт TCP/IP уже обрамил пакет, добавил его (при необходимости) и назначил ему порядковый номер и индекс параметров безопасности (SPI). Для объединенной разгрузки LSO и IPsec NET_BUFFER может иметь заполнение, которое будет удалено, пока сетевой адаптер сегментирует большой пакет. Объем заполнения указывается в элементе PadLengthструктуры NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO . Для сегментированных пакетов может потребоваться заполнение для поддержки операций IPsec.

Когда драйвер протокола передает пакет, который запрашивает как LSO, так и IPsecOV2, он не будет обрамление прицепа ESP. Это связано с тем, что информация в трейлере ESP, например длина заполнения, не будет точной для последнего сегмента, созданного сетевой картой.