
12

一文读懂无损网络
source link: http://dockone.io/article/2434776
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一文读懂无损网络
根据OpenAI的数据分析,自2012年起,最新的AI模型训练所需要的计算量每3-4个月就要翻一倍。在过去5年,GPU算力增长了近90倍,而网络带宽仅增长了10倍。随着AI训练集群规模的增大,以及单节点算力的增长,AI训练逐渐从计算约束转换为网络通信约束。
另一方面,存储介质SSD(固态硬盘)的访问性能相比于分布式存储HDD(机械硬盘)已经提升了100倍,采用NVMe接口协议的SSD,访问性能可以提升10000倍。网络时延占比已经从原来小于5%提升到65%。网络时延也已经成为影响存储效率的重要因素。
传统TCP/IP协议在接收/发送报文时,内核需要做多次上下文切换,每次切换需要耗费5us-10us左右,需要至少三次的数据拷贝,需要耗费算力进行协议封装。RDMA网络相比TCP提供更高的单流通信带宽。RDMA网络的内核旁路和内存零拷贝特性,大大缩短了协议栈的通信处理时延以及数据搬移时延。RDMA允许用户态的应用程序直接读取和写入远程内存,无需CPU接入多次拷贝内存,并可绕过内核直接向网卡写数据,实现了高吞吐量、超低时延和低CPU开销。
最新版的RDMA协议RoCEv2 运行在UDP上,没有滑动窗口、确认应答等机制,一旦丢包,需要依靠上层应用检查并重传,这大大降低了RDMA传输效率。当网络的丢包率>10-3时,将导致RDMA有效吞吐急剧下降;2%的丢包将使RDMA吞吐率下降为0。要使得RDMA吞吐不受影响,丢包率必须保证在十万分之一以下,最好为无丢包。总而言之,RDMA的高效率依赖于无损网络。
网络拥塞原因
要实现无损网络,实际上就是要解决网络上的拥塞问题。造成网络拥塞主要有如下原因:
- 上下行非对称设计。网络设计通常采用非对称的方式,上下行链路带宽不一致(收敛比)。以交换机为例,当下联的服务器上行发包总速率超过上行链路总带宽时,上行口就会出现拥塞。
- ECMP。数据中心多采用Fabric架构,并采用ECMP来构建多条等价负载均衡的链路,通过设置HASH因子并HASH选择一条链路来转发,该过程没有考虑所选链路本身是否有拥塞,所选择的链路流量饱和时,就会发生网络拥塞。
- TCP Incast。当服务器向一组节点发起请求时,集群中的节点会同时收到该请求,并且几乎同时做出响应,从而产生了“微突发流”,如果交换机上连接服务器的出端口缓存不足就会造成拥塞。
无损网络的特征
“0丢包”、“低时延”、“高吞吐”是无损网络三大核心特征。这三个指标相互影响:
- 0丢包:会抑制链路带宽,导致低吞吐,同时会增加大流的传输时延;
- 低时延:降低交换机队列排队,导致低吞吐;
- 高吞吐:保持链路高利用率,导致交换机的拥塞排队,导致小流的“高时延”。
网络自身的优化目标是使整网吞吐最高、时延最低,包括三个层次:
- 流的控制(Flow control):用于解决发送端与接收端速率匹配,做到无丢包;
- 拥塞控制(Congestion control):用于解决网络拥塞时对流量的速率控制问题,做到满吞吐与低时延;
- 流量调度(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发送反压信息。
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丢包”、“低时延”、“高吞吐”是无损网络三大核心特征。流量控制、拥塞控制、流量调度是无损网络的三大核心技术。通过无损网络的建设,算力、网络、存储才能相互匹配,协同发挥更大的作用。
参考资料:
原文链接:https://mp.weixin.qq.com/s/9ya2o-T4RyBw4na1E56JXg
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK