1)能够给不同的类保障一定的带宽
2)对传统的WFQ作了扩展支持用户自己定义流量的分类:
3)队列的个数和类别是一一对应,给每个class 保留带宽
CBWFQ:让用户对流量自己来分类
WFQ 对正常流量 处理没问题,但是对语音流量显得"太公平"(语音要求低延迟)
CBWFQ:考虑到公平特性,并没有考虑到语音的应用
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)#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#
CBWFQ#show class-map
Match any
Match dscp 6
Match protocol http
Match precedence 3
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(config)#policy-map CBWFQ
CBWFQ(config-pmap)#class CBWFQ1
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(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)#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-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)#
i,为每个流创建一个专用的队列,避免队列的饥饿,延迟,抖动等
ii,在所有流间公平,正确地分配带宽
iii,WFQ使用 [IP优先级] 作为分配带宽的权重
因此在show queue中看到的weight值越大,表示权重越低。
route(config-if):fair-queue cdt dynamic-queues reservable-queues
动态队列个数 保留队列个数
reservable-queues:
保留队列个数:针对RSVP流,可以保留一定的队列,缺省是0,范围0~1000
dynamic-queues:
动态队列个数: 缺省是256,流确实很多,可以调大,最大4096
cdt:
每个队自己的长度
一个数据排到第一个队中,cdt=64,如果该队的报文己达到64,新的报文丢包!
每个队中排的报文数量是有限的
所有队列加起来,上限:
一个报文是否在WFQ中排到队列中的二个因素:
1)--本队列是否己满
2)--所有队列是否超出队列上限 ----超出报文丢弃
WFQ(config)#int s0/1
WFQ(config-if)#fair-queue //表面接口启用WFQ,CISCO路由器小于E1会默认启用//
WFQ(config-if)#
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
r2(config)#access-list 101 permit ip any any precedence 5
r2(config)#
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 queue 2 byte-count 3000 //设置子队列2在一个轮循内可以传输3000字节数据包
r2(config)#queue-list 16 queue 3 byte-count 5000
r2(config)#
r2(config)#
r2(config)#int s0/1
r2(config)#
PQ(config)#
PQ(config)#priority-list 1 interface s0/0 medium //把来自s0/1口的流量映射到Medium优先级队列//
PQ(config)#priority-list 1 default normal //所有其它流量映射到Normal优先级队列//
PQ(config)#
PQ(config)#int s0/1
PQ#show queueing int s0/1
Interface Serial0/1 queueing strategy: priority
high/13 medium/0 normal/2056 low/0
PQ#
PQ#
Current DLCI priority queue configuration:
Current priority queue configuration:
1 high protocol ip list 101
1 medium interface Serial0/0
1 medium limit 30
1 normal limit 40
1 low limit 50
PQ#
i、特点
在CBWFQ中添加一个优先级队列用于实时的流量。
* 高优先级队列得到如下保障:
a)低延迟的报文转发
b)带宽
注:在拥塞发生时,高优先级的流量同时受到管制---即它们占用的带宽不能超过它们所保障的带宽。
* 低优先级队列使用CBWFQ。
ii、配置LLQ
priority 带宽值----为一个类分配固定的带宽值确保快速转发;若拥塞时,超过该带宽的流量将被丢弃。(若没有拥塞,将不会使用管制)
支持语音对网络的低延迟,抖动小,保障带宽
对其它流量提供公平处理
LLQ= CBWFQ+PQ
LLQ(config)#class-map VOIP
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