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)#