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的协议栈分层如下表所示:
| 层次 | RoCEv1 | RoCEv2 | 对应IB层次 |
|---|---|---|---|
| 传输层 | IB传输层(RC/UC/UD,QP、CQ、WR) | IB传输层 | |
| 网络层 | 无(直接L2) | IPv4/IPv6 | IB全局路由(GRH) |
| 链路层 | 以太网(EtherType 0x8915) | UDP(端口4791)+ IP + 以太网 | IB链路层 |
| 物理层 | 以太网PHY(需无损特性支持) | IB物理层 | |
关键认知:RoCEv1与RoCEv2的差异本质是“是否借用IP/UDP头来获得路由能力”。RoCEv2牺牲了极小的封装开销(额外20字节IPv4头+8字节UDP头),换来了与现有IP网络无缝集成的能力。
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/网络实现路径。下表从多个维度进行对比:
| 维度 | InfiniBand | RoCEv2 | TCP/IP + Socket |
|---|---|---|---|
| 传输语义 | 原生RDMA(QP/CQ) | IB传输层(QP/CQ) | Socket流式传输 |
| 网络层 | IB子网管理(SM) | IPv4/IPv6 | IPv4/IPv6 |
| 可靠性机制 | IB链路层流控+传输层重传 | 依赖无损以太网(PFC/ECN)+ IB重传 | TCP滑动窗口+拥塞控制 |
| CPU卸载 | 完全硬件卸载 | 硬件卸载(需RoCE网卡) | 软件协议栈,CPU开销高 |
| 延迟(典型) | 0.5–1μs | 1–2μs | 5–20μs |
| 部署成本 | 专用交换机/线缆,高 | 利用现有以太网,中 | 最低 |
| 生态兼容 | 封闭,需专用子网 | 与IP网络无缝集成 | 通用,最广泛 |
2.4 典型场景:RoCEv2在AI训练集群中的部署
以某大模型训练集群为例,200台GPU服务器通过RoCEv2组网,采用Spine-Leaf架构。每台服务器配置2张100Gbps RoCE网卡,分别连接到不同的Leaf交换机以实现冗余。关键配置要点如下:
- 无损网络启用:在所有交换机端口上启用PFC(优先级流控),为RoCE流量分配独立优先级队列(通常为优先级3)。
- ECN标记:在交换机上配置WRED+ECN,对RoCE流量进行拥塞标记,使RoCE网卡能够进行拥塞控制。
- 路由设计:RoCEv2使用IP路由,通过BGP在Spine层通告服务器网段,实现跨Leaf的负载均衡。
- 缓冲区调优:增大交换机端口缓冲区,避免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仍是必要选择。两者应共存于同一网络,通过优先级队列隔离。
事实:RoCEv2仅适用于RDMA语义场景(如GPU通信、存储访问)。对于传统Web服务、数据库连接等,TCP/IP仍是必要选择。两者应共存于同一网络,通过优先级队列隔离。
误区二:只要网卡支持RoCE,就能获得高性能。
事实:RoCE对网络质量极其敏感。若交换机未启用PFC/ECN,或存在丢包,RoCE性能会断崖式下降。一次丢包可能导致吞吐量从98%降至30%以下。必须端到端配置无损网络。
事实:RoCE对网络质量极其敏感。若交换机未启用PFC/ECN,或存在丢包,RoCE性能会断崖式下降。一次丢包可能导致吞吐量从98%降至30%以下。必须端到端配置无损网络。
误区三:RoCEv1和RoCEv2可以混用。
事实:RoCEv1与RoCEv2不兼容。同一QP必须使用相同版本。若服务器A使用RoCEv2,服务器B使用RoCEv1,两者无法直接通信。迁移时需统一版本。
事实:RoCEv1与RoCEv2不兼容。同一QP必须使用相同版本。若服务器A使用RoCEv2,服务器B使用RoCEv1,两者无法直接通信。迁移时需统一版本。
复盘总结:RoCEv2的成功部署,核心在于“网络无损”与“版本统一”两大前提。在规划阶段,应优先确认交换机支持PFC/ECN,并设计好优先级队列映射。同时,建议在测试环境先行验证RoCEv2的连通性与性能,再逐步推广到生产集群。理解RoCEv2与IB、TCP/IP的本质差异,有助于在网络架构设计时做出正确选型。