RDMA简介7之RoCE v2可靠传输

发布于:2025-06-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

      可靠传输技术旨在通过多种方法确保数据包在传输过程中不会丢失或损坏,同时保证数据包按发送顺序到达接收端,其要求在链路发生丢包或网络发生拥塞等情况下能够完全保证数据包的正确性同时尽可能地提高传输速率。RoCE v2协议实现可靠传输的技术手段共有三种,分别为:丢包重传机制、流量控制及拥塞管理。接下来将就这三种技术手段进行详细分析。

(1)丢包重传机制

为了简化设计同时降低成本,RoCE v2协议使用了后退N帧(go-back-N)重传算法处理数据传输过程中产生的丢包。后退N帧重传算法的工作流程如图1所示。

图1 后退N帧重传算法工作流程图

在RoCE v2协议数据包发送过程中,基础传输报文头(Base Transformation Head,BTH)中包含一个唯一包序列编号(Packet Serial Number,PSN),同时接收端也会为每条链路维护一个期望包序列编号(expect Packet Serial Number,ePSN),每当接收端接收到一个数据包,对比其包头中的PSN与本地ePSN,来判断链路上是否存在数据包丢失或数据包乱序等现象。如图1所示,再一次传输过程中PSN为2的数据包丢失,当接收端在接收到PSN为3的数据包后感知到丢包,立即发送包含PSN为2的NACK包,当发送端收到该NACK包后,无论在这之前已经正常发送了多少数据包,都会从丢失的PSN开始重新发送数据。这样的丢包重传机制将导致在丢包率较高的网络环境下,会反复重传大量数据包,性能会随着丢包率的提升急速下滑。这也就是为什么要求RoCE v2工作在二三层无损网络下。

(2)流量控制及拥塞管理

为了保证二层网络无损,需要进行严格的流量控制和拥塞管理。流量控制指通过调整发送端的发送速率,确保接收端能够处理并接收所有数据包。RoCE v2使用了IEEE 802.11Qbb中提出的基于优先级的流量控制算法(PFC)。

在PFC算法中,将网络接口分为八个虚拟通道,如图2所示,每个网卡的逻辑端口被分为八个队列并分别对应一条链路上八个不同优先级。在通信过程中,数据包将根据优先级被分配到八个虚拟队列上。同时PFC算法为每一个优先级的队列设置了相同或不同的ON/OFF阈值,当接收端某个队列的缓冲区深度超过这些阈值时,意味着下游出口或程序可能出现拥塞。PFC会向上游相应的端口发送一个暂停帧,该暂停帧指向特定优先级的流量。当发送设备接收到该暂停帧后,它将在一段时间内停止通过该优先级的虚拟通道发送数据。

图2 PFC算法对应八个虚拟通道示意图

通过对上述过程的分析可以发现,在多交换机的大型数据中心中,某个交换机的入口流量大于出口流量,就会造成拥塞。此时,拥塞会逐步向更上游传递。同时,由于PFC流控机制的颗粒度是优先级通道,可能导致流量分配不公平等问题。为了解决这一问题,RoCE v2协议引入了拥塞控制算法,以缓解链路拥塞,而PFC算法则仅作为兜底机制,尽可能减少其被触发的可能性。

目前RoCE v2协议使用较多的拥塞控制算法为基于显式拥塞通知(ECN)的DCQCN拥塞控制算法。其工作流程如图3所示。

图3 DCQCN拥塞控制算法

在DCQCN工作流程中,发送端网卡被称为响应单元(RP),接收端网卡被称为通知单元(NP)。发送端网卡将每个发送的数据包IP首部中的ECN字段标记为2bit的10,表示支持ECN拥塞控制,此时当交换机的队列超过某一阈值时,开始以一定的概率对到来的报文标记ECN字段为2bit的11。当接收端网卡接收到ECN字段为11的数据包后,发现网络中存在拥塞,则会发送拥塞通知数据包(CNP)到发送端,此时发送端将进入降速及升速流程。

相关视频感兴趣者,请搜B站用户名: 专注与守望
或链接:
https://space.bilibili.com/585132944/upload/video


网站公告

今日签到

点亮在社区的每一天
去签到