一文掌握智算网络负载均衡技术

bf202161c38debd75df4761a15e17bb6.png

随着AI技术的发展,各种新型智能应用爆发,以AI为特征的智能算力发展速度远超通用算力,据IDC预测,未来5年,我国智能算力规模的年复合增长率将达50%以上,数据中心的算力时代已经到来。层出不求的需求也对数据中心网络或智算网络提出了更高的要求,需要更大的规模、更大的带宽、更低的时延和更可靠的网络。

数据中心网络或智算网络的拓扑结构相对规整(如Spine-Leaf架构),所以在选路方面相对简单。但由于数据中心网络的服务器之间往往都存在多条等价并行路径(比如在Fat tree网络中可能存在多达几十条),因此,如何在多条并行路径之间进行负载均衡路由,是数据中心网络路由设计的关键。

传统负载均衡用的比较多的是等价成本多路径(ECMP),ECMP下一跳的路径是通过对数据包字段进行哈希计算并对可用路径数取模来选择的,来自一个流的数据包总是映射到同一路径,因此,这些数据包将按发送顺序交付,也就是通常的基于流的负载均衡(Flow-based)。然而,研究表明,在流量高度倾斜时,ECMP无法平均分配负载到不同的路径,如大象流场景。特别是对于当前HPC和AI场景,普遍使用RDMA并且是大带宽场景,这个时候传统ECMP很容易导致链路Hash不均,进而导致某一个链路拥塞。在AI/ML的应用中,GPU或其他类型的AI/ML计算单元之间他们有着非常简单的通讯关系(流的数量非常少),并且由于他们有着极高的计算能力,导致一对通讯单元间的数据吞吐极高(单个流很大,所需的网络带宽极大),这就导致在这样的应用中存在极端的负载分担不均衡,而且这种不均衡一旦引发网络丢包,就会对整体AI/ML的任务完成时间带来显著的负面影响。

网络中的拥塞整体一般有两种,一种是在端侧的拥塞,常见于多打一的Incast场景,这种情况通常用各种拥塞控制算法来使对应的发送端减速来解决。另一种是矩阵拥塞,即网络因为Hash不均导致的拥塞。这里重点讨论矩阵拥塞的解决方案。解决矩阵拥塞主要有以下几种方式:

  • 胖树架构设计:增加汇聚链路带宽,典型的就是采用Fat tree网络架构设计,从输入到输出1:1的收敛比设计;

  • VoQ(Virtual Output Queueing)技术:是一种网络拥塞管理技术,用于防止HoL阻塞的技术,在传统的输入缓冲区排队方案中,数据包先进入输入缓冲区,然后根据目的端口的可用性从中选择出队。然而,当多个数据包的目的端口相同时,输入缓冲区排队会导致阻塞和拥塞。VoQ技术通过为每个输出端口创建虚拟的输出队列,将输入数据包直接放入对应的虚拟输出队列中。这样,在数据包进入路由器或交换机时就可以直接选择适当的虚拟输出队列,而无需等待目的端口的可用性。因此,VoQ技术可以避免输入缓冲区排队可能引起的阻塞和拥塞问题,提高网络的吞吐量和性能;

  • 负载均衡(Load balance),也是本文介绍的重点,不同的负载均衡路由策略会对端到端的吞吐率造成很大的影响。流量Load balance按照粒度不同,可以分为以下几种方式:基于流(Flow based)、基于包(Packet based)、基于流片(Flowlet)、基于信元(Cell based)

830c7f74af19d2f082258dee710cb498.jpeg

基于流(Flow based)

基于流的负载均衡路由是以流为单位,把不同的流路由到不同的等价路径上。传统的方法是等价多路径(ECMP)路由,主要通过哈希的方法进行路径选择。但由于该方法将大流和小流等同对待,造成不同路径的带宽利用率相差较大,并且哈希算法的冲突问题难以实现精确的负载均衡。在实际应用中存在如下问题:

  • 在流量大小分布均匀的情况下,ECMP效果较好。然而,在同时存在大象流和老鼠流的情况下,ECMP的效果并不理想。这就导致在AI/ML类应用中存在极端的负载分担不均衡,而且这种不均衡一旦引发网络丢包,就会对整体AI/ML的任务完成时间带来显著的负面影响;

  • 可能加重网络链路的拥塞问题。由于ECMP仅使用哈希或轮询方法进行负载均衡,它无法感知到链路的拥塞情况。因此,在已经存在拥塞的链路上使用ECMP可能会进一步加剧拥塞情况;

  • ECMP无法解决非对称网络的性能损失。当数据中心网络发生故障时,网络结构可能会出现非对称情况导致无法实现网络物理链路的均衡分布,进而造成流量不平衡的问题。

因此,尽管ECMP是一种简单的负载均衡策略,优点是没有乱序问题,但它存在上述问题,限制了其在某些场景下的有效性。在解决这些问题时,可以考虑使用更复杂的负载均衡策略或结合其他技术来改善网络性能和流量分配的均衡性。

由于ECMP工程复杂度低、性能可接受,仍然广泛应用在数据中心网络中。业界也提出了许多对ECMP进行改进的方法,比如通过集中控制器对大流进行优化的路径选择等(Hedera方案、BurstBalancer方案)。

基于包(Packet based)

随机包喷洒(Random Packet Spraying,RPS)是一种基于包级别的负载均衡策略。当交换机发现有多条等价路径指向同一目的地址时,RPS会将数据包以单个包为单位分散到这些路径上。与ECMP不同,RPS以数据包为单位进行操作,将同一流中的不同数据包转发到不同的等价路径上。

RPS的优点在于简单易实施,通过细粒度的负载均衡,可以在多条并行路径之间实现较为均衡的路由选择,提升端到端的网络吞吐率,可以将并行链路利用率提高到90%以上。缺点在于可能会造成同一个流的包乱序问题,所以这种方式必须要很好解决乱序问题。例如英伟达的解决方案中,就使用BlueField-3 DPU通过DDP(直接数据放置)处理无序数据,从而形成端到端的完整解决方案。

基于流片(Flowlet)

Flowlet本质是利用TCP的流突发特性,根据设置一定间隔将流分割为一个个Burst子流,然后每次切换都是在这个间隔中间,从而避免乱序。但是这个方式也有局限性:首先,Flowlet无法应对短连接场景,试想如果一个Flow一共就一个Burst,那Flowlet必然无法产生效果;其次,Flowlet是针对TCP的特性设计的,而RDMA流量并不符合相关特征,因此,在上层应用为RoCE流量时,Flowlet基本没有效果,这也是在AI/ML等场景中不使用Flowlet的原因。

Flowlet的实现原理如下:对于TCP Flow,我们通常假设Packet是平滑发送的,然而实际上,不管是实际抓包还是从具体实现上看,你都会发现TCP Packet的发送其实是Burst的发送的,如下图:

4c27fa3d59f907208465c3438dc637c8.jpeg

Flowlet 实现原理上,可以把一条 Flow 看成是多个 Flowlet 组成的,负载均衡就是基于 Flowlet 来进行了,引入了一个中间层,它既不是 Packet ,也不是 Flow ,而是大于 Packet 小于 Flow 的 Flowlet 。 那么到底如何定量去切分 Flowlet 呢? 已知两条链路的延迟分别为 D1 , D2 ,设一个数 α ,当 α 满足下面的条件: α >|D1−D2| ,一条 Flow 便可以通过 α 来切割为不同的 Flowlet 。

ea7f91b7147f2ec78beca31f527967b7.jpeg

基于信元(Cell based)

在基于信元交换的网络级负载均衡机制下,接收端设备接收到报文后,会将报文拆分成的若干信元,信元会基于目的端发送的调度信令选择空闲的链路进行转发,到的目的后,信元被重新拼装成报文发出设备。在这样的机制下,不同于流转发,一个固定的流仅能利用单条路径,信元交换是动态的基于微观负载实时调整的均衡利用。

信元交换的粒度比基于包的负载均衡还要细,理论上,带宽利用率可以更高。信元交换本身并不是一项崭新的技术,在目前广泛应用的框式设备中,线卡芯片与网板芯片之间的流量交换普遍都采用了信元交换的技术,以实现机框内无阻塞交换。不过信元交换以前主要应用在框式设备系统内部,往往都是各个交换机设备厂商自定义的信元格式和调度机制,不具备跨厂商互通的能力,此项技术可以进一步扩展,应用到整个网络上。2019年AT&T向OCP提交了基于商用芯片的盒式路由器规范,提出了DDC(Disaggregated Distributed Chassis)的概念,DDC使用的核心技术也是信元交换的方案。

AI/ML网络支撑的业务其特征是流数量少,单条流的带宽大,同时流量不均匀,经常出现多打一或者多打多的情况(All-to-All和All-Reduce)。所以极易出现流量负载不均、链路利用率低、频繁的流量拥塞导致的丢包等问题,无法充分释放算力。信元交换将报文切片成Cells(对比Packet based的负载均衡方案,粒度更小),并根据可达信息采用轮询机制发送,流量负载会较为均衡的分配到每一条链路,实现带宽的充分利用,这样可以解决中大小流的问题,仍然存在相当多的缺陷:

  • 静态时延增加;DDC的大缓存能力将报文缓存,势必增加硬件转发静态时延。同时信元交换,对报文的切片、封装和重组,同样增加网络转发时延。通过测试数据比较,DDC较传统ETH网转发时延增大1.4倍。显然不适应AI计算网络的需求。

  • 硬件依赖特定芯片实现,封闭、专用;

  • 大缓存设计增加网络成本;

基于上述分析可以看出以上几种负载均衡方案,各有优劣,从实际部署的角度看,负载均衡的粒度从小到大的顺序是Cell based、Packet based、Flowlet、Flow based,对应的带宽利用率则是从高到低,但是由于Cell based自身的限制,实际在智算领域基本没有应用。

当前高性能计算、分布式存储、人工智能等应用均采用RoCEv2协议来降低CPU的处理和时延,提升应用的性能。然而,由于RDMA的提出之初是承载在无损的InfiniBand网络中,RoCEv2协议缺乏完善的丢包保护机制,对于网络丢包异常敏感。尽管可以使用PFC、ECN等流量控制和拥塞控制技术尽量实现无损网络特性,但还是很难应对大象流/老鼠流分布不均的影响,而网络负载均衡是一个绕不开的点。

在这方面,各厂家也在做各种努力尝试。

比如在英伟达的RoCE解决方案中,可以针对RDMA流和TCP流采用不同的策略,如TCP使用Flowlet,RDMA(RoCE)采用逐包的负载均衡策略。Spectrum可以通过网络侧交换机和端侧DPU的紧耦合联动,做到实时动态监控ECMP各个链路的物理带宽和端口出口拥塞情况,来做到基于每个报文的动态负载分担。

Spectrum-4交换机负责选择每个数据包基于最低拥塞端口,均匀分配数据传输。当同一流的不同数据包通过网络的不同路径传输时,它们可能以无序的方式到达目的地。BlueField-3 DPU通过DDP处理无序数据,避免了数据报文缓存和重组的困扰,通过上述方案,在超大规模系统和高负载场景下相对传统RoCE方案性能提升明显。再比如,华为的智能无损网络,通过ACC(Automatic ECN)动态调整每个交换机的标记阈值,以分布式方式工作,并结合离线和在线训练以适应动态流量模式,ACC在线速率下实现了老鼠流和大象流的低流完成时间,优先调度小流的报文,从而保障小流的转发时延,提升整体吞吐性能。

来源:https://mp.weixin.qq.com/s/Eds7NKqBsejbiS2Tf0Cm_Q

6d1059428569605c519a76c5b0f50eac.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能够提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能够通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能够帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值