3. RDMA协议栈解析:InfiniBand、RoCEv2与iWARP的层次与报文

3.1 三种协议栈的定位与核心差异

RDMA并非单一协议,而是指远程直接内存访问这一类能力。真正决定报文如何封装、路由如何完成、可靠性如何保证的,是底层的传输协议。当前主流的三种协议——InfiniBand(IB)、RoCEv2(RDMA over Converged Ethernet version 2)和iWARP——分别代表了“专用网络”“融合网络”和“通用TCP网络”三条技术路线。理解它们的协议层次差异,是进行端到端性能调优的前提。

三种协议最大的区别在于网络层与链路层的归属:

  • InfiniBand:拥有完整的自有协议栈,从链路层到传输层均为IB规范定义,需要专用交换机与HCA(Host Channel Adapter)卡。
  • RoCEv2:将IB的报文格式(IBA Global Routing Header,GRH)封装在UDP/IPv4或IPv6报文中,复用标准以太网交换机,但要求无损以太网(PFC/ECN)支持。
  • iWARP:直接使用TCP/IP协议栈,将RDMA语义映射到TCP连接上,兼容性最好,但性能受限于TCP/IP协议栈的处理开销。
选型速判:追求最低延迟与最高可靠性选IB;已有大规模以太网且愿意部署无损网络选RoCEv2;需要穿越传统TCP/IP网络且无法改造交换机时选iWARP。
三种RDMA协议栈层次对比 InfiniBand IBA 传输层 QP / SRQ / 可靠连接RC IBA 网络层 GRH (128bit) / LRH IBA 链路层 Subnet Routing / LID IB 物理层 专用线缆 / 交换机 延迟:0.5~1μs 需专用IB网络设备 硬件卸载最彻底 RoCEv2 IB 传输层 BTH + 可靠性机制 UDP/IPv4 封装 GRH + UDP头 (端口4791) 以太网链路层 标准以太网帧 / VLAN 以太网物理层 25/100/400GbE 延迟:1~3μs 需无损以太网(PFC/ECN) 复用现有以太网 iWARP RDMA语义映射层 DDP / MPA / RDMAP TCP 传输层 面向连接 / 可靠传输 IP 网络层 标准IP路由 以太网链路层 标准以太网 延迟:3~10μs TCP/IP协议栈开销大 无需特殊网络设备 协议栈深度:IB(专用) > RoCEv2(融合) > iWARP(通用)

3.2 InfiniBand协议层次与报文结构

InfiniBand的报文结构是理解RDMA封装的基石。一个完整的IB报文由多个头(Header)与载荷(Payload)组成,其层次关系如下:

| LRH (8B) | GRH (40B, 可选) | BTH (12B) | 扩展头 (ETH, 可选) | Payload (0~4KB) | ICRC (4B) | VCRC (2B) |
  • LRH(Local Routing Header):8字节,包含源/目的LID(Local Identifier)、VL(Virtual Lane)和SL(Service Level)。LID用于子网内交换机转发,VL用于流量隔离,SL映射到服务等级。
  • GRH(Global Routing Header):40字节,仅在跨子网通信时存在,包含128位源/目的GID(Global Identifier)。GID由子网前缀+端口GUID构成,相当于IB世界的“IP地址”。
  • BTH(Base Transport Header):12字节,是传输层的核心。包含OpCode(操作码,如RDMA Write/Read/Send)、目的QP号(Dest QP)、PSN(Packet Sequence Number,包序号)等。PSN是IB可靠传输实现乱序重组与重传的关键字段。
  • ICRC/VCRC:分别用于校验报文不变部分与可变部分,保证数据完整性。
调优关注点:在IB网络中,SL(Service Level)与VL(Virtual Lane)的映射直接影响QoS。若多个高优先级流量共用同一VL,可能造成头阻塞(Head-of-Line Blocking),导致延迟抖动。

3.3 RoCEv2报文封装:IB语义与UDP的融合

RoCEv2的核心设计思想是:保留IB的传输层语义(BTH),但将网络层替换为UDP/IP。这样既继承了IB高效的QP/可靠性机制,又能利用标准以太网交换机进行三层路由。其报文格式如下:

| 以太网头 (14B) | VLAN (可选) | IPv4/IPv6头 | UDP头 (8B) | GRH (40B) | BTH (12B) | Payload | ICRC | FCS |

关键字段说明:

  • UDP目的端口固定为4791:这是RoCEv2的“协议标识”,交换机或网卡据此识别RoCE流量并应用无损策略。
  • GRH仍然保留:虽然UDP/IP已提供路由信息,但GRH中的SGID(Source GID)和DGID(Destination GID)用于标识RDMA域内的端口,且GID中的Interface ID与MAC地址存在映射关系。
  • BTH中的OpCode:与IB完全一致,支持RC(可靠连接)、UC(不可靠连接)、UD(不可靠数据报)等传输服务。
常见误区:很多人认为RoCEv2的UDP端口可以随意更改。实际上,交换机的ACL或流表规则通常基于UDP 4791进行匹配,若修改端口号,PFC优先级流控或ECN标记将无法生效,导致丢包后性能断崖式下降。

3.4 iWARP的层次映射与MPA机制

iWARP的协议栈最为“厚实”,因为它需要将RDMA语义映射到TCP之上。其层次结构为:

| 以太网头 | IP头 | TCP头 | MPA头 (2B) | DDP头 (3B) | RDMAP头 (1B) | Payload |
  • RDMAP(RDMA Protocol):定义RDMA操作(Read/Write/Send),位于最上层。
  • DDP(Direct Data Placement):负责将数据直接放置到对端用户指定的缓冲区,避免中间拷贝。DDP头中的MO(Message Offset)字段用于标识数据在消息中的位置。
  • MPA(Marker PDU Aligned):解决TCP字节流与RDMA消息边界不对齐的问题。MPA在每个消息前插入2字节长度字段,并周期性插入Marker,使接收端能快速定位消息边界。

iWARP的最大优势是无需无损网络,因为TCP本身提供可靠传输和拥塞控制。但代价是:TCP的ACK机制、重传超时(RTO)和拥塞窗口(cwnd)调整会引入额外的延迟与CPU开销。在高速网络(25GbE以上)中,TCP协议栈的处理往往成为瓶颈。

3.5 报文格式对比与关键参数速查

对比维度 InfiniBand RoCEv2 iWARP
传输层头 BTH (12B) BTH (12B) TCP头 + MPA/DDP/RDMAP
网络层 GRH (40B) IPv4/IPv6 + UDP (4791) IP
链路层寻址 LID (16bit) MAC地址 MAC地址
可靠性机制 PSN + 重传(硬件) PSN + 重传(硬件) TCP序号 + 重传(软件/硬件)
拥塞控制 IB CC(可选) ECN + DCQCN TCP拥塞控制(CUBIC等)
最大Payload 4KB(经典)/ 8KB(扩展) 同IB(受MTU限制) 受TCP MSS限制(通常1460B)
CPU卸载程度 极高(全硬件) 高(需网卡支持RoCE引擎) 中(依赖TCP卸载引擎TOE)

3.6 案例复盘:RoCEv2报文抓包分析

在一次RoCEv2性能问题排查中,通过抓包发现以下异常:

Frame 1: 1514 bytes on wire
Ethernet II, Src: 00:0c:29:a1:2b:44, Dst: 00:0c:29:7e:3d:11
Internet Protocol Version 4, Src: 192.168.1.10, Dst: 192.168.1.20
User Datagram Protocol, Src Port: 40000, Dst Port: 4791
    Source Port: 40000
    Destination Port: 4791
    Length: 1472
InfiniBand
    Base Transport Header
        OpCode: RDMA WRITE (0x0a)
        Dest QP: 0x000012
        PSN: 0x3a2f1c
    Payload: [前64字节为数据]

分析发现:源端口为40000(非固定),目的端口为4791(正确)。但PSN出现乱序,且伴随大量重复ACK。进一步检查发现,交换机上PFC(优先级流控)配置错误,导致RoCEv2流量与普通TCP流量共享同一优先级队列,在拥塞时RoCEv2报文被丢弃,触发重传。

复盘结论:RoCEv2的性能高度依赖网络无损状态。即使报文封装正确,若PFC优先级未单独划分、ECN阈值未调优,或交换机缓冲区不足,都会导致PSN重传风暴。排查时应先确认:①UDP 4791是否被ACL放行;②PFC是否映射到独立优先级;③ECN标记是否生效。

3.7 协议栈选型与调优核心要点

在实际部署中,协议栈的选择往往由现有网络架构决定,但调优方向差异显著:

  • IB网络:重点调优子网管理器(Subnet Manager)的路径计算、SL↔VL映射、以及自适应路由(Adaptive Routing)。
  • RoCEv2:核心是构建无损以太网——配置PFC(建议使用DSCP-based PFC)、ECN阈值、以及DCQCN(数据中心量化拥塞通知)参数。
  • iWARP:关注TCP参数(如MTU、窗口缩放、Nagle算法禁用)以及网卡TOE卸载能力是否开启。
重要提醒:不要盲目追求“低延迟”而忽略协议栈的可靠性开销。例如,在RoCEv2中关闭PFC可能降低延迟,但一旦发生微突发拥塞,丢包导致的PSN重传会使吞吐量下降50%以上,整体性能反而更差。务必通过端到端测试(如perftest的ib_write_bw)验证不同配置下的实际表现。