电子说
很多业务都会占用ACL资源,而设备的ACL资源是有限的,当ACL资源不足时,则会导致业务应用ACL失败或产生ACL资源不足告警。换设备嘛领导不同意,不换设备有什么办法吗?
本文以V200R019C10版本的华为S5732-H系列交换机为例,介绍了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的流量统计等流量统计业务。
为了更加直观地介绍如何计算ACL资源占用数量,下面我们通过举例观察设备ACL资源信息变化:1. 首先,查看设备的ACL模块的资源信息。可以看到“ACL Unallocated”字段显示设备未分配ACL资源共有4096条,“ACLAllocated”字段显示设备已分配ACL资源共有512条,其中Sec安全类业务已使用146条,设备ACL资源总数量为4608条。
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
#3. 再次查看ACL资源信息。“Ingress ACL”字段显示设备入方向ACL资源占用数量为2(rule规则数量)×2(接口数量)×1(入方向)=4。
ACL资源不足的原因导致ACL资源不足的原因主要有如下两个:原因一:配置使用ACL资源的冗余业务过多
很多业务配置以后长时间不生效或不使用,持续占用大量ACL资源。例如流策略业务、基于ACL的简化流策略业务、本机防攻击业务、iPCA业务等。
原因二:配置使用ACL资源的业务时规划不精细
以下几种情况都会导致ACL资源占用数量成倍增长:
配置的rule规则数量过多,没有考虑rule规则合并。
业务应用范围过大,将业务应用到过多的接口或VLAN上。
业务应用的范围有重叠,相同业务同时应用到全局、VLAN和接口上。
ACL资源的优化方法对于使用ACL资源的冗余业务过多的情况,可以排查已配置的ACL相关业务,删除其中长时间不生效或不使用的业务。
本章节着重介绍规划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规则,减少rule规则数量
分析各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
# 首先,可以通过合并网段来合并rule规则,将rule 1~rule510合并成以下两条规则。rule 1~rule 510均匹配报文的源IP地址和目的IP地址,且源IP地址覆盖了10.1.1.0/24和10..2.0/24两个网段的所有地址(真实组网中,一般不会通过rule匹配一个网段的所有IP地址,可以结合掩码拆分成多个网段),因此可以将合并成以下两条规则:#
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
。。。
# 其次,可以通过range比较符合并端口号来合并rule规则,将rule 801~rule831合并成一条规则。由于rule 801~rule 831均用到了匹配项TCP目的端口号,且端口号范围覆盖了80~110整个号段,因此可以合并成一条规则(通过display acl division命令可以查看80~110端口号之间rule规则会拆成5条下发):#
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规则为466条后,还可以在此基础上通过方法二或者方法三进一步精简ACL资源。
方法二:调整业务应用范围,减少业务应用位置的数量
在通过方法一合并rule规则后,可以选择以下任意一种方式,调整业务应用范围,从而继续精简ACL资源数量。
将应用在接口的业务调整至VLAN
如果应用流策略的接口数量大于这些接口所属VLAN的数量,且未应用流策略的接口均不属于这些VLAN,则可以将流策略应用到这些接口所属的VLAN下。调整应用范围后的ACL资源占用数量为rule规则数量×VLAN数量,小于之前的rule规则数量×接口数量。否则,建议将应用在接口的业务调整至全局。
由前文流策略中的配置可知,GE1/0/1和GE1/0/2属于VLAN10,GE1/0/3和GE1/0/4属于VLAN 20,其他接口均不属于VLAN 10和VLAN 20,此时VLAN的数量小于接口的数量,则可以将流策略应用在VLAN 10和VLAN 20下。在通过方法一优化后、通过本方法优化前,对应的配置文件如下:#
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
#调整后,ACL资源占用数量降低到932条,在合并rule规则的基础上进一步减少了ACL资源需求数量。计算过程为:466(rule规则数量)×2(VLAN数量)×1(入方向)=932。
将应用在接口的业务调整至全局
可以将流策略应用到全局,并在不应用该流策略的接口下各配置一条让全局的配置不生效的流策略,利用接口优先级大于全局优先级的原则,实现相同的配置效果。
由前文流策略中的配置可知,需要在接口的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
#调整应用范围后的ACL资源占用数量降低到467条,在合并rule规则的基础上进一步减少了ACL资源需求数量。计算过程为:466(rule规则数量)×1(全局)×1(入方向)+1(rule规则数量)×1(接口数量)×1(入方向)=467。该方法一般应用于接入层设备。当设备所有下行接口都应用相同的流策略,且所有上行接口不应用流策略时,则可以将该流策略应用到全局,并在每个上行接口应用与下行接口不相同的流策略,使全局应用的流策略在上行接口不生效。由于下行接口数量通常大于上行接口数量,因此通过该方法可以节省ACL资源。方法三:配置基于流ID的流策略,综合节省ACL资源在方法一的基础上,还可以通过方法三来继续减少ACL资源使用数量。
对于流策略业务,当设备上不同的接口或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
#
4. 配置流策略,绑定已配置的流行为和流分类,并应用到全局。
配置流策略p3,绑定流分类c1和流行为b3,并应用到全局的入方向。
#
traffic policy p3 match-order config
classifier c1 behavior b3
#
traffic-policy p3 global inbound
#5. 配置流分类,通过if match flow-id命令对报文进行分类。
配置流分类c3,匹配流ID为4的报文。
#
traffic classifier c3 operator and precedence 10
if-match flow-id 4
#6. 配置流行为,以便对匹配同一流ID的报文进行相同的处理。
本例中,已经配置流行为b1,用于对报文进行流量统计。
#
traffic behavior b1
statistic enable
#7. 配置流策略,绑定以配置的流行为和流分类,并应用到接口或VLAN上。#
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
#interface GigabitEthernet1/0/3
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
#上述举例中,配置基于流ID的流策略的功能后,占用的ACL资源降低到470条,在合并rule规则的基础上进一步减少了ACL资源需求数量。计算过程为:466(rule规则数量)×1(全局)×1(入方向)+1(流ID)×4(接口数量)×1(入方向)=470条。
最后再复习一下:
1. 首先,推荐先尝试合并rule规则,减少rule规则数量。
2. 其次,如果对ACL资源精简数量要求较高,推荐将应用在接口的业务调整至全局,或者配置基于流ID的流策略;如果对ACL资源精简数量要求不高,且应用流策略的接口数量大于接口所属VLAN的数量,推荐将应用在接口的业务调整至VLAN。
责任编辑:lq6
全部0条评论
快来发表一下你的评论吧 !