You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法使用dpdk_cryptodev创建SPDK虚拟bdev,加密解密功能缺失求助

问题描述

已通过--with-crypto选项配置并编译SPDK,希望在现有bdev之上创建crypto虚拟bdev,但发现dpdk_cryptodev不支持加密/解密操作。

配置dpdk_cryptodev的RPC命令如下:

./rpc.py -s /var/tmp/nvmf_tgt.sock dpdk_cryptodev_scan_accel_module
./rpc.py -s /var/tmp/nvmf_tgt.sock dpdk_cryptodev_set_driver -d crypto_qat
./rpc.py -s /var/tmp/nvmf_tgt.sock accel_assign_opc -o encrypt -m dpdk_cryptodev
./rpc.py -s /var/tmp/nvmf_tgt.sock accel_assign_opc -o decrypt -m dpdk_cryptodev
./rpc.py -s /var/tmp/nvmf_tgt.sock framework_start_init

执行accel_get_module_info RPC命令后得到结果:

[
  {
    "module": "software",
    "supported ops": [
      "copy",
      "fill",
      "dualcast",
      "compare",
      "crc32c",
      "copy_crc32c",
      "compress",
      "decompress",
      "encrypt",
      "decrypt",
      "xor"
    ]
  },
  {
    "module": "dpdk_cryptodev",
    "supported ops": [
      "copy",
      "fill"
    ]
  }
]

可见dpdk_cryptodev的支持操作中没有加密和解密,请问该如何解决此问题?

解决方案

1. 确认QAT硬件与驱动状态

  • 检查系统中是否存在QAT设备:执行lspci | grep -i qat,确认硬件已被识别。
  • 确保已安装正确的QAT用户态驱动,且驱动已加载。可通过modinfo qat或查看/dev/qat_*设备文件验证。

2. 重新编译SPDK时的参数检查

  • 编译SPDK时,除--with-crypto外,必须添加--with-qat选项启用QAT硬件加速支持:
    ./configure --with-crypto --with-qat
    make clean && make -j$(nproc)
    
  • 确认编译过程无报错,日志中显示QAT模块已被正确编译。

3. 调整DPDK cryptodev初始化顺序

  • 先启动SPDK应用,再按以下顺序执行RPC命令,确保硬件被正确枚举:
    1. 启动nvmf_tgt:
      ./build/bin/nvmf_tgt -c <你的配置文件路径> &
      
    2. 执行RPC命令:
      ./rpc.py -s /var/tmp/nvmf_tgt.sock dpdk_cryptodev_set_driver -d crypto_qat
      ./rpc.py -s /var/tmp/nvmf_tgt.sock dpdk_cryptodev_scan_accel_module
      ./rpc.py -s /var/tmp/nvmf_tgt.sock accel_assign_opc -o encrypt -m dpdk_cryptodev
      ./rpc.py -s /var/tmp/nvmf_tgt.sock accel_assign_opc -o decrypt -m dpdk_cryptodev
      ./rpc.py -s /var/tmp/nvmf_tgt.sock framework_start_init
      
    注意:先设置驱动再扫描模块,确保DPDK能正确绑定QAT设备到crypto_qat驱动。

4. 验证DPDK cryptodev设备绑定状态

  • 使用DPDK的dpdk-devbind.py工具确认QAT设备已绑定到vfio-pci或uio_pci_generic等DPDK兼容的用户态驱动:
    ./dpdk-devbind.py --status | grep -i qat
    
  • 如果未绑定,执行绑定操作:
    ./dpdk-devbind.py --bind=vfio-pci <QAT设备的PCI地址>
    

5. 检查SPDK框架初始化时机

  • 确保在分配加密/解密操作给dpdk_cryptodev之前,未执行framework_start_init,过早初始化会导致模块配置无法生效。

完成上述步骤后,重新执行accel_get_module_info,dpdk_cryptodev的supported ops中应包含encrypt和decrypt。


内容的提问来源于stack exchange,提问作者VATSAL TIWARI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:52:23