DOCA 简介与安装

DOCA 简介与安装
1. DOCA 的工程功能定位于商业价值NVIDIA DOCAData Center Infrastructure on a Chip Architecture的工程功能定位本质上是在硬件层BlueField DPU与商业层客户粘性与生态锁定之间构建一个类 CUDA的软件基础设施层。其商业价值可以从以下几个维度理解一、战略定位DPU 界的 CUDA这是 NVIDIA 官方反复传达的核心定位“DOCA is to DPUs what CUDA is to GPUs”维度CUDAGPUDOCADPU硬件绑定NVIDIA GPUBlueField DPU核心价值降低并行计算编程门槛降低基础设施卸载编程门槛生态效应GPU 成为通用计算标准DPU 成为数据中心标准组件商业结果GPU 市场份额与溢价DPU 市场份额与硬件绑定DOCA 的免费策略SDK 免费与 CUDA 完全一致——通过降低软件使用门槛来提升硬件的竞争壁垒最终目的是推动 BlueField DPU 的销售。二、工程功能 → 商业价值的映射1. 抽象层从写驱动到调 API工程功能提供高层库DOCA Flow、DPI、SNAP、SPDK 等屏蔽底层寄存器与驱动细节。商业价值降低 ISV 与系统集成商的开发成本无需雇佣底层网络/存储/安全驱动工程师加速上市时间Time-to-MarketPalo 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,000DPU 级安全卸载可以显著降低风险敞口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 是分层架构仅部分组件依赖 CUDADOCA SDK 包含大量库只有与 GPU 直接交互的组件才需要 CUDADOCA 组件是否依赖 CUDA说明DOCA Flow❌ 否网络流处理与卸载纯 DPU/网卡功能DOCA DPI❌ 否深度包检测运行在 DPU 加速引擎上DOCA SNAP❌ 否NVMe 虚拟化与存储卸载DOCA Telemetry❌ 否遥测与监控DOCA Perftest基础模式❌ 否仅需libibverbs标准 RDMA 测试DOCA GPUNetIO✅必须GPU 直接控制 NIC 收发包需 CUDA Toolkit Volta GPUDOCA RDMA Verbs (GDAKI)✅必须GPU 直接发起 RDMA需 CUDAdoca-perftest的文档明确指出唯一强制依赖是libibverbsDOCA Verbs 和 DOCA GPUNetIO 都是按需加载的可选组件。若未安装 GPUNetIO工具会回退到标准 IBV 驱动正常运行。二、ConnectX 网卡 DOCA 的独立使用场景以下场景完全不需要 GPU 或 CUDA1. 标准 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、TelemetryDOCA Argus 等安全组件运行在 DPU 上通过 DOCA 库与主机交互不触及 GPU。三、什么情况下看起来需要 CUDA1. 安装包层面DOCA 的某些发行版如doca-all可能默认包含doca-sdk-gpunetio从而在依赖解析时拉入 CUDA。但这属于打包策略不是运行时必需。2. 特定功能层面只有当你明确使用以下功能时才需要 CUDAGDAKIGPU 直接控制 NIC doorbellGPU-side CQ pollingDocaRoceReceiverOp的 GPU-resident 模式GPU 直接收发以太网包DOCA GPUNetIO Ethernet3. 编译层面如果你从源码编译整个 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流程解析步骤作用wgetdpkg -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_core、mlx5_ib、ib_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-dpci_addrquery# 查看当前固件版本# 如需更新需单独下载固件包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-ofeddoca-ofed是 DOCA 的网络驱动栈 metapackage包含libibverbs、librdmacm、ibverbs-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如果你确实需要 GDAKIsudoapt-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-gpunetioGPU 控网并在安装后单独处理内核模块匹配与固件版本。4. 具体环境下安装 DOCA如果已经安装了 MLNX_OFED 24.10-5.1.6.1-2024 LTS U5;cuda 12.8.2, x86_64;v100cx-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_core、mlx5_ib等与 DOCA 3.4.0 的 userspace 库兼容。但是doca-ofed这个 metapackage 与mlnx-ofed在文件和内核模块上高度重叠二者不能同时安装。如果你直接apt install doca-all或doca-ofedapt 会尝试替换 MLNX_OFED 的驱动包可能导致系统网络中断。二、V100 CX-6 Dx 对 GPUNetIO 的支持情况条件状态CUDA 版本12.8.2 ✅DOCA GPUNetIO 要求 CUDA 12.1GPU 架构V100 (Volta) ✅满足 “Volta” 最低要求网卡CX-6 Dx ✅DOCA 3.4.0 支持固件 22.49.1014GDAKI 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-devDOCA 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.1014sudomstflint-dpci_addrquery# 如固件过旧需从 NVIDIA 固件下载页更新五、如果后续需要卸载 MLNX_OFED、统一迁移到 DOCA-Host如果你希望获得 NVIDIA 的完整支持栈统一升级路径可以未来某个维护窗口执行# 1. 卸载 MLNX_OFEDsudo/usr/sbin/ofed_uninstall.sh--force# 2. 安装 DOCA networking profile含驱动 DOCA SDKsudoapt-getinstall-ydoca-networking doca-sdk-gpunetio libdoca-sdk-gpunetio-dev# 3. 重新加载驱动sudo/etc/init.d/openibd restartdoca-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-runtimedoca-develdoca-sdk-gpunetiolibdoca-sdk-gpunetio-dev严禁安装doca-ofed或doca-all。V100 满足 GPUNetIO 的 Volta 要求但 GDAKI 的 one-sided 路径可能透明回退到 CPU Proxy 模式Ethernet 和 RDMA CQ polling 路径可直接使用。