很多業務都會占用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
-
接口
+關注
關注
33文章
8611瀏覽量
151231 -
交換機
+關注
關注
21文章
2641瀏覽量
99676 -
ACL
+關注
關注
0文章
61瀏覽量
11979
原文標題:3步搞定交換機ACL資源不足
文章出處:【微信號:huaweidoc,微信公眾號:華為產品資料】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論