一種多域流規(guī)則匹配的實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種多域流規(guī)則匹配的實現(xiàn)方法,涉及高速流分類【技術領域】。本發(fā)明首先根據(jù)IP報文數(shù)據(jù)流的五元組定義對每個元組都建立一個規(guī)則表,然后建立一個哈希快速流表,將匹配規(guī)則的所有信息添加到規(guī)則表中;再進行IP報文數(shù)據(jù)流匹配,如果找到,則執(zhí)行相應的動作,否則查找規(guī)則表,進行掩碼匹配查詢。本發(fā)明通過改進查詢速度快的前綴擴展Trie樹,犧牲部分內(nèi)存空間,采用數(shù)據(jù)壓縮和哈希表相結(jié)合的方式,在保證查詢速度的前提下,又不會因為大容量的規(guī)則庫而發(fā)生內(nèi)存爆炸。
【專利說明】一種多域流規(guī)則匹配的實現(xiàn)方法
【技術領域】
[0001]本發(fā)明涉及高速流分類技術、多域掩碼匹配技術和多核處理器技術,特別是涉及一種支持多域流規(guī)則匹配的實現(xiàn)方法。
【背景技術】
[0002]隨著網(wǎng)絡帶寬的增加以及更多多元化的網(wǎng)絡業(yè)務分類,基于流的數(shù)據(jù)包匹配有著更加廣泛的用途,許多網(wǎng)絡關鍵技術,例如虛擬專用網(wǎng)(VPN)、基于安全存取列表控制的防火墻、QoS、網(wǎng)絡入侵檢測監(jiān)控、網(wǎng)絡地址轉(zhuǎn)換、擁塞控制、資源預留、負載平衡、收集統(tǒng)計數(shù)據(jù)等都是以數(shù)據(jù)包分類匹配為基礎的。萬兆網(wǎng)絡已經(jīng)成為了核心網(wǎng)絡,為使網(wǎng)絡性能得到全面提高,對作為網(wǎng)絡基礎算法的數(shù)據(jù)包分類匹配算法的要求越來越高。而傳統(tǒng)的包分類匹配算法已無法滿足日益增長的網(wǎng)絡流量業(yè)務需求,發(fā)展萬兆網(wǎng)絡數(shù)據(jù)流分類算法的良好解決方案越來越受到人們的重視。所以高效率、低沖突率和較小的時間/空間復雜度的數(shù)據(jù)流分類匹配算法成為應用于萬兆網(wǎng)絡管理、流量測量技術的一項非常關鍵的技術。
[0003]數(shù)據(jù)流分類匹配的問題可以視為在多位空間中一個點的定位問題:在k維空間中有N個d維的“長方體”(規(guī)則),問題是對于一個給定的點(數(shù)據(jù)流)如何找出該點位于哪個長方體中?,F(xiàn)階段研究的各種算法具有比較明顯的優(yōu)缺點,算法一旦擴展到大規(guī)模甚至超大規(guī)模的規(guī)則庫,并且多域任意掩碼匹配,很多分類算法因為方法復雜,規(guī)則限制較多,計算繁復,所以導致空間復雜度或者時間復雜度極高,甚至會發(fā)生內(nèi)存爆炸,因此需求一種既要低的時間復雜度又要控制算法的存儲占用問題,避免兩方面的沖突,采用合理的算法,結(jié)合硬件設備優(yōu)勢,從而找到時間復雜度和空間復雜度的一個最佳結(jié)合點。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種支持多域流規(guī)則匹配的實現(xiàn)方法,通過改進查詢速度快的前綴擴展Trie樹,犧牲部分內(nèi)存空間,采用數(shù)據(jù)壓縮和哈希表相結(jié)合的方式,在保證查詢速度的前提下,又不會因為大容量的規(guī)則庫而發(fā)生內(nèi)存爆炸。
[0005]本發(fā)明提供的一種多域流規(guī)則匹配的實現(xiàn)方法,該方法的步驟如下:
[0006]第一步,根據(jù)IP報文數(shù)據(jù)流的五元組定義(源/目的IP,源/目的端口,網(wǎng)絡協(xié)議號),對每個元組都建立一個規(guī)則表,共五個規(guī)則表。
[0007]第二步,建立一個哈??焖倭鞅恚糜诒4孀罱欢螘r間里匹配規(guī)則的IP報文數(shù)據(jù)流的五元組信息及該匹配規(guī)則的動作信息,用于IP報文數(shù)據(jù)流的精確快速匹配。
[0008]第三步,添加或更新一條匹配規(guī)則時,根據(jù)匹配規(guī)則中五元組信息在一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表,將匹配規(guī)則的所有信息添加到該規(guī)則表中。
[0009]第四步,在進行IP報文數(shù)據(jù)流匹配時,先根據(jù)IP報文數(shù)據(jù)流的五元組在哈希快速流表中進行精確查找,如果找到,則執(zhí)行相應的動作,否則查找規(guī)則表,進行掩碼匹配查詢。
[0010]第五步,規(guī)則表掩碼匹配查詢時,依次對五個規(guī)則表進行掩碼匹配查詢,根據(jù)一定的優(yōu)先級策略分別找到最佳匹配規(guī)則,然后根據(jù)相同的策略再在這些最佳匹配規(guī)則中找出最終的匹配規(guī)則。
[0011]第六步,在規(guī)則表中查詢到最終的匹配規(guī)則后,將IP報文數(shù)據(jù)流的五元組信息及該最終的匹配規(guī)則的動作信息添加到哈??焖倭鞅碇小?br>
[0012]第七步,哈??焖倭鞅碇С掷匣瘷C制。
[0013]第八步,刪除一條規(guī)則時,采用和添加時一樣的查找性能均衡策略找到對應的規(guī)則表進行刪除。
[0014]第一步中所述的建立的五個規(guī)則表,規(guī)則表的組織結(jié)構(gòu)與查詢算法是一致的,也為實現(xiàn)多核芯片多表并行查找提供算法基礎。該規(guī)則表結(jié)構(gòu)的具體設計原則包括:
[0015](1.1)添加的每條規(guī)則只存在于五個規(guī)則表中的其中一個。
[0016](1.2)規(guī)則表分為兩部分,第一部分為基于前綴擴展的深度為I并進行數(shù)據(jù)壓縮的Trie樹,因為樹的深度為I,樹可以簡化為數(shù)組,數(shù)組大小根據(jù)前綴擴展策略及元組來確定;第二部分是輔助哈希表。
[0017](1.3)前綴擴展的策略:對于源/目的IP,將前綴長度為1-24的前綴統(tǒng)一擴展為24,前綴長度為25-32不進行前綴擴展;對于源/目的端口,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為16。對于網(wǎng)絡協(xié)議號,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為8。
[0018](1.4)由于擴展后存在大量數(shù)據(jù)冗余,需要進行數(shù)據(jù)壓縮。對于源/目的IP,方法是將擴展后的前綴分割為兩部分:前20比特和后4比特,簡稱20+4,對后4比特代表的前綴(共16個)進行數(shù)據(jù)壓縮后以前20比特的值作為數(shù)組的下標添加到數(shù)組中。對于源/目的端口類似,分割為12+4,對于網(wǎng)絡協(xié)議號分割為4+4。
[0019](1.5)Trie樹中規(guī)則對應的表項包括:規(guī)則的五元組掩碼信息;系統(tǒng)為該規(guī)則分配的唯一 MAGIC值;數(shù)據(jù)壓縮用的信息。
[0020](1.6)輔助哈希表保存對應規(guī)則表中規(guī)則的動作信息,哈希表的查詢鍵值是該規(guī)則對五元組進行掩碼后的值與該規(guī)則MAGIC值組合后進行CRC32計算后取余。輔助哈希表和基于前綴擴展并進行數(shù)據(jù)壓縮的Trie樹的聯(lián)系是規(guī)則的五元組掩碼信息和MAGIC值。
[0021]第二步中所述的建立的哈希快速流表,是為了提高查詢速度的一種策略。哈??焖倭鞅淼脑O計依據(jù)是流具有時間局部性:在流的第一個數(shù)據(jù)包到達后較短時間內(nèi)到達的數(shù)據(jù)包屬于同一流的可能性很大。哈??焖倭鞅淼谋眄棻4孀罱竭_的流的五元組信息及匹配到的規(guī)則的動作信息。
[0022]第三步中所述的采用一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表來進行添加,是為了解決在傳統(tǒng)單一表的掩碼匹配算法應用于多表情況時,對多個匹配結(jié)果進行整合時算法的時間復雜度較高的一種方法。策略實施的具體原則包括:
[0023]A.僅在規(guī)則要求匹配的元組中選擇對應的規(guī)則表。如規(guī)則只要求匹配目的IP和目的端口(掩碼長度非O),其他元組信息任意(掩碼長度為O),則策略只會在目的IP和目的端口對應的規(guī)則表中選擇其中一個表來進行添加。
[0024]B.在要求匹配的元組中選擇哪個規(guī)則表支持以下兩種策略:a,隨機指定;b,預先設定各元組掩碼的權(quán)重,根據(jù)掩碼長度和權(quán)重計算后得出最高權(quán)值的規(guī)則表,將規(guī)則添加到該表中。
[0025]第三步中所述的添加規(guī)則的所有信息到規(guī)則表中的具體實施過程:
[0026](3.1)根據(jù)選定的元組(源/目的IP或源/目的端口或網(wǎng)絡協(xié)議號)必要時進行前綴擴展。
[0027](3.2)計算數(shù)組下標;計算前綴擴展后的后4比特代表的前綴(共16個)中哪些包含在規(guī)則中,將對應的位在數(shù)組元素的字段-前綴位圖中置I。對于源/目的IP掩碼長度大于24時,前綴位圖可能出現(xiàn)相同的情況,導致無法區(qū)分規(guī)則,這里前綴位圖的字段存放IP掩碼后的后16比特數(shù)據(jù)。
[0028](3.3)保存所有元組的前綴信息到掩碼字段中,分配一個隨機MAGIC值給該規(guī)則并保存到MAGIC字段中。
[0029](3.4)將元組掩碼后與MAGIC值組合,計算哈希鍵值,將規(guī)則對應的動作信息及解決哈希沖突的比較信息添加到輔助哈希表的哈希桶中。
[0030]第五步中依次對五個規(guī)則表進行掩碼匹配查詢,并引入優(yōu)先級策略,是考慮存在沒有使用優(yōu)先級策略的情況下一條流可能匹配多條規(guī)則的場景。具體設計原則如下:
[0031](5.1)由于5個規(guī)則表中的規(guī)則沒有重復,流進行匹配規(guī)則時需要確保不遺漏匹配所有可能的規(guī)則,因此需要依次查詢5個規(guī)則表,如果是多核處理器的環(huán)境,算法還可以方便的改為多核并行查找,提高查詢實時響應速度。
[0032](5.2)引入優(yōu)先級策略,解決找出最佳規(guī)則的問題。優(yōu)先級策略分為默認優(yōu)先級和用戶配置優(yōu)先級。默認優(yōu)先級的策略如下:規(guī)則中要求匹配的元組數(shù)越多優(yōu)先級越高,在元組數(shù)相同的情況下比較元組的掩碼長度,比較順序為目的IP、源IP,目的端口、源端口、網(wǎng)絡協(xié)議號。用戶配置優(yōu)先級可以提升指定規(guī)則的優(yōu)先級。舉例如下:
[0033]Rl:DIP:10.0.0.1/32 ;SIP:20.0.0.*/24 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0034]R2:DIP:10.0.0.1/32 ;SIP:20.0.0.1/32 ;其他元組任意,動作:丟棄
[0035]R3:DIP:10.0.0.*/24 ;SIP:20.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0036]R4:DIP:10.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0037]R5:SIP:20.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0038]默認情況下規(guī)則優(yōu)先級:R2>R1>R3>R4>R5 ;
[0039]如果用戶提高R5的優(yōu)先級,則優(yōu)先級順序變?yōu)镽2>R1>R3>R5>R4 ;
[0040]第七步中所述的哈??焖倭鞅碇С掷匣瘷C制,設計原則如下:
[0041](7.1) 一條流在經(jīng)過一段時間后停止了,哈??焖倭鞅碇袑捻椧呀?jīng)沒有用,如果不刪除,不僅占用空間還會增加哈希沖突概率,因此需要將其老化掉。
[0042](7.2)老化機制采用的策略:利用多核處理器提供的硬件定時器模塊可以定時向多核發(fā)送自定義超時數(shù)據(jù)的特性,并且支持大量的標示信息添加和通知。利用該特性,在添加哈希快速流表時,將標示該表項的信息(哈希值和沖突比較值)添加到定時器中,并啟動定時,在定時時間到時,定時器會將該標示信息告訴多核處理器,多核處理器根據(jù)該信息找到表項進行刪除。
【專利附圖】
【附圖說明】
[0043]圖1是本發(fā)明實施步驟流程圖。
[0044]圖2是本發(fā)明設計使用的規(guī)則表表項結(jié)構(gòu)。
【具體實施方式】
[0045]現(xiàn)結(jié)合附圖和實施例對本發(fā)明的技術方案作進一步說明。
[0046]如圖1與圖2所示,本發(fā)明提供的一種多域流規(guī)則匹配的實現(xiàn)方法包括如下步驟:
[0047]第一步,根據(jù)IP報文數(shù)據(jù)流的五元組定義(源/目的IP,源/目的端口,網(wǎng)絡協(xié)議號),對每個元組都建立一個規(guī)則表,共五個規(guī)則表。
[0048]所述的五個規(guī)則表的組織結(jié)構(gòu)與查詢算法是一致的,也為實現(xiàn)多核芯片多表并行查找提供算法基礎。每一個規(guī)則表結(jié)構(gòu)的具體設計原則包括:
[0049](1.1)添加的每條規(guī)則只存在于五個規(guī)則表中的其中一個。
[0050](1.2)規(guī)則表分為兩部分,第一部分為基于前綴擴展的深度為I并進行數(shù)據(jù)壓縮的Trie樹,因為Trie樹的深度為1,Trie樹可以簡化為數(shù)組,數(shù)組大小根據(jù)前綴擴展策略及元組來確定;第二部分是輔助哈希表。
[0051](1.3)前綴擴展的策略:對于源/目的IP,將前綴長度為1-24的前綴統(tǒng)一擴展為24,前綴長度為25-32不進行前綴擴展;對于源/目的端口,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為16。對于網(wǎng)絡協(xié)議號,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為8。
[0052](1.4)由于擴展后存在大量數(shù)據(jù)冗余,需要進行數(shù)據(jù)壓縮。對于源/目的IP,方法是將擴展后的前綴分割為兩部分:前20比特和后4比特,簡稱20+4,對后4比特代表的前綴(共16個)進行數(shù)據(jù)壓縮后以前20比特的值作為數(shù)組的下標添加到數(shù)組中。對于源/目的端口類似,分割為12+4,對于網(wǎng)絡協(xié)議號分割為4+4。
[0053](1.5)Trie樹中規(guī)則對應的表項包括:規(guī)則的五元組掩碼信息;系統(tǒng)為該規(guī)則分配的唯一 MAGIC值;數(shù)據(jù)壓縮用的信息。
[0054](1.6)輔助哈希表保存對應規(guī)則表中匹配規(guī)則的動作信息,哈希表的查詢鍵值是該規(guī)則對五元組進行掩碼后的值與該規(guī)則MAGIC值組合后進行CRC32計算后取余。輔助哈希表和基于前綴擴展并進行數(shù)據(jù)壓縮的Trie樹的聯(lián)系是規(guī)則的五元組掩碼信息和MAGIC值。
[0055]第二步,建立一個哈??焖倭鞅?,用于保存最近一段時間里匹配規(guī)則的流的五元組信息及該匹配規(guī)則的動作信息,用于IP報文數(shù)據(jù)流的精確快速匹配。
[0056]建立的哈希快速流表,是為了提高查詢速度的一種策略。哈??焖倭鞅淼脑O計依據(jù)是流具有時間局部性:在流的第一個數(shù)據(jù)包到達后較短時間內(nèi)到達的數(shù)據(jù)包屬于同一流的可能性很大。哈??焖倭鞅淼谋眄棻4孀罱竭_的流的五元組信息及匹配到的規(guī)則的動作信息。
[0057]第三步,添加或更新一條匹配規(guī)則時,根據(jù)匹配規(guī)則中五元組信息在一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表,將匹配規(guī)則的所有信息添加到該規(guī)則表中。
[0058]所述的采用一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表來進行添加,是為了解決在傳統(tǒng)單一表的掩碼匹配算法應用于多表情況時,對多個匹配結(jié)果進行整合時算法的時間復雜度較高的一種方法。策略實施的具體原則包括:
[0059]A.僅在規(guī)則要求匹配的元組中選擇對應的規(guī)則表。如規(guī)則只要求匹配目的IP和目的端口(掩碼長度非O),其他元組信息任意(掩碼長度為O),則策略只會在目的IP和目的端口對應的規(guī)則表中選擇其中一個表來進行添加。
[0060]B.在要求匹配的元組中選擇哪個規(guī)則表支持以下兩種策略:a,隨機指定;b,預先設定各元組掩碼的權(quán)重,根據(jù)掩碼長度和權(quán)重計算后得出最高權(quán)值的規(guī)則表,將規(guī)則添加到該表中。
[0061]所述的添加規(guī)則的所有信息到規(guī)則表中的具體實施過程如下:
[0062](3.1)根據(jù)選定的元組(源/目的IP或源/目的端口或網(wǎng)絡協(xié)議號)必要時進行前綴擴展。
[0063](3.2)計算數(shù)組下標;計算前綴擴展后的后4比特代表的前綴(共16個)中哪些包含在規(guī)則中,將對應的位在圖2標示數(shù)組元素的字段-前綴位圖PBmp中置I。對于源/目的IP掩碼長度大于24時,前綴位圖可能出現(xiàn)相同的情況,導致無法區(qū)分規(guī)則,這里前綴位圖的字段存放IP掩碼后的后16比特數(shù)據(jù)。
[0064](3.3)保存所有元組的前綴信息到圖2標示的五元組各自前綴偏移字段和前綴位圖字段中,分配一個隨機MAGIC值給該規(guī)則并保存到圖2標示的MAGIC字段中。
[0065](3.4)將元組掩碼后與MAGIC值組合,計算哈希鍵值,將規(guī)則對應的動作信息及解決哈希沖突的比較信息添加到輔助哈希表的哈希桶中。
[0066]第四步,在進行IP報文數(shù)據(jù)流匹配時,先根據(jù)IP報文數(shù)據(jù)流的五元組在哈??焖倭鞅碇羞M行精確查找,如果找到,則執(zhí)行的相應的動作,否則查找規(guī)則表,進行掩碼匹配查詢。
[0067]第五步,規(guī)則表掩碼匹配查詢時,依次對五個規(guī)則表進行掩碼匹配查詢,根據(jù)一定的優(yōu)先級策略分別找到最佳匹配規(guī)則,然后根據(jù)相同的策略再在這些最佳匹配規(guī)則中找出最終匹配規(guī)則。
[0068]所述的依次對五個規(guī)則表進行掩碼匹配查詢,并引入優(yōu)先級策略,是考慮存在沒有使用優(yōu)先級策略的情況下一條流可能匹配多條規(guī)則的場景。具體設計原則如下:
[0069](5.1)由于5個規(guī)則表中的規(guī)則沒有重復,流進行匹配規(guī)則時需要確保不遺漏匹配所有可能的規(guī)則,因此需要依次查詢5個規(guī)則表,如果是多核處理器的環(huán)境,算法還可以方便的改為多核并行查找,提高查詢實時響應速度。
[0070](5.2)引入優(yōu)先級策略,解決找出最佳規(guī)則的問題。優(yōu)先級策略分為默認優(yōu)先級和用戶配置優(yōu)先級。默認優(yōu)先級的策略如下:規(guī)則中要求匹配的元組數(shù)越多優(yōu)先級越高,在元組數(shù)相同的情況下比較元組的掩碼長度,比較順序為目的IP、源IP,目的端口、源端口、網(wǎng)絡協(xié)議號。用戶配置優(yōu)先級可以提升指定規(guī)則的優(yōu)先級。舉例如下:
[0071]Rl:DIP:10.0.0.1/32 ;SIP:20.0.0.*/24 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0072]R2:DIP:10.0.0.1/32 ;SIP:20.0.0.1/32 ;其他元組任意,動作:丟棄
[0073]R3:DIP:10.0.0.*/24 ;SIP:20.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0074]R4:DIP:10.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0075]R5:SIP:20.0.0.1/32 ;其他元組任意,動作:轉(zhuǎn)發(fā)
[0076]默認情況下規(guī)則優(yōu)先級:R2>R1>R3>R4>R5 ;
[0077]如果用戶提高R5的優(yōu)先級,則優(yōu)先級順序變?yōu)镽2>R1>R3>R5>R4。
[0078]第六步,在規(guī)則表中查詢到最終匹配規(guī)則后,將IP報文數(shù)據(jù)流的五元組信息及該最終匹配規(guī)則的動作信息添加到哈??焖倭鞅碇?。
[0079]第七步,哈希快速流表支持老化機制。
[0080]設計原則如下:
[0081](7.1) 一條流在經(jīng)過一段時間后停止了,哈希快速流表中對應的項已經(jīng)沒有用,如果不刪除,不僅占用空間還會增加哈希沖突概率,因此需要將其老化掉。
[0082](7.2)老化機制采用的策略:利用多核處理器提供的硬件定時器模塊可以定時向多核發(fā)送自定義超時數(shù)據(jù)的特性,并且支持大量的標示信息添加和通知。利用該特性,在添加哈??焖倭鞅頃r,將標示該表項的信息(哈希值和沖突比較值)添加到定時器中,并啟動定時,在定時時間到時,定時器會將該標示信息告訴多核處理器,多核處理器根據(jù)該信息找到表項進行刪除。
[0083]第八步,刪除一條規(guī)則時,采用和添加時一樣的查找性能均衡策略找到對應的規(guī)則表進行刪除。
【權(quán)利要求】
1.一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:該方法的步驟如下, 第一步,根據(jù)IP報文數(shù)據(jù)流的五元組定義,對每個元組都建立一個規(guī)則表,共五個規(guī)則表; 第二步,建立一個哈??焖倭鞅?,用于保存最近一段時間里匹配規(guī)則的IP報文數(shù)據(jù)流的五元組信息及該匹配規(guī)則的動作信息,用于IP報文數(shù)據(jù)流的精確快速匹配; 第三步,添加或更新一條匹配規(guī)則時,根據(jù)匹配規(guī)則中五元組信息在一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表,將匹配規(guī)則的所有信息添加到該規(guī)則表中; 第四步,在進行IP報文數(shù)據(jù)流匹配時,先根據(jù)IP報文數(shù)據(jù)流的五元組在哈??焖倭鞅碇羞M行精確查找,如果找到,則執(zhí)行相應的動作,否則查找規(guī)則表,進行掩碼匹配查詢;第五步,規(guī)則表掩碼匹配查詢時,依次對五個規(guī)則表進行掩碼匹配查詢,根據(jù)一定的優(yōu)先級策略分別找到最佳匹配規(guī)則,然后根據(jù)相同的策略再在這些最佳匹配規(guī)則中找出最終匹配規(guī)則; 第六步,在規(guī)則表中查詢到最終匹配規(guī)則后,將IP報文數(shù)據(jù)流的五元組信息及該最終匹配規(guī)則的動作信息添加到哈希快速流表中; 第七步,哈希快速流表支持老化機制; 第八步,刪除一條規(guī)則時,采用和添加時一樣的查找性能均衡策略找到對應的規(guī)則表進行刪除。
2.根據(jù)權(quán)利要求1所述的一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:第一步中所述的建立的五個規(guī)則表,該規(guī)則表結(jié)構(gòu)的具體設計原則包括: (1.1)添加的每條規(guī)則只存在于五個規(guī)則表中的其中一個; (1.2)規(guī)則表分為兩部分,第一部分為基于前綴擴展的深度為I并進行數(shù)據(jù)壓縮的Trie樹;第二部分是輔助哈希表; (1.3)前綴擴展的策略:對于源/目的IP,將前綴長度為1-24的前綴統(tǒng)一擴展為24,前綴長度為25-32不進行前綴擴展;對于源/目的端口,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為16 ;對于網(wǎng)絡協(xié)議號,如果是范圍匹配,先將范圍轉(zhuǎn)換為前綴,將前綴長度都擴展為8 ; (1.4)由于擴展后存在大量數(shù)據(jù)冗余,需要進行數(shù)據(jù)壓縮;對于源/目的IP,方法是將擴展后的前綴分割為兩部分:前20比特和后4比特,簡稱20+4,對后4比特代表的前綴進行數(shù)據(jù)壓縮后以前20比特的值作為數(shù)組的下標添加到數(shù)組中;對于源/目的端口,分割為12+4,對于網(wǎng)絡協(xié)議號分割為4+4 ; (1.5)Trie樹中規(guī)則對應的表項包括:規(guī)則的五元組掩碼信息;系統(tǒng)為該規(guī)則分配的唯一 MAGIC值;數(shù)據(jù)壓縮用的信息; (1.6)輔助哈希表保存對應規(guī)則表中規(guī)則的動作信息,哈希表的查詢鍵值是該規(guī)則對五元組進行掩碼后的值與該規(guī)則MAGIC值組合后進行CRC32計算后取余;輔助哈希表和基于前綴擴展并進行數(shù)據(jù)壓縮的Trie樹的聯(lián)系是規(guī)則的五元組掩碼信息和MAGIC值。
3.根據(jù)權(quán)利要求1所述的一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:第三步中所述的采用一種可均衡多表間查找性能的表選擇策略下選擇五張規(guī)則表中的其中一張規(guī)則表來進行添加,策略實施的具體原則包括: A.僅在規(guī)則要求匹配的元組中選擇對應的規(guī)則表,如規(guī)則只要求匹配目的IP和目的端口,其他元組信息任意,則策略只會在目的IP和目的端口對應的規(guī)則表中選擇其中一個表來進行添加; B.在要求匹配的元組中選擇哪個規(guī)則表支持以下兩種策略:a,隨機指定;b,預先設定各元組掩碼的權(quán)重,根據(jù)掩碼長度和權(quán)重計算后得出最高權(quán)值的規(guī)則表,將規(guī)則添加到該表中。
4.根據(jù)權(quán)利要求1所述的一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:第三步中所述的添加規(guī)則的所有信息到規(guī)則表中的具體實施過程: (3.1)根據(jù)選定的元組必要時進行前綴擴展; (3.2)計算數(shù)組下標;計算前綴擴展后的后4比特代表的前綴中哪些包含在規(guī)則中,將對應的位在數(shù)組元素的字段-前綴位圖中置I ;對于源/目的IP掩碼長度大于24時,前綴位圖的字段存放IP掩碼后的后16比特數(shù)據(jù); (3.3)保存所有元組的前綴信息到五元組各自前綴偏移字段和前綴位圖字段中,分配一個隨機MAGIC值給該規(guī)則并保存到MAGIC字段中; (3.4)將元組掩碼后與MAGIC值組合,計算哈希鍵值,將規(guī)則對應的動作信息及解決哈希沖突的比較信息添加到輔助哈希表的哈希桶中。
5.根據(jù)權(quán)利要求1所述的一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:第五步中依次對五個規(guī)則表進行掩碼匹配查詢,并引入優(yōu)先級策略,具體設計原則如下: (5.1)由于5個規(guī)則表中的規(guī)則沒有重復,IP報文數(shù)據(jù)流進行匹配規(guī)則時需要確保不遺漏匹配所有可能的規(guī)則,因此需要依次查詢5個規(guī)則表,如果是多核處理器的環(huán)境,算法改為多核并行查找,提高查詢實時響應速度; (5.2)引入優(yōu)先級策略,解決找出最佳規(guī)則的問題;優(yōu)先級策略分為默認優(yōu)先級和用戶配置優(yōu)先級。
6.根據(jù)權(quán)利要求1所述的一種多域流規(guī)則匹配的實現(xiàn)方法,其特征在于:第七步中所述的哈??焖倭鞅碇С掷匣瘷C制,設計原則如下: (7.1) 一條IP報文數(shù)據(jù)流在經(jīng)過一段時間后停止了,哈??焖倭鞅碇袑捻椧呀?jīng)沒有用,如果不刪除,不僅占用空間還會增加哈希沖突概率,因此需要將其老化掉; (7.2)老化機制采用的策略:利用多核處理器提供的硬件定時器模塊定時向多核發(fā)送自定義超時數(shù)據(jù)的特性,并且支持大量的標示信息添加和通知;利用該特性,在添加哈希快速流表時,將標示該表項的信息添加到定時器中,并啟動定時,在定時時間到時,定時器會將該標示信息告訴多核處理器,多核處理器根據(jù)該信息找到表項進行刪除。
【文檔編號】H04L12/801GK104468381SQ201410717284
【公開日】2015年3月25日 申請日期:2014年12月1日 優(yōu)先權(quán)日:2014年12月1日
【發(fā)明者】云曉春, 陳訓遜, 吳震, 謝銘, 史欽鋒, 王東安, 常為領 申請人:國家計算機網(wǎng)絡與信息安全管理中心, 北京賽思信安技術有限公司