TCP/IP协议的拥塞控制探讨

2013-04-29 00:44:03林德顺李智华
电脑知识与技术 2013年7期
关键词:算法

林德顺 李智华

摘要:随着网络技术的发展,目前Internet的主要通信标准是TCP/IP协议,这一协议基于IP形成TCP/IP协议簇,互联网的基本通信机制由TCP/IP协议簇来提供。TCP/IP协议包括网络互联网协议和传输控制协议两个部分,其中面向连接的、点对点的、全双工的、可靠的通信服务由TCP协议来提供,它能够保证数据可靠地、没有重复地、按照顺序到达。随着互联网用户越来越多,网络宽带等资源也在持续增加,但是用户的需求仍然不能得到满足,逐渐暴漏出网络拥塞问题。如何更好的预防和控制拥塞,使网络具有同时到达资源并且低延时和低丢包率的最大效用,针对这一问题该文进行探讨和研究。

关键词:TCP/IP;网络拥塞;拥塞控制;算法

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)07-1513-03

随着网络用户的不断增加,制约网络应用和发展的关键瓶颈是网络拥塞问题,对进入网络的数据流量进行控制是拥塞控制的主要目的,通过控制拥塞保证用户发送的数据流对通信网络不造成阻塞,并且瓶颈资源能够被合理的使用。可以在网络协议的不同层次上实施拥塞控制,首先对网络拥塞产生的原因进行分析,分类、归纳拥塞控制,持续时间越长的拥塞需要越高的控制层次来解决拥塞问题,并且拥塞控制的实现主要在传输层和网络层。

1 网络拥塞概述

网络的性能会逐渐下降,当过多的数据包存在于网络中时,这种现象被称为网络拥塞。吞吐量下降在发生网络拥塞的时候,并且严重的时候拥塞崩溃的现象会在发生。通常而言,增加的网络负载导致网络效率降低,在此时容易发生拥塞崩溃的现象。拥塞现象的描述如图1 。

图1 拥塞现象的描述

在较小的网絡负载时,吞吐量随着负载的增长也会增长,两者为线性关系,相应的时间也缓慢增长。当网络容量被负载达到的时候,相应的时间急剧增加,吞吐量呈现缓慢增长,这一点被成为Knee点。吞吐量在负载超过一定量时开始急剧下降,路由器在负载继续增加的情况下开始丢包,这一点是死锁点。在拥塞控制机制中有拥塞控制和拥塞避免两种方式,前者的目的是在控制运行在死锁点附近的网络拥塞现象,后者是避免网络运行在Knee点的时候发证拥塞现象。前者是一种恢复措施,使网络从拥塞中恢复过来,进入正常运行状态;后者是一种预防措施,使网络维持在低延迟、高吞吐量状态,网络拥塞现象得以避免。

2 分析网络拥塞产生的原因

网络的处理能力和资源容量被网络的负载超出了是网络拥塞产生的根本原因,也就是网络对资源的总需求量大于总的可用资源,下面分析一下网络拥塞产生的原因。

1)不足的存储空间

一个输出端口需要对各种报文在接收端口的缓冲区域中进行排队,因为它接受的报文是由多个端口转发而来的,若满足使用要求的缓冲空间在输出端,报文就会丢失,尤其是突发的数据流也会丢失。这一矛盾的缓解通过增加存储空间来实现。但将会出现更加严重的拥塞现象在不断增加存储容量时。因为缓冲区网络结点的延时增加的时候,报文也会增加,最终端到端的确认时间也增加了,就会产生超时重发。网络负载因此会进一步增加,拥塞现象最终会加重。

2)不足的宽带容量

在低速链路中流通的高速数据流经常会产生拥塞现象,在数据发送率小于信道容量的时候,拥塞现象才会避免。不然在节点的缓冲区域堆集大量的报文就会产生拥塞。

3)速度缓慢的节点处理机

报文被放入其CPU队列中进行缓存当被路由器对其进行接收的时候,路由器来选择路由并且把报文转发到相应的节点。此时路由器的处理速度的快慢是能否出网络现拥塞的关键因素。

总而言之,只有考虑到从以上三方面的因素,来解决拥塞现象,优化整体性能。只考虑一方面内的因素拥塞问题不仅不能够解决,反而拥塞问题还会更加严重。

3 控制拥塞的策略

1)Tahoe和Reno拥塞控制算法

随着网络技术的发展,TCP拥塞控制有快速恢复(fast recovery)、快速重传(fast retransmit)、拥塞避免(congertion avoidance)、慢启动(slow start)这四种,其中常用的是TCP Tahoe和TCP Reno两种算法。快速重传、拥塞避免、慢启动是Tahoe包括的三个部分,并且改进了往返时间RTT,从而对超时重发计时器进行更好的重新设定,具体的算法描述如下:

最多发一个报文在一个RTT内。其中窗口的大小由w来表示,慢启动门限值由ssthresh来表示,是慢启动进入拥塞避免的分界值。

这种算法的基本思想是通过线性增加速率源端对网络中的空闲容量进行探测,当拥塞被检测到的时候用指数递减它的速率,在源端丢包被检测到的时候确认拥塞。实现拥塞避免和慢启动的例子如图图2 慢启动和拥塞避免的实现举例

由上图可知,每当一个丢包被检测到的时候,慢启动门限值被源端设置为当前窗口的一半,对丢失的包重传,窗口被设置为1,重新进入慢启动。

2)TCP中拥塞控制的关键

TCP协议在Internet上被95%的数据流使用,对发送端的发送速率进行控制是TCP中拥塞控制的关键。可以采用控制算法中的乘法减少加法增加(AIMD)的来解决拥塞问题。每个拥塞窗口由发送方维持着,如果没有发生窗口中的报文丢失,那么目前是良好的网络状况,窗口的大小被发送者加大,同时报文的发送速率加大。当窗口内的一个报文被发送方发现丢失的时候,则认为报文的丢失是由网络拥塞造成的,于是窗口的大小减半,随之发送速率也减小,拥塞加重的现象得以避免。

3)慢启动阶段的拥塞控制

一个连接被TCP启动的时候多个数据包被发送到网络时会造成不必要的网络拥塞和数据丢失,而慢启动可以避免这种现象的发生,还能避免吞吐量在AIMD算法中增加引起网速过慢的问题。初始化拥塞窗口cwnd为一个数据包大小在新的TCP连接建立的时候,按照cwnd大小源端进行数据的发送,也就是随着RTT的增长cwnd呈指数增长。

4)拥塞避免阶段

处理丢失数据包的方法被称为拥塞避免算法。当重复确认被发送方收到或数据包超时被发送方发现的时候,网络拥塞就会发生,此时进入拥塞避免阶段,置为1的cwnd在数据包发送超时并且重复确认被发送方收到时,那么每收到一个ACK,cwnd将增加segsize*segsize/cwnd。其中数据包的大小被称为segsize,cwnd在拥塞避免阶段不是呈指数增长而是呈线性增长的。

5)快速恢复和快速重传阶段

当3个或3个以上的重复ACK被源端收到的时候,发送方认为出现数据包丢失的现象,对数据包进行重新传输,而且启动阈值ssthresh被设置为一半的当前cwnd,然后对丢失的数据包重新传输,这个过程被称为快速传输。系统执行的不是慢启动算法而是拥塞避免算法,这被称为快速恢复,能够使TCP连接的吞吐量提高。另外,不必要的重传超时要想避免可以应用一种受限传输机制:在接收方中允许如果有广播窗口,一个或两个重复的ACK被发送方接收到后,发送方对新的报文段继续传输,具有较小窗口的TCP在受限的传输机制的允许下进行错误码恢复,不必要的重传得以避免。

6)IP 拥塞控制策略

对于Internet 的健壮性而言基于窗口的端到端的TCP拥塞控制起着关键性作用,在Internet的迅速发展的今天网络的规模也越来越大,并且日趋复杂的结构在不断出现,端对端的拥塞控制已经不能满足需求,那么对拥塞的控制也需要在网络层进行,需要在路由器中采用数据丢弃和排队算法策略。其中丢弃策略进行分配缓存是通过决定哪些包被丢弃来实现的,排队算法进行分配宽带是是通过决定哪些包可以被传输来实现的。IP 拥塞控制的方法有:先进先出、公平排队算法、加权公平排队算法。

总而言之,无论哪种拥塞控制方法都有它的优势,总体上包括TCP 拥塞控制和IP 拥塞控制两种,下面表格针对这两种方式进行了比较:

[TCP 与IP 拥塞控制的比较\&参数\&TCP 拥塞控制\&IP 拥塞控制\&实现位置\&端系统中\&网络内部\&短期拥塞\&可以处理\&较好处理\&长期拥塞\&可以处理\&无法处理\&不同数据流间的公平性\&难于实现\&可以实现\&延迟\&较大\&无\&]

4 结束语

通过上述网络拥塞概述、网络拥塞产生的原因、控制拥塞的策略,可以得知,随着互联网用户越来越多,网络宽带等资源也在持续增加,但是用户的需求仍然不能得到满足,逐渐暴漏出网络拥塞问题,拥塞如何更好的预防和控制,使网络具有同时到达资源并且低延时和低丢包率的最大效用。无论TCP拥塞控制还是IP 拥塞控制都有自身的优势,要想在这个基础上更好的解决网络拥塞问题,需要结合各种方法并且灵活的使用。

参考文献:

[1] The Stream Control Transmission Protocol (SCTP) as a Transport for the Session Initiation Protocol(SIP).internet Draft,IETF,Jan,2005 Work in Progress.

[2] 黄卫平.TCP/IP 协议中拥塞控制算法探讨[J].广西工学院学报,2003,14(2):71-73.

[3] Gonzalo Camarillo,Raimo Kantola.Evaluation of Transport Protocols for SIP .IEEE Network September/October 2003.

[4] 武航星,慕德俊,潘文平.网络拥塞算法综述[J].计算机科学,2007,34(2):51-54.

[5] 郭伟.流控制传输协议研究[J].中兴通讯技术,2004(4).

[6] 李艳凌,江勇.TCP 拥塞控制算法研究[J].中国测试技术,2005,31(2):4-6.

猜你喜欢
算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
基于CC2530的改进TPSN算法
基于BCH和HOG的Mean Shift跟踪算法
算法初步两点追踪
基于增强随机搜索的OECI-ELM算法
一种改进的整周模糊度去相关算法
一种抗CPS控制层欺骗攻击的算法
Wiener核的快速提取算法