APP下载

一种基于连续统计估计的源端拥塞控制方法

2018-09-26曹瑞娟

计算机应用与软件 2018年9期
关键词:实时性传输速率控制算法

曹瑞娟 邢 凯

1(中国科学技术大学软件学院 江苏 苏州 215123)2(中国科学技术大学计算机科学与技术学院 安徽 合肥 230026)

0 引 言

中国信息通信研究院(CAICT)最新的中国互联网络发展状况统计报告表明,截至2017年12月,我国互联网规模已激增至7.72亿人,互联网普及率高达55.8%[1]。而且CAICT最新的互联网发展趋势报告指出,移动互联网用户数量以超过20%的年增长率递增[2]。思科(Cisco)的统计分析报告指出互联网游戏、虚拟现实(VR)和虚拟增强技术(AR)应用、视频监控等实时通信应用未来五年内将增长10~20倍[3]。然而宽带发展联盟发布的中国宽带速率状况报告数据表明,我国互联网用户中达到2 M带宽标准的用户比率只有16.5%,4 M带宽标准的用户比率只有8.8%[4]。多个统计分析报告[1-4]表明,互联网用户和网络应用规模的递增,导致网络负载与网络承载能力之间的冲突更加严峻。

由于网络基础设施承载能力的有限性,当传输所需带宽超过链路可用带宽时,网络将会产生拥塞。Google最新研究表明,当前网络拥塞控制算法对链路传输带宽及其波动性的估计仍有较大优化空间[12]。随着网络负载的进一步增加,拥塞现象愈加严重。网络拥塞会导致网络性能下降(延迟加大、丢包严重等),甚至造成网络拥塞崩溃[5]。在传输过程中,若不能实时有效地检测拥塞现象,并即时调整,会不断拥塞,加剧网络需求和负载能力间的冲突。所以在传输过程中进行实时有效的拥塞控制,是解决用户网络需求和网络承载能力之间冲突的关键。传统拥塞控制算法[6-7,9,11]是基于拥塞信号检测的拥塞控制方法,主要包括基于丢包的拥塞控制、基于延迟的拥塞控制和混合式拥塞控制。

基于丢包的拥塞控制算法[6-8]主要依据反馈的丢包情况进行拥塞控制。这类算法是被动式的拥塞控制机制,不能及时地检测拥塞,调整过程也缺乏实时性。一方面,在网络带宽接近饱和时,只要尚未产生拥塞丢包,便不会主动降低发送速率,在最大程度上利用网络剩余带宽的同时会加剧网络的抖动性。另一方面,会把非链路丢包误认为拥塞信号,过于保守地降低速率,导致带宽利用率低。

基于延迟的拥塞控制算法[9-11]主要通过延迟估计网络带宽来进行拥塞控制。由于TCP传输协议固有的面向连接、ACK反馈、丢包重传机制等属性,TCP在保证数据包的顺序性和可靠性的同时,会加大网络传输延迟。这类算法以延迟估计带宽,会降低拥塞检测的有效性。所以它们往往会低估链路带宽,造成带宽利用率和数据传输效率过低,在与基于丢包的数据流共享瓶颈带宽时,会因为缺乏竞争力而导致带宽分配的不公平。

混合式拥塞控制算法[12-16]通过结合丢包、延迟等多种因素,估计网络状况进行拥塞控制。但是这类算法主要适用于稳定性强的网络环境。因为它们无法解耦丢包、延迟等链路状况指标,拥塞检测过程中参照的多种因素间会相互影响。当网络状况发生较大波动时,难以准确地估计网络状况,对拥塞现象不能做出实时有效的调整。

还有一些拥塞控制算法[17-20]不依赖任何拥塞信号。例如Sprout[20]在接收端观察数据包到达的时间间隔,使用概率论来推测链路的瓶颈带宽,反馈给发送端,进行发送速率的调整。因为发送端和接收端的固有延迟,导致反馈的调整结果严重缺乏实时性。而且这种算法在网络环境发送重大变化时,对瓶颈链路带宽的预测会产生较大误差,难以有效地进行拥塞控制。Remy[17]、Verus[18]和PCC[19]等算法采用机器学习和探测的方法,针对不同的网络状况调整发送速率。但是当学习结果与真实环境存在显著差异时,算法的有效性会大幅度下降。而且PCC算法面对网络环境的变动收敛速度慢,造成拥塞控制的实时性较差。

为了提高拥塞控制的实时性和有效性,本文提出了一种基于连续统计估计的源端拥塞控制方法。基于网络延迟和丢包的正态性[21-22],采用统计检验方法[34-35,37-38],针对不同网络状况对链路传输带宽及其波动性进行较为实时和准确的估计。该方法添加了异步ACK反馈机制,在一定程度上解耦延迟、丢包和速率对网络拥塞的影响。基于对链路传输状况的在线连续统计估计,针对不同网络状况,对不同指标进行调整,实现实时有效的拥塞控制。

本文的关键贡献如下:

(1) 提出了一种针对链路传输状况的在线连续统计估计方法,针对不同网络状况能够对链路传输带宽及其波动性进行较为实时和准确的估计。

(2) 提出了一种基于源端的实时拥塞控制方法,初步实现了网络传输中对于丢包、延迟和传输速率这三个关键指标一定程度上的解耦,在不同网络状况下实现实时有效的拥塞控制,同时保证公平性。

(3) 实验证明,该方法在吞吐速率、丢包容忍、延迟相比已有的拥塞控制算法如Reno、Cubic以及BBR有显著提升。

1 相关工作

很多研究表明,网络拥塞控制是网络传输层检测和控制网络拥塞的重要方法[23-25]。Yang和Reddy将拥塞控制分为拥塞避免(开环拥塞控制)和拥塞恢复(闭环拥塞控制)两种[26]。其中拥塞避免策略本质上是预防性的,目的是合理分配资源,降低网络拥塞的发生率;而拥塞恢复的目标是在拥塞发生后将网络恢复到正常状态。由于传输过程中网络状况的多变性,单纯的拥塞避免策略往往难以有效地避免拥塞,所以拥塞控制的重点是在传输过程中采用闭环策略,动态地检测拥塞情况,并以此进行拥塞控制。

经典的拥塞控制算法主要包含基于丢包的拥塞控制算法、基于延迟的拥塞控制算法和混合式拥塞控制算法[23]。基于丢包的拥塞控制算法以Reno[6]和Cubic[7]为代表,以拥塞作为拥塞信号,在传输过程中检测到丢包情况后通过调整发送窗口的大小来规避拥塞。但它们收敛于一个逻辑滞后的收敛点,尚未出现丢包时会不断填充缓冲区,使缓冲区长期保持过满状态,间接加大网络丢包率,加剧整体网络的抖动。而在存在一定错误丢包率的长肥管道[41]中,会收敛于很小的速率,无法有效利用网络带宽,会造成带宽的闲置和浪费。基于延迟的拥塞控制算法如Vegas[9]、Fast TCP[10]等,使用延迟作为拥塞信号,比较实际吞吐速率和期望吞吐速率,估算网络的可用带宽,调整拥塞窗口大小来实现拥塞控制。很多拥塞控制算法也使用类似估计带宽的方法[11,13]。但是这类方法在与基于丢包的数据流共享瓶颈带宽时,会因为缺乏带宽竞争力而导致带宽分配的不公平。此外,如果网络中已经存在数据流或者已经拥塞,新加入的数据流会检测到比真实值更小的延迟,进而夺取更多的带宽分配。

为了解决带宽利用率低和带宽分配不公平的问题,很多混合式拥塞控制算法结合丢包、延迟等多种链路传输状况评估指标进行拥塞控制[12-16]。TCP-Africa[16]、Compound TCP[13]和HCC TCP[15]都是基于丢包和延迟的拥塞控制算法,保持速率提升的激进性与公平性之间的平衡。TCP-fusion[14]是基于丢包、延迟和可用带宽估计的拥塞控制算法,结合WestWood[11]的带宽测量和Vegas[9]的网络缓存预测机制,通过动态调整发送速率来控制拥塞。Cardwell等[12]假设并验证了丢包与网络拥塞的弱相关,提出了基于瓶颈带宽的和往返时间乘积(BDP)的拥塞控制算法BBR。BBR通过估计瓶颈带宽和往返传输时间判断拥塞情况,以最大化吞吐速率和最小化延迟为目标进行拥塞控制。但是这种机制在特定场景下容易造成激进加速、排队延迟增加、大量丢包重传等问题[40]。

此外,还有一些拥塞控制算法[17-20]实现网络拥塞控制过程不依赖于任何拥塞信号。例如,基于链路容量预测的Sprout拥塞控制算法[20],并没有在发送端进行拥塞控制,而是在接收端通过观察数据包到达的时间间隔,采用概率论相关方法推测链路带宽,然后将该预测值反馈给发送端。该算法在抖动性比较大的网络环境中,对瓶颈链路带宽的预测会产生较大误差,进而导致算法性能大幅下降。还有一些基于机器学习的拥塞控制算法,如Remy[17]、Verus[18]等。这些算法没有设置特定的拥塞信号,而是借助评价函数,使用学习或探测的方法生成一组网络状况到调节方式的映射。在真实环境中根据当前网络状况直接选取对应的调节方式进行拥塞控制。但是这种控制算法依赖于大量数据的训练结果,当真实网络情况有所差异时,算法的有效性会大幅度下降。PCC[19]是面向性能的网络拥塞控制算法,发送端在传输过程中持续观测发送速率与传输性能之间的关系,基于效用函数进行发送速率的优化,不断提高网络传输性能。该算法面对网络环境的变动时算法收敛速度较慢,造成网络传输性能下降,在一定程度上会加剧网络拥塞情况。

为了解决当前拥塞控制算法的瓶颈问题,提高拥塞控制的实时性和有效性,本文提出了一种基于连续统计估计的源端拥塞控制方法。通过对链路传输状况的在线连续统计估计,对链路传输带宽及其波动性进行实时估计,并在一定程度上对网络丢包、延迟和速率进行解耦。然后基于链路传输状况的估计结果,对不同指标进行调整,实现实时有效的拥塞控制,同时保证公平性。

2 链路传输状况的连续实时统计估计

本节主要阐述对链路传输状况的连续实时统计估计方法。在传输过程中,发送端通过接收端实时反馈的ACK包,实时计算数据包的往返传输时间,采用统计检验方法,对链路延迟波动性、丢包趋势、及其传输速率变化趋势进行实时估计。

2.1 链路延迟波动性的实时统计估计

理论证明链路延迟的波动对链路整体传输速率有极大的影响,即使只有小部分数据包延迟过大,链路整体的性能也会下降[33]。所以在传输过程中,对延迟波动性进行实时估计,是保证链路传输的低延迟,提升链路传输速率的关键。

在网络传输过程中,发送端通过接收端的实时反馈得到对应数据包的往返延迟。设置一个固定的统计窗口,滑动性地对每个统计窗口内的往返延迟序列进行统计分析。基于链路传输过程中往返延迟的正态分布的性质[21],分别统计每个统计窗口的方差,其反映统计窗口内往返延迟的波动性。而且通过对滑动窗口对应的往返延迟序列进行连续统计检验,可以实时分析网络延迟的变化趋势。

2.2 丢包趋势的实时统计估计

正态分布的3σ准则[28]表明在符合正态分布的一组数据中数值分布在(μ-σ,μ+σ)范围内的概率为68.27%,数值分布在(μ-2σ,μ+2σ)范围内的概率为95.45%。基于网络延迟的正态性[21],理论上可以得出:约50%数据包的往返延迟不超过μ,68%数据包的往返延迟在(μ-σ,μ+σ)范围内,95%数据包的往返延迟在(μ-2σ,μ+2σ)范围内。所以以固定数量数据包为统计周期,以周期内中间位置数据包的发送时间为基准,在传输过程中连续性地统计本周期内接收到50%、68%、95%数量反馈包的时刻与基准发送时刻的时间差t50、t68、t95。然后与理论值μ、μ+σ、μ+2σ进行对比。通过统计检验方法分析实际时间序列和理论时间序列的分布差异性。本方法采用非参数检验中的卡方检验[29]来量化两者的差异性,该卡方检验公式如下:

(1)

式中:xi为实际值,这里指各周期内的t50、t68、t95;mi为理论值,即每个统计周期内收到50%、68%、95%数量反馈包时的理论时间μ、μ+σ、μ+2σ;k表示样本区间的大小,X2表示实际值与理论值之间的偏离程度。

实验证明:实际时间序列和理论时间序列的偏差情况与丢包率之间存在正相关关系。如图1所示,当实际时间序列和理论时间序列的偏差情况小于10%时,丢包率基本为0;反之,随着两者偏差情况的增大,丢包率会逐渐变大。所以根据实际时间序列和理论时间序列的偏差情况(如卡方检验结果),可以有效估计出丢包概率及趋势变化情况。

图1 时间序列偏差情况与丢包率的关系图

2.3 吞吐速率变化趋势的实时统计估计

经典的Mathis公式表明RTT和吞吐速率之间存在一定的负相关关系[27],如图2所示。所以通过对延迟变化趋势的实时统计检验,可以估计吞吐速率的变化趋势,其在检测网络拥塞时起到重要作用。当网络出现拥塞情况时,排队队列长度会超过缓冲区容量,接下来传输的数据包将会遇到大的排队延迟。那么通过对网络延迟的统计分析,可以推测出吞吐速率的变化趋势,并以分析当前的链路传输状况,进而对拥塞现象进行检测和控制。

图2 吞吐速率与RTT的关系图

3 基于连续统计估计的源端拥塞控制

基于连续实时统计检验对链路传输状况的实时统计估计,本文提供了一种基于连续实时统计估计的源端拥塞控制方法,有效地解耦丢包、延迟和传输速率对网络拥塞的影响,实现实时有效的网络拥塞控制。

3.1 丢包、延迟和速率的一定程度解耦

为了提高拥塞控制在不同网络状况下的有效性,避免对拥塞的控制影响其他指标,造成网络的波动性,本方法主要通过Erasure Code和异步ACK反馈机制来解耦丢包、延迟和传输速率对网络拥塞的影响,在不同网络状况下对不同指标进行针对性调整,实现实时有效的拥塞控制。

3.1.1 基于Erasure Code的解耦设计

本方法通过Erasure Code技术[30]实现链路丢包、延迟和传输速率的一定程度上的解耦。如图3所示,其基本原理是将若干相同大小的数据包通过矩阵运算产生一定数量与原始数据相关的冗余数据块。采用基于Cauchy矩阵的快速Reed-Solomon纠删码[31],理论上能够提供18.75%的丢包容错率。

图3 Erasure Code编码示意图[30]

通过Erasure Code编解码,在传输过程中只要丢失数据包的数量不超过冗余数据包的数量即可还原出完整数据,能在一定程度上解耦丢包。而且在N个数据包组成的一组数据包中,接收端不必等到全部数据包到达,只需收到提前到达的K个数据包,即可还原整组的原始数据包,减少了整组数据包的延迟,在一定程度上解耦网络延迟。

3.1.2 基于异步ACK反馈机制的解耦设计

为了解决TCP传输协议固有属性(面向连接、ACK反馈、丢包重传机制等)对传输速率的影响,提高网络拥塞控制方法的实时性和有效性,本文在传输层采用非面向连接的UDP协议进行传输,添加基于异步ACK反馈的可靠传输机制,减少传输过程中的延迟。在发送端和接收端通过并行队列[32]实现高性能无锁并行访问,尽量将所有线程间队列延迟最小化,进一步减少非传输过程的延迟。同时,摒弃传输层的丢包重传和ACK反馈等可靠传输机制,通过异步ACK反馈机制实现可靠传输,解耦丢包对传输速率的影响。综上所述,异步ACK反馈机制能进一步在一定程度上解耦丢包、延迟和传输速率。

3.2 基于分布一致性检验的源端拥塞检测

本文第2节中提到,通过在传输过程中发送端对链路指标的连续实时分析,运用统计检验方法,可以对链路延迟波动性、丢包趋势及其传输速率变化趋势进行实时估计。通过对链路传输状况的连续实时统计估计结果,可以在发送端对链路拥塞情况进行实时检测。

3.2.1 基于延迟分布的源端拥塞检测

理论证明延迟的波动性对链路的整体性能有着重大影响[33],而且链路延迟和吞吐速率之间存在一定的负相关关系[27],所以,通过对延迟分布的在线统计检验,可以对拥塞情况进行检测。本方法在传输过程中,通过实时监测链路延迟变化趋势来推测链路传输状况,保持低延迟,避免传输过程中因延迟过大造成链路拥塞,从而解耦延迟对整体传输速率的影响。

如图4所示,基于网络延迟的正态性[21],对前后延迟序列进行连续性统计检验。间歇性地统计每段延迟序列的中位数和方差,得到对应的中位数序列和方差序列。其中中位数序列可以平滑一些意外突变的网络延迟,体现每段延迟列的基本水平;方差序列可以衡量每段延迟序列的波动情况,反映网络延迟的波动性。

图4 延迟序列分析示意图

首先通过对当前方差序列的连续性统计,分析目前网络延迟波动情况,避免大的波动造成网络拥塞。如图5所示,逐步判断当前方差序列的均值是否与之前多个方差序列的均值是否有显著差异。若判断出当前方差序列与以前的方差序列存在显著差异,即证明当前网络出现了比较大的延迟波动,需要降低发送速率,避免造成更大的链路波动。

图5 方差序列分析图

然后进一步对中位数序列进行分布一致性检验。如图6所示,对当前中位数序列与之前的中位数序列进行前后状态的一致性检验,从而分析中位数的前后变化情况。设置零假设H0为两个样本无显著差异,然后采用假设检验方法进行两个独立样本的一致性检验[34-35,37-38]。将检验结果的p值与选定的显著性水平进行对比[36]。若p值比选定的显著性水平更小,则拒绝零检验,证明前后中位数序列存在显著性差异,否则无显著差异。若中位数序列前后无显著差异,证明当前网络延迟没有发生显著变化,可以提高发送速率。

图6 中位数序列分析图

3.2.2 基于丢包趋势估计的源端拥塞检测

如本文2.2节所述,通过传输过程中的实时连续统计可以有效估计丢包趋势。多种基于丢包的拥塞控制算法[6-8]表明,丢包是个明显的拥塞信号,可以通过估计丢包趋势检测链路拥塞情况。

本方法基于两个相似度阈值a、b,对本文2.2节中提到的实际时间序列和理论时间序列的卡方检验值进行双边检验[39]。当卡方检验值小于等于a时,则证明没有丢包趋势;大于等于b时,则证明有丢包趋势;介于两者之间时则继续累计观察,估计丢包趋势。

本拥塞控制方法通过对延迟分布情况进行统计检验,估计链路传输过程中的丢包趋势,若检测到丢包趋势,则证明链路中存在一定程度的拥塞,需要进行拥塞控制。

3.3 源端拥塞控制方法

当源端检测到链路的拥塞后,需要进行实时的拥塞控制,避免加剧链路拥塞。

3.3.1 源端拥塞控制原理设计

本拥塞控制方法的基本策略是基于一个初始化的发送速率,在传输过程中实时调整发送速率进行链路拥塞控制。

为了使整个拥塞控制过程基于一个相对合理的发送速率,需要在发送数据包之前通过测试包进行初始化。首先连续发送100个数据包作为测试包,接收端每当收到一个数据包均反馈一个ACK,发送端收到ACK后估计出即时带宽。然后取所有即时带宽的中位数作为实际数据包发送的初始速率。

通过连续实时的在线统计检验,可以检测出链路传输过程中的实时拥塞情况。理论证明,网络拥塞往往是由于源端带宽远大于链路瓶颈带宽引起的[5]。所以拥塞控制的主要策略是在检测到链路拥塞后,即时降低发送速率,以免较高的发送速率继续增大链路负载,避免加剧链路拥塞。而且,为了提高拥塞控制的实时性,在速率调整过程中需要注意以下两点:在提高发送速率的时候需要减少激进性;在检测到链路拥塞后需要及时降低发送速率,避免加剧拥塞情况。

3.3.2 源端拥塞控制算法

根据源端拥塞控制的原理设计,在传输过程中,需要周期性地根据链路传输状况实时估计发送速率,并以此作为调整过程中的参照发送速率。如算法1所示,当需要提高发送速率时,以1.25倍的速率梯度递增发送速率,避免紧急加速造成的网络抖动;当需要降低发送速率时,为了避免更大的网络拥塞,以自然对数e的倒数1/e为递减因子进行递减。若减速后的速率小于实时统计出的参照发送速率,则以1/2的递减因子递减,若递减后仍然小于参照发送速率,则最终以参照速率为准。

4 实验分析

为了证明本拥塞控制算法的有效性和实时性,在不同地区的不同Linux服务器间进行多次实验评估。首先在不同时间段和不同网络状况下运行本方法,测试其拥塞控制效果;然后与已有的经典拥塞控制算法Reno、Cubic和BBR在相同环境下进行实验对比。本节主要从性能、实时性和公平性三方面对本方法进行整体分析。

4.1 实验环境

本方法的主要关注指标是吞吐速率、丢包率和延迟波动情况,当延迟和吞吐速率存在冲突时,通过牺牲少量吞吐速率的代价来保持较低的延迟,以免过大的延迟加剧网络拥塞。所以在实验中基于关注指标,观察传输过程中的吞吐速率、丢包率和延迟波动情况。其中接收端以10 ms为周期统计吞吐速率和丢包率,发送端实时统计延迟波动并记录发送速率调整过程,分析网络速率调整的即时性。

本节实验一律采用以下参数:传输过程中数据包大小均设置为512 B;Erasure Code编解码比例设置为13∶16,即对13个原始包进行Erasure Code冗余编码,得出3个冗余包,最终形成包含16个数据包的数据组。

4.2 性能分析

为了体现本拥塞控制方法对链路传输性能优化的效果,本文从吞吐速率、延迟、丢包三个方面对算法性能进行评估。

4.2.1 吞吐速率的性能分析

为了评估本拥塞控制方法对吞吐速率的提升效果,在相同的实验环境下运行已有的Reno、Cubic、BBR拥塞控制算法和本方法。在不同时间段、不同网络环境下重复多次实验,持续记录网络吞吐速率。统计多组实验结果,对吞吐速率进行整体分析对比。

为了直观地体现本方法对吞吐速率的提升效果,实验分别分析统计Reno、Cubic、BBR和本方法在相同时间周期内吞吐速率的变化情况。如图7所示,发现本方法吞吐速率均大于另外三种拥塞控制算法,比BBR整体提升接近20%的吞吐速率。

图7 吞吐速率对比图

为了更加清晰全面地表现吞吐速率提升效果,绘制了四种拥塞控制方法下吞吐速率的概率分布曲线。如图8所示,本方法的吞吐速率均值大于另外三种算法,说明本方法对吞吐速率有着比较显著的提升效果。但是数据表明本方法的方差也大于另外三种算法,即吞吐速率波动性偏大。经多次实验分析得出:吞吐速率波动性大主要由于发送速率调整的实时性引起的。本方法在传输过程中会针对多变的网络状况进行频繁地调整,势必造成吞吐速率方差偏大。

图8 吞吐速率分布对比图

为了进一步分析本方法在大文件传输方面对传输速率的提升效果,在同样的网络环境中,分别基于FTP、TCP(Reno、Cubic、BBR)Socket和本方法传输100 GB的大文件,分析其传输过程中的平均传输速率。如图9所示,本方法的平均传输速率均明显高于FTP和TCP。综合实验证明,本拥塞控制方法在提升吞吐速率方面具有较好的性能。

图9 平均速率对比图

4.2.2 延迟的性能分析

为了评估各拥塞控制方法对延迟的影响,本文主要利用传输过程中连续实时统计的RTT序列来体现网络延迟。如图10所示,本方法能够持续性地将网络延迟控制在70 ms以内,明显小于Reno、Cubic、BBR拥塞控制算法的网络延迟。而且从图11所示的网络延迟分布图中可以看出,本拥塞控制方法比另外三种拥塞控制算法的延迟波动性更小。综合实验证明,本方法在降低延迟及其波动性方面具有较好的性能。

图10 延迟对比图

图11 延迟分布对比图

4.2.3 丢包容忍的性能分析

如3.1节所述,本方法采用Erasure Code技术来解耦丢包,该技术可以平滑传输过程中的小概率丢包情况,提供10%~20%的丢包容错率。理论上在发送端以K∶N的比例对原始数据包进行冗余编码,接收端只需要收到N个数据包中的任意K个数据包,即可完整还原原始数据包。为了评估Erasure Code对网络丢包的解耦效果,以是否运用Erasure Code编解码为对照条件,进行多次对照实验。在发送端模拟设置不同的丢包率,在接收端周期性统计丢包率。最后对多次实验结果进行统计分析。如图12所示,运用Erasure Code编解码明显降低了最终的丢包率。当原始丢包率小于10%时,通过Erasure Code可基本还原数据包,解码后的最终丢包率基本为0;当原始丢包率在50%以内时,可以降低50%的丢包率,很大程度上减少了丢包重传的过程,提高整体传输效率。综合实验证明,本方法在解耦丢包方面具有较好的性能。

图12 丢包容忍的性能效果

4.3 实时性分析

实时性是拥塞控制方法极其重要的性质,即在传输过程中检测出网络拥塞后能及时做出调整,实时有效地实现网络拥塞控制。所以在实验分析阶段,需要对网络拥塞控制的实时性进行重点评估。

为了全面地对网络拥塞控制的实时性进行评估,在不同实验环境下进行多次实验,记录各种网络抖动状况下发送速率调整过程的数据,综合分析本方法对网络拥塞的检验和控制的实时性。

本文主要通过RTT序列的连续实时变化情况,分析本方法拥塞控制的实时性。如图13所示,下半部分对应的发送速率的调整方式(1表示增加发送速率,-1表示降低发送速率,0表示发送速率不变),上半部分对应实时的RTT数据。从网络延迟和发送速率调整对比图可以看出,前期持续加速,造成延迟持续增加。针对这种情况,本方法通过连续统计检测,检测出延迟的剧烈变化,随即进行大幅度地减速,抑制了延迟增大趋势。后半部分由于延迟整体处于较高水平,导致丢包率变大。该算法能在调整过程中通过频繁减速行为规避拥塞,避免持续大规模丢包。

图13 本方法的拥塞控制过程

4.4 公平性分析

为了评估本拥塞控制方法的公平性,设置如下的对照实验:在同一链路中同时运行两个并行数据流a和b,周期性记录两个流的吞吐速率。其中对照组中数据流a和b均运行标准TCP协议;实验组中数据流a运行标准TCP协议,数据流b运行本方法。通过对两组实验中数据流a吞吐速率分布的一致性检验,评估本方法的公平性。

通过不同时间段、不同网络环境的多次实验,分别周期性地计算对照组和实验组中a、b数据流的吞吐速率。如图14所示,对照组中a、b数据流均采用标准TCP协议,两者的吞吐速率均集中于200 Mbit/s以内。如图15所示,实验组中数据流a运行标准TCP协议,数据流b运行本方法,发现数据流a的吞吐速率也集中于200 Mbit/s以内。

图14 对照组中a、b数据流的吞吐速率图

图15 实验组中a、b数据流的吞吐速率图

为了准确判断在不同拥塞控制方法的数据流并行时,a的吞吐速率是否发生显著变化,通过假设检验分析两组实验中a的吞吐速率的一致性。采用Mann-Whitney U检验[37]分析两个独立样本数据分布的一致性,U检验的p值为0.147,大于0.05,证明数据流a在对照实验中的吞吐速率无显著性差异。

综合实验分析,本方法在与标准TCP协议并行时,主要利用链路中的闲置带宽,不会抢夺式占用带宽,影响链路中标准TCP协议数据流的传输速率。以此得出,本方法和标准TCP协议在相同网络环境中都能得到较好的公平性。

4.5 实验分析总结

以上实验证明,本方法能在一定程度上解耦丢包、延迟和速率,基于对链路传输状况的连续实时统计估计,对链路拥塞情况进行实时检测和即时控制,在丢包容忍、吞吐速率提升、降低延迟及波动性方面都具有较好的性能,而且保证良好的实时性和公平性。

5 结 语

本文提出了一种基于连续统计估计的源端拥塞控制方法。通过链路传输状况的在线连续统计估计方法,针对不同网络状况能够对链路传输状况进行较为实时和准确的估计。在传输过程中基于对网络状态的连续实时统计估计,结合Erasure Code技术和异步ACK反馈机制,初步实现了对于丢包、延迟和传输速率一定程度上的解耦,并在不同网络状况下实现实时有效的拥塞控制。实验结果表明,本方法在丢包容忍、吞吐速率提升、降低延迟及波动性方面都具有较好的性能,而且保证良好的实时性和公平性。

目前的工作主要集中在单链路源端拥塞控制方法的研究,评估实验也仅仅涉及到发送端和接收端。然而当发送端和接收端中间涉及到转发端,或者在多链路的情况下,本方法是否能够继续有效地发挥优势作用,暂时还无从考证。下一步,我们将会将本文的拥塞控制方法应用于多路径网络链路上,结合路由转发、流量分配等原理,实现多路径环境下的拥塞控制。

猜你喜欢

实时性传输速率控制算法
基于模型预测控制算法的智能密度控制系统在选煤厂的应用
基于Backstepping的非线性无人船航向控制算法
三星利用5G毫米波 实现创纪录传输速率
航空电子AFDX与AVB传输实时性抗干扰对比
夏季滨海湿地互花米草植物甲烷传输研究
计算机控制系统实时性的提高策略
ABS自动优化控制算法及应用
基于非线控制算法的三相感应异步电机设计
可编程控制器的实时处理器的研究
数据传输速率