网络拥塞控制的国内外研究现状
时间:2017-04-22 16:52 来源:毕业论文 作者:毕业论文 点击:次
随着网络规模的日益增大和结构的日趋复杂,网络中的丢包数目增加、队列延时增大和网络吞吐量急剧降低,严重时甚至发生网络崩溃。当网络中负载过重时,网络性能就会降低,这种现象称为网络拥塞[1][2]。产生网络拥塞的根本原因是网络的流量超过了网络的负载能力,表现为网络中间节点缓存空间不足、带宽容量不足和处理器的能力不足[3]。7497 随着网络规模的增长,对网络拥塞控制算法的设计面临着很多困难,这主要是由网络的复杂性造成的。由于算法的分布性,网络环境的复杂性,算法的性能要求以及算法的开销等因素,网络拥塞控制算法的设计存在着很大的困难。根据实现位置的不同,拥塞控制算法可分为两大类:源算法和链路算法。源算法是指在端系统(一般指主机和网络边缘设备)中运行的算法;链路算法是指算法是在网络中间设备(如路由器或交换机)上实施的算法。源算法的主要作用是根据获得的反馈信息调整发送速率;而链路算法的主要目的是检测拥塞的发生,产生拥塞反馈信息。 1.1.1 基于源端的拥塞控制算法 自网络诞生以来,TCP流一直占据主导优势,TCP协议是目前使用最为广泛的数据传播协议。TCP拥塞策略由慢启动、拥塞避免、快速重传和快速恢复四个核心算法组成,通过加性增加乘性减少(Additive Increase Multiplicative Decrease,AIMD)机制调整拥塞窗口(congestion window,cwnd)的大小来控制源端的发送速率。拥塞窗口值初始化后不断加性增加直至出现数据包丢失,数据包的丢失是网络拥塞的表现,此时拥塞窗口值减半,有效降低源端的发送速度避免网络进一步拥塞。TCP拥塞控制的典型算法包括:TCP Tahoe[4] [5]、TCP Reno[5] [6]、TCP Sack[5] [6] [8]、TCP Vegas[7] [9]。 TCP Tahoe[4] [5] 是由Jacobson在1988年提出,主要是针对最初的TCP中没有拥塞控制机制的问题提出来的,目的在于保持良好的吞吐量的同时,控制网络的拥塞。它包括了最著名的3个最基本的拥塞控制算法:慢启动、拥塞避免、快速重传。 1990年出现了TCP Reno[5] [6],它是由Jacobson提出的对Tahoe改进版本。Reno在Tahoe的基础上增加了“快速恢复”算法来提高拥塞恢复的效率。新算法避免了网络拥塞不够严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的问题。它是目前网络上广泛使用的TCP算法。 如果单个数据窗口出现多丢包的情况,快速重传模块会多次被启动从而拥塞窗口不断被减半导致链路使用率低下,为了解决这个问题,Floyd等人在1999年提出了TCP New Reno[6] [7]。它改进了 “快速恢复 (Fast Recovery)”算法,它考虑了一个发送窗口内多个数据报文丢失的情况,这样就更有效地利用了网络带宽资源。 M.Mathis等在1995年提出了TCP Sack[5] [6] [8]算法。Sack算法也是对Reno的改进,当检测到拥塞后,不用重传数据包丢失到检测到丢失过程中发送的全部数据包,而是对这些数据包进行有选择的确认和重传,从而避免不必要的重传,减少时延,提高网络吞吐量。 不同于TCP基于包丢失率的拥塞控制机制,TCP Vegas[7] [9] 是基于测量的TCP技术,它通过3种不同的技术(新的重传机制、新的拥塞避免机制和扩展的慢启动机制)来提高吞吐率,降低分组丢弃率。TCP Vegas算法通过监测期望速率和实际速率之间的差异来获取网络的可用带宽以调整发送速度。当网络尚未拥塞时,数据流的传播速度应当接近链路容量;当网络出现拥塞时,数据流的传播速度会小于链路容量。TCP Vegas算法设计的目标是在避免网络拥塞的同时能够有效利用网络资源。 1.1.2 基于链路的拥塞控制算法 (责任编辑:qin) |