拥塞控制基本概念

一、拥塞控制基本概念

  在某段时间内,若对网络中某资源的需求超过了该资源所能提供的部分,网络的性能就要变坏--产生拥塞(congestion)。出现资源拥塞的条件是:

    对资源需求的总和>可用资源

  若网络中产生拥塞,网络的性能就要明显变化,整个网络的吞吐量将随输入负荷的增大而下降。

  拥塞控制 vs 流量控制

  1)拥塞控制索要做的事情只有一个前提,就是使网络能够承受现有的网络负荷;

  2)拥塞控制是一个全局性的过程,涉及所有的主机、所有的路由器以及与降低网络传输性能有关的所有因素;

  3)流量控制往往指在给定的发送端和接收端之间的点对点通信的控制;

  4)流量控制所要做的就是抑制发送数据的速率,以便使接收端来得及接收;

  5)拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题;

  6)当前网络正朝着告诉化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆,而不是原因;

  7)在许多情况下,甚至正式拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因,这点应该特别引起重视。

拥塞控制又分为闭环控制与开环控制

1)开环控制就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞(感觉很难啊)

2)闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:

  检测网络系统以便检测到拥塞在何时、何处发生;

  将拥塞发生的信息传送到可采取行动的地方;

  调整网络的运行以解决出现的问题。

二、拥塞控制的4种算法

  发送端需要维护两个窗口:接收端窗口(由接收端将其放在TCP保温的首部的窗口字段通知发送端);拥塞窗口(cwnd:发送端根据自己估计的网络拥塞程度而设置的窗口值,反映了网络的当前容量)。

        发送端窗口的上限值=Min(rwnd,cwnd)

note:接收方总是有足够大的缓存空间,因为发送窗口的大小由网络的拥塞程度来决定,也就是说可以将发送窗口等同为拥塞窗口。


慢开始算法

步骤:

  • 在主机刚刚开始发送报文段的时候可以将cwnd设置为1;
  • 在每收到一个报文段确认后,将拥塞窗口加1;
    • note:每收到一个队新的报文段的确认后,将拥塞窗口加1,第二次就会收到两个确认,第三次就会收到4个确认,所以每一个轮次的传输,cwnd就会翻倍。
  • 用这样的方法逐步增大发送端cwnd,可以是分总注入到网络的速率更加合理;
  • 当慢开始的cwnd大小增大到规定的慢开始门限ssthresh之后,改用拥塞避免。

拥塞避免算法

拥塞窗口改为线性增加,每次增加1。

当cwnd<ssthresh时,使用慢开始算法;

当cwnd>ssthresh时,停止使用慢开始算法,改用拥塞避免算法;

当cwnd=ssthresh时,都可以;

无论是在慢开始阶段,还是在拥塞避免阶段,只要发送方判断出拥塞(没有按时收到确认),就把ssthresh设为发送窗口的一半(但不能小于2)(乘法减小),然后把cwnd设置为1,执行慢开始算法。(这样做的目的就是要迅速减少主机发送到网络中的分组数,是的发生拥塞的路由器有足够时间把队列中积压的分组处理完。

快重传算法

首先要求接收方没收到一个时序的报文段后就立即发出重复确认,发送方只要连续收到3个重复确认后,就应当立即重传尚未收到的报文段。

快恢复算法

当发送单收到连续三个重复的确认时,就执行“乘法减小”算法,把ssthresh设置为拥塞窗口的一半,但是接下去不是从头执行慢开始算法;

由于发送方现在认为网络很有可能没有发生拥塞,所以现在不执行慢开始算法,即拥塞窗口cwnd现在不设置为1,设置为新的ssthresh大小,从那个地方开始执行拥塞避免算法。

时间: 2024-08-10 15:02:20

拥塞控制基本概念的相关文章

【计算机网络 第五版】阅读笔记之五:运输层

第五章 运输层 1.运输层的功能:为应用进程之间提供端到端的逻辑通信,为应用层提供通信服务.(网络层是为主机到主机之间提供逻辑通信) 2.运输层的两个重要协议:用户数据包协议UDP和传输控制协议TCP 3.运输层的端口(协议端口号) (1) 软件端口时是应用层的各种协议进程与运输实体进行层间交互的一种地址 (2) 服务器端口号:熟知或系统端口号0-1023,登记端口号1024~49151 (3) 客户端端口号:49151~65535 短暂端口号,仅在客户进程运行时才动态选择 4.用户数据报协议U

tcp滑动窗口与拥塞控制

TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称之为"窗口":2. "滑动"则是指这段"允许发送的范围"是可以随着发送的过程而变化的,方式就是按顺序"滑动".在引入一个例子来说这个协议之前,我觉得很有必

流量控制与拥塞控制

拥塞控制 在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion).出现资源拥塞的条件:对资源需求的总和 > 可用资源若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降. 拥塞控制与流量控制的关系 拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷.拥塞控制是一个全局性的过程,涉及到所有的主机.所有的路由器,以及与降低网络传输性能有关的所有因素. 流量控制往往指在给定的发送端和

tcp窗口滑动以及拥塞控制(转)

转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议.     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称

C++概念

1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求.对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数.由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行

第8章 传输层(6)_拥塞控制

6. 拥塞控制 6.1 拥塞控制的原理 (1)理想状态下:路由器R1和R2向R3提供负载不超过1000Mb/s,都能从R3发送到R4.当提供的负载超过1000Mb/s后,不能再提高了,多余的数据包将被丢弃. (2)实际情况:网络系统的吞吐量与输入负载之间的关系不是线性的.随着提供的负载增大,网络的吞吐量增长速率逐渐减小.在网络未达到饱和时就有一部分输入分组被丢弃,当网络的吞吐量明显小于理想吞吐量就开始出现轻度拥塞现象.当负载达到某一数值时,网络的网络的吞吐量反而随提供负载的增大而下降,这时网络进

TCP流量控制和拥塞控制

TCP的流量控制 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值. 如图所示,说明了利用可变窗口大小进行流量控制.设主机A向主机B发送数据.双方确定的窗口值是400.再设每一个报文段为100字节长,序号的初始值为seq=1,图中的箭头上面大写ACK,表示首部中的却认为为ACK,小写ack表示确认字段的值. 接收方的主机B进行了

网络拥塞控制

TCP依靠重传机制保证了数据的可靠性传输,同时为了避免数据发送过快而超过对方的接受能力,TCP采用了流量控制机制,(具体可以参考滑动窗口法).但是TCP的控制机制里面只考虑到了接收端的接受能力,而忽略了一个很重要的方面,那就是没有考虑到网络自己的传输能力,从而造成了整个网络崩溃的发生. 图1.当负载超过Cliff之后,吞吐量就急剧下降,延迟相应急剧上升.Cliff点也就是网络的最大负载,一旦超过网络的整体性能就大打折扣 与上面介绍的TCP的流控比较下就可以发现,流控主要是考虑接收端,不要发送过快

计算机网络【七】:可靠传输的实现 (tcp窗口滑动以及拥塞控制)【转】

转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议.     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称