QoS---拥塞管理、拥塞避免
实现拥塞管理使用队列调度技术
实现拥塞避免使用尾丢弃
一、拥塞管理
拥塞产生的场景:
1、从高速率链路迁到低速率链路
2、流量汇聚,从一个不满足现有带宽需求的接口转发出去
通过分类和标记,将不同业务的流量报文划分在不同队列中。不同队列的报文如何从接口发出、先后顺序如何。如果出现大量的业务流量需要从同一个接口发出,如何保证高优先级的流量显出,又如何保证低优先级的流量可以顺利发出。这里就涉及到队列调度技术
队列调度技术:在设备的出方向实现,利用设备的缓存形成软件队列(只在出方向存在缓存,入方向是没有缓存技术)
使用何种队列调度技术需要结合实际的网络环境来选择,可以针对
常见队列调度技术
1.FIFO
First In First Out
-
采用尽力而为服务模型
-
单队列技术,默认的队列技术
-
好处:实现机制比较简单,尽最大可能转发,速度快
缺点:无法对业务流量进行差分服务
2.PQ
-
Priority Queuing
-
优先级队列技术
-
先转发优先级最高的队列所有报文,再转发下一个等级的队列的报文。
-
好处:业务流量进行差分服务,保障关键业务转发
缺点:可能会造成低优先级队列的饿死现象。
PQ队列主要应用在高优先级队列中,针对时延比较敏感的流量
案例配置
qos queue-profile huawei ###队列模板 schedule pq 5 to 7 ###---5到7队列为PQ队列
interface GigabitEthernet0/0/1 qos queue-profile huawei ##出接口调用
3.RR
-
Round Robin
-
轮询队列技术
-
在调度时,会轮流问询每个队列,每个队列再一次调度中存在一次机会,当所有队列轮询完毕,该次调度完成
-
是一种公平队列(无法区别对待高优先级与低优先级的报文)
4.WRR
-
Weighted Round Robin
-
加权轮询队列技术
实现方式:
- 根据不同等级的队列分配权重值,优先级越高权重值越高,每次调度权重值-1.直到所有队列的权重值为0,一轮调度技术结束,重新开始轮询。
- 当所有的队列,权重值为0时,该次调度结束,恢复所配置的权重值。进行下一轮调度
好处:解决PQ的低优先级饿死现象
缺点:只能解决调度个数,由于是基于报文个数调度,当数据包尺寸大小不一致,会出现不平等调度(低优先级队列发送的数据包比高优先级队列的数据包大)
案例配置
qos queue-profile huawei1 queue 2 weight 20 ##根据不同队列设置权重值,默认为10,配置范围1-100 queue 3 weight 30 queue 4 weight 40 schedule wrr 0 to 4
interface g0/0/2 qos queue-profile huawei1 ##出接口调用
5.WFQ
-
Weighted Fair Queuing
-
加权公平队列技术
与WRR的区别在于实现了小包优先转发
实现方式:
- 根据不同等级的队列分配权重值,优先级越高权重值越高,根据权重值分配带宽,重值越高分配带宽也越高,小包优先。
- 采用轮询机制实现,小包优先级调度
- 当所有队列的调度值小于或者等于0时,该次调度结束
- 第二次调度,所有队列恢复原有权重值,但上一次调度结束后,权重值小于0的,需要补回该权重值
案例配置
qos queue-profile huawei2 queue 2 weight 20 ##根据不同队列设置权重值,默认为10,配置范围1-100 queue 3 weight 30 queue 4 weight 40 schedule wfq 0 to 4 pq 5 to 7 ##指定队列技术
interface g0/0/0 qos queue-profile huawei2 ##出接口调用
6.CBQ
通过复杂流分类形成流队列,根据调度技术转发流量
-
基于类的队列技术
-
用户根据复杂流分类,直接放入对应的队列
- 可以存在多个EF,AF等队列
CBQ首先根据IP优先级或者DSCP优先级、入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列
三种队列、一种特殊队列
- EF队列
- 具有绝对优先转发的队列
- 配置时指定该队列的最大带宽
- LLQ队列
- 特殊的EF队列
- 时延最低
- 最优先转发,不能抢占闲时带宽
- AF队列
- 配置时指定该队列的最小(保证)带宽,如果接口存在剩余带宽,可以分享带宽(给EF)
- BF队列
- 默认队列
- 没有被匹配的队列默认进入该队列,按照接口剩余带宽还有WFQ队列技术转发
优点:支持自定义类,可为不同的业务定义不同的调度策略。使用灵活
缺点:数据报文每次进入设备,都要进行ACL匹配。消耗设备性能
案例配置
##创建匹配规则 acl number 2000 rule 5 permit source 192.168.1.0 0.0.0.255
##创建流分类 traffic classifier CBQ if-match acl 2000
##创建流行为 traffic behavior CBQ queue ef bandwidth 10
##创建流策略 traffic policy CBQ classifier CBQ behavior CBQ
##对应接口上调用流策略 interface g0/0/0 traffic-policy 1 outbound
总览
类型 | 优点 | 缺点 |
---|---|---|
FIFO | 实现简单,处理速度快 | 不能有差别地对待优先级不同的报文 |
PQ | 低延迟业务能得到保障 | 低优先级队列可能出现“饿死”现象 |
WRR | 避免了低优先级队列的“饿死”现象 | 不平等调度;低时延业务得不到保障 |
WFQ | 按权重实现公平调度;自动分类,配置简单 | 低时延业务得不到保障;无法支持自定义类 |
PQ+WFQ | 低时延业务能得到保障;按权重实现公平调度等 | 无法支持自定义类 |
CBQ | 支持自定义类 | 耗费较多的系统资源 |
PQ+其他队列调度技术
-
优点:可保证低时延业务得到及时调度;实现按权重分配带宽等。
-
缺点:无法实现根据用户自定义灵活分类报文的需求。
用户可以借助“PQ+WRR/PQ+DRR/PQ+WFQ调度”调度方式,将高优先级队列使用PQ,剩余队列使用轮询队列,一个队列模板不能同时存在多种轮询队列;PQ队列必须高于轮询队列
qos queue-profile huawei2
schedule wrr 3 to 4 pq 5 to 7
二、拥塞避免
每个队列都是有长度限制,如果队列已满,后进来报文就会被执行尾丢弃
尾丢弃缺点
- 无法对报文进行差分丢弃
- 引发TCP全局同步
- TCP刚开始进行慢启动状态,但TCP报文超过接口带宽,造成网络拥塞,由于TCP滑动窗口减半机制,造成TCP整体流量同时下降,等到网络不拥塞,TCP又尝试慢启动状态,可能又会触发TCP滑动窗口减半机制,周而复始
- 造成接口带宽利用率不高
]
- 造成TCP饿死现象
- TCP有滑动窗口减半机制,UDP无滑动窗口减半机制,UDP流量会不断抢占TCP带宽
-]
- TCP有滑动窗口减半机制,UDP无滑动窗口减半机制,UDP流量会不断抢占TCP带宽
解决方法
1.RED
随机丢弃(早期使用)
为避免TCP全局同步,可在队列未装满时先随机丢弃一部分报文。通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来
队列还没满开始丢弃,丢弃模板(下限值,上限值,最大丢弃概率),如果报文不超过队列长度下限值不丢弃,如果报文在下限值和上限值之间,按照丢弃概率去丢弃报文,如果超出上限值,丢弃所有报文。
- 当队列的长度小于低门限时,不丢弃报文。
- 当队列的长度大于高门限时,丢弃所有收到的报文。
- 当队列的长度在低门限和高门限之间时,开始随机丢弃到来的报文。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高
RED无法解决会丢弃重要流量和TCP饿死现象
2.WRED
加权早期随机丢弃
针对不同业务类型设置不同丢弃模板(比如针对重要数据丢弃概率降低)
- 基于权重的早期随机检测
- 根据不同优先级(针对三层流量IPP、DSCP)制定不同的丢弃策略
- 低门限(队列到达该长度时开始丢弃)
- 高门限(队列到达该长度时完全丢弃)
- 丢弃概率(门限之间的丢弃概率)
案例配置
##创建三个丢弃模板,voice不需要 drop-profile manager wred dscp dscp 8 low-limit 50 high-limit 70 discard-percentage 10 drop-profile ftp wred dscp dscp 16 low-limit 70 high-limit 90 discard-percentage 10 drop-profile video wred dscp dscp 24 low-limit 60 high-limit 80 discard-percentage 20
##创建队列模板 qos queue-profile qos-Huawei queue 1 drop-profile manager ##在队列模板中针对不同队列使用不同模板 queue 2 drop-profile ftp queue 3 drop-profile video
interface E1 qos queue-profile qos-Huawei ##接口调用队列模板
问题
1.拥塞管理机制的实现过程分为哪两步?
- 答:第一步:将准备从一个接口发出的所有报文放入不同的队列中;第二步:根据各队列间的调度机制实现不同报文的差分转发
2.常用的队列技术有哪些?
- 答:FIFO、PQ、WFQ、PQ+WFQ、CBQ等