设为首页收藏本站language 语言切换
查看: 2373|回复: 6
收起左侧

[书籍] QOS拥塞避免和拥塞管理

[复制链接]
 成长值: 63505
发表于 2021-10-22 11:02:32 | 显示全部楼层 |阅读模式
拥塞避免和拥塞管理概述
拥塞避免通过指定报文丢弃策略来解除网络过载,拥塞管理通过指定报文调度次序来确保高优先级业务优先被处理。

传统网络所面临的服务质量问题主要由拥塞引起,拥塞是指由于网络资源不足而造成速率下降、引入额外延时的一种现象。拥塞会造成报文的传输时延、吞吐率低及资源的大量耗费。而在IP分组交换及多业务并存的复杂环境下,拥塞又极为常见。

拥塞避免和拥塞管理就是解决网络拥塞的两种流控方式。

拥塞避免
拥塞避免是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞发生或有加剧趋势时主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。

设备支持以下拥塞避免功能:

尾部丢弃

传统的丢弃策略采用尾部丢弃的方法,同等对待所有报文,不对报文进行服务等级的区分。在拥塞发生时,队列尾部的数据报文将被丢弃,直到拥塞解除。

这种丢弃策略会引起TCP全局同步现象。所谓TCP全局同步现象,是指当多个队列同时丢弃多个TCP连接报文时,将造成一些TCP连接同时进入拥塞避免和慢启动状态,降低流量以解除拥塞;而后这些TCP连接又会在某个时刻同时出现流量高峰。如此反复,使网络流量忽大忽小,影响链路利用率。

WRED

加权随机先期检测WRED(Weighted Random Early Detection)基于丢弃参数随机丢弃报文。考虑到高优先级报文的利益并使其被丢弃的概率相对较小,WRED可以为不同业务的报文指定不同的丢弃策略。此外,通过随机丢弃报文,让多个TCP连接不同时降低发送速度,避免了TCP全局同步现象。

WRED技术为每个队列的长度都设定了阈值上下限,并规定:

当队列的长度小于阈值下限时,不丢弃报文。

当队列的长度大于阈值上限时,丢弃所有新收到的报文。

当队列的长度在阈值下限和阈值上限之间时,开始随机丢弃新收到的报文。方法是为每个新收到的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高。

拥塞管理
拥塞管理是指在网络间歇性出现拥塞,时延敏感业务要求得到比其它业务更高质量的QoS服务时,通过调整报文的调度次序来满足时延敏感业务高QoS服务的一种流量控制机制。

设备支持以下拥塞管理功能:
PQ调度

PQ(Priority Queuing)调度,就是严格按照队列优先级的高低顺序进行调度。只有高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会。

采用PQ调度方式,将延迟敏感的关键业务放入高优先级队列,将非关键业务放入低优先级队列,从而确保关键业务被优先发送。

PQ调度的缺点是:拥塞发生时,如果较高优先级队列中长时间有分组存在,那么低优先级队列中的报文就会得不到调度机会。

WRR调度

WRR(Weighted Round Robin)调度即加权轮询调度。WRR在队列之间进行轮流调度,保证每个队列都得到一定的服务时间。

以端口有8个输出队列为例,WRR可为每个队列配置一个加权值(依次为w7、w6、w5、w4、w3、w2、w1、w0),加权值表示获取资源的比重。例如:一个100M的端口,配置它的WRR队列调度算法的加权值为50、50、30、30、10、10、10、10(依次对应w7、w6、w5、w4、w3、w2、w1、w0),这样可以保证最低优先级队列至少获得5Mbit/s带宽,避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点。

WRR还有一个优点是,虽然多个队列的调度是轮询进行的,但对每个队列不是固定地分配服务时间片:如果某个队列为空,那么马上换到下一个队列调度,这样带宽资源可以得到充分的利用。

WRR调度有两个缺点:
WRR调度按照报文个数进行调度,而用户一般关心的是带宽。当每个队列的平均报文长度相等或已知时,通过配置WRR权重,用户能够获得想要的带宽;但是,当队列的平均报文长度变化时,用户就不能通过配置WRR权重获取想要的带宽。
低延时需求业务(如语音)得不到及时调度。
DRR调度

DRR(Deficit Round Robin)调度实现原理与WRR调度基本相同。

DRR与WRR的区别是:WRR调度是按照报文个数进行调度,而DRR是按照报文长度进行调度。如果报文长度超过了队列的调度能力,DRR调度允许出现负权重,以保证长报文也能够得到调度。但下次轮循调度时该队列将不会被调度,直到权重为正,该队列才会参与DRR调度。

DRR调度避免了采用PQ调度时低优先级队列中的报文可能长时间得不到服务的缺点,也避免了各队列报文长度不等或变化较大时,WRR调度不能按配置比例分配带宽资源的缺点。

但是,DRR调度也具有低延时需求业务(如语音)得不到及时调度的缺点。

WFQ调度

公平队列FQ(Fair Queue)的目的是尽可能公平地分享网络资源,使所有流的延迟和抖动达到最优,让不同队列获得公平的调度机会。WFQ(Weighted Fair Queue)调度即加权公平队列调度,在FQ的基础上增加了优先权方面的考虑,使高优先权的报文获得优先调度的机会多于低优先权的报文。

WFQ能够按流的“会话”信息(协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等)自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。

PQ+WRR/PQ+DRR/PQ+WFQ调度

PQ调度和WRR/DRR/WFQ调度各有优缺点。单纯采用PQ调度时,低优先级队列中的报文可能长期得不到调度,而单纯采用WRR/DRR/WFQ调度时低延时需求业务得不到优先调度,“PQ+WRR/PQ+DRR/PQ+WFQ”调度方式则将两种调度方式结合起来,不仅能发挥两种调度的优势,而且能克服两种调度各自的缺点。

用户可以借助“PQ+WRR/PQ+DRR/PQ+WFQ调度”调度方式,将重要的协议报文和有低延时需求的业务报文放入PQ队列中进行调度,并为该队列分配指定带宽;而将其他报文按各自的优先级放入采用WRR/DRR/WFQ调度的各队列中,按照权值对各队列进行循环调度。

CBQ调度

基于类的加权公平队列CBQ(Class-based Queueing)是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。

CBQ提供三类队列:
EF队列:满足低时延业务

EF队列是具有高优先级的队列,一个或多个类的报文可以被设定进入EF队列,不同类别的报文可设定占用不同的带宽。

设备除了提供普通的EF队列,还支持一种特殊的EF队列—LLQ队列,时延更低。这为对时延敏感的应用(如VoIP业务)提供了良好的服务质量保证。

由于EF队列中的报文一般是语音报文(VoIP),采用的是UDP报文,所以没有必要采用WRED的丢弃策略,采用尾丢弃策略即可。

AF队列:满足需要带宽保证的关键数据业务

每个AF队列分别对应一类报文,用户可以设定每类报文占用的带宽。在系统调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送,可以实现各个类的队列的公平调度。当接口有剩余带宽时,AF队列按照权重分享剩余带宽。同时,在接口拥塞的时候,仍然能保证各类报文得到用户设定的最小带宽。

对于AF队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。

BE队列:满足不需要严格QoS保证的尽力发送业务

当报文不匹配用户设定的所有类别时,报文被送入系统定义的缺省类。虽然允许为缺省类配置AF队列,并配置带宽,但是更多的情况是为缺省类配置BE队列。BE队列使用WFQ调度,使所有进入缺省类的报文进行基于流的队列调度。

对于BE队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。

说明:
分片报文在经过队列调度后,可能会随机丢弃部分报文,从而导致分片报文重组失败。

游客,如果您要查看本帖隐藏内容请回复


发表于 2021-11-15 11:35:45 | 显示全部楼层
QOS拥塞避免和拥塞管理
板凳 2021-11-15 11:35:45 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-9 11:43 , Processed in 0.116926 second(s), 16 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表