RDMA简介7之RoCE v2可靠传输

      可靠传输技术旨在通过多种方法确保数据包在传输过程中不会丢失或损坏,同时保证数据包按发送顺序到达接收端,其要求在链路发生丢包或网络发生拥塞等情况下能够完全保证数据包的正确性同时尽可能地提高传输速率。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

### RoCE v2 协议概述 RoCERDMA over Converged Ethernet)是一种基于以太网的远程直接内存访问(RDMA)技术,旨在通过减少网络延迟和提高吞吐量来优化高性能计算(HPC)和数据中心环境中的数据传输。RoCE v2RoCE 的第二版,它使用 UDP 作为传输层协议,并支持跨子网的通信[^1]。 #### RoCE v2 的实现细节 RoCE v2 的核心特性在于其通过标准以太网基础设施提供 RDMA 功能的能力。以下是其实现的关键点: 1. **UDP 封装**:RoCE v2 使用 UDP 作为传输层协议,将 RDMA 数据包封装在 UDP 数据报中。这种设计允许 RoCE v2 跨越多个子网进行通信,而无需依赖 InfiniBand 网络[^1]。 ```python # 示例:UDP 封装的伪代码表示 def encapsulate_roce_v2_packet(data, destination_ip, udp_port): udp_header = create_udp_header(source_port=4791, destination_port=udp_port) roce_header = create_roce_header() packet = combine_headers_and_data(udp_header, roce_header, data) return send_packet(packet, destination_ip) ``` 2. **PFC(优先流量控制)**:为了防止网络拥塞导致的数据丢失,RoCE v2 通常与 PFC 结合使用。PFC 可以在网络链路级别暂停特定优先级的流量,从而确保 RDMA 流量的低延迟和高可靠性。 3. **DCQCN(数据中心拥塞控制)**:对于大规模分布式系统,RoCE v2 实现了 DCQCN 来动态调整发送速率。DCQCN 基于 ECN(显式拥塞通知)机制,能够快速响应网络拥塞并减少丢包率。 4. **硬件支持**:RoCE v2 的高效运行依赖于支持 RDMA 的网卡(NIC),例如 Mellanox ConnectX 系列或 Intel Ethernet Adapters。这些网卡提供了必要的硬件卸载功能,以降低主机 CPU 的负担。 5. **软件栈**:操作系统层面的支持也是 RoCE v2 成功部署的关键因素之一。Linux 内核从版本 3.10 开始引入了对 RoCE 的支持,包括驱动程序和用户空间工具(如 `rdma-core` 库)。 ### RoCE v2 的优势与挑战 - **优势**: - 低延迟:通过 RDMA 技术,避免了传统 TCP/IP 协议栈中的上下文切换开销。 - 高带宽:充分利用现代以太网的高带宽能力。 - 硬件加速:依赖 NIC 提供的硬件卸载功能,减轻主机 CPU 的负担。 - **挑战**: - 网络配置复杂性:需要正确配置 PFC 和 DCQCN,否则可能导致性能下降或网络拥塞。 - 兼容性问题:并非所有设备都支持 RoCE v2,可能需要额外的适配工作。 ```bash # 检查 Linux 系统是否支持 RoCE modprobe ib_uverbs modprobe rdma_cm lsmod | grep rdma ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值