在 KVM 虚拟机管理程序上配置 NetScaler VPX,以便在 SR-IOV 模式下使用 Intel QAT 进行 SSL 加速
Linux KVM 虚拟机管理程序上的 NetScaler VPX 实例可以使用 Intel QuickAssist 技术 (QAT) 来加速 NetScaler SSL 性能。 使用 Intel QAT,所有高延迟的加密处理都可以卸载到芯片上,从而腾出一个或多个主机 CPU 来执行其他任务。
以前,所有 NetScaler 数据路径加密处理都是在软件中使用主机 vCPU 完成的。
注意:
目前,NetScaler VPX 仅支持 Intel QAT 系列下的 C62x 芯片型号。 从 NetScaler 版本 14.1 版本 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 技术驱动程序。 自述文件可作为下载包的一部分提供。 此文件提供有关在主机中编译和安装软件包的说明。
下载并安装驱动程序后,执行以下完整性检查:
-
记下 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 状态命令以验证所有 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 芯片进行加密加速。
注意事项
- 如果虚拟机加密要求使用多个 QAT PCI 端点/芯片,我们建议您以循环方式选择相应的 PCI 设备/VF 以实现对称分布。
-
我们建议所选的 PCI 设备数量等于许可的 vCPU 数量(不包括管理 vCPU 数量)。 添加比可用的 vCPU 数量更多的 PCI 设备不一定能提高性能。
Example:
以一台具有 3 个端点的 Intel C62x 芯片的 Linux 主机为例。 在配置具有 6 个 vCPU 的虚拟机时,从每个端点中选择 2 个 VF,然后将其分配给虚拟机。 此分配可确保虚拟机加密单位的有效和平等分配。 默认情况下,在可用的 vCPU 总数中,一个 vCPU 留给管理平面,其余 vCPU 可用于数据平面 PE。
将 QAT VF 分配给部署在 Linux KVM 虚拟机管理程序上的 NetScaler VPX
-
在 Linux KVM 虚拟机管理器中,确保虚拟机(NetScaler VPX)已关闭。
-
导航到添加硬件 > PCI 主机设备。
-
为 PCI 设备分配 Intel QAT VF。
-
单击完成。
-
重复上述步骤,为 NetScaler VPX 实例分配一个或多个 Intel QAT VF,最多不超过 vCPU 总数少一个。 因为一个 vCPU 是为管理过程保留的。
每个 VM 的 QAT VF 数量 = vCPU 数量- 1
-
Power on the VM.
-
在 NetScaler CLI 中运行
stat ssl
命令以显示 SSL 摘要,并在将 QAT VF 分配给 NetScaler VPX 后验证 SSL 卡。在此示例中,我们使用了 5 个 vCPU,这意味着 4 个数据包引擎 (PE)。
关于部署
此部署使用以下组件规格进行了测试:
- NetScaler VPX 版本和内部版本: 14.1—8.50
- Ubuntu 版本: 18.04,内核 5.4.0-146
- 适用于 Linux 的 Intel C62x QAT 驱动程序版本: L.4.21.0-00001