本节书摘来自异步社区《Cisco QoS认证考试指南(第2版)》一书中的第6章,第6.5节基于类的限速配置,作者 【美】Wendell Odom , Michael J. Cavanaugh,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.5 基于类的限速配置
Cisco QoS认证考试指南(第2版)
CB限速特性根据数据包是否符合、超出或违反流量契约(本章前文“限速如何工作”小节中详细解释了这3类流量分别表示什么意思),分别使用3种不同的行为来实现限速。一般来说,当数据包到达时有足够的Bc令牌可用,CB限速特性就会将其看作“符合”契约;当数据包到达时Bc不够但Be足够,该数据包就“超出”契约;当数据包到达时Bc和Be都不够,该数据包就“违反”契约
对于每个分类(符合、超出、违反)来说,CB限速特性可以使用不同的行为。本章后文的表6-11中列出了police命令中可以使用的行为关键字。一般有3种选择:丢弃数据包、传输数据包、首先重新标记某些QoS字段,然后传输数据包。CB限速特性使用MQC命令来实施配置。由于CB限速特性是基于类的,因此一旦启用,它可以针对接口或子接口上的流量子集进行限速。CB限速特性所使用的MQC分类命令与其他所有基于MQC的工具相同;你只需要多学一条MQC命令,就可以知道如何配置另一个MQC QoS特性。
在策略映射中使用police命令来配置CB限速特性。在police命令中,你需要以bit/s为单位定义限速速率,以字节为单位定义Bc,以字节为单位定义Be。要注意在CB整形特性的设置中,Bc和Be的单位是比特,而不是字节!
表6-10到表6-12后面有两个CB限速特性的配置案例(例6-7和例6-8)。表6-10列出了CB限速特性的配置命令。表6-11列出了police命令中可以配置的行为(MQC中的match命令没有列在其中,它可以应用在任何基于MQC的特性上,你可以从第3章的表3-2中查看相关内容)。表6-12列出了与CB限速特性相关的show命令。
针对数据包是否符合、超出或违反流量契约,对数据包实施的行为归结为:丢弃数据包、传输数据包、首先重新标记某些QoS字段,然后传输数据包。drop和transmit选项的作用很明显。但CB限速特性还提供诸如set-prec-transmit和set-dscp-transmit的关键字,即限速器会在传输数据包之前,将数据包的IP优先级或DSCP字段标记为一个更低的值。你可以回顾一下“限速如何工作”小节,将数据包重新标记非常有用,因为在之后的拥塞中,这种数据包更可能被丢弃,但如果没有拥塞,数据包可以被传输。你也可以配置CB限速特性实施多种行为,比如为超出契约的数据包标记DSCP和LAN CoS字段。
你可以使用CB限速特性来为进入或离开一个接口的所有或部分流量进行限速。在第一个案例中,ISP边界路由器对从一个企业网络来的所有流量进行入向限速。第一个CB限速案例的配置规则如下:
创建单速率三色限速配置;
在ISP边界路由器上,将所有入向流量限速为96 kbit/s;
允许发送与1秒等量的Bc;
允许发送与0.5秒等量的Be;
违反契约的流量被丢弃;
超出契约的流量被标记为DSCP Be;
遵守契约的流量无需重新标记就转发。
图6-20给出了案例的网络结构,例6-7展示了配置信息。
PB帐篷公司的网络
例6-7 ISP边界路由器,单速率三色CB限速特性,限速速率为96 kbit/s
这个配置获益于策略映射的一个规则:所有没有匹配到某个类的流量最终都进入class-default类中。由于设计目标是对所有流量进行限速,因此无需明确配置类映射——默认情况下所有流量都会匹配策略映射下的class-default类。因此在策略映射police-all中,可以使用police cir 96000 bc 12000 be 18000conform-action transmit exceed-action set-dscp-transmit 0 violate-action drop命令,为class-default类启用限速特性。
在这里,police命令将限速速率设置为96 000 bit/s,突发容量为12 000字节。整形工具在配置Bc和Be时以比特为单位;IOS限速器在配置这些值时以字节为单位。本例的配置规则中要求使用96 000 bit/s的CIR,允许在1秒内发送与1秒等量的Bc和12 000字节。excess-burst配置参数为6000字节,是Bc的一半。配置规则要求允许与0.5秒等量的Be,以96 kbit/s发送6000字节确实需要0.5秒。
要记住所有IOS整形器在设置Bc和Be时,都以比特为单位;限速器以字节为单位。
police命令中定义了单速率,但事实上这是一个三色限速配置,而不是一个双色配置,乍一看可能并不好分辨。为了配置三色限速器,你需要配置大于0的Be值或者配置一个违反行为,或者同时配置上述两点。在本例中就同时配置了这两个参数,同时告诉IOS使用双令牌桶,以便将数据包分为3类。
在例6-7中,police命令传输遵守契约的数据包,将超出契约的数据包标记为DSCP 0,并丢弃违反契约的数据包。show policy- map命令的输出内容重复了配置命令,与阴影部分相同。show policy-map interface s1/0命令显示了遵守、超出和违反契约的数据包数量。
6.5.1 对流量子集进行限速
使用CB限速特性的一大好处在于可以针对每个类进行限速。第二个案例(例6-8)展示使用CB限速特性,将Web流量与其他流量分类进行限速。其中CB限速特性的配置规则如下所示。
在ISP边缘路由器上,将入向Web流量限速为80 kbit/s。传输符合和超出契约的流量,丢弃违反契约的流量。
在ISP边缘路由器上,将入向所有其他流量限速为16 kbit/s。将超出和违反契约的流量标记为DSCP 0。
允许发送与1秒等量的Bc。
允许发送与0.5秒等量的Be。
例6-8给出了配置信息。
例6-8 ISP边界路由器,CB限速特性限制Web流量为80 kbit/s,其他流量16 kbit/s并标记为Be
若你现在开始习惯使用MQC配置命令,这个配置应该相对比较好理解。class-map match-all match-web命令创建了一个新的类,并使用NBAR来匹配所有Web流量。policy-map police-web命令创建了一个新的策略映射,其中使用class match-web来分类Web流量,使用class class-default来分类所有其他流量。
在策略映射的每一个类中都使用了police命令,分别设置了配置规则中要求的参数。举例来说,police cir 80000 bc 10000 be 5000 conform- action transmitexceed-action transmit violate-action drop命令将速率设置为80 kbit/s,与1秒等量的Bc值10 000字节,并将Be配置为5 000字节。
show policy-map interface s1/0命令列出了统计信息,本例中能看到在策略映射police-web中有两个类。这里还能看到每个类的限速统计信息,因为为每个类都启用了CB限速特性。
6.5.2 配置双速率限速
在CB限速特性配置部分展示的前两个案例,都使用单速率双令牌桶。通过使用双令牌桶,CB限速特性可以创建3类数据包,分别为符合、超出和违反流量契约。使用RFC 2496中定义的术语,这两个案例中配置的CB限速特性都使用单速率三色限速器,“三色”表示3个类别(遵守、超出、违反)。
注释:为了创建单速率双色CB限速配置,只需要在police命令中不配置violate-action关键字和Be值即可。
本小节将给出一个配置双速率三色限速器的案例。你可能还记得前文“CB限速:双速率三色(双令牌桶)”小节中,双速率限速器使用两个速率,一个称为CIR,另一个称为PIR。使用双速限速器的目标是定义两个速率,低于CIR的数据包为遵守契约,高于CIR但低于PIR的数据包为超出契约,所有其他数据包为违反契约。
为了配置两个不同的速率,仍可以使用police命令。但语法结构与前文有一些不同,具体语法如下所示:
注意在这个命令的语法中,你必须配置CIR和PIR(大括号表示必须配置的参数)。你还可以在命令中设置Bc和Be值,以及遵守、超出和违反行为。
比如若你希望配置双速率限速特性,CIR为96 kbit/s,PIR为128 kbit/s,那么你需要使用police cir 96000 pir 128000命令。
6.5.3 CB限速其他内容
对于CB限速特性来说,还有一些你需要知道的内容。这里分别介绍这些内容。
1.多行为限速
当数据包违反契约时,不将其丢弃,而是将其标记为DSCP 0。这样一来,若网络没有拥塞,数据包可以通过,若网络发生拥塞,其他路由器可能会更容易丢弃这个数据包。
有时候工程师可能希望标记数据包头部的多个字段。比如帧中继交换机会根据帧中继头部中的DE位来判断是否优先丢弃该数据包,拥塞发生时,设置了DE位的数据包比未设置DE位的数据包更容易丢弃。当数据包违反了契约时,工程师可能希望既标记DSCP,又标记FR DE。
Cisco能够支持在限速特性中,为同一个类标记多个字段。为了实现这一目的,首先要在police命令中设置速率,但行为不在police命令中配置。这并不是省略了行为配置,police命令会使用户进入另一个子模式,在那里可以逐条配置行为。在配置多个行为时,要用到多条conform-action、exceed-action或violate-action子命令。例6-9给出了案例,本例将违反流量契约的数据包标记为DSCP 0和FR DE。
包含percent关键字的police命令告诉IOS将配置的CIR和PIR值转换成链路百分比。然后在interface serial0/0上启用,接口S0/0上配置了bandwidth256命令,IOS能够将百分比转换为实际的比特率。比如在show policy-map interface s0/0命令的输出中可以看到,在一行中显示出CIR为25%,下一行显示出CIR为64000 bit/s。计算方法很简单,就是将接口带宽乘以百分比,也就是256 kbit/s的25%。PIR的计算方法也一样,本例中PIR为50%,即128 kbit/s的50%。
注意在本例中,在配置Bc和Be值之后,还添加了关键字ms(表示毫秒)。这是为了计算实际的Bc和Be,计算也同样简单。IOS会计算出使用该速率,在这么多毫秒内可以发送多少比特。比如Bc设置为500毫秒,CIR为64 kbit/s,那么在500毫秒内可以发送32 000比特(0.5秒×64 000 bit/s),从而计算出的Bc值为32 000比特。但在限速特性中,Bc和Be是以字节为单位的——因此在show policy-map interface命令中显示出Bc为4000字节。同样地,Be等于PIR×毫秒数(128 000 bit/s×0.5秒),即64 000比特。在show policy-map interface命令的输出中将其转换为字节,即8000字节。
3.Bc和Be的CB限速默认设置
若你没有配置Bc值,CB限速特性会根据以下公式计算出默认值:
Bc=CIR/32
即使算法很简单,这个公式看起来却有些随机。这个公式背后的逻辑是要计算出,根据CIR定义的速率,在1/4秒内可以发送多少字节。要记住CIR的单位是bit/s,而Bc设置的单位是字节。因此下面这个公式可能更好理解:
Bc=(CIR×0.25秒)/8比特
还要注意,CB限速特性不允许计算出的默认值低于1500——若计算结果低于1500,CB限速特性就会使用1500。
对于Be来说,默认值取决于你配置的是单令牌桶(双色)限速器,还是双令牌桶(三色)限速器。要想配置单令牌桶/双色限速器,只需省略Be和violate-action选项。这样一来,Be默认是0。只要你配置了违反行为,或者将Be设置为非0的值,IOS就认为你想要实现双令牌桶/三色限速功能。这样一来,IOS默认Be=Bc。
在使用双速率限速特性时,若没有配置Bc和Be,IOS会使用前文公式来计算Bc的值。同时使用有一点不同的公式来计算Be的值,即根据PIR来计算:
Be=(PIR×0.25秒)/8比特=PIR/32
图6-13总结了Bc和Be的默认配置。表中列出了所有3种情况,并且给出了如何分辨使用的是哪种配置的方法。
在police命令中使用percent选项时,你只需配置CIR百分比。要想配置单速率限速器,只需要不配置pir即可;要想配置双速率限速器,就要配置pir选项。无论用这条命令定义单速率还是双速率限速特性,只要没有配置Bc和Be值,IOS就会使用上述规则来计算Bc和Be的默认值。
6.5.4 CB限速配置小结
Cisco IOS中的CB限速特性包含很多功能,本章介绍了其中的大部分。命令语法、police命令的用法、show命令的输出内容都很重要。如何在Cisco IOS中实施CB限速特性也同样重要,下面总结了这些核心特性。
单速率双色限速特性,它使用单令牌桶和两个行为分类(符合和超出)。
单速率三色限速特性,它使用双令牌桶和3个行为分类(符合、超出和违反)。
双速率三色限速特性,它使用双令牌桶,同时支持CIR和PIR速率。
“双色”和“三色”表示限速器能够分类的行为类别——符合、超出和违反。
通过使用MQC中的类,可以对流量子集实施限速,即在需要被限速的流量类中使用police命令。
支持多行为限速特性,即重复使用conform-action、exceed-action和/或violate-action关键字。
在使用单速率限速特性时,若没有配置Bc和Be,IOS将Be和Bc值计算为:Be=0,Bc=1500或Bc=CIR/32。
在使用双速率限速特性时,若没有配置Bc和Be,IOS将Be和Bc值计算为:Bc=1500或Bc=CIR/32,Be=1500或Be=PIR/32。
police命令中可以通过配置链路带宽的百分比来配置速率,即将Bc和Be设置为多少毫秒。