一、识别流量:
可以用acl和nbar技术综合定义数据流。Acl定义可以采用下述参数:源IP地址、目的IP地址、第4层协议(如UDP)、源端口号码以及目的端口号码等。与一套已定义参数相匹配的数据包都被视为属于相同的流,NBAR技术可以识别应用层流;建立ACL用来识别p2p应用端口或者服务器ip地址,可根据实际情况配置,例如:
ip access-list extended edonkey
permit tcp any any range 4661 4662
permit tcp any any range 4242 4243
permit udp any any eq 4665 |
同时应用pdlm包
ip nbar pdlm bittorrent.pdlm
ip nbar pdlm eDonkey.pdlm |
二、建立策略:
具体实施时,需要先配置一个用户定制的Policing,该Policing应该包括以下三个参数:平均速率、最大突发量和超过限制时所进行的处理。为提供更灵活的带宽限制,Policing又分为两种:Microflow和Aggregate.MicroflowPolicing可以提供对单一流使用带宽限制,而AggregatePolicing则可以对所有流总使用带宽进行限制。
将定制的Policing放到一个访问控制列表中,并定义到一个端口或一个VLAN上,即可以实现对用户的带宽管理。如果同时应用集合和微流策略器,则 QoS就会总是执行策略器所制定的最严重的行为。例如,如果一个策略器要求丢弃数据包,而另外一个策略器则指示数据包降级,那么数据包将会被丢弃。默认状态下,微流策略器仅对被路由的(第3层)流量起作用。如果要对桥接的(第2层)流量也起作用,则需要启用桥接微流策略mls qos bridged.
Catalyst6000中的策略可以根据“漏桶”概念来实施:与入局流量数据包对应的令牌都被置入一个桶中(每个令牌代表1位,从而大数据包比小数据包对应更多的令牌)。在正常时间间隔内,一定数量的令牌数将从桶中取出并被发送。如果桶中没有更多空间容纳输入的数据包,则数据包被视为超出配置文件范围而被丢弃或者根据配置的策略操作实行降级处理。
计算参数
多种参数控制令牌桶的行为:
· Rate 定义每个时间间隔内将有多少令牌取出。低于速率的所有流量都被视为是符合配置要求的。
· Interval 定义令牌隔多长时间从桶内取出一次。间隔固定在0.00025秒,从而令牌每秒钟将从桶中取出4000次。时间间隔不能更改。
· Burst 定义在任何一个时刻桶内能够容纳的最大令牌数。为了维持规定的流量速率,突发速率的大小不应该低于速率与时间间隔的乘积。另外一种考虑就是最大尺寸的数据包也必须能够置入桶内。
可以用以下公式来确定突发速率参数:
突发速率=(速率(bps)*0.00025(秒/时间间隔))或(最大数据包大小(位)), 取两者中较大的值。
例如,计算需要在以太网上维持1 Mbps速率所需的最小突发速率值。速率定义为1 Mbps,而最大的以太网数据包为1518 字节,这样公式变为:
突发速率=(1,000,000bps*0.00025)或(1518字节* 8位/字节)=250 或 12144
两者中较大的值为12144,我们可将其折算为13 Kbps. 注: 在Cisco IOS中,策略速率以bps定义。此外,突发速率在Cisco IOS中以字节来定义。
注: 由于受硬件策略粒度的影响,实际速率和突发速率都应该折算为最接近的支持值。确认突发速率值不低于最大的数据包尺寸,否则所有大于最大突发速率尺寸的数据包都将被丢弃。
例如,如果用户想在Cisco IOS中将突发速率设置为1518,则它将会被折算为1000字节,从而所有大于1000字节的帧都将被丢弃。解决方案是将突发速率配置为2000.
在定义突发速率时,需要考虑一些协议(如TCP)会针对丢包而采用流控制机制。例如,TCP将把每个要丢失的数据包的窗口缩小一半,相应地,当对某个速率进行策略时,有效的链路使用率就会低于配置的速率。您可以增加突发速率从而实现更高的利用率。对这些流量来说,比较简单易行的方式就是将突发速率的大小增加一倍(在我们的例子中可以从13 Kbits增加到26 Kbits),监控性能,然后根据需要进行调整。
mls qos
!--- 激活 QoS
mls qos flow-policing
class-map match-any bit
match protocol bittorrent
match protocol eDonkey
match access-group edonkey
match … !-用户根据实际情况定义
policy-map p2p
class bit
police flow 100000 2000 conform-action transmit exceed-action drop
!--- 定义微流管理器,限制每个p2p应用流为100 Kbps的微流量
police 20000000 13000 26000 conform-action transmit exceed-action drop
!--- 定义聚合管理器,以便限制所有p2p应用流为20Mbps聚合流量 |
三、在接口上应用策略(设备可能仅支持input方向)
interface gigabitEthernet0/2
service-policy input p2p
service-policy output p2p |
如果实施基于VLAN的QoS配置,需要在二层接口配置mls qos vlan-based
四、验证策略实施情况
sh mls qos
sh mls qos ip gigabitEthernet 0/2
sh mls ip detail #进行微流策略统计
sh int g0/2 rate-limit
show policy-map interface g0/2
show ip nbar unclassified-port-stats
show ip nbar protocol stats byte-count
show ip nbar port-map | include custom |
注:以上配置适用于Cisco6509 sup720平台,可用IOS版本12.1以上。