在接收路径中卸载 IPsec 任务

[IPsec 任务卸载功能已弃用,不应使用。]

当 NIC 对接收数据包执行 Internet 协议安全 (IPsec) 处理时,如果数据包包含 ESP 有效负载,则会解密数据包,并计算数据包 (或两者) 的 AH 或 ESP 加密校验和。 在指示数据包到 TCP/IP 传输的NET_BUFFER_LIST结构之前,微型端口驱动程序调用具有 IPsecOffloadV1NetBufferListInfo_Id的 NET_BUFFER_LIST_INFO 宏,以获取与数据包关联的NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO结构。

微型端口驱动程序在 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 结构中设置 CryptoDone 标志,以指示 NIC 对接收数据包中的至少一个 IPsec 有效负载执行 IPsec 检查。 如果 NIC 对接收数据包的隧道和传输部分执行 IPsec 检查,微型端口驱动程序还会在NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO结构中设置 NextCryptoDone 标志。 仅当数据包同时具有隧道和传输 IPsec 有效负载时,微型端口驱动程序才会设置 NextCryptoDone 。 否则,微型端口驱动程序将 NextCryptoDone 设置为零。 若要指示 IPsec 检查的结果,微型端口驱动程序还必须为 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 结构中的 CryptoStatus 成员提供值。 如果 NIC 检测到校验和失败或解密失败,微型端口驱动程序必须以任何形式指示接收数据包 的NET_BUFFER_LIST 结构,并指定适当的 CryptoStatus 值。

请注意,如果微型端口驱动程序未解密传入数据包,它将清除 CryptoDoneNextCryptoDone 标志。 无论数据包是 AH 保护还是 ESP 保护,微型端口驱动程序都会针对它未解密的所有接收数据包执行此操作。 微型端口驱动程序将 CryptoStatus 设置为不解密的所有数据包CRYPTO_SUCCESS。

在微型端口驱动程序指示 TCP/IP 传输的NET_BUFFER_LIST结构后,传输将检查 NIC 执行的 IPsec 检查结果,检查数据包的序列号,并确定对未通过校验和或排序测试的数据包执行的操作。