4. RoCE v1详解:基于以太网的实现、帧格式与适用场景
4.1 核心原理:RoCE v1的“透明承载”设计
RoCE v1(RDMA over Converged Ethernet version 1)是RDMA技术最早与以太网结合的产物。它的核心设计思想非常直接:将InfiniBand的报文格式原封不动地封装进以太网帧的Payload字段中,并直接使用以太网类型字段(EtherType)0x8915进行标识。这意味着RoCE v1报文在二层网络中就是一个“普通”的以太网帧,交换机无需感知RDMA协议,只需按照标准以太网帧进行转发即可。
从协议栈角度看,RoCE v1位于传输层(IB Transport层)之下,直接替代了InfiniBand中的链路层(IB Link Layer)。它没有IP层和UDP层,因此不具备路由能力,只能在同一个二层广播域(VLAN)内通信。这种设计带来了极低的封装开销——相比RoCE v2,它省去了IP和UDP头,但也因此牺牲了跨子网能力。
4.2 帧格式深度拆解
RoCE v1帧的最小结构由以太网头(14字节)+ IB BTH(12字节)+ 数据负载 + FCS(4字节)组成。以太网头中的EtherType固定为0x8915,这是IEEE分配给RoCE v1的专用类型值。交换机通过识别该值,可以将帧正确分发到接入RoCE的端口,但不会对帧内容做任何修改。
IB BTH是RoCE v1帧中最重要的传输控制头,它承载了RDMA通信的核心元数据。其中PKey(Partition Key)是RoCE v1实现网络隔离的关键机制——只有PKey匹配的节点才能互相通信,这类似于以太网中VLAN的隔离作用,但粒度更细(可以基于QP级别)。Dest QP字段则类似于TCP/UDP中的端口号,用于在接收端定位到具体的队列对,从而将数据交付给正确的应用程序。
值得注意的是,RoCE v1帧中没有IP地址和UDP端口,这意味着它无法被传统三层路由设备转发。所有RoCE v1设备必须处于同一个IP子网(实际上是同一个二层广播域)内,且中间不能有路由器。此外,RoCE v1帧也不携带VLAN标签(除非额外配置),因此对交换机的PFC(优先级流控)配置需要基于物理端口或端口组进行。
4.3 方法流程:RoCE v1通信建立与数据交换
RoCE v1的通信流程与InfiniBand保持一致,遵循“连接建立 → 内存注册 → 数据收发 → 连接拆除”的标准RDMA流程。下面以RC(可靠连接)模式为例,说明一次典型的RoCE v1读写操作过程:
- 连接建立:通信双方通过带外机制(如TCP/IP)交换QP编号、LID、PKey等信息,完成连接参数协商。RoCE v1本身不提供连接管理协议,通常由上层应用(如Verbs API)配合CM(Connection Manager)完成。
- 内存注册:发送端将用户缓冲区注册到RNIC,获得L_Key/R_Key(本地/远程内存密钥),并将R_Key告知接收端。
- 数据发送:发送端RNIC将用户数据封装为IB报文,添加BTH头,再封装为以太网帧(EtherType=0x8915),通过网卡发送到以太网。
- 交换机转发:二层交换机根据目的MAC地址将帧转发到目标端口,期间不感知RDMA协议。
- 接收端处理:接收端RNIC校验以太网帧头,识别EtherType=0x8915后,剥离以太网头,将IB报文交给IB传输层处理。根据BTH中的Dest QP和PSN进行去重、排序,最终通过DMA将数据直接写入用户缓冲区。
- 确认与重传:RC模式下,接收端会发送ACK/NAK报文(同样封装为RoCE v1帧),发送端根据PSN判断是否需要重传。
4.4 适用场景与典型案例
RoCE v1虽然功能有限,但在特定场景下仍有其价值。下表总结了它的典型适用场景与不适用场景:
| 场景类型 | 具体案例 | 适用性 | 原因分析 |
|---|---|---|---|
| 同机房高性能计算 | 气象模拟、基因测序集群 | ✅ 适用 | 所有节点在同一二层网络,延迟极低(<2μs),无路由需求 |
| 存储网络(同子网) | NVMe-oF 同交换机连接 | ✅ 适用 | 存储与计算节点同VLAN,RoCE v1可提供比iSCSI更低的CPU开销 |
| 跨子网/跨机房通信 | 两地三中心容灾 | ❌ 不适用 | 无IP层,无法路由,必须使用RoCE v2或IB |
| 混合云/容器跨节点 | K8s集群跨网段 | ❌ 不适用 | 容器网络通常涉及VXLAN/三层路由,RoCE v1无法穿越 |
一个典型的RoCE v1部署案例是同机柜GPU训练集群。假设8台GPU服务器通过一台TOR交换机互联,每台服务器配置一块支持RoCE v1的网卡(如Mellanox ConnectX-4)。此时所有服务器处于同一二层网络,使用RoCE v1进行AllReduce集合通信,可以获得约1.5μs的端到端延迟,相比TCP/IP方案降低约60%的CPU占用率。
4.5 误区与复盘:RoCE v1的常见陷阱
复盘建议:在实际部署RoCE v1前,务必使用ibv_devinfo命令确认网卡支持的RoCE版本,并使用ibping或perftest工具验证连通性和带宽。如果发现性能不达标,优先检查交换机的PFC配置和MTU一致性,而不是盲目调整网卡参数。