来源:华为产品资料 很多业务都会占用ACL资源,而设备的ACL资源是有限的,当ACL资源不足时,则会导致业务应用ACL失败或产生ACL资源不足告警。换设备嘛领导不同意,不换设备有什么办法吗? 本文以V200R019C10版本的华为S5732-H系列交换机为例,介绍了ACL资源的基本原理,ACL资源不足的原因,并通过一个例子,讲解了ACL资源优化方法。不同款型及版本之间的ACL资源原理和规格可能存在差异,请以实际设备为准。
来源:华为产品资料
很多业务都会占用ACL资源,而设备的ACL资源是有限的,当ACL资源不足时,则会导致业务应用ACL失败或产生ACL资源不足告警。换设备嘛领导不同意,不换设备有什么办法吗?
通常情况下,当用户配置ACL相关的业务时,需要先创建ACL并配置rule规则,随后在全局、VLAN或接口视图下应用ACL。当业务下发成功后,这些rule规则就会占用ACL资源。
通常我们可以通过以下公式简单计算或预估ACL资源占用数量:
ACL 资源占用数量=rule规则数量×业务应用位置的数量×业务应用方向的数量
rule规则数量:一般情况下,一条rule规则会占用一条ACL资源。如果一条rule规则中指定了TCP/UDP端口号范围时,一条rule规则可能会按照拆分成多条规则下发,进而占用多条ACL资源。具体拆分规则可通过 display acl division 命令指定相应的端口号范围进行查看。
业务应用位置的数量:业务应用的接口数量或VLAN数量,应用到全局时为记为1。
-
业务应用方向的数量:业务应用到入方向或出方向时记为1,出入方向都应用时记为2。
部分业务在不需要配置rule规则的情况下也会隐式地下发rule规则,这些不通过配置rule规则占用ACL资源的业务不在本文的讨论范围之内,如黑名单等安全类业务,流量抑制、CPCAR等流量限速业务,上送CPU的报文统计、VLAN的流量统计等流量统计业务。
2. 配置ACL 3000。ACL 3000中包含2条rule规则,并将ACL 3000应用到接口GE0/0/1和GE0/0/2的入方向。
acl number 3000
rule 5 permit ip destination 0.0.0.1255.255.255.0
rule 10 permit ip destination 0.0.0.2255.255.255.0
#
interface GigabitEthernet0/0/1
traffic-filter inbound acl 3000
#
interface GigabitEthernet0/0/2
traffic-filter inbound acl 3000
#
很多业务配置以后长时间不生效或不使用,持续占用大量ACL资源。例如流策略业务、基于ACL的简化流策略业务、本机防攻击业务、iPCA业务等。
以下几种情况都会导致ACL资源占用数量成倍增长:
配置的rule规则数量过多,没有考虑rule规则合并。
业务应用范围过大,将业务应用到过多的接口或VLAN上。
-
业务应用的范围有重叠,相同业务同时应用到全局、VLAN和接口上。
本章节着重介绍规划ACL相关业务的配置不精细导致ACL资源不足的优化方法,从而在不影响业务的情况下精简业务所占用的ACL资源。为了更好的理解如何优化ACL资源,本章节以流策略业务为例进行介绍。
优化前,某流策略所绑定的ACL中包含1000条rule规则,并且该流策略应用在4个接口的入方向上,则该业务需要占用的ACL资源为1000(rule规则数量)×4(接口数量)×1(入方向)=4000,但当前设备剩余的ACL资源仅为3000,小于该流策略所需的ACL资源4000,因此当前该业务无法成功下发。对应的配置文件如下:
acl number 3000
rule 1 permit ip source 10.1.1.1 0destination 10.10.1.1 0
... //此处省略rule规则的具体配置
rule 1000 ip source 192.168.10.1 32
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
traffic behavior b1
permit
statistic enable
#
traffic policy p1 match-order config
classifier c1 behavior b1
#
interface GigabitEthernet1/0/1
port link-type access
port default vlan 10
traffic-policy p1 inbound
#
interface GigabitEthernet1/0/2
port link-type access
port default vlan 10
traffic-policy p1 inbound
#
interface GigabitEthernet1/0/3
port link-type access
port default vlan 20
traffic-policy p1 inbound
#
interface GigabitEthernet1/0/4
port link-type access
port default vlan 20
traffic-policy p1 inbound
#
接下来,通过以下三种方法,就可以将该流策略所需占用的ACL资源减少到3000以下,从而满足配置该流策略的ACL资源需求。
1. 推荐先尝试使用方法一,合并rule规则,减少rule规则数量。
2. 在已经使用方法一的基础上,可以继续使用方法二或方法三,进一步减少ACL资源的使用数量。如果对ACL资源精简数量要求较高,推荐将应用在接口的业务调整至全局,或者配置基于流ID的流策略;如果对ACL资源精简数量要求不高,且应用流策略的接口数量大于接口所属VLAN的数量,推荐将应用在接口的业务调整至VLAN。
表1-1 方法二与方法三的比较
分析各rule规则公用的匹配项,找出各规则之间的联系。
本例中的1000条rule规则中包含以下内容:
acl number 3000
rule 1 permit ip source 10.1.1.1 0destination 10.10.1.1 0
rule 2 permit ip source 10.1.1.2 0destination 10.10.1.1 0
rule 3 permit ip source 10.1.1.3 0destination 10.10.1.1 0
...
rule 255 permit ip source 10.1.1.255 0destination 10.10.1.1 0
rule 256 permit ip source 10.1.2.1 0destination 10.10.1.1 0
rule 256 permit ip source 10.1.2.2 0destination 10.10.1.1 0
rule 256 permit ip source 10.1.2.3 0destination 10.10.1.1 0
...
rule 510 permit ip source 10.1.2.255 0destination 10.10.1.1 0
...
rule 801 deny tcp destination-port eqwww //80端口
rule 802 deny tcp destination-port eq81
rule 803 deny tcp destination-port eq82
...
rule 830 deny tcp destination-port eqpop2 //109端口
rule 831 deny tcp destination-port eqpop3 //110端口
...
rule 1000 xxx
#
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
#
acl number 3000
...
rule 801 deny tcp destination-port range80 110
...
#
合并规则后,上例中的规则减少到462条,实际下发的规则为466条,占用的ACL资源数量为1864。 计算过程为:461(IP地址合并后的rule规则数量)×4(接口数量)×1(入方向)+1(端口号合并后的rule规则数量)×5(按range拆分后的rule规则数量)×4(接口数量)×1(入方向)=1864,小于设备剩余的ACL资源数量(3000条),因此能够满足配置该流策略的ACL资源需求。
方法二:调整业务应用范围,减少业务应用位置的数量
在通过方法一合并rule规则后,可以选择以下任意一种方式,调整业务应用范围,从而继续精简ACL资源数量。
将应用在接口的业务调整至VLAN
如果应用流策略的接口数量大于这些接口所属VLAN的数量,且未应用流策略的接口均不属于这些VLAN,则可以将流策略应用到这些接口所属的VLAN下。调整应用范围后的ACL资源占用数量为rule规则数量×VLAN数量,小于之前的rule规则数量×接口数量。否则,建议将应用在接口的业务调整至全局。
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
rule 801 deny tcp destination-port range80 110
...
rule 1000 ip source 192.168.10.1 32
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
traffic behavior b1
permit
statistic enable
#
traffic policy p1 match-order config
classifier c1 behavior b1
#
interface GigabitEthernet1/0/1
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/2
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/3
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/4
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
rule 801 deny tcp destination-port range80 110
...
rule 1000 ip source 192.168.10.1 32
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
traffic behavior b1
permit
statistic enable
#
traffic policy p1 match-order config
classifier c1 behavior b1
#
vlan 10
traffic-policyp1 inbound
#
vlan 20
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/1
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/2
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/3
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/4
port link-type access
port default vlan 20
#
将应用在接口的业务调整至全局
可以将流策略应用到全局,并在不应用该流策略的接口下各配置一条让全局的配置不生效的流策略,利用接口优先级大于全局优先级的原则,实现相同的配置效果。
由前文流策略中的配置可知,需要在接口的GE1/0/1~GE1/0/4入方向上应用流策略。此时,若仅有接口GE1/0/5的入方向不可以应用该流策略,且其他所有接口的入方向都可以应用该流策略,则可以将该流策略应用到全局,并在接口GE1/0/5上应用分类规则相同的不同流策略(例如流策略p2)。
在使用方法一的基础上,继续使用本方法调整后,对应的配置文件如下:
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
rule 801 deny tcp destination-port range80 110
...
rule 1000 ip source 192.168.10.1 32
#
acl number 3001
rule 5 permit ip //匹配所有IP报文
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
traffic classifier c2 operator and precedence 10
if-match acl 3001
#
traffic behavior b1
permit
statistic enable
#
traffic behavior b2
permit
#
traffic policy p1 match-order config
classifier c1 behavior b1
#
traffic policy p2 match-order config
classifier c2 behavior b2
#
interface GigabitEthernet1/0/1
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/2
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/3
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/4
port link-type access
port default vlan 20
#
interface GigabitEthernet1/0/5
traffic-policy p2 inbound
#
traffic-policy p1 global inbound
#
对于流策略业务,当设备上不同的接口或VLAN需要配置相同的流分类规则并对匹配的报文做相同的动作时,为节省ACL资源,可以将一条流策略拆分成两条,第一条对报文按照ACL分类后重标记每类报文的流ID,第二条按照流ID进行分类并对匹配同一流ID的报文进行相同的处理。该功能仅适用于应用在入方向的流策略。
如果不配置该功能,流策略占用的ACL资源数量为rule规则数量×接口数量(或VLAN数量)×1(入方向);配置该功能后,流策略占用的ACL资源数量为rule规则数量×1(全局)×1(入方向)+1(流ID)×接口数量(或VLAN数量)×1(入方向)。
1. 配置ACL,并指定rule规则。
本例中,已经通过方法一合并rule规则。合并后的rule规则如下:
#
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
rule 801 deny tcp destination-port range80 110
...
rule 1000 ip source 192.168.10.1 32
#
2. 配置流分类,按照ACL对报文进行分类。
本例中,已经配置流分类c1,用于匹配符合ACL 3000的报文。
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
3. 配置流行为,通过 remark flow-id 命令重新标记报文的流ID。
配置流行为b3,用于重新标记报文的流ID。例如,重新标记流ID为4。
#
traffic behavior b3
remark flow-id 4
#
配置流策略p3,绑定流分类c1和流行为b3,并应用到全局的入方向。
traffic policy p3 match-order config
classifier c1 behavior b3
#
traffic-policy p3 global inbound
#
配置流分类c3,匹配流ID为4的报文。
traffic classifier c3 operator and precedence 10
if-match flow-id 4
#
本例中,已经配置流行为b1,用于对报文进行流量统计。
traffic behavior b1
statistic enable
#
traffic policy p1 match-order config
classifier c3 behavior b1
#
interface GigabitEthernet1/0/1
traffic-policy p1 inbound
#
interface GigabitEthernet1/0/2
traffic-policy p1 inbound
#
traffic-policy p1 inbound
#
interface GigabitEthernet1/0/4
traffic-policy p1 inbound
#
acl number 3000
rule 1 permit ip source 10.1.1.00.0.0.255 destination 10.10.1.1 0
rule 2 permit ip source 10.1.2.00.0.0.255 destination 10.10.1.1 0
...
rule 801 deny tcp destination-port range80 110
...
rule 1000 ip source 192.168.10.1 32
#
traffic classifier c1 operator and precedence 5
if-match acl 3000
#
traffic classifier c3 operator and precedence 10
if-match flow-id 4
#
traffic behavior b1
permit
statistic enable
#
traffic behavior b3
remark flow-id 4
#
traffic policy p1 match-order config
classifier c3 behavior b1
#
traffic policy p3 match-order config
classifier c1 behavior b3
#
interface GigabitEthernet1/0/1
port link-type access
port default vlan 10
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/2
port link-type access
port default vlan 10
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/3
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
interface GigabitEthernet1/0/4
port link-type access
port default vlan 20
traffic-policyp1 inbound
#
traffic-policy p3 global inbound
#
最后再复习一下:
1. 首先,推荐先尝试合并rule规则,减少rule规则数量。
2. 其次,如果对ACL资源精简数量要求较高,推荐将应用在接口的业务调整至全局,或者配置基于流ID的流策略;如果对ACL资源精简数量要求不高,且应用流策略的接口数量大于接口所属VLAN的数量,推荐将应用在接口的业务调整至VLAN。
END
本篇完