1. BlueField DPU 架构与卸载平台全景
BlueField DPU(Data Processing Unit)不是一块“更快的网卡”,而是一台以 PCIe 设备形态插入主机、却拥有独立计算与操作系统能力的嵌入式服务器。理解它的关键,是把“主机视角”和“DPU 视角”分开看:从 x86 主机看过去,它是一张带网络口的 PCIe 端点;从 DPU 自身看过去,它是一台拥有 Arm 核、内存、网络接口和加速引擎的独立计算机。基础设施卸载的本质,就是把原本消耗主机 CPU 的网络、存储、安全与虚拟化数据面工作,迁移到这台“旁挂服务器”上执行。
一、硬件组成:三个可独立观察的域
BlueField-2 的硬件可以拆成三个域。第一个是主机接口域:PCIe Gen4 x16 端点,向上连接 x86 主机,呈现为网卡、块设备或 VirtIO 设备。第二个是嵌入式计算域:多核 Arm Cortex-A72(典型 8 核)、DDR4 内存、eMMC 启动介质,运行完整的 Linux(DOCA 环境下通常为 Ubuntu)。第三个是网络与加速域:两个 100GbE 端口(或 200GbE 单口配置)、ConnectX 系列网络数据通路,以及加密、正则匹配、压缩等加速引擎。
这三个域之间并非简单串联。主机与 DPU 之间通过 PCIe 上的“嵌入式交换机”模型通信,DPU 的 Arm 侧可以枚举并管理主机侧的 PCIe 功能,也可以把自身资源以 PF/VF 形式暴露给主机。这正是“卸载”能够成立的结构基础:数据面流量可以在 DPU 内部完成处理,而不必穿越主机内存。
二、Arm 核与网络接口的协同关系
Arm 核承担的是控制面与部分数据面。典型分工是:Arm 上运行 OVS-DPDK、VPP、防火墙或存储目标端,处理需要策略判断的流量;而纯转发、加解密、报文分类等固定模式工作,则下沉到加速引擎或 ConnectX 的硬件流水线。网络接口与 Arm 之间通过内部高速总线连接,报文可以“上送 Arm 处理”或“硬件直通转发”,路径选择由流表与卸载规则决定。
需要特别注意的是,DPU 上的 Arm 核数量有限,因此卸载设计的第一原则是能硬件做的不要用 Arm 做,能 Arm 做的不要用主机做。这条原则直接决定了后续章节中 DOCA 库与加速引擎的选型逻辑。
三、PCIe 拓扑与设备呈现
在主机侧执行 lspci,通常会看到多个来自 BlueField 的功能:网络控制器、DMA 控制器、以及用于管理通道的桥设备。DPU 通过 SR-IOV 把物理功能(PF)切分为多个虚拟功能(VF),每个 VF 可直通给一台虚拟机。此时主机 CPU 不再参与该虚拟机的报文搬运,卸载收益最直接。
一个常见的教学示例拓扑是:主机 x86 通过 PCIe 连接 BlueField-2,DPU 的两个 100GbE 口分别接上行交换机和下行服务器;主机侧创建 4 个 VF 分配给 4 台虚拟机,DPU 的 Arm 侧运行 OVS 并下发流表。此时虚拟机之间的东西向流量在 DPU 内部完成交换,主机 CPU 占用可显著下降——具体数值取决于流量模型,需以实际压测为准,不应预设固定百分比。
四、DOCA 软件栈与卸载定位
DOCA 是 BlueField 的软件开发框架,自下而上分为四层:驱动与固件层(MLNX_OFED、DPU 固件)、DOCA 运行时层(DOCA Core、DOCA Services)、DOCA 库层(DOCA Flow、DOCA Compress、DOCA Crypto、DOCA RegEx 等)、应用与编排层(容器化服务、Kubernetes 插件)。开发者通常从 DOCA 库入手,用少量代码调用底层加速能力,而不必直接操作寄存器。
基础设施卸载的定位可以概括为:把“每台主机都要重复做一遍”的基础设施工作,收敛到 DPU 上集中执行。网络虚拟化、存储卸载、安全策略、遥测采集都属于这一类。判断一项工作是否适合卸载,可以看三个条件:是否与主机业务逻辑解耦、是否有硬件加速路径、是否对延迟和 CPU 占用敏感。
五、从架构到卸载判断
把上面的结构串起来,可以得到一个可操作的判断路径。假设要在 BlueField-2 上卸载一个虚拟交换功能:首先确认流量是否经过 DPU 的 100GbE 口(网络域可达);其次确认是否能用 DOCA Flow 把转发规则下发到硬件流表(加速域可用);若规则过于复杂无法硬件表达,则退化为 Arm 上的 OVS-DPDK 处理(计算域兜底);最后确认主机侧是否需要 VF 直通(主机域配合)。四步都成立,卸载方案才完整。
实际部署时,建议先用 doca_caps 或 mlxconfig 查看固件与加速能力,再决定卸载边界。例如加密卸载需要确认 Crypto 引擎已启用,压缩卸载需要确认 Compress 引擎可用。这些能力开关决定了“哪些工作能真正离开主机 CPU”,而不是停留在架构图上。
本节建立的三个域、一条 PCIe 链路、一套 DOCA 分层,是后续所有章节的共同坐标系。无论是配置 SR-IOV、编写 DOCA Flow 程序,还是排查卸载未生效的问题,都可以回到这张全景图上定位:问题出在主机域、DPU 计算域、加速域,还是 DOCA 栈的某一层。