QoS Mechanisms-Congestion management(拥塞管理)

queue队列
在这里插入图片描述
每个物理接口都有一个硬件队列和软件队列系统。默认情况下只有硬件队列系统的,数据包的传输方式为FIFO,我们学习队列管理就是调度控制软件队列,并不是管理硬件队列。
在这里插入图片描述
The hardware queuing system always uses FIFO queuing.
The software queuing system can be selected and configured depending on the platform and Cisco IOS version.
队列算法 queuing algorithms
FIFO
PQ
round robin
WRR
DRR
WFQ
CBWFQ
LLQ

FIFO first in first out
在这里插入图片描述FIFO 先进先出,只有一个队列,所有数据包都是平等,硬件队列始终使用FIFO的队列技术
缺点:当网络产生拥塞时,不能保证关键业务数据被优先发送。

PQ priority queuing
在这里插入图片描述特点:
1.优先级队列存在多个软件队列
2.配置队列时候指定优先级,解决了FIFO的问题,当网络拥塞的时候,可以优先调度高优先级的数据
3.总是在进入下一个队列之前清空第一个队列:
4.这样导致的问题必然是优先级低的数据包会出现“饿死现象”
5.PQ队列用于传输对时延比较敏感的流量。Voice
通告管制,进行限速,200K
round robin 轮循队列
在这里插入图片描述
特性:
1.存在多个软件队列
2.没有优先级队列,解决了PQ队列的问题,可以保证每个队列都能够被调度
3.也正因为上面的特性,调度的时候无法保证调度更多的关键业务的流量

WRR 基于权重的轮循队列
在这里插入图片描述
特性:
1.有多个队列
2.有优先级概念,调度的时候,每个队列调度的数据包个数不同。
3.可以保证重要数据每次调度时,比普通流量调度的更多。
4.调度时,可以基于字节数或者数据包的个数来进行调度
5.调度并不能很精确
基于个数不精确的原因是因为数据包的大小是不一样的,也许个数少但是传输的流量就是很大,而基于字节数利用权重虽然很好的解决了这个问题,但是依旧存在不精确问题,假设我们设置的阈值是3000,1500+1499+1,这样的传输是明显不可理的,数据包基本大小都是20字节了。

DRR deficit round robin 赤字轮询队列
优点:可以缓解调度不精确的问题,简单理解就是这次多调度了,下次就少调度一点,
缺点:根本上不能解决调度不精确的问题

weighted fair queuing 加权公平队列
特性:
1.队列算法是通过在共享带宽之间公平的流动:
2.高优先级分配带宽多,低优先级分配带宽少,各优先级队列都能分配到带宽。
3.为交互式流量(QQ telnet)缩短响应时间,将它们安排到队列的前面。
4.WFQ在根据IP优先级给数据包分配带宽时,是基于流(flow)来分配的
5.防止占用高带宽的流量占用整个接口
6.不公平是通过引入权重比例,给予高优先级更多的带宽流量,
在这里插入图片描述相同流的数据包(以上6个参数一致)最终在同一个队列中。
ToS字段是可能改变的唯一参数,让相同流量的数据包进入不同的队列。

WFQ的分类
配置基于每个流队列一个固定传输值
利用哈希函数将每个数据流转化为一个队列号
系统包(8个队列)和RSVP流量(如果配置)被映射到不同的队列。
可以将两个或更多的流量可以映射到相同的队列中,从而降低每个流的带宽。
重要提示: 配置队列的数目必须大于流的预期数目
共享带宽,系统自动分配队列,根据不同的数据流,通过hash函数,将不同的数据流放入到不同的队列。根据队列的优先级,分配带宽
WFQ的丢弃机制
WFQ有两种丢弃模式:
当达到拥塞丢弃的阀值时开始选择性丢弃
当超出队列的最大限制值时,将丢弃数据包,WFQ 总是丢弃 the most aggressive flow(FT值最大的)
异常的丢弃机制
数据包分类到一个空的子队列将永不丢弃
数据包的优先级对丢弃方案没有影响
在这里插入图片描述HQO(hold-queue out):是WFQ系统可以容纳的最大数据量是数据包,出接口buffer缓冲大小。
CDT(congestion discard threshold)拥塞丢弃门限WFQ开启选择性丢弃流量的一个阈值。
N is the number of packets in the WFQ system when the N-th packet arrives.第N个数据包到达。
两种丢弃模式:
0~CDT:不丢弃,放入到缓存队列中发送
CDT~HQO选择性丢弃:如果到达的数据包具备最大的FT值,则丢弃,否则不丢弃
大于HQO,始终要丢弃:如果到达的数据包具备最大的FT值,则丢弃。
如果到达的数据包不具备最大的FT值,丢弃队列中FT值最大的数据包。
finish time calculation计算
在这里插入图片描述
第1个数据包的FT:FT=到达的时刻加上包长
第2个数据包的FT:FT=等于第1个数据包的FT值加上第2个数据包的包长

注:数据包越大,FT值就越大。
优先级高的数据包,长度越长,导致它的FT值更大
优先级低的数据包,长度较短,导致他的FT值更小
则容易造成高优先级的数据包被优先丢弃
解决方法:
通过虚拟包长,丢弃低优先级的流量
虚拟包长=实际包长/(优先级+1)
在这里插入图片描述
所以采用以下方案计算
第1个数据包的FT:FT=到达的时刻加上虚拟包长
第2个数据包的FT:FT=等于第1个数据包的FT值加上第2个数据包的虚拟包长
在这里插入图片描述在这里插入图片描述分母是1~8
有可能会出现除不尽
使用最小公倍数来解决

ip precedence to weight mapping
在这里插入图片描述RSVP包和高优先级的内部包有特殊的权值(4和128)。

WFQ case study
WFQ系统最多可以容纳10个数据包(最大队列限制hold-queue limit)。
8个数据包(congestive discard threshold 丢弃阈值 CDT值) in the WFQ system
WFQ Case Stud Interface Congestion
在这里插入图片描述HQO (hold-queue out limit)是WFQ系统可以容纳的最大数据包数,HQO = 10。
超过绝对最大值(HQO=10)时,新包是TDM系统中的最后一个,它将被丢弃。

WFQ Case Study Flow Congestion
在这里插入图片描述当WFQ系统中有8个包(随机性丢弃阀值)时,

扫描二维码关注公众号,回复: 10280322 查看本文章

WFQ的优缺点
优点:
配置简单 (不需要配置分类,系统自动进行hash分类)
保证所有流量的吞吐量
丢弃FT值最大的数据包
支持大多数平台
支持所有的IOS版本
缺点:
多个流可以在一个队列中,或者一个流在多个队列中(TOS值不同)
不支持配置分类
不能提供固定的带宽保证
复杂的分类和调度机制

配置WFQ
在这里插入图片描述CDT
在路由器开始为最长的队列丢弃新包之前,WFQ系统中允许的消息数。值的范围可以是1到4096(默认为64)
dynamic-queues
最佳会话使用的动态队列数量(值为:16、32、64、128、256、512、1024、2048和4096缺省值为256)
reservable-queues
用于0到1000范围内的保留会话的可保留队列的数量(用于为RSVP等功能配置的接口—默认为0)
在这里插入图片描述指定任何时候接口上所有输出队列中可以包含的最大数据包数。
WFQ的默认值是1000。
在特殊情况下,WFQ可能会消耗大量缓冲区,这可能需要降低这个限制。
WFQ默认配置
默认情况下,如果接口带宽小于2.048M,运行WFQ,大于的话为FIFO

**监控WFQ**在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了231 篇原创文章 · 获赞 222 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qinshangwy/article/details/104921120
QOS