基于复杂流类的QoS策略
NE20E已实现多种复杂流分类方法和丰富的流动作。将这些流分类方法和对应可实施的流动作关联,形成流策略,并将流策略与接口绑定,可实现丰富的QoS策略,这就是基于复杂流分类的QoS策略(通常被称为“基于类的QoS”)。
基于复杂流分类的QoS策略是对QoS策略配置的抽象,是“模板化”的QoS配置方式。“模板化”的最大优点是可以节省配置,支持批量修改。
“模板”分为三部分:
- 流分类(Classifier)模板:定义流量类型。用if-match语句设定流分类的匹配规则。
- 流动作(Behavior)模板:定义针对该类流量可实施的流动作。支持流分类的流动作请参见“流分类与流动作”中表1的描述。
- 流策略(Policy)模板:将流分类Classifier和流动作Behavior关联,成为一个Classifier & Behavior对。当Policy模板设置完毕之后,需要将Policy模板应用到接口上。
接口、流策略、流动作、流分类、ACL之间的关系如下图。
1)不同的接口可以应用相同的Policy模板。
2)一个Policy模板中可以配置一个或多个Classifier & Behavior对。不同的Policy模板可以应用相同的Classifier & Behavior对。
3)一个Classifier模板中可以配置一条或多条if-match语句,if-match语句中可以引用ACL规则。不同的Classifier模板可以应用相同的ACL规则。一个ACL规则可以配置一个或多个Rule语句。
4)一个Behavior模板中可以配置一个或多个流动作。
流分类的And和Or逻辑
如果流分类有多个匹配规则,则这些规则之间有And和Or两种逻辑关系:
Or逻辑:数据包只要匹配该流分类下的任何一条if-match子句定义的规则就属于该类。
And逻辑:数据包必须匹配该流分类下的全部规则才属于该类。
说明:
如果流分类中定义了多条ACL rule规则和多条if-match语句规则,则And逻辑下,数据包需要匹配其中一条ACL中的rule规则和全部if-match语句定义的规则才属于该类。
流策略的“共享”模式和“非共享”模式
Policy模板分为“共享”模式和“非共享”模式。例如,定义了一个Policy模板,要求对TCP流的带宽限制在100Mbps之内;对UDP流限制在200Mbps之内;对其它流量,限制在300Mbps之内,最后将该Policy模板应用到2个接口下,则:
- 在“非共享”模式下,这两个接口互不相干,每个接口都能出来100Mbps TCP流,200Mbps UDP流,300Mbps其他流量。
- 在“共享”模式下,则带宽限制的是总流量,即两个接口一共能出来100Mbps TCP流,200Mbps UDP流,300Mbps其他流量。
“共享”模式中,所有接口必须共享同一块单板的同一个网络处理器(NP)上的资源。
流策略的执行过程
如上图,当收到一个报文,要做复杂流分类处理时,会按照policy模板中Classifier的配置顺序进行匹配。如果命中,则停止匹配;如果不命中,则匹配后面的Classifier;如果是最后一个Classifier,且还不命中,则报文走正常的转发处理,类似于没有应用流分类策略。
由于Classifier中配置的是一个或多个if-match语句,按照if-match语句配置顺序进行匹配;如果if-match语句指定的是ACL或UCL,需要在ACL或UCL的多个Rule语句中进行匹配:首先查找用户是否配置了该ACL或UCL(因为流分类允许引用不存在的ACL和UCL),命中的第一条则停止匹配,不再继续查找后续的规则。
当Rule中的动作为Deny时,如果behavior是镜像或采样,即使对于丢弃的报文,也会执行behavior。
ACL中可以指定permit或deny动作,它与ACL所在Classifier所对应的Behavior中的动作的关系是:
- ACL为deny,则不关心Behavior,报文最终动作是deny;
- ACL为permit,则执行Behavior,报文最终动作是Behavior。
级联流策略
将一个流策略(父策略)中的流行为指定为另一个流策略(子策略),称为级联流策略。
一个父策略可以级联多个子策略,一个子策略也可以被多个父策略级联,但级联的流策略之间不能出现循环或嵌套级联关系。
级联流策略形成两级流策略实例时,父策略下的流行为动作与子策略下的流行为动作配置相同,最终执行子策略下的流行为动作。
这里的配置相同指得是动作类型,参数不同也属于配置相同,此时按照子策略的配置参数执行。
父策略和子策略下的流行为都是service-class时,以父策略service-class优先生效;但是如果父策略service-class带有no-remark,还是以子策略service-class优先生效。
层次化CAR
级联流策略形成两级流策略实例并且流行为动作都是CAR时,父策略和子策略下的Car都会生效,并且先执行子策略下的Car,再执行父策略下的Car,这就是层次化CAR。
典型应用场景:对1.1.1/24网段进行总体限速5Mbit/s,对网段下的IP地址1.1.1.1/32和1.1.1.2/32要进行独立限速,分别限速1Mbit/s和3Mbit/s。