一文读懂无损网络

网络
RDMA的高效运行依赖于无损网络,通过无损网络的建设,算力、网络、存储才能相互匹配,协同发挥更大的作用。

根据OpenAI的数据分析,自2012年起,最新的AI模型训练所需要的计算量每3-4个月就要翻一倍。在过去5年,GPU算力增长了近90倍,而网络带宽仅增长了10倍。随着AI训练集群规模的增大,以及单节点算力的增长,AI训练逐渐从计算约束转换为网络通信约束。

另一方面,存储介质SSD(固态硬盘)的访问性能相比于分布式存储HDD(机械硬盘)已经提升了100倍,采用NVMe接口协议的SSD,访问性能可以提升10000倍。网络时延占比已经从原来小于5%提升到65%。网络时延也已经成为影响存储效率的重要因素。

[[442870]]

传统TCP/IP协议在接收/发送报文时,内核需要做多次上下文切换,每次切换需要耗费5us-10us左右,需要至少三次的数据拷贝,需要耗费算力进行协议封装。RDMA网络相比TCP提供更高的单流通信带宽。RDMA网络的内核旁路和内存零拷贝特性,大大缩短了协议栈的通信处理时延以及数据搬移时延。RDMA允许用户态的应用程序直接读取和写入远程内存,无需CPU接入多次拷贝内存,并可绕过内核直接向网卡写数据,实现了高吞吐量、超低时延和低CPU开销。

最新版的RDMA协议RoCEv2 运行在UDP上,没有滑动窗口、确认应答等机制,一旦丢包,需要依靠上层应用检查并重传,这大大降低了RDMA传输效率。当网络的丢包率>10-3时,将导致RDMA有效吞吐急剧下降;2%的丢包将使RDMA吞吐率下降为0。要使得RDMA吞吐不受影响,丢包率必须保证在十万分之一以下,最好为无丢包。总而言之,RDMA的高效率依赖于无损网络。

网络拥塞原因

要实现无损网络,实际上就是要解决网络上的拥塞问题。

造成网络拥塞主要有如下原因:

1)上下行非对称设计。网络设计通常采用非对称的方式,上下行链路带宽不一致(收敛比)。以交换机为例,当下联的服务器上行发包总速率超过上行链路总带宽时,上行口就会出现拥塞。

2)ECMP。数据中心多采用Fabric架构,并采用ECMP来构建多条等价负载均衡的链路,通过设置HASH因子并HASH选择一条链路来转发,该过程没有考虑所选链路本身是否有拥塞,所选择的链路流量饱和时,就会发生网络拥塞。

3)TCP Incast。当服务器向一组节点发起请求时,集群中的节点会同时收到该请求,并且几乎同时做出响应,从而产生了“微突发流”,如果交换机上连接服务器的出端口缓存不足就会造成拥塞。

无损网络的特征

“0丢包”、“低时延”、“高吞吐”是无损网络三大核心特征。

这三个指标相互影响:

  • 0丢包:会抑制链路带宽,导致低吞吐,同时会增加大流的传输时延;
  • 低时延:降低交换机队列排队,导致低吞吐;
  • 高吞吐:保持链路高利用率,导致交换机的拥塞排队,导致小流的“高时延”。

构建无损网络可以从两个方面入手,一个是网络自身的优化,另一个是网络与应用系统的融合优化。后者包括网算一体、网络与存储相融合等等,不在此文范围内。本文侧重前一个方面。

网络自身的优化目标是使整网吞吐最高、时延最低,包括三个层次:

1)流的控制(Flow control):用于解决发送端与接收端速率匹配,做到无丢包;

2)拥塞控制(Congestion control):用于解决网络拥塞时对流量的速率控制问题,做到满吞吐与低时延;

3)流量调度(Traffic scheduling):用于解决业务流量与网络链路的负载均衡问题,做到不同业务流量的服务质量保障。

无损网络的流控技术

流控技术是保障网络零丢包的基础技术。由流量接收方控制数据传输的速率。

IEEE802.3 Annex 318 约定的PAUSE帧是以太网中实现流控的基本协议。当接收设备接收能力小于上游设备时,会主动发PAUSE帧给上游设备,要求上游设备在一段时间内暂停流量的发送。PAUSE帧只能阻止上游设备发送普通的数据帧,不能阻止发送MAC控制帧。

PAUSE帧的目的MAC地址是保留的MAC地址0180-C200-0001,源MAC是发送PAUSE帧的设备MAC地址。MAC Control Opcode域的值为0x0001。PAUSE帧是MAC控制帧的一种。接收端设备出现拥塞的情况下,本段源端口通常会连续收到多个PAUSE帧。只要接收端设备的拥塞状态没有解除,相关的端口就会一直发送PAUSE。基于以太PAUSE机制的流控虽然可以预防丢包,但是会导致一条链路上的所有报文停止发送。为了解决这个问题,IEEE在802.1qbb中引入了优先级流控功能PFC(基于优先级的流量控制)也称Per Priority Pause或CBFC(Class Based Flow Control)

PFC允许在一条以太链路上创建8个虚拟通道,并为每一个虚拟通道指定优先级,允许单独暂停和重启其中任意一条虚拟通道,同时允许其他虚拟通道的流量无中断通过。当队列已使用的缓存降低到PFC门限值以下时,则向上游发送PFC反压停止报文,通知上游重新发包,从而最终实现报文的零丢包传输。

无损网络的拥塞控制

拥塞控制是对进入网络的数据总量进行控制,使网络流量保持在可接受水平的一种控制方法。

ECN(Explicit Congestion Notification)技术:当流量接收端感知到网络上的拥塞后,通过协议报文通知发送端,使流量发送端降低报文发送速率,从而从早期避免拥塞而导致的丢包,从而最大限度利用网络性能。

DCQCN(Data Center Quantized Congestion Notification):目前在RoCEv2网络种使用最广泛的拥塞控制算法。融合了QCN算法和DCTCP算法,需要数据中心交换机支持WRED和ECN。DCQCN可以提供较好的公平性,实现高带宽利用率,保证低的队列缓存占用率和较少的队列缓存抖动情况。

DCQCN算法由三个部分组成:交换机(CP,Congestion Point)、接收端提示点NP(Notification Point)、发送端反馈点RP(Reaction Point)。交换机发现出端口队列超出阈值,在转发报文时会按照一定概率给报文携带ECN拥塞标记(ECN字段设置为11),以标示网络中存在的拥塞。标记过程由WRED(Weighted Random Early Detection)功能完成。RP根据收到的ECN拥塞标记向RP发送反压信息。

图1:DCQCN算法示意图

ECN overlay:ECN Overlay将ECN(Explicit Congestion Notification)功能应用到VXLAN中,Overlay网络拥塞可以被及时感知,让流量接收端通知发送端进行降速,缓解网络拥塞。

iQCN(intelligent Quantized Congestion Notification):通过让转发设备智能补偿发送CNP通知报文,解决流量发送端网络未及时收到CNP报文而迅速升速带来的网络拥塞加剧的问题。具备iQCN功能的CP(Congestion Point)对收到的CNP报文进行记录,维护包含CNP报文信息和时间戳的流表。CP会对本设备的端口拥塞程度进行持续监测,端口拥塞较为严重时,比较CNP报文的时间间隔与网卡升速时间:若发现从NP收到的CNP报文的时间间隔小于RP的网卡升速时间,判断网卡可以正常降速,CP正常转发CNP报文;若发现从NP收到CNP报文的时间间隔大于RP的网卡升速时间,判断网卡不能及时降速且存在升速风险,CP将会主动补偿发送CNP报文。

无损网络的流量调度技术

流量调度技术指的是网络节点在转发流量时,将负载(流量)分摊到多条链路上进行转发。网络中常用的负载分担机制包括等价多路径路由ECMP和链路聚合LAG。

ECMP(Equal-Cost Multi-Path routing)负载分担:实现了等价多路径负载均衡和链路备份的目的。ECMP应用于多条链路到达同一目的地址的网络环境中,当多条路由优先级和度量都相同时,可以实现负载分担;当多条路由优先级和度量不相同时,可以实现路由备份。后者,发往目的地址的数据包只能利用其中的一条链路,其他链路处于备份状态或无效状态,并且在动态路由环境下切换需要一定时间。ECMP负载分担时,路由器将数据包的五元组(源地址、目的地址、源端口、目的端口、协议)作为哈希因子,通过HASH算法生成HASH-KEY,在负载分担链路中选取一条成员链路对数据包进行转发。正常情况下,路由器采用主路由转发数据。当主链路出现故障时,主路由变为非激活状态,路由器选择备份路由中优先级最高的路由转发数据。当主链路恢复正常时,由于主路由的优先级最高,路由器重新选择主路由来发送数据。

LAG(Link Aggregation Group)负载分担:将多个物理接口捆绑为一个逻辑接口,达到增加链路带宽的目的。这个逻辑接口称为聚合接口或Eth-Trunk接口。在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,有可能产生同一数据流的第一个数据帧在一条物理链路上传输,第二个数据帧在另外一条物理链路上传输,有可能产生数据包乱序的情况。通过采用逐流负载分担的机制,将数据帧中的地址通过HASH算法生成HASH-KEY值,关联Eth-Trunk转发表中对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY不同,出接口也不同,保证了同一数据流的帧在同一条陆离链路转发,又实现了流量在聚合组内各物理链路上的负载分担。

小 结

RDMA的高效运行依赖于无损网络。“0丢包”、“低时延”、“高吞吐”是无损网络三大核心特征。流量控制、拥塞控制、流量调度是无损网络的三大核心技术。通过无损网络的建设,算力、网络、存储才能相互匹配,协同发挥更大的作用。

 

责任编辑:赵宁宁 来源: SDNLAB
相关推荐

2022-07-05 06:30:54

云网络网络云原生

2021-08-04 16:06:45

DataOps智领云

2023-12-22 19:59:15

2023-09-17 23:09:24

Transforme深度学习

2018-09-28 14:06:25

前端缓存后端

2022-09-22 09:00:46

CSS单位

2022-11-06 21:14:02

数据驱动架构数据

2023-11-27 17:35:48

ComponentWeb外层

2023-05-20 17:58:31

低代码软件

2022-10-20 08:01:23

2022-07-26 00:00:03

语言模型人工智能

2022-12-01 17:23:45

2023-12-02 19:42:29

2020-01-03 10:40:36

网络遥测丢包率

2021-02-05 05:26:33

字节ASCII控制

2017-05-04 20:29:12

HTTP服务器TCP

2021-05-18 09:48:58

前端开发架构

2018-10-30 11:10:05

Flink数据集计算

2018-09-29 04:53:37

IoT网关物联网IoT

2020-12-30 09:05:24

架构微内核系统
点赞
收藏

51CTO技术栈公众号