拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中经常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(即发生局部死锁)。 网络的吞吐量与通信子网负荷(即通信子网中正在传输的分组数)有着密切的关系。当通信子网负荷比较小时,网络的吞吐量(分组数/秒)随网络负荷(每个节点中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了拥塞现象。在一个出现拥塞现象的网络中,到达某个节点的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近为零。
造成拥塞的原因:
引用
1. 多条流入线路有分组到达,并需要同一输出线路,此时,如果路由器没有足够的内存来存放所有这些分组,那么有的分组就会丢失。
2. 路由器的慢带处理器的缘故,以至于难以完成必要的处理工作,如缓冲区排队,更新路由表等
防止拥塞的方法:
引用
1. 在传输层采用:重传策略、乱序缓存策略、确认策略、流控制策略和确定超时策略。
2. 在网络层采用: 子网内部的虚电路与数据报策略、分组排队和服务策略、分组丢弃策略、路由算法和分组生存管理
3. 在数据链路层采用:重传策略、乱序缓存策略、确认策略和流控制策略。
拥塞控制方法
引用
(1) 缓冲区预分配法。该法用于虚电路分组交换网中。在建立虚电路时,让呼叫请求分组途经的节点为虚电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个"忙"信号给呼叫者。这样,通过途经的各节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分组。此时的分组交换跟电路交换很相似。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确认信息。该确认一方面表示接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一个分组。上面是"停一等"协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除拥塞的可能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源(线路容量或存储空间)被某个连接占有,因此网络资源的有效利用率不高。这种控制方法主要用于要求高带宽和低延迟的场合,例如传送数字化语音信息的虚电路。
(2) 分组丢弃法。该法不必预先保留缓冲区,当缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止拥塞发生不会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的备份,以便拥塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃分组的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在尝试一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。但是不加分辨地随意丢弃分组也不妥,因为一个包含确认信息的分组可以释放节点的缓冲区,若因节点元空余缓冲区来接收含确认信息的分组,这便使节点缓冲区失去了一次释放的机会。解决这个问题的方法可以为每条输入链路永久地保留一块缓冲区,以用于接纳并检测所有进入的分组,对于捎带确认信息的分组,在利用了所捎带的确认释放缓冲区后,再将该分组丢弃或将该捎带好消息的分组保存在刚空出的缓冲区中。
(3) 定额控制法。这种方法在通信子网中设置适当数量的称做"许可证"的特殊信息,一部分许可证在通信子网开始工作前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送来自源端系统的分组时,它必须首先拥有许可证,并且每发送一个分组注销一张许可证。目的节点方则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。这样便可确保子网中分组数不会超过许可证的数量,从而防止了拥塞的发生。
死锁及其防止
引用
拥塞的极端后果是死锁。
死锁是网络中最容易发生的故障之一,即使在网络负荷不很重时也会发生。死锁发生时,一组节点由于没有空闲缓冲区而元法接收和转发分组,节点之间相互等待,既不能接收分组也不能转发分组,并一直保持这一僵局,严重时甚至导致整个网络的瘫痪。此时,只能靠人工干预来重新启动网络,解除死锁。但重新启动后并未消除引起死锁的隐患,所以可能再次发生死锁。死锁是由于控制技术方面的某些缺陷所引起的,起因通常难以捉摸、难以发现,即使发现,也常常不能立即修复。因此,在各层协议中都必须考虑如何避免死锁的问题。
(1) 存储转发死锁及其防止。最常见的死锁是发生在两个节点之间的直接存储转发死锁。例如,A节点的所有缓冲区装满了等待输出到B节点的分组,而B节点的所有缓冲区也全部装满了等待输出到A节点的分组;此时,A节点不能从B节点接收分组,B节点也不能从A节点接收分组,从而造成两节点间的死锁。这种情况也可能发生在一组节点之间,例如,A节点企图向B节点发送分组、B节点企图向C节点发送分组、而C节点又企图向A节点发送分组,但此时每个节点都无空闲缓冲区用于接收分组,这种情形称做间接存储转发死锁。当一个节点处于死锁状态时,所有与之相连的链路将被完全拥塞。
一种防止存储转发死锁的方法是,每个节点设置M+1个缓冲区,并以0到M编号。M为通信子网的直径,即从任一源节点到任一目的节点间的最大链路段数。每个源节点仅当其0号缓冲区空时才能接收源端系统来的分组,而此分组仅能转发给1号缓冲区空闲的相邻节点,再由该节点将分组转发给它的2号缓冲区空闲的相邻节点……最后,该分组或者顺利到达目的节点并被递交给目的端系统,或者到了某个节点编号为M的缓冲区中再也转发不下去,此时一定发生了循环,应该将该分组丢弃。由于每个分组都是按照编号递增规则分配缓冲区,所以节点之间不会相互等待空闲缓冲区而发生死锁现象。这种方法的不足之处在于,当某节点虽然有空闲缓冲区,但正巧没有所需要的特定编号的缓冲区时,分组仍要等待,从而造成了缓冲区和链路的浪费。
另一种防止存储转发死锁的方法是,使每个分组上都携带一个全局性的惟一的"时间戳",每个节点要为每条输入链路保留一个特殊的接收缓冲区,而其它缓冲区均可用于存放中转分组。在每条输出链路的队列上分组按时间戳顺序排队。例如,节点A要将分组送到节点B,若B节点没有空闲缓冲区,但正巧有要送到A节点的分组,此时A、B节点可通过特殊的接收缓冲区交换分组;若B节点既没有空闲缓冲区,也没有要送往A节点的分组,B节点只好强行将一个出路方向大致与A节点方向相同的分组与A节点互相交换分组,但此时A节点中的分组必须比B节点中的分组具有更早的时间戳,这样才能保证子网中某个最早的分组不受阻挡地转发到目的地。由此可见,每个分组最终总会成为最早的分组,并总能被一步一步地发送到目的节点,从而避免了死锁现象的发生。
(2) 重装死锁及其防止。死锁中比较严重的情况是重装死锁。假设发给一个端系统的报文很长,被源节点拆成若干个分组发送,目的节点要将所有具有相同编号的分组重新装配成报文递交给目的端系统,若目的节点用于重装报文的缓冲区空间有限,而且它无法知道正在接收的报文究竟被拆成多少个分组,此时,就可能发生严重的问题:为了接收更多的分组,该目的节点用完了它的缓冲空间,但它又不能将尚未拼装完整的报文递送给目的端系统,而邻节点仍在不断地向它传送分组,但它却无法接收。这样,经过多次尝试后,邻节点就会绕道从其它途径再向该目的节点传送分组,但该目的节点已被死锁,其周边区域也由此发生了拥塞。下面几种方法可用以避免重装死锁的发生:
1.允许目的节点将不完整的报文递交给目的端系统;
2.一个不能完整重装的报文能被检测出来,并要求发送该报文的源端系统重新传送;
3.为每个节点配备一个后备缓冲空间,用以暂存不完整的报文。
1,2两种方法不能很满意地解决重装死锁,因为它们使端系统中的协议复杂化了。一般的设计中,网络层应该对端系统透明,也即端系统不该考虑诸如报文拆、装之类的事。3方法虽然不涉及端系统,但使每个节点增加了开销。
拥塞控制的当前标准
引用
端到端拥塞控制的IETF标准关注的方面包括集中在特定的协议(例如TCP协议[RFC2581],可靠的多点传送协议[RFC2357]);终端节点和路由器之间的拥塞信息(例如明确的拥塞通告[RFC2481])交换的句法和语义;不同服务的服务质量的期望值。端到端的拥塞控制的作用也在一个关于“Internet中的队列管理和避免拥塞的建议”[参见RFC2309]的RFC报告中进行了讨论。RFC2309提出了在路由器中活跃的队列管理机制的配置和对路由器机制设计的延续来处理对拥塞通告无回应的流。我们能够轻松地从RFC2309中借用一些端到端的拥塞控制的概括性的讨论。
与上面提到的RFCs资料相比,本文档对拥塞控制的原理进行更一般性的讨论。Internet成功的一个关键因素就是TCP协议的避免拥塞机制。当前TCP协议在Internet中仍然是占主导地位的传输协议,但它不是适用于任何地方,有越来越多的应用由于某种原因没有选择使用TCP协议。通信不仅包括多点传送通信,而且包括单点传送通信,诸如不需要可靠性的流化的多媒体,以及包括象DNS(DomainNameServer域名服务器)或路由信息的通信,它们带有被认为对网络运行至关重要的短信息。许多通信并不使用任何形式的预留带宽或端到端拥塞控制。为了保持最优传输量,端到端的拥塞控制的继续使用对保持Internet的稳定至关重要。
完成拥塞控制时,确定拥塞窗口大小的过程
引用
确定拥塞窗口的大小的过程:在刚建立连接时,将拥塞窗口的大小初始化为该连接所需的最大连接数据段的长度值,并发送一个最大长度的数据段(当然必须是接收窗口允许的)。如果在定时器超时前得到确认,将拥塞窗口的大小增加一个数据段的字节数,并发送两个数据段,如果每个数据段在定时器超时前都得到确认,就再在原基础上增加一倍,即为4个数据段的大小,如此反复,每次都在前一次的基础上加倍。当定时器超时或达到发送窗口设定值,停止拥塞窗口尺寸的增加。这种反复称为慢速启动,所有的TCP协议都支持这种方法
前拥塞控制的研究热点:
引用
拥塞控制不仅是网络稳定、高效运行的关键,同时又是实现各种服务质量的基础和前提。实际的网络是一个不断发展的系统,网络拥塞控制研究也是一个非常困难、有挑战性的研究领域。对网络拥塞控制的研究仍有许多工作要做,进一步的工作包括:
(1) 拥塞控制基于端主机的控制策略和路由器的队列管理策略存在相互影响、相互作用的关系,如何在网络模型描述的基础上,从控制系统的角度将两者结合起来,设计出最优的拥塞控制策略,是网络拥塞控制研究的一个方向。
(2) 主动队列管理技术通过丢包积极响应拥塞,来达到拥塞避免和缓解的目的,是网络拥塞控制最重要的手段。如何实现AQM高级策略,引入新的人工智能算法和遗传算法与模糊逻辑的综合应用是目前研究的一个热点问题。
(3) 以往的工作主要采用局部线性化方法,缺乏对系统全局动力学的理论分析。此外,在多种源端拥塞控制策略和路由器避免策略并存时,如何分析整个网络的稳定性,如何分析各种不确定因素对稳定性的影响等,也是需要认真考虑的问题。
(4) TCP/IP 拥塞控制的设计和实现面临着众多的折中,不可能有一种设计和实现在所有环境中都是“最好的”。现有的拥塞控制思路、方法和技术在多目标的不同环境中面临着挑战,它们还有许多要改进的地方。
(5) 目前已经有越来越多的移动用户通过无线系统接入互联网,由于无线通信固有的特点,使得拥塞控制机制的研究更加困难,极具挑战。
分享到:
相关推荐
拥塞控制理论和算法研究因此成为 Intemet研究中的一个热点。 拥塞现象发生的原因.总的来说是Intemet网络中的需求大 于供给,即网络的资源(缓冲、链路带宽和网关处理能力等)是有 限的.这些有限资源要在网络用户之间...
TCP拥塞控制是网络协议中的一个关键机制,用于在数据传输过程中防止网络过载,确保数据包能够有效地在源和目的地之间流动。本题考察的是TCP拥塞控制的三个主要阶段:慢启动、拥塞避免和快速恢复,以及如何根据拥塞...
TCP拥塞控制是计算机网络中的一种机制,旨在防止网络中的拥塞现象。拥塞控制的目的是为了防止网络中的数据包过多,导致网络性能下降。TCP拥塞控制机制主要基于加法增加乘法减少(AIMD)算法,该算法定义了三个窗口变量...
常见的一些拥塞控制方法还包括缓冲区预分配法,尤其是在虚电路分组交换网中,预先为每条虚电路分配缓冲区,以防止拥塞发生。当缓冲区满时,可以采取选择其他路径或拒绝新的呼叫请求。 总的来说,拥塞控制算法是网络...
### 基于LwIP的TCP拥塞控制方法改进:深入解析与实施建议 #### 概述 在探讨LwIP(Lightweight IP)框架下TCP拥塞控制方法的改进之前,我们有必要先理解其核心意义。TCP(Transmission Control Protocol)作为...
这一方法可以更早地检测到拥塞,减少丢包,并保持稳定的服务质量。 Copa,全称为基于拥塞的协议适应性,是一种以拥塞为中心的传输策略,其目标是快速响应网络变化,同时保持公平性和低延迟。Copa通过快速调整发送...
【无线传感器网络通信拥塞控制方法】 无线传感器网络通信是一种新兴的通信技术,因其灵活性、低成本和广泛应用前景而备受关注。然而,这种技术在实际应用中面临的主要挑战之一是网络拥塞问题。传统的多跳路由和多对...
TCP拥塞控制四个主要过程 TCP拥塞控制是TCP协议中的一种机制,用来避免网络拥塞和提高网络传输效率。TCP拥塞控制主要包括四个阶段:慢启动阶段、拥塞避免阶段、快速重传和快速恢复阶段。 一、慢启动阶段 在TCP...
2. 机器学习在拥塞控制算法识别中的应用:本文研究了基于机器学习的TCP拥塞控制算法识别方法,使用机器学习算法可以提高拥塞控制算法识别的效率和准确率。 3. 特征提取的重要性:特征提取是机器学习算法的关键步骤...
除了这些基础算法,近年来的研究也引入了更多先进的技术,如机器学习和人工智能方法来优化拥塞控制。这些方法能够更智能地预测和适应网络状态,提高网络效率和用户体验。例如,使用比例积分(PI)算法的主动队列管理...
- **AIMD机制简介**:AIMD(Additive Increase Multiplicative Decrease)是一种常用的拥塞控制策略,其核心在于增加时采用加法的方式逐步提升发送速率,而在检测到拥塞时则采用乘法的方式快速降低发送速率。...
本实验通过使用Psender进行数据发送和Ethereal进行网络分组捕获,深入探讨了TCP协议的工作原理,特别是其拥塞控制和流量控制过程。 1. TCP协议的工作原理: - 三次握手:TCP连接建立过程中,通过三次交互来确保...
主动式拥塞控制则是试图在拥塞发生之前预防它,这种方法通过预测网络拥塞的可能性并相应地调整流量来实现。例如,随机早期检测(Random Early Detection,简称RED)和主动队列管理(Active Queue Management,简称...