基于TCP协议的网络拥塞控制算法设计
作者:吕冠桥 柳寒冰 邓晓红
来源:《软件导刊》2014年第01期
作者:吕冠桥 柳寒冰 邓晓红
来源:《软件导刊》2014年第01期
摘要:通过对以往经典的TCP拥塞控制算法的总结和对比,从信道利用率、通信稳定性和公平性三方面出发,设计了一个改进的TCP拥塞控制算法。利用数学建模方法,简化并模拟实际的网络通信,运用数理统计和概率论的知识分别得出经典拥塞控制算法和改进拥塞控制算法实验结果的数学期望和方差,从信道利用率、通信稳定性和公平性三方面进行对比,证明改进算法的有效性。
关键词:拥塞控制;拥塞窗口;门限值
中图分类号:TP312 文献标识码:A 文章编号文章编号:16727800(2014)001005603
作者简介作者简介:吕冠桥(1987-),男,华北计算技术研究所硕士研究生,研究方向为数据建模统计分析;柳寒冰(1978-),女,华北计算技术研究所博士研究生,研究方向为网络分布式计算;邓晓红(1978-),女,华北计算技术研究所工程师,研究方向为分布式空间数据库。
0 引言
随着计算机网络和通信技术的快速发展,在更好地服务于大众的同时,也对网络通信性能提出了更高要求。在某段时间内,网络中要求传输过多的分组时,网络性能开始下降,这种情况即称为拥塞。简单地说就是当用户对网络资源的需求超过了网络所能提供的可用资源时的一种状态,即对资源需求的总和大于系统可用资源。单纯地增加网络资源并不能解决拥塞问题,这是因为拥塞本身是一个动态问题,它不可能只靠静态的方案来解决,而需要协议能够在网络出现拥塞时保证网络通信的正常运行。目前对互联网进行的拥塞控制主要是依靠在源端执行的TCP拥塞控制机制。
TCP是Internet运输层上面向连接的运输层协议,也是目前应用最广泛的传输控制协议,拥塞控制机制是其核心。随着主机数量的增多和数据通信量的加大,网络中存在过多的分组时,网络性能会明显下降,产生资源竞争,导致网络出现拥塞,如处理不及时,通信会严重受阻,效率低下,类似日常生活中交通拥塞的现象,而且会形成恶性循环。人们力求极大地提高网络利用率,即在现有通信网络中增加数据量,但由于网络资源的限制,出现拥塞不可避免,便形成这样一对矛盾。因此,拥塞控制机制应运而生。
1 传统TCP拥塞控制算法
1.1 TCP Tahoe算法
TCP Tahoe是TCP的早期版本,它包括了最基本的TCP拥塞控制算法,由“慢启动”、“拥塞避免”和“快速重传”三部分组成。“快速重传”根据3个重复的确认分组来判断分组丢失的出现,从而减少等待“重传时钟”超时的过程,提高了分组的传输效率。除此之外,Tahoe 对往返时间的计算也作了相应改进,以便更准确地设定超时重传的时间。
TCP Tahoe拥塞控制算法,起始阶段采用慢启动,通过线性增加速率探测网络。当网络发生拥塞时,则迅速递减它的速率。连接开始时,发送端接收到一个确认帧,窗口就加1(单位),然后开始下一次的传输。因此拥塞窗口随着传输次数按指数规律增长。当拥塞窗口增长到门限值时,就改为执行拥塞避免算法,拥塞窗口按线性规律增长。网络出现拥塞时,拥塞窗口重新置1,执行慢开始算法。
假定初始的门限窗口值为16(单位),且发送窗口仅受拥塞窗口的限制,若发送窗口到达24(单位)时发生超时重传,则根据乘法减小原则(新的门限值=0.5*当前发送窗口值),
发送窗口到达24(单位)后将门限窗口值更新为12(单位)。利用TCP Tahoe算法实现的拥塞控制实例如图1所示。
图1 TCP Tahoe算法实现的拥塞控制实例
1.2 TCP Reno算法
TCP Reno在TCP Tahoe的基础上增加了“快速恢复”算法来提高拥塞恢复效率。当发送端收到一定数量的重复ACK之后,即进入“快速恢复”阶段。源端在接收到足够多的重复ACK之后,用接着到来的重复ACK触发新数据分组的发送。只有在接收到新发分组的ACK后,源端才退出“快速恢复”阶段。Reno的“快速恢复”优化了单个分组数据窗口。
TCP Reno拥塞控制算法和TCP Tahoe算法大体类似,但做了一些改进,就是当网络发生拥塞时,窗口设为初始阶段窗口值的一半,直接进入拥塞避免阶段。TCP Reno版本增加了“快速重传”算法、“快速恢复”算法,避免了当网络拥塞不够严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的现象。
假定初始的门限窗口值为16(单位),且发送窗口仅受拥塞窗口的限制,若发送窗口到
达24时发生超时重传,则根据乘法减小原则(新的门限值=0.5*当前发送窗口值),发送窗口到达24(单位)后将门限窗口值更新为12(单位)。基于tcp协议的应用程序包括
利用TCP Reno算法实现的拥塞控制实例如图2所示。
图2 TCP Reno算法实现的拥塞控制实例
1.3 其它拥塞控制算法
随后还有一些拥塞控制算法出现,典型的有TCP NewReno算法、TCP SACK Sack 算法和TCP Vegas算法。
TCP NewReno算法对Reno算法作了一些小改进,以消除有多个分组从同一数据窗口丢失时对重传定时器的等待。改进考虑到发送端在“快速恢复”阶段收到的“恢复ACK”是确认部分而不是全部出现在“快速恢复”阶段的分组。NewReno 直到所有在快速恢复阶段开始时出现的分组都被确认,才会退出“快速恢复”。
TCP Sack算法也是对Reno算法的改进。当检测到拥塞后,不用重传从数据包丢失至检
测到丢失时发送的全部数据包,而是对这些数据包进行有选择的确认和重传,从而避免不必要的重传,减少时延,提高网络吞吐量。由于使用选择重传,所以在一个窗口中数据包多包丢失的情况下,Sack算法的性能优于NewReno算法。但是Sack算法的主要缺点是要修改接收端TCP。
2 拥塞控制改进算法
2.1 改进算法基本原理
TCP拥塞控制机制产生要解决三个问题,提高现有网络利用率,或者说是保持较高的数据通信量;保持数据通信量的尽可能稳定,起伏尽量小;合理分配、协调和统筹资源,考虑公平性。
从各个角度、各个方面,人们提出了一系列算法。有从增加硬件投入(如增加路由器和缓冲区)提高通信稳定性和公平性的;也有考虑设置发送优先级的方式来提高信道的利用率。然而如没有路由器的参与,要增加公平性,要求TCP发送端的拥塞控制进行相应的改变。我们从TCP拥塞控制机制这个角度来探讨这一问题。
拥塞控制改进算法考虑的出发点是能让通信量较大的发送窗口增长较慢,通信量较小的发送窗口迅速增长。网络出现拥塞时,通信量较大的发送窗口大量减少,以给后进入网络的通信主机让出一定的信道资源,同时又要考虑信道的利用率不能过低,保持通信量的稳定性。从效率、稳定性和公平性三方面考虑,基于各种拥塞控制算法解决问题的思路,提出一种新的拥塞控制算法。
算法的基本原理是:初始发送窗口为2(单位),依次成平方增长,若超过当前门限窗口值,发送端接收到一个确认帧,则拥塞窗口就加1(单位)。网络出现拥塞时,拥塞窗口置为前一时刻发送窗口的开方取整值(例如,网络出现拥塞前,发送窗口为20(单位),网络出现拥塞时,拥塞窗口置为20开方取整为4(单位)),新的门限值为网络出现拥塞时发送窗口的值的平方(即新的门限值为16(单位)),依次执行算法。未超过门限值时,若发生网络拥塞,发送窗口保持不变。例如4的下一时刻网络出现拥塞,发送窗口仍为4(单位)。
改进的拥塞控制算法如图3所示。
图3 改进的拥塞控制算法
2.2 改进算法实现及测试
2.2.1 改进算法与经典算法的测试比较
TCP Tahoe算法简化成数学模型为数列1,2,4,8,16(16为原门限窗口),17,18,19,20,21,22,23,24(发生超时,即网络发生拥塞,更新的门限窗口为12),1,2,4,8,12,13,14,15 ……
TCP Reno算法简化成数学模型为数列1,2,4,8,16(16为原门限窗口),17,18,19,20,21,22,23,24(发生超时,即网络发生拥塞,更新的门限窗口为12),12,13,14,15 ……
改进的拥塞控制算法简化成数学模型为数列2,4,16(16为原门限窗口),17,18,19,20,21,22,23,24(发生超时,即网络发生拥塞,24开方取整后平方得16,更新的门限窗口为16),4,16,17,18 ……
图4 拥塞控制算法测试结果对比
2.2.2 实际网络环境下的测试
我们现在通过建立数学模型来简化模拟实际的网络。设网络的通信量为100(单位),起始门限值为16(单位),有5个通信主机依次在不同时刻进入网络,发送报文段。5个主机a,b,c,d,e有如下分布,见图5~7。
图5 TCP Tahoe测试结果
图6 TCP Reno测试结果
图7 改进的拥塞控制算法测试结果
2.3 性能分析
TCP Tahoe在时刻12-26循环,循环阶段整体期望为12,方差为6.0356,5个通信主机拥塞窗口在时刻9水平相当。
TCP Reno在时刻12-22(或23-33)循环,循环阶段整体期望为15,方差为3.3166,5个通信主机拥塞窗口在时刻9水平相当。
新算法在时刻10-15循环,循环阶段整体期望为15.67,方差为5.8878,5个通信主机拥
塞窗口在时刻7水平相当。
期望体现信道利用率水平,方差体现通信流量的稳定性,通信水平大体均衡的时刻体现公平性。
TCP Tahoe在网络出现拥塞时,所有通信拥塞窗口都置1,在公平性上比较好,但代价是信道利用率的大幅下降以及通信量稳定性受明显影响。
TCP Reno在网络出现拥塞时,所有通信拥塞窗口都置为更新的门限窗口的一半,在通信量的稳定性和信道利用率上有较大提高,但公平性上略有欠缺。
新算法在信道利用率和通信公平性上均有提高,但稳定性没有TCP Reno效果好。
3 结语
本文介绍了两种TCP拥塞控制算法和改进的拥塞控制算法,并从信道利用率、通信稳定性和公平性三方面进行对比。综合全文分析,改进的拥塞控制算法相对来说有一定的优越性。如今,网络拥塞问题已变得越来越严重,成为制约网络发展和应用的一个瓶颈,如何更
好地预防和控制拥塞是近年来网络研究的热点。拥塞问题会在网络中长期存在,虽然拥塞控制领域的研究工作已取得很大进展,但更合理的控制机制及应用还存在较大的研究空间。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论