1. 课程导入与全景认知

在传统数据中心里,服务器CPU既要运行业务应用,又要处理网络协议栈、存储I/O、虚拟交换、安全策略等基础设施任务。随着25G/100G/200G网络普及和分布式存储规模扩大,这种"CPU兼职做基础设施"的模式遇到明显瓶颈:一个100Gbps网卡在标准内核TCP/IP路径下可能消耗多个CPU核心,留给业务计算的算力被持续侵蚀。DPU(Data Processing Unit,数据处理单元)正是为解决这一矛盾而出现的专用处理器,它把网络、存储、虚拟化、安全等基础设施负载从主机CPU卸载到独立的片上系统,使服务器回归"计算归计算、基础设施归基础设施"的分工。

理解DPU的价值,需要同时看清三条技术主线:DPU本身是可编程的基础设施处理器,通常包含多核ARM、硬件加速引擎、高速网络接口和PCIe主机接口;RDMA(Remote Direct Memory Access,远程直接内存访问)是让一台主机直接读写另一台主机内存的通信机制,绕过内核协议栈和CPU拷贝,实现高带宽、低时延、低CPU占用;存储网络加速则是把NVMe over Fabrics、分布式块/文件存储、压缩加密、纠删码等存储数据路径卸载到DPU,让存储访问像本地一样高效。三者不是并列关系,而是"硬件平台—通信机制—上层负载"的层次关系。

DPU · RDMA · 存储网络加速 技术栈全景 从上层应用到物理链路的分层定位与数据路径 应用与业务层 分布式数据库 · 对象存储 · HPC/AI训练 · 虚拟化/容器平台 · 云原生中间件 关注:吞吐 / 时延 / CPU占用 存储与通信协议层 NVMe over Fabrics iSER / SRP SMB Direct NFS over RDMA TCP/IP RDMA 通信机制层(核心) Verbs API ibv_post_send / recv QP / CQ / MR 队列对 / 完成队列 / 内存注册 RoCEv2 / InfiniBand UDP封装 / 原生链路 零拷贝 / 内核旁路 Kernel Bypass DPU 硬件平台层 多核 ARM SoC 控制面 / 协议处理 硬件加速引擎 加解密 / 压缩 / 正则 高速网络接口 25G / 100G / 200G PCIe 主机接口 + 嵌入式交换 SR-IOV / VirtIO / OVS Offload 物理链路层 以太网 / InfiniBand 交换网络 · 光模块 · 铜缆 · 背板

从图中可以看到,DPU位于硬件平台层,RDMA位于通信机制层,存储网络加速则横跨协议层与硬件层。学习这门课程,建议沿着"自下而上理解、自上而下实践"的路径推进:先建立对DPU硬件架构和RDMA通信原语的准确认知,再进入NVMe over Fabrics、存储卸载、虚拟化加速等具体场景,最后通过配置、抓包、性能对比等手段验证效果。

需要特别明确技术栈边界。RDMA本身不是网络协议,而是一种内存访问语义,它依赖底层链路承载:InfiniBand是原生RDMA网络,RoCEv2则把RDMA语义封装在UDP/IP之上,可在标准以太网中运行,但需要无损网络配置(PFC、ECN)来保证可靠性。DPU也不是"更快的网卡",它具备独立的计算、内存和操作系统,可以运行控制面软件,甚至承载防火墙、负载均衡等网络功能。存储网络加速同样不是单一技术,而是包括NVMe-oF目标端卸载、本地NVMe管理、压缩去重、纠删码计算等一系列数据路径优化。

学习建议:本课程后续章节会反复出现"控制面 vs 数据面"的区分。控制面负责连接建立、资源管理、异常处理,通常运行在DPU的ARM核或主机CPU上;数据面负责实际的数据搬运和协议处理,尽量走硬件加速路径。理解这条分界线,是掌握DPU与RDMA协同设计的关键。

为了帮助建立量化认知,下面给出一个典型对比示例(数据为教学假设,用于说明数量级差异,非实测结果):

对比维度传统内核TCP/IPRDMA(RoCEv2)DPU卸载后
100Gbps吞吐下CPU占用约8~16个核心约1~2个核心接近0(主机侧)
端到端时延(同机房)约50~100μs约5~15μs约5~15μs
内存拷贝次数2~4次0次(零拷贝)0次
协议处理位置主机内核网卡/DPUDPU硬件引擎

这张表说明了一个核心结论:RDMA解决的是"通信效率"问题,DPU解决的是"谁来处理基础设施负载"问题,两者结合才能同时实现高带宽、低时延和低CPU占用。在存储场景中,这一组合的价值更加突出——NVMe SSD本身时延已低至几十微秒,如果网络协议栈再引入上百微秒开销,存储性能就被网络拖累;而NVMe over RDMA配合DPU卸载,可以让远端存储访问接近本地NVMe的体验。

本课程后续将围绕四条主线展开:第一,DPU架构与编程模型,包括ARM核、加速引擎、PCIe与网络接口的协同;第二,RDMA核心机制,包括Verbs编程、QP状态机、内存注册、完成事件处理;第三,存储网络加速实践,包括NVMe-oF配置、SPDK/DPU卸载路径、性能调优;第四,典型场景与排障,包括RoCEv2无损网络配置、PFC/ECN调参、常见连接失败与性能抖动分析。每条主线都会给出可操作的配置示例、参数说明和结果判读方法。

开始后续学习前,建议先确认手头环境:是否具备支持RoCEv2的网卡或DPU设备、是否有两台可互通的主机、是否安装了OFED或rdma-core驱动栈。可以通过以下命令快速检查RDMA设备与链路状态:

# 查看RDMA设备列表
ibv_devices

# 查看设备端口状态与速率
ibv_devinfo -d mlx5_0

# 查看RoCEv2 GID表(确认UDP封装可用)
show_gids

# 简单连通性测试(需两端均配置RDMA)
ib_send_bw -d mlx5_0 -x 1 -F --report_gbits