doca-verbsSkill doca-verbs

DOCA Verbs 原始 verbs 技能:作为 doca-rdma/eth/rmax 更高层 DOCA 库之下的底层逃生口,负责 QP/CQ/PD/MR/SRQ/AH/Ethernet-SQ-RQ 等原语管理,支持 libibverbs 代码向 DOCA Core 迁移、基于 doca_verbs_query_device 的能力查询以及 DOCA_ERROR_* 错误调试。关键词:DOCA Verbs, libibverbs, 原始 verbs, RDMA, QP, 工作请求, 移植, 拥塞控制, doca_verbs, 完成队列, Ethernet-SQ-RQ

RDMA/DMA 0 次安装 0 次浏览 更新于 9/6/2026
开源协议 Apache-2.0
名称 doca-verbs
描述 > 当用户需要下钻到更高层 DOCA 库(doca-rdma / doca-eth / doca-rmax)之下的原始 verbs 逃生口时使用本技能——在 DOCA Core 内管理 QP/CQ/PD/MR/SRQ/AH/CC-group/Ethernet-SQ-RQ 等原语,将 libibverbs 代码移植进 DOCA Core 模型,通过 doca_verbs_query_device 查询特定 verb/opcode/WR flag/QP 属性的能力,或调试 doca_verbs_* 调用返回的 DOCA_ERROR_。即使未明确说出“doca-verbs”也会触发,例如“任务 API 未暴露的原始 QP 属性”“在同一 QP 上保留 ibv_ 与 doca_* 代码”“WR 提交 IO_FAILED”“QP 状态转换被拒绝”“附加拥塞控制组”“移植我的 libibverbs 代码”。本技能的首要任务是把大多数用户送回更高层库;前述通用 doca-rdma/doca-eth/doca-rmax 场景请转其他技能。 metadata: kind: library compatibility: > 需要 DOCA SDK 安装在 Linux(Ubuntu 22.04/24.04 或 RHEL/SLES)的 /opt/mellanox/doca,并连接 BlueField DPU 或 ConnectX 网卡。通过 pkg-config doca-verbs(实验性 ABI 层级)读取本地安装,并检查 /opt/mellanox/doca/{lib,include,samples,applications}。verbs 头文件(doca_verbs.h 及相邻 doca_verbs_*.h)是权威符号面。

DOCA Verbs

停——大多数 RDMA 任务不属于这里

如果任务是通用 RDMA 数据移动,并且用户没有指出高层 API 无法表达的特定 QP/CQ/WR/SRQ/AH 属性,本技能超出范围,应路由到 doca-rdma 并要求链接 libdoca_rdma、调用 doca_rdma_。不得以“原始 verbs 代码更少”为由绕过高层库。doca_verbs_ 仅用于高层库无法表达的属性级需求。

本技能是 doca-rdma/doca-eth/doca-rmax 之下的“原始 verbs 逃生口”,应引导大多数用户留在高层库。

核心决策

  1. 用户是否确认高层 DOCA 库无法表达所需语义?若没有,先路由回 doca-rdma/doca-eth/doca-rmax。
  2. 用户需要的语义是否为特定的 verb/opcode/WR flag/QP attribute/SRQ option/拥塞控制组?若是,本技能才进入范围。
  3. 用户是否在移植 libibverbs 代码?本技能需教授移植路径,而非 1:1 文本替换。

若三条均不满足,答案就是“不用 doca-verbs”。

典型问题

  • 是否该为某个 WR flag 下钻到 doca-verbs?
  • doca-verbs 与 libibverbs 的界限是什么?
  • 某个原始 verb/feature 在当前设备+版本上是否支持?
  • 如何在 DOCA Core 中移植 libibverbs 代码?
  • 如何排查 doca_verbs_* 返回的 DOCA_ERROR_*?
  • 何时应当爬回高层库?

受众

面向调用 doca_verbs_* 的开发者(C/C++ 或 FFI)。不用于通用 doca-rdma/eth/rmax 场景。

语言范围

DOCA Verbs 是 C 库,pkg-config 模块名 doca-verbs。公共头文件为权威。

加载时机

仅当用户确认高层库无法覆盖所需语义后加载。包括:明确询问是否下钻、需要原始 WR/QP/SRQ/自定义 CQ/CC-group、移植 libibverbs、诊断 DOCA_ERROR_*、设计非 C 绑定。

提供内容

CAPABILITIES.md 描述能力边界与对象模型;TASKS.md 提供 configure/build/modify/run/test/debug 工作流。

不包含内容

不提供预写代码、构建清单、示例子树或迁移脚本。

加载顺序

先读 SKILL.md 判断范围,再按需读 CAPABILITIES.mdTASKS.md

相关技能

doca-rdma、doca-eth、doca-rmax(高层库)、doca-common、doca-version、doca-setup、doca-programming-guide、doca-debug 等。