QOS-CQ
Customized Queue 用 户定制队列
CQ使用了17个子队列(其中0子队列是PQ队列,优先级 很高,留给系统使用),CQ使用WRR(Round-Robin)机制。首先谈谈RR机制,RR在处理完一个队列的一个数据包之后,会接着处理另一个队列 的一个数据包,一直下去,最后又从第一个队列开始轮流处理每个队列中的数据包,RR中的每个队列的优先级都是一样的。RR的改进版是 WRR(Weighted Round-Robin),WRR允许用户为每个队列分配一个权值,根据这个权值,每个队列都能获得一定的接口带宽。在CQ 中,权值就是一次轮循中可以转发的字节数。
前面说到了0队列是PQ队列,实际上可以把其他队列也设置 成PQ队列:
可以通过以下命令来设置:
queue-list
list-number
lowest-custom
queue-number
比如命令queue-list 1 lowest- custom 3,说明0,1,2都是优先级队列,3以及3以上编号的队列都是定制队列。
CQ configuration:
r2(config)#
r2(config)#access-list 101 permit ip any any precedence 5
r2(config)#
r2(config)#queue-list 16 protocol ip 1 list 101
//把ACL101定义的数据流映射到子队列1中//
r2(config)#queue-list 16 queue 1 limit 40
//设置子队列1的队列深度为40个数据包//
r2(config)#queue-list 16 lowest-custom 2
//设置queue 0,1为优先级队列PQ,其余的为CQ//
r2(config)#queue-list 16 interface s0/0 2
//把s0/0接口进入的流量映射到子队列2中//
r2(config)#queue-list 16 queue 2 byte-count 3000
//设置子队列2在一个轮循内可以传输3000字节数据包
r2(config)#queue-list 16 protocol ip 3
//把所有IP流量映射到子队列3中//
r2(config)#queue-list 16 queue 3 byte-count 5000
r2(config)#queue-list 16 default 4
//其它所有流量映射到子队列4中//
r2(config)#
r2(config)#
r2(config)#int s0/1
r2(config-if)#custom-queue- list 16 //应用CQ到接口s0/1上//
r2(config)#
QOS-PQ
PQ
使用了4个子队列,优先级分别是high,medium,normal,low。PQ会先服务高优先级 的子队列,若高优先级子队列里没有数据后,再服务中等优先级子队列,依次类推。如果PQ正在服务中等优先级子队列,但是高优先级里又来了数据包,则PQ会 中断中等优先级子队列的服务,转而服务高优先级子队列。每一个子队列都有一个最大队列深度(queue-size),如果达到了最大队列深度,则进行尾丢 弃。
PQ优点
1.对高优先级的数据流提供了低延迟的转发
2.大多数平台上都支持该队列机制
3.支持所有的IOS版本(10.0以上)
PQ缺点
1.对单一子队列而言,会继承FIFO队列的所有缺点
2.对低优先级的数据流而言,可能会被“饿死”,因为只有 高优先级队列里有数据,PQ就不会服务低优先级队列
3.需要在每一跳上都手工的配置分类
PQ Configuration:
PQ(config)#
PQ(config)#priority-list 1 protocol ip high list 101
//把Acl101定义的数据映射到high优先级队列//
PQ(config)#priority-list 1 interface s0/0 medium
//把来自s0/1口的流量映射到Medium优先级队列//
PQ(config)#priority-list 1 default normal
//所有其它流量映射到Normal优先级队列//
PQ(config)#priority-list 1 queue-limit 20 30 40 50
//分别设置高,中,普通,低优先级队列长度//
PQ(config)#
PQ(config)#int s0/1
PQ(config-if)#priority-group 1
//把PQ映射到接口s0/1上//
PQ(config)#
查看:
PQ#
PQ#
show queueing int s0/1
Interface Serial0/1 queueing strategy: priority
Output queue utilization (queue/count)
high/13 medium/0 normal/2056 low/0
PQ#
PQ#
PQ#
show queueing priority
Current DLCI priority queue configuration:
Current priority queue configuration:
List Queue Args
1 high protocol ip list 101
1 medium interface Serial0/0
1 medium limit 30
1 normal limit 40
1 low limit 50
PQ#
QOS-LLQ
Low Latency Queueing(低延迟队列 LLQ)
i、特点
在CBWFQ中添加一个优先 级队列用于实时的流量。
* 高优先 级队列得到如下保障:
a)低延 迟的报文转发
b)带宽
注:在拥塞发生时,高优先级 的流量同时受到管制---即它们占用的带宽不能超过它们所保障的带宽。
* 低优先级队列使用CBWFQ。
ii、配置LLQ
priority 带宽值----为一个类分配固定的带宽值确保快速转发;若拥塞时,超过该带宽的流量 将被丢弃。(若没有拥塞,将不会使用管制)
LLQ基本可以满足企业中融合的网络应用
支持语音对网络的低延迟,抖动小, 保障带宽
对其它流量提供公平 处理
LLQ= CBWFQ+PQ
LLQ configuration:
LLQ(config)#
LLQ(config)#class-map VOIP
LLQ(config-cmap)#match ip precedence 5
LLQ(config)#
LLQ(config)#class-map cbwfq1
LLQ(config-cmap)#match ip precedence 3 4
LLQ(config)#
LLQ(config)#class-map cbwfq2
LLQ(config-cmap)#match ip precedence 1 2
LLQ(config)#
LLQ(config)#policy-map LLQ
LLQ(config-pmap)#class VOIP
LLQ(config-pmap-c)#
priority percent 10 //针对VOIP类流量使用PQ,这路流量在任何情况下都优 先发送
LLQ(config-pmap-c)#
同时最大带宽可以为接口带宽的10%//
LLQ(config-pmap)#class cbwfq1
LLQ(config-pmap-c)#
bandwidth percent 30
LLQ(config-pmap-c)#
LLQ(config-pmap)#class cbwfq2
LLQ(config-pmap-c)#
bandwidth percent 20
//CBWFQ方式进行调度,分别保障 30%和20%接口带宽//
LLQ(config-pmap-c)#
LLQ(config-pmap)#class class-default
LLQ(config-pmap-c)#fair-queue
//剩下其它队列采用缺省的WFQ调度//
LLQ(config-pmap-c)#
LLQ(config)#
LLQ(config)#int s0/0
LLQ(config-if)#service-policy output LLQ
LLQ(config)#