分类: 系统运维
2008-03-20 08:54:28
网络中的服务质量(QoS)策略可以决定网络流量性能是否符合配置文件规定的要求(合同),是否将不符合要求的流量丢弃或者标记一个不同的差分服务代码点(DSCP)值来执行约定的服务水平(DSCP是对帧的QoS水平进行度量的标准)。
我们不能将策略和流量整形混为一谈。尽管策略和整形都需要确认流量是否按照配置文件(合同)规定运行,但是策略并不对流量采取 缓存措施,因而发送时延不会受到影响。策略不对超出配置文件的数据包进行缓存处理,而是直接将这些流量丢弃或者将其标记为较低的QoS水平(DSCP降级标记)。与之相反,流量整形对超出档案标准的流量采取缓存处理,使得突发流量能够平缓,不过这会影响到时延和抖动。整形只能应用于输出流量接口,而策略则可同时应用于输入和输出接口。
在现有的Catalyst 6000硬件上,策略只能应用于入局接口。Catalyst 6000线路卡并不支持流量整形。要获得Cisco 7600上线路卡光交换模块(OSM)以及FlexWan端口适配器上的流量整形支持信息,请参阅 。
策略的设置通过定义策略器将它们应用于端口(基于端口的QoS)或者VLAN(基于VLAN的QoS)。每个策略器都为要求内和要求外的流量定义名称、类型、速率、突发速率以及采取的行动等。 Supervisor Engine II上的策略还支持超额速率参数。有两种类型的策略器:微流(microflow)和集合(aggregate)。
每种策略器都可应用于数个端口或者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)。
多种参数控制令牌桶的行为:
因而您可以用以下公式来确定突发速率参数:
突发速率=(速率(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),监控性能,然后根据需要进行调整。
出于同样的原因,我们不推荐采用面向连接的流量来标定策略器的操作,因为它的性能通常比策略器所允许的要低。
正如我们在简介中所提到的,策略器可以对超出配置规定的数据包采取两种措施:
为了降级标记数据包,policed DSCP map必须修改。 默认的策略DSCP设置是将数据包重新标注到相同的DSCP上(此时不会发生降级)。
注:如果“超出配置文件规定”的数据包降级标定到某个DSCP,而该DSCP所映射的输出队列同初始的DSCP不同,此时可能有一些数据包会不按顺序发送。基于这种原因,如果订购的数据包很重要,则推荐将“超过配置文件规定”的数据包降级到这样的DSCP上:即与“符合配置文件规定”的数据包有相同输出队列的DSCP。
在Supervisor Engine II上可以支持超额速率,有两种触发器可用:
应用超额速率 的一个例子是, 将超出正常速率的数据包降级,而将超过超额速率的数据包丢弃。
当前的策略特性卡(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作为转发引擎。
策略配置包括三个主要的步骤:
下面考查以下例子:我们希望在端口2/8上对所有进入UDP端口的流量进行策略:
下一个例子基本相同,区别在于策略器连在VLAN上,端口2/8属于VLAN 20。 注: 端口QoS要更改为“基于VLAN”的模式,需要采用 set port qos命令。
策略器将评估配置给基于VLAN QoS的VLAN中所有端口的流量。
下一步,不是用DSCP 32来丢弃超过配置文件限制的数据包,而是将其降级到0级的DSCP上(尽力而为级):
采用sh qos maps runtime policed-dscp-map 来查看当前策略的DSCP图。
采用 sh qos policer runtime
注: 采用supervisor Engine I和Ia,不可能对单个集合策略器进行策略统计。要查看每个系统的策略统计,可以使用下述命令:
Cat6k> (enable) sh qos statistics l3stats Packets dropped due to policing: 1222086 IP packets with ToS changed: 27424 IP packets with CoS changed: 3220 Non-IP packets with CoS changed: 0
要检查微流策略统计,可以使用下述命令:
Cat6k> (enable) sh mls entry qos short
Destination-IP Source-IP Port DstPrt SrcPrt Uptime Age
--------------- --------------- ----- ------ ------ -------- --------
IP bridged entries: 239.77.77.77 192.168.10.200 UDP 63 63 00:22:02 00:00:00 Stat-Pkts : 165360 Stat-Bytes : 7606560 Excd-Pkts : 492240 Stat-Bkts : 1660 239.3.3.3 192.168.11.200 UDP 888 777 00:05:38 00:00:00 Stat-Pkts : 42372 Stat-Bytes : 1949112 Excd-Pkts : 126128 Stat-Bkts : 1628
Only out of the profile MLS entries are displayed Cat6k> (enable)
在使用Supervisor Engine II时,采用sh qos statistics aggregate-policer命令可以在策略器上逐个查看集合策略统计信息。
例如,有一个流量生成器同端口2/8相连,将17Mbps的UDP流量发送到目的端口111。我们希望策略器丢弃16/17的流量,从而只有1 Mbps可以通过:
Cat6k> (enable) sh qos statistics aggregate-policer udp_1mbps
QoS aggregate-policer statistics:
Aggregate policer Allowed packet Packets exceed Packets exceed
count normal rate excess rate
---------------------- -------------- -------------- --------------
udp_1mbps 582439 9732108 9732108
Cat6k> (enable) sh qos statistics aggregate-policer udp_1mbps QoS aggregate-policer statistics: Aggregate policer Allowed packet Packets exceed Packets exceed count normal rate excess rate ---------------------- -------------- -------------- -------------- udp_1mbps 582504 9733198 9733198
注意,在命令之间,允许通过的数据包增加到65,而超额数据包为1090,这意味着策略器丢弃了1090个数据包,而只有65个数据包通过。由于65/(1090+65)=0.056或者说大约为1/17,因此策略器运行正常。
[page]
我们下面考察和前面相同的例子,不过用的是Cisco IOS。例如,有一个流量生成器同端口2/8相连,将17Mbps的UDP流量发送到目的端口111:
在Cisco IOS中有两种类型的集合策略器:named(指定的)和per-interface(按接口的)。named集合策略器将对应用该策略器的所有接口上的流量整体实施策略。上面的例子就是使用这个类型。而per-interface策略器同named策略器不同,将对应用该策略器的每个接口分别进行策略。per-interface策略器在策略映射配置中定义。下面就是应用per-interface策略器的例子:
微流策略器在策略映射配置中定义,同per-interface策略器相同。在下面的例子中,每个来自主机192.168.2.2的进入VLAN 2的数据流都将通过策略限制到100 Kbps。来自192.168.2.2的全部流量控制在500 Kbps。VLAN 2包括接口 fa4/11和fa4/12。
要对策略功能进行监控,可以使用下述命令:
bratan#sh mls qos QoS is enabled globally Microflow policing is enabled globally QoS global counters: Total packets: 10779 IP shortcut packets: 0 Packets dropped by policing: 2110223 IP packets with TOS changed by policing: 0 IP packets with COS changed by policing: 0 Non-IP packets with COS changed by policing: 0
bratan#sh mls qos ip gigabitEthernet 2/8 [In] Policy map is udp_policy [Out] Default. QoS Summary [IP]: (* - shared aggregates, Mod - switch module)
Int Mod Dir Class-map DSCP AgId Trust FlId AgForward-Pk AgPoliced-Pk -------------------------------------------------------------------- Gi2/8 1 In udp_qos 0 1* No 0 127451 2129602 bratan#sh mls qos ip gigabitEthernet 2/8 [In] Policy map is udp_policy [Out] Default. QoS Summary [IP]: (* - shared aggregates, Mod - switch module)
Int Mod Dir Class-map DSCP AgId Trust FlId AgForward-Pk AgPoliced-Pk ------------------------------------------------------------------- Gi2/8 1 In udp_qos 0 1* No 0 127755 2134670
注意,允许的数据包已经增加到304,超额数据包为5068,
意味着策略器丢弃了5068个数据包,有304个得以通过。
如果输入速率为17 Mbps,则策略器将让该流量的1/17通过。
对比丢弃的和转发的数据包,我们可以得到下述式子:
304/(304+5068)=0.057或者约为1/17。由于硬件策略粒度的因素,
可能还会有一些微小差别。
要进行微流策略统计,可采用 sh mls ip detail 命令:
Orion#sh mls ip detail
IP Destination IP Source Protocol L4 Ports Vlan Xtag L3-protocol
--------------+---------------+--------+-------------+----+----+-----------+
192.168.3.33 192.168.2.2 udp 555 / 555 0 1 ip
192.168.3.3 192.168.2.2 udp 63 / 63 0 1 ip
[IN/OUT] Ports Encapsulation RW-Vlan RW-MACSource RW-MACDestination Bytes
--------------+-------------+-------+--------------+-----------------+------------+
Fa4/11 - ---- ARPA 3 0030.7137.1000 0000.3333.3333 314548
Fa4/11 - ---- ARPA 3 0030.7137.1000 0000.2222.2222 314824
Packets Age Last Seen QoS Police Count Threshold Leak
------------+-----+---------+-----------+------------+---------+-----------+
6838 36 18:50:09 0x80 346197 62*2^5 3*2^0
6844 36 18:50:09 0x80 346695 62*2^5 3*2^0
Drop Bucket Use-Tbl Use-Enable
----+-------+-------+----------+
YES 1968 NO NO
YES 1937 NO NO
(策略计数区显示每个流被策略的数据包数量。)