Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18923628
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 系统运维

2008-03-20 08:54:28

简介

网络中的服务质量(QoS)策略可以决定网络流量性能是否符合配置文件规定的要求(合同),是否将不符合要求的流量丢弃或者标记一个不同的差分服务代码点(DSCP)值来执行约定的服务水平(DSCP是对帧的QoS水平进行度量的标准)。

我们不能将策略和流量整形混为一谈。尽管策略和整形都需要确认流量是否按照配置文件(合同)规定运行,但是策略并不对流量采取 缓存措施,因而发送时延不会受到影响。策略不对超出配置文件的数据包进行缓存处理,而是直接将这些流量丢弃或者将其标记为较低的QoS水平(DSCP降级标记)。与之相反,流量整形对超出档案标准的流量采取缓存处理,使得突发流量能够平缓,不过这会影响到时延和抖动。整形只能应用于输出流量接口,而策略则可同时应用于输入和输出接口。

在现有的Catalyst 6000硬件上,策略只能应用于入局接口。Catalyst 6000线路卡并不支持流量整形。要获得Cisco 7600上线路卡光交换模块(OSM)以及FlexWan端口适配器上的流量整形支持信息,请参阅 。

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种类型: IPIPX其它

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上配置和监控策略功能

策略配置包括三个主要的步骤:

  1. 定义一个策略器:正常流量速率、超额速率(如果适用)、突发速率以及策略操作
  2. 创建一个QoS ACL来选择受策略的流量,并在此ACL上连接一个策略器
  3. 将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 any eq 111
 !--- 创建 QoS ACL 以便选择流量,并将管理器连接到QoS ACL
 commit qos acl all
 !--- 编译QoS ACLL
 set port qos 2/8 vlan-based
 !--- 为基于VLAN的QoS配置端口 
 set qos acl map udp_qos_vlan 20
 !--- 将QoS ACL映射到VLAN 20
 

下一步,不是用DSCP 32来丢弃超过配置文件限制的数据包,而是将其降级到0级的DSCP上(尽力而为级):

Catalyst 6000
set qos enable
 !--- 激活 QoS
 set qos policer aggregate udp_1mbps rate 1000 burst 13 policed-dscp
 !--- 定义管理器;关于比率和字符组计算,请参阅 
 set qos acl ip udp_qos_md trust-ipprec aggregate udp_1mbps udp any any eq 111 dscp-field 32
 !--- 创建 QoS ACL 以便选择流量,并将管理器连接到QoS ACL
 commit qos acl all
 !--- 编译QoS ACL
 set qos policed-dscp-map 32:0
 !--- 修改控制的DSCP映射以便将DSCP 32 降至DSCP 0。
 set port qos 2/8 vlan-based
 !--- 为基于VLAN的QoS配置端口
 set qos acl map udp_qos_md 20
 !--- 将QoS ACL映射到VLAN 20

采用sh qos maps runtime policed-dscp-map 来查看当前策略的DSCP图。

采用 sh qos policer runtime 来确认策略器的参数,并查看策略器连接到哪个QoS ACL上。

注: 采用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中的策略功能

  1. 在Cisco IOS中配置策略涉及下述步骤:
  2. 定义一个策略器
  3. 创建一个ACL来选择策略的流量
  4. 定义等级映射、采用ACL和(或)DSCP/IP优先级来选择流量
  5. 采用等级来定义业务策略,并将策略器应用于每个等级
  6. 将业务策略应用于端口或者VLAN

我们下面考察和前面相同的例子,不过用的是Cisco IOS。例如,有一个流量生成器同端口2/8相连,将17Mbps的UDP流量发送到目的端口111:

Catalyst 6000
mls qos
 !--- 激活 QoS
 mls qos aggregate-policer udp_1mbps 1000000 2000 conform-action transmit exceed-action drop
 !--- 定义管理器;关于比率和字符组计算,请参阅 
 !--- 注意,由于硬件精度,字符组为2000而不是1518。
 access-list 111 permit udp any any eq 111
 !--- 定义ACL以便选择流量
 class-map match-all udp_qos
 match access-group 111
 !--- 定义要控制的流量级别。
 policy-map udp_policy
 class udp_qos 
 police aggregate udp_1mbps
 !--- 定义QoS策略,使管理器适用于流量级别。
 interface GigabitEthernet2/8
 switchport
 service-policy input udp_policy
 !--- 将QoS策略应用于接口
 

在Cisco IOS中有两种类型的集合策略器:named(指定的)和per-interface(按接口的)。named集合策略器将对应用该策略器的所有接口上的流量整体实施策略。上面的例子就是使用这个类型。而per-interface策略器同named策略器不同,将对应用该策略器的每个接口分别进行策略。per-interface策略器在策略映射配置中定义。下面就是应用per-interface策略器的例子:

Catalyst 6000
mls qos
 !--- 激活 QoS
 access-list 111 permit udp any any eq 111
 !--- 定义ACL以便选择流量
 class-map match-all udp_qos
 match access-group 111
 !--- 定义要控制的流量级别。
 policy-map udp_policy
 class udp_qos
 !--- 定义QoS策略,使管理器适用于流量级别。
 police 1000000 2000 2000 conform-action transmit exceed-action drop
 !--- 创建每接口管理器,并将其应用到流量级别。
 interface GigabitEthernet2/8
 switchport
 service-policy input udp_policy
 !--- 将QoS策略应用于接口
 

微流策略器在策略映射配置中定义,同per-interface策略器相同。在下面的例子中,每个来自主机192.168.2.2的进入VLAN 2的数据流都将通过策略限制到100 Kbps。来自192.168.2.2的全部流量控制在500 Kbps。VLAN 2包括接口 fa4/11和fa4/12。

Catalyst 6000
mls qos
 !--- 激活 QoS
 access-list 1 permit 192.168.2.2
 !--- 定义访问列表,以便选择主机192.168.2.2的流量。
 class-map match-all host_2_2
 match access-group 1
 !--- 定义要控制的流量级别。
 policy-map host
 class host_2_2
 !--- 定义 QoS 策略
 police flow 100000 2000 conform-action transmit exceed-action drop
 !--- 定义微流管理器;关于比率和字符组计算,请参阅 
 police 500000 2000 2000 conform-action transmit exceed-action drop
 !--- 定义聚合管理器,以便限制从主机到500 Kbps聚合的流量
 interface fa4/11
 mls qos vlan-based
 interface fa4/12
 mls qos vlan-based
 !--- 为基于VLAN的QoS配置VLAN2的接口。
 interface vlan 2
 service-policy input host
 !--- 将QoS策略应用到VLAN 2
 

要对策略功能进行监控,可以使用下述命令:

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

(策略计数区显示每个流被策略的数据包数量。)

阅读(524) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~