拥塞控制

本文深入解析网络拥塞控制原理,包括慢开始、拥塞避免、快重传、快恢复及随机早期检测等策略,旨在避免网络过载,提高传输效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拥塞控制,在某段时间内当网络中的某一资源的需求超过了该资源所能提供的可用部分的时候,网络的性能就会发生变化,这种情况就是拥塞,网络中的链路容量交换节点中的缓存空间处理机的处理速度都有自己的工作极限,当超过他们的工作极限的时候就会产生拥塞。拥塞控制就是要放在之过多的数据注入到网络中,这样就可以使得网络中的链路或者路由器不至于过载。拥塞控制是一个全局性的问题,涉及到所有的主机,所有的路由器以及与降低网络传输性能有关的所有因素。因此拥塞控制是很难设计的,因为它也是一个动态的问题,很多情况下拥塞控制机制本身可能会成为网络性能恶化甚至是死锁的原因。因此通常设计采用闭环控制的方式,通过反馈方式,检测网络系统检测拥塞在什么时候什么地方发生,把拥塞发生的信息传送到可采取行动的地方等
常用的方法是慢开始,拥塞避免,快重传,快恢复
假定我们的数据是单方向传送的,而另外一个方向只传送确认。接收方有足够大的缓存空间,发送窗口的大小由网络的拥塞程度来决定
慢开始和拥塞避免
发送方维持一个叫做拥塞窗口的变量,拥塞窗口的大小取决于网络的拥塞程度并且动态的发生变化,发送方让自己的发送窗口等于拥塞窗口,考虑到接受方的接收能力发送窗口可能小于拥塞窗口。发送方控制拥塞窗口的原则是只要没有拥塞现象,就让拥塞窗口尽量的大,以便将更多的分组发送出去,但是只要网络中出现拥塞,拥塞窗口就减小,以减少注入到网络中的分组数。
慢开始算法的思路就是,最初的TCP传输在链接建立成功之后会向网络中发送大量的数据包,这样容易导致网络中的路由器缓存空间耗尽从而发生拥塞,因此新的链接不能一开始就发送大量的数据包,而只能根据网络的情况,逐步的增加每次发送的数据量,以避免上述现象发生,具体来说当新建链接的时候,拥塞窗口初始化为一个最大报文段MSS大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认的时候,拥塞窗口就增加至多一个最大报文段大小,用这样的方法来逐步增大拥塞窗口。
在这里插入图片描述
所以每次经过一轮次拥塞窗口就加倍,就是乘法增长
为了防止增长过大引起网络拥塞,还要设置一个慢开始门限ssthresh变量。当拥塞窗口的大小小于慢开始门限的时候,使用慢开始算法,当拥塞窗口的值大于慢开始门限的时候,使用拥塞避免算法,当拥塞窗口的值与慢开始门限相同的时候慢开始和拥塞避免算法任意。
在这里插入图片描述
拥塞避免算法的思路:让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口加1而不是加倍 ,这样拥塞窗口按照线性规律缓慢增长。
无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现了拥塞(是否收到了确认),就把慢开始门限设置为出现拥塞时候发送窗口大小的一半,然后把拥塞窗口设置为1,执行慢开始算法,这样的目的就是要迅速减少主机发送到网络中的数据包,使得发生拥塞的路由器有有足够的时间把队列中挤压的数据包处理完。注意这里实际上是字节而不是数据包的个数。
无论在慢开始阶段还是拥塞避免阶段只要出现超时就把慢开始门限减半,即设置为当前拥塞窗口的一半,并且执行慢开始算法,当网络出现频繁拥塞的时候,慢开始门限下降很快,会大大减小注入到网络中的数据包。当执行拥塞避免算法的时候拥塞窗口缓慢增大+1,防止过早出现拥塞现象
在这里插入图片描述
在这里插入图片描述
快重传和快恢复
快重传和快恢复是为了减少因为拥塞导致的数据包丢失带来的超时重传时间一条,TCP链接有时候会因为等待重传计时器的超时而空闲较长的时间,慢开始和拥塞避免无法很好的解决这种问题,因此提出快重传和快恢复的拥塞控制方法,快重传算法并非取消了重传机制,只是在某些情况下更早的重传丢失的报文,(当发送端接收到三个重复的确认后则断定数据包丢失,立即重传丢失的报文,而不必等待重传计时器超时)
快重传的机制是如果接收方收到一个乱序的包,或者是包丢失了,则立即发送针对该报的重复确认,而不要等到自己发送数据的时候捎带着确认,发送方只要一连收到三个重复的确认之后,就应当立即重传对方尚未收到的报文端,而不必继续等待设置的重传计时器时间到期。快恢复的机制是当发送方收到三个连续的重复确认时候,就将慢开始门限减半,但是不执行慢开始算法,将拥塞窗口设置位慢开始门限减半后的大小,然后执行拥塞避免算法
随机早期检测RED
上面的拥塞避免算法没有和网络层联系起来,实际上网络层的策略对 拥塞避免算法的影响最大的就是路由器的丢弃策略,在简单的情况下路由器是按照先进先出的策略处理到来的分组,当路由器的缓存装不下分组的时候就丢弃到来的分组,这就是尾部丢弃策略。这样会导致分组丢失,发送方认为网络产生拥塞,更为严重的是网络中存在很多的tcp链接,这些链接中的报文可能复用路由路径,若发生路由器尾部丢失,可能会影响到很多条tcp链接,结果就是许多的tcp链接在同一时间内同时进入了慢开始状态,这就是全局同步,全局同步会使得网络的通信量突然下降很多,而在网络恢复的时候通信量又突然增大很多
在这里插入图片描述
为了避免网络层对拥塞避免算法的影响(路由丢失策略对拥塞控制算法)路由器采用随机早期检测。使路由器的队列维持两个参数,即队列长度最小门限min和队列长度最大门限,每当一个分组到达的时候,随机早期检测就计算平均队列长度,然后分情况对待到来的分组:
平均队列长度小于最小门限的时候把新到达的分组放入队列中排队,平均队列长度大于最小门限,小于最大们先的时候,按照某一概率将分组丢弃,当平均队列长度大于最大门限的时候,丢弃新到达的分组。
随机早期检测不是等到拥塞发生之后才把队列尾部的分组全部丢弃,而是在检测到网络拥塞的早期征兆的时候(平均队列长度大于最小门限,小于最大门限)就以某种概率丢弃分组,让拥塞控制只在个别的TCP链接上执行,因而避免全局性的拥塞控制。随机早期算法的关键就是三个参数,最小们门限,最大门限,丢弃概率,最小门限必须要大保证链路有较高的利用率,而最大门限也应该大,使得在一个TCP往返时间RTT中队列的正常增长仍然在最大门限之内。使最大门限等于最小门限的二倍是合适的。 平均队列长度采用加权平均的方法计算平均队列长度,这和往返时间(RTT)的计算策略是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值