摘 要:为了解决流媒体传输拥塞控制机制的不足,提出了一种基于链路延迟抖动趋势的TFRC改进算法。对传统的TFRC拥塞控制算法以及链路延迟抖动变化趋势进行了分析,采用对链路拥塞状况进行预测的策略,引入抖动因子来修正TFRC的吞吐量公式,由链路延迟抖动的趋势自适应地调整发送速率。仿真实验结果表明,改进算法在保持TCP友好性的前提下,有效提高了流媒体数据传输的平滑性和稳定性。
关键词:拥塞控制;流媒体;TFRC;TCP友好性
对流媒体数据传输的拥塞控制研究具有重要意义,在提高流媒体传输QoS中起关键性作用。随着信息化、网络化和多媒体技术的发展,网络传输的文件变得越来越大,早期将文件下载到本地再播放的方式已成为网络发展的一个障碍。在这种情形下对流媒体技术的研究成为多媒体技术领域的一个热点。流媒体业务对速率抖动和延迟的敏感特性决定了传统的TCP拥塞控制机制对它并不适用;而通常作为流媒体音视频传输层协议的UDP只能保证尽力传输,缺乏相应的拥塞控制机制,一旦发生网络拥塞,UDP与TCP竞争的不公平性可能导致TCP流的“饥饿”甚至拥塞崩溃的发生。
针对上述问题,人们通过引入类似TCP速率控制机制的TCP友好性(TCP Friendly)机制来实现流媒体数据流与TCP流共同分享可用带宽。TFRC(TCP-Friendly Rate Control)便是其中最具代表性的一种TCP友好协议。从HANDLEY M等提出TFRC尤其是2003年IETF发布文档RFC3448以来[1],众多学者以此为参考对流媒体拥塞控制算法进行了研究和改进。参考文献[2]指出TFRC在网络状况好的情况下表现得过于保守,导致带宽利用率不高,提出利用模糊逻辑拥塞控制策略(FLC)来调整视频发送速率,并用遗传算法优化模糊控制规则,以提高拥塞控制性能;但模糊化的不确定性和模糊控制规则的选取都会很大程度地对控制效果产生很大的影响。参考文献[3]提出一种基于概率偏差计算超时重传时间(RTO)的算法,以实际丢包事件概率与最优丢包事件概率之间的偏差为依据,对实时的RTO值进行放大或缩小,使其更接近当前TCP流的RTO来实现更好的TCP友好性。参考文献[4]提出对TFRC计算公式中丢包率的不同幂级引入权重系数,根据网络的拥塞程度在网络拥塞严重时加大发送速率,在拥塞较轻时减少发送速率,以保证流媒体数据传输的稳定,增加了对不同网络环境下如何来确保吞吐率稳定性的考虑。
本文在对TFRC拥塞控制机制分析研究的基础上,提出一种基于链路延迟抖动趋势的TFRC改进算法TFRC-DJT(TFRC-Delay Jitter Trend),通过对抖动延迟的计算分析,并引入抖动因子对吞吐率估值进行调整,对链路中的拥塞状况作早期的预测以提高传输的平稳度和TCP友好性。
1 TFRC拥塞控制算法
现网中数据大部分都为TCP或者UDP的流,由于受Internet异构性的影响,早期的TCP协议在网络拥塞控制方面存在许多不足。为此,对TCP协议拥塞控制的研究从20世纪80年代初开始就未停止过,从最初的RFC793(TCP-Tahoe)提到拥塞避免算法以来,TCP协议历经TCP-Reno、TCP-Vegas、FAST-TCP和TCP-New-Reno等版本,拥塞控制算法被不断改进和完善。尤其是慢启动和拥塞避免的提出,以及后来快速重传和快速恢复的引入使得TCP协议的可靠传输成为可能[5]。但与此同时,可靠传输是以牺牲时延作为代价的,较大的传输延时使其无法直接应用于许多像流媒体这样的实时性业务中。
1.1 流媒体的拥塞控制机制
传统的流媒体传输方式是基于UDP的,并不具有TCP友好性。UDP流在瓶颈链路上容易造成严重的资源不公平占用,甚至出现严重的拥塞,导致数据交付延迟、吞吐量下降以及丢弃概率增加等现象的发生。在TCP流大约占90%通信量的Internet,流媒体应用必须具备一定的拥塞控制机制来达到TCP友好性[6]。此外,流媒体数据的传输会随着网络状态的变化而改变,导致其传输状态在拥塞的起始状态和稳定状态之间不断变化,较好的拥塞控制方案还必须考虑应对网络变化时数据传输的收敛特性及传输的平稳性,以避免大幅波动。
现行的大多数流媒体应用的传输都是基于C/S和P2P这两种方式,其中,P2P的通信按端点的传输方式又可以分为单播和组播两种。组播是一种有效的单点到多点的数据传输方式,但由于缺乏合适的拥塞控制机制,而无法得到ISP(Internet Service Provisor)的广泛应用[7]。单播的拥塞控制一般都是基于源端的,可分为基于模型和基于探测两种类型。基于探测的方案通过模仿TCP的AIMD行为实现拥塞控制,发送端不断探测网络的可用带宽,将丢包率与某一阈值比较来调节发送速率;但该方法容易导致速率在短期内出现与TCP类似的锯齿形波动变化。基于模型的方案根据TCP流量模型进行拥塞控制,其目的是在对拥塞有响应的前提下,保持平滑的速率变化,因此较适合流媒体的传输。
1.2 TFRC算法
TFRC是一种基于模型、通过控制发送速率的端到端单播TCP友好协议。TFRC的目标是使流媒体数据与TCP共同竞争的网络传输流(如实时流媒体数据流)具有适度的公平性。在同等条件下,TFRC在网络中的发送速率和TCP的发送速率应基本相同;并且,通过接收端丢包率的反馈调整使TFRC具有相对比TCP更好的平滑性,更适合流媒体对发送速率平滑性有较高要求的应用[8]。TFRC一般具有固定的数据包大小,只需调整发送速率来响应当前拥塞情况。
TFRC保持对TCP友好性是通过使用Reno-TCP协议的吞吐量计算公式来实现的,即:
(1)由式(3)计算最新的延迟抖动值ΔDk,并对前一次计算的平均延迟抖动值J(k-1)进行保存操作。
(2)由式(4)计算本次的平均抖动延迟J(k)。
(3)将本次平均抖动延迟J(k)与延迟门限值threshold进行比较,如果J(k)≥threshold,则按式(5)计算吞吐量估值,即Tk=(1-α)Tx;如果J(k)<threshold,则Tk=βTx(k)+(1-β)Tx(k-1)(β取0.875)。
(4)根据计算的吞吐量估值Tk,调整发送速率。
(5)接收下一个包,并重复上述步骤,直至流媒体分组发送完成。
3 实验仿真与分析
在网络仿真软件NS-2.34下分别对TCP、TFRC和TFRC-DJT进行仿真实验,以验证改进效果。在NS2目录下添加TFRC-DJT协议(需添加5个文件:tfrc_djt.h、tfrc_djt.cc、tfrc_djt_packet.h、tfrc_djt_rtable.h和tfrc_djt_rtable.cc),修改makefile文件,并用make重新编译NS2。仿真实验采用哑铃型的网络拓扑结构,如图1所示。
由表1可知,TFRC算法的TFRC流与共存的TCP流的吞吐率比值为2.15,TFRC-DJT算法的TFRC流与共存的TCP流的吞吐率比值为2.13,表明TFRC-DJT算法较好地保持了对TCP业务流的友好性;TFRC算法的带宽占用率为68.3%,TFRC-DJT算法的带宽占用率为68.1%,两者具有相似的带宽占用率;但TFRC-DJT算法的单向传输延迟抖动均值比TFRC算法下降了13.97%。
从图2可以看出,TFRC-DJT算法的TFRC流吞吐率及其平滑性均优于TFRC算法。
本文针对TFRC存在的不足提出了一种基于链路延迟抖动趋势的TFRC改进算法,算法对链路中的拥塞状况进行预测,引入抖动因子对TFRC吞吐量公式进行修正,利用链路延迟抖动趋势来调整发送速率,并使用类似TCP的加权平均方案来提高其平稳性,在保持TCP友好性的同时提高了流媒体数据传输的平滑性,使改进的TFRC算法更适合于实时流媒体业务传输的要求。
参考文献
[1] HANDLEY M, FLOYD S, PADHYE J, et al. RFC 3448, TCP friendly rete control(TFRC):protocol specification[S].2003.
[2] 李红,沈未名.基于模糊逻辑的Internet视频流拥塞控制[J].计算机应用研究,2009,26(5):1871-1874.
[3] 罗作民,王竟佳,李兵.基于概率偏差的TFRC-RTO算法[J].计算机工程,2010,36(21):92-94.
[4] 姜明,吴春明,张旻,等.TFRC协议友好性与平稳性改进算法研究[J].电子学报,2009,37(8):1723-1727.
[5] 陶洋,杜军恒,武俊.一种自适应比例系数的TCP拥塞控制策略[J].微型机与应用,2011,30(12):58-62.
[6] 肖甫,王汝传,孙力娟,等.基于TCP友好的无线网络拥塞控制机制研究[J].计算机科学,2010,37(7):50-53.
[7] 杨云,周坚,陆璐,等.一种TCP-Friendly主动分层组播拥塞控制机制[J].小型微型计算机系统,2007,28(10):1774-1778.
[8] 甘泉,薛质.控制端到端传输延迟抖动的改进TFRC算法[J].计算机工程,2008,34(10):105-107.
[9] 张冰.流媒体业务的宽带接入与拥塞控制技术研究[D].西安:西安电子科技大学,2008.