TCP拥塞控制与方法改进
- 格式:docx
- 大小:42.01 KB
- 文档页数:10
网络拥塞解决方案网络拥塞是指网络中的数据流量超过了网络资源的处理能力,导致网络传输速度变慢或者无法正常工作的情况。
为了解决网络拥塞问题,我们需要采取一系列的解决方案。
以下是一些常见的网络拥塞解决方案:1. 增加带宽增加网络带宽是解决网络拥塞的最直接方法之一。
通过增加带宽,网络可以处理更多的数据流量,提高传输速度和性能。
可以考虑升级网络设备,如更换更高速的路由器和交换机,以及扩展网络的传输介质,如光纤。
2. 流量管理和优化通过流量管理和优化,可以更有效地利用现有的网络带宽。
这可以通过使用流量调度算法和流量控制策略来实现。
例如,使用Quality of Service(QoS)技术,可以为不同类型的数据流量分配优先级,确保关键数据的传输不受拥塞影响。
3. 负载均衡负载均衡是一种将网络流量分散到多个网络设备上的方法,以避免某个设备负载过重而导致拥塞。
通过使用负载均衡器,可以将流量分配到不同的服务器或者网络链路上,从而提高整体的网络性能和可靠性。
4. 缓存技术缓存技术可以减少对网络带宽的需求,从而减轻网络拥塞问题。
通过在网络中设置缓存服务器,可以将常用的数据存储在缓存中,当用户请求这些数据时,可以直接从缓存中获取,而不必从原始服务器获取,从而减少了网络传输的数据量。
5. 数据压缩数据压缩是一种将数据流量进行压缩以减少传输时间和带宽占用的方法。
通过使用压缩算法,可以将数据流量进行压缩,并在接收端进行解压缩,从而减少了传输的数据量,提高了网络传输的效率。
6. 网络监控和故障排除定期进行网络监控和故障排除是预防和解决网络拥塞问题的重要手段。
通过使用网络监控工具,可以实时监测网络流量和性能,并及时发现并解决网络拥塞的原因。
同时,定期进行网络设备的维护和升级,可以提高网络的稳定性和性能。
综上所述,网络拥塞是一个常见的问题,但通过采取适当的解决方案,可以有效地解决这个问题。
增加带宽、流量管理和优化、负载均衡、缓存技术、数据压缩以及网络监控和故障排除等方法都可以匡助我们解决网络拥塞问题,提高网络的性能和可靠性。
网络拥塞解决方案网络拥塞是指网络中的流量超过了网络设备的处理能力,导致网络传输速度变慢或者数据丢失的现象。
为了解决网络拥塞问题,我们可以采取以下几种解决方案:一、优化网络拓扑结构1.1 网络设备升级:通过升级路由器、交换机等网络设备,提高网络设备的处理能力,减少网络拥塞的发生。
1.2 网络分流:将网络流量分流到不同的网络路径上,避免某一条路径上的流量过大导致网络拥塞。
1.3 部署负载均衡设备:通过部署负载均衡设备,将流量均匀分配到不同的服务器上,减轻单一服务器的压力,避免网络拥塞。
二、提高网络带宽2.1 增加网络带宽:通过提升网络带宽,增加网络传输速度,减少网络拥塞的可能性。
2.2 使用CDN加速:通过使用CDN加速服务,将网站内容缓存到全球各地的CDN节点上,加速用户访问速度,减少网络拥塞。
2.3 使用智能加速器:部署智能加速器,对网络流量进行优化和加速,提高网络传输效率,减少网络拥塞。
三、限制网络流量3.1 流量控制:通过设置流量控制策略,对网络流量进行限制,避免网络拥塞的发生。
3.2 QoS策略:通过设置QoS策略,对网络中的不同流量进行优先级管理,保障重要流量的传输,减少网络拥塞。
3.3 数据压缩:对网络传输的数据进行压缩处理,减少传输数据量,提高网络传输效率,减少网络拥塞。
四、网络监控和管理4.1 实时监控网络流量:通过实时监控网络流量情况,及时发现网络拥塞问题,采取相应的措施进行处理。
4.2 预测网络流量:通过对历史数据进行分析和预测,提前预知网络流量的变化趋势,采取相应的措施避免网络拥塞。
4.3 网络设备管理:定期对网络设备进行维护和管理,保障网络设备的正常运行,减少网络拥塞的发生。
五、应用流量控制策略5.1 网络流量分析:对网络流量进行深入分析,了解网络流量的特点和规律,制定相应的流量控制策略。
5.2 避免网络攻击:加强网络安全防护,防止网络攻击导致的网络拥塞,保障网络正常运行。
linux tcp默认拥塞控制算法TCP(Transmission Control Protocol,传输控制协议)是一种可靠的、面向连接的网络协议,用于在IP网络上进行数据传输。
在Linux系统上,TCP默认使用的拥塞控制算法主要有Reno、Cubic和BBR。
1. Reno算法:Reno算法是TCP最早的拥塞控制算法之一,它是基于丢包的拥塞控制算法。
Reno算法使用了两个阈值来控制发送速率,分别是慢启动阈值和拥塞避免阈值。
在慢启动阶段,发送方每经过一个往返时间RTT (Round Trip Time),就将拥塞窗口大小加倍,这样就能快速适应网络带宽。
一旦出现拥塞,就会触发拥塞避免阶段,发送速率会缓慢增长。
当发生丢包时,发送方会认为发生了拥塞,将拥塞窗口大小减半。
2. Cubic算法:Cubic算法是在Reno算法的基础上进行改进的,主要解决了Reno算法的不足之处。
Cubic算法使用了一个拟合曲线来估计网络的拥塞程度,并根据该拟合曲线调整发送速率。
Cubic算法中的拥塞控制机制是基于时间的,通过跟踪拥塞窗口的快速增长速率来判断网络的拥塞程度。
当网络发生拥塞时,拥塞窗口的增长速率会变得缓慢,从而降低发送速率。
3. BBR算法:BBR(Bottleneck Bandwidth and RTT)算法是Google开发的一种最新的拥塞控制算法,主要用于提高网络的传输效率。
BBR算法通过测量网络的带宽和往返时间来估计网络的拥塞程度,并根据拥塞程度调整发送速率。
BBR算法的特点是能够更精确地估计网络的拥塞程度,从而避免了过度拥塞和欠拥塞的情况,提高了网络的传输速度和稳定性。
总结:Linux TCP默认的拥塞控制算法主要有Reno、Cubic和BBR。
Reno 算法是基于丢包的拥塞控制算法,使用了慢启动和拥塞避免两个阈值来控制发送速率。
Cubic算法在Reno算法的基础上进行改进,使用拟合曲线来估计网络的拥塞程度,并根据拥塞程度调整发送速率。
第29卷第1期V ol 129 N o 11长春师范学院学报(自然科学版)Journal of Changchun N ormal University (Natural Science )2010年2月Feb.2010基于LwIP 的TCP 拥塞控制方法的改进王文良,张学勇,李 岩(哈尔滨理工大学,黑龙江哈尔滨 150040)[摘 要]RFC2001和RFC2081文档描述了T CP 拥塞控制方法,主要有慢启动算法、拥塞避免算法、快速重传算法和快速恢复算法;RFC2582和RFC3782文档描述了快速恢复算法NewReno 修正。
本文结合开源嵌入式T CP/IP 协议栈LwIP ,详细阐述了慢启动算法、拥塞避免算法、快速重传算法和快速恢复算法的实现方法,并根据T CP 的快速恢复算法NewReno 修正对LwIP 的T CP 拥塞控制方法的实现提出了改进建议。
[关键词]慢启动;拥塞避免;快速重传;快速恢复;NewReno 修正[中图分类号]TP31 [文献标识码]A [文章编号]1008-178X (2010)01-0045-03[收稿日期]2009-10-16[作者简介]王文良(1982-),男,黑龙江哈尔滨人,哈尔滨理工大学硕士研究生,从事计算机软件与理论研究。
T CP 拥塞控制方法是T CP 的一个重要组成部分,目标是最大限度利用网络带宽,同时不产生数据流传输中的拥塞现象。
LwIP 是瑞士计算机科学院(S wedish Institute of C om puter Science )的Adam Dunkels 等开发的一套用于嵌入式系统的开放源代码T CP/IP 协议栈,该协议栈占用很小的RAM 空间,并且可移植到多种嵌入式实时操作系统平台上,因此得到了广泛关注,LwIP 按照RFC2581的规定使用了慢启动、拥塞避免、快速重传和快速恢复进行拥塞控制,RFC2582和RFC3782文档介绍了NewReno 修正,该修正对快速重传和快速恢复算法进行了改进,解决了一个T CP 窗口内有多个包丢失情况下引发多次快速重传的问题,本文在详细分析LwIP 中T CP 拥塞控制算法的实现方法的同时,根据T CP 拥塞控制算法的NewReno 修正对LwIP 提出了改进建议。
网络拥塞解决方案网络拥塞是指在网络通信中,由于网络流量过大或者网络资源不足,导致网络传输速度变慢或者无法正常连接的现象。
为了解决网络拥塞问题,提高网络通信的效率和稳定性,需要采取一系列的解决方案。
一、流量管理流量管理是解决网络拥塞的关键手段之一。
通过合理的流量管理,可以控制网络中的数据流量,提高网络传输的效率。
以下是一些常见的流量管理技术:1.1 带宽控制:通过限制每一个用户或者每一个连接的带宽,可以确保网络资源的合理分配,避免某个用户或者连接占用过多的带宽而导致网络拥塞。
带宽控制可以通过网络设备或者软件来实现,例如路由器、交换机、防火墙等。
1.2 流量调度:流量调度是一种根据不同的网络流量特征,对流量进行优先级调度的技术。
通过合理的流量调度算法,可以保证网络中重要数据的传输优先级,提高网络的整体传输效率。
1.3 压缩与优化:对网络流量进行压缩与优化可以减少数据的传输量,从而减轻网络拥塞的程度。
常见的压缩与优化技术包括数据压缩、数据缓存、数据预取等。
二、网络扩容网络扩容是解决网络拥塞问题的另一个重要手段。
通过增加网络设备、提升网络带宽等方式,可以扩大网络的传输能力,从而减轻网络拥塞的程度。
以下是一些常见的网络扩容方案:2.1 增加服务器数量:通过增加服务器的数量,可以提高网络的处理能力,分担服务器的负载,减轻网络拥塞的压力。
2.2 增加网络带宽:通过升级网络设备、增加网络带宽等方式,可以提高网络的传输速度和容量,从而减轻网络拥塞的程度。
2.3 网络优化:通过优化网络拓扑结构、改善网络设备配置等方式,可以提高网络的传输效率和稳定性,减少网络拥塞的发生。
三、负载均衡负载均衡是一种将网络流量合理分配到多个服务器上的技术。
通过负载均衡,可以提高服务器的处理能力,减轻单个服务器的负载,从而减少网络拥塞的发生。
以下是一些常见的负载均衡技术:3.1 DNS负载均衡:通过DNS服务器将用户的请求分发到多个服务器上,实现负载均衡。
深⼊理解TCP协议及其源代码-拥塞控制算法分析这是我的第五篇博客,鉴于前⾯已经有很多⼈对前四个题⽬如三次握⼿等做了很透彻的分析,本博客将对拥塞控制算法做⼀个介绍。
⾸先我会简要介绍下TCP协议,其次给出拥塞控制介绍和源代码分析,最后结合源代码具体分析拥塞控制算法。
⼀、TCP协议1.TCP协议产⽣背景:互联⽹络与单个⽹络有很⼤的不同,因为互联⽹络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包⼤⼩和其他参数,且不同主机的应⽤层之间经常需要可靠的、像管道⼀样的连接,但是IP层不提供这样的流机制,⽽是提供不可靠的包交换。
2.TCP是能够动态地适应互联⽹络的这些特性,⽽且具备⾯对各种故障时的健壮性,且能够在不可靠的互联⽹络上提供可靠的端到端字节流⽽专门设计的⼀个传输协议。
3.TCP作⽤原理过程:应⽤层向TCP层发送⽤于⽹间传输的、⽤8位字节表⽰的数据流,然后TCP把数据流分区成适当长度的报⽂段(通常受该计算机连接的⽹络的数据链路层的最⼤传输单元(MTU)的限制)。
之后TCP把结果包传给IP层,由它来通过⽹络将包传送给接收端实体的TCP层。
TCP为了保证不发⽣丢包,就给每个包⼀个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的包发回⼀个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进⾏重传。
TCP⽤⼀个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
4.TCP协议作⽤过程的7个要点:数据分⽚、到达确认、超时重发、滑动窗⼝、失序处理、重复处理、数据校验(具体可参见百度百科对TCP的解释)5.TCP⾸部格式图:⼏个重要参数解释如下:紧急 URG —— 当 URG =1 时,表明紧急指针字段有效。
它告诉系统此报⽂段中有紧急数据,应尽快传送(相当于⾼优先级的数据)。
确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。
TCP系列39—拥塞控制—2、拥塞相关算法及基础知识⼀、拥塞控制的相关算法早期的TCP协议只有基于窗⼝的流控(flow control)机制⽽没有拥塞控制机制,因⽽易导致⽹络拥塞。
1988年Jacobson针对TCP在⽹络拥塞控制⽅⾯的不⾜,提出了“慢启动(Slow Start)”和“拥塞避免(Congestion Avoidance)”算法。
1990年Jacobson⼜做了两个修正。
在这⼆⼗来年的发展过程中,与拥塞控制相关的有四个⽐较重要的版本:TCP Tahoe、TCP Reno、TCP NewReno和TCP SACK。
TCP Tahoe是早期的TCP版本,它包括了3个最基本的算法-“慢启动”、“拥塞避免”和“快速重传(Fast Retransmit)”,但是在Tahoe版本中对于超时重传和快速重传的处理相同,⼀旦发⽣重传就会开始慢启动过程。
TCP Reno则在TCP Tahoe基础上增加了“快速恢复(Fast Recovery)”算法,针对快速重传作出特殊处理,避免了⽹络拥塞不严重时采⽤“慢启动”算法⽽造成过度减⼩发送窗⼝尺⼨的现象。
TCP NewReno对TCP Reno中的“快速恢复”算法进⾏了修正,它考虑了⼀个发送窗⼝内多个数据包丢失的情况。
在Reno版中,发送端收到⼀个新的ack number后就退出“快速恢复” 阶段,⽽在NewReno版中,只有当所有的数据包都被确认后才退出“快速恢复”阶段。
TCP SACK关注的也是⼀个窗⼝内多个数据包丢失的情况,它避免了之前版本的TCP重传⼀个窗⼝内所有数据包的情况,包括那些已经被接收端正确接收的数据包,⽽只是重传那些被丢弃的数据包。
传统的TCP拥塞控制算法主要就由慢启动、拥塞避免、快速重传、快速恢复这4个基础算法组成,这四个基础算法在RFC5681规范中进⾏了描述。
后续我们将会分别对这些拥塞控制相关的算法做介绍,在介绍这些拥塞控制的相关算法之前我们先介绍⼀下拥塞控制中的数据包守恒原则和linux中拥塞控制的背景知识,以⽅便后⾯进⾏更进⼀步的介绍。
TCP拥塞控制算法比较
一、概述
TCP拥塞控制算法是确保网络正常运行最重要的算法之一,它通过限
制发送端的发送速率来控制拥塞,确保网络中数据的可靠传输、有效利用
网络带宽以及网络拥塞的有效控制。
近年来,随着网络技术的发展和应用,网络的负载和复杂性不断增加,TCP拥塞控制算法的重要性也日益凸显。
研究者们依据其独特的网络环境,提出了多种拥塞控制算法,他们的特点
不同,控制单元也各不相同。
本文将对目前主要的TCP拥塞控制算法进行
比较,以及介绍拥塞控制算法的优缺点。
1.慢启动算法(Slow-start Algorithm)
慢启动算法是TCP拥塞控制的基础,它主要用来调整发送端的发送速率,以有效地使用网络资源,改善网络的性能。
慢启动算法的拥塞控制单
元为拥塞窗口(Congestion Window),当拥塞窗口大小达到一定范围时,发送端将发送报文段,否则将暂时停止发送,以减少网络拥塞情况的发生。
2.拥塞避免算法(Congestion Avoidance Algorithm)
是TCP拥塞控制机制的另一个组成部分,它在慢启动算法的基础上增
加了一种自适应调整方法,使得发送端的发送速率可以根据拥塞环境的实
时变化而动态调整。
TCP协议对网络延迟的影响与优化方法一、TCP协议对网络延迟的影响网络延迟是指在数据传输过程中所需要的时间,它直接影响了网络的速度和用户体验。
而TCP协议作为互联网中最重要的传输协议之一,对网络延迟有着重要的影响。
1. TCP三次握手在TCP协议中,通信的双方需要进行三次握手才能建立连接。
这三次握手的过程会引入一定的延迟。
首先,客户端发送SYN包给服务器,服务器接收到后回复一个SYN+ACK包给客户端,最后客户端再回复一个ACK包给服务器。
这三次握手的过程中,每一次都存在网络传输的时间以及服务器的处理时间,从而增加了延迟。
2. 慢启动TCP协议中的慢启动机制也会导致延迟的增加。
当建立连接后,TCP会根据网络的拥塞情况以及接收方的反馈来调整发送方的发送窗口大小。
而在连接刚建立时,发送方会以较小的窗口大小来发送数据,然后逐渐增大窗口大小,直到达到网络的拥塞点。
在慢启动阶段,由于发送窗口较小,每次发送的数据量有限,导致传输速度较慢,从而增加了延迟。
3. 丢包重传由于网络不稳定或拥塞等原因,TCP协议中的数据包有可能会丢失。
当发生丢包时,TCP会触发丢包重传机制,发送方需要重新发送丢失的数据包。
而在重传的过程中,原本的数据传输会暂停,延迟也会随之增加。
二、优化方法针对TCP协议对网络延迟的影响,有一些优化方法可以提供参考。
1. 拥塞控制算法的优化TCP协议中的拥塞控制算法对提高传输效率以及减少延迟至关重要。
目前,一些优化的拥塞控制算法如TCP BBR算法已经被广泛使用。
BBR算法通过对网络带宽和拥塞状态的估计,实时调整发送方的发送窗口大小,提高传输效率并减少延迟。
2. 使用加速技术为了减少网络延迟,可以考虑使用一些加速技术,如使用CDN(内容分发网络),通过就近访问服务器,减少数据传输距离和延迟;使用加速服务,通过压缩和优化数据传输,减少网络延迟。
这些加速技术能够有效提高网络传输的速度和响应时间。
3. TCP优化工具的使用针对TCP协议的一些问题,也可以使用一些TCP优化工具来提高网络延迟。
TCP拥塞控制算法比较TCP (Transmission Control Protocol) 是一种为互联网设计的通信协议,在传输数据时提供可靠、有序、高效的数据传输。
为了提高网络性能和稳定性,TCP采用了多种拥塞控制算法。
在本文中,我们将比较几种常用的TCP拥塞控制算法,包括慢启动、拥塞避免、快速恢复和快速重传。
1. 慢启动(Slow Start):慢启动是TCP连接建立后的初始阶段,其目的是为了避免网络拥塞。
慢启动开始时,发送方将拥塞窗口设置为一个较小的值,然后每当收到一个确认ACK时,窗口大小就翻倍,直到达到一个拥塞窗口阈值。
慢启动算法的好处是可以逐渐增加发送速率,以避免一开始就发送大量的数据导致网络拥塞。
然而,慢启动也可能导致TCP流量在网络中迅速增加,从而导致网络拥塞。
因此,慢启动算法需要与拥塞避免算法配合使用。
2. 拥塞避免(Congestion Avoidance):拥塞避免是TCP的一种算法,用于在慢启动阶段后维持合适的发送速率。
一旦达到慢启动阈值,发送方将进入拥塞避免模式。
在拥塞避免模式中,发送方每次收到一个确认ACK时,将窗口大小增加一个较小的值。
通过逐渐增加窗口大小,TCP可以确定一个合适的发送速率,以避免网络拥塞。
拥塞避免算法通常与慢启动算法结合使用,以实现更好的性能和稳定性。
3. 快速恢复(Fast Recovery):快速恢复是一个TCP的拥塞控制算法,用于在网络拥塞时快速恢复发送速率。
当发送方连续收到三个重复的确认ACK时,表示网络可能发生了拥塞。
在拥塞发生时,发送方将进入快速恢复模式,将拥塞窗口减半,并继续发送数据。
然后,发送方将进入拥塞避免模式,逐渐增加窗口大小,以避免再次出现拥塞。
快速恢复算法的好处是可以快速适应网络拥塞,并尽快恢复发送速率。
然而,快速恢复也可能导致网络拥塞的进一步加剧,因此需要合适的拥塞避免算法进行配合。
4. 快速重传(Fast Retransmit):快速重传是TCP的一种拥塞控制算法,用于在丢包发生时快速重新传输丢失的数据。
tcp队头阻塞解决方案TCP队头阻塞是指在TCP传输过程中,由于网络拥塞或者链路质量不佳等原因,导致数据包在传输过程中出现延迟,从而造成后续数据包无法及时到达接收端的现象。
这种情况会导致TCP连接的传输效率下降,影响网络的稳定性和性能。
针对TCP队头阻塞问题,我们可以采取一些解决方案来提高传输效率和降低延迟。
下面将介绍几种常见的解决方案。
1. 建立多个TCP连接:通过建立多个TCP连接,可以将数据包分散到不同的连接中进行传输,从而减小单个连接的负载压力,降低队头阻塞的发生概率。
这种方法可以通过应用层的并行传输实现,也可以通过使用多个IP地址来创建多个TCP连接。
2. 使用流量控制和拥塞控制算法:流量控制和拥塞控制是TCP传输过程中的两种重要机制,可以有效地避免队头阻塞的发生。
流量控制通过发送方和接收方之间的通信来调整发送速率,使得接收方能够及时处理接收到的数据包。
拥塞控制则通过监测网络的拥塞程度,动态调整发送速率,避免过多的数据包在网络中传输,从而减少队头阻塞的发生。
3. 使用更快的传输协议:TCP是一种可靠但相对较为复杂的传输协议,对于实时性要求较高的应用场景可能会出现队头阻塞问题。
在这种情况下,可以考虑使用UDP等传输协议,虽然UDP不具备TCP的可靠性,但由于其简单性和低延迟的特点,可以更好地满足实时传输的需求。
4. 使用加速器和优化器:加速器和优化器是一种通过优化网络传输过程来减少延迟和提高传输效率的解决方案。
加速器可以通过优化数据包的传输路径,减少网络延迟,从而降低队头阻塞的发生概率。
优化器则可以对数据进行压缩和重组,减少传输的数据量,提高传输效率。
5. 优化应用程序设计:在应用程序设计过程中,可以采用一些优化策略来降低队头阻塞的发生。
例如,可以使用分段传输技术将大文件拆分成多个小文件进行传输,从而减小单个数据包的大小,降低传输延迟。
另外,合理设置数据包的发送间隔和超时时间也可以有效地避免队头阻塞的发生。
题 目:TCP拥塞控制与方法改进 摘 要 如今网络已经离不开人们的生活,发展势头迅猛,网络的终端设备不仅在数量上,种类也越来越多,在此发展之下,保证大量的网络数据传输与网络性能相协调是极其重要的,经典的TCP拥塞控制机制是网络发展历史中人们想出的一种解决网络拥塞的方法,但如何适应当今网络发展的需求相信还是靠人们不断的探索来寻找合适的答案。本文致力于对经典TCP拥塞控制机制的讨论并提出相应的改进思路。
关键字:拥塞控制;慢启动;阈值;TCP拥塞窗口;数据包 一、概述 1.1TCP网络拥塞控制 TCP 是因特网中使用最广泛的一种传输协议,它是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,之所以应用广泛一大部分是由于它的可靠性、稳定性,它为通信的双方提供了可靠的端到端的服务,而实现这一可靠服务的便是 TCP 所具有的可靠传输机制,其中包括重传、序号、确认号、定时、流量控制及拥塞控制。 当网络中存在过多的数据包时,网络的性能就会下降,这种现象称为拥塞。拥塞导致的直接后果是分组丢失率增加,端到端延迟加大,甚至有可能使整个系统发生崩溃。1986年10月,由于拥塞崩溃的发生,美国LBL到UC Berkeley的数据吞吐量从32Kbps跌落到4obps(Jacobsonv,1958)。当网络处于拥塞崩溃状态时,微小的负载增量都将使网络的有效吞吐量(Goodput)急剧下降。
图1-1吞吐量和负载的关系图 图1.1描述了网络负载和吞吐量之间的关系。当负载较小时,吞吐量的增长和负载相比基本成线性关系,延迟增长缓慢;在负载超过Knee点后,吞吐量增长缓慢,延迟增长较快;当负载超过Cliff点之后,吞吐量急剧下降,延迟急剧上升。通常将Knee点附近称为拥塞避免区间;Knee到Cliff之间是拥塞恢复区间;Cliff之外是拥塞崩溃区间。可以看出,负载在肠ee附近时网络的使用效率最高。 拥塞控制就是由网络节点来采取措施避免拥塞的发生或者对拥塞的发生作出反应,使得网络能够传输较大的有效吞吐量,在图1.1中就是使负载保持在知ee附近。拥塞现象的发生和TCP八P网络的设计机制有着密切都联系。TCP/IP网络具有如下几个特点: (1)分组交换(packet-switched)网络。与电路交换(circul-switched)相比,分组交换通过共享提高了资源的利用效率,但这会引起分组在网络中滞留,造成分组数据可能出现“乱序”现象,增加了端系统处理乱序分组的复杂性。 (2)无连接(onneetionless)网络。TCP/IP网络中,从网络层的角度来看,节点之间在发送数据之前不需要建立连接。无连接模型简化了网络的设计,在网络的中间节点上不需要保存与连接到有关信息。但是无连接模型难以引入“接纳控制”(admissioncontrol)机制,在用户需求大于网络资源时,难以保证服务质量(QOS);无连接也是网络中出现分组乱序的一个主要原因。 (3)“尽力而为”的服务模型。所谓“尽力而为”的服务,是指网络不对数据传输的服务质量提供保证。这与网络早期的应用有关,传统的网络应用主要是数据业务,它们对网络性能(带宽、延迟、丢失率等)的变化不敏感,“尽力而为”服务能够满足需要。但“尽力而为”服务不能很好地满足新出现的多媒体应用的要求,这些应用对延迟、速率等性能的变化比较敏感。 虽然随着科技的发展,网络设备的处理速度不断加快、网络带宽持续增长,但是硬件的建设的速度有时赶不上应用需求的增长。而且,很多时候,即使局部的网络资源很充足,仍然会出现网络拥塞、分组数据丢失,从而导致性能下降。这是因为由于互连网络是一个及其复杂的分散系统,网络中总是存在资源“相对”短缺的位置,成为网络性能提高的瓶颈。 网络中拥塞现象发生的原因是“需求”大于“供给”。网络中有限的资源由多个用户共享使用。由于没有“接纳控制”策略,网络无法根据资源的情况限制用户的数量;同时,互连网络是一个分散控制系统,由于缺乏中央集成控制,网络无法控制用户使用资源的数量。目前,因特网上不断增长的用户和应用的数量,必然会导致网络发生拥塞。虽然拥塞源于资源短缺,但增加资源并不能避免拥塞现象的发生,有时甚至会加重拥塞程度。例如,增加路由器的队列缓存会增大分组通过路由器的延迟,如果总延迟超过端系统重传时钟的设定值,就会导致分组 重传,反而加重了网络拥塞。 图1-2网络的不均衡性示意图 拥塞总是发生在网络中资源“相对”短缺的地方,这反映了互连网络的不均衡性。这个不均衡性一方面表现在资源的不均衡,如图1.2(a)中带宽分布不均衡:当s以1MbPs的速率向D发送数据时,在路由器R处会发生拥塞。另一方面是由于流量的不均衡,如图1.2(b)中带宽分布是均衡的,但当Sl和S2都以1MbPs的速率向C发送数据时,在路由器R也会发生拥塞。因特网中资源和流量分布的不均衡是广泛存在的,由此导致的拥塞不能通过增加资源的方法解决。
1.2拥塞控制及其研究意义 拥塞控制策略包括拥塞避免(congestion avoidance)和拥塞控制(congestioncontrol)这两种不同的机制。拥塞避免是“预防机制”,它的目标是避免网络进入拥塞状态,使网络运行在高吞吐量、低延迟的状态下。拥塞控制是“恢复”机制,它用于把网络从拥塞状态中恢复出来。在网络控制的研究中,拥塞控制和流量控制是网络的经典问题,但它们两个的概念比较容易混淆。 拥塞控制必须确保网络能进行数据传输,这是全局性的问题,涉及到所有主机、路由器以及所有其他将导致削弱网络负荷能力的因素。而流量控制只与发送者和接受者之间的点到点的数据传输有关,它的任务是确保一个快速发送方的发送速第一章绪论率不超过接收方的最大接受速度。可以看到,流量控制的功能实现位于网络的传输层,实现比较简单;而拥塞控制从广义上讲,涉及网络的所有层次,在具体的实现中,拥塞控制一般通过网络层和传输层相互协调来完成。 从不同的角度,拥塞控制可以被分为很多类。对目前网络拥塞控制研究现状的分类我们将在下一小节中进行介绍。 拥塞控制的研究目的不是要完全避免拥塞,而是研究怎样的拥塞程度是合适 的。这是因为:TCP/IP网络采用分组交换技术来提高网络链路的利用率,造成路由器的队列缓存经常被占;如果路由器的队列缓存总是空的,虽然传输延迟小,但是网络的利用率也低;如果路由器队列缓存总是被占,传输延迟变大,但是网络利用效率也高。拥塞控制的目标是实现网络利用率和传输延迟等综合性能指标的最优化。 由此可以看到,通过网络的拥塞控制,可以提高网络的总体性能,保证网络系统长期的稳定性和鲁棒性。
二、经典TCP拥塞机制 2.1 网络拥塞的原因及所产生的开销 一般网络之所以会产生拥塞,大致有三个原因: (1)带宽不足:当输入带宽大于输出带宽,较低的一方就会出现瓶颈,使数据包在其外堆积,形成拥塞。 (2)路由器缓存空间不足:几个输入链路同时向一个路由器传送数据包,当路由器输出链路速度较小,使得数据包在路由器缓存队列中排队,时间长了则会超时,发送方会重传,若队列已满再过来的数据包会被丢掉,也会造成重传。 (3)处理器处理能力较弱:处理器不能及时处理接收缓存中的数据包,TCP 有相应的流量控制机制来应对,但是造成的结果也是重传数据包。 拥塞控制更倾向于整个网络的拓扑结构,其规模大,影响广,相应所产生的问题也是巨大的,会影响到整个网络的传输效率,网络拥塞开销有如下几点: (1)过多的数据包在路由器的队列中产生巨大的排队延时。 (2)数据包延时过长导致不必要的重传。 (3)某个路由器缓存溢出导致的丢包将浪费掉整个上游路由器的工作。
2.2经典 TCP 拥塞控制机制 2.2.1Tahoe 算法 1988 年V.Jacobson首先提出了基于“慢启动”和“拥塞避免”的 Tahoe 算法,这也是最早的 TCP 拥塞控制算法。 慢启动:由于发送端不知道网络当前状况,所以在开始发送时如果直接向网络中发送大量数据包,很可能会使网络变得拥塞,这里的慢启动的解决办法是发送方首先发送一个数据包使拥塞窗口(congestion window,cwnd)大小初始化为 1,每收到一个确认,发送方发送窗口就增加 1,像这样发送速率以指数形式增长。 拥塞避免:在早期的 Tahoe 算法中,当发送方收到三个重复的 ACK 或者超时事件发生时所采取的动作都是现将拥塞窗口大小调整为 1,将慢启动阈值(ssthresh)设置为当前拥塞窗口大小一半,之后进入慢启动阶段,当cwnd>=ssthresh后进入拥塞避免阶段,此阶段在每次收到一个 ACK 时只增加 1/cwnd个数据包,这样,在一个 RTT 内,cwnd将增加 1,呈线性增长趋势。
2.2.2Reno 算法 TCP 的 Reno 算法在 Tahoe 算法的基础之上采取了对不同丢包情况的不同策略,在发生超时事件后,TCP 所采取的动作和 Tahoe 算法一样。而发送方收到三个重复的 ACK 后所采取的动作却与超时事件发生不同。早期收到三个重复的 ACK 后所采取的是快速重传算法,算法所采取的策略是把ssthresh设置为cwnd的一半,将cwnd再设置为ssthresh的值(具体实现有些为 ssthresh+3)再次直接进入拥塞避免阶段。而后提出的快速恢复算法是在快速重传算法上添加了一些东西,具体来说快速恢复的主要步骤是: (1)当收到 3 个重复 ACK 时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加 3,然后重传丢失的报文段,加 3 的原因是因为收到 3 个重复的 ACK。 (2)收到重复的 ACK 时,拥塞窗口增加 1。 (3)当收到新的数据包的 ACK 时,把cwnd设置为第一步中的ssthresh的值。原因是因为该 ACK 确认了新的数据,说明从重复 ACK 时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。
2.2.3其他算法 在 1994 年,L.S.Brakmo等人提出了一种新的拥塞控制策略:TCP Vegas 算