首页 > 范文大全 > 正文

TCP拥塞控制算法的NS仿真研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇TCP拥塞控制算法的NS仿真研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要: 随着网络技术的发展,网络拥塞日益严重。而tcp拥塞控制对如何解决网络拥塞问题,提高网络资源至关重要。文章首先对NewReno、Sack和Vegas拥塞算法从改进策略、延时、网络利用率、应用范围等进行了理论分析。接着通过NS仿真的方法,从拥塞窗口,吞吐量来分析具体分析它们的性能,最后比较这几种算法的优缺点及适用性。

Abstract: With the development of network technology, network congestion is getting worse. The TCP congestion control is essential to solve network congestion problems and improve the network resources. Firstly theoretical analysis of congestion algorithms on NewReno, Sack and Vegas are carried out from the improvement strategy, delay, network utilization, application etc. Then, the NS simulation method is applied to analyze the specific analysis of their performance from the congestion window, throughput. At last, the advantages and disadvantages and applicability of several algorithms is obtained.

关键词: TCP;拥塞控制;NS

Key words: TCP;congestion control;NS

中图分类号:TP301.6 文献标识码:A文章编号:1006-4311(2011)02-0175-02

0引言

由于互联网的迅猛发展,互联网的应用在快速增长,拥塞控制算法成为目前Internet的研究热点。根据MCI的统计,Internet上总字节数的95%及总数据包的90%使用TCP传输协议。TCP的目的是为了解决internet的稳定性,异质性、流之间享用带宽的公平性、使用效率和拥塞控制等问题,从而为Internet提供可靠、健壮的端到端的通信。

为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V.Jacobson在1988年的论文中提出的TCP的拥塞控制由慢启动(Slow start)和拥塞避免(Congestion Avoidance)组成,后来Reno算法中加入了快速重传(Fast retransmit)、快速恢复(Fast Recovery)算法,再后来在NewReno中又对快速恢复算法进行了改进,近些年又出现了选择性应答Sack(Selective Acknowledgement)和Vegas算法。文章对这几个算法不仅从理论上进行分析,而且通过NS仿真,给出它们的拥塞窗口,吞吐量的性能比较。然后对这几种算法进行理论和实践总结,为进一步的发展提出建议。

1拥塞控制基本概念

目前拥塞的概念是由V.Jacobson(1988)提出:当一个子网或者子网的一部分出现太多分组的时候,网络性能开始下降,这种情况称为拥塞。大部分学者认为网络拥塞产生的原因一般是用户提供给网络的负载大于网络资源的容量和处理能力。主要表现为数据包时延增加,丢包率增大,吞吐量降低等。严重时可导致网络崩溃发生。网络产生拥塞的主要原因有4个:①带宽容量不足。高速的数据流入低速的链路会形成带宽瓶颈,严重时发生拥塞。②队列的容量不足。路由器的队列受限。③路由器的处理能力差。④网络流量分布不均匀。

2TCP拥塞控制算法

2.1 Tahoe和RenoTahoe包括慢启动、拥塞避免和快速重传三部分。现在常用的是Reno算法,它在Tahoe算法上增加了快速恢复。可以更有效地恢复丢包。但这两种算法在单个报文从数据丢失窗口丢失的情况下性能良好,当有好几个报文丢失时,会引起窗口的震荡,并引起很大的时延,性能很差。

2.2 NewRenoNewReno对Reno中快速恢复算法进行了补充,它考虑了一个发送窗口内多个报文同时丢失的情况。在Reno算法中,发端收到一个不重复的应答后就退出快速恢复状态。而在NewReno中,只有当所有报文都被应答后才退出快速恢复状态。

具体执行过程是:在快速恢复期间,TCP发端收到一个ACK后,发端通过此ACK应答推断出下一个丢失的数据包序列号,并且立即重传那个数据包。这样,NewReno在每个RTT内重传一个丢失的数据包,直到发生多个数据包丢失的窗口中所有丢失数据包被重传,而不是等到超时。在这个期间如果还有其它重复的ACK到来,则继续快速恢复算法,直到在快速恢复初始时所有未确认数据包都被确认。

NewReno的实现只要修改TCP发送端的实现代码,实现简单。缺点是在高速远距离网络中存在带宽利用率低。

2.3 SackSack算法也是在Reno上的改进,关注一个窗口内有多个报文的丢失,它使用选择性重传策略,提高TCP在拥塞较严重且一个窗口中有多个分组丢失时的性能。Sack的基本思想是:接收方TCP发送SACK分组来通知发送方接收数据的情况,这样发端就能准确的知道哪些数据包被正确的传到接收端,从而避免不必要的重传,减少时延,提高网络吞吐量。

它的改进之处在于:在快速恢复阶段,Sack保持一个变量pipe来表示出现在路由器上报文的估计数量。当pipe小于拥塞窗口大小时,发端只发送一个新报文分组或重发一个老报文,pipe加1;当发送端接收到一个带Sack选项的重复ACK时,表明新数据已被接收端接收,pipe减1;此外,对收到的恢复ACK使用特殊的处理方法,对pipe减2。

Sack算法降低了不必要的重传,能有效的从多个数据包丢失中恢复。但是它的实现需要修改TCP发送端和接收端的实现代码,增加了TCP的复杂性,不易大规模的应用。

2.4 Vegas为了提高发节点的数据传输能力而提出的改进算法。Vegas算法使用新的重传、拥塞避免和慢启动机制来增加TCP的吞吐量,并降低丢包率。

2.4.1 Reno重传机制改进在Vegas收到第一个重复的确认ACK时,检测到超时并重发丢失的包,不必等到第三个重复的确认帧的到达,所以丢包检测更快更及时。

2.4.2 新的拥塞避免机制与Reno不同,Vegas通过监测预期速率与实际速率的差值,预测拥塞的发生。通过由发端估计路径上缓存包的数量,调节窗口的大小保持在α和β之间,下个窗口的大小受门限值α和β控制。在拥塞避免算法中,Vegas周期性的测量往返排队时延,调节发送速率。如果网络拥塞严重,那么往返时延就大,而传输速率就低。通过监控RTT就可以得到往返时延。不会引起很大的时延,但对窗口的控制代价大。

2.4.3 慢启动阶段每2个RTT就将cwnd增大一倍,在2个RTT期间cwnd窗口不变,预期速率与实际速率比较较为准确,用这种谨慎的方法增加窗口的大小,减少不必要的分组丢失。

3算法理论分析

在Tahoe和Reno拥塞控制算法中,发端在检测到拥塞后,要重传从数据包丢失到检测到丢失时发送的全部数据包,而其中有些数据包可能被正确的接收,不需要重传。而且它们在一个数据包丢失的情况下性能好。和Tahoe相比,Reno重传率降低,但存在连接延时长,窗口震荡。

NewReno算法是尽量避免Reno在快速恢复阶段的多个重传超时,利用ACK确认发送窗口的方法来重传剩下的数据包,在一个RTT内只能重传一个包。而且NewReno算法只对Reno发端算法进行简单修改。实现简单,兼容性也好。

Sack算法是在Reno算法的基础上进行扩展,对数据包进行选择性的确认和重传,这样发端就可以知道哪些数据包被正确的接受,从而避免不必要的重传,减少时延,提高网络的吞吐量。但Sack对Reno算法的修改比较多,在一个RTT内可以重传多个包,在实现上比NewReno算法复杂,但对于大量的数据包丢失,性能却优于NewReno算法。适合在大规模的网络中使用,但与其他拥塞算法兼容性不好。

上面的算法都是基于窗口机制,容易导致数据的突发,发送速率受窗口大小的限制等。为此,一些研究者提出了基于速率的算法如Vegas算法。Vegas依据RTT与网络拥塞的密切关系,来观察以前的TCP中的RTT值的变化情况来控制拥塞窗口,如果发现RTT变大,那么就认为网络发生拥塞,减小拥塞窗口。反之,增加拥塞窗口,这样的话,拥塞窗口基本处于一个稳定的值附近,这种方法的拥塞控制只与RTT有关,与包的时延无关。可以较好的预测网络可用带宽,公平性和效率都很好。表1给出几种算法的理论比较。

4算法的仿真结果和分析

下面的仿真是在NS环境下,网络拓扑为图1所示,0节点为发端,2节点和3节点为中间路由器,4节点为接收端,2节点到3节点的链路为瓶颈链路带宽0.3mbps,传播延时100ms,队列大小20,0到2节点的链路2Mbps,传播延迟10ms,队列为50,3节点和4节点链路为0.5Mbps,传播延时30ms,队列为50。0是ftp发端,4是接收端;分组大小为552Bytes,window大小为8000,另外一条是1节点发,5节点收,发送的是固定速率的CBR;

在这种环境下对各拥塞控制算法进行的仿真实验,通过追踪数据得到的各时刻的cwnd变化情况如图2,各时刻的吞吐量的变化情况如图3。

对于图2描述的是5种TCP算法的实时拥塞窗口的变化情况,从图中可知,对于基于窗口控制的拥塞算法来说,①没有丢包前,采用慢启动,cwnd都呈指数增长;②出现丢包情况后,TCP进入拥塞避免阶段,Reno,NewReno,Sack采用快速恢复,cwnd减半且线性增长,cwnd增长幅度减少;③当线性增加时出现丢包情况,Reno ,NewReno,Sack再把cwnd减半,再线性增加;④出现丢包时,Tahoe算法cwnd=1;慢启动增加cwnd,其他的算法直接进入拥塞避免阶段。而对于基于速率的拥塞算法Vegas来说,它的拥塞窗口基本稳定在一个值附近。图3描述的是5种TCP算法的实时吞吐量变化情况,从图可知,吞吐量的大小是Vegas最好,Sack最差,中间是NewReno,Reno,Tahoe。

5结论

不管从理论还是实验都表明Vegas算法在拥塞窗口还是吞吐量上都具有很好的性能,而且可以防止窗口震荡,但是它与其他算法在带宽竞争上存在不公平问题,目前还未实用。其它的基于窗口机制的算法基本都是在Reno上进行改进的,都存在一些局限性,特别是在分组丢包引起的快速重传、快速恢复方面。Sack虽然能较好的解决该问题,但是需要收发双方在原有的基础上进行改进,实现复杂。而NewReno虽然可以解决多个分组丢失的恢复问题,但对恢复过程中出现的分组丢失情况却无能为力。

从上面的分析可以看出,这些算法存在各式各样的问题,要避免拥塞的发生,必须从几个方面综合考虑,因此,如何改进这些算法的不足,为了更好的利用网络资源是未来研究的热点。

参考文献:

[1]潘伟锵,刘瑛.Ns-2网络仿真平台机器在TCP拥塞控制研究中的应用[J].科学技术与工程,2009,9(24):7542-7545.

[2]周中伟.TCP拥塞控制研究[J].湖南医科大学学报(社会科学版),2010,12(5):332-333.

[3]曾晓红,漆丽娟,谢树云.一种改进的TCP拥塞控制算法的公平性研究[J].计算机仿真,2010,27(4):120-123.

[4]王红旗.TCP/IP拥塞控制的典型算法分析[J].四川理工学院学报(自然科学版),2008,21(6):42-46.

[5]陈琳,双学芹.TCP网络拥塞控制算法比较研究[J].长江大学学报(自然科学版),2010,7(1):60-64.

[6]张牧,李君.TCP拥塞控制算法的仿真研究[J].计算机工程与应用,2008,44(21):82-84.

[7]黄镇建,蔡群英.用NS2开发不同版本TCP协议实验的性能对比试验[J].韩山师范学院学报,2010,31(3):57-60.