2. RoCE基础:RoCEv1/v2协议原理、帧格式、与InfiniBand和TCP/IP的对比

2.1 核心原理:从InfiniBand到RDMA over Converged Ethernet

RoCE(RDMA over Converged Ethernet)的本质,是将InfiniBand(IB)的RDMA语义——包括队列对(QP)、完成队列(CQ)、内存注册与零拷贝数据传输——移植到以太网物理层上运行。它并非“用TCP做RDMA”,而是让IB的网络层(子网管理、路由、可靠性机制)让位于以太网,仅保留IB传输层及以上协议栈。

理解RoCE的关键在于区分两个版本:

  • RoCEv1:基于以太网链路层(L2)运行,要求收发双方处于同一二层广播域,不能跨VLAN或子网路由。其以太网EtherType为0x8915,直接封装IB的全局路由头(GRH)与数据包内容。
  • RoCEv2:基于UDP/IP(L3/L4)运行,将IB的GRH替换为标准的IPv4/IPv6头与UDP头(目的端口4791),从而支持跨三层路由与VXLAN等隧道封装,成为当前数据中心的主流选择。

RoCEv2的协议栈分层如下表所示:

层次RoCEv1RoCEv2对应IB层次
传输层IB传输层(RC/UC/UD,QP、CQ、WR)IB传输层
网络层无(直接L2)IPv4/IPv6IB全局路由(GRH)
链路层以太网(EtherType 0x8915)UDP(端口4791)+ IP + 以太网IB链路层
物理层以太网PHY(需无损特性支持)IB物理层
关键认知:RoCEv1与RoCEv2的差异本质是“是否借用IP/UDP头来获得路由能力”。RoCEv2牺牲了极小的封装开销(额外20字节IPv4头+8字节UDP头),换来了与现有IP网络无缝集成的能力。
RoCEv1 vs RoCEv2 协议栈与帧格式对比 RoCEv1(L2 仅二层) IB 传输层(RC/UC/UD) IB 全局路由头(GRH) 以太网 MAC(EtherType = 0x8915) 物理层(需无损以太网 PFC) ⚠ 限制 · 不能跨 VLAN / 子网路由 · 仅限同一二层广播域 帧格式 MAC 0x8915 GRH IB 数据载荷 RoCEv2(L3/L4 可路由) IB 传输层(RC/UC/UD) UDP(目的端口 4791) IPv4 / IPv6 以太网 MAC(EtherType = 0x0800) 物理层(需无损以太网 PFC/ECN) ✓ 支持跨三层路由、VLAN、VXLAN ✓ 数据中心主流选择 帧格式 MAC IP UDP IB BTH IB 数据载荷 演进

2.2 帧格式细节:RoCEv2报文解剖

RoCEv2的报文封装是理解其与TCP/IP差异的关键。一个完整的RoCEv2数据包在以太网上的布局如下:

+------------------+----------------+----------------+------------------+------------------+------------------+
| 以太网头 (14B)   | IPv4头 (20B)   | UDP头 (8B)     | IB BTH (12B)     | IB Payload       | FCS (4B)         |
| Dst MAC/Src MAC  | Src IP/Dst IP  | Src Port/Dst   | OpCode/PSN/...   | 数据内容         | CRC校验          |
| EtherType=0x0800 | Protocol=17    | Port=4791      |                  |                  |                  |
+------------------+----------------+----------------+------------------+------------------+------------------+

其中IB基础传输头(BTH)承载了RDMA操作的核心字段:

  • OpCode:标识操作类型,如RDMA_WRITE、RDMA_READ、SEND等。
  • PSN(Packet Sequence Number):包序号,用于可靠连接的排序与重传检测。
  • Dest QP:目的队列对编号,标识接收端的QP上下文。
  • RKey(在后续RETH中):远程内存访问密钥,用于权限校验。
抓包识别技巧:在Wireshark中过滤RoCEv2流量,可使用 udp.port == 4791。若看到大量UDP目的端口4791的报文,即为RoCEv2数据流。RoCEv1则使用EtherType过滤 eth.type == 0x8915。

2.3 三方对比:RoCEv2 vs InfiniBand vs TCP/IP

RoCEv2、InfiniBand与TCP/IP代表了三种不同的RDMA/网络实现路径。下表从多个维度进行对比:

维度InfiniBandRoCEv2TCP/IP + Socket
传输语义原生RDMA(QP/CQ)IB传输层(QP/CQ)Socket流式传输
网络层IB子网管理(SM)IPv4/IPv6IPv4/IPv6
可靠性机制IB链路层流控+传输层重传依赖无损以太网(PFC/ECN)+ IB重传TCP滑动窗口+拥塞控制
CPU卸载完全硬件卸载硬件卸载(需RoCE网卡)软件协议栈,CPU开销高
延迟(典型)0.5–1μs1–2μs5–20μs
部署成本专用交换机/线缆,高利用现有以太网,中最低
生态兼容封闭,需专用子网与IP网络无缝集成通用,最广泛

2.4 典型场景:RoCEv2在AI训练集群中的部署

以某大模型训练集群为例,200台GPU服务器通过RoCEv2组网,采用Spine-Leaf架构。每台服务器配置2张100Gbps RoCE网卡,分别连接到不同的Leaf交换机以实现冗余。关键配置要点如下:

  1. 无损网络启用:在所有交换机端口上启用PFC(优先级流控),为RoCE流量分配独立优先级队列(通常为优先级3)。
  2. ECN标记:在交换机上配置WRED+ECN,对RoCE流量进行拥塞标记,使RoCE网卡能够进行拥塞控制。
  3. 路由设计:RoCEv2使用IP路由,通过BGP在Spine层通告服务器网段,实现跨Leaf的负载均衡。
  4. 缓冲区调优:增大交换机端口缓冲区,避免PFC风暴。
实测数据:在该集群中,启用RoCEv2后,单流RDMA写带宽达到98.2Gbps(线速的98.2%),端到端延迟约1.3μs。相比同网络环境下TCP传输(带宽约85Gbps,延迟约12μs),性能提升显著。

2.5 误区与复盘:RoCE部署中的常见认知偏差

误区一:RoCEv2可以完全替代TCP/IP。
事实:RoCEv2仅适用于RDMA语义场景(如GPU通信、存储访问)。对于传统Web服务、数据库连接等,TCP/IP仍是必要选择。两者应共存于同一网络,通过优先级队列隔离。
误区二:只要网卡支持RoCE,就能获得高性能。
事实:RoCE对网络质量极其敏感。若交换机未启用PFC/ECN,或存在丢包,RoCE性能会断崖式下降。一次丢包可能导致吞吐量从98%降至30%以下。必须端到端配置无损网络。
误区三:RoCEv1和RoCEv2可以混用。
事实:RoCEv1与RoCEv2不兼容。同一QP必须使用相同版本。若服务器A使用RoCEv2,服务器B使用RoCEv1,两者无法直接通信。迁移时需统一版本。

复盘总结:RoCEv2的成功部署,核心在于“网络无损”与“版本统一”两大前提。在规划阶段,应优先确认交换机支持PFC/ECN,并设计好优先级队列映射。同时,建议在测试环境先行验证RoCEv2的连通性与性能,再逐步推广到生产集群。理解RoCEv2与IB、TCP/IP的本质差异,有助于在网络架构设计时做出正确选型。