简介
网络中的服务质量(QoS)策略可以决定网络流量性能是否符合配置文件规定的要求(合同),是否将不符合要求的流量丢弃或者标记一个不同的差分服务代码点(DSCP)值来执行约定的服务水平(DSCP是对帧的QoS水平进行度量的标准)。
我们不能将策略和流量整形混为一谈。尽管策略和整形都需要确认流量是否按照配置文件(合同)规定运行,但是策略并不对流量采取缓存措施,因而发送时延不会受到影响。策略不对超出配置文件的数据包进行缓存处理,而是直接将这些流量丢弃或者将其标记为较低的QoS水平(DSCP降级标记)。与之相反,流量整形对超出档案标准的流量采取缓存处理,使得突发流量能够平缓,不过这会影响到时延和抖动。整形只能应用于输出流量接口,而策略则可同时应用于输入和输出接口。
在现有的Catalyst 6000硬件上,策略只能应用于入局接口。Catalyst 6000线路卡并不支持流量整形。要获得Cisco 7600上线路卡光交换模块(OSM)以及FlexWan端口适配器上的流量整形支持信息,请参阅 Cisco 7600互联网路由器介绍。
QoS策略参数
策略的设置通过定义策略器将它们应用于端口(基于端口的QoS)或者VLAN(基于VLAN的QoS)。每个策略器都为要求内和要求外的流量定义名称、类型、速率、突发速率以及采取的行动等。 Supervisor Engine II上的策略还支持超额速率参数。有两种类型的策略器:微流(microflow)和集合(aggregate)。
Microflow 微流策略器按数据流分别监控每个相应端口/VLAN上的流量。
Aggregate 集合策略器监控所有相应的端口/VLAN上的流量。
每种策略器都可应用于数个端口或者VLAN。数据流可以采用下述参数定义:源IP地址、目的IP地址、第4层协议(如UDP)、源端口号码以及目的端口号码等。与一套已定义参数相匹配的数据包都被视为属于相同的流(这里的流概念同Netflow交换技术中所采用的相同)。
例如,如果我们配置一个 microflow 微流策略器来将VLAN 1和 VLAN 3上的TFTP流量限制在1 Mbps内,它就只允许VLAN 1和VLAN 3上每条数据流的速率为1 Mbps。换言之,如果在VLAN 1上有3条数据流,而在VLAN 3上有4条数据流,则这样每一条数据流允许的速率都是1 Mbps。 如果我们配置一个 aggregate集合策略器,它就会将VLAN 1(全部数据流)和VLAN 3(全部数据流)的总体TFTP流量速率限制为1 Mbps。
如果同时应用集合和微流策略器,则QoS就会总是执行策略器所制定的最严重的行为。例如,如果一个策略器要求丢弃数据包,而另外一个策略器则指示数据包降级,那么数据包将会被丢弃。
默认状态下,微流策略器仅对被路由的(第3层)流量起作用。如果要对桥接的(第2层)流量也起作用,则需要启用桥接微流策略。在Supervisor Engine II上,即使针对于第3层的微流策略,也需要启动桥接微流策略。
策略是感知协议的,因此QoS访问控制表(ACL)或者带MAC地址ACL的策略映射永远不能对IP流量进行策略。所有的流量都被划分为3种类型: IP、 IPX 和其它。
Catalyst 6000中的策略可以根据“漏桶”概念来实施:与入局流量数据包对应的令牌都被置入一个桶中(每个令牌代表1位,从而大数据包比小数据包对应更多的令牌)。在正常时间间隔内,一定数量的令牌数将从桶中取出并被发送。如果桶中没有更多空间容纳输入的数据包,则数据包被视为超出配置文件范围而被丢弃或者根据配置的策略操作实行降级处理。
值得注意的是,从图中可以看到,流量在桶中并不会缓冲。实际流量根本不通过桶,桶只能用来决定数据包在配置文件内(in-profile)还是在配置文件外(out-of-profile)。
计算参数
多种参数控制令牌桶的行为:
速率 定义在每个时间间隔内将有多少令牌取出。这样就能够有效地设置策略速率。低于速率的所有流量都被视为是符合配置要求的。
时间间隔 定义令牌隔多长时间从桶内取出一次。间隔固定在0.00025秒,从而令牌每秒钟将从桶中取出4000次。时间间隔不能更改。
突发速率 定义在任何一个时段内桶能够容纳的最大令牌数。为了维持规定的流量速率,突发速率的大小不应该低于速率与时间间隔的乘积。另外一种考虑就是最大尺寸的数据包也必须能够置入桶内。
因而您可以用以下公式来确定突发速率参数:
突发速率=(速率(bps)*0.00025(秒/时间间隔))或(最大数据包大小(位)), 取两者中较大的值。
例如,我们可以计算需要在以太网上维持1 Mbps速率所需的最小突发速率值。速率定义为1 Mbps,而最大的以太网数据包为1518 字节,这样公式变为:
突发速率=(1,000,000bps*0.00025)或(1518字节* 8位/字节)=250 或 12144
两者中较大的值为12144,我们可将其折算为13 Kbps。 注: 在Cisco IOS中,策略速率以bps定义,同Catalyst OS中的Kbps不同。此外,突发速率在Cisco IOS中以字节来定义,同Catalyst OS中的千位(kilobits)不同。
注: 由于受硬件策略粒度的影响,实际速率和突发速率都应该折算为最接近的支持值。确认突发速率值不低于最大的数据包尺寸,否则所有大于最大突发速率尺寸的数据包都将被丢弃。
例如,如果用户想在Cisco IOS®中将突发速率设置为1518,则它将会被折算为1000字节,从而所有大于1000字节的帧都将被丢弃。解决方案是将突发速率配置为2000。
在定义突发速率时,您需要考虑到这样的事实,那就是一些协议(如TCP)会针对丢包而采用流控制机制。例如,TCP将把每个要丢失的数据包的窗口缩小一半,相应地,当对某个速率进行策略时,有效的链路使用率就会低于配置的速率。您可以增加突发速率从而实现更高的利用率。对这些流量来说,比较简单易行的方式就是将突发速率的大小增加一倍(在我们的例子中可以从13 Kbits增加到26 Kbits),监控性能,然后根据需要进行调整。
出于同样的原因,我们不推荐采用面向连接的流量来标定策略器的操作,因为它的性能通常比策略器所允许的要低。
策略操作
正如我们在简介中所提到的,策略器可以对超出配置规定的数据包采取两种措施:
丢弃数据包(在配置中采用drop 参数)
将数据包降级为一个较低的DSCP (在配置中采用policed-dscp 参数)
为了降级标记数据包,policed DSCP map必须修改。 默认的策略DSCP设置是将数据包重新标注到相同的DSCP上(此时不会发生降级)。
注:如果“超出配置文件规定”的数据包降级标定到某个DSCP,而该DSCP所映射的输出队列同初始的DSCP不同,此时可能有一些数据包会不按顺序发送。基于这种原因,如果订购的数据包很重要,则推荐将“超过配置文件规定”的数据包降级到这样的DSCP上:即与“符合配置文件规定”的数据包有相同输出队列的DSCP。
在Supervisor Engine II上可以支持超额速率,有两种触发器可用:
当流量超出正常速率
当流量超过超额速率
应用超额速率 的一个例子是, 将超出正常速率的数据包降级,而将超过超额速率的数据包丢弃。
Catalyst 6000所支持的策略特性
当前的策略特性卡(PFC),转发引擎PFC1和PFC2只支持入局(输入接口)策略。
Catalyst 6000最多可支持 63个微流策略器和1023个集合策略器。
采用Supervisor Engine Ia,从Catalyst OS 5.3(1)版和Cisco IOS 12.0(7)版开始支持策略。 注: 用Supervisor Engine Ia制定策略时需要PFC子卡。
采用Supervisor Engine II,从Catalyst OS 6.1(1)版和Cisco IOS 12.1(5c) EX版开始支持入局策略。Supervisor Engine II支持超额速率策略参数。
在带分布式转发卡(DFC)的配置中,只支持基于端口的策略。此外,集合策略器也只能够以每个转发引擎(而非每个系统)为单位来对流量计数。DFC和PFC都是转发引擎。如果线路卡上没有DFC,则可以采用PFC作为转发引擎。
在Catalyst OS上配置和监控策略功能
策略配置包括三个主要的步骤:
定义一个策略器:正常流量速率、超额速率(如果适用)、突发速率以及策略操作
创建一个QoS ACL来选择受策略的流量,并在此ACL上连接一个策略器
将QoS ACL应用于必要的端口或者VLAN。
下面考查以下例子:我们希望在端口2/8上对所有进入UDP端口的流量进行策略:
Catalyst 6000
set qos enable
!--- 激活QoS
set qos policer aggregate udp_1mbps rate 1000 burst 13 drop
!--- 定义管理器;关于比率和字符组计算,请参阅 计算参数
set qos acl ip udp_qos_port dscp 0 aggregate udp_1mbps udp any any eq 111
!--- 创建 QoS ACL 以便选择流量,并将管理器连接到QoS ACL
commit qos acl all
!--- 编译QoS ACL
set qos acl map udp_qos_port 2/8
!--- 将 QoS ACL映射到交换机端口
下一个例子基本相同,区别在于策略器连在VLAN上,端口2/8属于VLAN 20。 注: 端口QoS要更改为“基于VLAN”的模式,需要采用 set port qos命令。
策略器将评估配置给基于VLAN QoS的VLAN中所有端口的流量。
Catalyst 6000
set qos enable
!--- 激活QoS
set qos policer aggregate udp_1mbps rate 1000 burst 13 drop
!---定义管理器;关于比率和字符组计算,请参阅 计算参数
set qos acl ip udp_qos_vlan dscp 0 aggregate udp_1mbps udp any a