华为之ACL应用于Traffic Policy/华为策略路由匹配原则

如果报文没有匹配到traffic policy中的Classifier该怎么处理?

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

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


以下内容摘自华为 HedEx文裆NE5000E,用于后期的快速查找

关于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之间的关系如

Classifier & Behavior对之间的匹配顺序

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

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

Classifier之间的顺序可以通过命令行classifier behavior修改。例如,Traffic-policy T中配置了ABC三个Classifier

#

traffic policy T

 classifier A behavior A

 classifier B behavior B

 classifier C behavior C

#

缺省情况下,ABC三个Classifier的顺序分别是123,与配置的顺序相同。如果要将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语句之间的AndOr逻辑

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

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

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

流策略的执行过程(Or逻辑)

如图,针对每个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逻辑的处理流程进行处理。

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

例如,某个流策略下配了如下一个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收到的源IP1.1.1.1/32dscp=10的报文重标记为AF22,源IP1.1.1.2/32dscp=10的报文丢弃,其他报文由于没有匹配任何规则,直接转发。

说明:

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

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

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

说明:

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

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

  • ACLdeny,则不关心Behavior,报文最终动作是deny
  • ACLpermit,则执行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

#

<think>嗯,用户问的是华为设备配置策略路由时调用traffic-policy是不是只能在接口下调用。我需要先回忆一下华为的文档和相关配置方法。 首先,策略路由Policy-Based Routing,PBR)在华为设备上通常有两种实现方式:基于接口的traffic-policy和基于全局的policy-based-route。记得traffic-policy是使用MQC(模块化QoS命令行)方式配置的,需要应用到接口的入方向。而policy-based-route则是全局的,可以应用到本地或者接口。 用户的问题提到的是traffic-policy,所以应该是指前者。根据之前的经验,traffic-policy确实只能在接口的入方向调用,因为它是通过接口的流量进行策略应用的。不过,可能需要确认一下是否还有其他可能性,比如VLAN或者全局应用,但根据华为的文档,好像不支持。此外,如果有多个接口需要应用同样的策略,就必须在每个接口下单独调用,这样可能比较繁琐,这时候可能需要推荐使用policy-based-route作为替代方案。 另外,用户可能是在实际配置中遇到了麻烦,比如想要在多个接口应用同样的策略,但发现每个接口都要配置一遍,想知道有没有更高效的方法。这时候除了解释traffic-policy的限制,还需要提供替代方案,比如policy-based-route,并且说明两者的区别和适用场景。 还需要注意语法是否正确,比如traffic-policypolicy-based-route的命令结构,确保给出的示例准确。比如traffic-policy的配置步骤是创建流分类、流行为,然后绑定到流策略,最后在接口下应用。而policy-based-route则是直接创建策略节点,应用动作,然后全局或接口应用。 可能用户没有明确区分traffic-policypolicy-based-route,所以需要解释两者的不同,避免混淆。同时,用户可能关心是否还有其他应用方式,比如在VIF或者其他虚拟接口下应用,但根据现有知识,应该是不支持的。 最后,总结时强调traffic-policy的应用限制,并推荐替代方案,帮助用户根据实际需求选择合适的方法。这样既解答了问题,又提供了扩展的建议,满足用户潜在的需求。</think>华为设备在配置策略路由时,调用**traffic-policy**的规则如下: --- ### 1. **调用位置** **traffic-policy(流策略)必须且只能在接口的入方向(inbound)调用**,这是华为设备的强制要求。 - **原因**:流策略基于MQC(模块化QoS命令行)实现,需通过接口入方向匹配流量并执行重定向、标记等动作。 - **示例**: ```bash interface GigabitEthernet0/0/1 traffic-policy PBR inbound # 在接口入方向调用流策略 ``` --- ### 2. **与其他策略路由方式的区别** 若需更灵活的调用方式,可对比以下两种策略路由实现: #### (1) **policy-based-route(PBR策略路由)** - **调用位置**: - 可全局调用(对设备本地流量生效)。 - 也可在接口调用(对接口入方向流量生效)。 - **优势**:支持更复杂的匹配逻辑(如基于源IP、协议类型等)。 - **示例**: ```bash policy-based-route PBR permit node 10 if-match acl 3000 apply ip-address next-hop 10.1.1.1 # interface GigabitEthernet0/0/1 ip policy-based-route PBR # 接口调用 # 或全局调用 ip local policy-based-route PBR ``` #### (2) **traffic-policy(流策略)** - **限制**:仅支持接口入方向调用,但可通过MQC灵活定义流分类(traffic classifier)和流行为(traffic behavior)。 --- ### 3. **适用场景建议** - **需在接口精细化控制流量** → 使用 **traffic-policy**。 - **需全局或基于非接口条件(如源IP)控制路由** → 使用 **policy-based-route**。 --- ### 4. **配置注意事项** - **流量方向**:`traffic-policy`仅在入方向生效,出方向需通过其他方式(如QoS策略)实现。 - **优先级**:若同时配置`traffic-policy`和`policy-based-route`,接口会优先执行`traffic-policy`。 如果需要跨接口或全局策略路由,建议选择`policy-based-route`以突破接口调用的限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值