如何解决DPDK 加密设备调度程序“功能更新失败”
我正在处理一个 DPDK 项目并遇到需要您帮助的问题。 项目需要通过DPDK(多缓冲库)实现加解密。为了支持所有的密码和哈希算法,我需要创建 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 ENCRYPT --cipher_algo aes-cbc --cipher_key 00:01:02:03:04:05:06:07 08:09:0a:0b:0c:0d:0e:0f --auth_op GENERATE --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
我的问题是:
- 这是处理所有不同加密算法的正确方法吗?我的意思是创建 4 个虚拟设备。
- 为什么加密调度程序失败?
非常感谢任何建议/意见。
解决方法
[EDIT-1:基于评论对话]
DPDK 轮询模式加密调度程序旨在与相同类型的硬件或软件一起运行。这在 dpdkd document 中有介绍。因此,如果需要加密调度程序工作,它必须使用所有相同的类型(硬件/软件)进行初始化。
因此,使用所有 NULL、ZUC、SNoW、AES_MB 重新运行测试都将起作用
注意:关于内部逻辑工作,我个人的观点是当前加密调度器逻辑中的逻辑是正确的。因为,在实际逻辑中,将在 ACL、LPM 或精确匹配中查找 dest-ip 或 src+dest IP 以识别 SA 或加密密钥。这可以根据工作负载或流量(小鼠或大象)流量卸载到 SW 或 HW。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。