在 KVM 虚拟机管理程序上配置 NetScaler VPX 以在 SR-IOV 模式下使用 Intel QAT 进行 SSL 加速
Linux KVM 虚拟机管理程序上的 NetScaler VPX 实例可以使用 Intel QuickAssist Technology (QAT) 来加速 NetScaler SSL 性能。使用 Intel QAT,所有高延迟的加密处理都可以卸载到芯片,从而释放一个或多个主机 CPU 来执行其他任务。
以前,所有 NetScaler® 数据路径加密处理都是通过使用主机 vCPU 在软件中完成的。
注意:
目前,NetScaler VPX 仅支持 Intel QAT 系列中的 C62x 芯片型号。此功能从 NetScaler 14.1 版本 build 8.50 开始受支持。
先决条件
-
Linux 主机配备了 Intel QAT C62x 芯片,该芯片可以直接集成到主板中,也可以作为外部 PCI 卡添加。
Intel QAT C62x 系列型号: C625、C626、C627、C628。只有这些 C62x 型号包含公钥加密 (PKE) 功能。其他 C62x 变体不支持 PKE。
-
NetScaler VPX 设备能够满足 VMware ESX 虚拟化平台的硬件要求。有关更多信息,请参阅 在 Linux KVM 虚拟化平台上安装 NetScaler VPX 实例。
限制事项
没有为单个虚拟机预留加密单元或带宽的规定。任何 Intel QAT 硬件的所有可用加密单元都由使用 QAT 硬件的所有虚拟机共享。
设置主机环境以使用 Intel QAT
-
在 Linux 主机中下载并安装 Intel 提供的 C62x 系列 (QAT) 芯片型号驱动程序。有关 Intel 软件包下载和安装说明的更多信息,请参阅 适用于 Linux 的 Intel QuickAssist Technology 驱动程序。 下载包中包含一个 readme 文件。此文件提供了在主机中编译和安装软件包的说明。
下载并安装驱动程序后,执行以下健全性检查:
-
记下 C62x 芯片的数量。每个 C62x 芯片最多有 3 个 PCIe 端点。
-
确保所有端点都已启动。运行
adf_ctl status命令以显示所有 PF 端点(最多 3 个)的状态。root@Super-Server:~# adf_ctl status Checking status of all devices. There is 51 QAT acceleration device(s) in the system qat_dev0 - type: c6xx, inst_id: 0, node_id: 0, bsf: 0000:1a:00.0, #accel: 5 #engines: 10 state: up qat_dev1 - type: c6xx, inst_id: 1, node_id: 0, bsf: 0000:1b:00.0, #accel: 5 #engines: 10 state: up qat_dev2 - type: c6xx, inst_id: 2, node_id: 0, bsf: 0000:1c:00.0, #accel: 5 #engines: 10 state: up <!--NeedCopy--> -
为所有 QAT 端点启用 SRIOV(VF 支持)。
root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1a\:00.0/sriov_numvfs root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1b\:00.0/sriov_numvfs root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1c\:00.0/sriov_numvfs <!--NeedCopy--> - 确保显示所有 VF(每个端点 16 个 VF,总计 48 个 VF)。
-
运行 adf_ctl status 命令以验证所有 PF 端点(最多 3 个)和每个 Intel QAT 芯片的 VF 都已启动。在此示例中,系统只有一个 C62x 芯片。因此,它总共有 51 个端点(3 个 + 48 个 VF)。

-
- 在 Linux 主机上启用 SR-IOV 功能。
- 创建虚拟机。创建 VM 时,分配适当数量的 PCI 设备以满足性能要求。
注意:
每个 C62x (QAT) 芯片最多可以有三个独立的 PCI 端点。每个端点都是 VF 的逻辑集合,并与芯片的其他 PCI 端点平等共享带宽。每个端点最多可以有 16 个 VF,显示为 16 个 PCI 设备。将这些设备添加到 VM 以使用 QAT 芯片进行加密加速。
注意事项
- 如果 VM 加密要求使用多个 QAT PCI 端点/芯片,我们建议您以循环方式选择相应的 PCI 设备/VF,以实现对称分布。
-
我们建议选择的 PCI 设备数量等于许可的 vCPU 数量(不包括管理 vCPU 数量)。添加的 PCI 设备数量多于可用 vCPU 数量不一定会提高性能。
示例:
考虑一个具有一个 Intel C62x 芯片(包含 3 个端点)的 Linux 主机。在配置具有 6 个 vCPU 的 VM 时,从每个端点选择 2 个 VF,并将它们分配给 VM。此分配可确保 VM 的加密单元得到有效且平等的分配。在总可用 vCPU 中,默认情况下,一个 vCPU 保留用于管理平面,其余 vCPU 可用于数据平面 PE。
将 QAT VF 分配给部署在 Linux KVM 虚拟机管理程序上的 NetScaler VPX 实例
-
在 Linux KVM 虚拟机管理器中,确保虚拟机 (NetScaler VPX) 已关机。
-
导航到 添加硬件 > PCI 主机设备。
-
将 Intel QAT 虚拟功能分配给 PCI 设备。
分配 Intel QAT 虚拟功能(/zh-cn/vpx/media/linux-add-hardware.png)
-
单击 完成。
-
重复上述步骤,将一个或多个 Intel QAT VF 分配给 NetScaler VPX 实例,直到达到总 vCPU 数量减一的限制。因为一个 vCPU 保留用于管理进程。
每个 VM 的 QAT VF 数量 等于 vCPU 数量 减去 1
-
启动虚拟机。
-
在 NetScaler 命令行界面中运行
stat ssl命令以显示 SSL 摘要,并在将 QAT 虚拟功能分配给 NetScaler VPX 后验证 SSL 卡。在此示例中,我们使用了 5 个 vCPU,这意味着有 4 个数据包引擎 (PE)。

关于此部署
本次部署是根据以下组件规格进行测试的:
- NetScaler VPX 版本信息和内部版本号: 14.1–8.50
- Ubuntu 版本: 18.04,内核 5.4.0-146
- 英特尔 C62x QAT 适用于 Linux 的驱动程序版本: L.4.21.0-00001