DPDK 加密设备调度程序 "Capability Update Failed"

DPDK Crypto Device Scheduler "Capability Update Failed"

我正在做一个 DPDK 项目,遇到了需要您帮助的问题。 项目需要通过DPDK(多缓冲库)实现encryption/decryption。为了支持所有密码和哈希算法,我需要创建 4 种类型的虚拟设备:crypto_null、crypto_aesni_mb、crypto_snow3g 和 crypto_zuc。我试图创建一个加密调度程序来管理所有 4 个设备。当设备连接到调度程序时,它失败了。我可以使用 DPDK 示例程序重现完全相同的故障:l2fwd_crypto.

这是我用来 运行 l2fwd_crypto.

的命令

./l2fwd-crypto -l 0-1 -n 4 --vdev “crypto_aesni_mb0” --vdev “crypto_null” --vdev “crypto_zuc” - -vdev "crypto_snow3g0" --vdev "crypto_scheduler,slave=crypto_null,slave=crypto_aesni_mb0,slave=crypto_snow3g0,slave=crypto_zuc" -- -p 0x3 --chain CIPHER_HASH --cipher_op 加密 --cipher_algo aes-cbc --cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f --auth_op 生成 --auth_algo aes-xcbc-mac --auth_key 10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f

错误信息是:

rte_cryptodev_scheduler_slave_attach() 第 214 行:功能更新失败

我在 CentOS 7.4 上使用 DPDK 20.05

我的问题是:

  1. 这是处理所有不同加密算法的正确方法吗?我的意思是创建 4 个虚拟设备。
  2. 为什么加密调度程序失败?

任何 suggestion/comments 都非常感谢。

[EDIT-1:基于评论对话]

DPDK POLL 模式 Crypto Scheduler 旨在 运行 相同类型的硬件或软件。 dpdk document 中对此进行了介绍。因此,如果需要加密调度程序工作,它必须使用所有相同类型(HW/SW)进行初始化。

因此重新运行 全部为 NULL、ZUC、SNoW 的测试,AES_MB 将起作用

注意:关于内部逻辑工作,我个人认为加密调度程序逻辑中的当前逻辑是正确的。因为,在实际逻辑中,人们会在 ACL、LPM 或精确匹配中查找 dest-ip 或 src+dest IP 来识别 SA 或加密密钥。这可以根据工作负载或流量(老鼠或大象)流量卸载到软件或硬件。