專利名稱:一種位圖聚合的遞推流分類方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于位圖的遞推流分類方法和系統(tǒng),尤其涉及數(shù)據(jù)通訊領(lǐng)域中根據(jù)數(shù)據(jù)包上多個(gè)字段,將符合預(yù)定規(guī)則的特定的數(shù)據(jù)包從其它數(shù)據(jù)包中區(qū)別出來的方法和系統(tǒng)。
背景技術(shù):
IP網(wǎng)絡(luò)進(jìn)入了“IP電信網(wǎng)”的發(fā)展階段,由此也帶來了許多技術(shù)上新的挑戰(zhàn),許多新業(yè)務(wù),諸如包過濾、QoS、策略路由、NAT、流計(jì)費(fèi)等,傳統(tǒng)的基于目的地址路由匹配的數(shù)據(jù)包轉(zhuǎn)發(fā)過程已經(jīng)不再滿足網(wǎng)絡(luò)運(yùn)營和管理的要求,基于整個(gè)IP頭,甚至傳輸層頭部的IP包(流)分類轉(zhuǎn)發(fā)技術(shù)成為這些新業(yè)務(wù)的核心技術(shù)之一,其中快速流分類系統(tǒng)是分類轉(zhuǎn)發(fā)技術(shù)的基礎(chǔ)和關(guān)鍵。
快速流分類系統(tǒng)是數(shù)據(jù)通訊設(shè)備數(shù)據(jù)包處理流程的一部分,快速流分類系統(tǒng)有一個(gè)可配置的規(guī)則集,即若干條有優(yōu)先級的規(guī)則的集合,每條規(guī)則描述一簇?cái)?shù)據(jù)包頭部的若干特征條件,快速流分類系統(tǒng)就是要在數(shù)據(jù)包到來時(shí),從數(shù)據(jù)包滿足其要求的若干規(guī)則中找出優(yōu)先級最高的規(guī)則來。
包分類問題可形式化定義為一個(gè)有N個(gè)規(guī)則的分類器{Rk},其中k=1,2,...,N;Rk包括2個(gè)實(shí)體1、一個(gè)d元的范圍[llk,r1k]、[l2k,r2k]、......[ldk,rdk]。
2、一個(gè)指定分類器中優(yōu)先權(quán)的數(shù)字Pri(Rk);對一個(gè)到達(dá)分類器的被一d元組(P1,P2,...,Pd)指定相應(yīng)域的數(shù)據(jù)包P,d維分類器問題就是找一個(gè)特定的值k,稱為k*,滿足對任意k≠k*,pri(Rk*)>Pri(Rk);且對任意i1≤i≤d,有l(wèi)ik≤Pi≤rik流分類器不可能等到數(shù)據(jù)包到達(dá)后再一條一條地匹配,以找到優(yōu)先級最高的規(guī)則。快速流分類器通常分為兩個(gè)部分,一部分是控制層面根據(jù)分類規(guī)則集構(gòu)造分類索引表的預(yù)處理模塊;另一部分是數(shù)據(jù)層面將實(shí)際數(shù)據(jù)包通過分類索引表匹配到優(yōu)先權(quán)最高規(guī)則的索引模塊,可參照圖1。
1999~2000年間,流分類技術(shù)有過一個(gè)研究的高潮,取得了一些成果,涌現(xiàn)了基于Trie算法流分類系統(tǒng)、遞推流分類(RFC,Recursive FlowClassification)系統(tǒng)、基于層次化空間分割(Hi-Cuts)算法的流分類系統(tǒng)、基于位向量(BV)算法的流分類系統(tǒng)等快速流分類系統(tǒng),這些系統(tǒng)各有優(yōu)點(diǎn),也各有缺點(diǎn),有些分類系統(tǒng)分類速度隨著分類規(guī)則集中規(guī)則數(shù)的增加而下降;有些系統(tǒng)需要配置很大的內(nèi)存,系統(tǒng)成本較高;有些分類系統(tǒng)規(guī)則變化響應(yīng)時(shí)間較長。這些算法都只能滿足了數(shù)百條分類規(guī)則的應(yīng)用場合的需求,其中遞推流分類系統(tǒng)因?yàn)榉诸愃俣容^快,且與分類規(guī)則數(shù)無關(guān),是應(yīng)用最為廣泛的流分類系統(tǒng)。
遞推流分類系統(tǒng)是1999年由Pankaj Gupta和Nick McKeown提出的一個(gè)在多字段上進(jìn)行包分類的流分類系統(tǒng),這個(gè)系統(tǒng)的核心包括1)一個(gè)索引表的結(jié)構(gòu);2)一個(gè)由規(guī)則集構(gòu)造索引表的預(yù)處理算法單元;3)一個(gè)索引算法單元。遞推流分類系統(tǒng)沒有增量式更新算法,一旦規(guī)則集發(fā)生變化,需要重新執(zhí)行預(yù)處理算法單元。
其中,索引表結(jié)構(gòu)如圖2所示,索引表分為若干級(phase),每一級又有若干個(gè)索引塊(Chunk),分級的結(jié)構(gòu)就是采用的遞推結(jié)構(gòu),每一級索引表包含兩個(gè)字段,即索引值和對應(yīng)的eqID,第一級的索引值是數(shù)據(jù)包的字段值,后面每一級的索引值是遞推結(jié)構(gòu)中前面兩個(gè)或幾個(gè)表的索引結(jié)果(即eqID的加權(quán)和)。在第Phase 0索引表中,規(guī)則的每個(gè)字段對應(yīng)一個(gè)索引塊;而Phase J(J>0)索引表中的每一個(gè)Chunk是由上一級索引表的若干個(gè)Chunk合并得到的。每一索引塊的索引結(jié)果稱為等價(jià)類標(biāo)識(shí)(eqId,equal-class identification),所謂等價(jià)類,就是m元子空間(m≤d)中匹配到相同規(guī)則的子集(不考慮優(yōu)先權(quán))。位圖用于表示等價(jià)類和規(guī)則集中規(guī)則的匹配情況,位圖是一個(gè)N位的數(shù)據(jù),其中N是規(guī)則集中的規(guī)則數(shù),如果等價(jià)類與第i條規(guī)則匹配,則位圖的第i位為“1”,否則為“0”。這樣,等價(jià)類索引值就可以通過索引塊中對應(yīng)的等價(jià)類標(biāo)識(shí)映射到位圖。
索引算法單元收到一個(gè)數(shù)據(jù)包,由數(shù)據(jù)包(packet)對應(yīng)位置的每一個(gè)字段,查找一個(gè)phase0索引表,由若干上一級的索引結(jié)果的運(yùn)算值(如,加權(quán)和)索引下一級表,直到得到最后一級索引的結(jié)果,該結(jié)果就是packet在d元空間上等價(jià)類的標(biāo)識(shí)(eqId),也就匹配到了一個(gè)位圖,這個(gè)位圖表明了這個(gè)等價(jià)類和哪些規(guī)則匹配,從中可以找出優(yōu)先權(quán)最高的規(guī)則。值得說明的是,由于每個(gè)eqId對應(yīng)的位圖在預(yù)處理階段就確定了,對應(yīng)的優(yōu)先權(quán)最高的規(guī)則也是確定的,大多數(shù)分類系統(tǒng)在預(yù)處理階段就把eqId和對應(yīng)的優(yōu)先權(quán)最高的規(guī)則關(guān)聯(lián)起來,從而直接得到數(shù)據(jù)包所符合的優(yōu)先級最高的規(guī)則,索引算法單元不需要真的處理位圖。
近年來分類規(guī)則數(shù)有爆炸增長的趨勢。遞推流分類系統(tǒng)與其它流分類系統(tǒng)一樣暴露出了固有的弱點(diǎn),一個(gè)具有圖2結(jié)構(gòu)的遞推流分類系統(tǒng),當(dāng)規(guī)則集中的規(guī)則數(shù)達(dá)到2000條擴(kuò)展訪問列表規(guī)則時(shí),等價(jià)類規(guī)則匹配位圖(CBM,Equal Class Bitmap)表需要26M以上的內(nèi)存,且在采用了Pentium1.6GHz CPU的系統(tǒng)中,等價(jià)類規(guī)則匹配位圖響應(yīng)規(guī)則變化的時(shí)間達(dá)2000秒。動(dòng)輒數(shù)十兆的內(nèi)存開銷和數(shù)百秒的規(guī)則變化響應(yīng)時(shí)間是妨礙超過2000條規(guī)則的快速流分類技術(shù)進(jìn)入實(shí)用的關(guān)鍵因素。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種位圖聚合的遞推流分類方法,可以減少等價(jià)類規(guī)則匹配位圖表的存儲(chǔ)空間開銷,加快等價(jià)類規(guī)則匹配位圖生成和查找的操作速度。本發(fā)明還要提供一種可實(shí)現(xiàn)上述方法的系統(tǒng)。
為了解決上述技術(shù)問題,本發(fā)明提供了一種位圖聚合的遞推流分類方法,應(yīng)用于遞推流分類系統(tǒng),包括以下步驟(a)首先構(gòu)造一個(gè)初始位圖,使其每一位對應(yīng)于規(guī)則集合的一條規(guī)則,然后從一個(gè)規(guī)則字段取值范圍內(nèi)取出一個(gè)值,遍歷規(guī)則集合,若該值滿足當(dāng)前規(guī)則,將位圖中該規(guī)則對應(yīng)的位置1,否則置0,得到一個(gè)位圖BM;(b)對位圖BM進(jìn)行聚合度為q的聚合,得到包括定長的聚合位部分和變長的細(xì)節(jié)位部分的聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;(c)比較聚合形式位圖CBM和該規(guī)則字段對應(yīng)索引塊所屬的位圖集合中的聚合形式位圖,檢查是否已有相同的位圖,若沒有,為位圖CBM生成新的等價(jià)類標(biāo)識(shí)并將其加入到該位圖集合,否則位圖CBM使用其相同位圖對應(yīng)的等價(jià)類標(biāo)識(shí);然后,在所述索引塊中建立位圖CBM的等價(jià)類標(biāo)識(shí)和當(dāng)前規(guī)則字段值的映射關(guān)系;(d)對該規(guī)則字段取值范圍內(nèi)的每一個(gè)值,按步驟(a)到(c)的方法處理完成后,該規(guī)則字段對應(yīng)的索引塊構(gòu)造完成,再按同樣方法構(gòu)造出每個(gè)規(guī)則字段對應(yīng)的索引塊,形成完整的第0級索引表;(e)按照設(shè)定的遞推結(jié)構(gòu),對上一級的索引塊進(jìn)行遞推,得到其下一級的索引塊,遞推時(shí)兩個(gè)位圖按其聚合形式進(jìn)行比較,兩個(gè)位圖的“與”運(yùn)算以聚合形式位圖的“與”運(yùn)算方法完成,如此逐級遞推,直至所有索引塊最后遞推成為一個(gè)索引塊;(f)遞推流分類系統(tǒng)收到一個(gè)數(shù)據(jù)包后,根據(jù)該數(shù)據(jù)包與流分類相關(guān)的每一個(gè)字段查找第0級的一個(gè)索引表,由若干上一級的索引結(jié)果運(yùn)算得到的索引值來索引下一級表,直到得到最后一級索引結(jié)果,然后將該數(shù)據(jù)包匹配到其滿足要求的優(yōu)先權(quán)最高的規(guī)則。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b)進(jìn)一步分為以下步驟(b1)按設(shè)定的聚合度q將N位的位圖BM分為N/q個(gè)q位組,第i個(gè)q位組對應(yīng)于位圖中第q*i~q*i+q-1位,i=0,1,......,N/q-1,其對應(yīng)的聚合形式位圖CBM包括N/q位的聚合位部分和變長的細(xì)節(jié)位部分;(b2)逐一判斷位圖BM的第i個(gè)q位組,i=0,1,......,N/q-1,對每個(gè)q位組,判斷其各個(gè)位是否全為0,如果是,將所述聚合形式位圖的聚合位部分第i位置0,否則將該聚合位部分的第i位置1,并將該q位組在位圖BM中的對應(yīng)位追加拷貝到聚合形式位圖CBM的細(xì)節(jié)位部分;(b3)對位圖BM的所有q位組處理完成后,其對應(yīng)的聚合形式位圖CBM構(gòu)造完成。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述聚合形式位圖的聚合位部分采用q位邊界對齊,不足部分補(bǔ)0。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b3)后還包括步驟再將所述聚合形式位圖細(xì)節(jié)位部分的變長長度寫入到其聚合位部分的前面,作為所述聚合形式位圖的變長長度部分。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述細(xì)節(jié)位部分的變長長度是用細(xì)節(jié)位部分包含的q位組個(gè)數(shù)表示的。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述聚合形式位圖的比較算法是依次比較聚合形式位圖CBM1和CBM2的變長長度部分、聚合位部分和細(xì)節(jié)位部分,只要有一個(gè)部分不同,直接返回二個(gè)位圖不同的結(jié)果,結(jié)束;如果三個(gè)部分都相同,則返回二個(gè)位圖相同的結(jié)果。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行與運(yùn)算得到聚合形式的結(jié)果位圖CBM的方法是依次比較CBM1和CBM2的聚合位部分的每一個(gè)相同位,每次比較時(shí)如果參與比較的兩個(gè)位至少有一個(gè)為0,則將CBM聚合位部分的相同位置0;如果參與比較的兩個(gè)位均為1,將該兩個(gè)位在各自位圖的細(xì)節(jié)位部分對應(yīng)的q位組進(jìn)行按位“與”操作,得到q位組Q,如果Q全為0,將CBM聚合位部分的相同位置0,否則將CBM聚合位部分的相同位置1,并將CBM細(xì)節(jié)位部分與其聚合位部分該位對應(yīng)的q位組賦值為Q。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b3)中,還將所述聚合形式位圖細(xì)節(jié)位部分的變長長度寫入其聚合位部分的前面,作為該聚合形式位圖的變長長度部分;且在進(jìn)行位圖CBM1和CBM2的“與”運(yùn)算時(shí),在兩者聚合位部分的所有位比較和處理完后,還將得到的CBM細(xì)節(jié)位部分的變長長度寫入到其變長長度部分,得到包括三部分的結(jié)果位圖CBM。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(e)對上一級的兩個(gè)索引塊Chunk 1和Chunk 2遞推得到下一級索引塊Chunk 3時(shí),對分屬兩個(gè)索引塊Chunk 1和Chunk 2的兩個(gè)等價(jià)類標(biāo)識(shí)EqID1和EqID2,執(zhí)行以下步驟(e1)將EqID1和EqID2對應(yīng)的聚合形式位圖進(jìn)行“與”操作,生成屬于下一級索引塊Chunk 3的一個(gè)聚合形式的位圖CBM3;(e2)檢查聚合形式位圖CBM3在Chunk 3所屬的位圖集合中是否存在,若不存在,為其生成新的等價(jià)類標(biāo)識(shí),并將其加入到Chunk 3所屬位圖集合中;若存在,則位圖CBM3使用與其相同的位圖的等價(jià)類標(biāo)識(shí);(e3)計(jì)算EqID1×(Chunk 2的等價(jià)類個(gè)數(shù))+EqID2,作為Chunk 3中對應(yīng)于位圖CBM3的索引值,然后將位圖CBM3的等價(jià)類標(biāo)識(shí)填入Chunk3中該索引值對應(yīng)的位置,形成字段值到該等價(jià)類標(biāo)識(shí)的映射關(guān)系;對Chunk 1和Chunk 2中的任意兩個(gè)等價(jià)類標(biāo)識(shí),按上述方法處理完成后,得到最終的遞推結(jié)果Chunk 3。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述聚合度q為8、16、32、64或128。
本發(fā)明提供的位圖聚合的遞推流分類系統(tǒng)包括用于根據(jù)分類規(guī)則集構(gòu)造分類索引表的預(yù)處理模塊和將實(shí)際數(shù)據(jù)包通過分類索引表匹配到優(yōu)先權(quán)最高規(guī)則的索引模塊,所述預(yù)處理模塊包含預(yù)處理總控單元、第0級索引表構(gòu)造單元和第J級索引表構(gòu)造單元,所述索引模塊包含索引表和位圖存儲(chǔ)單元、索引算法單元,其特點(diǎn)是所述第0級索引表構(gòu)造單元包含聚合運(yùn)算子單元和位圖比較子單元,在構(gòu)造各個(gè)規(guī)則字段對應(yīng)的索引塊時(shí),所述聚合運(yùn)算子單元用于對未經(jīng)聚合的位圖BM進(jìn)行聚合度為q的聚合,得到包括定長的聚合位部分和變長的細(xì)節(jié)位部分的聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;而所述位圖比較子單元按兩個(gè)位圖的聚合形式完成該兩個(gè)位圖的比較;
所述第J級索引表構(gòu)造單元包含位圖比較子單元和“與”運(yùn)算子單元,在按照設(shè)定的遞推結(jié)構(gòu),對上一級索引塊進(jìn)行遞推得到下一級索引塊時(shí),位圖以聚合后的形式表示,所述位圖比較子單元按兩個(gè)位圖的聚合形式完成該兩個(gè)位圖的比較,所述“與”運(yùn)算子單元以聚合形式位圖的“與”運(yùn)算方法完成兩個(gè)位圖的“與”運(yùn)算;所述索引表存儲(chǔ)單元用于保存構(gòu)造得到的各級索引表。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述聚合運(yùn)算子單元按以下方式完成對位圖的聚合運(yùn)算(I)按設(shè)定的聚合度q將N位的位圖BM分為N/q個(gè)q位組,第i個(gè)q位組對應(yīng)于位圖中第q*i~q*i+q-1位,i=0,1,......,N/q-1,其對應(yīng)的聚合形式位圖CBM包括N/q位的聚合位部分和變長的細(xì)節(jié)位部分;(II)逐一判斷位圖BM的第i個(gè)q位組,i=0,1,......,N/q-1,對每個(gè)q位組,判斷其各個(gè)位是否全為0,如果是,將所述聚合形式位圖的聚合位部分第i位置0,否則將該聚合位部分的第i位置1,并將該q位組在位圖BM中的對應(yīng)位追加拷貝到聚合形式位圖CBM的細(xì)節(jié)位部分;(III)對位圖BM的所有q位組處理完成后,其對應(yīng)的聚合形式位圖CBM構(gòu)造完成。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述聚合運(yùn)算子單元在進(jìn)行位圖的聚合運(yùn)算時(shí),在所述步驟(III)中,還將所述聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入到其聚合位部分的前面,作為所述聚合形式位圖CBM的變長長度部分。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述位圖比較子單元對兩個(gè)聚合形式的位圖進(jìn)行比較時(shí),依次比較這兩個(gè)位圖的變長長度部分、聚合位部分和細(xì)節(jié)位部分,只要有一個(gè)部分不同,就直接返回二個(gè)位圖不同的結(jié)果,結(jié)束;如果三個(gè)部分都相同,則返回二個(gè)位圖相同的結(jié)果。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述“與”運(yùn)算子單元對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行“與”運(yùn)算得到聚合形式的結(jié)果位圖CBM的方法是依次比較CBM1和CBM2的聚合位部分的每一個(gè)相同位,每次比較時(shí)如果參與比較的兩個(gè)位至少有一個(gè)為0,則將CBM聚合位部分的相同位置0;如果參與比較的兩個(gè)位均為1,將該兩個(gè)位在各自位圖的細(xì)節(jié)位部分對應(yīng)的q位組進(jìn)行按位“與”操作,得到q位組Q,如果Q全為0,將CBM聚合位部分的相同位置0,否則將CBM聚合位部分的相同位置1,并將CBM細(xì)節(jié)位部分與其聚合位部分該位對應(yīng)的q位組賦值為Q。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述位圖比較子單元進(jìn)行以聚合形式表示的位圖的比較時(shí),在步驟(III)中,還將聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入其聚合位部分的前面,作為其變長長度部分;相應(yīng)地,所述“與”運(yùn)算子單元進(jìn)行以聚合形式位圖的“與”運(yùn)算時(shí),在將位圖CBM1和CBM2聚合位部分的所有位比較并處理完后,還將聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入到該CBM的變長長度部分。
由上可知,本發(fā)明通過對遞推流分類算法中等價(jià)類規(guī)則匹配位圖的聚合,減少了遞推流分類系統(tǒng)在規(guī)則集預(yù)處理生成索引表階段等價(jià)類規(guī)則匹配位圖表的存儲(chǔ)空間開銷,也減少了等價(jià)類規(guī)則匹配位圖生成操作(按位與運(yùn)算)和等價(jià)類規(guī)則匹配位圖表查找的CPU時(shí)間開銷,從而縮短預(yù)處理時(shí)間,加快規(guī)則變化響應(yīng)速度。
圖1是本發(fā)明實(shí)施例位圖聚合的遞推流分類系統(tǒng)結(jié)構(gòu)框圖;圖2是典型遞推IP流分類系統(tǒng)的遞推結(jié)構(gòu)圖;圖3是本發(fā)明實(shí)施例位圖聚合示意圖;圖4是本發(fā)明實(shí)施例位圖聚合的遞推流分類系統(tǒng)Phase 0索引表的構(gòu)造流程圖;圖5是本發(fā)明實(shí)施例聚合形式的位圖“與”操作的流程圖;
圖6是本發(fā)明實(shí)施例聚合形式的位圖比較操作的流程圖;圖7是本發(fā)明實(shí)施例位圖聚合的遞推流分類系統(tǒng)Phase J(J>0)索引表的構(gòu)造流程圖。
具體實(shí)施例方式
位圖是N位的數(shù)據(jù),在預(yù)處理模塊存儲(chǔ)了大量的位圖,并且大多數(shù)時(shí)間都在進(jìn)行位圖的“與”及“比較”操作。通過大量的研究分析,發(fā)明人發(fā)現(xiàn),實(shí)際上位圖中“1”位是很少,一個(gè)等價(jià)類往往只與極少的規(guī)則匹配。也就是說位圖是稀疏的,因此,本發(fā)明通過對稀疏的位圖表項(xiàng)進(jìn)行聚合處理,用長度更短的數(shù)據(jù)來表達(dá)位圖所攜帶的信息,從而減少位圖信息的存儲(chǔ)所占用的內(nèi)存空間,以及減少位圖“與”及“比較”操作所花費(fèi)的時(shí)間,也就是響應(yīng)時(shí)間。
如圖1所示,本實(shí)施例所述位圖聚合的遞推流分類系統(tǒng)主要由以下控制層面和數(shù)據(jù)層面兩部分組成控制層面是根據(jù)分類規(guī)則集構(gòu)造分類索引表的預(yù)處理模塊,該模塊進(jìn)一步包括預(yù)處理總控單元,用于控制Phase 0索引表構(gòu)造模塊構(gòu)造Phase 0的各個(gè)索引塊(chunk),然后控制Phase J(J>0)索引表構(gòu)造模塊依次遞推構(gòu)造PhaseJ(J>0)的各個(gè)chunk。
Phase 0索引表構(gòu)造單元,用于根據(jù)構(gòu)造各個(gè)規(guī)則字段對應(yīng)的索引塊。其包含聚合運(yùn)算子單元和位圖比較子單元(各個(gè)子單元在圖中未示出),在構(gòu)造時(shí),所述聚合運(yùn)算子單元用于對未經(jīng)聚合的位圖BM進(jìn)行聚合度為q的聚合,得到包括定長的聚合位部分和變長的細(xì)節(jié)位部分的聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;而所述位圖比較子單元在比較兩個(gè)位圖時(shí),是按這兩個(gè)位圖的聚合形式來比較的。
Phase J(J>0)索引表構(gòu)造單元,用于按照設(shè)定的遞推結(jié)構(gòu),對上一級Chunk進(jìn)行遞推計(jì)算得到下一級的Chunk,如此逐級遞推直至最終得到一個(gè)Chunk。其包含位圖比較子單元和“與”運(yùn)算子單元,在遞推時(shí),位圖以聚合后的形式表示,所述位圖比較子單元按兩個(gè)位圖的聚合形式完成該兩個(gè)位圖的比較,所述“與”運(yùn)算子單元以聚合形式位圖的“與”運(yùn)算方法完成兩個(gè)位圖的“與”運(yùn)算。
數(shù)據(jù)層面是將實(shí)際數(shù)據(jù)包通過分類索引表匹配到優(yōu)先權(quán)最高規(guī)則的索引模塊,該單元包括索引表和位圖存儲(chǔ)單元,以及索引算法單元,其中索引表和位圖存儲(chǔ)單元保存了構(gòu)造得到的各級索引塊,每個(gè)索引塊包括一個(gè)索引表和對應(yīng)的以聚合形式表示的位圖。在另一實(shí)施例中,聚合形式的位圖可以只在索引表構(gòu)造階段生成,可以不保存聚合形式的位圖,只要有索引表就可以了,當(dāng)然,需要預(yù)先直接將最后一級的EqID對應(yīng)到優(yōu)先權(quán)最高的規(guī)則。
索引算法單元收到一個(gè)數(shù)據(jù)包后,由數(shù)據(jù)包(packet)的每一個(gè)字段,查找phase 0的一個(gè)索引表,按照相同的遞推結(jié)構(gòu),由上一級的索引結(jié)果(即EqID)的加權(quán)和作為索引值來索引下一級表,直到得到最后一級索引的結(jié)果,即為packet在d元空間上等價(jià)類的標(biāo)識(shí)(eqId),最后找到該標(biāo)識(shí)對應(yīng)的優(yōu)先權(quán)最高的規(guī)則,可以在預(yù)處理階段把eqId和對應(yīng)的優(yōu)先權(quán)最高的規(guī)則直接關(guān)聯(lián)起來。
本發(fā)明的位圖聚合沒有改變遞推分類系統(tǒng)的索引塊的形式,所以本發(fā)明的索引模塊與傳統(tǒng)的遞推分類系統(tǒng)相同,只是位圖采用聚合后的形式來表示。但是由于位圖的聚合,Phase 0索引表構(gòu)造單元和Phase J(J>0)索引表構(gòu)造單元的構(gòu)造流程需要做相應(yīng)的改進(jìn)。
Phase 0索引表構(gòu)造模塊構(gòu)造一個(gè)規(guī)則字段(一般來說是8~16bits)對應(yīng)的Chunk的方法如圖4所示,包括以下步驟步驟110,構(gòu)造一初始位圖,長度等于規(guī)則集合中的規(guī)則數(shù),位圖中每一bit位置0,對應(yīng)于一條規(guī)則;
步驟120,從該規(guī)則字段取值范圍(1,2B-1)內(nèi)依次取出一個(gè)值,B是規(guī)則中某個(gè)字段的寬度;步驟130,依先后順序遍歷規(guī)則集合,如果該值滿足當(dāng)前規(guī)則,則將位圖中該規(guī)則對應(yīng)的bit位置1,否則置0,得到當(dāng)前位圖BM;步驟140,對位圖BM進(jìn)行聚合度為q的聚合,得到該位圖的聚合形式表示CBM,下文也稱為聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;步驟150,將聚合形式位圖CBM與該規(guī)則字段對應(yīng)索引塊所屬位圖集合中的位圖(也是聚合形式的)進(jìn)行比較,檢查是否有相同的位圖,若沒有,則為位圖CBM生成新的EqID(等價(jià)類標(biāo)識(shí))并將其加入到該位圖集合中,否則,位圖CBM使用其相同位圖對應(yīng)的EqID;步驟160,將位圖CBM的EqID填入Chunk中當(dāng)前規(guī)則字段值對應(yīng)的位置,形成字段值到EqID的映射關(guān)系;步驟170,判斷該規(guī)則字段取值范圍內(nèi)的所有值是否處理完畢,如果沒有,返回步驟120,如果處理完畢,則該規(guī)則字段對應(yīng)的Chunk構(gòu)造完成。
通過以同樣的方法構(gòu)造每個(gè)規(guī)則字段對應(yīng)的Chunk,Phase 0索引表構(gòu)造模塊最終構(gòu)造出完整的Phase 0的索引表。
下面將以一個(gè)實(shí)例詳細(xì)論述上述步驟三和四中的位圖聚合運(yùn)算方法。
我們對N Bits的稀疏位圖進(jìn)行q Bits的聚合壓縮。q稱為聚合度,可以取8、16、32、64、128等值以便于CPU處理。圖3是一個(gè)聚合度為8的位圖聚合的一個(gè)實(shí)例。
聚合后的位圖由三部分組成第一部分是變長長度部分,用于表示聚合形式位圖細(xì)節(jié)位部分的變長長度,即其包含的q元組個(gè)數(shù)。該變長長度部分是冗余信息,但是該字段是含有豐富的位圖信息,是信息總體的特征,有助于加快比較的速度,進(jìn)一步改進(jìn)系統(tǒng)性能;第二部分是N/q位的聚合位部分(q位邊界對齊,不足部分補(bǔ)0),聚合位部分的第i位是未經(jīng)聚合的位圖中第i*q~i*q+1位“或”運(yùn)算的結(jié)果,該位為0表示其對應(yīng)q位組全為0,該位為1表示其對應(yīng)q位組至少有一個(gè)“1”位;第三部分是變長的細(xì)節(jié)位部分,由未經(jīng)聚合的位圖去掉等于0的q位組而成,細(xì)節(jié)位部分的第k個(gè)q位組(第k*q~k*q+q-1位)對應(yīng)于聚合位部分的第k個(gè)“1”位,如果聚合位部分的第k個(gè)“1”位出現(xiàn)在第i位上,則細(xì)節(jié)位部分的第k個(gè)q位組與未經(jīng)聚合位圖的第i個(gè)q位組(第i*q~i*q+q-1位)相等。
聚合的方法如下依次對未經(jīng)聚合的位圖的第i個(gè)q位組進(jìn)行處理(即第q*i~q*i+q-1位,i=0,1,...),如果該q位組不全為0,則聚合后的位圖第二部分的第i位置1,并把未經(jīng)聚合的位圖的這個(gè)非0的局部(第q*i~q*i+q-1位)追加拷貝到聚合后的位圖的第三部分(細(xì)節(jié)位部分)。否則,聚合形式位圖的第二部分(聚合位部分)的第i位置0。第三部分相當(dāng)于未經(jīng)聚合的位圖忽略了全0的q位組后的形式。未經(jīng)聚合的位圖的所有q位組處理完成后,再調(diào)整聚合形式位圖的第一部分(變長長度部分)為寫入第三部分(細(xì)節(jié)位部分)的q位組個(gè)數(shù)。
圖3是一個(gè)30條規(guī)則的分類器中某等價(jià)類所對應(yīng)位圖的聚合示意圖,該等價(jià)類和規(guī)則{0,1,2,20}匹配,取聚合度q=8。因?yàn)槲唇?jīng)聚合的位圖的0~8位、16~23位中有“1”位,所以聚合形式位圖的聚合位部分的第1、3位為“1”,其它位為“0”,其細(xì)節(jié)位部分中包含了未經(jīng)聚合的位圖中的非全0的q位組,即0~8位和16~23位。
在位圖聚合的遞推流分類系統(tǒng)中需要對聚合形式位圖做兩種操作,第一種是兩個(gè)聚合形式位圖的“與”運(yùn)算,以求得兩個(gè)等價(jià)類交集(新等價(jià)類)的位圖(聚合形式),其流程參見圖5。第二種是兩個(gè)聚合形式位圖的比較操作,用于判斷兩個(gè)等價(jià)類是否可以合并,其流程參見圖6。
圖5的流程用于對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行與運(yùn)算,得到聚合形式的結(jié)果位圖CBM,包括如下步驟步驟210,依次讀出CBM1和CBM2的“聚合位部分”的一個(gè)相同位(通常從第0位開始);
步驟220,判斷參與比較的兩個(gè)bit位是否至少有一個(gè)為0,如果是,執(zhí)行下一步,否則,執(zhí)行步驟240;步驟230,將結(jié)果CBM的聚合位部分的對應(yīng)bit位置0,執(zhí)行步驟270;步驟240,將CBM1和CBM2“細(xì)節(jié)位部分”中與各自“聚合位部分”該位對應(yīng)的兩個(gè)q位組進(jìn)行按位“與”運(yùn)算,得到q位組Q;步驟250,判斷該q位組Q是否全為0,如果是,執(zhí)行步驟230,否則,執(zhí)行下一步;步驟260,將結(jié)果位圖CBM的聚合位部分的對應(yīng)bit位置1,并將結(jié)果位圖CBM細(xì)節(jié)位部分中與該bit位對應(yīng)的q位組(如該bit位為聚合位部分第k個(gè)“1”位,則該q位組為細(xì)節(jié)位部分第k個(gè)q位組)賦值為Q;步驟270,判斷CBM1和CBM2“聚合位部分”的所有位是否處理完畢,如果是,執(zhí)行下一步,否則,返回步驟210;步驟280,調(diào)整CBM的變長長度部分為寫入的細(xì)節(jié)位部分的q位組個(gè)數(shù),得到最終的結(jié)果位圖CBM。
圖6示出了對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行比較操作的流程,包括以下步驟步驟310,比較聚合形式位圖CBM1和CBM2的變長長度部分是否相同,如果不同,執(zhí)行步驟350,否則繼續(xù)下一步;步驟320,比較聚合形式位圖CBM1和CBM2的聚合位部分是否相同,如果不同,執(zhí)行步驟350,否則繼續(xù)下一步;步驟330,比較聚合形式位圖CBM1和CBM2的細(xì)節(jié)位部分是否相同,如果不同,執(zhí)行步驟350,否則繼續(xù)下一步;步驟340,返回二者相同的結(jié)果,結(jié)束;步驟350,返回二者不同的結(jié)果,結(jié)束。
可以看出,相比傳統(tǒng)遞推流分類系統(tǒng)中的位圖“與”及“比較”操作,聚合后的位圖數(shù)據(jù)長度更短,“與”及“比較”操作花費(fèi)時(shí)間也短,所以位圖聚合的遞推流分類系統(tǒng)預(yù)處理模塊處理時(shí)間短,響應(yīng)時(shí)間減少。
Phase J(J>0)索引表構(gòu)造模塊通過對前一級生成的Chunk進(jìn)行遞推計(jì)算,得到其下一級的索引表,此過程一直進(jìn)行下去(J不斷增加),直到所有的Chunk最后遞推成為一個(gè)Chunk。
對兩個(gè)Chunk 1和Chunk 2進(jìn)行遞推得到遞推結(jié)果Chunk 3的方法如圖7所示,包括以下步驟步驟410,取出分屬Chunk 1和Chunk 2的兩個(gè)等價(jià)類標(biāo)識(shí)EqID1和EqID2,將其對應(yīng)的聚合形式位圖CBM1和CBM2進(jìn)行“與”操作,生成屬于Chunk 3的一個(gè)聚合形式的結(jié)果位圖CBM3;步驟420,檢查聚合形式位圖CBM3在Chunk 3所屬的位圖集合中是否存在,若不存在,執(zhí)行下一步,若存在,執(zhí)行步驟440;步驟430,為位圖CBM3生成新的EqID,并將其加入到Chunk 3所屬的位圖集合中,執(zhí)行步驟450;步驟440,位圖CBM3使用相同位圖對應(yīng)的EqID;步驟450,計(jì)算EqID1×Chunk 2的等價(jià)類個(gè)數(shù)+EqID2,結(jié)果作為Chunk3中對應(yīng)于位圖CBM3的索引值;步驟460,將該位圖CBM3的EqID填入Chunk 3中該索引值對應(yīng)的位置,形成字段值到EqID的映射關(guān)系;步驟470,判斷Chunk 1和Chunk 2中任意兩個(gè)等價(jià)類標(biāo)識(shí)的組合是否都已處理完畢,如果未處理完,返回步驟410,如果處理完成,則得到了遞推結(jié)果Chunk 3,結(jié)束。
對于具有圖2遞推結(jié)構(gòu)的分類系統(tǒng),傳統(tǒng)遞推分類系統(tǒng)和采用本發(fā)明位圖聚合的遞推分類系統(tǒng)在Pentium M1.6GHz計(jì)算機(jī)上仿真對比如下一,1000條標(biāo)準(zhǔn)acl分類規(guī)則的分類器,傳統(tǒng)遞推分類器算法和位圖聚合的遞推分類器(聚合度32)的比較見表1。
表11000條標(biāo)準(zhǔn)acl規(guī)則分類器比較
二,1000條擴(kuò)展acl分類規(guī)則的分類器,傳統(tǒng)遞推分類器算法和位圖聚合的遞推分類器(聚合度32)的比較見表2。
表21000條擴(kuò)展acl規(guī)則分類器比較
三,2000條擴(kuò)展acl分類規(guī)則的分類器,傳統(tǒng)遞推分類器算法和位圖聚合的遞推分類器(聚合度32)的比較見表3。
表32000條擴(kuò)展acl規(guī)則分類器比較
實(shí)踐證明改進(jìn)的規(guī)則變化響應(yīng)時(shí)間優(yōu)化了10~100倍,空間開銷優(yōu)化了2~10倍??梢姼倪M(jìn)取得了相當(dāng)好的效果,其內(nèi)存和響應(yīng)時(shí)間開銷完全能夠滿足2000條以上擴(kuò)展acl規(guī)則的分類器的要求。
權(quán)利要求
1.一種位圖聚合的遞推流分類方法,應(yīng)用于遞推流分類系統(tǒng),包括以下步驟(a)首先構(gòu)造一個(gè)初始位圖,使其每一位對應(yīng)于規(guī)則集合的一條規(guī)則,然后從一個(gè)規(guī)則字段取值范圍內(nèi)取出一個(gè)值,遍歷規(guī)則集合,若該值滿足當(dāng)前規(guī)則,將位圖中該規(guī)則對應(yīng)的位置1,否則置0,得到一個(gè)位圖BM;(b)對位圖BM進(jìn)行聚合度為q的聚合,得到包括定長的聚合位部分和變長的細(xì)節(jié)位部分的聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;(c)比較聚合形式位圖CBM和該規(guī)則字段對應(yīng)索引塊所屬的位圖集合中的聚合形式位圖,檢查是否已有相同的位圖,若沒有,為位圖CBM生成新的等價(jià)類標(biāo)識(shí)并將其加入到該位圖集合,否則位圖CBM使用其相同位圖對應(yīng)的等價(jià)類標(biāo)識(shí);然后,在所述索引塊中建立位圖CBM的等價(jià)類標(biāo)識(shí)和當(dāng)前規(guī)則字段值的映射關(guān)系;(d)對該規(guī)則字段取值范圍內(nèi)的每一個(gè)值,按步驟(a)到(c)的方法處理完成后,該規(guī)則字段對應(yīng)的索引塊構(gòu)造完成,再按同樣方法構(gòu)造出每個(gè)規(guī)則字段對應(yīng)的索引塊,形成完整的第0級索引表;(e)按照設(shè)定的遞推結(jié)構(gòu),對上一級的索引塊進(jìn)行遞推,得到其下一級的索引塊,遞推時(shí)兩個(gè)位圖按其聚合形式進(jìn)行比較,兩個(gè)位圖的“與”運(yùn)算以聚合形式位圖的“與”運(yùn)算方法完成,如此逐級遞推,直至所有索引塊最后遞推成為一個(gè)索引塊;(f)遞推流分類系統(tǒng)收到一個(gè)數(shù)據(jù)包后,根據(jù)該數(shù)據(jù)包與流分類相關(guān)的每一個(gè)字段查找第0級的一個(gè)索引表,由若干上一級的索引結(jié)果運(yùn)算得到的索引值來索引下一級表,直到得到最后一級索引結(jié)果,然后將該數(shù)據(jù)包匹配到其滿足要求的優(yōu)先權(quán)最高的規(guī)則。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟(b)進(jìn)一步分為以下步驟(b1)按設(shè)定的聚合度q將N位的位圖BM分為N/q個(gè)q位組,第i個(gè)q位組對應(yīng)于位圖中第q*i~q*i+q-1位,i=0,1,……,N/q-1,其對應(yīng)的聚合形式位圖CBM包括N/q位的聚合位部分和變長的細(xì)節(jié)位部分;(b2)逐一判斷位圖BM的第i個(gè)q位組,i=0,1,……,N/q-1,對每個(gè)q位組,判斷其各個(gè)位是否全為0,如果是,將所述聚合形式位圖的聚合位部分第i位置0,否則將該聚合位部分的第i位置1,并將該q位組在位圖BM中的對應(yīng)位追加拷貝到聚合形式位圖CBM的細(xì)節(jié)位部分;(b3)對位圖BM的所有q位組處理完成后,其對應(yīng)的聚合形式位圖CBM構(gòu)造完成。
3.如權(quán)利要求2所述的方法,其特征在于,所述聚合形式位圖的聚合位部分采用q位邊界對齊,不足部分補(bǔ)0。
4.如權(quán)利要求2所述的方法,其特征在于,所述步驟(b3)后還包括步驟再將所述聚合形式位圖細(xì)節(jié)位部分的變長長度寫入到其聚合位部分的前面,作為所述聚合形式位圖的變長長度部分。
5.如權(quán)利要求4所述的方法,其特征在于,所述細(xì)節(jié)位部分的變長長度是用細(xì)節(jié)位部分包含的q位組個(gè)數(shù)表示的。
6.如權(quán)利要求4所述的方法,其特征在于,所述聚合形式位圖的比較算法是依次比較聚合形式位圖CBM1和CBM2的變長長度部分、聚合位部分和細(xì)節(jié)位部分,只要有一個(gè)部分不同,直接返回二個(gè)位圖不同的結(jié)果,結(jié)束;如果三個(gè)部分都相同,則返回二個(gè)位圖相同的結(jié)果。
7.如權(quán)利要求2所述的方法,其特征在于,對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行與運(yùn)算得到聚合形式的結(jié)果位圖CBM的方法是依次比較CBM1和CBM2的聚合位部分的每一個(gè)相同位,每次比較時(shí)如果參與比較的兩個(gè)位至少有一個(gè)為0,則將CBM聚合位部分的相同位置0;如果參與比較的兩個(gè)位均為1,將該兩個(gè)位在各自位圖的細(xì)節(jié)位部分對應(yīng)的q位組進(jìn)行按位“與”操作,得到q位組Q,如果Q全為0,將CBM聚合位部分的相同位置0,否則將CBM聚合位部分的相同位置1,并將CBM細(xì)節(jié)位部分與其聚合位部分該位對應(yīng)的q位組賦值為Q。
8.如權(quán)利要求7所述的方法,其特征在于,所述步驟(b3)中,還將所述聚合形式位圖細(xì)節(jié)位部分的變長長度寫入其聚合位部分的前面,作為該聚合形式位圖的變長長度部分;且在進(jìn)行位圖CBM1和CBM2的“與”運(yùn)算時(shí),在兩者聚合位部分的所有位比較和處理完后,還將得到的CBM細(xì)節(jié)位部分的變長長度寫入到其變長長度部分,得到包括三部分的結(jié)果位圖CBM。
9.如權(quán)利要求1至8中任一權(quán)利要求所述的方法,其特征在于,所述步驟(e)對上一級的兩個(gè)索引塊Chunk 1和Chunk 2遞推得到下一級索引塊Chunk 3時(shí),對分屬兩個(gè)索引塊Chunk 1和Chunk 2的兩個(gè)等價(jià)類標(biāo)識(shí)EqID1和EqID2,執(zhí)行以下步驟(e1)將EqID1和EqID2對應(yīng)的聚合形式位圖進(jìn)行“與”操作,生成屬于下一級索引塊Chunk 3的一個(gè)聚合形式的位圖CBM3;(e2)檢查聚合形式位圖CBM3在Chunk 3所屬的位圖集合中是否存在,若不存在,為其生成新的等價(jià)類標(biāo)識(shí),并將其加入到Chunk 3所屬位圖集合中;若存在,則位圖CBM3使用與其相同的位圖的等價(jià)類標(biāo)識(shí);(e3)計(jì)算EqID1×(Chunk 2的等價(jià)類個(gè)數(shù))+EqID2,作為Chunk 3中對應(yīng)于位圖CBM3的索引值,然后將位圖CBM3的等價(jià)類標(biāo)識(shí)填入Chunk3中該索引值對應(yīng)的位置,形成字段值到該等價(jià)類標(biāo)識(shí)的映射關(guān)系;對Chunk 1和Chunk 2中的任意兩個(gè)等價(jià)類標(biāo)識(shí),按上述方法處理完成后,得到最終的遞推結(jié)果Chunk 3。
10.如權(quán)利要求1所述的方法,其特征在于,所述聚合度q為8、16、32、64或128。
11.一種位圖聚合的遞推流分類系統(tǒng),包括用于根據(jù)分類規(guī)則集構(gòu)造分類索引表的預(yù)處理模塊和將實(shí)際數(shù)據(jù)包通過分類索引表匹配到優(yōu)先權(quán)最高規(guī)則的索引模塊,所述預(yù)處理模塊包含預(yù)處理總控單元、第0級索引表構(gòu)造單元和第J級索引表構(gòu)造單元,所述索引模塊包含索引表和位圖存儲(chǔ)單元、索引算法單元,其特征在于所述第0級索引表構(gòu)造單元包含聚合運(yùn)算子單元和位圖比較子單元,在構(gòu)造各個(gè)規(guī)則字段對應(yīng)的索引塊時(shí),所述聚合運(yùn)算子單元用于對未經(jīng)聚合的位圖BM進(jìn)行聚合度為q的聚合,得到包括定長的聚合位部分和變長的細(xì)節(jié)位部分的聚合形式位圖CBM,其聚合位部分的第i位對應(yīng)于位圖BM的第i個(gè)q元組,該q元組全為0時(shí)該位置0,否則該位置1,其細(xì)節(jié)位部分由位圖BM去掉全為0的q元組后構(gòu)成;而所述位圖比較子單元按兩個(gè)位圖的聚合形式完成該兩個(gè)位圖的比較;所述第J級索引表構(gòu)造單元包含位圖比較子單元和“與”運(yùn)算子單元,在按照設(shè)定的遞推結(jié)構(gòu),對上一級索引塊進(jìn)行遞推得到下一級索引塊時(shí),位圖以聚合后的形式表示,所述位圖比較子單元按兩個(gè)位圖的聚合形式完成該兩個(gè)位圖的比較,所述“與”運(yùn)算子單元以聚合形式位圖的“與”運(yùn)算方法完成兩個(gè)位圖的“與”運(yùn)算;所述索引表存儲(chǔ)單元用于保存構(gòu)造得到的各級索引表。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述聚合運(yùn)算子單元按以下方式完成對位圖的聚合運(yùn)算(I)按設(shè)定的聚合度q將N位的位圖BM分為N/q個(gè)q位組,第i個(gè)q位組對應(yīng)于位圖中第q*i~q*i+q-1位,i=0,1,……,N/q-1,其對應(yīng)的聚合形式位圖CBM包括N/q位的聚合位部分和變長的細(xì)節(jié)位部分;(II)逐一判斷位圖BM的第i個(gè)q位組,i=0,1,……,N/q-1,對每個(gè)q位組,判斷其各個(gè)位是否全為0,如果是,將所述聚合形式位圖的聚合位部分第i位置0,否則將該聚合位部分的第i位置1,并將該q位組在位圖BM中的對應(yīng)位追加拷貝到聚合形式位圖CBM的細(xì)節(jié)位部分;(III)對位圖BM的所有q位組處理完成后,其對應(yīng)的聚合形式位圖CBM構(gòu)造完成。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述聚合運(yùn)算子單元在進(jìn)行位圖的聚合運(yùn)算時(shí),在所述步驟(III)中,還將所述聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入到其聚合位部分的前面,作為所述聚合形式位圖CBM的變長長度部分。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述位圖比較子單元對兩個(gè)聚合形式的位圖進(jìn)行比較時(shí),依次比較這兩個(gè)位圖的變長長度部分、聚合位部分和細(xì)節(jié)位部分,只要有一個(gè)部分不同,就直接返回二個(gè)位圖不同的結(jié)果,結(jié)束;如果三個(gè)部分都相同,則返回二個(gè)位圖相同的結(jié)果。
15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述“與”運(yùn)算子單元對兩個(gè)聚合形式位圖CBM1和CBM2進(jìn)行“與”運(yùn)算得到聚合形式的結(jié)果位圖CBM的方法是依次比較CBM1和CBM2的聚合位部分的每一個(gè)相同位,每次比較時(shí)如果參與比較的兩個(gè)位至少有一個(gè)為0,則將CBM聚合位部分的相同位置0;如果參與比較的兩個(gè)位均為1,將該兩個(gè)位在各自位圖的細(xì)節(jié)位部分對應(yīng)的q位組進(jìn)行按位“與”操作,得到q位組Q,如果Q全為0,將CBM聚合位部分的相同位置0,否則將CBM聚合位部分的相同位置1,并將CBM細(xì)節(jié)位部分與其聚合位部分該位對應(yīng)的q位組賦值為Q。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述位圖比較子單元進(jìn)行以聚合形式表示的位圖的比較時(shí),在步驟(III)中,還將聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入其聚合位部分的前面,作為其變長長度部分;相應(yīng)地,所述“與”運(yùn)算子單元進(jìn)行以聚合形式位圖的“與”運(yùn)算時(shí),在將位圖CBM1和CBM2聚合位部分的所有位比較并處理完后,還將聚合形式位圖CBM的細(xì)節(jié)位部分的變長長度寫入到該CBM的變長長度部分。
全文摘要
本發(fā)明公開一種位圖聚合的遞推流分類方法和系統(tǒng),先從一規(guī)則字段取值范圍內(nèi)取出一個(gè)值,遍歷規(guī)則集合,得到一個(gè)位圖BM;對其聚合得到包括聚合位部分和細(xì)節(jié)位部分的聚合形式位圖CBM;如CBM在對應(yīng)索引塊所屬位圖集合中不存在,生成新的EqID并將其加入位圖集合,否則使用相同的EqID;在索引塊中建立該CBM的EqID和規(guī)則字段值的映射關(guān)系;按同樣方法,構(gòu)造出每個(gè)規(guī)則字段取值范圍內(nèi)每一個(gè)值的索引塊,得到第0級索引表;按照遞推結(jié)構(gòu),對上一級索引塊進(jìn)行遞推,得到下一級索引塊,直至遞推成為一個(gè)索引塊;分類系統(tǒng)收到數(shù)據(jù)包后,根據(jù)索引表將其匹配到優(yōu)先權(quán)最高的規(guī)則。本發(fā)明可以減少存儲(chǔ)空間開銷,加快位圖生成和查找的速度。
文檔編號(hào)H04L12/56GK1878123SQ200510074919
公開日2006年12月13日 申請日期2005年6月6日 優(yōu)先權(quán)日2005年6月6日
發(fā)明者都珂, 王軍 申請人:中興通訊股份有限公司