使用RDMA技术构建无损网络

薪科技快评 2024-12-23 15:38:12

如何使用RDMA构建无损网络?

在深入研究RDMA和无损网络领域后,会经常遇到两个基本问题:为什么采用无损网络至关重要?这些先进技术有什么优势?

无损网络是一种新型的网络技术,它可以在不丢失数据包的情况下传输数据。这种技术的优势在于它可以提高网络的吞吐量和延迟,同时减少了网络拥塞和丢包率。

RDMA(Remote Direct Memory Access)是一种基于专用通道的通信协议,它可以直接访问远程计算机的内存,而不需要经过CPU。这种技术的优势在于它可以大大提高数据传输速度和效率,同时减少了CPU的负担。

为什么无损网络至关重要

线上业务涵盖搜索、购物、实时流媒体等各个方面,对高频用户请求的快速响应至关重要。数据中心中的任何延迟都可能对用户体验产生重大影响,影响网站流量、口碑、活跃用户等因素。此外随着机器学习和高性能计算技术的激增,对计算能力的需求也急剧增长。为了满足复杂神经网络和深度学习模型的要求,数据中心正在部署大量分布式计算集群。

然而在大规模并行程序中固有的通信延迟可能会严重影响整体计算效率。为了应对数据中心内不断增长的数据存储和检索效率问题,以太网收敛的分布式存储网络正日益受到青睐。然而在以大数据流为主要特征的存储网络中,由于拥塞引起的数据包丢失可能会触发大数据流的重传,从而降低效率并加剧拥塞。

从前端用户体验和后端应用效率的角度来看,当前数据中心网络的先决条件是清晰的:较低的延迟更好,效率更为重要。为减少数据中心内部网络的延迟并提高处理效率,RDMA技术应运而生。RDMA允许用户级应用程序直接读取和写入远程内存,而无需经过 CPU 进行多次内存复制,RDMA绕过内核并直接将数据写入网卡。这实现高吞吐量、超低延迟和最小的CPU开销。目前,RDMA在以太网上的传输协议是RoCEv2。RoCEv2是一种基于UDP的无连接协议,与面向连接的TCP相比,它更快且消耗更少的CPU资源。

然而RoCEv2缺乏TCP中的滑动窗口和确认响应等机制也存在挑战。在发生数据包丢失的情况下,上层应用程序必须检测并启动重传,降低了RDMA传输效率。为了充分发挥RDMA的性能并解决数据中心中大规模分布式系统的网络性能瓶颈,建立一个专为RDMA设计的无丢包网络环境至关重要。有效解决网络拥塞问题是实现无丢包传输的关键。

什么是RDMA

RDMA(远程直接内存访问)是一种高性能网络通信技术,具有高带宽、低延迟、无CPU消耗、零拷贝等优点。相比kernel TCP、DPDK等传统通信手段,RDMA在延迟、吞吐和CPU消耗方面均有明显优势 。

在传统的应用程序之间传输数据的模式中,过程如下所示:

数据从应用程序缓存复制到内核中的TCP协议栈缓存。然后将其复制到驱动程序层。最后,将其复制到网卡(网络接口卡)缓存。

多次内存复制引发CPU干预,延迟高达数十微秒,消耗大量性能。然而,在RDMA模式下,应用程序数据直通网卡,绕过内核协议栈,避免了这些劣势,显著提高了效率,包括:

将处理延迟从几十μs降低到1μs。在整个过程中CPU参与度最小,从而节省性能。增强传输带宽。RDMA对网络有什么需求

RDMA(Remote Direct Memory Access)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需经过操作系统内核。RDMA在高性能计算、大数据分析和高并发I/O场景中的应用越来越广泛。如iSICI、SAN、Ceph、MPI、Hadoop、Spark和Tensorflow等技术正在采用RDMA进行操作。对于支持端到端传输的底层网络,最关键的指标是低延迟(以μs计)和无丢包 。

低延迟在网络拥塞情况下,数据包在转发之前被缓冲。缓冲区越大,数据包的缓存时间越长,导致更高的延迟。对于RDMA网络,选择最佳的缓冲区大小非常重要,而更大的缓冲区并不一定更好。重传延迟:RDMA网络利用各种技术来避免数据包丢失。无损网络

RDMA在无丢包状态下实现了全速率传输,但当发生数据包丢失和重传时,性能会急剧下降。在传统网络模式中,大缓冲区是实现无丢包的主要手段,但这与低延迟的要求相矛盾。在RDMA网络环境中,目标是通过较小的缓冲区实现无丢包。在这个约束条件下,RDMA主要基于PFC(优先级流量控制)和ECN(显式拥塞通知)的网络流量控制技术实现无丢包 。

实现无损RDMA网络的关键技术:PFC

基于优先级的流量控制(PFC)是一种基于队列的反压机制,它在优先级上运行。通过发送暂停帧,PFC防止缓冲区溢出和数据包丢失,向上游设备发出信号停止数据包传输 。

PFC可针对特定虚拟通道独立暂停与恢复,不影响其他流量。在示例场景中,当队列7缓冲区利用率达到配置的PFC流量控制阈值时:

本地交换机启动PFC暂停帧的传输。接收到暂停帧的上游设备暂时停止该队列的数据包传输。如果上游设备的缓冲区也达到了阈值,它会继续触发暂停帧来应用反压力向上游传输。最终,通过降低优先级队列的发送速率来避免数据包丢失。当缓冲区占用率降到恢复阈值以下时,发射PFC释放帧。实现无损RDMA网络的关键技术:ECN

显式拥塞通知(ECN)是一项成熟的技术,在过去较少使用,但现在在主机间广泛使用。当网络设备出口端口出现拥塞并超过ECN阈值时,ECN可利用IP报头中的ECN字段在数据包中嵌入标记。这个标记作为一个指示器,表示数据包遇到了网络拥塞。在识别到数据包中的ECN标记后,接收服务器会立即生成一个拥塞通知数据包(CNP),并将其发送回源服务器。这个CNP包含有关引起拥塞的流的信息。

在接收到CNP后,源服务器会调整相应流的发送速率,减轻网络拥塞,避免数据包丢失。通过PFC和ECN实现端到端的无丢包传输依赖于配置不同的阈值。准确设置这些阈值需要对交换机的内存管理单元(MMU)进行细致的管理,以解决交换机的缓冲区管理问题。

结论:在RDMA网络中实现无丢包传输

RDMA网络通过部署PFC和ECN功能实现无丢包传输。PFC技术在链路上控制RDMA特定的队列流量,在交换机入口端口拥塞时向上游设备施加反压力。通过ECN技术,在出口端口拥塞时对数据包进行标记,实现端到端的拥塞控制,促使发送端降低传输速率。通过调整ECN和PFC的缓冲区阈值,以确保ECN的触发速度比PFC更快,可以实现最佳的网络性能。

这样,网络可以在主动降低服务器的传输速率以应对拥塞的同时,保持全速的数据转发。然而,如果持续的问题导致PFC被启用,它会暂停上游交换机的数据包发送,从而在不丢失数据包的情况下降低网络吞吐量。在数据中心网络中部署RDMA需满足无丢包网络传输需求。专注于精细化的运维操作变得至关重要,以满足对延迟敏感和丢包敏感的网络环境的要求。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

0 阅读:0