您的位置:首页 > 其它

使用CBWFQ进行流量控制

2006-10-29 11:50 218 查看
【汉维讲师原著,欢迎转载,请注明出处】I

CBWFQ(Class-based Weighted Fair Queuing)基于类型的加权公平队列,采用Qos CLI,使用Class Map 对流量进行分类,接口通过调用Policy Map对流量进行策略控制,功能十分强大,可以满足绝大部分流量控制需求,Cisco IOS12。1以后版本支持该功能,下面对CBWFQ的使用配置做简单介绍:

一、顾名思义Class-Based首先要定义一个Class;

Example:(config)#class-map [match-all | match-any] myclass

match-all 指名条件必须全部满足,才可以执行,此为Default值;match-any表示匹配任何一个条件就可以执行。class-map的名字不要超过64个字符,同时要满足Cisco 命名字符要求。

接下来输入匹配条件

1、匹配另一个CLass-map
Example:(class-map)#match class-map comclass match 为匹配关键字,class-map comclass 为另一个Class-Map,一个Class-map可以调用另外一个Class-map可以实现复杂的匹配条件。

2、匹配一种协议类型:

Example:(class-map)#match protocol myprotocol protocol是协议关键字,其协议类型源于NBAR(Network-Based Application Recognition),可以从Cisco网站下载PDLM(Packet Description Language Module,分组描述语言模块)文件,装到Flash中,增加协议类型。其中类型包括EGP,ICMP,EIGRP,DNS,HTTP,Telnet等上百种具体协议。

3、可以匹配访问列表:

Example:(class-map)#match access-group [number | name myname],可以匹配基于号码的list和基于Name的Access list,大家都很熟了,不多说了。

4、匹配CoS (class of Servie)
Example:(class-map)#match cos mycos1 mycos2.. 匹配分组标识CoS值,最多可以连续匹配四个值,Cos取值范围0(低)->7(高)。

5、匹配IP优先级(IP Precedence)
Example:(class-map)#match ip precedence myprecedence1 myprecedence2.. 类似COS,最多4个值,取值范围0-7。

6、匹配DSCP值(Differentiated Services Code Point)DSCP采用IP分组的服务类型字节(TOS)。
Example:(class-map)#match ip dscp mydscp1 mydscp2... dscp取值范围0-63,最多连续匹配8个dscp值。

7、匹配实时协议RTP(Real-Time Protocol)(一般语音或视频)
Example:(class-map)#match ip rip start-port port-range 起始端口为2000-65535,范围从0到16383,用来匹配UDP端口。

8、匹配入接口(为什么只有入接口?猜测看)
Example:(class-map)#match input-interface type number 不说了,一看就懂.

9、匹配目的MAC:
Example:(class-map)#match destination-address mac mymacaddress 同上。

10、还有一些不常用的,就不提了,感兴趣的朋友可以看看相关资料。

二、类别定义好了,就看如何使用了:

1、定义策略映像:(globle)#policy-map my-policymap 简单。

2、指定一种或多种流量类型(最多64个类型):(pmap)#class myclass 注意在Policy-map配置模式下,别和Class-Map混淆了。

3、使用Default类型,缺省情况下思科早为你准备好了一个Default class,适用于任何你没有定义的其他类型,名字叫class-default ,要记住,打?是看不到的。

Example:(pmap)#class class-default

类型都指定了,我们总该做点什么吧?该用SET命令了。

4、设置FR的FRDE(Frame Relay Discard Eligibiltiy),12.2(2)T 以上才有呢。
Example:(pmap-class)#set fr-de 注意当前配置模式,此命令没有参数。

5、SET COS Example:(pmap-class)#set cos cos

6、SET IP Precedence Example:(pmap-class)#set ip precedence myprecedence

7、SET IP DSCP Example:(pmap-class)#set ip dscp mydscp=

说了老半天,下面才是我们想要的。
8、给类型分配带宽:bHM

Example:(pmap-class)#bandwidth { mybandwidth | percent mypercent} mybandwidth 指定具体带宽,如果知道接口总带宽就可以使用; percent关键字指定接口可用带宽百分比,0-100取值,默认情况下接口可用最大带宽为物理带宽的75%(其余25%留给系统自己用),所以percent 值是75%的percent,而不是物理带宽的percent,我们可以使用max-reserved-bandwidth precent 更改最大可用带宽,注意了,不用随意更改!!!,如果你只定义了你喜欢的流量而没有指定default-class,或者给default-class 很小的带宽,你就惨了,有可能连路由学不到,而且还不知道什么原因。该带宽是按照WFQ算法进行,不一定完全符合,下面介绍一个完全符合的。

9、将LLQ用于严格的优先级类型:
Example:(pmap-class)#priority { mybandwidth | percent mypercent} mybandwidth 完全符合,类似PQ算法,主要适用于低延迟的语音,要仔细规划好才使用,免得出错。

10、使用流量管理来控制流量速率!
Example:(pmap-class)#police bps burst-normal burst-max conform-action action exceed-action action [violate-action action]
这条命令稍微复杂些,bps 指定平均流量速率(bit/s),burst-normal burst-max 分别是流量能突发超出平均值和过度超出平均值,都以字节为单位;我们可以根据流量速率和管理阀值之间的关系,制定相应的措施。如果流量符合bps速率或者升高但低于正常的突发burst-normal,会采取conform-action;如果流量升高到介于burst-normal和 burst-max之间,则采取exceed-action;最后,如果流量超过burst-max值,如果指定了violate-action,则会采取相应措施,如果没有指定,则burst-max对流量没有任何影响。action可以是drop, set-qos-transmit, set-dscp-transmit,就不一一说明了。

11、还有一些其他参数,使用较少就不介绍了。

三、最后,将policy-map 应用到接口上。

(interface)#service-policy {input | output} mypolicymap 分为出和入两个方向,该接口就可以乖乖的执行你的策略了。
以上对Qos中的一点技术做了大概说明,如果能灵活掌握,以后如果再遇到类似“冲击波”病毒,对网络性能造成影响,就可以摆平了。hH
QoS技术博大精深,可以应用的地方很多,几乎出现在思科全系列产品上,但是会用的人太少,随着网络应用愈来愈复杂,QoS越来越有用武之地了,感兴趣的朋友可以参考《Administering Cisco QOS in IP Network》,四位CCIE的力作,syngress出版,获得过大奖。
补充:查看流量:
最好用流量分析仪,不过很贵,下面介绍几款穷人的“分析仪”!
1、用扩展访问列表做log记录,最好先清一些buffer和logging,此方法有局限性,只有对协议类型或者地址熟悉的情况下使用。
2、IP accounting,先定义阀值,免得累坏了你的路由器,在关键接口启用,入或出方向都可以,用show ip accounting 看看,里面的东东比较详细,自己看好了。
3、Netflow, 启用CEF的路由器可以定制想要观察的FLow,不过对MEM要求较高,要仔细看清楚了再用,其输出内容非常丰富。
  
4、还有几款复杂的,不太实用,就不介绍了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: