RoCEv2 协议封装与数据流
RoCE(RDMA over Converged Ethernet)是RDMA在以太网上的实现方式。RoCE协议通过在以太网帧中封装RDMA数据,使RDMA能够运行在标准以太网环境中。RoCE最初版本(RoCEv1)仅支持二层网络,而RoCEv2采用UDP/IP封装方式,使RDMA数据能够在三层网络中进行路由,从而适用于大规模数据中心环境。
在RoCEv2协议中,RDMA数据包的基本封装结构包括以太网头部、IP头部、UDP头部以及Infiniband传输头(IB Transport Header)。其中IP和UDP头部用于实现网络层路由,而IB Transport Header则用于描述RDMA操作类型以及队列信息。RDMA数据载荷被封装在UDP数据段中,通过以太网进行传输。
RoCEv2的数据传输流程如图1所示,通常包括以下几个阶段:首先,发送端应用程序向QP提交WR,RNIC从SQ中读取WR并构建RDMA数据包;随后RNIC将数据包封装为RoCEv2数据帧并发送至网络;网络交换设备根据IP地址进行路由转发;接收端RNIC在接收到数据帧后进行协议解析,并根据QP信息将数据写入对应的内存区域;最后,RNIC生成CQE并通知应用程序数据传输完成。

图1 RoCEv2的数据传输流程图
为了保证RDMA数据传输的可靠性,RoCEv2通常依赖无损以太网机制,例如Priority Flow Control(PFC)和 Explicit Congestion Notification(ECN)。PFC可以在网络拥塞时暂停特定优先级的数据流,从而避免数据包丢失;ECN则通过在数据包中标记拥塞信息,使发送端能够动态调整发送速率。通过这些机制,RoCEv2可以在以太网环境中实现与InfiniBand类似的可靠传输能力。
B站已给出之前的相关性能演示视频,如想进一步了解,请搜索B站用户:专注与守望