
1. DOCA 框架DOCA Framework本文译自 NVIDIA DOCA SDK 文档 v3.4.0DOCA Framework原文最后更新2026 年 5 月 27 日本页概述 NVIDIA DOCA 框架包括其架构、安装包与软件组件的详细信息。简介DOCA 框架提供了一套完整的软件套件包含驱动程序、库、工具以及底层软件用于与硬件设备及 BlueField 随附的默认操作系统进行交互。DOCA 框架并非单一的安装包而是一组 DOCA 相关软件组件的集合通过两个主要软件包分发DOCA-Host和BlueField-Bundle。该框架由两大部分组成组成部分说明DOCA SDK使开发者能够在 NVIDIA® BlueField® 网络平台上快速构建应用程序和服务充分发挥业界标准 API 以及 NVIDIA BlueField DPU 和 SuperNIC 的强大能力。DOCA SDK 文档见此处。BlueField 平台软件提供引导和配置 BlueField 设备所需的基本组件包括引导加载程序bootloader、固件以及官方的、基于 Ubuntu 的参考 Linux 发行版。其中包含 ATF/UEFI、BMC 固件和 BlueField 网卡固件。BlueField 平台软件文档见此处。DOCA 软件包为了确保在主机host和设备上以最优方式安装 DOCADOCA 提供了以下几个小节所述的安装包。DOCA-HostDOCA-Host 是安装在主机服务器上的软件包用于支持 NVIDIA 设备包括 BlueField 和 ConnectX。DOCA-Host 提供多种安装配置profile每种都针对特定的使用场景量身定制doca-alldoca-networkingdoca-ofed有关安装配置和支持的主机操作系统的详细信息请参见此处。BlueField-BundleBF-BundleBlueField 软件套装BF-Bundle安装在 BlueField 的 Arm 核心上用于在 BlueField 网络平台上提供完整的 DOCA 体验。BlueField 设备出厂时已预装 BF-Bundle。BF-Bundle 包含DOCA SDK 库、驱动程序和工具BlueField 平台软件BlueField Arm 核心的默认操作系统Ubuntu 22.04BlueField 固件套装BF-FWBundleBlueField 固件套装BF-FWBundle是安装在 BlueField Arm 核心上的最小化软件包。它仅提供外部开通provisioning和软件加载所需的管理接口。BF-FWBundle 包含ATFUEFIBlueField 网卡固件BMC 固件eROT 固件BF-FWBundle不包含DOCA SDKBlueField Arm 核心的操作系统BlueField 设备BlueField 用户手册提供了有关安装、支持的接口、规格参数和故障排除的详细说明。2. DOCA 概述DOCA Overview本文译自 NVIDIA DOCA SDK 文档 v3.4.0DOCA Overview原文最后更新2026 年 5 月 27 日本文概述 NVIDIA DOCA 文档的结构带你了解 DOCA 开发者专区门户——其中包含了 NVIDIA DOCA 工具包的全部信息为你开发 NVIDIA® BlueField® 加速应用程序以及主机端驱动程序提供所需的一切。简介NVIDIA DOCA™ 框架Framework借助业界标准 API能够在 BlueField 网络平台之上快速创建和管理应用程序与服务。借助 DOCA开发者可以充分发挥 NVIDIA BlueField 数据处理器DPU和 SuperNIC 的强大能力交付突破性的网络、安全与存储性能。在主机上安装 DOCA 后即可获得管理 NVIDIA® BlueField® 和 NVIDIA® ConnectX® 设备所需的全部驱动程序和工具。DOCA 框架包含面向 BlueField Arm 的 DOCA-Host 软件包和 BlueField 软件套装BlueField Software BundleBlueField 软件套装BF-Bundle安装在 BlueField Arm 核心上的软件包DOCA-Host安装在主机服务器上的软件包包含不同的 DOCA 安装配置profile。BlueField 软件套装包含安装在 BlueField 平台之上的 DOCA 运行时驱动和库安装在 BlueField 平台上的操作系统BlueField 平台软件即固件和 UEFI 引导加载程序。DOCA 通过专门的 DOCA-Host 软件包安装为配备 NVIDIA 网络平台即 BlueField 和 ConnectX的主机提供所有必需的库和驱动程序。DOCA 包含运行时环境和开发环境其中既有面向主机的设备管理与可编程库和驱动也有作为 BlueField 平台软件一部分的相应组件。DOCA 是支撑 BlueField 各主要硬件实体的软件基础设施安装主机端和 BlueField 镜像的安装说明均可参见 DOCA Linux 安装指南。无论 DOCA 安装在主机上还是 BlueField 网络平台上都可以在/opt/mellanox/doca目录下找到各个 DOCA 组件。其中包括传统的 SDK 相关组件库、头文件等也包括 DOCA 示例samples、应用程序applications、工具等如本文档所述。APIDOCA SDK 围绕各个 DOCA 库构建这些库旨在发挥 BlueField 的各项能力。在编程指南Programming Guide一节中可以找到每个 DOCA 库的详细说明、设计目标和 API。这些指南记录了 DOCA 的 API旨在帮助开发者编写基于 DOCA 的程序。API 参考API References一节收录了由 Doxygen 生成的 DOCA 官方 API 文档。编程指南DOCA 编程指南完整呈现了 DOCA 各库及其 API。每篇指南都包含简介、架构、API 概览以及该库特有的其他信息。每个库的编程指南都附带实现基本 DOCA 任务的代码片段。建议在阅读相应 DOCA 库的编程指南时对照这些示例来学习其 API。示例展示的是某个 DOCA 库单一特性的实现。如果需要更详细地参考使用了多个 DOCA 库的完整 DOCA 程序请参阅参考应用程序。应用程序应用程序Applications是比示例samples更高层次的参考代码演示了如何构建完整的 DOCA 程序。除了提供源代码和编译定义外这些应用程序还以编译好的二进制形式随附发布。这样用户无需经历面向开发者的编译过程即可开箱即用地与 DOCA 程序交互。许多 DOCA 应用程序结合了多个 DOCA 库的功能并为用户关注的常见场景提供了实现范例例如根据进出流量进行应用识别、利用硬件 RegEx 加速扫描文件等等。有关 DOCA 应用程序的更多信息请参阅 DOCA 参考应用程序。工具部分 DOCA 库在发布时会附带用于运行时和开发的辅助工具。这些工具通常是对库自身 API 的扩展用于弥合库所期望的输入格式与用户实际可用输入之间的差距。有关 DOCA 工具的更多信息请参阅 DOCA 工具。服务DOCA 服务Services是容器化的 DOCA 程序为特定用例提供端到端解决方案。DOCA 服务可通过 NVIDIA 容器目录NGC获取能够轻松直接部署到 BlueField部分也可部署到主机。有关向 BlueField 平台进行容器化部署的更多信息请参阅 DOCA 容器部署指南。有关 DOCA 服务的更多信息请参阅 DOCA 服务。如有问题、意见和建议请联系doca-feedbacknvidia.com3. DOCA 编程指南DOCA Programming Guide本文译自 NVIDIA DOCA SDK 文档 v3.4.0DOCA Programming Guide原文最后更新2026 年 5 月 27 日《DOCA 编程指南》面向希望使用 DOCA SDK 在 NVIDIA® BlueField® DPU 和 SuperNIC 之上开发应用程序的开发者。DOCA 编程概览DOCA Programming Overview新接触 DOCA 的开发者务必阅读用于理解大多数应用所依赖的架构和主要构件。DOCA 开发最佳实践DOCA Development Best Practices列举了常见的开发陷阱以及可加速应用开发、验证和产品化的各项能力。DOCA 库DOCA Libraries详细说明如何使用每个 DOCA 库、其 API 以及与之相关的各个方面。用户可以只阅读自己应用所需的 DOCA 库相关页面。DOCA 工具模块DOCA Utils包含可供应用开发者用来加速开发过程的模块例如 DOCA Arg Parser可简化应用程序命令行界面的创建。DOCA 驱动DOCA Drivers介绍 DOCA 内部使用的其他框架。如有问题、意见和建议请联系doca-feedbacknvidia.com4. 硬件架构Hardware Architecture本文译自 NVIDIA DOCA SDK 文档 v3.4.0DOCA Programming Overview → Hardware Architecture原文最后更新2026 年 5 月 27 日BlueField 的主要硬件实体hardware entities分别针对不同类型的工作负载进行了优化。Arm 核心Arm Cores针对控制路径control-path应用、通用计算和单流single-flow性能优化。16 个 Arm Cortex-A78 核心用于通用处理一致性网格Coherent Mesh架构实现高效互连末级缓存Last-Level CacheLLC优化内存性能DDR5 内存子系统支持高速数据访问基础操作系统与微服务用于管理系统资源可编程加速流水线Accelerated Programmable Pipeline针对高性能报文处理和高级报文处置优化。可编程的 64–128 报文处理器实现灵活组网多级、高度并行化的架构优化吞吐基于流flow的分类与动作引擎实现高效报文处理支持 RDMA、加密加速和基于时间的调度数据通路加速器Data-Path AcceleratorDPA面向 I/O 密集型应用、高插入率任务、网络流处理、设备模拟device emulation和 DMA 操作。16 个超线程 I/O 与报文处理核心应对密集型工作负载实时操作系统保证确定性与低延迟操作5. DOCA SDK 架构DOCA SDK Architecture本文译自 NVIDIA DOCA SDK 文档 v3.4.0DOCA Programming Overview → DOCA SDK Architecture原文最后更新2026 年 5 月 27 日DOCA SDK 提供用于网络与数据处理可编程性的库依托 NVIDIA® BlueField® 网络平台DPU 或 SuperNIC以及 NVIDIA® ConnectX® 网卡的硬件加速器。DOCA 软件框架构建在DOCA Core之上DOCA Core 为所有 DOCA 库提供统一的软件基础。这些库可以组合成处理流水线pipeline或工作流workflow执行各种卸载offload任务。设备子系统Device SubsystemDOCA SDK 使应用程序能够将资源密集型任务如加密、压缩和网络相关操作如报文收发、RDMA 发送卸载到专用硬件上执行。设备抽象Device AbstractionDOCA 设备子系统为 BlueField 和 ConnectX 设备内部的硬件处理单元提供抽象层。它允许应用程序发现网络平台提供的可用硬件加速单元查询这些加速单元的能力和属性打开并配置设备供各库分配和共享硬件加速所需的资源。一个系统中可能有多个可用设备。应用程序可以基于拓扑如 PCIe 地址或能力如是否支持加密来选择设备。DOCA 设备类型DOCA Core 定义了两类 DOCA 设备本地设备Local device——在本地系统BlueField 或主机上暴露的物理或虚拟设备包括物理功能PFPhysical Function虚拟功能VFVirtual Function可扩展功能SFScalable Function代理设备Representor device——BlueField 侧的代理设备用于代表主机侧的设备。主机侧的功能如 PF、VF 或 SF与 BlueField 上的代理设备一一对应1:1 映射。下图给出了主机本地设备及其在 BlueField 上代理设备的示例该图展示了 BlueField 以 DPU 模式工作时的典型拓扑参见 BlueField 工作模式。图中 BlueField图右侧与主机图左侧相连。主机拥有物理功能 PF0PF0 下挂虚拟功能 VF0。BlueField 侧为主机上的每个功能都按比例 1:1 配备一个代理设备例如hpf0是主机 PF0 设备的代理设备依此类推同时也为每个 SF 功能配备代理且 SF 与其代理都位于 BlueField 内部。有关 DOCA 设备子系统的更多细节请参见DOCA Device一节。内存管理子系统Memory Management Subsystem硬件加速的处理任务需要以数据缓冲区buffer作为输入和输出。DOCA SDK 采用**零拷贝zero-copy**技术通过避免不必要的数据搬运来最大化性能。为了实现零拷贝应用程序在将内存用作数据缓冲区之前必须**预先注册register**内存。内存管理子系统提供以下能力内存注册定义用于存放数据缓冲区的应用内存范围允许一个或多个设备访问已注册的内存设置访问权限如只读、读写。数据缓冲区分配管理在已注册的内存范围内分配数据缓冲区支持在已注册内存之上进行内存池化memory pooling。DOCA 内存体系包含以下主要组件doca_buf——表示 DOCA 库操作用作输入/输出的数据缓冲区doca_mmap——描述已注册、可被设备按既定权限访问的内存。每个doca_buf都位于某个doca_mmap内存范围之内doca_buf_inventory——一组具有相同特征的doca_buf对象池详见DOCA Core Buffers与DOCA Core Inventories小节。下图展示了 DOCA 内存子系统内的各个模块图中展示了一个包含 2 个doca_buf的doca_buf_inventory。每个doca_buf指向内存缓冲区的一部分而该缓冲区属于某个doca_mmap。该 mmap 填充了一段连续内存范围并注册到了 2 个 DOCA 设备dev1 和 dev2上。有关 DOCA 内存管理子系统的更多细节请参见DOCA Memory Subsystem一节。执行模型Execution ModelDOCA 各库对底层硬件操作进行抽象使应用程序能够专注于高层处理任务如加密、报文处理和压缩。每个 DOCA 库都定义了执行这些任务的专用 API。这些库通过**上下文context**与硬件处理单元交互。任务与事件模型Task and Event ModelDOCA API 遵循异步执行模型应用程序通过任务task和事件event与硬件交互基于任务的执行应用程序准备任务参数应用程序提交任务请求硬件处理任务完成时应用程序收到完成回调completion callback。事件驱动执行应用程序注册某个事件指示硬件在事件发生时上报每当事件被触发应用程序都会收到一次回调。进度引擎Progress Engine——管理异步处理由于硬件处理是异步的DOCA 提供了进度引擎Progress EnginePE来管理任务和事件的完成。PE 支持两种模式轮询Polling即忙等待模式——应用程序反复检查任务/事件是否完成通知Notification模式——应用程序注册基于操作系统的通知机制如 Linux event FD在任务/事件完成时获得通知。一旦发生完成无论由任务还是事件触发相应的回调都会作为 PE 方法的一部分被调用。单个 PE 实例可以同时等待来自不同上下文的多个任务/事件。因此应用程序可以做到每个线程使用一个 PE。有关 DOCA 进度引擎的更多细节请参见DOCA Progress Engine一节。下图说明了各种 DOCA 模块如何组合成 DOCA 跨库处理运行时图中展示了 3 个共用同一设备的上下文context每个上下文都有一些由应用程序提交/注册的任务/事件。3 个上下文都连接到同一个 PE应用程序可以使用同一个 PE 一次性等待所有完成。有关 DOCA 执行模型的更多细节请参见DOCA Execution Model一节。