一種訪問控制列表的配置方法和裝置制造方法
【專利摘要】本發明提出一種訪問控制列表的配置方法和裝置,包括:將多個ACL中相同的ACL規則作為ACL共享段進行單獨加載;在所述多個ACL中的所述ACL共享段的被引用位置分別預設用于跳轉到所述ACL共享段的第一跳轉規則;在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的父ACL的第二跳轉規則;當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一跳轉規則跳轉到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找后,根據所述第二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找;通過本發明能節約內存空間的占用,同時提高ACL的可閱讀性。
【專利說明】一種訪問控制列表的配置方法和裝置
【技術領域】
[0001] 本發明涉及通信【技術領域】,尤其涉及一種ACL配置方法和裝置。
【背景技術】
[0002] ACL(Access Control List,訪問控制列表)可以應用在諸多領域,目前最基本的 應用就是利用ACL進行報文過濾;此外,ACL還可應用于諸如路由、安全、QoS(Quality of Service,服務質量)等業務中。
[0003] 所謂ACL,是指一條或多條規則的集合,用于識別報文流。所述規則是指描述報文 匹配條件的判斷語句,所述匹配條件可以是報文的源地址、目的地址、端口號等,網絡設備 依照這些規則識別出特定的報文,并根據預先設定的策略對該報文進行處理。
[0004] ACL中的每條規則都有自己的編號,該編號在該ACL中是唯一的。在創建規則時, 可以手工為其指定一個編號,如未手工指定編號,則由系統為其自動分配一個默認編號。當 一個ACL中包含多條規則時,報文會按照一定的順序與這些規則進行匹配,一旦匹配上某 條規則便結束匹配過程。當前通用的匹配順序多為按照配置順序,即按照規則編號由小到 大進行匹配。
[0005] ACL實際上是對數據流的一種分類方法,通過ACL的定義,把數據流分為不同的類 型,對每種類型的數據流分別進行不同的業務處理。設備啟動后,ACL規則會加載到內存中, 調用ACL的業務模塊可使用對應的內存地址來訪問該ACL。
[0006] 然而,由于設備啟動后ACL是常駐內存的,并且隨著ACL廣泛的應用于安全、QoS、 路由模塊等各種業務,設備上的ACL以及每個列表中的ACL規則數越來越多,因此ACL占用 內存空間也就越來越大。
【發明內容】
[0007] 有鑒于此,本發明提出一種ACL配置方法,應用在網絡設備上,其特征在于,所述 方法包括:
[0008] 將多個ACL中相同的ACL規則作為ACL共享段進行單獨加載;
[0009] 在所述多個ACL中的所述ACL共享段的被引用位置分別預設用于跳轉到所述ACL 共享段的第一跳轉規則;
[0010] 在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的父ACL的第二跳轉規 則;
[0011] 當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一跳轉規則 跳轉到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找后,根據所 述第二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找。
[0012] 優選地,所述ACL共享段中還包括可滲透規則;所述可滲透規則為所述ACL共享段 中的預留規則,在設備啟動時需要加載到父ACL中的對應位置;
[0013] 所述方法還包括:
[0014] 當所述多個ACL中相同的ACL規則中包括隱式規則時,將所述隱式規則作為所述 可滲透規則加載到父ACL中的對應位置;
[0015] 其中,所述可滲透規則作為所述ACL共享段中的最后一條規則加載在所述第二跳 轉規則之后。
[0016] 優選地,所述根據所述第一跳轉規則跳轉到所述ACL共享段中包括:
[0017] 調用所述ACL共享段起始位置的第一內存地址,根據所述第一內存地址跳轉到所 述ACL共享段中;
[0018] 所述根據所述第二跳轉規則跳轉到所述父ACL中包括:
[0019] 調用所述被引用位置的下一條ACL規則起始位置的第二內存地址,根據所述第二 內存地址跳轉到所述父ACL中。
[0020] 優選地,所述方法還包括:
[0021] 所述父ACL以及所述ACL共享段中的ACL規則均按照預設步長獨立的進行編號。
[0022] 優選地,所述多個ACL中的所述ACL共享段的被引用位置可以不同。
[0023] 本發明還提出一種ACL配置裝置,應用在網絡設備上,其特征在于,所述裝置包 括:
[0024] 加載單元,用于將多個ACL中相同的ACL規則作為ACL共享段進行單獨加載;
[0025] 第一預設單元,用于在所述多個ACL中的所述ACL共享段的被引用位置分別預設 用于跳轉到所述ACL共享段的第一跳轉規則;
[0026] 第二預設單元,用于在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的 父ACL的第二跳轉規則;
[0027] 查找單元,當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一 跳轉規則跳轉到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找 后,根據所述第二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找。
[0028] 優選地,所述ACL共享段中還包括可滲透規則;所述可滲透規則為所述ACL共享段 中的預留規則,在設備啟動時需要加載到父ACL中的對應位置;
[0029] 所述加載單元進一步用于在所述多個ACL中相同的ACL規則中包括隱式規則時, 將所述隱式規則作為所述可滲透規則加載到父ACL中的對應位置;其中,所述可滲透規則 作為所述ACL共享段中的最后一條規則加載在所述第二跳轉規則之后。
[0030] 優選地,所述查找單元進一步用于在根據所述第一跳轉規則跳轉到所述ACL共享 段中時,調用所述ACL共享段起始位置的第一內存地址,根據所述第一內存地址跳轉到所 述ACL共享段中;
[0031] 所述查找單元進一步用于在根據所述第二跳轉規則跳轉到所述父ACL中時,調用 所述被引用位置的下一條ACL規則起始位置的第二內存地址,根據所述第二內存地址跳轉 到所述父ACL中。
[0032] 優選地,所述父ACL以及所述ACL共享段中的ACL規則均按照預設步長獨立的進 行編號。
[0033] 優選地,所述多個ACL中的所述ACL共享段的被引用位置可以不同。
[0034] 本發明通過將多個ACL中相同的ACL規則作為ACL共享段在內存中單獨加載,同 時在引用該ACL共享段的父ACL以及ACL共享段中分別預設跳轉規則,通過所述跳轉規則 完成針對父ACL的ACL順序查找,從而使得引用所述ACL共享段的父ACL均不需要單獨重 復加載所述ACL共享段,減少了 ACL對內存空間的占用;同時,本發明將ACL從一維的鏈表 結構擴展為嵌套的樹型結構,大大簡化了配置以及維護工作量,提高了 ACL的可閱讀性。
【專利附圖】
【附圖說明】
[0035] 圖1是本發明一種實施方式中一種ACL配置方法的流程圖;
[0036] 圖2是現有技術中ACL占用設備內存的不意圖;
[0037] 圖3是本發明一種實施方式中引入ACL共享段后父ACL中進行ACL查找的示意 圖;
[0038] 圖4是本發明一種實施方式中一種ACL配置裝置的框圖;
[0039] 圖5是本發明一種實施方式中一種承載所述ACL配置裝置的網絡設備的硬件結構 圖。
【具體實施方式】
[0040] 本發明通過將多個ACL中相同的ACL規則作為ACL共享段在內存中單獨加載,同 時在引用該ACL共享段的父ACL以及ACL共享段中分別設置跳轉規則,通過跳轉規則的跳 轉完成針對父ACL的ACL順序查找,從而使得引用所述ACL共享段的父ACL均不需要單獨 重復加載所述ACL共享段,減少了 ACL對內存空間的占用。
[0041] 下面結合附圖并舉實施例,對本發明進行詳細描述。
[0042] 請參見圖1,本發明提出一種ACL配置方法,應用在網絡設備上,所述方法執行如 下步驟:
[0043] 步驟S101、將多個ACL中相同的ACL規則作為ACL共享段進行單獨加載;
[0044] 步驟S102、在所述多個ACL中的所述ACL共享段的被引用位置分別預設用于跳轉 到所述ACL共享段的第一跳轉規則;
[0045] 步驟S103、在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的父ACL的 第二跳轉規則;
[0046] 步驟S104、當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一 跳轉規則跳轉到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找 后,根據所述第二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找。 [0047] 其中,所述網絡設備可以是需要通過端口對進出報文進行控制的路由器或者交換 機;例如,所述網絡設備,可以是具有防火墻功能的網關路由器,在實際應用中可以通過在 所述網關路由器上設置ACL規則,來實現對用戶報文中的非法或者攻擊報文進行過濾的功 能。
[0048] 在本實施例中,網絡設備中預加載的多個ACL中,通常包括一些相同的ACL規則; 例如,具有防火墻業務的網關路由器的不同接口上,通常設置了用于進行防火墻業務的多 個不同的ACL,在這些ACL中,除了一些需要被不同接口調用的與具體業務相關的ACL規則 以外,其余的ACL規則通常是用于丟棄一些已知流量的通用ACL規則,這部分的ACL規則往 往相同。因此,可以將所述多個ACL中相同的ACL規則,作為一個ACL共享段進行單獨加載。
[0049] 具體地,設備首先需要為所述多個ACL在內存中分別劃分存儲空間;其次,還需要 在內存中再單獨劃分一段固定內存用于存儲所述ACL共享段;然后將所述相同的ACL規則 作為ACL共享段單獨加載到預先分配的所述固定內存中;同時,將各ACL中互不相同的其他 ACL規則作為父ACL規則也加載到預先為所述多個ACL分別劃分的內存存儲空間中。
[0050] 此時,所述多個ACL已經通過劃分ACL共享段被分別拆分成兩段,分別為父ACL和 ACL共享段,并且所述父ACL以及所述ACL共享段被分別加載在內存中不同的存儲空間中。
[0051] 在本實施例中,所述ACL共享段中還包括可滲透規則;所述可滲透規則通常為所 述ACL共享段中的預留規則,在設備啟動時需要加載到父ACL中的對應位置。
[0052] 在具體應用中,所述多個ACL中通常還包括隱式規則,由于不同的ACL中的隱式規 則通常均相同,因此所述隱式規則會被作為所述可滲透規則加載到所述ACL共享段中。其 中,所謂隱式規則通常為ACL中最后一條或者最后幾條包含諸如Permit tcp,Deny udp或 者Deny ip等語句的ACL規則,用于防止ACL的意外誤配置。例如,所述隱式規則在具體應 用中通常包括諸如Deny ip等語句的隱式拒絕規則,所述隱式拒絕規則表示當收到的報文 與該列表中隱式拒絕規則之前的任何一條ACL規則均不匹配時,則丟棄該報文。因此,當設 備啟動后,還需要將所述ACL共享段中的隱式規則作為可滲透規則分別拷貝并加載到所述 父ACL中。
[0053] 在本實施例中,由于ACL共享段以及所述多個ACL分別被加載在內存中不同的存 儲空間中,因此為了使報文針對所述多個ACL中任一父ACL進行ACL查找時,保持所述父 ACL中ACL規則查找的順序性和完整性,可以在所述父ACL以及所述ACL共享段中分別設置 特殊的跳轉規則;
[0054] -方面,可以在父ACL中設置一個第一跳轉規則;當設備針對任一父ACL進行ACL 查找時,如果查找到所述第一跳轉規則,則自動調用所述第一跳轉規則所指向的地址跳轉 到ACL共享段中繼續進行ACL查找;其中所述第一跳轉規則指向的地址為所述ACL共享段 起始位置的內存地址;所述第一跳轉規則在所述父ACL中的位置,為所述ACL共享段在所述 父ACL中的被引用位置,所述ACL共享段在所述父ACL中的被引用位置取決于實際的業務 需求;例如,如果業務需要在ACL查找時首先進行ACL共享段的匹配,那么可以將所述第一 跳轉規則作為第一條ACL規則設置在所述父ACL中。其中,值得說明的是,所述ACL共享段 在所述多個ACL中的被引用位置可以不同;例如,當所述ACL共享段被第一以及第二ACL分 別引用時,所述被引用位置在第一 ACL中可以作為第一條ACL規則ruleO,在第二ACL中可 以作為第二條ACL規則rule5 (以規則編號的默認步長為5為例)。
[0055] 另一方面,還可以在所述ACL共享段中設置一個第二跳轉規則,用于在完成了 ACL 共享段的ACL查找后跳轉到所述父ACL中繼續進行ACL查找;當在ACL共享段中進行ACL 查找時,如果查找到所述第二跳轉規則,則立即調用所述第二跳轉規則所指向的地址跳轉 至IJ本次ACL查找的父ACL中繼續進行ACL查找;其中,所述第二跳轉規則指向的地址為所述 父ACL中所述ACL共享段的被引用位置的下一條ACL規則起始位置的內存地址。例如,假 設設備當前針對父ACL3001進行ACL查找,父ACL3001中在ruleO中引用了 ACL共享段,當 根據所述引用位置加載的所述第一跳轉規則跳轉到ACL共享段后,繼續在ACL共享段中進 行ACL查找;如果在ACL共享段中查找到了所述第二跳轉規則,則自動調用父ACL3001中 ruleO的下一條規則rule5起始位置的內存地址(仍以默認步長為5為例),跳轉到本次 ACL查找的父ACL3001中繼續進行ACL查找。
[0056] 在本實施例中,所述ACL共享段中的可滲透規則不參與ACL共享段中的ACL查找; 因此為了在ACL共享段中進行ACL查找時,使得所述可滲透規則不參與ACL查找,可以將所 述第二跳轉規則作為倒數第二條ACL規則加載在所述ACL共享段中的隱式拒絕規則之前。 當所述第一跳轉規則以及所述第二跳轉規則均設置完畢后,此時針對任一父ACL進行ACL 查找時,可根據所述第一跳轉規則跳轉到所述ACL共享段中繼續進行ACL查找,如果在所述 ACL共享段中仍然沒有查找到匹配的ACL規則,則再次通過第二跳轉規則跳轉到所述父ACL 中繼續進行ACL查找。
[0057] 在本實施例中,所述ACL共享段中ACL規則的命名可以不受父ACL中的限制,即將 不同的父ACL中相同的ACL規則加載到所述ACL共享段中時,可以根據ACL共享段中的默 認步長重新為ACL共享段中的ACL規則進行序號命名。例如,當父ACL中的rulel5, rule20 和rule25作為與其他ACL相同的ACL規則加載到ACL共享段中時,這三條ACL規則在ACL 共享段中的序號可以重新命名為rule5, rulelO和rulel5,即父ACL中ACL規則的命名與 ACL共享段中的命名可以互不影響。從而,在將ACL共享段中的可滲透規則拷貝到父ACL中 時,所述可滲透規則需要按照父ACL中的默認步長根據其在父ACL中所處位置重新進行命 名,因此在具體實現時所述可滲透規則在ACL共享段中以及父ACL中的編號可能不同。
[0058] 當然,在具體實現時,如果希望所述可滲透規則在所述ACL共享段中以及所述父 ACL中為統一的編號,可以在ACL的配置階段就根據所述可滲透規則在所述ACL共享段和 所述父ACL中的位置,以及所述ACL共享段以及所述父ACL中所支持的最大ACL規則數量, 提前為所述可滲透規則規劃一個比較大的編號。例如,如果所述ACL共享段和所述父ACL 中ACL規則編號的默認步長均為5,所支持最大ACL規則為10的話,那么所述ACL共享段 和所述父ACL中ACL規則編號的最大值可以達到45 ;那么可以將所述可滲透規則的編號在 ACL的配置階段就統一命名為rUle50,從而保證了將所述可滲透規則從ACL共享段中拷貝 并加載到父ACL中時,即不會跟已有ACL規則的編號沖突,同時遵從了 ACL共享段以及所述 父ACL對ACL規則進行獨立編號的原則。
[0059] 值得說明的是,在具體實現時,在將多個ACL中的相同的ACL規則加載到ACL共享 段中時,也可以將所述多個ACL中的可滲透規則保留在父ACL中,只將除了可滲透規則之外 的其他相同的ACL規則加載到ACL共享段中,其【具體實施方式】與上述實施方式相同,不再贅 述。
[0060] 以下通過一個具體的應用實例,來詳細描述本發明;
[0061] 以下所示為2個用于防火墻業務的ACL3001和3002 ;
[0062]
【權利要求】
1. 一種訪問控制列表ACL的配置方法,應用在網絡設備上,其特征在于,所述方法包 括: 將多個訪問控制列表ACL中相同的ACL規則作為ACL共享段進行單獨加載; 在所述多個ACL中的所述ACL共享段的被引用位置分別預設用于跳轉到所述ACL共享 段的第一跳轉規則; 在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的父ACL的第二跳轉規則; 當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一跳轉規則跳轉 到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找后,根據所述第 二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找。
2. 如權利要求1所述的方法,其特征在于,所述ACL共享段中還包括可滲透規則;所述 可滲透規則為所述ACL共享段中的預留規則,在設備啟動時需要加載到父ACL中的對應位 置; 所述方法還包括: 當所述多個ACL中相同的ACL規則中包括隱式規則時,將所述隱式規則作為所述可滲 透規則加載到父ACL中的對應位置; 其中,所述可滲透規則作為所述ACL共享段中的最后一條規則加載在所述第二跳轉規 則之后。
3. 如權利要求1所述的方法,其特征在于, 所述根據所述第一跳轉規則跳轉到所述ACL共享段中包括: 調用所述ACL共享段起始位置的第一內存地址,根據所述第一內存地址跳轉到所述 ACL共享段中; 所述根據所述第二跳轉規則跳轉到所述父ACL中包括: 調用所述被引用位置的下一條ACL規則起始位置的第二內存地址,根據所述第二內存 地址跳轉到所述父ACL中。
4. 如權利要求1所述的方法,其特征在于,所述方法還包括: 所述父ACL以及所述ACL共享段中的ACL規則均按照預設步長獨立的進行編號。
5. 如權利要求1所述的方法,其特征在于,所述多個ACL中的所述ACL共享段的被引用 位置可以不同。
6. -種訪問控制列表ACL的配置裝置,應用在網絡設備上,其特征在于,所述裝置包 括: 加載單元,用于將多個ACL中相同的ACL規則作為ACL共享段進行單獨加載; 第一預設單元,用于在所述多個ACL中的所述ACL共享段的被引用位置分別預設用于 跳轉到所述ACL共享段的第一跳轉規則; 第二預設單元,用于在所述ACL共享段的最末端預設用于跳轉到本次ACL查找的父ACL 的第二跳轉規則; 查找單元,當業務在所述多個ACL中任一父ACL中進行ACL查找時,根據所述第一跳轉 規則跳轉到所述ACL共享段中進行ACL查找,并在完成所述ACL共享段中的ACL查找后,根 據所述第二跳轉規則跳轉到所述父ACL中,以繼續完成針對所述父ACL的ACL查找。
7. 如權利要求6所述的裝置,其特征在于,所述ACL共享段中還包括可滲透規則;所述 可滲透規則為所述ACL共享段中的預留規則,在設備啟動時需要加載到父ACL中的對應位 置; 所述加載單元進一步用于在所述多個ACL中相同的ACL規則中包括隱式規則時,將所 述隱式規則作為所述可滲透規則加載到父ACL中的對應位置; 其中,所述可滲透規則作為所述ACL共享段中的最后一條規則加載在所述第二跳轉規 則之后。
8. 如權利要求7所述的裝置,其特征在于, 所述查找單元進一步用于在根據所述第一跳轉規則跳轉到所述ACL共享段中時,調用 所述ACL共享段起始位置的第一內存地址,根據所述第一內存地址跳轉到所述ACL共享段 中; 所述查找單元進一步用于在根據所述第二跳轉規則跳轉到所述父ACL中時,調用所述 被引用位置的下一條ACL規則起始位置的第二內存地址,根據所述第二內存地址跳轉到所 述父ACL中。
9. 如權利要求6所述的裝置,其特征在于,所述父ACL以及所述ACL共享段中的ACL規 則均按照預設步長獨立的進行編號。
10. 如權利要求6所述的裝置,其特征在于,所述多個ACL中的所述ACL共享段的被引 用位置可以不同。
【文檔編號】H04L29/06GK104092678SQ201410312937
【公開日】2014年10月8日 申請日期:2014年7月2日 優先權日:2014年7月2日
【發明者】朱皓 申請人:杭州華三通信技術有限公司