NVIDIA DOCA Flow 开发技能
帮助开发者在 NVIDIA NIC/DPU 上构建、验证和调试 DOCA Flow 数据包转发应用。
技能明确限定 DOCA Flow 范围,要求核对已安装头文件、能力发现、非零失败退出、硬件安全覆盖和回滚路径,并拒绝绕过 DOCA 的替代方案;但缺少统一的用户确认门槛,仍涉及 sudo、实时流量和硬件模式变更,数据流、权限隔离及恢复细节不完整,因此扣分。
配置、构建、测试、调试和异常路由步骤较详细,包含错误签名、失败反馈和生命周期约束;但关键样例、头文件和 companion skill 依赖用户环境,源文件未提供可执行复现,且 SKILL.md、SKILLCARD.yaml 与 BENCHMARK.md 存在路径、来源和版本信息不一致,因此静态评分受限。
目标用户、触发短语、适用场景和明确非适用范围均有说明,覆盖 C/C++ 与 FFI;但中文支持、不同环境的兼容边界和中国大陆网络可达性未说明,且要求本地安装 DOCA 与支持硬件,限制了适用面。
采用 loader、能力说明和任务工作流分层,包含依赖、示例样例、限制、错误分类、安全和相关技能路由;但缺少清晰作者、变更日志和稳定版本策略,SKILLCARD 的 TBD 签名/版本以及来源和许可证表述不一致,维护责任虽可推断但未完整声明。
能够覆盖端口启动、pipe 设计、能力检查、计数器和调试等核心任务,并强调从已安装样例派生;但它不提供代码、构建清单或绑定实现,最终结果依赖用户本地样例和安装环境,仍需明显适配与人工审查,静态上不能超过 7 分且保守给 6 分。
存在明确的头文件核对、已安装样例、pkg-config、ldd、计数器和错误检查要求,且附有有限 benchmark 报告;但评测数据集不可用,未提供覆盖关键路径的本地测试套件或 CI 证据,主要验证仍依赖用户运行环境,因此不给静态满分。
- 执行前确认 DOCA SDK、支持的 NIC/DPU、设备归属和能力集合;文档本身未提供静态可复现环境。
- 在实时管理端口或执行 mlxconfig、sudo、硬件转发操作前,必须取得明确确认并准备带外恢复路径。
- SKILL.md、SKILLCARD.yaml 和 BENCHMARK.md 的来源、路径、许可证、版本及评测信息存在不一致,发布前应统一。
- 不要把 BENCHMARK.md 的 PASS 视为独立验证;其评测数据集在文件中声明不可用。
这个 Skill 能做什么,适合哪些场景?
该技能面向已经安装 DOCA SDK 的 Linux 开发环境,指导开发者使用 DOCA Flow 编程 NVIDIA NIC/DPU 的数据包转发。它覆盖端口和 representor 初始化、匹配与动作管道、转发目标、硬件编程前验证、计数器读取和 API 错误诊断。技能要求以已安装版本的头文件和随附样例为事实依据,并坚持链接 libdoca_flow。它不是现成代码包;开发者需要基于本机 DOCA 样例修改并构建自己的应用。
读取本机 pkg-config 配置、DOCA 头文件、库、样例和应用目录;指导代理核验 doca_flow_* 与 DOCA_* 符号;基于 /opt/mellanox/doca/samples/doca_flow/ 下的样例规划配置、构建、修改、运行、测试和调试流程;要求应用执行 Flow 初始化、端口启动、管道编程、条目提交和计数器读取;指导使用 ldd 检查应用是否链接 libdoca_flow;在请求超出单个管道或硬件能力、API 不存在或用户接受内核替代方案时拒绝生成不合适的代码。
- 网络软件开发者需要在支持的 NVIDIA NIC/DPU 上启动 DOCA Flow 端口或 representor。
- C/C++ 开发者需要定义匹配条件、动作、管道和转发目标并提交硬件规则。
- 开发者需要在硬件编程前验证管道规格,或调查提交失败和 DOCA_ERROR_* 错误。
- 运维或性能工程师需要在流量下读取每条规则或每个管道的硬件计数器。
- 绑定开发者需要通过 Rust、Go、Python 或其他 FFI 语言使用 DOCA Flow C ABI。
- 开发者需要在现有 DOCA Flow 端口上增加有状态的 5 元组连接跟踪。
这个 Skill 有哪些优点和局限?
- 明确要求使用 libdoca_flow 和完整的 DOCA Flow 生命周期,避免用 tc、iptables/nftables、eBPF/XDP、OVS 或裸 rte_flow 替代。
- 以本机安装的头文件、DOCA 版本和随附样例为 API 与构建依据。
- 覆盖端口 bring-up、管道设计、硬件验证、计数器观测和错误诊断。
- 明确列出超出单个管道或硬件表达能力时的拒绝与替代路径。
- 仅适用于已安装 DOCA SDK 且连接了支持的 NVIDIA NIC/DPU 的 Linux 环境。
- 技能本身不提供预写的 Flow 应用源代码、独立构建清单、绑定或样例子树。
- 许多关键细节依赖未在源材料中展开的 TASKS.md 和 CAPABILITIES.md。
- 源材料没有展示测试结果、支持设备清单或跨版本验证证据。
如何安装这个 Skill?
使用仓库 README 提供的 Skills CLI 安装单个技能:
npx skills add nvidia/skills --skill doca-flow --yes
CLI 会提示选择技能安装目标。源材料没有说明该技能在各客户端中的具体落盘路径,也没有要求手动克隆仓库或复制目录。运行 npx skills update 可更新已安装技能。
如何使用这个 Skill?
在已安装 DOCA SDK、支持的 NVIDIA NIC/DPU 和 Linux 环境中,让代理处理例如“如何在 representor 上启动 DOCA Flow 端口?”或“如何为现有 DOCA Flow 设置增加硬件加速的有状态 5 元组连接跟踪?”的问题。使用前应确认 /opt/mellanox/doca 存在,并让代理先读取 TASKS.md 的 configure 部分再编写或运行端口代码。具体任务流程依赖技能目录中的 TASKS.md 和 CAPABILITIES.md;本源材料未提供这些文件的完整内容。
这个 Skill 与同类方案有什么区别?
与内核 tc/flower、iptables/nftables、eBPF/XDP、OVS 以及不结合 DOCA 的裸 DPDK rte_flow 相比,该技能要求交付物真正使用 DOCA Flow 的 pipe/entry 生命周期、能力发现和硬件计数器;它不会把仅成功下发到 NIC 的内核规则视为完成。