CBWFQ 基于类别的加权公平排队,通常使用ACL定义数据 流类别,并将注入宽带和队列限制等参数应用于这些类别.

CBWFQ特点:
  1)能够给不同的类保障一定的带宽
   2)对传统的WFQ作了扩展 支持用户自己定义流量的分类:
  3)队列的个数和类别是一一对应,给每个class 保留带宽

CBWFQWFQ的区别:

WFQ: 用户无法控 制分类,由HASH算法自己决定
CBWFQ:让用户对流量自己来分类
WFQ 对正常流量 处理没问题,但是对语音流量显得"太公平"(语音要求低延迟)
CBWFQ:考虑到公平特性,并没有考虑到语音的应用

CBWFQ Configuration:
 
CBWFQ(config)#
CBWFQ(config)#class-map  match-any   CBWFQ1
CBWFQ(config-cmap)#match dscp 6
CBWFQ(config-cmap)#match protocol http  //两个条件,满足其中一个就可以匹配CBWFQ1//
CBWFQ(config-cmap)#exit
CBWFQ(config)#
CBWFQ(config)#class-map  match-all   CBWFQ2         
CBWFQ(config-cmap)#match precedence 3 

CBWFQ(config-cmap)#match protocol telnet  //两个条件必须全部满足才能匹配CBWFQ2//
CBWFQ(config-cmap)#exit
CBWFQ(config)#
CBWFQ(config)#policy-map  CBWFQ
CBWFQ(config-pmap)#class CBWFQ1     //调用class-map CBWFQ1//
CBWFQ(config-pmap-c)#bandwidth 60
CBWFQ(config-pmap)#
CBWFQ(config-pmap)#class CBWFQ2
CBWFQ(config-pmap-c)#bandwidth 30
CBWFQ(config)#
CBWFQ(config)#int s0/0

CBWFQ(config-if)#service-policy  output   CBWFQ  //CBWFQ只能在出方向上调用//
CBWFQ#

查看:

CBWFQ#
CBWFQ# show class-map

 Class Map match-any class-default (id 0)
   Match any

 Class Map match-any CBWFQ1 (id 1)
   Match   dscp 6
   Match protocol http

 Class Map match-all CBWFQ2 (id 2)
   Match   precedence 3

CBWFQ#
CBWFQ#
CBWFQ# show policy-map
  Policy Map CBWFQ
    Class CBWFQ1
      Bandwidth 60 (kbps)  Max Threshold 64 (packets)
    Class CBWFQ2
      Bandwidth 30 (kbps) Max Threshold 64 (packets)

CBWFQ#
CBWFQ#

CBWFQ(config)#
CBWFQ(config)#policy-map CBWFQ
CBWFQ(config-pmap)#class CBWFQ1

CBWFQ(config-pmap-c)# queue-limit 30 // 定义每个队能存放的报文数量, 超过后丢包方式:Tail drop//
CBWFQ#    
CBWFQ#
CBWFQ#show policy-map
  Policy Map CBWFQ
    Class CBWFQ1
      Bandwidth 60 (kbps)  Max Threshold 30 (packets)
    Class CBWFQ2
      Bandwidth 30 (kbps) Max Threshold 64 (packets)

CBWFQ#

 

配置实例:

一家公司需求;HTTP流量保障256Kbps带宽,FTP流量保证512Kbps带宽,禁止BT流量.

 

CBWFQ(config)#
CBWFQ(config)#class-map  class_HTTP  //定义一个匹配HTTP的类//
CBWFQ(config-cmap)#match protocol http
CBWFQ(config)#
CBWFQ(config)#class-map  class_FTP
CBWFQ(config-cmap)#match protocol ftp

CBWFQ(config)#
CBWFQ(config)#class-map  class_BT  
CBWFQ(config-cmap)#match protocol bittorrent
CBWFQ(config)#
CBWFQ(config)#policy-map  CBWFQ  //定义策略,调用类class//
CBWFQ(config-pmap)#class class_HTTP
CBWFQ(config-pmap-c)#bandwidth 256
CBWFQ(config-pmap)#
CBWFQ(config-pmap)#class class_FTP
CBWFQ(config-pmap-c)#bandwidth 512
CBWFQ(config-pmap)#
CBWFQ(config-pmap)#class class_BT
CBWFQ(config-pmap-c)#drop
CBWFQ(config-pmap)#

CBWFQ(config-pmap)#class class-default
CBWFQ(config-pmap-c)#fair-queue   //网络中剩下的流量除了HTTP,FTP之使用WFQ放到fair-queue中了//
CBWFQ(config)#
CBWFQ#
CBWFQ(config)#int s0/0
CBWFQ(config-if)#service-policy output  CBWFQ
CBWFQ(config)#

 

QOS-WFQ (2009-05-09 10:02:10)

  Weighted Fair Queue,加权公平队列。 WFQ将分组按照不同的业务流、不同的IP优先级,自动按照HASH算法,划分成不同的队列,在保证高优先级业务的同时,按照配置权 重 ,将带宽公平地分给低优先级别的业务。Quidway路由器在每个接口上最大支持4096个队列,在此范围之内,网络治理员可以配置队列的数目和相应权 值。WFQ的优点是对所有应用都能比较公平地 提供服务质量,对于要求较高的业务可以通过设置权重保障优先级,能智能划分队列和调度,配置相对简单,对网络治理员要求相对较低;缺点是由于相对公平,对 于QOS要求极高的应用,不能象PQ那样绝对保证,策略计算复杂,比较消耗路由器处理能力。它适用于应 用较复杂,并且应用相对公平的网络,如Internet网。 

WFQ的思想:
     i,为每个流创建一个专用的队列,避免队列的饥饿,延迟, 抖动等 
   ii,在所有流间公平,正确地分配带宽
   iii,WFQ使用 [IP优先级作为分配带宽的权重

CISCO路由器上,接口小于E1的 链路会默认启用WFQ.

注:在WFQ中,weight的计 算方式为4096/(IP优先级+1)或者32384r/(IP优先级+1)
     因此在show queue中看到的weight值越大,表示权重越低。

 

WFQ优点

1.配置简单(不用手工分类)

2.保证所有的流都有 一定的带宽

3.丢弃野蛮流量

4.大多数平台上都支 持

5.支持所有IOS版本(11.0以上)

WFQ缺点

1.每个子队列都继承 了FIFO的缺点

2.多个不同的流可能 会被分入同一个队列(流的数量超过了配置的队 列数)

3.不支持手工分类

4.不能提供固定带宽 保证

5.因为使用了复杂的 分类和调度机制,对系统资源有一定的限制

 

配置命令:
     route(config-if):fair-queue  cdt   dynamic-queues   reservable-queues
                                     动 态队列个数  保留队列个数 
                     
reservable-queues
       保留队列个数:针对RSVP,可以保留一定的队 列,缺省是0,范围0~1000
dynamic-queues
        动态队列个数缺省是256,流确实很多,可以调大,最大4096
cdt:   
    每个队自己的长度
一个数据排到第一个队中,cdt=64,如果该队的报文己达到64,新的报文丢包!
每个队中排的报文数量是有限的
所有队列加起来,上限:

   router(config-if)#hold-queue  max-limit  out    缺省1000
一个报文是否在WFQ中排到队列中的二个因素:
  1)--本队列是否己满
 2)--所 有队列是否超出队列上限  ----超出报文 丢弃

WFQ Configuration:

WFQ(config)#
WFQ(config)#int s0/1
WFQ(config-if)#fair-queue   //表面接口启用WFQCISCO路由器小于E1会默认启用//

WFQ(config-if)#fair-queue 128 1024 100 //设置CDT128,动态队列数量为1024个,保留队列个数100//

WFQ(config-if)#hold-queue 1200 out //所有队列加起来CDT上 限是1200//
WFQ(config-if)#

查看:

WFQ#
WFQ#show int s0/1
Serial0/1 is up, line protocol is up 
   Queueing strategy: weighted fair
  Output queue: 0/1200/64/0 (size/max total/threshold/drops)
     Conversations  0/1/256 (active/max active/max total)
     Reserved Conversations 0/0 (allocated/max allocated)
     Available Bandwidth 1158 kilobits/sec
  5 minute input rate 3000 bits/sec, 3 packets/sec
  5 minute output rate 3000 bits/sec, 3 packets/sec
     1001 packets input, 97009 bytes, 0 no buffer
     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     1004 packets output, 96674 bytes, 0 underruns
     0 output errors, 0 collisions, 3 interface resets
     0 output buffer failures, 0 output buffers swapped out
     3 carrier transitions     DCD=up  DSR=up  DTR=up  RTS=up  CTS=up