TCP协议的拥塞控制策略及改进( 二 )


2. 网络拥塞的基本概念
2.1 拥塞的基本概念和互联网模型
当网络中存在过多的数据包时,网络的性能就会下降,这种现象称为拥塞 。在网络发生拥塞时,会导致吞吐量下降,严重时会发生“拥塞崩溃”(congestion collapse)现象 。一般来说,拥塞崩溃发生在网络负载的增加导致网络效率的降低的时候 。最初观察到这种现象是在1986年10月,在这个过程中,LBL与UC Berkeley之间的吞吐量从32kbps下降到了40bps 。Floyd总结出拥塞崩溃主要包括以下几种:传统的崩溃、未传送数据包导致的崩溃、由于数据包分段造成的崩溃、日益增长的控制信息流造成的崩溃等 。
图1:网络负载与吞吐量及响应时间的关系
对于拥塞现象,我们可以进一步用图1来描述 。当网络负载较小时,吞吐量基本上随着负载的增长而增长,呈线性关系,响应时间增长缓慢 。当负载达到网络容量时,吞吐量呈现出缓慢增长,而响应时间急剧增加,这一点称为Knee 。假如负载继续增加,路由器开始丢包,当负载超过一定量时,吞吐量开始急剧下降,这一点称为Cliff 。拥塞控制机制实际上包含拥塞避免(congestion avoidance)和拥塞控制(congestion control)两种策略 。前者的目的是使网络运行在Knee四周,避免拥塞的发生;而后者则是使得网络运行在Cliff的左侧区域 。前者是一种“预防”措施,维持网络的高吞吐量、低延迟状态,避免进入拥塞;后者是一种“恢复”措施,使网络从拥塞中恢复过来,进入正常的运行状态 。
拥塞现象的发生和前面提到的互联网的设计机制有着密切关系,我们对这种设计机制作一个简单的归纳:

数据包交换(packet switched)网络:与电路交换(circuit switched)网络相比,由于包交换网络对资源的利用是基于统计复用(statistical multiplexing)的,因此提高了资源的利用效率 。但在基于统计复用的情况下,很难保证用户的服务质量(quality of service,QoS),并且很轻易出现数据包“乱序”的现象,对乱序数据包的处理会大大增加拥塞控制的复杂性 。
无连接(connectionless)网络:互联网的节点之间在发送数据之前不需要建立连接,从而简化了网络的设计,网络的中间节点上无需保留和连接有关的状态信息 。但无连接模型很难引入接纳控制(admission control),在用户需求大于网络资源时难以保证服务质量;此外,由于对数据发送源的追踪能力很差,给网络安全带来了隐患;无连接也是网络中出现乱序数据包的主要原因 。
“尽力而为”的服务模型:不对网络中传输的数据提供服务质量保证 。在这种服务模型下,所有的业务流被“一视同仁”地公平地竞争网络资源,路由器对所有的数据包都采用先来先处理(First Come First Service,FCFS)的工作方式,它尽最大努力将数据包包送达目的地 。但对数据包传递的可靠性、延迟等不能提供任何保证 。这很适合Email、FTP、WWW等业务 。但随着互联网的飞速发展,IP业务也得到了快速增长和多样化 。非凡是随着多媒体业务的兴起,计算机已经不是单纯的处理数据的工具 。这对互联网也就相应地提出了更高的要求 。对那些有带宽、延迟、延迟抖动等非凡要求的应用来说,现有的“尽力而为”服务显然是不够的 。
2.2 拥塞产生的原因
拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间节点的处理能力 。由于互联网的设计机制导致其缺乏“接纳控制”能力,因此在网络资源不足时不能限制用户数量,而只能靠降低服务质量来继续为用户服务,也就是“尽力而为”的服务 。

推荐阅读