拥塞管理与拥塞避免

背景来源

当网络中间歇性的出现拥塞,时延敏感业务要求得到比非时延敏感业务更高质量的QoS服务时,需要进行拥塞管理。拥塞避免是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞发生或有加剧的趋势时主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。

产生情景

流量从高速端口流向低速端口会在低速端口上产生拥塞,如图A;流量从多个端口流向同一个端口会在汇聚端口上产生拥塞,如图B拥塞管理是指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列调度技术。将所有要从一个接口发出的报文进入多个队列,按照各个队列的优先级进行处理。通过适当的队列调度机制,可以优先保证某种类型的报文的QoS参数,例如带宽、时延、抖动等。
在这里插入图片描述

队列技术

当拥塞发生时,多个报文会同时竞争使用资源,导致得不到资源的某些业务报文被丢弃,尤其不能保证关键业务的带宽、时延、抖动等QoS参数。此时如何制定一个资源的调度策略决定报文转发的处理次序,就是拥塞管理的中心内容。对于拥塞管理,一般采用队列调度技术,常见的队列调度技术有以下几种:

  • FIFO: First ln First Out,先进先出队列
  • RR: Round Robin,轮询队列
  • WRR: Weight Round Robin,按权重轮询队列.PQ: Priority Queuing,优先级队列
  • CQ: custom Queuing,自定义队列
  • WFQ: weighted Fair Queuing,加权公平队列

FIFO:First In First Out

在这里插入图片描述
从接口输出的报文,按照到达的先后顺序进入接口的FIFO队列,调度器按照先进先出的原则,从队首开始,以此发送报文。所有的报文在发送的过程中,没有任何区别,也不对报文传送的质量提供任何保证。

RR:Round Robin

在这里插入图片描述
RR是Round Robin的缩写,是一种简单的调度方式,采用轮询的方式,对多个队列进行调度RR以环形的方式轮询多个队列。如果轮询的队列不为空,那么就从该队列去走一个报文;如果该队列为空,那就直接跳过该队列,调度器并不等待。

WRR:Weight Round Robin

在这里插入图片描述
WRR(Weight Round Robin)主要是针对RR不能设置权重的不足,在轮询的时候,每个队列享受的机会和该队列的权重成比例。WRR最初是针对固定包长的(ATM)设计的调度算法。WRR对于空队列直接跳过,调度一周结束的时间变短,因此当某个队列的流量小的时候,剩余带宽能够被其它队列按照比例占用。(在ATM中,每个数据包的长度都是固定的,因此权重对于ATM来说很好用,但是在以太网中,每个包的长度是不固定的,现在假设队列a的权重虽然是3,但是包的长度很短,反而权重为1的队列有一个很大的包,就会阻塞掉整个队列)

PQ(Priority Queuing)

在这里插入图片描述
PQ(Priority Queuing)是一种按照严格优先级(SP,Strict Priority)进行的调度队列。PQ对队列划分等级,只有搞的优先级队列排空的时候,才会从低一级的队列调度报文,这样重要的业务比其他业务提前获得服务。

CQ(Custom Queuing)

在这里插入图片描述
CQ(Custom Queuing)可以支持17个队列,队列0用于系统队列,队列0和其他队列之间是SP关系,只有队列0排空之后,才能为其他队列进行服务,队列0一般用于协议报文。队列1-16没有优先级关系,采用轮询的方式,每次调度的时候从队列中调度固定的字节数,在轮询下一个队列之前,将数据包发出去,当某个队列已经调度了规定的字节数,或者是队列为空,则轮询下一个队列。

WFQ(Weight Fair Queuing)

在这里插入图片描述
报文到达接口之后,首先对报文进行分类,不同的流分入不同的队列。在出队的时候,WFQ按照流的权重分配每个流应占的带宽。权重数值越小,所得的带宽就越少,权重数值越大,所得到的带宽就越大。这样保证了相同优先级业务之间的公平,体现了不同优先级业务之间的权重。

各种队列调度技术的对比

在这里插入图片描述

队列技术产品的使用

目前产品中,主要使用FIFO、WFQ、PQ三种队列技术来实现拥塞管理。对于队列配置,用户无须关心采用什么抽象的调度算法,只需关心队列所承载业务的外在流量参数特征,比如保证多少兆的带宽、峰值最多多少兆的带宽、要占剩余带宽的比例权重等。根据配置的流量参数选用不同的调度算法来严格保证用户的配置。
端口队列调度采用PQ+WFQ调度算法,采用这种调度优势在于,既能使时延敏感的实时业务得到保证,也使优先业务的报文的带宽占用可以绝对优先,又可以为不同优先级的流根据配置的权重分配不同的带宽。

拥塞避免机制

拥塞避免是一种流控机制,它可以通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载。
传统的丢包策略采用**尾部丢弃(Tail-Drop)**的方法。当队列的长度达到某一最大值后,所有新到来的报文都将被丢弃。这种丢弃策略会引发TCP全局同步现象。为避免TCP全局同步现象,可使用RED或WRED。

  • RED: Random Early Detection,随机早期检测
  • WRED: Weighted Random Early Detection,加权随机早期检测

尾丢弃

在这里插入图片描述
从图中可以看到,当三条线都到达了饱和带宽的时候,会使用尾丢弃,可以发现到达顶峰之后,三条线都会同时降低到某一个值,这个时候,中间就会出现空白,也就是说这一部分的带宽是没有利用到的。这就是TCP全局同步所带来的后果。那怎么进行避免这种结果呢?

RED(Random Early Detection)

在这里插入图片描述
随机早期丢弃,当队列长度大于20小于40的时候进行随机丢弃,如果平均队列长度大于40,那就采取尾丢弃策略。这种方式虽然可以在一定程度之上避免TCP全局同步,但是随即丢弃的话还是有可能将重要的包丢掉,说白了就是无法有选择性的丢弃。

WRED(Weight Random Early Detection)

在这里插入图片描述
我们可以发现,随着平均队列长度的增加,包也会由选择醒的增加,三条线都是AF2,但是后面加了的数字代表丢弃的优先级,数值越大,就越先丢弃。AF23中最后的数字3是三者里面最大的,所以就会优先丢弃AF23,最终也就实现了有选择性进行丢弃。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘不忙!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值