广域网环境下媒体文件传输性能提高方案的研究
黄浩程 颜金尧
(中国传媒大学计算机与网络中心,北京)
摘要 近年来,全球联系越来越紧密,各大主流媒体纷纷在海外建立分部以获取第一手的新闻素材,媒体文件的长距离传输越来越频繁。随着网络基础建设与物理传输技术的不断改善,网络特性朝着长时延高带宽的方向发展。然而在传输协议上仍以传统的TCP协议为主,由于TCP协议设计之初是以传输公平性作为首要原则的,传输效率是次要的[9],直接把传统TCP协议应用在新型的网络环境中难以达到良好的性能。因此针对长时延高带宽的广域网环境下地媒体文件传输进行优化有着深远而重要的意义。在本文中,我们首先对简要分析传统TCP传输算法在新型网络环境中出现的缺陷及原因,然后重点介绍了我们对广域网环境下媒体文件传输提出的几种优化方案,并通过实验实践分析对比各种方案的优缺点。关键词 广域网 TCP 媒体文件传输 优化传输控制协议TCP在长肥网络下的缺陷
随着互联网的发展,全球合作越来越紧密,各种媒体利用广域网进行媒体交换越来越频繁。由于地域的扩大, 往返时延越来越长,而随着网络基础建设和传输技术的不断提高,网络带宽也逐步增加,这样的网络被称为长肥网络(LFNs, Long Fat Networks)或者高速网络(High Speed Networks)。目前在广域网中,传输协议仍以传统的TCP传输控制协议为主,然而TCP协议并不能在长肥网络中充分的利用网络资源,原因有以下几个方面:1.目前最为广泛使用TCP拥塞控制协议是RENO[1,2],其核心是采用AIMD(additive increase and multiplicative decrease)机制,往返时延(RTT)是拥塞窗口的一个非常重要的参数:在慢启动阶段,每经历一个RTT,窗口大小增长一倍,速率随着增长一倍。而在拥塞避免阶段,每经历过一个RTT后,拥塞窗口值只会加1。所以往返的时间越长,拥塞窗口的增长就会越慢,达到理想带宽的速度越慢, 网络带宽会在长时间内无法得到充分利用。有研究人员曾做过实验[3],在带宽为10Gbps,时延为100ms的网络环境下,利用传统TCP传输算法需要花近1个小时的时间才能充分利用带宽资源,这样的效率显然是难以接受的。2.传统的TCP算法中检测丢包的方法是以确认交换为基础的,发送端至少需要花一个RTT的时间来确认包是否丢失并进行重传。在长肥网络中,较大的时延,意味着当发送端发完由拥塞窗口限制的数据包后,需要花更长的时间来等待数据包确认,然后再进行下一阶段的传输,而在等待过程中是没有数据发送的。3.按照传统TCP拥塞算法的理论,网络丢包被看做是网络发生拥塞的一个重要潜在标志,在传统的拥塞算法中,每次发生丢包时,发送端会把拥塞窗口减少一半,传输速度就会减半[7]。在长肥网络中,即使在理想的情况下,当速度达到带宽瓶颈时就会出现丢包,速度减少一半,由于时延长,需要很长时间才能恢复到较高的速率。而且在现实情况中长肥网络通常经过的网络节点较多,网络状态不稳定,数据包容易受到干扰而丢包,但此时并没有发生拥塞,按照算法统一把速度减半,会浪费较多的网络资源。4.按照传统的TCP拥塞算法,对每个数据报文都设定一个定时器(RTO)[2],当超过RTO后仍然没有收到应答报文,则认为链路已经发生了拥塞,TCP会把窗口值设为1重新进入到慢启动的状态。但在实际的情况中,互联网中路由变换较多,导致时延变化较大,容易引起由于时延变大而引起的应答报文超时,导致了TCP的传输效率严重下降。传输性能提高方案与实现
1、多TCP连接
为了减少因为时延长导致发生拥塞时,发送端需要较长时间恢复的影响,我们可以采用多TCP连接的方式。把要传输的内容进行分段传输,建立多个TCP连接同时进行传输,使得总的传输速率能达到一个较高的水平。我们做了一个仿真实验作为对比:利用dummynet建立两个节点的网络环境,链路带宽为100mbps,RTT为200ms,分别用一个和3个TCP连接传输1GBytes的媒体文件,我们可以看到,使用一个连接时,在47秒时,传输速率从92mbps下降到46mbps,发生了拥塞,然后缓慢上升,直到传输结束,仍然没有恢复到原来的速率,整体平均速率只有70mbps左右(图1)。图1 传统TCP 单连接传输
当使用3个连接同时传送时,总体速度较为稳定,并没有出现突然减半的情况,平均速度达到了93mbps(图2),传送效率有了较大提升。图2 传统TCP 3个连接同时传输
2、优化传输参数
为了能充分利用链路带宽,优化的传输缓存值应为能填充满整个链路管道[4],即:Buffer Size = BandWidth * RTT在传统的TCP传输中,传输缓存由传输拥塞窗口限定。但目前大多数主流的操作系统中TCP的初始窗口值只有8KB~32KB,最大的窗口值默认也只有64KB~128KB[4],受限于以上的窗口值设定,在长时延下要花较长时间才能增长到合适的传输缓存,甚至永远也达不到最优的窗口值。针对这种情况,我们可以通过改变操作系统中TCP的传输参数以提高传输效率。我们可以利用socket的标准函数setscokopt来对TCP传输参数进行设定,如下:设定发送端的发送缓存setsockopt(SOCKET *sock, SOL_SOCKET, SO_SNDBUF, (const char*) send_buff, int len)设定接收端的接收缓存setsockopt(SOCKET *sock, SOL_SOCKET, SO_RCVBUF, (const char*) recv_buff, int len)通过以上函数对建立TCP连接的socket进行调整,我们可以依据链路的实际情况分别设定发送缓存及接收缓存,以达到调优的效果。同样我们通一个仿真实验来进行观察:利用dummynet建立两个节点的网络环境,链路带宽为100mbps,RTT为200ms,传送1GBytes的媒体文件,采用系统默认值传送时,平均速率只有70mbps左右(图1),我们通过上面的函数把发送端和接受端的缓存都设定为4Mbytes后,平均速率能达到73Mbps(图3),传输效率有一定的提升。图3 传统TCP单连接,接收端与发送端的缓存为4Mbytes
3、高速TCP
针对目前传统的TCP协议在长肥网络中存在的问题,研究人员提出了许多高速TCP的拥塞算法。新的拥塞算法可以分为基于丢包的拥塞控制算法和基于时延的拥塞控制算法。基于丢包的拥塞控制算法主要是通过修改传统算法中增加和减少的参数来使得窗口增长更为激进,这类算法典型有:HSTCP[3]、STCP[5]、BIC-TCP[6]等。基于时延的TCP拥塞控制算法是根据时延的变化来判断网络拥塞状况,这类算法包括FAST TCP、CTCP[8]等。我们同样采用上面的实验环境来作一下对比分析:利用dummynet建立两个节点的网络环境,链路带宽为100mbps,RTT为200ms,传送1GB的数据量,我们把缓存设定为4Mbytes,发送端与接收端都采用Compound-TCP算法(在windows中可以通过命令:netsh interface tcp set global congestionprovider=ctcp进行设定)。观察实验结果可以发现,当采用了CTCP高速TCP算法以后,平均速度达到了87Mbps,有了比较好的性能提升。在传输的过程中,同样在47秒左右的时候,速率出现了减半,发生了链路拥塞的情况,但是CTCP只用了20秒左右的时间就恢复速率,比传统的TCP传输有了明显的优化。图4 发送端与接收端都采用CTCP拥塞算法,单连接传输
4、UDP传输方法
在实验环境中,高速TCP算法的变现较好,但是在实际的网络中,由于网络的不稳定因素增多,如路由改变,链路丢包,时延变化等因素的影响,高速TCP的同样会出现传输速率不稳定的现象。为了更好在实际环境中传送数据,我们提出了采用UDP的传送方案。单纯的UDP协议,由于他不是面向连接的传输,发送端会以最大的发送速率传送数据而不考虑接收端是否能完整接收,这样不但会挤占大量的带宽,而且接收端的收到的数据是无法保证完整的。为了兼顾传输的效率和公平性,我们采用以下方式对UDP进行改造:1、 采用UDP传输模仿传统TCP的拥塞算法,增加对UDP传送状态信息的控制,快速重传、拥塞避免等功能。2、 检测网络可用带宽,增加速率控制,兼顾传输公平性3、 改善拥塞控制的算法1) 利用接收端的反馈信息,获取链路的可用带宽,把慢启动的的门限值设定到合适的位置,使得连接初始阶段,能较快的达到理想的速率2) 进入拥塞控制阶段后,没收到一个数据包的应答报文,窗口值增加原来的窗口值分之三:CWND = CWND + 3/CWND这样一个RTT时间段内,窗口值能增加3个单位,比传统的TCP增加提高了3倍。3) 当出现丢包时,把窗口值设为原来的2/3,而不是原来的一半,从而减少速率恢复的时间。4) 当出现RTO超时时,不马上把窗口值设为1并进入慢启动阶段,而是采用出现丢包时策略,把窗口值设为原来的2/3。经过以上的改造后,我们在实际环境中进行测试,实验环境如下,某电视台的北京总部与北美分台之间进行媒体数据传送,可用最大带宽为9.6mbps,平均时延为280ms。我们采用改良过的UDP方法传输时,虽然速率波动较大,但是平均速度能达到7.6mbps,较好的发挥了链路的性能(图5)。而且由于UDP的改量方案是建立在用户层的应用程序上实现的,不受操作系统的限制,可以灵活调整参数以适应不同的网络环境。例如对一些实时的流媒体传输如直播等应用,我们就可以只对丢包进行监控以控制发送速率,但不对丢包进行重传,这样既可以节省带宽,又能满足实际应用的需求。图5 UDP传输
结论
由于国际网络环境复杂多变, 真实的Internet的网络性能在不同的网络中是有很大的差异,而且各种媒体传输应用对网络传输的公平性、效率高低、收敛速度等性能的需求也各有不同。因此,在广域网环境下我们应该能灵活利用各种网络调优方案,获取最佳的媒体传输效果。 参考文献[1] M. Allman, V. Paxson, W. Stevens. TCP congestion control. RFC 2581 (Experimental), 1999.
[2] V. Jacobson. Congestion avoidance and control. In Symposium proceedings on Communications architec- tures and protocols. New York, NY, USA: ACM, 1988, SIGCOMM ’88, 314–329.
[3] S. Floyd. Highspeed TCP for large congestion windows. RFC 3649 (Experimental), 2003.
[4] Brian L.Tierney. TCP Tuning Guide for Distributed Application on Wide Area Networks
[5] TomKelly. Scalable tcp: improving performance in high speed wide area networks[J]. SIGCOMM Comput. Commun. Rev., 2003, 33:83–91.
[6] Injong Rhee, Lisong Xu. CUBIC: A new TCP-friendly high-speed TCP variant. In Proceedings of the International Workshop on Protocols for Fast Long-Distance Networks (PFLDnet ’05). 2005.
[7] RajJain. Congestion control in computer networks: Issues and trends[J].IEEENetwork,1990,4(3):24–30.
[8] Kun Tan, Jingmin Song. Compound tcp: A scalable and tcp-friendly congestion control for high-speed networks. In in 4th International workshop on Protocols for Fast Long-Distance Networks (PFLDNet). 2006.
[9] Eric Weigle and Wu-chun Feng: A Comparison of TCP Automatic Tuning Techniques for Distributed Computing
编辑:中国新闻技术工作者联合会
评论 点击评论