背景与引言
在高性能计算(HPC)与现代数据中心网络(DCN)中,通信延迟是核心瓶颈。传统的 TCP/IP 协议栈因其内核上下文切换和内存拷贝,在高并发场景下显得力不心。
RDMA (Remote Direct Memory Access) 技术应运而生,允许直接读写远程内存,绕过操作系统内核。
RoCE 的演进
- RoCEv1: 基于以太网链路层 (L2),不可路由,低开销。
- RoCEv2: 基于 UDP/IP (L3),可路由,目前主流。
Protocol Stack Comparison
High CPU
协议架构与数据包格式
RoCEv1 的核心是将 InfiniBand 的传输层和网络层头部直接封装在以太网帧中。它是一个严格的二层 (Layer 2) 协议,其“身份证”是 IEEE 分配的 EtherType 值 0x8915。
RoCEv1 数据包结构解剖
GRH 的必要性与 GID
虽然 RoCEv1 处于二层,但 Verbs Consumer(硬件逻辑)预期在 BTH 之前必须有一个网络层头部。
- Next Header: 0x1B (指向 BTH)
- GID 生成: 通常基于 MAC 地址通过 EUI-64 规则生成,类似于 IPv6 Link-Local 地址。
Dest QP (Queue Pair)
这是 RoCE 的核心多路复用字段。
- 硬件解析 EtherType 0x8915 后,直接读取 Dest QP。
- 根据 QP 编号,DMA 引擎将数据直接写入对应的用户态内存区域。
- 相比 RoCEv2 的 UDP 端口 (4791),这种路径更为直接。
PFC 优先级流控 (IEEE 802.1Qbb)
为什么需要无损网络?
RDMA 追求极致吞吐,使用 Go-Back-N 重传策略。一旦丢包,将导致严重的吞吐量崩塌 (Throughput Collapse)。PFC 是实现“无损以太网”的基石。
传统 PAUSE (802.3x)
一旦拥塞,暂停整条链路的所有流量。
PFC (802.1Qbb)
将流量分为 8 个优先级 (CoS 0-7),独立暂停。
| 字段 | 关键值 | 说明 |
|---|---|---|
| EtherType | 0x8808 | MAC Control 帧类型 |
| OpCode | 0x0101 | PFC 专用操作码 (区别于 0x0001) |
| Time Vector | Quanta (512 bits) | 10Gbps 下 1 Quanta = 51.2ns |
Headroom Buffer Requirement
Headroom ≥ (RTT + Processing_Delay) × Link_Bandwidth必须预留足够的 Headroom 来容纳 PAUSE 帧生效前仍在传输的 "Skid" 流量,否则会发生溢出丢包。
RoCEv1 的多维比较优势
1. 相较于传统以太网 (TCP/IP)
极低延迟
内核旁路 (Kernel Bypass) 消除了系统调用和上下文切换,延迟从 ~20µs 降至 ~1µs。
零拷贝 (Zero Copy)
DMA 直接在应用内存和网卡间传输数据,无需 CPU 搬运,吞吐量接近线速。
CPU 卸载
网卡硬件处理所有传输逻辑,CPU 占用率接近 0%,释放算力给计算任务。
2. 相较于原生 InfiniBand
成本效益 (TCO)
无需昂贵的 IB 专用交换机,复用标准以太网交换机,采购渠道更广。
网络融合
计算与管理流量运行在同一物理网络(通过 VLAN 隔离),简化布线与运维。
3. 相较于 RoCEv2 (同门对比)
- 更低的头部开销: 节省 IP(20B) + UDP(8B) = 28 字节。在小包密集型场景(心跳、锁服务)效率略高。
- 安全性: 不可路由 (Non-routable) 特性天然隔离了远程攻击,适合高安全需求的存储网络。