拥塞控制的几种算法

在某段时间内,对网络中的资源(链路容量,交换节点中的缓存和处理机等)需求大于可用的,就会造成拥塞
拥塞控制就是防止过多的数据注入到网络中造成拥塞,是路由器或链路不会过载。

拥塞控制和流量控制的区别:
拥塞控制是一个全局性的过程,涉及所有主机和路由器,以及其他因素。
流量控制是端到端的,发送端和接收端,需要做的是抑制发送端的发送速率,以便来的及接收。

这里写图片描述
吞吐量代表一定时间内从网络中传输的分组量。在吞吐量饱和之前负载和吞吐量应该相等,也就是直线的斜度45°,直到网络资源受限,吞吐量饱和。

拥塞控制的四种算法。

cnwd - 拥塞窗口的大小(以字节为单位,这里以数据段的个数为单位方便计算),发送方让自己的发送窗口等于拥塞窗口。
RTT- 一个传输轮次经历的时间。

  1. 慢开始
    这里写图片描述
    最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,cwnd初始化为1个报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1倍。这样cwnd的值就随着网络往返时间RTT呈指数级增长.
    这里设置了一个慢开始门限ssthresh。
    cwnd < ssthresh时,进行慢开始算法。
    cwnd>ssthresh时,进行拥塞避免算。
    cwnd = ssthresh时,两者皆可。

  2. 拥塞避免
    每个轮次结束都让cwnd增加一个,而不是一倍,增加的更加缓慢。
    不论是慢开始还是拥塞避免只要网络出现拥塞(没有按时到达)时,就把ssthresh的值置为出现拥塞时的拥塞窗口的一半,以及cwnd置为1,进行慢开始。
    这里写图片描述

  3. 快重传快恢复算法
    快重传算法要求接收方每收到一个失序的报文段后就立即进行重复确认。
    这里写图片描述
    当接收方接收到了M4,却没有接收到M3,这时报文段已经失序,不能确认M4,根据快重传算法规定,返回一个M2重复确认提醒接收方M3没有接收到, 在接收到M5,M6后继续返回两个重复确认。快重传算法规定发送方一连接收到三个重复确认就立即重传对方尚未收到的报文段M3。
    (还有一种快重传把cwnd增加到ssthresh+3MSS).
    快恢复算法与快重传算法配合使用。
    一连收到三个重复确认信号后就把ssthresh减半,然后cwnd设置为ssthresh减半后的数值,执行拥塞避免算法。
    这里写图片描述
    在采用快恢复算法时,慢开始算法只有在建立TCP连接时和网络超时才使用。
    考虑到接收窗口,发送窗口的值不能大于接受方所能接收的值,所以 发送窗口的上限为 min[拥塞窗口,接受窗口]。
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值