摘要:网络传输场景千差万别,任何一种固定的拥塞算法都很难满足所有场景,智能化、自动化,让计算机自动来生成拥塞控制算法是大趋势。
一、 各行业呼唤更经济更快的数据传输技术
随全球数字经济发展,各行业业务逐渐转向数字化,随之而来的是海量大数据的产生,这些数据不仅需要存储,还需要快速的传输,分发,汇聚。目前各行业为解决传输瓶颈,企业只能大量增购专线和传输方案。这样产生的经济费用非常高昂,电视台每年在这方面要花费近亿元,短视频企业更是花费高达1.2亿每年。面对此情景,各个行业都在呼唤更经济更快速的数据传输技术。
近年来可以看到摩尔定律在持续放缓(如图1所示),对网络传输设备影响至关重要,当设备转发能力达到800G甚至更高以后,很难在发展,也就是路不会再宽了,但路上的车却不停的增加,如果不在其他技术方面做出突破,日后就算花高昂费用租专网带宽也会达到瓶颈,有效的带宽有效利用率此刻显得尤为重要。
图1.摩尔定律趋势图
自从上世纪80年代分组交换技术提出以来,计算机网络正得到迅猛发展,网络用户规模也急剧上升,随之而来出现了网络拥塞和网络资源调度等问题。网络拥塞是由于在一定时间段内到达的数据包过多,路由器无法及时处理这些数据包,从而堆积在缓冲区内,造成网络传输时延增加,而时延增加又反过来降低了网络处理数据包的能力,如此循环,造成网络传输效率急剧下降,引发网络拥塞,严重时造成死锁现象,导致网络瘫痪。如何在复杂的广域网中保证消息、数据流进行高速传输始终是业界难题。
数据传输性能低下的主要原因是由于当前数据传输软件基本都是基于TCP协议的,在网络结构愈发复杂、延迟大、不稳定、误码率高时,TCP协议性能达到瓶颈,高往返时延、丢包网络中最为显著。TCP协议中的拥塞控制算法是决定数据发送性能的重要环节,早期的TCP拥塞控制算法主要以基于丢包的算法为主,其特点是加性增/乘性减(AIMD)的拥塞避免算法,调度效率差,带宽利用率低(如图2所示)。
图2.基于加性增/乘性减的TCP拥塞控制算法实测效果
当今解决数据传输效率的一个重要方向就是开发新的拥塞控制算法,但就目前存在的多种拥塞控制算法仍还不能满足日益增长的数据传输需求,其中一项最困难的就是网络千差万别,任何一种固定算法都很难满足所有场景。原因在于传统算法公式,基于推理、有限环境测试,经验性总结得出,不能在所有环境均发挥最大威力。导致目前不同网络环境,虽然物理带宽一致,但传输效果相差甚远。有时即便同一条链路,不同时间传输效果都千差万别。(如图3所示)
图3.TCP中采用最广泛的拥塞控制算法公式
从公式中我们可以看到,其中的ɑ、β、p均为通过有限环境测试,经验推理得出的常量参数,这些常量并不能完全代表千差万别的任何环境,有时甚至相差甚远。
二、 智能拥塞控制技术加速数据传输
随着人工智能的发展,其应用领域约来越广泛,在解决网络拥塞问题上,人们也开始探索性引入人工智能技术。目前,机器学习已成为网络和协议设计者的重要工具,基于机器学习的拥塞控制研究正在进行中,研究者从不同角度方向进行相关研究探索。
1. 离线学习算法
通过计算机来生成拥塞控制算法,该方法通过一个目标函数定量算法的优劣程度。在生成算法的过程中,针对于不同的网络状态,通过输入各种参数模型(如:瓶颈链路速率、时延、瓶颈链路上的发送者数量等),采取不同的方式调节发送窗口,反复修改调节方式,直到目标函数达到最优。最终会生成一个网络状态到调节方式的映射Map。在真实网络中,根据网络状态在映射Map直接选取调节发送窗口。
该方法试图屏蔽底层网络环境的差异,采用一个通用的拥塞控制算法模型来处理不同的网络环境,但是这种方式比较依赖输入的训练集(即历史网络模型),如果训练集能够全面覆盖所有可能出现的网络环境,那么该算法在应用到真实网络环境中时能够表现的很好,但是如果真实网络与训练网络差异较大,该算法性能较差。
2. 在线强化学习算法
基于强化学习算法的方向,强化学习是机器学习里面的一个分支。强化学习善于控制一个能够在某个环境下自主行动的个体,通过和环境之间的互动,不断改进它的行为。在强化学习中,学习器是一个制定决策的智能体,它不会被告知该执行什么动作,而是经过反复尝试运行来发现能获得最大奖励的行为。通常行动不仅会影响当前的奖励,而且会影响下一个时间点的环境,因此也会影响后续所有的奖励。因为学习系统的行动会影响到环境,环境又会影响后续的行为,所以从本质上讲,强化学习是一个闭环控制问题。
采用强化学习实现的智能拥塞控制算法,它会自动调整CWND即发送窗口及发送速率策略,以在线方式实现高吞吐量和低延时的数据快速传输。该算法允许学习的值不以表格形式存储,从而消除了当应用于大规模领域时,无法处理庞大状态的限制。
如图4所示为基于强化学习原理的拥塞控制算法架构。
图4.基于强化学习的拥塞控制算法架构
流量环境为真实网络环境,通过对流量环境进行采样,对采样报文进行流归类,再按照流进行统计相关参数(如:丢包率、时延、吞吐量等),将评价参数传递给评价系统,评价系统进行评价后输出评价训练,将训练模型结果反馈给决策系统,决策系统,即决定当前拥塞控制的背景下,决定增加、减少或保持当前CWND的决定结果输送到拥塞控制算法,新的报文流量按照拥塞控制调整进行报文传输。此流程相当于根据决策后的行动再次反映到环境中,然后从环境中再取出状态进行评价,评价时会根据上次的动作对环境的影响给出相应奖励。
基于实时强化学习技术适合网络传输拥塞控制场景,一边调节一边得到网络的反馈,可适应任何时刻任何场景,做到真正算法泛化,不再局限于固定的算法参数限制。但介于当前技术限制,训练不能做到实时,通常的一个网络环境在一段时间内基本情况是固定的,所以在部署上先进性一次训练,然后每次流量过来只需要将状态按照训练后的模型进行推理决策。这些流量同时也采集,然后训练,一段时间将模型更新。
三、 拥塞控制技术业界发展
拥塞控制除上面介绍的近年来开始引入人工智能技术进行探索研究外,实际从最初的TCP协议(RFC793)确定以来,基于此开发出了许多拥塞控制算法。从研究方向来看,拥塞控制算法不同可以分为四个部分:(1)基于丢包的算法,该算法在接收端缓冲区已经满并且数据包被丢弃时进行拥塞控制。(2)基于时延的算法,该算法通过测量报文的往返时间(RTT)来检测拥塞。(3)混合算法,该算法将以上两种方法进行组合,获得更好的性能;以及基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞。(4)基于机器学习的算法,该算法没有特定的拥塞信号,而是借助评价函数,基于训练数据,使用机器学习的方法形成一个控制策略。四个部分的拥塞控制方法的发展如下图5所示:
图5.拥塞控制算法演进
1. 基于丢包的拥塞控制算法
拥塞控制算法最初是基于丢包的算法。第一个广泛部署的为Reno算法。随着网络速度的提高,当出现拥塞现象时,Reno将拥塞窗口直接减半,然后再探索性慢慢增加。这样使得TCP连接无法充分利用可用的带宽,因此提出了一系列的改进算法。期间新的算法随有改进,但当两个具有不同RTT的流共享相同的瓶颈链接时,具有较小RTT的流可能比其他流获得更多的资源。这导致了公平性问题,使得基于丢包的任何算法都无法解决,为了解决该问题,提出了Cubic算法。Cubic首先使用一个三次函数来计算CWND,然后它通过依赖于RTTin的拥塞窗口增长函数来强制RTT的公平性。虽然cubic不能达到100%的资源利用率,需要丢包,但其已经得到广泛使用,当前是Linux内核中的默认算法。
2. 基于时延的拥塞控制算法
基于丢包的算法(如Cubic)可以有效地利用大多数连接;但是,正如其名称所示,它们所感知到的拥塞的唯一信号是包丢失。如果瓶颈链路上的缓冲区很大,包将累积到缓冲区填满,而发送方将继续增加其发送速率,排队延迟将继续增加。
一种可能的解决方案是基于延迟的拥塞控制,丢包可能是拥塞的信号,但是拥塞可能发生在缓冲区满之前很长时间,其早期检测可以增加拥塞控制的反应性,一旦RTT大幅增加,拥塞控制就会立即停止,并避免吞吐量急剧下降和高延迟。
使用排队延迟进行拥塞控制的第一个算法是TCP Dual,后又有一系列的改进如Vegas、FAST等。为了提高数据中心网络的性能,谷歌提出了TIMELY,该算法依赖于非常精确的RTT测量。
3. 混合基于链路容量的拥塞控制算法
基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞。混合算法同时使用损失和延迟作为拥塞控制的方案。第一个提出的混合算法是Veno。2016年,谷歌开发了基于瓶颈带宽和往返时间的混合型拥塞控制算法(BBR)。BBR通过定期排空缓冲区,然后测量RTT,最后返回初始交付速率,交替估计最小RTT和容量,来确定拥塞窗口调节,保证带宽利用率。BBR最大的问题是公平性,它对基于丢包的算法攻击性很强,目前在Linux4.9内核系统中包含了该算法,但需要配置才能使用。
4. 基于机器学习的拥塞控制算法
基于机器学习的拥塞控制算法是这几年的主流研究方向,新华三预研团队也投入其中。采用智能化学习算法的好处是通过机器来定义拥塞控制机制行为,能够更广泛的适应不同应用场景。比较新的算法有Remy、PCC、QTCP、Indigo、Copa、Vivas,但都不是很成熟,有的只限于在实验环境中使用,个别算法也仍处于特定场景探索验证中。
结束语
当前业界对加速数据传输技术投入日渐增加,虽然基于人工智能的传输技术仍不成熟,尤其是基于强化学习算法的泛化智能传输技术更是起步阶段,但伴随技术的发展,相信基于智能的既经济又快速的传输技术会逐渐成熟并落地各种应用场景中,服务于人类,满足日益变化的需求。