IPsec 加密卸载
此功能在 NVIDIA® BlueField®-2 DPU 和 NVIDIA® ConnectX®-6 Dx 以及 ConnectX-7 适配器(但不包括 ConnectX-6)的启用加密产品上受支持。
更新/未来的启用加密 DPU 和适配器产品世代也应支持此功能,除非其文档中明确声明不支持。
仅对于 BlueField-2 和 ConnectX-6 Dx 设备:如果您的目标应用程序将使用 100Gb/s 或更高的带宽,其中大部分带宽将分配给 IPsec 流量,请参阅NVIDIA BlueField-2 DPU 产品发行说明或NVIDIA ConnectX-6 Dx 适配器产品发行说明,以了解潜在的带宽限制。要访问相关的产品发行说明,请联系您的 NVIDIA 销售代表。
IPsec 加密卸载功能,也称为 IPsec 内联卸载或 IPsec 感知卸载功能,使用户能够将 IPsec 加密和解密操作卸载到硬件。
硬件实现仅支持 AES-GCM 加密方案。
要启用此功能,内核和适配器固件都需要支持。
要在内核中添加 IPsec 加密卸载支持,请相应地设置以下标志
CONFIG_XFRM_OFFLOAD=y CONFIG_INET_ESP_OFFLOAD=m CONFIG_INET6_ESP_OFFLOAD=m
注意这些标志在 RedHat 8 和 Ubuntu 18.04.0 中默认启用。
要检查固件是否支持 IPsec 加密卸载,请在 dmesg 中查找以下字符串
mlx5e: IPSec ESP acceleration enabled
要编程内联卸载安全关联 (SA),请在 ip xfrm state
命令中添加选项 offload dev <netdev interface> dir out/in
,用于发送和接收 SA。
发送内联卸载 SA xfrm 命令示例
sudo ip xfrm state add src
192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp spi0x46dc6204
reqid0x46dc6204
mode transport aead'rfc4106(gcm(aes))'
0x60bd6c3eafba371a46411830fd56c53af93883261ed1fb26767820ff493f43ba35b0dcca
128
offload dev p4p1 dir out sel src192.168
.1.64
dst192.168
.1.65
接收内联卸载 SA xfrm 命令示例
sudo ip xfrm state add src
192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp spi0xaea0846c
reqid0xaea0846c
mode transport aead'rfc4106(gcm(aes))'
0x81d5c3167c912c1dd50dab0cb4b6d815b6ace8844304db362215a258cd19deda8f89deda
128
offload dev p4p1 dir in sel src192.168
.1.65
dst192.168
.1.64
设置 xfrm 策略的示例
第一台服务器
+ sudo ip xfrm state add src
192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp spi0x28f39549
reqid0x28f39549
mode transport aead'rfc4106(gcm(aes))'
0x492e8ffe718a95a00c1893ea61afc64997f4732848ccfe6ea07db483175cb18de9ae411a
128
offload dev enp4s0 dir out sel src192.168
.1.64
dst192.168
.1.65
+ sudo ip xfrm state add src192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp spi0x622a73b4
reqid0x622a73b4
mode transport aead'rfc4106(gcm(aes))'
0x093bfee2212802d626716815f862da31bcc7d9c44cfe3ab8049e7604b2feb1254869d25b
128
offload dev enp4s0 dir in sel src192.168
.1.65
dst192.168
.1.64
+ sudo ip xfrm policy add src192.168
.1.64
dst192.168
.1.65
dir out tmpl src192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp reqid0x28f39549
mode transport + sudo ip xfrm policy add src192.168
.1.65
dst192.168
.1.64
dir in tmpl src192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp reqid0x622a73b4
mode transport + sudo ip xfrm policy add src192.168
.1.65
dst192.168
.1.64
dir fwd tmpl src192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp reqid0x622a73b4
mode transport第二台服务器
+ ssh -A -t root
@l
-csi-0921d /bin/bash + set -e +'['
0
==1
']'
+ sudo ip xfrm state add src192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp spi0x28f39549
reqid0x28f39549
mode transport aead'rfc4106(gcm(aes))'
0x492e8ffe718a95a00c1893ea61afc64997f4732848ccfe6ea07db483175cb18de9ae411a
128
offload dev enp4s0 dir in sel src192.168
.1.64
dst192.168
.1.65
+ sudo ip xfrm state add src192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp spi0x622a73b4
reqid0x622a73b4
mode transport aead'rfc4106(gcm(aes))'
0x093bfee2212802d626716815f862da31bcc7d9c44cfe3ab8049e7604b2feb1254869d25b
128
offload dev enp4s0 dir out sel src192.168
.1.65
dst192.168
.1.64
+ sudo ip xfrm policy add src192.168
.1.65
dst192.168
.1.64
dir out tmpl src192.168
.1.65
/24
dst192.168
.1.64
/24
proto esp reqid0x622a73b4
mode transport + sudo ip xfrm policy add src192.168
.1.64
dst192.168
.1.65
dir in tmpl src192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp reqid0x28f39549
mode transport + sudo ip xfrm policy add src192.168
.1.64
dst192.168
.1.65
dir fwd tmpl src192.168
.1.64
/24
dst192.168
.1.65
/24
proto esp reqid0x28f39549
mode transport + echo'IPSec tunnel configured successfully'