專利名稱:一種索引拆分布魯姆過濾器及其插入、刪除和查詢方法
技術領域:
本發(fā)明屬于高性能計算技術領域,具體是一種面向快速深度數(shù)據(jù)包檢測的索引拆分布魯姆過濾器及其插入、刪除和查詢方法。
背景技術:
近年來,網(wǎng)絡蠕蟲、分布式拒絕服務、間諜軟件和計算機病毒等新型網(wǎng)絡攻擊不斷涌現(xiàn),入侵計算機系統(tǒng),竊取敏感信息,以及阻斷網(wǎng)絡關鍵服務等,從而威脅和破壞互聯(lián)網(wǎng)絡基礎設施。網(wǎng)絡入侵檢測系統(tǒng)(Network IntrusionDetection System,NIDS)和網(wǎng)絡入侵阻止系統(tǒng)(Nework Intrusion PreventionSystem,NIPS)是網(wǎng)絡攻擊防范的關鍵方法之一,即實時監(jiān)測網(wǎng)絡流量,檢查網(wǎng)絡可疑行為,并向系統(tǒng)管理員告警。深度數(shù)據(jù)包檢測(Deep Packet Inspection,DPI)是NIDS/NIPS的核心部件。與防火墻不同,DPI不僅檢查數(shù)據(jù)包頭部信息,而且檢查數(shù)據(jù)包有效載荷(即數(shù)據(jù)包內(nèi)容)。DPI采用特征匹配方法,將每個數(shù)據(jù)包內(nèi)容與一組預定義的攻擊特征進行匹配,從而識別出可疑行為。為了定義可疑行為,DPI采用一組規(guī)則描述攻擊特征,即每條規(guī)則包括數(shù)據(jù)包類型、特征字符串、搜索起始位置、以及匹配后的響應操作等信息。因此,DPI是一種數(shù)據(jù)包內(nèi)容過濾技術,不僅應用于NIDS/NIPS,而且應用于Linux系統(tǒng)的應用層數(shù)據(jù)包分類、P2P流量識別以及基于上下文的流量計費等。
隨著網(wǎng)絡帶寬和流量的迅猛增長,DPI將面臨高性能挑戰(zhàn),即如何滿足數(shù)據(jù)包內(nèi)容過濾的時間需求和空間需求。首先,DPI是計算密集型操作,已成為NIDS/NIPS的性能瓶頸。通常,DPI應用于互聯(lián)網(wǎng)絡的數(shù)據(jù)路徑上(例如出口鏈路上),需要檢查海量數(shù)據(jù)包內(nèi)容的每個字節(jié),并與成千上萬條規(guī)則進行特征匹配。例如,在Snort中,DPI占約70%的總執(zhí)行時間和約80%的總操作指令。因此,為了適應高速網(wǎng)絡應用,DPI必須滿足數(shù)據(jù)包內(nèi)容過濾的線速處理時間需求,即其吞吐量為10~40Gbps。其次,基于硬件的DPI面臨存儲空間受限的挑戰(zhàn)。由于基于軟件的DPI難以適應高速數(shù)據(jù)包內(nèi)容過濾,研究者利用現(xiàn)代嵌入式存儲器技術,例如靜態(tài)隨機訪問存儲器(SRAM)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)和三重內(nèi)容可尋址存儲器(TCAM)等,提出了基于硬件的DPI,支持線速的數(shù)據(jù)包內(nèi)容過濾,從而提高DPI的吞吐量。但是,隨著攻擊特征規(guī)則日益龐大,高速率、小容量的嵌入式存儲器難以滿足基于硬件的DPI的存儲空間需求。例如,Snort 2.7包含7840條特征規(guī)則,其存儲空間大小約為50MB;而Xilinx Vertex-5FPGA最多包含288個片上存儲塊(每個存儲塊大小為36Kb),僅提供約10Mb的片上存儲空間,難以存儲這些特征規(guī)則。因此,如何在存儲空間受限的條件下設計一種快速DPI是基于硬件的數(shù)據(jù)包內(nèi)容過濾技術的關鍵問題。
為了提高DPI的吞吐量和可伸縮性,Artan等人提出了一種特里位圖內(nèi)容分析器(Trie Bitmap Content Analyzer,TriBiCa),即在特里樹的每一層中,每個節(jié)點采用一個哈希函數(shù)將特征規(guī)則集均勻劃分成大小相等的兩個子集。實質上,TriBiCa為特征規(guī)則集構建一個最小完美哈希函數(shù)當存儲特征規(guī)則x時,TriBiCa將x哈希映射到一個唯一的存儲位置,且不存在哈希沖突(Collision),即多個特征規(guī)則哈希映射到同一個存儲位置;當查詢數(shù)據(jù)包內(nèi)容y時,TriBiCa檢查y是否在特征規(guī)則集中,并指出與y匹配的候選特征規(guī)則的存儲位置。為了提高DPI的吞吐量,TriBiCa的特里樹部署在高速率、小容量的片上存儲器上,而特征規(guī)則集存儲在低速率、大容量的片外存儲器上;在特征匹配之前,TriBiCa過濾掉大量不相關的數(shù)據(jù)包,并提供候選特征規(guī)則的存儲位置,從而減少片外存儲器訪問次數(shù)和特征匹配操作次數(shù)。但是,TriBiCa存在最小完美哈希函數(shù)構建和更新開銷高以及假陽性存儲器訪問次數(shù)多等問題。首先,TriBica是計算密集型操作,即采用啟發(fā)式Blackjack算法和貪婪算法來構建一個最小完美哈希函數(shù)。當特征規(guī)則不斷增多時,這些啟發(fā)式算法將導致TriBiCa的最小完美哈希函數(shù)構建開銷高。其次,當插入或刪除特征規(guī)則時,TriBiCa離線地重新構建一個最小完美哈希函數(shù),難以適應動態(tài)變化的特征規(guī)則集,從而導致其最小完美哈希函數(shù)更新開銷高;最后,在TriBiCa中,特里樹的每一層采用同一個哈希函數(shù),導致其假陽性存儲器訪問次數(shù)多,即需要額外的片外存儲器訪問和特征匹配操作,從而限制了TriBiCa的吞吐量。
為了減少DPI的片外存儲器訪問次數(shù),Song等人提出了一種共享節(jié)點快速哈希表(Shared-node Fast Hash Table,SFHT),用于簡潔表示和快速查詢一個特征規(guī)則集。SFHT是由m個存儲桶構成,每個存儲桶包含一個片上計數(shù)器和一個片外共享節(jié)點鏈接表;當存儲特征規(guī)則x時,x哈希映射的k≥2個存儲桶指向特征規(guī)則的共享節(jié)點;當查詢數(shù)據(jù)包內(nèi)容y時,從y哈希映射的k個存儲桶中,選擇一個計數(shù)器值和桶索引值最小的存儲桶,并在該存儲桶的共享節(jié)點鏈接表中查找特征規(guī)則。與傳統(tǒng)的哈希表相比,SFHT可減少查詢操作的片外存儲器訪問次數(shù),從而提高哈希表的最壞情況性能。實質上,SFHT是由片上計數(shù)布魯姆過濾器(Counting Bloom Filter,CBF)和片外共享節(jié)點鏈接表組構成,即計數(shù)布魯姆過濾器是由m個片上計數(shù)器構成,共享節(jié)點鏈接表組是m個片外共享節(jié)點鏈接表構成。在SFHT中,片上CBF過濾掉大量不相關的數(shù)據(jù)包,并選擇長度最短的片外共享節(jié)點鏈接表來匹配特征,從而減少片外存儲器訪問次數(shù)和特征匹配操作次數(shù)。此外,由于片上CBF可支持插入和刪除操作,SFHT可適應動態(tài)變化的特征規(guī)則集。但是,SFHT存在哈希表更新開銷高和存儲空間大等問題。首先,在SFHT中,刪除操作的平均存儲器訪問次數(shù)為O(k),插入操作的平均存儲器訪問次數(shù)為O(k+nk2/m),其中n為特征規(guī)則條數(shù),m為存儲桶個數(shù),k為哈希函數(shù)個數(shù)。為了保證每個存儲桶的計數(shù)器值等于其指向的共享節(jié)點鏈接表長度,SFHT的插入操作需要遍歷k個存儲桶的共享節(jié)點鏈接表,甚至需要復制特征規(guī)則的多個共享節(jié)點,這將導致SFHT需要頻繁地訪問片外存儲器和額外的片外存儲空間。其次,在SFHT中,每個片上存儲桶不僅包含4位比特的計數(shù)器,而且包含
位比特的指針,這將導致SFHT占用更多的代價昂貴的小容量片上存儲空間,其中n為特征規(guī)則條數(shù)。
發(fā)明內(nèi)容
針對現(xiàn)有技術的缺陷,本發(fā)明目的旨在提出一種索引拆分布魯姆過濾器(Index-Split Bloom Filter,ISBF)及其插入、刪除和查詢方法,能夠降低特征規(guī)則的更新開銷,并提高深度數(shù)據(jù)包檢測DPI的吞吐量。
為實現(xiàn)上述發(fā)明目的,本發(fā)明采取的具體技術方案是,一種索引拆分布魯姆過濾器,由多組片上并行計數(shù)布魯姆過濾器CBF和一個片外特征規(guī)則集構成,且多組片上并行CBF產(chǎn)生與數(shù)據(jù)包內(nèi)容匹配的候選特征規(guī)則的片外索引值;所述片上并行CBF是指將一組n條特征規(guī)則的索引值被拆分成
組,每組包含索引值的b位比特;每組b位比特將特征規(guī)則集劃分成2b個子集,該每個子集即采用片上計數(shù)布魯姆過濾器CBF表示,從而為每組構建2b個片上并行CBF;當查詢數(shù)據(jù)包內(nèi)容y時,檢查y是否在所有B×2b個片上并行CBF中,每組片上并行CBF產(chǎn)生一個b位比特值,且將B個b位比特值合成候選特征規(guī)則的片外索引值。
本發(fā)明還提出一種索引拆分布魯姆過濾器的特征規(guī)則刪除方法,采用一個刪除位圖記錄片外特征規(guī)則的狀態(tài),即0表示未刪除狀態(tài),1表示刪除狀態(tài);當刪除特征規(guī)則x時,在刪除位圖中設置x對應的比特值為1,從每組片上并行CBF中刪除x,并從片外特征規(guī)則集中刪除x,且其他特征規(guī)則的片外索引值保持不變。
本發(fā)明還提出一種索引拆分布魯姆過濾器的特征規(guī)則插入方法,其特征是采用上述刪除方法的刪除位圖,用于記錄片外特征規(guī)則,刪除狀態(tài);當插入特征規(guī)則x時,隨機選擇刪除位圖中一個空缺位,即比特值為1,設置x的片外索引值為該空缺位的索引值,并在刪除位圖中設置該空缺位的比特值為0;統(tǒng)計刪除位圖中該空缺位之前且比特值為1的個數(shù),從而計算x的片外物理地址;根據(jù)x的片外物理地址,在片外存儲器的相應存儲位置上插入x,且其他特征規(guī)則的片外索引值保持不變;根據(jù)x的片外索引值,在每組片上并行CBF中插入x。
本發(fā)明還提出一種索引拆分布魯姆過濾器的數(shù)據(jù)包內(nèi)容查詢方法,當查詢數(shù)據(jù)包內(nèi)容x時,x哈希映射到片上并行計數(shù)布魯姆過濾器(CBF);檢查x是否在所有片上并行CBF中,且每組片上并行CBF分別輸出b位比特值;合成所述b位比特值產(chǎn)生與x匹配的候選特征規(guī)則的片外索引值;直接訪問與該片外索引值對應的特征規(guī)則,并與數(shù)據(jù)包內(nèi)容x進行特征匹配。
本發(fā)明的核心思想是給定一組n條特征規(guī)則,特征規(guī)則的索引值被拆分成
組,每組包含索引值的b位比特;每組b位比特將特征規(guī)則集劃分成2b個子集,并采用片上計數(shù)布魯姆過濾器(CBF)表示每個子集,從而為每組構建2b個并行CBF;當查詢數(shù)據(jù)包內(nèi)容y時,檢查y是否在所有B×2b個片上并行CBF中,每組并行CBF產(chǎn)生一個b位比特值,且將B個b位比特值合成候選特征規(guī)則的片外索引值。實質上,ISBF是由多組片上并行CBF和一個片外特征規(guī)則集構成,且多組片上并行CBF產(chǎn)生與數(shù)據(jù)包內(nèi)容匹配的候選特征規(guī)則的片外索引值。由于CBF會產(chǎn)生假陽性,ISBF直接訪問片外特征規(guī)則,并與數(shù)據(jù)包內(nèi)容進行特征匹配,從而消除其假陽性錯誤。
當刪除或插入特征規(guī)則時,索引拆分布魯姆過濾器(ISBF)需要調整其他特征規(guī)則的片外索引值,且更新片上并行計數(shù)布魯姆過濾器(CBF),從而導致其刪除或插入開銷高。為了降低ISBF的刪除開銷,本發(fā)明提出了一種刪除方法,稱為懶惰刪除(Lazy Delete)方法,其核心思想是采用一個刪除位圖記錄片外特征規(guī)則的狀態(tài),即0表示未刪除狀態(tài),1表示刪除狀態(tài);當刪除特征規(guī)則x時,在刪除位圖中設置x對應的比特值為1,從每組并行CBF中刪除x,并從片外特征規(guī)則集中刪除x,且其他特征規(guī)則的片外索引值保持不變。
為了減少ISBF的插入開銷,本發(fā)明同時也提出了一種插入方法,稱為空缺插入(Vacant Insert)方法,其核心思想是采用上述懶惰刪除方法的刪除位圖,用于記錄片外特征規(guī)則的刪除狀態(tài);當插入特征規(guī)則x時,隨機選擇刪除位圖中一個空缺位(即比特值為1),設置x的片外索引值為該空缺位的索引值,并在刪除位圖中設置該空缺位的比特值為0;統(tǒng)計刪除位圖中該空缺位之前且比特值為1的個數(shù),從而計算x的片外物理地址;根據(jù)x的片外物理地址,在片外存儲器的相應存儲位置上插入x,且其他特征規(guī)則的片外索引值保持不變;根據(jù)x的片外索引值,在每組并行CBF中插入x。
本發(fā)明所述索引拆分布魯姆過濾器及其特征規(guī)則的插入、刪除和查詢方法,能夠降低特征規(guī)則的更新開銷,并提高深度數(shù)據(jù)包檢測DPI的吞吐量。本發(fā)明可應用于IP路由查找、數(shù)據(jù)包分類、深度數(shù)據(jù)包檢測、網(wǎng)絡安全、網(wǎng)絡監(jiān)測、網(wǎng)絡管理、數(shù)據(jù)流處理、以及無線網(wǎng)絡數(shù)據(jù)處理等。
以下結合附圖和實施例對本發(fā)明的工作原理進行詳細描述
圖1為b-比特的索引拆分布魯姆過濾器示意圖;其中圖1(a)為1-比特的索引拆分布魯姆過濾器示意圖;其中圖1(b)為2-比特的索引拆分布魯姆過濾器示意圖; 圖2為索引拆分布魯姆過濾器的查詢操作示意圖; 圖3為特征規(guī)則的懶惰刪除前后對比示意圖;其中圖3(a)為特征規(guī)則e3刪除之前的示意圖;其中圖3(b)為特征規(guī)則e3刪除之后的示意圖; 圖4為索引拆分布魯姆過濾器的刪除操作流程圖; 圖5為特征規(guī)則的空缺插入前后對比示意圖;其中圖5(a)為特征規(guī)則e8插入之前的示意圖;其中圖5(a)為特征規(guī)則e8插入之后的示意圖; 圖6為索引拆分布魯姆過濾器的插入操作流程圖; 圖7為特里位圖內(nèi)容分析器與索引拆分布魯姆過濾器的比較示意圖; 圖8為索引拆分布魯姆過濾器的平均假陽性存儲器訪問次數(shù)示意圖;其中圖8(a)為特征規(guī)則條數(shù)為10000的平均假陽性存儲器訪問次數(shù)示意圖;其中圖8(b)為特征規(guī)則條數(shù)為1000~4000的平均假陽性存儲器訪問次數(shù)示意圖; 圖9為刪除、插入和查詢操作的平均存儲器訪問次數(shù)示意圖;其中圖9(a)為刪除操作的平均存儲器訪問次數(shù)示意圖;其中圖9(b)為插入操作的平均存儲器訪問次數(shù)示意圖;其中圖9(c)為查詢操作的平均存儲器訪問次數(shù)示意圖; 圖10為刪除、插入和查詢操作的平均處理時間示意圖;其中圖10(a)為刪除操作的平均處理時間示意圖;其中圖10(b)為插入操作的平均處理時間示意圖;其中圖10(c)為查詢操作的平均處理時間示意圖; 圖11為片上和片外存儲空間大小示意圖;其中圖11(a)為片上存儲空間大小示意圖;其中圖11(b)為片外存儲空間大小示意圖; 圖12為不同參數(shù)對假陽性存儲器訪問次數(shù)的影響示意圖;其中圖12(a)為特征規(guī)則條數(shù)的影響示意圖;其中圖12(b)為哈希函數(shù)個數(shù)的影響示意圖;其中圖12(c)為索引拆分的比特位數(shù)的影響示意圖;其中圖12(d)為存儲桶個數(shù)與特征規(guī)則條數(shù)的比值的影響示意圖; 圖13為不同參數(shù)對片上存儲空間大小的影響示意圖;其中圖13(a)為索引拆分的比特位數(shù)的影響示意圖;其中圖13(b)為存儲桶個數(shù)與特征規(guī)則條數(shù)的比值的影響示意圖; 圖14為Snort 2.7中查詢操作的平均存儲器訪問次數(shù)和平均處理時間示意圖;其中圖14(a)為平均存儲器訪問次數(shù)示意圖;其中圖14(b)為平均處理時間示意圖; 圖15為Snort 2.7中存儲空間大小和假陽性存儲器訪問次數(shù)示意圖;其中圖15(a)為片上存儲空間大小示意圖;其中圖15(b)為片外存儲空間大小示意圖;其中圖15(c)為假陽性存儲器訪問次數(shù)示意圖;
具體實施例方式 圖1是b-比特的索引拆分布魯姆過濾器ISBF,其中特征規(guī)則集為e0,e1,…,e15。如圖1(a)所示,在1-比特的ISBF中,特征規(guī)則的索引值被拆分成4組,每組包含索引值的1位比特;每組1位比特將16條特征規(guī)則劃分成2組,構建2個并行計數(shù)布魯姆過濾器(CBF),因此1-比特的ISBF共有8個片上并行CBF。如圖1(b)所示,在2-比特的ISBF中,特征規(guī)則的索引值被拆分成2組,每組包含索引值的2位比特;每組2位比特將16條特征規(guī)則劃分成4組,構建4個片上并行計數(shù)布魯姆過濾器CBF,因此2-比特的ISBF共有8個并行CBF。在b-比特的ISBF中,CBFij表示第i組j個并行計數(shù)布魯姆過濾器。在圖1(a)中,第0組2個并行計數(shù)布魯姆過濾器為CBF00和CBF01,其中CBF00表示特征規(guī)則子集e0,e1,e2,e3,e4,e5,e6,e7,CBF01表示特征規(guī)則子集e8,e9,e10,e11,e12,e13,e14,e15;當查詢數(shù)據(jù)包內(nèi)容y時,CBF00和CBF01分別產(chǎn)生1位比特值為y00和y01,即且對y00和y01進行邏輯或運算,從而輸出索引值的第0位比特值為y0;類似地,第1、2和3組并行CBF分別輸出索引值的第1、2和3位比特值為y1、y2和y3,從而合成與y匹配的候選特征規(guī)則的片外索引值為y0y1y2y3。在圖1(b)中,第0組4個并行布魯姆過濾器為CBF00、CBF01、CBF02和CBF03,其中CBF00表示特征規(guī)則子集e0,e1,e2,e3,CBF01表示特征規(guī)則子集e4,e5,e6,e7,CBF02表示特征規(guī)則子集e8,e9,e10,e11,CBF03表示特征規(guī)則子集e12,e13,e14,e15;當查詢數(shù)據(jù)包內(nèi)容y時,CBF00、CBF01、CBF02和CBF03分別產(chǎn)生2位比特值為y00、y01、y02和y03,即
且對y00、y01、y02和y03進行邏輯或運算,從而輸出索引值的第0和1位比特值為y0;類似地,第1組并行CBF輸出索引值的第2和3位比特值為y1,從而合成與y匹配的候選特征規(guī)則的片外索引值為y0y1。
圖2是索引拆分布魯姆過濾器的查詢操作的具體實施例,其中特征規(guī)則集為e0,e1,…,e15。在圖2中,特征規(guī)則條數(shù)為n=16,哈希函數(shù)個數(shù)為k=3,且索引拆分的比特位數(shù)為b=1。如圖2所示,當查詢數(shù)據(jù)包內(nèi)容e9時,e9哈希映射到并行計數(shù)布魯姆過濾器(CBF)的第3、16和21位;檢查e9是否在所有并行CBF中,即CBF00、CBF01、CBF10、CBF11、CBF20、CBF21、CBF30和CBF31,且CBF01、CBF10、CBF20和CBF31分別輸出1位比特值為1、0、0和1;合成這些1位比特值,產(chǎn)生與e9匹配的候選特征規(guī)則的片外索引值為(1001)2=9;直接訪問第9條特征規(guī)則,并與數(shù)據(jù)包內(nèi)容e9進行特征匹配。在b-比特的ISBF中,當數(shù)據(jù)包內(nèi)容y哈希映射的k個計數(shù)器值大于0時,CBFij輸出片外索引值的第i個b位比特值為j,否則,y不在特征規(guī)則集中。
圖3是特征規(guī)則的刪除過程,其中特征規(guī)則集為e0,e1,e2,e3,e4,e5,e6,e7。如圖3(a)所示,在特征規(guī)則e3刪除之前,每個片外特征規(guī)則包含一個索引值和一個物理地址,而片上刪除位圖與片外特征規(guī)則集相對應,且其初始化值為0,表示未刪除狀態(tài);如圖3(b)所示,在特征規(guī)則e3刪除之后,在刪除位圖中設置e3對應的第3位比特值為1,從片外存儲器上刪除e3,且片外特征規(guī)則e4、e5、e6和e7向前移動一個存儲位置,即自動調整物理地址,但是這些特征規(guī)則的索引值保持不變。
圖4是索引拆分布魯姆過濾器的刪除操作的具體實施應用。如圖4所示,當刪除特征規(guī)則e6時,e6的片外索引值為(0110)2=6,設置刪除位圖的第6位比特值為1,從CBF00、CBF11、CBF21和CBF30中刪除e6,并從片外特征規(guī)則集中刪除e6,且其他特征規(guī)則的片外索引值保持不變。在圖4中,當查詢數(shù)據(jù)包內(nèi)容e9時,第0組CBF01、第1組CBF10、第2組CBF20和第3組CBF31分別輸出1位比特值為1、0、0和1;合成這些1位比特值,產(chǎn)生與e0匹配的候選特征規(guī)則的片外索引值為(1001)2=9;檢查刪除位圖的第9位比特值是否為1,如果是,e9不在特征規(guī)則集中,否則,統(tǒng)計刪除位圖中第9位之前且比特值為1的個數(shù),即第9位之前共有1個比特值為1,從而計算與e9匹配的候選特征規(guī)則的片外物理地址為9-1=8;直接訪問第8條特征規(guī)則,并與數(shù)據(jù)包內(nèi)容e9進行特征匹配。
圖5是特征規(guī)則的空缺插入前后對比示意圖,其中特征規(guī)則集為e0,e1,e2,e3,e4,e5,e6,e7。如圖5(a)所示,在特征規(guī)則e8插入之前,第3條特征規(guī)則e3和第6條特征規(guī)則e6被刪除,且設置刪除位圖的第3和第6位比特值為1;如圖5(b)所示,在特征規(guī)則e8插入之后,隨機選擇刪除位圖中一個空缺位,即第3位,并設置e8的片外索引值為3,且設置刪除位圖的第3位比特值為0;統(tǒng)計刪除位圖中第3位之前且比特值為1的個數(shù),從而計算e8的片外物理地址為3;在片外特征規(guī)則集的第3個存儲位置上插入e8,且其他特征規(guī)則的片外索引值保持不變。
圖6是索引拆分布魯姆過濾器的插入操作的一個具體實施例。如圖6所示,當插入特征規(guī)則e16時,隨機選擇刪除位圖中一個空缺位,即第2位,設置e16的片外索引值為(0010)2=2,并設置刪除位圖的第2位比特值為0;統(tǒng)計刪除位圖中第2位之前且比特值為1的個數(shù),計算e16的片外物理地址為2,并在片外特征規(guī)則集的第2個存儲位置上插入e16,且其他特征規(guī)則的片外索引值保持不變;根據(jù)e16的片外索引值,在第0組CBF00、第1組CBF10、第2組CBF21和第3組CBF30中插入e16。
圖7是特里位圖內(nèi)容分析器與索引拆分布魯姆過濾器的比較。如圖7所示,TriBiCa第i層所有左孩子節(jié)點組成ISBF第i-1組第0個計數(shù)布魯姆過濾器CBFi-10,其所有右孩子節(jié)點組成ISBF第i-1組第1個計數(shù)布魯姆過濾器CBFi1。例如,TriBiCa第2層2個左孩子節(jié)點組成ISBF第1組第0個CBF,其2個右孩子節(jié)點組成ISBF第1組第1個CBF。因此,TriBiCa是分層查找,其片上查詢時間開銷為O(logn);與TriBiCa不同,ISBF是并行查找,其片上查詢時間開銷為O(1)。
下表是特里位圖內(nèi)容分析器(TriBiCa)、共享節(jié)點快速哈希表(SFHT)和索引拆分布魯姆過濾器(ISBF)的插入、刪除和查詢操作的平均存儲器訪問次數(shù) 當插入特征規(guī)則時,由于TriBiCa不支持在線插入,TriBiCa需要重構一顆層數(shù)為
的位圖特里樹,且每層訪問n條特征規(guī)則,其插入操作的平均存儲器訪問次數(shù)為O(n·logn);SFHT將哈希映射的k個存儲桶指向特征規(guī)則的共享節(jié)點,且需要復制至多k個共享節(jié)點和遍歷nk2/m個共享節(jié)點,其插入操作的平均存儲器訪問次數(shù)為O(nk2/m+k);ISBF在刪除位圖中為特征規(guī)則隨機選擇一個空缺位,在每組片上并行CBF中插入特征規(guī)則,且在片外特征規(guī)則集中插入1條特征規(guī)則,其插入操作的平均存儲器訪問次數(shù)為O(1)。當刪除特征規(guī)則時,由于TriBiCa不支持在線刪除,TriBiCa需要重構一顆位圖特里樹,其刪除操作的平均存儲器訪問次數(shù)為O(n·logn);SFHT需要從哈希映射的k個存儲桶中刪除特征規(guī)則,其刪除操作的平均存儲器訪問次數(shù)為O(k);ISBF在刪除位圖中設置特征規(guī)則的刪除狀態(tài),從每組片上并行CBF中刪除特征規(guī)則,且在片外特征規(guī)則集中刪除1條特征規(guī)則,其刪除操作的平均存儲器訪問次數(shù)為O(1)。ISBF的查詢操作的平均存儲器訪問次數(shù)與TriBiCa和SFHT相同,均為O(1)。因此,ISBF是一種快速查找的數(shù)據(jù)結構,其插入、刪除和查詢操作的平均存儲器訪問次數(shù)恒定為O(1),不僅降低特征規(guī)則的更新開銷,而且提高DPI的吞吐量。
在ISBF中,給定特征規(guī)則條數(shù)為n,每個并行CBF的哈希函數(shù)個數(shù)為k,每個并行CBF的存儲桶個數(shù)為mISBF=c1·n(其中c1≥1),則b-比特的ISBF包含
組并行CBF,其片上存儲空間大小為
公式(1)表明,當索引拆分的比特位數(shù)b越大時,ISBF的片上存儲空間大小MISBF越小。在TriBiCa中,位圖特里樹的層數(shù)為
每層數(shù)據(jù)位圖和下一節(jié)點位圖的存儲空間大小為mTriBiCa=2·c2·n,則TriBiCa的片上存儲空間大小為
在SFHT中,片上CBF的存儲桶個數(shù)為mSFHT=c3·n,每個存儲桶大小至少為
即包含一個4位比特的計數(shù)器和一個
位比特的指針,則SFHT的片上存儲空間大小為
因此,ISBF與TriBiCa的片上存儲空間大小比值為 ISBF與SFHT的片上存儲空間大小比值為
當c1=c2=c3時,則和表明與TriBiCa和SFHT相比,ISBF的片上存儲空間大小分別減少約2b倍和b倍。因此,ISBF是一種存儲高效的數(shù)據(jù)結構,可滿足DPI的存儲空間受限需求。
由于CBF會產(chǎn)生假陽性,ISBF的假陽性錯誤將產(chǎn)生多個候選規(guī)則的片外索引值,導致額外的片外存儲器訪問和特征匹配操作。ISBF的假陽性索引值個數(shù)是由每組并行CBF的假陽性比特值的乘積而組合成。例如,在2-比特的ISBF中,假設第0組并行CBF產(chǎn)生3個比特值(其中2個假陽性比特值),第1組并行CBF產(chǎn)生2個比特值(其中1個假陽性比特值),則片外索引值總數(shù)為3×2=6,其中假陽性索引值個數(shù)為6-1=5。假設每個并行CBF是相互獨立且其假陽性概率均為f,則ISBF的平均假陽性索引個數(shù)為
其中Xif表示當所有產(chǎn)生的比特值都是假陽性時,第i組并行CBF產(chǎn)生的假陽性比特值個數(shù),Cit表示當所有產(chǎn)生的比特值僅有一個真陰性時,第i組并行CBF產(chǎn)生的假陽性比特值個數(shù),且Xif和Xit服從二項式分布。當每個并行CBF的假陽性概率為f=(1-e-kn/m)k且存儲桶個數(shù)為m=c1·n時,則ISBF的平均假陽性索引值個數(shù)為
根據(jù)公式(1),當ISBF的片上存儲空間大小恒定為常數(shù)時,即α=c1/b為常數(shù),則ISBF的平均假陽性存儲器訪問次數(shù)為
公式(8)表明,給定特征規(guī)則條數(shù)為n和哈希函數(shù)個數(shù)為k,ISBF的平均假陽性存儲器訪問次數(shù)是關于索引拆分的比特位數(shù)為b的函數(shù)。
根據(jù)公式(1)和(8),給定特征規(guī)則條數(shù)為n和哈希函數(shù)個數(shù)為k,當ISBF的片上存儲空間大小恒定為常數(shù)時,本發(fā)明采用Matlab分析ISBF的平均假陽性存儲器訪問次數(shù)與索引拆分的比特位數(shù)b之間的關系。圖8是ISBF的平均假陽性存儲器訪問次數(shù),即當ISBF的片上存儲空間大小MISBF為常數(shù)時,其平均假陽性存儲器訪問次數(shù)FISBF隨著索引拆分的比特個數(shù)b的變化而變化,其中哈希函數(shù)個數(shù)為k=6。如圖8(a)所示,給定特征規(guī)則條數(shù)為n=10000且片上存儲空間大小MISBF恒定為280Kb、560Kb、840Kb和1120Kb,當索引拆分的比特個數(shù)為b=7時,ISBF的平均假陽性存儲器訪問次數(shù)的最小值分別為0.56、0.0132、1.4×10-3和2.79×10-4。如圖8(b)所示,給定特征規(guī)則條數(shù)為n=1000~4000且片上存儲空間大小MISBF為40Kb、80Kb、120Kb和160Kb,在特征規(guī)則條數(shù)n為1000的場景中,當索引拆分的比特個數(shù)為b=10時,ISBF的平均假陽性訪問次數(shù)的最小值為0.015;在特征規(guī)則條數(shù)為2000、3000和4000的場景中,當索引拆分的比特個數(shù)為b=6時,ISBF的平均假陽性存儲器訪問次數(shù)的最小值均為0.0389,其中每個并行CBF的存儲桶個數(shù)與特征規(guī)則條數(shù)的比值為c1=m/n=20。因此,根據(jù)上述理論分析,為了最小化平均假陽性存儲器訪問次數(shù),本發(fā)明的軟件模擬實驗選擇最優(yōu)化的ISBF參數(shù),即索引拆分的比特個數(shù)為b=6,并行CBF的存儲桶個數(shù)與特征規(guī)則條數(shù)的比值為c1=20。
圖9是刪除、插入和查詢操作的平均存儲器訪問次數(shù)。如圖9(a)所示,當刪除100~2000條特征規(guī)則時,TriBiCa的平均存儲器訪問次數(shù)為764~23932,SFHT的平均存儲器訪問次數(shù)為1113~23212,ISBF的平均存儲器訪問次數(shù)為200~4000。圖9(a)表明,與TriBiCa和SFHT相比,ISBF的刪除操作的平均存儲器訪問次數(shù)分別減少了3.8~6倍和5.5~5.8倍。如圖9(b)所示,當插入100~2000條特征規(guī)則時,TriBiCa的平均存儲器訪問次數(shù)為1629~49863,SFHT的平均存儲器訪問次數(shù)為877~18287,ISBF的平均存儲器訪問次數(shù)為200~4000。圖9(b)表明,與TriBiCa和SFHT相比,ISBF的插入操作的平均存儲器訪問次數(shù)分別減少了8.1~12.5倍和4.4~4.6倍。如圖9(c)所示,當存儲200~4000條特征規(guī)則且查詢10000條特征規(guī)則時,TriBiCa的平均存儲器訪問次數(shù)為840~4104,SFHT的平均存儲器訪問次數(shù)為293~4095,ISBF的平均存儲器訪問次數(shù)為205~4251。圖9(c)表明,當存儲的特征規(guī)則條數(shù)為200~2000時,與TriBiCa和SFHT相比,ISBF的查詢操作的平均存儲器訪問次數(shù)分別減少了25%~75.5%和0.4%~30%;當存儲的特征規(guī)則條數(shù)大于3000時,ISBF的查詢操作的平均存儲器訪問次數(shù)與TriBiCa和SFHT基本相同。
圖10是刪除、插入和查詢操作的平均處理時間。如圖10(a)所示,當刪除100~2000條特征規(guī)則時,TriBiCa的平均處理時間為32~7083ms,SFHT的平均處理時間為147~52102ms,ISBF的平均處理時間為15~684ms。圖10(a)表明,與TriBiCa和SFHT相比,ISBF的刪除操作的平均處理時間分別減少了2.2~10.4倍和10.1~76.2倍。如圖10(b)所示,當插入100~2000條特征規(guī)則時,TriBiCa的平均處理時間為93~26894ms,SFHT的平均處理時間為145~52129ms,ISBF的平均處理時間為14~585ms。圖10(b)表明,與TriBiCa和SFHT相比,ISBF的插入操作的平均處理時間分別減少了6.5~45.9倍和10.1~89倍。如圖10(c)所示,當存儲200~4000條特征規(guī)則且查詢10000條特征規(guī)則時,TriBiCa的平均處理時間為1608~4082ms,SFHT的平均處理時間為5508~148920ms,ISBF的平均處理時間為15~22ms。圖10(c)表明,與TriBiCa和SFHT相比,ISBF的查詢操作的平均處理時間分別減少了73.6~222.7倍和252.3~8126.8倍。
圖11是片上和片外存儲空間大小。如圖11(a)所示,當存儲200~4000條特征規(guī)則時,TriBiCa的片上存儲空間大小為40960~983040比特,SFHT的片上存儲空間大小為72000~1440000比特,ISBF的片上存儲空間大小為36680~654240比特。圖11(a)表明,與TriBiCa和SFHT相比,ISBF的片上存儲空間大小分別減少10.4%~41.9%和39.3%~54.6%。如圖11(b)所示,當存儲200~4000條特征規(guī)則時,ISBF與TriBiCa的片外存儲空間大小均為200~4000條特征規(guī)則,而SFHT的片外存儲空間大小為546~11447條特征規(guī)則。圖11(b)表明,ISBF的片外存儲空間大小與TriBiCa基本相同,且比SFHT減少了2.7~2.9倍。
圖12是不同參數(shù)對假陽性存儲器訪問次數(shù)的影響。如圖12(a)所示,當存儲的特征規(guī)則條數(shù)為200~1000條時,與TriBiCa和SFHT相比,ISBF的假陽性存儲器訪問次數(shù)分別減少了25~133倍和2~19倍;當存儲的特征規(guī)則條數(shù)為2000~3000時,ISBF的假陽性存儲器訪問次數(shù)與TriBiCa和SFHT基本相同;當存儲的特征規(guī)則條數(shù)為4000時,TriBiCa與SFHT的假陽性存儲器訪問次數(shù)均約為100,而ISBF的假陽性存儲器訪問次數(shù)快速增至251。圖12(a)表明,ISBF的假陽性存儲器訪問次數(shù)隨著特征規(guī)則條數(shù)的增加而增加。如圖12(b)所示,當哈希函數(shù)個數(shù)為k=6時,SFHT的假陽性存儲器訪問次數(shù)最小值為84,即當哈希函數(shù)個數(shù)為k=ln 2·(m/n),片上CBF的假陽性概率為最小值;當哈希函數(shù)個數(shù)k從4增至10時,ISBF的假陽性存儲器訪問次數(shù)從130減至16,即減少了約7倍。圖12(b)表明,ISBF的假陽性存儲器訪問次數(shù)隨著哈希函數(shù)個數(shù)的增加而減少。如圖12(c)所示,當索引拆分的比特位數(shù)b從2增至10時,ISBF的假陽性存儲器訪問次數(shù)從7增至1000,即增加了約143倍。圖12(c)表明,ISBF的假陽性存儲器訪問次數(shù)隨著索引拆分的比特位數(shù)的增加而增加。如圖12(b)所示,當存儲桶個數(shù)與特征規(guī)則條數(shù)的比值c從12增至28時,ISBF的假陽性存儲器訪問次數(shù)從908減至6,即減少了約151倍。圖12(b)表明,ISBF的假陽性存儲器訪問次數(shù)隨著存儲桶個數(shù)與特征規(guī)則條數(shù)的比值的增加而減少。因此,ISBF可調整參數(shù)k、b和c,從而減少其假陽性存儲器訪問次數(shù)。
圖13是不同參數(shù)對片上存儲空間大小的影響。如圖13(a)所示,當索引拆分的比特位數(shù)b為從2增至10時,ISBF的片上存儲空間大小從410600比特減至81000比特,即減少了約5倍。圖13(a)表明,ISBF的片上存儲空間隨著索引拆分的比特位數(shù)的增加而減少。如圖13(b)所示,當存儲桶個數(shù)與特征規(guī)則條數(shù)的比值c從12增至28時,ISBF的片上存儲空間大小從98536增至228584,即增加了約2倍。圖13(b)表明,ISBF的片上存儲空間大小隨著存儲桶個數(shù)與特征規(guī)則條數(shù)的比值的增加而增加。因此,圖12和圖13表明,ISBF是一種存儲空間和處理時間的折衷方法,即可調整參數(shù)k、b和c來平衡ISBF的片上存儲空間大小和假陽性存儲器訪問次數(shù)。
圖14是Snort 2.7中查詢操作的平均存儲器訪問次數(shù)和平均處理時間,其中Snort 2.7特征規(guī)則集劃分為4個子集,即Rule#1、Rule#2、Rule#3和Rule#4,且每個子集包含少量特征字符串相同但攻擊類型不同的特征規(guī)則。圖14(a)表明,與TriBiCa和SFHT相比,ISBF的查詢操作的平均存儲器訪問次數(shù)分別減少了8.4%~15.8%和1%~7.2%。圖14(b)表明,與TriBiCa和SFHT相比,ISBF的查詢操作的平均處理時間分別減少了1.7倍和11~13.6倍。
圖15是Snort 2.7中存儲空間大小和假陽性存儲器訪問次數(shù)。圖15(a)表明,與TriBiCa和SFHT相比,ISBF的片上存儲空間大小分別減少20.1%~42.4%和38.3%~54.8%。圖15(b)表明,ISBF的片外存儲空間大小與TriBiCa基本相同,且比SFHT減少了1.8~1.9倍。圖15(c)表明,與TriBiCa和SFHT相比,ISBF的假陽性存儲器訪問次數(shù)分別減少了4.5~9.1倍和1.2~4.5倍。
總之,索引拆分布魯姆過濾器是一種快速和存儲高效的數(shù)據(jù)包內(nèi)容過濾方法。實驗結果表明(1)在合成特征規(guī)則集的場景中,與TriBiCa和SFHT相比,ISBF在刪除操作的平均存儲器訪問次數(shù)上分別減少了3.8~6倍和5.5~5.8倍,在插入操作的平均存儲器訪問次數(shù)上分別減少了8.1~12.5倍和4.4~4.6倍,在查詢操作的平均存儲器訪問次數(shù)上與TriBiCa和SFHT基本相同;ISBF在刪除操作的平均處理時間上分別減少了2.2~10.4倍和10.1~76.2倍,在插入操作的平均處理時間上分別減少了6.5~45.9倍和10.1~89倍,在查詢操作的平均處理時間上分別減少了73.6~222.7倍和252.3~8126.8倍;ISBF在片上存儲空間大小上分別減少了10.4%~41.9%和39.3%~54.6%,在片外存儲空間大小上與TriBiCa基本相同,且比SFHT減少了2.7~2.9倍。(2)在實際特征規(guī)則集的場景中,與TriBiCa和SFHT相比,ISBF在查詢操作的平均存儲器訪問次數(shù)上分別減少了8.4%~15.8%和1%~7.2%,在查詢操作的平均處理時間上分別減少了1.7倍和11~13.6倍,在假陽性存儲器訪問次數(shù)分別減少了4.5~9.1倍和1.2~4.5倍;ISBF在片上存儲空間大小上分別減少20.1%~42.4%和38.3%~54.8%,在片外存儲空間大小上與TriBiCa基本相同,且比SFHT減少了1.8~1.9倍。
權利要求
1、一種索引拆分布魯姆過濾器,其特征是由多組片上并行計數(shù)布魯姆過濾器(CBF)和一個片外特征規(guī)則集構成,且多組片上并行CBF產(chǎn)生與數(shù)據(jù)包內(nèi)容匹配的候選特征規(guī)則的片外索引值;所述片上并行CBF是指將一組n條特征規(guī)則的索引值被拆分成
組,每組包含索引值的b位比特;每組b位比特將特征規(guī)則集劃分成2b個子集,該每個子集采用片上計數(shù)布魯姆過濾器CBF表示,從而為每組構建2b個片上并行CBF;當查詢數(shù)據(jù)包內(nèi)容y時,檢查y是否在所有B×2b個片上并行CBF中,每組片上并行CBF產(chǎn)生一個b位比特值,且將B個b位比特值合成候選特征規(guī)則的片外索引值。
2、一種權利要求1所述索引拆分布魯姆過濾器的特征規(guī)則刪除方法,其特征是采用一個刪除位圖記錄片外特征規(guī)則的狀態(tài),即0表示未刪除狀態(tài),1表示刪除狀態(tài);當刪除特征規(guī)則x時,在刪除位圖中設置x對應的比特值為1,從每組片上并行CBF中刪除x,并從片外特征規(guī)則集中刪除x,且其他特征規(guī)則的片外索引值保持不變。
3、一種權利要求1所述索引拆分布魯姆過濾器的特征規(guī)則插入方法,其特征是采用一個刪除位圖用于記錄片外特征規(guī)則,刪除狀態(tài);當插入特征規(guī)則x時,隨機選擇刪除位圖中一個空缺位,即比特值為1,設置x的片外索引值為該空缺位的索引值,并在刪除位圖中設置該空缺位的比特值為0;統(tǒng)計刪除位圖中該空缺位之前且比特值為1的個數(shù),從而計算x的片外物理地址;根據(jù)x的片外物理地址,在片外存儲器的相應存儲位置上插入x,且其他特征規(guī)則的片外索引值保持不變;根據(jù)x的片外索引值,在每組片上并行CBF中插入x。
4、一種權利要求1所述索引拆分布魯姆過濾器的數(shù)據(jù)包內(nèi)容查詢方法,其特征是當查詢數(shù)據(jù)包內(nèi)容x時,x哈希映射到片上并行計數(shù)布魯姆過濾器CBF;檢查x是否在所有片上并行CBF中,且每組片上并行CBF分別輸出b位比特值;合成所述b位比特值產(chǎn)生與x匹配的候選特征規(guī)則的片外索引值;直接訪問與該片外索引值對應的特征規(guī)則,并與數(shù)據(jù)包內(nèi)容x進行特征匹配。
全文摘要
本發(fā)明公開了一種索引拆分布魯姆過濾器及其插入、刪除和查詢方法,將特征規(guī)則的索引值拆分成多組比特,每組比特采用片上并行CBF表示多個特征規(guī)則子集;查詢數(shù)據(jù)包內(nèi)容時,檢查是否在每組并行CBF中,并產(chǎn)生候選特征規(guī)則的片外索引值;刪除或插入特征規(guī)則時,提出了懶惰刪除和空缺插入方法,即利用刪除位圖記錄片外特征規(guī)則的狀態(tài),且不需要調整其他特征規(guī)則的片外索引值,從而實現(xiàn)低開銷的特征規(guī)則更新操作。ISBF是一種快速和存儲高效的數(shù)據(jù)包內(nèi)容過濾方法,插入、刪除和查詢操作的平均存儲器訪問次數(shù)均為O(k)。本發(fā)明應用于IP路由查找、數(shù)據(jù)包分類、深度數(shù)據(jù)包檢測、網(wǎng)絡安全、網(wǎng)絡監(jiān)測、網(wǎng)絡管理、數(shù)據(jù)流處理、以及無線網(wǎng)絡數(shù)據(jù)處理等。
文檔編號H04L29/06GK101577721SQ200910138248
公開日2009年11月11日 申請日期2009年5月8日 優(yōu)先權日2008年12月5日
發(fā)明者張大方, 昆 黃 申請人:湖南大學