ACL应用于Traffic Policy

[复制链接]
发表于 : 2015-9-5 22:06:41 最新回复:2018-01-13 20:44:38
5687 4
fcm  精英  

关于Traffic Policy

流策略(Traffic Policy)用于QoS复杂流分类,实现丰富的QoS策略。

Traffic Policy分为三部分:

  • 流分类(Classifier)模板:定义流量类型。一个Classifier可以配置一条或多条if-match语句,if-match语句中可以引用ACL规则。不同的Classifier模板可以应用相同的ACL规则。一个ACL规则可以配置一个或多个Rule语句。
  • 流动作(Behavior)模板:指,用于定义针对该类流量可实施的流动作。一个Behavior可以定义一个或多个动作。
  • 流策略(Traffic Policy)模板:将流分类Classifier和流动作Behavior关联,成为一个Classifier & Behavior对。当Traffic Policy模板设置完毕之后,需要将Traffic Policy模板应用到接口上才能使策略生效。

接口、流策略、流动作、流分类、ACL之间的关系如图1

图1 接口、流策略、流动作、流分类、ACL之间的关系图


Classifier & Behavior对之间的匹配顺序

一个Traffic-policy中可以配置一个或多个Classifier & Behavior对。当收到一个报文,做复杂流分类处理时,会按照Traffic-policy中Classifier & Behavior对的配置顺序进行匹配。

如果命中,则停止匹配;如果不命中,则匹配后面的Classifier;如果是最后一个Classifier,且还不命中,则报文走正常的转发处理,类似于没有应用流分类策略。

Classifier之间的顺序可以通过命令行classifier classifier-name behavior behavior-name precedence precedence修改。例如,Traffic-policy T中配置了A、B、C三个Classifier:

#
traffic policy T
 classifier A behavior A
 classifier B behavior B
 classifier C behavior C
#

缺省情况下,A、B、C三个Classifier的顺序分别是1、2和3,与配置的顺序相同。如果要将A排在最后,可以执行如下命令:

 classifier A behavior A precedence 4

结果是:

#
traffic policy T
 classifier B behavior B
 classifier C behavior C
 classifier A behavior A precedence 4
#

此时,B之前的顺序号1没有被占用,因此可以在B之前添加一个Classifier(假设是D),则可执行如下命令实现。

classifier D behavior D precedence 1

结果是:

#
traffic policy T
 classifier D behavior D precedence 1
 classifier B behavior B
 classifier C behavior C
 classifier A behavior A precedence 4
#

如果按如下方法,不指定precedence值的方式添加D,

classifier D behavior D

结果如下:

#
traffic policy T
 classifier B behavior B
 classifier C behavior C
 classifier A behavior A precedence 4
 classifier D behavior D
#

If-match语句之间的匹配顺序

由于Classifier中配置的是一个或多个if-match语句,按照if-match语句配置顺序进行匹配。报文命中if-match语句后,是否执行对应的behavior动作,取决于If-match语句之间是And还是Or逻辑。

If-match语句之间的And和Or逻辑

如果流分类模板下配置了多个if-match语句,则这些语句之间有And和Or两种逻辑关系:

  • Or逻辑:数据包只要匹配该流分类下的任何一条if-match语句定义的规则就属于该类。
  • And逻辑:数据包必须匹配该流分类下的全部if-match语句才属于该类。

流策略的执行过程(if-match语句间是Or逻辑)

图2 流策略的执行过程(Or逻辑)
图2,针对每个Classifier,如果If-match语句之间是Or逻辑,按照if-match语句配置顺序进行匹配,数据包一旦命中某个if-match语句:
  • 如果命中的if-match语句没有引用ACL,则执行behavior定义的动作。
  • 如果命中的if-match语句引用了ACL,且命中的是permit规则,则执行behavior定义的动作;命中的是deny规则,则直接丢弃报文。

如果数据包没有命中任何if-match语句,则不支持任何动作,继续处理下一个Classifier。

流策略的执行过程(if-match语句间是And逻辑)

如果If-match语句之间是And逻辑,设备先会将这些if-match语句进行合并(这里的“合并”相当于集合的乘法操作),再按照Or逻辑的处理流程进行处理。

对于引用ACL的if-match语句,不是将ACL内部的各条Rule进行合并,而是逐条与其他if-match语句进行合并。因此值得注意的是:And逻辑中if-match语句的顺序不影响匹配结果,但ACL中Rule的顺序仍然会影响匹配结果。

例如,某个流策略下配了如下一个classifier:

#
acl 3000
 rule 5 permit ip source 1.1.1.1 0
 rule 10 deny ip source 2.2.2.2 0
#
traffic classifier example operator and
 if-match acl 3000
 if-match dscp af11
#

则设备首先进行if-match语句的合并,合并结果相当于:

#
acl 3000
 rule 5 permit ip source 1.1.1.1 0 dscp af11
 rule 10 deny ip source 2.2.2.2 0 dscp af11
#
traffic classifier example operator or
 if-match acl 3000
#
traffic behavior example
 remark dscp af22
#
traffic policy example
 share-mode
 classifier example behavior example 

#
interface GigabitEthernet2/0/0
 traffic-policy P inbound
#

然后,再针对合并结果按Or逻辑的执行过程进行处理。处理结果是从GE2/0/0收到的源IP为1.1.1.1/32且dscp=10的报文重标记为AF22,源IP为1.1.1.2/32且dscp=10的报文丢弃,其他报文由于没有匹配任何规则,直接转发。


对于And逻辑,系统默认License中最多只允许存在一条引用ACL的if-match语句;而Or逻辑中,可以有多条引用ACL的if-match语句。

如果更改License使And逻辑允许存在多条引用ACL的if-match语句,则这些if-match语句的合并规则是:

  • permit + permit = permit
  • permit + deny = deny
  • deny + permit = deny
  • deny + deny = deny

If-math语句引用ACL时的匹配过程

如果if-match语句指定的是ACL,需要在ACL的多个Rule语句中进行匹配:首先查找用户是否配置了该ACL(因为流分类允许引用不存在的ACL),命中的第一条则停止匹配,不再继续查找后续的规则。

说明:
当Rule中的动作为Deny时,如果behavior是镜像或采样,即使对于丢弃的报文,也会执行behavior。

ACL中可以指定permit或deny规则,它与ACL所在Classifier所对应的Behavior中的动作的关系是:

  • ACL为deny,则不关心Behavior,报文最终动作是deny;
  • ACL为permit,则执行Behavior,报文最终动作是Behavior。

例如以下配置的匹配结果是:源地址是50.0.0.1/24的报文IP优先级被标记为7;源地址是60.0.0.1/24的报文被丢弃;源地址是70.0.0.1/24的报文IP优先级不变。

acl 3999 
  rule 5 permit ip source 50.0.0.0 0.255.255.255 
  rule 10 deny ip source 60.0.0.0 0.255.255.255 
traffic classifier acl  
  if-match acl 3999 
traffic behavior test 
  remark ip-pre 7 
traffic policy test 
  classifier acl behavior test 
interface GigabitEthernet1/0/1 
  traffic-policy test inbound 

流量策略中ACL计数功能

为节省内存,系统缺省不使能流量策略的统计功能。当用户需要显示流量策略的统计数据时,可配置statistics enable命令使能流量策略的统计功能。

#
traffic policy example
 classifier example behavior example
 statistics enable
#

  • x
  • 常规:

点评 回复

跳转到指定楼层
fcm  精英   发表于 2015-9-5 22:06:51 已赞(0) 赞(0)

关于Traffic Policy

  • x
  • 常规:

点评 回复

j526705     发表于 2015-9-6 14:44:12 已赞(0) 赞(0)

多谢分享,学习了!

  • x
  • 常规:

点评 回复

TERRAL  新锐   发表于 2017-9-12 10:36:25 已赞(0) 赞(0)

要做基于ACL的访问控制,用traffic policy也挺方便的
  • x
  • 常规:

点评 回复

kevin9w     发表于 2018-1-13 20:44:38 已赞(0) 赞(0)

感谢分享,很有用!
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
快速回复 返回顶部