ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

DOCA 简介与安装

DOCA 简介与安装

1. DOCA 的工程功能定位于商业价值

NVIDIA DOCA(Data Center Infrastructure on a Chip Architecture)的工程功能定位,本质上是在硬件层(BlueField DPU)与商业层(客户粘性与生态锁定)之间构建一个"类 CUDA"的软件基础设施层。其商业价值可以从以下几个维度理解:


一、战略定位:DPU 界的 CUDA

这是 NVIDIA 官方反复传达的核心定位:

“DOCA is to DPUs what CUDA is to GPUs”

维度CUDA(GPU)DOCA(DPU)
硬件绑定NVIDIA GPUBlueField DPU
核心价值降低并行计算编程门槛降低基础设施卸载编程门槛
生态效应GPU 成为通用计算标准DPU 成为数据中心标准组件
商业结果GPU 市场份额与溢价DPU 市场份额与硬件绑定

DOCA 的免费策略(SDK 免费)与 CUDA 完全一致——通过降低软件使用门槛来提升硬件的竞争壁垒,最终目的是推动 BlueField DPU 的销售。


二、工程功能 → 商业价值的映射

1. 抽象层:从"写驱动"到"调 API"

工程功能:提供高层库(DOCA Flow、DPI、SNAP、SPDK 等),屏蔽底层寄存器与驱动细节。

商业价值

  • 降低 ISV 与系统集成商的开发成本:无需雇佣底层网络/存储/安全驱动工程师
  • 加速上市时间(Time-to-Market):Palo Alto Networks、Fortinet、Juniper、F5 等安全厂商可以快速将产品移植到 DPU
  • 扩大可寻址市场:从只有超大规模云厂商能用,扩展到中等规模企业

2. 前后向兼容:保护客户软件投资

工程功能:DOCA 库承诺在新一代 BlueField DPU(约每 18 个月迭代)上保持前向与后向兼容。

商业价值

  • 降低总拥有成本(TCO):客户无需在每次硬件升级时重构软件栈
  • 锁定长期客户关系:兼容承诺增加了换供应商的迁移成本
  • 硬件销售周期平滑:客户更愿意提前采购新一代 DPU,因为软件无需重写

3. 容器化服务:从"卖卡"到"卖方案"

工程功能:DOCA 提供预构建的容器化服务(如 OVS、 telemetry agents、安全策略下发等),支持"即插即用"部署。

商业价值

  • 从硬件销售转向平台销售:客户购买的不仅是 DPU 卡,而是一整套可运行的基础设施服务
  • SaaS/订阅模式的可能性:DOCA 服务可以作为持续更新的软件包收费
  • 云厂商集成友好:与 Red Hat OpenShift、VMware Project Monterey 等容器平台深度集成,成为云原生基础设施的"默认选项"

4. 安全卸载:从"成本中心"到"价值中心"

工程功能:DOCA Argus、inline TLS offload、micro-segmentation、host introspection 等安全能力。

商业价值

  • 高价值垂直行业准入:金融、医疗、政府等强合规行业愿意为"零信任架构"支付溢价
  • 与 CrowdStrike 等安全厂商的联合销售:DOCA 成为安全生态的"基础设施层",带动 DPU 在安防市场的渗透
  • 降低安全事件成本:数据泄露平均单次损失约 $700,000,DPU 级安全卸载可以显著降低风险敞口

5. AI 工厂基础设施:绑定未来增长引擎

工程功能:DOCA 作为 AI 工厂(AI Factory)的网络与安全基座,支持 RDMA、RoCE、GPUNetIO、SHARP 等 AI 训练/推理所需的高速互联协议。

商业价值

  • 绑定 AI 基础设施销售:DOCA + BlueField + ConnectX + Spectrum-X 构成 NVIDIA 的端到端 AI 网络栈,客户一旦采用,难以替换其中任何一层
  • 从"卖 GPU"到"卖 AI 工厂":DOCA 是 NVIDIA 从芯片供应商升级为"AI 基础设施平台商"的关键软件组件
  • 与 Red Hat、Dell、HPE、Cisco 等 OEM 的联合销售:DOCA 的预集成让这些厂商的 AI 工厂方案默认包含 BlueField DPU

三、竞争壁垒:生态锁定 vs. 开放性的平衡

DOCA 的商业定位存在一个精妙的平衡:

层面开放性锁定性
驱动层开源驱动,理论上可移植但最优性能只在 BlueField 上实现
DOCA 库基于 DPDK/SPDK 等开源项目但高级加速库(如 DOCA Flow、DPI)为 NVIDIA 独有
容器服务二进制可移植但深度优化依赖 BlueField 硬件特性
生态合作与 VMware、Red Hat、Palo Alto 等开放合作但合作方案默认以 BlueField + DOCA 为基座

这种"开放接口、封闭最优实现"的策略,是 NVIDIA 从 CUDA 时代验证过的成功模式。


四、一句话总结

DOCA 的工程功能定位是"数据中心的 CUDA"——它通过抽象 DPU 编程复杂性、提供前后向兼容的库与容器化服务,将 BlueField DPU 从一块"网卡加速卡"转变为一个"可编程的数据中心基础设施节点",其终极商业价值在于:以免费软件栈换取 DPU 硬件的生态锁定,使 NVIDIA 在 AI 工厂时代控制从计算(GPU)到网络(ConnectX/Spectrum)再到基础设施卸载(BlueField/DOCA)的完整数据平面。

2. doca 与 cuda 的关系

doca 这套软件+cx网卡,可以独立于cuda来使用么?
答案是,可以。DOCA 软件栈 + ConnectX 网卡完全可以独立于 CUDA 使用,但需要区分 DOCA 内部不同组件的依赖关系。


一、DOCA 是分层架构,仅部分组件依赖 CUDA

DOCA SDK 包含大量库,只有与 GPU 直接交互的组件才需要 CUDA

DOCA 组件是否依赖 CUDA说明
DOCA Flow❌ 否网络流处理与卸载,纯 DPU/网卡功能
DOCA DPI❌ 否深度包检测,运行在 DPU 加速引擎上
DOCA SNAP❌ 否NVMe 虚拟化与存储卸载
DOCA Telemetry❌ 否遥测与监控
DOCA Perftest(基础模式)❌ 否仅需libibverbs,标准 RDMA 测试
DOCA GPUNetIO必须GPU 直接控制 NIC 收发包,需 CUDA Toolkit + Volta+ GPU
DOCA RDMA Verbs (GDAKI)必须GPU 直接发起 RDMA,需 CUDA

doca-perftest的文档明确指出:唯一强制依赖是libibverbs,DOCA Verbs 和 DOCA GPUNetIO 都是按需加载的可选组件。若未安装 GPUNetIO,工具会回退到标准 IBV 驱动正常运行。


二、ConnectX 网卡 + DOCA 的独立使用场景

以下场景完全不需要 GPU 或 CUDA

1. 标准 RDMA / RoCE 通信

ConnectX-5/6/7 网卡通过 DOCA-OFED 驱动(或上游 rdma-core)提供标准 RDMA Verbs 接口。你的 V100 + CX-6 环境中,如果只用传统 CPU 控制的 RDMA Write/Send,只需安装 DOCA 主机驱动包,无需 CUDA

2. BlueField DPU 作为独立基础设施节点

BlueField-2/3 DPU 拥有独立的 Arm 核心和自己的操作系统(BFB)。DOCA 应用可以完全在 DPU 的 Arm 核上运行,处理网络、存储、安全卸载,主机侧甚至可以没有 GPU:

“BlueField-3 is a full DPU that operates as a standalone node in the PCIe route…It runs on its own operating system, isolates uploads and downloads, virtualization and control.”

3. DOCA 安全与监控(Argus、Flow、Telemetry)

DOCA Argus 等安全组件运行在 DPU 上,通过 DOCA 库与主机交互,不触及 GPU


三、什么情况下"看起来"需要 CUDA?

1. 安装包层面

DOCA 的某些发行版(如doca-all)可能默认包含doca-sdk-gpunetio,从而在依赖解析时拉入 CUDA。但这属于打包策略,不是运行时必需。

2. 特定功能层面

只有当你明确使用以下功能时才需要 CUDA:

  • GDAKI(GPU 直接控制 NIC doorbell)
  • GPU-side CQ pollingDocaRoceReceiverOp的 GPU-resident 模式)
  • GPU 直接收发以太网包(DOCA GPUNetIO Ethernet)

3. 编译层面

如果你从源码编译整个 DOCA SDK,且启用了 GPUNetIO 模块,则构建系统会查找 CUDA Toolkit。但可以通过meson 选项禁用gpunetio来跳过。


四、实际建议:如何最小化安装

如果你的目标是在V100 + CX-6环境中使用 DOCA,但不需要 GPU 直接控制网络(即使用传统 CPU-mediated RDMA),可以:

# Ubuntu/Debian 示例:仅安装 DOCA 主机网络栈,不装 GPUNetIOsudoaptinstalldoca-ofed doca-sdk-flow doca-sdk-rdma# 不含 gpunetio# 不安装:doca-sdk-gpunetio, libdoca-sdk-gpunetio-dev

这样你获得:

  • ConnectX-6 的 RDMA Verbs 加速
  • DOCA Flow 的流卸载能力
  • DPDK/SPDK 集成
  • 零 CUDA 依赖

五、一句话结论

DOCA + ConnectX 网卡可以独立于 CUDA 使用。DOCA 的本质是 DPU/网卡基础设施编程框架,其主体功能(网络、存储、安全卸载)完全不依赖 GPU。只有DOCA GPUNetIO / GDAKI这条"GPU 直接控制 NIC"的支线才需要 CUDA Toolkit 和 NVIDIA GPU。如果你的应用不需要 GPU kernel 直接敲网卡 doorbell,那么只需安装 DOCA 主机驱动和基础库即可。

3. 如何安装 doca

如下几行命令,可以完整安装 doca 整套软件么?

wgethttps://www.mellanox.com/downloads/DOCA/DOCA_v3.4.0/host/doca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudodpkg-idoca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudoapt-getupdatesudoapt-get-yinstalldoca-all

这几行命令可以安装 DOCA 主机侧的大部分软件包,但严格来说不能算作"完整"安装,且对于你的 ConnectX-6 网卡场景可能存在过度安装的问题。


一、这几行命令到底做了什么

wgethttps://www.mellanox.com/downloads/DOCA/DOCA_v3.4.0/host/doca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudodpkg-idoca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudoapt-getupdatesudoapt-get-yinstalldoca-all

流程解析

步骤作用
wget+dpkg -i安装doca-host仓库配置包,向/etc/apt/sources.list.d/添加 Mellanox/NVIDIA 的 DOCA apt 源
apt-get update刷新 apt 缓存,使系统能够解析 DOCA 仓库中的包
apt install doca-all安装doca-all这个 metapackage,它会拉取大量 DOCA 组件

官方文档和 Dell 等 OEM 的支持文档均验证了这一流程的合法性。


二、为什么说不是"完整"安装

1. 缺少内核模块匹配(关键)

doca-all主要安装userspace 库和工具,但 DOCA 依赖的底层内核模块(mlx5_coremlx5_ibib_umad等)需要与当前运行内核版本精确匹配。官方文档明确指出,安装 userspace metapackage 后,还需单独处理 kernel 部分:

apt install doca-kernel-KERNEL_VERSION—— 对于所有 metapackage,而不仅仅是单个包。

如果你的内核版本不在 DOCA 3.4.0 的预构建列表中,还需要:

sudoaptinstalldoca-extrasudo/opt/mellanox/doca/tools/doca-kernel-support

来现场编译内核模块。

2. 不包含固件更新

ConnectX-6 网卡的固件(Firmware)不会随doca-all自动更新到最新版本。你需要额外运行:

sudoaptinstallmstflintsudomstflint-d<pci_addr>query# 查看当前固件版本# 如需更新,需单独下载固件包

3. 过度安装(对你的场景)

doca-all是一个"全家桶" metapackage,它会安装所有 DOCA 组件,包括大量仅适用于 BlueField DPU 的软件包(如 DPU 操作系统工具、BFB 管理工具、DPU 侧代理等)。对于仅有 ConnectX-6 网卡的主机,这些包会被安装但永远无法使用。

更严重的是,doca-all会尝试安装doca-sdk-gpunetio,这会强制拉入 CUDA Toolkit 作为依赖。如果你不需要 GPU 直接控制网卡(GDAKI),这属于不必要的重量级依赖。


三、针对 ConnectX-6 的推荐安装方案

如果你只有 ConnectX-6 网卡,不需要 BlueField DPU 功能,也暂时不需要 GDAKI/GPUNetIO,建议不要装doca-all,而是按需选择:

方案 A:最小可用(仅 RDMA + 基础网络)

sudodpkg-idoca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudoapt-getupdatesudoapt-getinstall-ydoca-ofed

doca-ofed是 DOCA 的网络驱动栈 metapackage,包含libibverbslibrdmacmibverbs-utils等,足以支撑标准 RDMA/RoCE 应用。

方案 B:开发环境(含 DOCA SDK 库)

sudoapt-getinstall-ydoca-sdk doca-tools

这会安装 DOCA Flow、DOCA RDMA、DOCA Comm Channel 等开发库和头文件(位于/opt/mellanox/doca/include/),但不包含 GPUNetIO。

方案 C:如果你确实需要 GDAKI

sudoapt-getinstall-ydoca-ofed doca-sdk-gpunetio

这会显式拉入 CUDA Toolkit 依赖。


四、安装后必须做的检查

无论选择哪种方案,安装后都应验证:

# 1. 检查内核模块是否加载lsmod|grepmlx5# 2. 检查 DOCA 组件版本/opt/mellanox/doca/tools/doca-info# 3. 检查网卡是否被识别ibstat# 或ibv_devinfo# 4. 检查 RDMA 接口状态rdmalinkshow

五、一句话结论

这几行命令在流程上是正确的doca-all确实会安装 DOCA 的绝大多数主机侧软件。但对于仅有 ConnectX-6 网卡、不需要 DPU 和 GPU 功能的场景,它属于过度安装,会引入大量无用包和 CUDA 依赖。更推荐根据实际需求选择doca-ofed(网络栈)、doca-sdk(开发库)或doca-sdk-gpunetio(GPU 控网),并在安装后单独处理内核模块匹配与固件版本。

4. 具体环境下安装 DOCA

如果已经安装了 MLNX_OFED 24.10-5.1.6.1-2024 LTS U5;
cuda 12.8.2, x86_64;
v100
cx-6 dx

如果希望能够安装 gpunetio和其他cx-6的功能,如果使用wget https://www.mellanox.com/downloads/DOCA/DOCA_v3.4.0/host/doca-host_3.4.0-085000-26.04-ubuntu2204_amd64.deb,接下来应该选择安装哪些组件呢?

在已有MLNX_OFED 24.10-5.1.6.1的基础上安装 DOCA 3.4.0,核心原则是:避免驱动层冲突,只叠加 DOCA userspace SDK 与 GPUNetIO 库。以下是完整分析:


一、兼容性判断:可以共存,但需避开驱动重叠

DOCA 3.4.0 的官方互操作性矩阵明确验证过:

当前版本验证可互操作版本
DOCA-OFED 3.4.0MLNX_OFED 24.10-4 (LTS)

你的MLNX_OFED 24.10-5.1.6.1属于同一大版本的 LTS Update,内核驱动(mlx5_coremlx5_ib等)与 DOCA 3.4.0 的 userspace 库兼容。

但是doca-ofed这个 metapackage 与mlnx-ofed在文件和内核模块上高度重叠,二者不能同时安装。如果你直接apt install doca-alldoca-ofed,apt 会尝试替换 MLNX_OFED 的驱动包,可能导致系统网络中断。


二、V100 + CX-6 Dx 对 GPUNetIO 的支持情况

条件状态
CUDA 版本12.8.2 ✅(DOCA GPUNetIO 要求 CUDA 12.1+)
GPU 架构V100 (Volta) ✅(满足 “Volta+” 最低要求)
网卡CX-6 Dx ✅(DOCA 3.4.0 支持固件 22.49.1014)
GDAKI one-sided⚠️ 可能工作于CPU Proxy 模式(V100 的 PCIe 拓扑可能不支持 GPU 直接 ring doorbell,会透明回退)
GPUNetIO Ethernet✅ 支持(GPU 直接收发原始报文)
MCST✅ 需要显式启用(Pre-Hopper GPU 的内存一致性保证)

DOCA GPUNetIO 文档明确支持 Pre-Hopper GPU,但需通过doca_gpu_dev_verbs_mcst保证 NIC→GPU 内存一致性。


三、推荐安装组件(精确到包名)

既然 MLNX_OFED 24.10 已经提供了内核驱动和基础 RDMA 库,你只需要安装 DOCA 的 userspace SDK 和 GPUNetIO 组件。

# 1. 添加 DOCA 3.4.0 apt 源sudodpkg-idoca-host_3.4.0-085000-26.04-ubuntu2204_amd64.debsudoapt-getupdate# 2. 搜索确认 GPUNetIO 包名(不同版本可能略有差异)apt-cachesearch gpunetio# 3. 安装 DOCA SDK + GPUNetIO(不碰 doca-ofed 驱动层)sudoapt-getinstall-y\doca-runtime\doca-devel\doca-sdk-gpunetio\libdoca-sdk-gpunetio-dev\doca-tools\doca-extra

包名说明

包名作用是否必须
doca-runtimeDOCA 运行时库(所有 DOCA 应用依赖)
doca-devel(或doca-sdk)头文件、静态库、示例代码
doca-sdk-gpunetioGPUNetIO 核心库
libdoca-sdk-gpunetio-devGPUNetIO 开发头文件✅(编译时需要)
doca-toolsdoca-info等诊断工具推荐
doca-extradoca-kernel-support脚本推荐(内核不匹配时编译模块)
doca-ofed不要装会与现有 MLNX_OFED 冲突
doca-all不要装会拉入doca-ofed和大量 BlueField DPU 无用包

注:如果apt-cache search gpunetio返回的包名是doca-gpu/doca-gpu-dev(DOCA 2.5.x 时代的命名),请以实际搜索结果为准。DOCA 3.x 通常使用doca-sdk-gpunetio


四、安装后必须执行的验证

# 1. 检查 DOCA 组件版本/opt/mellanox/doca/tools/doca-info# 2. 确认 GPUNetIO 库已安装ls/opt/mellanox/doca/lib/libdoca_gpunetio*# 3. 确认头文件路径ls/opt/mellanox/doca/include/doca_gpunetio*# 4. 检查内核模块是否仍由 MLNX_OFED 提供(不应被替换)modinfo mlx5_core|grepversion ofed_info-s# 5. 检查 V100 的 GPUDirect RDMA 是否就绪lsmod|grepnvidia_peermem# 如未加载:sudo modprobe nvidia-peermem# 6. 检查 CX-6 Dx 固件版本(DOCA 3.4.0 推荐 22.49.1014)sudomstflint-d<pci_addr>query# 如固件过旧,需从 NVIDIA 固件下载页更新

五、如果后续需要卸载 MLNX_OFED、统一迁移到 DOCA-Host

如果你希望获得 NVIDIA 的完整支持栈(统一升级路径),可以未来某个维护窗口执行:

# 1. 卸载 MLNX_OFEDsudo/usr/sbin/ofed_uninstall.sh--force# 2. 安装 DOCA networking profile(含驱动 + DOCA SDK)sudoapt-getinstall-ydoca-networking doca-sdk-gpunetio libdoca-sdk-gpunetio-dev# 3. 重新加载驱动sudo/etc/init.d/openibd restart

doca-networking是 DOCA 3.4.0 中针对纯网卡场景的 profile,比doca-all精简,不含 BlueField DPU 管理工具。


六、一句话总结

在已有 MLNX_OFED 24.10 + V100 + CX-6 Dx + CUDA 12.8 的环境中,只需添加 DOCA 3.4.0 源并安装doca-runtime+doca-devel+doca-sdk-gpunetio+libdoca-sdk-gpunetio-dev严禁安装doca-ofeddoca-all。V100 满足 GPUNetIO 的 Volta+ 要求,但 GDAKI 的 one-sided 路径可能透明回退到 CPU Proxy 模式,Ethernet 和 RDMA CQ polling 路径可直接使用。

返回列表