1. DOCA 框架(DOCA Framework)

本文译自 NVIDIA DOCA SDK 文档 v3.4.0:DOCA Framework
原文最后更新:2026 年 5 月 27 日

本页概述 NVIDIA DOCA 框架,包括其架构、安装包与软件组件的详细信息。

简介

DOCA 框架提供了一套完整的软件套件,包含驱动程序、库、工具以及底层软件,用于与硬件设备及 BlueField 随附的默认操作系统进行交互。

DOCA 框架并非单一的安装包,而是一组 DOCA 相关软件组件的集合,通过两个主要软件包分发:DOCA-HostBlueField-Bundle

该框架由两大部分组成:

组成部分 说明
DOCA SDK 使开发者能够在 NVIDIA® BlueField® 网络平台上快速构建应用程序和服务,充分发挥业界标准 API 以及 NVIDIA BlueField DPU 和 SuperNIC 的强大能力。DOCA SDK 文档见此处
BlueField 平台软件 提供引导和配置 BlueField 设备所需的基本组件,包括引导加载程序(bootloader)、固件,以及官方的、基于 Ubuntu 的参考 Linux 发行版。其中包含 ATF/UEFI、BMC 固件和 BlueField 网卡固件。BlueField 平台软件文档见此处

DOCA 软件包

为了确保在主机(host)和设备上以最优方式安装 DOCA,DOCA 提供了以下几个小节所述的安装包。

DOCA-Host

DOCA-Host 是安装在主机服务器上的软件包,用于支持 NVIDIA 设备,包括 BlueField 和 ConnectX。

DOCA-Host 提供多种安装配置(profile),每种都针对特定的使用场景量身定制:

  • doca-all
  • doca-networking
  • doca-ofed

有关安装配置和支持的主机操作系统的详细信息,请参见此处

BlueField-Bundle(BF-Bundle)

BlueField 软件套装(BF-Bundle)安装在 BlueField 的 Arm 核心上,用于在 BlueField 网络平台上提供完整的 DOCA 体验。BlueField 设备出厂时已预装 BF-Bundle。

BF-Bundle 包含:

  • DOCA SDK 库、驱动程序和工具
  • BlueField 平台软件
  • BlueField Arm 核心的默认操作系统(Ubuntu 22.04)

BlueField 固件套装(BF-FWBundle)

BlueField 固件套装(BF-FWBundle)是安装在 BlueField Arm 核心上的最小化软件包。它仅提供外部开通(provisioning)和软件加载所需的管理接口。

BF-FWBundle 包含:

  • ATF
  • UEFI
  • BlueField 网卡固件
  • BMC 固件
  • eROT 固件

BF-FWBundle 包含:

  • DOCA SDK
  • BlueField Arm 核心的操作系统

BlueField 设备

BlueField 用户手册提供了有关安装、支持的接口、规格参数和故障排除的详细说明。

2. DOCA 概述(DOCA Overview)

本文译自 NVIDIA DOCA SDK 文档 v3.4.0:DOCA 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 Bundle):

  • BlueField 软件套装(BF-Bundle):安装在 BlueField Arm 核心上的软件包;
  • DOCA-Host:安装在主机服务器上的软件包,包含不同的 DOCA 安装配置(profile)。

BlueField 软件套装包含:

  • 安装在 BlueField 平台之上的 DOCA 运行时驱动和库;
  • 安装在 BlueField 平台上的操作系统;
  • BlueField 平台软件(即固件和 UEFI 引导加载程序)。

DOCA 通过专门的 DOCA-Host 软件包安装,为配备 NVIDIA 网络平台(即 BlueField 和 ConnectX)的主机提供所有必需的库和驱动程序。

DOCA 包含运行时环境和开发环境,其中既有面向主机的设备管理与可编程库和驱动,也有作为 BlueField 平台软件一部分的相应组件。

DOCA 是支撑 BlueField 各主要硬件实体的软件基础设施:

DOCA 软件栈架构图

DOCA 作为软件框架

安装

主机端和 BlueField 镜像的安装说明均可参见 DOCA Linux 安装指南

无论 DOCA 安装在主机上还是 BlueField 网络平台上,都可以在 /opt/mellanox/doca 目录下找到各个 DOCA 组件。其中包括传统的 SDK 相关组件(库、头文件等),也包括 DOCA 示例(samples)、应用程序(applications)、工具等,如本文档所述。

API

DOCA 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-feedback@nvidia.com

3. DOCA 编程指南(DOCA Programming Guide)

本文译自 NVIDIA DOCA SDK 文档 v3.4.0:DOCA 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-feedback@nvidia.com

4. 硬件架构(Hardware Architecture)

本文译自 NVIDIA DOCA SDK 文档 v3.4.0:DOCA Programming Overview → Hardware Architecture
原文最后更新:2026 年 5 月 27 日

BlueField 的主要硬件实体(hardware entities),分别针对不同类型的工作负载进行了优化。

BlueField 硬件概览架构图

Arm 核心(Arm Cores)

针对控制路径(control-path)应用、通用计算和单流(single-flow)性能优化。

  • 16 个 Arm Cortex-A78 核心,用于通用处理
  • 一致性网格(Coherent Mesh)架构,实现高效互连
  • 末级缓存(Last-Level Cache,LLC),优化内存性能
  • DDR5 内存子系统,支持高速数据访问
  • 基础操作系统与微服务,用于管理系统资源

可编程加速流水线(Accelerated Programmable Pipeline)

针对高性能报文处理和高级报文处置优化。

  • 可编程的 64–128 报文处理器,实现灵活组网
  • 多级、高度并行化的架构,优化吞吐
  • 基于流(flow)的分类与动作引擎,实现高效报文处理
  • 支持 RDMA、加密加速和基于时间的调度

数据通路加速器(Data-Path Accelerator,DPA)

面向 I/O 密集型应用、高插入率任务、网络流处理、设备模拟(device emulation)和 DMA 操作。

  • 16 个超线程 I/O 与报文处理核心,应对密集型工作负载
  • 实时操作系统,保证确定性与低延迟操作

5. DOCA SDK 架构(DOCA SDK Architecture)

本文译自 NVIDIA DOCA SDK 文档 v3.4.0:DOCA 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 Subsystem)

DOCA SDK 使应用程序能够将资源密集型任务(如加密、压缩)和网络相关操作(如报文收发、RDMA 发送)卸载到专用硬件上执行。

设备抽象(Device Abstraction)

DOCA 设备子系统为 BlueField 和 ConnectX 设备内部的硬件处理单元提供抽象层。它允许应用程序:

  • 发现网络平台提供的可用硬件加速单元;
  • 查询这些加速单元的能力和属性;
  • 打开并配置设备,供各库分配和共享硬件加速所需的资源。

一个系统中可能有多个可用设备。应用程序可以基于拓扑(如 PCIe 地址)或能力(如是否支持加密)来选择设备。

DOCA 设备类型

DOCA Core 定义了两类 DOCA 设备:

  • 本地设备(Local device)——在本地系统(BlueField 或主机)上暴露的物理或虚拟设备,包括:
    • 物理功能(PF,Physical Function)
    • 虚拟功能(VF,Virtual Function)
    • 可扩展功能(SF,Scalable Function)
  • 代理设备(Representor device)——BlueField 侧的代理设备,用于代表主机侧的设备。主机侧的功能(如 PF、VF 或 SF)与 BlueField 上的代理设备一一对应(1:1 映射)。

下图给出了主机本地设备及其在 BlueField 上代理设备的示例:

设备子系统示意图

该图展示了 BlueField 以 DPU 模式工作时的典型拓扑(参见 BlueField 工作模式)。

图中 BlueField(图右侧)与主机(图左侧)相连。主机拥有物理功能 PF0,PF0 下挂虚拟功能 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_bufdoca_buf_inventory。每个 doca_buf 指向内存缓冲区的一部分,而该缓冲区属于某个 doca_mmap。该 mmap 填充了一段连续内存范围,并注册到了 2 个 DOCA 设备(dev1 和 dev2)上。

有关 DOCA 内存管理子系统的更多细节,请参见"DOCA Memory Subsystem"一节。

执行模型(Execution Model)

DOCA 各库对底层硬件操作进行抽象,使应用程序能够专注于高层处理任务,如加密、报文处理和压缩。

每个 DOCA 库都定义了执行这些任务的专用 API。这些库通过**上下文(context)**与硬件处理单元交互。

任务与事件模型(Task and Event Model)

DOCA API 遵循异步执行模型,应用程序通过任务(task)和事件(event)与硬件交互:

  • 基于任务的执行
    1. 应用程序准备任务参数;
    2. 应用程序提交任务,请求硬件处理;
    3. 任务完成时,应用程序收到完成回调(completion callback)。
  • 事件驱动执行
    1. 应用程序注册某个事件,指示硬件在事件发生时上报;
    2. 每当事件被触发,应用程序都会收到一次回调。

进度引擎(Progress Engine)——管理异步处理

由于硬件处理是异步的,DOCA 提供了进度引擎(Progress Engine,PE)来管理任务和事件的完成。

PE 支持两种模式:

  • 轮询(Polling,即忙等待)模式——应用程序反复检查任务/事件是否完成;
  • 通知(Notification)模式——应用程序注册基于操作系统的通知机制(如 Linux event FD),在任务/事件完成时获得通知。

一旦发生完成(无论由任务还是事件触发),相应的回调都会作为 PE 方法的一部分被调用。

单个 PE 实例可以同时等待来自不同上下文的多个任务/事件。因此,应用程序可以做到每个线程使用一个 PE

有关 DOCA 进度引擎的更多细节,请参见"DOCA Progress Engine"一节。

下图说明了各种 DOCA 模块如何组合成 DOCA 跨库处理运行时:

执行模型示意图

图中展示了 3 个共用同一设备的上下文(context),每个上下文都有一些由应用程序提交/注册的任务/事件。3 个上下文都连接到同一个 PE,应用程序可以使用同一个 PE 一次性等待所有完成。

有关 DOCA 执行模型的更多细节,请参见"DOCA Execution Model"一节。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐