專(zhuān)利名稱(chēng):基于網(wǎng)絡(luò)處理器的高速多維報(bào)文分類(lèi)算法的設(shè)計(jì)和實(shí)現(xiàn)的制作方法
技術(shù)領(lǐng)域:
報(bào)文分類(lèi)領(lǐng)域。
背景技術(shù):
報(bào)文分類(lèi)(packet classification)指利用分類(lèi)器對(duì)到達(dá)的分組查找出符合的規(guī)則,以辨識(shí)其所屬的流,它是網(wǎng)絡(luò)系統(tǒng)中的一個(gè)重要而基本的功能。許多網(wǎng)絡(luò)關(guān)鍵技術(shù),如防火墻、虛擬專(zhuān)用網(wǎng)(VPN)、網(wǎng)絡(luò)地址轉(zhuǎn)換、服務(wù)質(zhì)量(QoS)、網(wǎng)絡(luò)入侵檢測(cè)監(jiān)控、擁塞控制、傳輸測(cè)量與記賬,以及未來(lái)的IPv6流標(biāo)識(shí)、異步傳輸模式(ATM)信元交換等都涉及到報(bào)文分類(lèi)。對(duì)網(wǎng)絡(luò)上的一般應(yīng)用而言,針對(duì)四個(gè)或更多字段進(jìn)行分類(lèi)的應(yīng)用已經(jīng)越來(lái)越多了。這就需要多維報(bào)文分類(lèi)算法。
另一方面,在實(shí)際的網(wǎng)絡(luò)應(yīng)用中,到達(dá)分組的分類(lèi)字段是有規(guī)律的,或者是有某種特定的結(jié)構(gòu),又或者是有過(guò)多的冗余,而一個(gè)實(shí)際可用的報(bào)文分類(lèi)算法應(yīng)該充分利用這些特點(diǎn)。這就是啟發(fā)式報(bào)文分類(lèi)算法的出發(fā)點(diǎn)。
理想的報(bào)文分類(lèi)算法是具有極低的時(shí)間開(kāi)銷(xiāo)和空間開(kāi)銷(xiāo),在最壞情況下也有較好的性能,并具有良好的可擴(kuò)展性和靈活性,同時(shí)還具有更新速度快和預(yù)處理時(shí)間低的特點(diǎn)。目前的啟發(fā)式分類(lèi)算法有RFC算法、HiCut、HyperCut算法等。它們的優(yōu)點(diǎn)是適合現(xiàn)實(shí)生活中的報(bào)文分類(lèi),查找速度快,可用于多維分類(lèi),但是缺點(diǎn)也很明顯,預(yù)處理時(shí)間長(zhǎng),空間復(fù)雜度差等。
發(fā)明內(nèi)容
設(shè)計(jì)這個(gè)分類(lèi)算法的主要目標(biāo)是設(shè)計(jì)一個(gè)適應(yīng)網(wǎng)絡(luò)處理器的時(shí)間復(fù)雜度低,空間復(fù)雜度可以接受,并具有相當(dāng)可擴(kuò)展性和靈活性的可并行執(zhí)行的報(bào)文分類(lèi)算法。
網(wǎng)絡(luò)處理器是介于通用處理器和專(zhuān)用處理器(ASIC)芯片之間的一種可編程芯片,網(wǎng)絡(luò)處理器采用了如下技術(shù)以適應(yīng)網(wǎng)絡(luò)數(shù)據(jù)處理(1)多內(nèi)核結(jié)構(gòu),使用多線程或者并行處理兩種機(jī)制組織;(2)優(yōu)化的內(nèi)存管理和DMA單元;(3)優(yōu)化的運(yùn)算邏輯單元ALU;(4)網(wǎng)絡(luò)專(zhuān)用的協(xié)處理器(co-processors);(5)硬件多線程技術(shù)。
INTEL IXP 2400是Intel公司在一款高性能的網(wǎng)絡(luò)處理器,我們基于它來(lái)實(shí)現(xiàn)這個(gè)新的報(bào)文分類(lèi)算法。其邏輯結(jié)構(gòu)如圖1。
我們這個(gè)多維快速報(bào)文分類(lèi)算法的主要設(shè)計(jì)思想有如下幾點(diǎn)●利用冗余表示任意長(zhǎng)度的前綴,創(chuàng)建非對(duì)稱(chēng)多杈Trie樹(shù)來(lái)降低搜索的復(fù)雜度。
●通過(guò)壓縮非對(duì)稱(chēng)多杈Trie樹(shù)來(lái)消除回溯,進(jìn)一步提高搜索速度和減少存儲(chǔ)空間。
●靈活設(shè)計(jì)非對(duì)稱(chēng)多杈Trie樹(shù)的每一層的寬度,達(dá)到非對(duì)稱(chēng)Trie樹(shù)的層數(shù)(時(shí)間復(fù)雜度)與存儲(chǔ)空間(空間復(fù)雜度)的折衷。
●利用ABV的思想把算法擴(kuò)展成可并行執(zhí)行的快速多維報(bào)文分類(lèi)算法。
為了便于后面的論述,我們先定義一些將要用到的符號(hào)術(shù)語(yǔ)。
Address(地址)地址D是一個(gè)長(zhǎng)度為W的位串,如10.1.1.1等。
Field(字段/域)Field字段/域Fi是一個(gè)連續(xù)的位的集合,它可以是報(bào)文的一部分也可以是與報(bào)文相關(guān)的信息,例如,源IP、目的IP、時(shí)間戳或者進(jìn)入報(bào)文的端口號(hào)。
Prefix(前綴)前綴P是一個(gè)長(zhǎng)度為0...W的位串,我們用符號(hào)length(P)表示一個(gè)前綴的位的個(gè)數(shù)。
Rule Update(規(guī)則更新)對(duì)分類(lèi)器C進(jìn)行規(guī)則的增加或刪除等所做的更新操作。
Single dimensional classification(一維分類(lèi))假定一個(gè)有N個(gè)規(guī)則的分類(lèi)器,每一個(gè)規(guī)則只有對(duì)一個(gè)域(字段)的要求,一維分類(lèi)是指對(duì)每個(gè)報(bào)文,在分類(lèi)器C中查找其匹配的規(guī)則。
Multi-dimensional classification(多維分類(lèi))多維分類(lèi)的含義與一維分類(lèi)的含義相似,只不過(guò)每個(gè)規(guī)則中可以包含兩個(gè)或多個(gè)域(字段)。
CIDR(無(wú)類(lèi)別域間路由)是一種比IP地址方法更加靈活的分配和指定Internet地址的方法,這樣一來(lái),可用的Internet地址數(shù)目就大大增加了。
BV(Bit Vector,比特向量)算法BV算法是指,若規(guī)則一共有m個(gè),用一個(gè)m位的二進(jìn)制數(shù)(向量),當(dāng)某條報(bào)文符合第n條規(guī)則時(shí),將第n位標(biāo)記為1,否則為0。
ABV(Aggregated Bit Vector)算法
ABV算法與BV算法的思想基本一致,但有所改進(jìn)。我們的這個(gè)算法使用ABV進(jìn)行搜索,但舉例時(shí)為簡(jiǎn)單起見(jiàn),在不影響理解的前提下使用BV算法。
分段分段指的是把規(guī)則的每個(gè)域按照約定的方法分割成若干段,例如對(duì)于源IP域一共32比特,我們可以把它分成8/8/8/8四段,也可以把它分成16/8/8三段,具體的分段方法可依據(jù)規(guī)則庫(kù)中的前綴分布情況來(lái)選擇。
線性查找前綴節(jié)點(diǎn)如果某個(gè)節(jié)點(diǎn)沒(méi)有規(guī)則,那么它所匹配的規(guī)則一定在它的前綴節(jié)點(diǎn)中,線性查找某個(gè)節(jié)點(diǎn)的前綴節(jié)點(diǎn)即按順序查找該節(jié)點(diǎn)的每一個(gè)前綴,直到找到規(guī)則為止。例如,101*節(jié)點(diǎn)沒(méi)有規(guī)則,那么我們查找的順序?yàn)?0*,1*,*。
本發(fā)明把AM-Trie和ABV算法相結(jié)合,以達(dá)到擴(kuò)展性好且又能并行執(zhí)行的目標(biāo)。
AM-Trie的整體流程見(jiàn)圖2。
Trie樹(shù)查找的時(shí)間復(fù)雜度與它的層數(shù)成正比,我們的目的是將Trie樹(shù)設(shè)計(jì)為2m叉Trie樹(shù)來(lái)減少Trie樹(shù)的層數(shù),從而加快查找的速度。
我們的第一個(gè)思想是利用冗余來(lái)表示任意長(zhǎng)度的前綴。
考慮一個(gè)k-bit長(zhǎng)的串,所有可能的前綴是 共有2k+1-1種,將他們順序編號(hào)為1,2,……,2k+1-1,它們可以用一個(gè)(k+1)-bit的串來(lái)表示。換算關(guān)系為如果一個(gè)前綴為P*,P的長(zhǎng)度為p-bit,那么它對(duì)應(yīng)的序號(hào)為2p+P。例如,*是第1號(hào)前綴,1111*是第31號(hào)前綴。利用這種“冗余”的表示方式,我們可以用一個(gè)k+1比特的串來(lái)表示所有k比特串的前綴。接下來(lái)就可以利用這樣的表示方式來(lái)構(gòu)造合適的多叉Trie樹(shù)。這種利用冗余表示前綴的Trie樹(shù)就是非對(duì)稱(chēng)多杈Trie樹(shù)(Asymmetrical Multi-bit Trie,簡(jiǎn)記為AM-Trie)。
AM-Trie樹(shù)中的每個(gè)節(jié)點(diǎn)包含兩個(gè)指針——pNext和pRule,分別指向Trie樹(shù)的子節(jié)點(diǎn)的起始位置和該節(jié)點(diǎn)所對(duì)應(yīng)的規(guī)則,如圖3所示。如果該節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)或者沒(méi)有在規(guī)則表中直接對(duì)應(yīng)的規(guī)則,那么對(duì)應(yīng)的指針置為空指針。
先介紹一下AM-Trie樹(shù)的添加操作,AM-Trie的創(chuàng)建操作就是從零開(kāi)始,逐一添加的過(guò)程。
添加某個(gè)前綴規(guī)則到AM-Trie樹(shù)時(shí),先把這個(gè)前綴按既定的方案分段(見(jiàn)術(shù)語(yǔ)表),然后把各段依次加入到AM-Trie樹(shù)中去。AM-Trie樹(shù)的添加操作流程圖見(jiàn)圖4。
AM-Trie添加偽代碼見(jiàn)表1
表1 AM-Trie添加偽代碼再介紹如何由一個(gè)前綴表創(chuàng)建AM-Trie。
對(duì)于某一個(gè)字段的前綴我們可以把它切割成任意的可變長(zhǎng)(variable stride)的幾段來(lái)構(gòu)造AM-Trie樹(shù)。創(chuàng)建某個(gè)前綴表的AM-Trie樹(shù)的時(shí)候,把表中的每一個(gè)前綴都按既定的方案分段,然后不斷調(diào)用添加規(guī)則的函數(shù)Add( )依次把每一條規(guī)則加入到AM-Trie樹(shù)中去。創(chuàng)建AM-Trie的流程圖如圖5所示。
AM-Trie創(chuàng)建偽代碼如下表2
表2創(chuàng)建AM-Trie的偽代碼AM-Trie的搜索與普通樹(shù)的搜索類(lèi)似,只是在達(dá)到葉結(jié)點(diǎn)后如果還沒(méi)有查到對(duì)應(yīng)的規(guī)則的話,要回溯繼續(xù)查找它的前綴節(jié)點(diǎn)。AM-Trie搜索的流程圖如圖6所示。算法的輸入是AM-Trie樹(shù)的根節(jié)點(diǎn)和到達(dá)分組的分類(lèi)字段信息,輸出是該分組所匹配的最長(zhǎng)前綴。
AM-Trie搜索偽代碼見(jiàn)表3。
表3 AM-Trie搜索偽代碼AM-Trie的搜索效率并不是很高,有時(shí)候甚至需要回溯,這個(gè)問(wèn)題將在“AM-Trie數(shù)的壓縮和加速”中得以解決。
AM-Trie樹(shù)支持增量更新,它的增加或者刪除某個(gè)前綴規(guī)則的操作十分簡(jiǎn)單。AM-Trie樹(shù)的添加操作作為AM-Trie的基本操作已經(jīng)在5.3.2“AM-Trie的添加和創(chuàng)建”部分介紹過(guò)了。
要在AM-Trie中刪除一條前綴規(guī)則也很簡(jiǎn)單,先通過(guò)搜索操作定位到該規(guī)則的節(jié)點(diǎn),然后從該節(jié)點(diǎn)中刪除pRule指針即可,如圖7。
下面是刪除節(jié)點(diǎn)的偽代碼。
AM-Trie刪除節(jié)點(diǎn)的偽代碼見(jiàn)表4。
表4 AM-Trie刪除節(jié)點(diǎn)偽代碼在AM-Trie樹(shù)的搜索一節(jié)中提到,當(dāng)搜索到某一葉結(jié)點(diǎn)后,如果該節(jié)點(diǎn)的不包含直接對(duì)應(yīng)的規(guī)則,那么就要繼續(xù)搜索它的前綴節(jié)點(diǎn)。這勢(shì)必造成搜索速度的下降。仔細(xì)研究之后我們發(fā)現(xiàn),規(guī)則表確定之后,任何前綴所對(duì)應(yīng)的包含規(guī)則的最長(zhǎng)前綴也就確定了。因此,我們可以在預(yù)處理的時(shí)候就把每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的最長(zhǎng)前綴規(guī)則分配到節(jié)點(diǎn)上。這樣一來(lái),搜索到葉結(jié)點(diǎn)時(shí)就必然可以查到規(guī)則,而不必再往前查找它的前綴了。同時(shí),AM-Trie樹(shù)的左邊一半只包含前綴的節(jié)點(diǎn)在搜索的時(shí)候肯定不會(huì)被訪問(wèn)到,因此可以刪除掉,這樣就減少了一半的存儲(chǔ)空間占用。AM-Trie樹(shù)的壓縮算法流程圖見(jiàn)圖8。
壓縮后的AM-Trie存儲(chǔ)空間只有原來(lái)的一半,最壞情況下搜索次數(shù)等于樹(shù)的高度。
AM-Trie樹(shù)的壓縮算法偽代碼見(jiàn)表5
表5 AM-Trie的壓縮偽代碼在實(shí)際的報(bào)文分類(lèi)器中,前綴的長(zhǎng)度分布可能很不均勻。一個(gè)最粗淺的想法就是盡量選取出現(xiàn)概率大的前綴長(zhǎng)度作為分段處,這樣可以減少存儲(chǔ)空間的開(kāi)銷(xiāo)。
本發(fā)明的特征在于它是在Intel公司產(chǎn)品即Intel IXP 2400網(wǎng)絡(luò)處理器上實(shí)現(xiàn)的所述分類(lèi)方法,依次含有以下步驟步驟1初始化在所述IXP 2400中按照下述方式設(shè)置下述各功能模塊的代碼AM-Trie樹(shù)的數(shù)據(jù)設(shè)在所述IXP 2400 SRAM中;AM-Trie樹(shù)的創(chuàng)建模塊設(shè)在IXP 2400 xScale中,即核心控制設(shè)備中;
AM-Trie樹(shù)的包括節(jié)點(diǎn)添加和刪除在內(nèi)的實(shí)現(xiàn)模塊設(shè)在所述IXP 2400的xScale中;AM-Trie樹(shù)的壓縮和加速模塊設(shè)在所述IXP 2400的xScale中;AM-Trie樹(shù)的搜索模塊設(shè)在所述IXP 2400的4個(gè)MicroEngine即微引擎中;數(shù)據(jù)包的接收和發(fā)送模塊設(shè)在所述IXP 2400的2個(gè)MicroEngine即微引擎中;在所述數(shù)據(jù)包中,已利用冗余來(lái)表示任意長(zhǎng)度的前綴,即對(duì)于k位長(zhǎng)的串,用k+1比特的串來(lái)表示所有k比特串的前綴。
步驟2為d維報(bào)文中的每一個(gè)維度都建立一個(gè)AM-Trie樹(shù),依次含有以下步驟步驟2-1根據(jù)設(shè)定的規(guī)則條數(shù)、規(guī)則的優(yōu)先級(jí),將分類(lèi)規(guī)則表重新排序,重新編號(hào);步驟2-2AM-Trie樹(shù)的創(chuàng)建根據(jù)步驟2-1得到的規(guī)則表,選擇出現(xiàn)幾率大的前綴長(zhǎng)度作為分段處,對(duì)規(guī)則表中的前綴進(jìn)行分類(lèi),根據(jù)分類(lèi)得到的段數(shù)即為AM-Trie樹(shù)的層數(shù),再根據(jù)每一層對(duì)應(yīng)的前綴個(gè)數(shù),得到每一層中的節(jié)點(diǎn)數(shù),即結(jié)點(diǎn)數(shù);再根據(jù)前綴的長(zhǎng)度由短到長(zhǎng)逐層排列,得到根結(jié)點(diǎn)和各層的葉結(jié)點(diǎn);步驟2-3每個(gè)結(jié)點(diǎn)具有兩個(gè)指針,pRule和pNext,分別指向AM-Trie樹(shù)中各結(jié)點(diǎn)對(duì)應(yīng)的規(guī)則和下一結(jié)點(diǎn)的起始位置。接著,根據(jù)聚斂位置向量算法即ABV算法,用一個(gè)n位的二進(jìn)制數(shù)作為位向量,當(dāng)報(bào)文滿足第k(0<k<n+1)條規(guī)則時(shí),將第k位置1,否則置0,形成聚斂位置向量(ABV),并把它存放在對(duì)應(yīng)的結(jié)點(diǎn)中去;步驟2-4AM-Trie樹(shù)的壓縮對(duì)每一層,從右向左,把每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的最長(zhǎng)前綴規(guī)則分配到節(jié)點(diǎn)上。
步驟3根據(jù)步驟2得到d維分類(lèi)表對(duì)應(yīng)的d棵AM-Trie樹(shù);步驟4利用AM-Trie樹(shù)進(jìn)行報(bào)文分類(lèi)當(dāng)一個(gè)報(bào)文到達(dá)后,從這d棵AM-Trie樹(shù)并行地進(jìn)行搜索,把匹配到的d個(gè)結(jié)點(diǎn)的ABV值做邏輯“與”操作,得到最終的搜索結(jié)果ABV向量。若其第k位值為1,則表示它符合第k條規(guī)則。
由于我們無(wú)法直接得到大規(guī)模的實(shí)際防火墻配置(出于安全因素,這些一般不公開(kāi)),但是BGP表在很大程度上可以體現(xiàn)網(wǎng)絡(luò)的路由狀況,而這也是防火墻規(guī)則的參考依據(jù)。我們的數(shù)據(jù)來(lái)自于Merit Network Routing Assets Database(http//www.radb.net)的59351個(gè)bgp表項(xiàng)的統(tǒng)計(jì)結(jié)果。
圖9是前綴長(zhǎng)度的分布圖。
當(dāng)規(guī)則條數(shù)為4000條時(shí),在Enp2611實(shí)驗(yàn)臺(tái)上,使用IXP2400處理器的仿真實(shí)驗(yàn)結(jié)果是2571Mbps。由于包長(zhǎng)為64字節(jié),故每秒約處理5*106個(gè)包。
圖1Intel IXP 2400網(wǎng)絡(luò)處理器結(jié)構(gòu)2AM-Trie整體流程3AM-Trie每個(gè)結(jié)點(diǎn)的結(jié)構(gòu)4AM-Trie添加流程5創(chuàng)建AM-Trie的流程6AM-Trie搜索流程7AM-Trie刪除節(jié)點(diǎn)流程8AM-Trie壓縮流程9前綴分布10本發(fā)明所述方法的詳細(xì)流程11AM-Trie舉例a源IP表的AM-Trie樹(shù);b目的IP表的AM-Trie樹(shù)。
具體實(shí)現(xiàn)方式本發(fā)明在Intel IXP 2400上的硬件實(shí)現(xiàn)見(jiàn)下表6
表6 算法在IXP 2400上的硬件實(shí)現(xiàn)為了能夠支持多維報(bào)文分類(lèi),我們把AM-Trie與ABV算法的思想結(jié)合起來(lái)。ABV算法的優(yōu)勢(shì)在于它的可擴(kuò)展性好,而且算法可以并行執(zhí)行。
對(duì)于一個(gè)d維的報(bào)文分類(lèi)問(wèn)題,AM-Trie結(jié)合ABV的多維分類(lèi)算法將對(duì)分類(lèi)字段的每一個(gè)維度都建立一個(gè)AM-Trie樹(shù),AM-Trie樹(shù)的每一個(gè)葉結(jié)點(diǎn)存儲(chǔ)的是利用ABV算法計(jì)算出來(lái)的位向量和聚斂位向量。各分類(lèi)字段的AM-Trie可以并行的獨(dú)立查找,各自的出結(jié)果后把搜索到的位向量匯總,進(jìn)行AND操作得到一個(gè)最終的位向量。最后根據(jù)這個(gè)位向量得出匹配所有字段的最終結(jié)果。
AM-Trie多維分類(lèi)的優(yōu)點(diǎn)是算法可以并行執(zhí)行,同時(shí)又具有很好的可擴(kuò)展性,可支持超大的分類(lèi)規(guī)則庫(kù),而且規(guī)則數(shù)越多,算法的優(yōu)勢(shì)越明顯。帶來(lái)的代價(jià)是不再支持增量更新。由于ABV算法本身不支持增量更新(加入一條規(guī)則則整個(gè)BV都要改動(dòng)),因此這個(gè)多維分類(lèi)算法也不支持增量更新,多數(shù)分類(lèi)應(yīng)用的規(guī)則庫(kù)更新頻率要遠(yuǎn)遠(yuǎn)小于分類(lèi)執(zhí)行的頻率,查找與更新的次數(shù)比大約為107,因此該算法還是能適應(yīng)大多數(shù)應(yīng)用的需求。
下面舉例說(shuō)明設(shè)有二維分類(lèi)的8條規(guī)則,優(yōu)先級(jí)從1到8逐漸降低,設(shè)定Am-Trie(源ip/目的ip)分三層,長(zhǎng)度分別是16、8、8bits。
按照源IP的前綴由長(zhǎng)到短,值由小到大的順序,調(diào)整規(guī)則以后,再將規(guī)則重新編號(hào),就變成了
源IP和目的IP的AM-Trie分別是(其中黑點(diǎn)表示節(jié)點(diǎn),方框里面的是BV值——BV值的計(jì)算方法是由于規(guī)則一共有8個(gè),因此用一個(gè)八位的數(shù),當(dāng)符合第n條規(guī)則的一個(gè)域時(shí),將該位置1,否則置0),見(jiàn)圖11。
如果來(lái)了一個(gè)分組源IP=10.1.2.2,目的IP=11.1.2.2,則從源IP的Am-Trie樹(shù)中查到匹配的節(jié)點(diǎn)的BV值=01000110,目的IP域的Am-Trie樹(shù)中查到匹配的節(jié)點(diǎn)的BV值=10001011。按位與之后(按位與的含義是,只有第n位既符合源IP域的規(guī)則,又符合目的IP域的規(guī)則,才表明匹配第n條規(guī)則),結(jié)果是00000010,即匹配調(diào)整順序之后的第二條規(guī)則,也就是原編號(hào)的第5條規(guī)則。
權(quán)利要求
1.基于網(wǎng)絡(luò)處理器的高速多維報(bào)文分類(lèi)方法,其特征在于,它是在Intel公司產(chǎn)品即Intel IXP 2400網(wǎng)絡(luò)處理器上實(shí)現(xiàn)的所述分類(lèi)方法,依次含有以下步驟步驟1初始化在所述IXP 2400中按照下述方式設(shè)置下述各功能模塊的代碼AM-Trie樹(shù)的數(shù)據(jù)設(shè)在所述IXP 2400 SRAM中;AM Trie樹(shù)的創(chuàng)建模塊設(shè)在IXP 2400 xScale中,即核心控制設(shè)備中;AM-Trie樹(shù)的包括節(jié)點(diǎn)添加和刪除在內(nèi)的實(shí)現(xiàn)模塊設(shè)在所述IXP 2400的xScale中;AM-Trie樹(shù)的壓縮和加速模塊設(shè)在所述IXP 2400的xScale中;AM-Trie樹(shù)的搜索模塊設(shè)在所述IXP 2400的4個(gè)MicroEngine即微引擎中;數(shù)據(jù)包的接收和發(fā)送模塊設(shè)在所述IXP 2400的2個(gè)MicroEngine即微引擎中;在所述數(shù)據(jù)包中,已利用冗余來(lái)表示任意長(zhǎng)度的前綴,即對(duì)于k位長(zhǎng)的串,用k+1比特的串來(lái)表示所有k比特串的前綴;步驟2為d維報(bào)文中的每一個(gè)維度都建立一個(gè)AM-Trie樹(shù),依次含有以下步驟步驟2-1根據(jù)設(shè)定的規(guī)則條數(shù)、規(guī)則的優(yōu)先級(jí),將分類(lèi)規(guī)則表重新排序,重新編號(hào);步驟2-2AM-Trie樹(shù)的創(chuàng)建根據(jù)步驟2-1得到的規(guī)則表,選擇出現(xiàn)幾率大的前綴長(zhǎng)度作為分段處,對(duì)規(guī)則表中的前綴進(jìn)行分類(lèi),根據(jù)分類(lèi)得到的段數(shù)即為AM-Trie樹(shù)的層數(shù),再根據(jù)每一層對(duì)應(yīng)的前綴個(gè)數(shù),得到每一層中的節(jié)點(diǎn)數(shù),即結(jié)點(diǎn)數(shù);再根據(jù)前綴的長(zhǎng)度由短到長(zhǎng)逐層排列,得到根結(jié)點(diǎn)和各層的葉結(jié)點(diǎn);步驟2-3每個(gè)結(jié)點(diǎn)具有兩個(gè)指針,pRule和pNext,分別指向AM-Trie樹(shù)中各結(jié)點(diǎn)對(duì)應(yīng)的規(guī)則和下一結(jié)點(diǎn)的起始位置;接著,根據(jù)聚斂位置向量算法即ABV算法,用一個(gè)n位的二進(jìn)制數(shù)作為位向量,當(dāng)報(bào)文滿足第k(0<k<n+1)條規(guī)則時(shí),將第k位置1,否則置0,形成聚斂位置向量(ABV),并把它存放在對(duì)應(yīng)的結(jié)點(diǎn)中去;步驟2-4AM-Trie樹(shù)的壓縮對(duì)每一層,從右向左,把每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的最長(zhǎng)前綴規(guī)則分配到節(jié)點(diǎn)上;步驟3根據(jù)步驟2得到d維分類(lèi)表對(duì)應(yīng)的d棵AM-Trie樹(shù);步驟4利用AM-Trie樹(shù)進(jìn)行報(bào)文分類(lèi)當(dāng)一個(gè)報(bào)文到達(dá)后,從這d棵AM-Trie樹(shù)并行地進(jìn)行搜索,把匹配到的d個(gè)結(jié)點(diǎn)的ABV值做邏輯“與”操作,得到最終的搜索結(jié)果ABV向量;若其第k位值為1,則表示它符合第k條規(guī)則。
全文摘要
基于網(wǎng)絡(luò)處理器的前述多維報(bào)文分類(lèi)方法屬于報(bào)文分類(lèi)領(lǐng)域,其特征在于為每一個(gè)維度建立AM-Trie樹(shù),再利用ABV方法進(jìn)行搜索。為了降低搜索的復(fù)雜度,用冗余表示任意長(zhǎng)度的前綴;為提高搜索速度和減少存儲(chǔ)空間,用壓縮減少回溯;所述的ABV是聚斂位置向量;再對(duì)應(yīng)分類(lèi)的各個(gè)維度,分別從其AM-Trie樹(shù)中查找相應(yīng)的聚斂位向量,即BV值,它是一個(gè)n位的二進(jìn)制數(shù),第k位為1表示匹配第k條規(guī)則。各個(gè)BV值做邏輯與運(yùn)算以后即得到匹配的多維規(guī)則。算法具有可擴(kuò)展性和可并行性,在Intel IXP 2400網(wǎng)絡(luò)處理器上測(cè)試具備G比特線速處理的性能。
文檔編號(hào)H04L12/56GK1688140SQ20051001185
公開(kāi)日2005年10月26日 申請(qǐng)日期2005年6月3日 優(yōu)先權(quán)日2005年6月3日
發(fā)明者林闖, 鄭波, 阮東華, 陳震 申請(qǐng)人:清華大學(xué)