4.1 引言 20
4.2 仿真研究 21
4.2.1 网络拓扑 21
4.2.2 仿真结果 22
结 论 28
致 谢 29
参考文献 29
1 绪论
1.1 网络拥塞控制的研究意义
上世纪60年代计算机网络的雏形在美国出现,在这之后的几十年内计算机网络的规模飞速发展,互联网已经将其触角延伸至世界的每一个角落,它在各个领域内都得到了广泛的应用,同时与计算机网络相关的技术也得到了迅速的发展。
但是在这个飞速发展的过程中,也遇到了很多的瓶颈。其中之一就是网络拥塞(congestion)。例如:在1986年,因为网络的拥塞崩溃,美国LBL到UC Berkeley的数据吞吐量从32Kbps跌落到40bps,致使网络完全不能使用。
网络拥塞(congestion)将会导致各项服务性能急剧下降,用户的请求不能得到及时有效地响应。大量的数据包被中间接点丢弃(packet loss),网络端到端的延时(RTT)增长并且越发不稳定,实际有效的吞吐量(throughput)严重降低,在极端的情况下,甚至会发生网络崩溃(collapse)。
在网络负载刚开始增加的阶段,因为网络处理能力可以满足用户的需求,所以各项服务性能指标均随着负载的增加而增加。而当负载增加到一定程度之后,由于网络的处理能力不能完全满足用户的要求,轻度拥塞开始显现,各项服务性厶匕E,七匕3H标增长速度放缓,有效的吞吐量开始降低,网络延时逐渐增长,出现数据包被迫丢弃的现象等等。此时若不采取拥塞避免的措施,网络的拥塞程度将会逐渐加深,最终各项性能指标急剧下降,网络发生瘫痪。
就目前而言,网络上绝大部分的数据流是遵循TCP/IP协议的,因此针对TCP/IP协议数据流的拥塞控制机制在整个网络的拥塞控制机制中占有主要地位。拥塞控制机制能够保证网络在各种强烈的内部和外部干扰下依然可以达到各项用户层服务性能指标,主要包括:实际有效吞吐量高、网络延时低、丢包率低等等。但是由于网络具有很强的分布性、不均衡性、非线性、大延时等特性,网络拥塞控制方面的研究依然是当今的一个热点方向。
1.2 网络拥塞定义
当主机传送到通信子网中的分组数量在其传输容量之内时,它们将全部传送到目的地。然而在系统的运行过程中,会出现网络通信故障,或网络负载超过了可用资源,出现数据包丢失,导致传输延时增大,网络吞吐量下降甚至网络完全瘫痪等现象,即发生网络拥塞。当负载达到网络容量时,吞吐量呈现出缓慢增长,而响应时间急剧增加,这一点称为Knee。如果负载继续增加,路由器开始丢包,当负载超过一定量时,吞吐量开始急剧下降,这一点称为Cliff。拥塞控制机制实际上包含拥塞避免和拥塞控制两种策略。拥塞避免的目的是使网络运行在Knee附近,避免拥塞的发生;而拥塞控制就是网络节点采取措施来避免拥塞的发生或者对拥塞的发生做出反应,目的则是使得网络运行在Cliff的左侧区域。前者是一种“预防”措施,维持网络的高吞吐量、低延迟状态,避免进入拥塞;后者是一种“恢复”措施,使网络从拥塞中恢复过来,进入正常的运行状态。
1.3 网络拥塞控制研究的历史
1.4 网络拥塞的研究现状
2 TCP/IP拥塞控制策略
2.1 TCP层的拥塞控制机制
2.1.1 TCP拥塞控制简介
TCP层拥塞控制协议采用基于滑动窗口的和式增加积式减少(AIMD)的拥塞控制机制,当源端未检测到拥塞发生时,拥塞窗口进行加性的增加。而当源端检测到拥塞发生时,拥塞窗口进行乘性的降低。这样的一种机制使得网络未发生拥塞时,源端可以不断地加大发送速率,网络资源被充分利用。而当拥塞发生时,源端迅速地降低发送速率,避免拥塞的加剧。TCP协议是通过重传机制保证数据传输的高可靠性。源端维持一个已经发送但是尚未得到确认的数据包的队列,当在重传时间内没有收到某个数据包的应答包时,则认定该数据包已经丢失,重发这个数据包。根据返回信息,TCP源端维持一个动态的发送窗口,依据这个窗口来调节发送速率。这个协议虽然通过滑动窗口对发送速率进行控制,但是过于强调端节点的作用,忽略了中间节点在网络运行中的作用。因为在发生超时重传时,数据包已经丢失或者因为长时间的排队而留存在某个中间节点的缓冲区之中。此时拥塞已经发生,而TCP源端要在经过一段的时间之后才开始调整发送速率,具有很大的滞后性。因此该协议并没有从根本上解决网络拥塞的问题,其不足之处也逐渐被人们所发现。因此出现了一些对TCP协议的改进版本。1988年Van Jacobson提出了“慢启动”(slow start)算法,“拥塞避免’’(congestion avoidance)算法,1990年出现的TCP Reno版本增加了“快速重传(fast recovery)算法”和“快速恢复(fast recovery)”算法,这四个算法组成TCP拥塞控制的核心成分,新出现的改进版本有New.Reno,SACK等。论文网