TCP/IP网络拥塞控制机制
计算机网络在过去十几年中经历了爆炸式的增长,随着互联网技术的迅猛发展,越来越多的用户使用网络中的资源,虽然网络带宽等资源也在不断增加,但与日益增长的用户数量比起来仍然不能满足用户的需求,网络拥塞问题逐渐暴露出来。网络拥塞问题得到全世界的关注始于1986年10月,当时美国LBL到UC Berkeley网络由于发生严重的网络拥塞导致网络崩溃,使得数据吞吐量从32kbps跌落到40bps,至此以后,拥塞控制成为一个热点研究领域。如今,网络拥塞已经成为制约网络发展和应用的一个瓶颈,如何更好的预防和控制拥塞,使网络具有低丢包率和低时延的同时达到资源的最大效用是近年来网络研究的热点话题。
目前Internet实际使用的拥塞控制机制基本建立在TCP的窗口控制基础之上,IP层的路由器所起作用相对较小。根据MCI的统计,互联网上95%的数据流使用的是TCP/IP协议。TCP/IP的拥塞控制机制对控制拥塞具有特别重要的意义,是确保Internet鲁棒性(鲁棒性:就是系统的健壮性,它是在异常和危险情况下系统生存的关键)的关键因素,基于 TCP/IP的网络拥塞控制机制是一个复杂而艰难的任务。在近十年中学术界对此问题做了大量的研究,进行了不少的理论方面的实验,产生了许多非常有用的结果。
1. TCP/IP概述
TCP/IP 协议概述早在70 年代中期,Appanet (互联的前身“阿帕网”) 为了实现异种网络之间的互联与互通,推出了TCP/ IP 体系结构和协议规范。时至今日, TCP/IP 协议已经成为了Internet 的通信标准,并由单纯的TCP/ IP协议发展成为一系列以IP 为基础的TCP/ IP 协议簇。TCP/ IP协议簇为互联网提供了基本的通信机制。TCP/ IP 以其两个主要协议——传输控制协议( TCP) 和网络互联协议( IP) 而得名。TCP 协议提供面向连接的、可靠的、全双工的、点对点的通信服务,它可以保证数据按照顺序、没有重复地、可靠地到达。由于TCP 建立的连接是由软件实现的逻辑上的连接而并非物理连接,故TCP 建立的连接叫做虚连接(virtual connection)。互联网采用的是无连接的端到端数据包交换,提供“尽力而为”(best effort) 服务模型的设计机制。这种机制的最大优势是设计简单,可扩展性强。互联网在过去的十几年中经历了爆炸式的增长,这已经充分证明了这种设计机制的成功。然而这种优势并不是没有代价的,随着互联网用户数量的膨胀,网络的拥塞问题也越来越严重。例如由于队列溢出,互联网路由器会丢弃约10 %的数据包。据统计,互联网上95 %的数据流使用的是TCP/ IP 协议,因此,互联网上主要的互连协议TCP/ IP 的拥塞控制(congestioncontrol) 机制对控制网络拥塞具有特别重要的意义。拥塞控制是确保互联网鲁棒性(注:鲁棒性 robustness:就是系统的健壮性,它是在异常和危险情况下系统生存的关键)的关键因素,也是各种管理控制机制和应用的基础,因此关于互联网的拥塞控制问题一直是网络研究的一个热点。
2. 网络拥塞的定义及产生的原因
2.1网络拥塞
当主机传送到通信子网中的分组数量在其传输容量之内时,它们将全部传送到目的地。然而在系统的运行过程中,会出现网络通信故障,或网络负载超过了可用资源,出现数据包丢失,导致传输延时增大,网络吞吐量下降甚至网络完全瘫痪等现象,即发生网络拥塞。在网络发生拥塞时,会导致吞吐量下降,严重时会发生“拥塞崩溃”( congestion collap se)现象。由于Internet采用的是统计复用( StatisticalMultiplexing) 技术, 大量的数据流共享一条 \o "链接" 链接,其运行环境在不断发生变化, 基于TCP/IP协议栈的网络通信协议是Internet中的主流通信协议, 这种网络采用的是尽力而为( Best- Effort) 的服务模型, 所有的数据流被不加区分地在网络中传输, 网络无法给用户一个定量的性能指标,如吞吐量、时延、丢失率等, 因此, 在目前网络带宽有限, 数据传输的需求量远远超过网络的瓶颈带宽时, 必定会产生拥塞, 此拥塞控制机制显得尤为重要。我们用图1来描述拥塞的发生。当负载达到网络容量时,吞吐量呈现出缓慢增长,而响应时间急剧增加,这一点称为Knee。如果负载继续增加,路由器开始丢包,当负载超过一定量时,吞吐量开始急剧下降,这一点称为Cliff。拥塞控制机制实际上包含拥塞避免( congestion avoidance)和拥塞控制( con-gestion control)两种策略。拥塞避免的目的是使网络运行在Knee附近,避免拥塞的发生;而拥塞控