AI大模型训练、HPC、高性能存储等业务应用场景提出了海量规模的计算需求,与传统数据中心业务相比,在流量模型和网络需求方面有着显著区别,驱使传统的数据中心网络向智算中心和无损网络转型.
基于RDMA的高性能网络已成为智算中心广泛应用的核心基础设施,但RDMA对于PFC流控机制,实现交换机端口缓存溢出前暂停对端流量,阻止了丢包现象发生,但 网络丢包异常敏感,如果丢包会导致网络性能急剧下降.在RoCEv2无损网络中利用由于PFC需要逐级反压,效率较低,同时,PFC是一种粗粒度机制,运行在【端口优先级】这个级别,不能细化到每一个Flow,可能会导致拥堵蔓延,进而出现不公平现象、线头阻塞、PFC死锁、PFC风暴等一系列性能问题.
如果能够动态地调整每个Flow的发送速率,保持端口的队列深度比较稳定,那么就不会触发PFCPause了,因此,就需要有基于Flow的拥塞控制算法.近年来业内聚 焦在RDMA高性能网络的拥塞控制算法领域,进行了大量的前沿研究和工程实践工作.
拥塞控制算法分类
根据拥塞控制机制的不同,RDMA网络中的拥塞控制方案可以分为两大类:被动拥塞控制和主动拥塞控制.这里的所谓主动和被动的区分依据,主要是主动拥塞控制以“请求和分配"方式运行:而被动拥塞控制则使用“尝试和退避/tryandbackoff的方式运行.
注:不同厂家的叫法不同,有些被动拥塞控制的改进算法,也被称为主动拥塞控制, 这个我们不做深入的讨论,比如 HW的NPCC(Network-basedProactiveCongestionControl),NPCC支持在网络设备上智能识别拥塞状态,然后由网络设备主动向发送端服务器发送CNP报文,使发送端服务器及时降低发送报文的速率,解决了拥塞路径过长的间题,而且可以准确控制发送的CNP报文个数.但按上面的分类,其本质还是被动拥塞控制,只不过对某些环节进行优化而己.
被动拥塞控制
被动拥塞控制又分为选代探测和直接测量两种,选代探测中有基于主机侧的端到端的控制方案,也有基于交换机辅助的控制方案.
选代探测中,比较常见有基于丢包检测的CUBIC(丢包情况下才会触发的拥塞控制方案,不适用RDMA刚性兑付网络的要求,不在本文的讨论范围内)、基于ECN的DCQCN、基于时延检测的Timely、Swit等,但一个共同的特点是发送端根据网络的拥塞信号,对发送速率进行调节.这类技术由于实现简单、易于部署被广泛使用, 但通常被认为存在拥塞反应滞后、控制回环时间长、容易引起吞吐率震荡、速率收敛慢、误伤老鼠流等问题,因此有很大的优化空间.
直接测量的拥塞控制方案,直接测量算法的关键是利用交换机来精确测量当前的网络状态并显式信息,以使发送端快速做出拥塞反应,并能准确地根据测量信息进行速率分配、控制网络拥塞,如基于INT遥测的HPCC,HPCC在数据面上找到了突破,通过智能网卡与交换机的配合,端到端实时抓取拥塞信息,从而精确获取实时的链路 负载,并且根据精确的链路负载来计算合适的发送速率.
主动拥塞控制
与上述网络拥塞发生后再进行拥塞控制的被动拥塞控制方案不同,主动拥塞控制方案旨在防止拥塞发生,只有网络管道具有足够的容量时才发送数据.主动拥塞控制以“请求和分配"方式运行,通过调度器主动对网络带宽进行统一的预约和分配,以使总发送速率尽可能匹配瓶颈链路带宽,这样既可以充分利用带宽,又能防止丢包,
根据调度器的是集中部署还是分布式部署,集中式调度器的方案,主要依靠集中式调度器对网络资源预约和分配,终端依据调度器的分配进行数据包发送,该方案的关键是调度器如何对数据包进行全局调度,如FastPass:分布式部署方案,又可以进一步细分为端到端的方案和逐跳的方案,在分布式端到端的拥塞控制方案中,发送端直接 发送请求到接收端,由接收端预约和分配网络资源,而不需要交换机的参与:而逐跳的拥塞控制方案中,需要交换机对网络中间链路辅以检测和管理,发送端、接收端共同完成资源的分配和调度,方案的关键是如何利用交换机提供的信息来进行或辅助数据包的调度发送,分布式部署方案比较典型的如ExpressPass.
主要拥塞控制算法
基于ECN的拥塞控制
RDMA硬件仅仅依赖于传统网络的PFC反压机制来实现点到点的发送速度控制,没 2015年SIGCOMM会上微软发表了DCQCN,揭开了拥塞流控的研究序幕.此前,有网卡的配合,无法实现端到端的流控.DCQCN是在QCN和DCTCP的技术基础上,为RDMA网络设计了端到端的拥塞流控机制,DCQCN的设计前提还是基于ECN标记.
DCQCN的拥塞控制过程中主要分为三部分:发送端(RP)调整流量发送速率,沿途转发交换机(CP)利用ECN标记报文携带网络链路的拥塞信息,接收端(NP)将收 到拥塞标记通过CNP协议报文给发送端.通过各种优化参数配置,DCQCN能实现很好的端到端拥塞控制效果,既能保证吞吐,和业务低时延.但是,DCQCN并不能消除对PFC的依赖,仍需要使用PFC做来避免丢包,只是DCQCN会大大降低PFC发生的频率,也是目前应用比较广泛的RDMA网络拥塞控制技术.
优势:
分布式控制:引入了分布式控制的思想,允许数据中心网络中的交换机独立地进行拥塞检测和控制,这种分布式方法可以更好地适应大规模网络的动态性和异构性:
基于流实现拥塞控制,降低拥塞时间,提高流启动速率和收敛速率.
劣势:
需要PFC配合使用,仍然无法避免不公平现象、线头阻塞、PFC死锁、PFC风暴等问题:
控制模型参数过多,性能与参数选择强相关,导致调参复杂,如DCQCN具有超过16个可调节的参数,为了更加适应不同的网络拓扑和流量环境,其参数的调整显得格外重要,不同参数下的网络吞吐会有50%以上的差异:
拥塞反应滞后、控制回环时间长、容易引起吞吐率震荡、速率收敛慢或者响应不准确,影响网络性能.
基于时延或RTT的拥塞控刺
基于主机侧端到端的被动拥塞控制方案中,最具代表性的是拥塞控制算法Timely. 2015年,谷歌提出了一种基于时延的拥塞控制方案Timely.Timely使用数据流的往返传递时间RTT作为量化链路拥塞的信息,并设计了一套相应的梯度调速算法.相较于传统的软件测量的RTT,容歌方案在他们的智能网卡中集成了的RTT硬件测量电路,这使得RTT测量拥塞的方案得以实用化.
在网络中,端到端传输延迟主要是由网络节点中的排队延迟引起的.也就是说,数据RTT是有效的拥塞信号,相比于拥塞信号ECN,RTT不需要任何交换机进行, 包的往返时间RTT可以体现其通过的队列的排队延迟,反映网络中的拥塞状态.因此也不需要对交换机进行任何修改,当网络规模较大时,也减少了对交换机进行配
置、维护和调优的开销.而且不同于ECN作为单点信号,RTT可以反映整条路径上的拥塞情况.
Timely在发送方的网卡上即可实现,主要由三个部分构成:RTT测量引擎,速率计算引擎和速率控制引擎.当收到ACK时,智能网卡会启动RTT测量引擎以精确测量RTT擎是拥塞控制算法的核心部分,根据RTT的梯度值计算流的发送速率.速率控制引擎 值.当RTT测量引擎测得RTT后,会把RTT的值传递给速率计算引擎.速率计算引再根据速率计算引擎算得的发送速率调整每条流的发送速度.
优势:
端到端拥塞控制,无需交换机的配合:
基于发送速率控制而非基于窗口更适合低延时DC网络,提高带宽利用率.
劣势:
对时钟同步的依赖:Timely对时钟同步要求较高,需要确保网络中的时钟同步性能良好,否则可能影响算法的准确性,成本高;
复杂性:Timely的设计相对较为复杂,需要综合考虑多个资源的调整,这可能使得实现和管理相对繁琐:
对RTT的变化敏感,需要合理的建模通免过反应.