APP下载

智能TCP拥塞控制算法研究进展

2022-06-07李英华通信作者

数字通信世界 2022年5期
关键词:效用函数控制算法速率

李英华,杨 琳 通信作者

(1.国家无线电监测中心,北京 100037;2.北京东方波泰无线电频谱技术研究所有限公司,北京 100041)

目前,互联网中超过95%的信息采用TCP[1]进行传输。对于像TCP这样的可靠传输协议,当出现网络丢包时会自动重传丢失的数据包直到传输成功,这种重传机制会进一步增加信息流量,导致拥塞状态加剧并形成一个恶性循环,不仅大大降低业务的有效带宽,严重时有可能造成整个网络崩溃[2]。因此,需要对网络和业务进行拥塞控制,以避免整个网络出现拥塞,或者在发生拥塞后通过拥塞控制,使网络恢复畅通。1988年,Jacobson等人[2]率先提出了在TCP中增加拥塞控制机制,即著名的“慢启动”“拥塞避免”和“快速重传”等三个算法;1990年又进一步提出了“快速恢复”算法,主要以丢包作为网络拥塞的判断依据。这种算法在有线网络中表现出较好的性能,但是在误码率较高的无线网络,或传播时延较大的卫星网络中,则会导致业务的实际传输速率大大降低,因此研究者又提出了基于网络测量的拥塞控制算法,以解决传输效率低和网络适应性差问题。

随着智能手机和移动互联网的飞速发展,给社会各行各业带来了新的发展机遇,通过网络传递的信息流量也变得极其巨大,当信息流量超过网络中部分传输线路的承载能力时,随之而来的问题就是越来越严重的网络拥塞问题。随着人工智能技术取得突破性的进展,研究者们也在尝试通过机器学习来提高TCP对网络拥塞状态的判断能力,以及优化拥塞后的速率控制机制,以进一步提高算法的网络适应性,实现按需分配网络资源。

基于机器学习的算法一般通过使用效用函数或基于训练数据来调整拥塞窗口,或者通过机器学习将控制操作与直接观察到的性能结果进行映射,进而评价每一步的操作,从而做出下一步的最优控制决策,主要包括PCC、PCC-Vivace、Copa、Remy、Xavier、TCP-Drinc、Aurora、Orca、AUTO等。

1 基于机器学习的算法

1.1 PCC和PCC-Vivace算法

PCC算法[3]提出了一种以性能为导向的控制算法,它通过持续观察决策和经验性能之间的联系,并自动采取导致良好性能的决策,以自动适应各种网络环境。PCC算法在连续的监测周期内首先分别按照速率vi发送数据包,如式(1);然后,再分别计算两种情况下观测到的效用函数Ui,如式(2);最后,再比较Ui的大小并按照取值大的方向调整发送速率。

式中,ε是速率调整梯度系数;R是当前发送速率;Li是观测到的丢包率;Ti是实际吞吐量;Sigmoid是神经网络里的激活函数。PCC算法的主要问题是,如何选择效用函数,能够同时保证收敛性和TCP友好性。

针对上述问题,研究者又提出了改进的PCCVivace算法[4],将时延引入效用函数,并修改了速率调节算法,同时保证了收敛性和TCP友好性。

1.2 Copa算法

Copa算法[5]的整体思路与基于网络测量的BBR算法相类似,其重点主要在于,当一个流在链路中产生排队延迟时,首先给定一个当前拥塞状态下的目标速率λ,如式(3),然后控制当前速率在该目标速率上下的一定范围内进行波动,最后通过效用函数,如式(4),来衡量拥塞状态。

式中,δ是时延的权重系数;d表示排队时延。与BBR算法相比,Copa算法对链路中队列长度进行了更加主动且细粒度的控制,而不是像BBR那样主动排空队列。由于δ将控制流的最大队列长度,因此,在实际应用时如何调整δ,从而在Copa算法与其他协议的流进行竞争时,保持其良好的兼容性是一个尚待研究的问题。

1.3 Remy算法

Remy算法[6]的基本思想是通过对不同控制参数所造成的后果进行预测,以选择能够得到最优后果的参数作为下一步的控制决策,关键是生成合适的拥塞控制预测模型。因此,研究者采用机器学习的方式来训练算法模型,通过输入各种参数模型(如时延、瓶颈链路速率、业务强度等),并使用目标函数作为定量指标,判断参数模型的优劣度。

在训练过程中,以获得最优目标函数为标准,选择不同的拥塞窗口调节方式以匹配不同网络状态,形成调节方式与网络状态的映射关系表,在实际使用时可直接选取拥塞窗口的调节方式。Remy算法采用一个通用的拥塞控制算法模型来处理不同的网络环境,以屏蔽底层网络的差异性,但此方式比较依赖输入的训练集(即历史网络状态),如果训练集能够覆盖所有可能出现的网络状态,以及可采取的拥塞调节方式,则Remy算法在真实的网络环境中也能获得较好的性能,否则性能有可能会较差。

上述算法的重点在于效用函数的选择,特定的效用函数体现了算法对某种网络特性的偏好,一旦出现实际需求与假定场景不一致的情况,则需要重新选择效用函数,否则算法的性能有可能会急剧下降。

2 引入强化学习的算法

近年来,研究者们又试图将强化学习引入到拥塞控制算法的研究中。由于强化学习的自学习特性,可以通过对网络环境的采集与评估,将拥塞窗口的调节体现在每一步的动作上,并根据动作的反馈来不断修正学习网络,使得算法对拥塞状态的预测尽可能地接近准确,从而确保算法在不同的网络环境下具有自适应性。

2.1 Xavier算法

Xavier算法[7]将拥塞控制问题建模为一个马尔可夫过程,且在每个时间段内由控制器决定是否发送数据包以及数据包的发送速率。Xavier算法使用Q学习算法来获得累计最大回报,并使用线性函数近似的SARSA来学习Q值。

2.2 TCP-Drinc算法

TCP-Drinc算法[8]将拥塞控制问题描述为延迟分布式决策问题,用部分可见马尔可夫决策过程描述拥塞控制,将侧重点放在如何处理环境产生的延迟,如动作在延迟后生效、反馈也存在延迟等。该算法通过构建经验缓冲区将历史数据存储起来,并使用循环神经网络(RNN)来有效捕捉时间序列中的时间动态行为,增加了系统的稳定性,其整体架构如图1所示。

图1 TCP-Drinc整体架构图

2.3 Aurora算法

Aurora算法[9]将拥塞控制过程描述为一个顺序决策问题,并采用深度强化学习对行为、状态以及奖励函数进行设置,如式(5)。经过训练后,获得各种网络状况下的响应策略,在实际应用中按策略确定下一步动作,从而计算出当前时刻的发送速率。

与基于网络测量的BBR算法相比,Aurora算法所需的数据量较少,但其公平性较差,对其他TCP流过于具有侵略性,即在训练中主动学习到的动作可能包括“偶尔丢包”,而丢包行为将导致其他TCP流吞吐量下降。

2.4 Orca算法

Orca算法[10]在底层使用TCP CUBIC算法对拥塞窗口进行基本调整,同时使用深度强化学习对拥塞窗口进行更进一步的细化调整。Orca算法定义了奖励函数,如式(6),在R值达到最大时,网络拥塞状况达到最优。这一方法借鉴了Giessler等提出的以吞吐量(Throughput)与延迟(Delay)的比值定义的Power[11]指标。此外,为减小强化学习中智能体的动作空间,Orca算法还对底层算法的拥塞窗口进行了抽样并取而代之,如式(7)。

式中, 是平衡系数,用于表征吞吐量和丢包率总的影响程度;α是用于控制动作空间大小的调节系数。与单纯使用强化学习的算法相比,Orca算法的动作更具可预测性且公平性相对较好。

2.5 AUTO算法

AUTO算法[12]在环境适应性与应用目标可配置方面进行了改进,通过训练一个偏好适应模型和一个MORL智能体来实现环境适应性。其中,前者将状态序列映射为可识别的环境,并自动为每个环境选择合适的偏好;后者则负责为所有可能的偏好生成最优策略,其算法框架如图2所示。

图2 AUTO算法框架

在AUTO算法中,偏好是一个二元向量,通过此向量可以将奖励向量转变为一个标量,由此可以比较出奖励向量的大小,从而可以通过调整网络参数来实现奖励最大化。此外,AUTO算法还允许应用程序按需设置偏好,以满足多样化的应用需求,通过调整偏好实现对不同拥塞控制方案的公平性。

2.6 小结

基于强化学习的拥塞控制算法针对不同的网络环境(或者不同的应用需求)能够自适应地调整发送策略,对随机丢包和快速网络变化具有更强的鲁棒性,但同时也存在以下尚待研究的问题。一是对环境状态的采集是否足够精准,以确保学习器能做出最适合当前状态的最佳决策;二是训练时间过长,有可能导致算法决策的滞后性,如何对快速变化的网络及时做出最佳决策;三是使用诸如深度强化学习这类复杂算法进行拥塞控制时,如何保证其收敛性;四是如何保证与使用其他算法的TCP流之间的公平性。

3 结束语

随着网络技术的不断进步,未来网络环境可能更加复杂和难于预测,传统的数学建模方法所面临的困难将更加严重。基于机器学习的网络拥塞控制算法,主要依靠自学习能力来适应复杂的网络环境,虽然不能及时感知网络环境的真实拥塞状态,其行为也存在较大的不确定性和不可预测性,目前仍处于早期的研究探索阶段,但是从实用性的角度来看,可能更适合解决复杂的网络拥塞控制问题。一方面,可以采用更合适的效能函数来准确评价网络环境的拥塞状态,以及更准确地探索可用带宽,使得机器学习能够获得更逼真的训练数据,从而提高决策的精确性;另一方面,可以进一步细化拥塞窗口的调节方案及其可解释性,兼顾网络的稳定和带宽利用率,同时也可以保证各种互联网业务的服务质量。■

猜你喜欢

效用函数控制算法速率
基于模型预测控制算法的智能密度控制系统在选煤厂的应用
化学反应的速率和限度考点分析
基于Backstepping的非线性无人船航向控制算法
“化学反应的速率与限度”知识与能力提升
高精度位置跟踪自适应增益调度滑模控制算法
供给侧改革的微观基础
ABS自动优化控制算法及应用
莲心超微粉碎提高有效成分的溶出速率