麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

報文分類方法和裝置與流程

文檔序號:12492619閱讀:412來源:國知局
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種報文分類方法和裝置。
背景技術(shù)
::在路由器、防火墻等網(wǎng)絡(luò)設(shè)備中,通常根據(jù)規(guī)則集合的優(yōu)先級進行報文分類,從而實現(xiàn)對應(yīng)的業(yè)務(wù)功能。其中,規(guī)則集合包括IP(internetprotocol,互聯(lián)網(wǎng)協(xié)議)路由表、ACL(accesscontrollist,訪問控制列表)過濾表、Filter(過濾)表等等,它們都由多條規(guī)則組成,每條規(guī)則通常包含多個不同的域值(也被稱為匹配域),例如MAC(媒體訪問控制,mediaaccesscontrol)地址、IP地址、端口號、協(xié)議號等,每條規(guī)則還對應(yīng)優(yōu)先級和相應(yīng)的動作。報文分類,即在上述規(guī)則集合中查找所有匹配該報文的規(guī)則,并選出優(yōu)先級最高的一條規(guī)則,根據(jù)該規(guī)則對應(yīng)的動作,對該報文進行處置,例如轉(zhuǎn)發(fā)、丟棄、修改報文頭部字段等。目前已有的報文分類算法,主要有Hash(哈希)、Hi-Cuts、TSS(tuplespacesearch,元組空間查找)、TCAM(ternarycontentaddressablememory,三態(tài)內(nèi)容尋址存儲器)、RFC(recursiveflowclassification)等。但是隨著SDN技術(shù)的不斷推廣和發(fā)展,其中南向接口當(dāng)中廣泛被采用的OpenFlow(開放流)協(xié)議中定義的轉(zhuǎn)發(fā)表,要求報文分類算法在快速報文分類同時,還要支持動態(tài)更新。Hash算法特別適用于精確匹配,支持大維度、大容量的報文分類,當(dāng)規(guī)則的所有匹配域都是精確值類型時,Hash算法是最優(yōu)的選擇。但大部分的報文分類都不是簡單的精確匹配問題,因此適用性不廣。Hi-Cuts算法采用每域切割的方式,構(gòu)建一個樹形查找結(jié)構(gòu),一棵樹包含兩種類型的節(jié)點組成:葉子節(jié)點及內(nèi)部節(jié)點。葉子節(jié)點存儲一條規(guī)則或者一個最佳匹配規(guī)則集合,內(nèi)部節(jié)點不存儲規(guī)則而是存儲選擇分支的判斷條件。為了進行報文分類,根據(jù)報文的匹配域構(gòu)建成查找鍵值。在未到達葉子節(jié)點之前,將查找鍵值和內(nèi)部節(jié)點的分支判斷條件進行比較以選擇分支。如果葉子節(jié)點僅包含一條規(guī)則,就認(rèn)為是最佳匹配規(guī)則,但是如果葉子節(jié)點存儲了多個規(guī)則,還需要進行小規(guī)模的線性遍歷。該算法當(dāng)規(guī)則中存在大量全通配的匹配域值時,存在大量規(guī)則復(fù)制,不僅內(nèi)存開銷大,而且也會很大程度上降低查找速度,同時由于規(guī)則在各個葉子節(jié)點上被大量復(fù)制,因此不具備動態(tài)更新功能,僅能通過重建樹實現(xiàn)規(guī)則的增加和刪除。TSS算法,其基本的思想是通過哈希表將分類索引值分成若干個精確匹配的索引值問題,可以應(yīng)用在具有前綴規(guī)則的多維流分類問題上。以IPv4中<SIP+DIP>的分類問題為例,SIP和DIP中都存在許多不同的前綴長度,理論上<SIP+DIP>的前綴長度組合種類為32*32種,每一種前綴長度組合都對應(yīng)一個元組,每個元組中利用哈希算法進行查找,因此每個元組中的規(guī)則查找速度極快。但是由于報文頭部字段中并不包含表征前綴長度的信息,因此需要針對每條報文都必須查找所有的元組,因此查詢性能較低。RFC在某種程度上可以認(rèn)為是改進版的BV算法,通過把本應(yīng)該在查詢過程中做的按比特位與運算提前到初始化階段,犧牲一定的預(yù)處理性能,提升查找速度。該算法查找性能極快,但是預(yù)處理速度和存儲開銷較大,同時屬于靜態(tài)算法,但需要新增一條規(guī)則時,需要重構(gòu)查找數(shù)據(jù)結(jié)構(gòu),耗時無法接受,因此僅能應(yīng)用于幾乎不更新的場景。目前采用較多的算法還有基于TCAM實現(xiàn)的報文分類算法,較一般軟件算法,TCAM屬于硬件實現(xiàn),因此其查詢性能極快,但是受限于TCAM容量,同時還具有更新緩慢、功耗極大等缺點。技術(shù)實現(xiàn)要素:本發(fā)明的實施例提供一種報文分類方法和裝置,用于實現(xiàn)快速報文分類。為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:第一方面,提供了一種報文分類方法,包括:在查找階段,根據(jù)報文的匹配域查找得到對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項,并得到所述對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值;根據(jù)得到的前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,并得到對應(yīng)的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值,如果當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則根據(jù)得到的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值得到當(dāng)前層查找結(jié)構(gòu)的ET表表項,其中,得到的當(dāng)前層查找結(jié)構(gòu)的ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為所述報文所屬類型的目標(biāo)規(guī)則。第二方面,提供了一種報文分類裝置,包括:查找單元,用于根據(jù)報文的匹配域查找得到對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項,并得到所述對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值;所述查找單元,還用于根據(jù)得到的前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,并得到對應(yīng)的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值,如果當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則根據(jù)得到的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值得到當(dāng)前層查找結(jié)構(gòu)的ET表表項,其中,得到的當(dāng)前層查找結(jié)構(gòu)的ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為所述報文所屬類型的目標(biāo)規(guī)則。本發(fā)明實施例提供的報文分類方法和裝置,在查找過程中,根據(jù)報文的匹配域?qū)?yīng)第一層查找結(jié)構(gòu)的IT表表項索引,得到IT表表項中存儲的ET表表項索引,然后逐層根據(jù)前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,如果當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則可得到該IT表表項中存儲的ET表表項索引值對應(yīng)的ET表表項,該ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為目標(biāo)規(guī)則,通過對報文的匹配域按照索引值逐層查找匹配規(guī)則,不斷縮小查找范圍,可以實現(xiàn)對報文快速分類。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明的實施例提供的報文分類方法的流程示意圖;圖2為本發(fā)明的實施例提供的查找結(jié)構(gòu)的示意圖;圖3為本發(fā)明的實施例提供的分層塊壓縮結(jié)構(gòu)的示意圖;圖4為本發(fā)明的實施例提供的根據(jù)規(guī)則集合中各個規(guī)則的匹配域生成第一層查找結(jié)構(gòu)的流程示意圖;圖5為本發(fā)明的實施例提供的前一層查找結(jié)構(gòu)中包含偶數(shù)個查找結(jié)構(gòu)的示意圖;圖6為本發(fā)明的實施例提供的前一層查找結(jié)構(gòu)中包含奇數(shù)個查找結(jié)構(gòu)的示意圖;圖7為本發(fā)明的實施例提供的根據(jù)前一層查找結(jié)構(gòu)的ET表表項的索引和比特位圖生成當(dāng)前層查找結(jié)構(gòu)的流程示意圖;圖8為本發(fā)明的實施例提供的根據(jù)前一層查找結(jié)構(gòu)的ET表表項的索引和比特位圖生成當(dāng)前層查找結(jié)構(gòu)的示意圖;圖9為本發(fā)明的實施例提供的確定對第一層查找結(jié)構(gòu)的ET表中比特位圖的更新策略的流程示意圖;圖10為本發(fā)明的實施例提供的新增匹配域與已有匹配域?qū)儆诘谝环N情況的示意圖;圖11為本發(fā)明的實施例提供的新增匹配域與已有匹配域?qū)儆诘诙N情況的示意圖;圖12為本發(fā)明的實施例提供的新增匹配域與已有匹配域?qū)儆诘谌N情況的示意圖;圖13為本發(fā)明的實施例提供的新增匹配域與已有匹配域?qū)儆诘谒姆N情況的示意圖;圖14為本發(fā)明的實施例提供的一種對第一層查找結(jié)構(gòu)更新的示意圖;圖15為本發(fā)明的實施例提供的一種對非第一層查找結(jié)構(gòu)更新的示意圖;圖16為本發(fā)明的實施例提供另一種對非第一層查找結(jié)構(gòu)更新的示意圖;圖17為本發(fā)明實施例提供的報文分類裝置的結(jié)構(gòu)示意圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。一個報文分類器C由T條規(guī)則組成規(guī)則集合R,R={Rj|1<=j(luò)<=T},T也被稱為報文分類容量,規(guī)則是有三個方面的內(nèi)容組成:1)規(guī)則Rj中的每一項Rj[i],其中1<=i<=d,和報文頭中的d個域相對應(yīng),其中d也被稱為報文分類問題的維度;2)用一個數(shù)Pri(Rj)表達規(guī)則在分類器中的優(yōu)先級;3)一條規(guī)則對應(yīng)一個動作Action(Rj)。對于一個報文P,當(dāng)且僅當(dāng)報文頭中的d-tuple(P1,P2,…Pd)和規(guī)則Rj當(dāng)中的Rj[i]一一匹配時(即滿足Rj[i]的限定范圍時),則稱報文P匹配規(guī)則Rj,其中1<=i<=d;Rj[i]的具體形式有精確匹配、范圍、前綴(最長匹配,包含全通配)、非域匹配等,每一個Rj[i]稱為匹配域。最后從報文P所匹配的所有規(guī)則集合中,找到具有最高優(yōu)先級的規(guī)則Rj,既命中規(guī)則Rj。本發(fā)明實施例提供的報文分類方法,分為初始化階段、查找階段和更新階段,參照圖1中所示,包括:S101、在初始化階段,根據(jù)規(guī)則集合中各個規(guī)則的匹配域生成第一層查找結(jié)構(gòu)(lookupstructure,LS)。示例性的,假設(shè)規(guī)則集合中包含一條規(guī)則:[SP:(0,1024)DP:(18,18)優(yōu)先級:x動作:Y],其中,SP(sourceport,源端口)對應(yīng)一個匹配域,該SP匹配域的取值范圍是[0,1024];DP(destinationport,目的端口)對應(yīng)另一個匹配域,該DP匹配域的取值范圍是[18,18]。本發(fā)明實施例提供的存儲方式按功能分層,其包括至少一層查找結(jié)構(gòu),每層查找結(jié)構(gòu)包括至少一個查找結(jié)構(gòu)。本發(fā)明實施例如無特別說明,提及的第T層查找結(jié)構(gòu)指的是該第T層查找結(jié)構(gòu)的一個查找結(jié)構(gòu),T≥1。不論位于第幾層查找結(jié)構(gòu),每個查找結(jié)構(gòu)均包括IT(indextable,索引表)表和ET(extendedbitvectortable,擴展比特向量表)表。示例性的,參照圖2中所示,其中的LS11表示第一層查找結(jié)構(gòu)中的第一個查找結(jié)構(gòu),類似的LS21表示第二層查找結(jié)構(gòu)中的第一個查找結(jié)構(gòu)。需要說明的是,本發(fā)明實施例如無特別說明,IT表對應(yīng)的ET表或者IT表表項對應(yīng)的ET表表項等論述均指同一個查找結(jié)構(gòu)中的IT表和ET表。每個匹配域?qū)?yīng)第一層查找結(jié)構(gòu)中的至少一個查找結(jié)構(gòu)。具體的,對于某個匹配域來說,根據(jù)其不同的位寬具有不同取值范圍,因此需要根據(jù)各個匹配域的位寬確定第一查找結(jié)構(gòu)的IT表中的長度。常見的匹配域包括IP(internetprotocol,互聯(lián)網(wǎng)協(xié)議)地址(占32bit)、端口號(占16bit)、協(xié)議號(占8bit)、標(biāo)識符(占8bit)等,假設(shè)以16bit為基準(zhǔn)寬度確定一個查找結(jié)構(gòu)的IT表長度,則每個第一層查找結(jié)構(gòu)的IT表的最大表長是216=65536,即IT表表項的索引可對應(yīng)于匹配域為0-65535的值。此時,當(dāng)報文頭部查找字段大于16bit時,需要對其進行拆分,例如源IP地址的32bit需要拆分成兩個查找結(jié)構(gòu)SIP-LO(sourceIPlow,源IP低字節(jié))和SIP-HI(sourceIPhigh,源IP高字節(jié));當(dāng)報文頭部查找字段寬度小于16bit時,可以選擇組合或者不組合,例如協(xié)議號8bit和標(biāo)識符8bit可以組合成16bit的一個查找結(jié)構(gòu);或者不組合時分別對應(yīng)的IT表長分別為28=256。圖2中示例性的示出了第一個匹配域的位寬為16bit,對應(yīng)的第一層查找結(jié)構(gòu)LS11的IT表長65536。在第一層查找結(jié)構(gòu)中,IT表表項a的索引a與該匹配域取值為a時相對應(yīng),即當(dāng)匹配域取值為a時,向第一層查找結(jié)構(gòu)的IT表表項a賦值。示例性的,參照圖2中所示,假設(shè)LS11表示源端口匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)。假設(shè)源端口匹配域的取值范圍為0-65535,當(dāng)該匹配域取值為0時即對應(yīng)于第一層查找結(jié)構(gòu)的IT表表項0(IT表索引為0)。IT表表項a中存儲第一層查找結(jié)構(gòu)的ET表表項b的索引b,示例性的,參照圖2中所示,假設(shè)IT表中表項0中存儲值為1,則對應(yīng)于ET表中的表項1的索引(ET表索引為1)。ET表表項b中的比特位圖的取值用于標(biāo)識在所述規(guī)則集合中對應(yīng)位置的規(guī)則的匹配域是否包含取值a,其中,a≥0,b≥0。示例性的,參照圖2中所示,假設(shè)ET表表項1中的比特位為0011000,從左到右每個比特位對應(yīng)于規(guī)則集合中的一個規(guī)則,第一個比特位對應(yīng)于規(guī)則0,第二個比特位對應(yīng)于規(guī)則1,依此類推,當(dāng)置1時表示包含取值a時,則0011000表示規(guī)則集合中的規(guī)則2和3的源端口匹配域包含取值0,規(guī)則0、1、4、5和6的源端口匹配域不包含取值0,此時生效比特位指置1的比特位。本領(lǐng)域技術(shù)人員可以想到,也可以設(shè)置當(dāng)置0時表示包含取值a,此時生效比特位指置0的比特位,本發(fā)明實施例僅以當(dāng)置1時表示包含取值a進行說明。當(dāng)規(guī)則集合容量小時ET表中每個表項的比特位圖可以直接采用長比特串(例如001110101...等)進行存儲,比特位圖長度和規(guī)則集合容量一致,第0位代表規(guī)則0,第1位代表規(guī)則1,如此一一對應(yīng),置1時,表示能通過匹配域找到該規(guī)則,反之無法找到該規(guī)則,具體如圖2中所示。而當(dāng)規(guī)則容量大時如果依然采用長比特串形式,不僅存儲空間開銷大,而且大量的時間要耗費在與運算上,因為通過實驗,發(fā)現(xiàn)比特位圖中存在大量連續(xù)的值為0的比特位。所以上述比特位圖可以采用分層塊壓縮結(jié)構(gòu),分層塊壓縮結(jié)構(gòu)的層數(shù)和每層比特位圖長度由規(guī)則集合的容量決定。分層塊壓縮結(jié)構(gòu)可以包含S層的比特串,其中,第s層比特串的每一位對應(yīng)于第s+1層的一個比特串,當(dāng)?shù)趕層中一個比特串全為0時,該全為0比特串及對應(yīng)的s+1層的比特串均不存儲,對于每個比特串的長度不進行限定,0<s<S。示例性的,參照圖3中所示,假設(shè)該分層塊壓縮結(jié)構(gòu)可以包含三層,層1的每個比特串長度為64bit,層2的每個比特串長度為128bit,層3的每個比特串長度為128bit,此時,層1中的一個比特位對應(yīng)層2中的128個位圖結(jié)構(gòu),同時對應(yīng)層3中的128*128個比特串,因此該結(jié)構(gòu)最大可支持1M條規(guī)則。如圖中虛線部分所示,當(dāng)層2中的一個比特串128bit都為0時,該比特串以及該比特串在層3中對應(yīng)的128個比特串均不存儲。采用這樣的分層結(jié)構(gòu),將極大的壓縮存儲空間,同時由于大量0不參與計算也會減少與運算的次數(shù)。具體的,參照圖4中所示,步驟S101包括:S1011、創(chuàng)建臨時比特位圖,其中,臨時比特位圖的存儲形式與ET表的存儲形式相同。臨時比特位圖可以是如上所述的長比特串或者分層塊壓縮結(jié)構(gòu),只需保證與ET表的存儲形式一致即可。S1012、判斷規(guī)則集合中各個規(guī)則的匹配域中是否包含取值a,如果包含,則將臨時比特位圖中與該各個規(guī)則在規(guī)則集合中的位置相對應(yīng)的比特位置1,否則置0。遍歷規(guī)則集合,將每條規(guī)則的匹配域轉(zhuǎn)換成閉包范圍的表示形式,例如假設(shè)規(guī)則1的源端口匹配域的取值范圍為0-65535,則該匹配域?qū)?yīng)的閉包范圍為[0,65535]。從頭開始遍歷第一查找結(jié)構(gòu)中的IT表,針對每一個IT索引值a,遍歷規(guī)則集合中的所有規(guī)則,判斷每條規(guī)則對應(yīng)的匹配域值是否包含該IT索引值a,如果包含,則在臨時比特位圖中通過置比特位進行標(biāo)記,如果不包含則不標(biāo)記。S1013、判斷ET表的各個表項中是否已經(jīng)存在與臨時比特位圖相同的比特位圖,如果存在,則將對應(yīng)表項的索引填入IT表表項a中,如果不存在,則將臨時比特位圖存儲至ET表中第一個空閑表項,并將該第一個空閑表項的索引填入IT表表項a中。為了快速確定ET表中是否存在臨時比特位圖,避免遍歷ET表,本發(fā)明實施例可以引入哈希算法,計算當(dāng)前比特位圖的哈希值,使得ET表中包含一個哈希表結(jié)構(gòu),如果存在哈希值相同,則需要詳細(xì)比較比特位圖,如果比較結(jié)果都完全一致,則說明ET表中已經(jīng)存在了該臨時比特位圖。需要說明的是,很多情況下,在將前一層查找結(jié)構(gòu)的兩個ET表做按位與運算,經(jīng)常會得到全0比特位圖(即不包含任何規(guī)則)。因此為了進一步提高初始化速度,本發(fā)明實施例中,可以將每個ET表中的第一個表項(ET索引為0)初始化為全0的比特位圖,這樣當(dāng)要引用全0比特位圖時不必再查找ET表。S102、根據(jù)前一層查找結(jié)構(gòu)的ET表表項的索引和比特位圖生成當(dāng)前層查找結(jié)構(gòu),直到當(dāng)前層查找結(jié)構(gòu)中的查找結(jié)構(gòu)數(shù)目為1。其中,當(dāng)前層查找結(jié)構(gòu)的IT表表項k的索引與前一層查找結(jié)構(gòu)的T個ET表表項的索引增加更新裕量后計算得到,這T個ET表表項分別屬于前一層查找結(jié)構(gòu)的T個查找結(jié)構(gòu)之一,當(dāng)前層查找結(jié)構(gòu)的IT表表項k中存儲當(dāng)前層查找結(jié)構(gòu)的ET表表項f的索引,當(dāng)前層查找結(jié)構(gòu)的ET表表項f中的比特位圖為上述T個ET表表項中的比特位圖按位與的結(jié)果,k≥0,f≥0,T≥2。T的取值可以為2、3、4,優(yōu)選的,參照圖5和圖6中所示,T取值為2,相當(dāng)于前一層查找結(jié)構(gòu)中2個查找結(jié)構(gòu)對應(yīng)于當(dāng)前層查找結(jié)構(gòu)中的一個查找結(jié)構(gòu),其中,圖5中所示為前一層查找結(jié)構(gòu)中包含偶數(shù)個查找結(jié)構(gòu)時,圖6中所示為前一層查找結(jié)構(gòu)中包含奇數(shù)個查找結(jié)構(gòu)時。具體的,當(dāng)T=2時,參照圖7中所示,步驟S102包括:S1021、根據(jù)前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表項c以及第2i個查找結(jié)構(gòu)的ET表表項d,確定當(dāng)前層查找結(jié)構(gòu)中第i個查找結(jié)構(gòu)的IT表中的一個表項索引為c*(D+ΔD)+d,其中,i≥1,0≤c≤C+ΔC,0≤d≤D+ΔD,C為前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表長,D為前一層查找結(jié)構(gòu)中第2i個查找結(jié)構(gòu)的ET表表長,ΔC≥0,ΔD≥0。當(dāng)前層查找結(jié)構(gòu)中第i個查找結(jié)構(gòu)的IT表表長為(D+ΔD)*(C+ΔC)。參照圖8中所示,ΔC和ΔD表示更新裕量,當(dāng)ΔC和ΔD均為0時,所生成的當(dāng)前層查找結(jié)構(gòu)固化了IT表和ET表,所以不支持更新;當(dāng)ΔC和ΔD不全為0時,所生成的當(dāng)前層查找結(jié)構(gòu)預(yù)留了IT表和ET表,所以支持更新。S1022、將前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表項c的比特位圖以及第2i個查找結(jié)構(gòu)的ET表表項d的比特位圖進行與操作,得到第二臨時比特位圖。S1023、判斷當(dāng)前層查找結(jié)構(gòu)的ET表的各個表項中是否已經(jīng)存在與第二臨時比特位圖相同的比特位圖,如果存在,則將對應(yīng)表項的索引填入當(dāng)前層查找結(jié)構(gòu)的IT表表項c*(D+ΔD)+d中,如果不存在,則將第二臨時比特位圖存儲至當(dāng)前層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入當(dāng)前層查找結(jié)構(gòu)的IT表表項c*(D+ΔD)+d中。S103、在查找階段,根據(jù)報文的匹配域查找得到對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項,并得到該對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值。示例性的,從報文頭部中取出對應(yīng)匹配域的字段信息,比如源IP字段、目的IP字段、端口字段等,當(dāng)查找結(jié)構(gòu)位寬為16bit時,對于大于16bit的字段需要按照位寬進行拆分,例如將源IP地址的32bit對應(yīng)兩個查找結(jié)構(gòu)SIP-LO和SIP-HI。從SIP-LO對應(yīng)的第一層查找結(jié)構(gòu)中,SIP-LO字段值作為匹配域,該匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)的IT表表項索引值即命中對應(yīng)的IT表表項,進而得到該對應(yīng)的IT表表項中存儲的ET表表項索引值。從SIP-HI對應(yīng)的第一層查找結(jié)構(gòu)中,SIP-HI字段值作為匹配域,該匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)的IT表表項索引值即命中對應(yīng)的IT表表項,進而得到該對應(yīng)的IT表表項中存儲的ET表表項索引值。S104、根據(jù)得到的前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,并得到對應(yīng)的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值,如果所述當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則根據(jù)得到的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值得到當(dāng)前層查找結(jié)構(gòu)的ET表表項,其中,得到的當(dāng)前層查找結(jié)構(gòu)的ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為報文所屬類型的目標(biāo)規(guī)則。具體的,對于除了第一層查找結(jié)構(gòu)以外的其他層,都是根據(jù)前一層查找結(jié)構(gòu)的ET表索引值計算得到本層查找結(jié)構(gòu)的IT表表項索引值。具體的,與圖7中所示過程相對應(yīng)的,根據(jù)c*(D+ΔD)+d得到當(dāng)前層查找結(jié)構(gòu)的IT表表項索引值。當(dāng)當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu)時,根據(jù)得到的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值得到當(dāng)前查找結(jié)構(gòu)的ET表表項,該ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為目標(biāo)規(guī)則.如果各個規(guī)則是按照優(yōu)先級從高到低排序時,則該比特位圖中第一個非0的比特對應(yīng)的規(guī)則即為命中的規(guī)則。S105、在更新階段,根據(jù)新增匹配域與已有匹配域具有的公共匹配域的范圍,確定對第一層查找結(jié)構(gòu)的ET表中比特位圖的更新策略。本發(fā)明實施例所述的更新指在規(guī)則集合中增加規(guī)則,假設(shè)在當(dāng)前規(guī)則集合中新增一條如下所示的規(guī)則:[SP:(1000,2000)DP:(21,21)優(yōu)先級:x動作:Y]。對于新增加的上述規(guī)則,首先需要分別更新與源端口SP和目的端口DP字段對應(yīng)的第一層查找結(jié)構(gòu)中的IT表,其中源端口SP匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)IT表更新范圍是[1000,2000],目的端口DP匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)IT表更新范圍是[21,21],IT表更新范圍所引用的ET表表項中的比特位圖的更新比特位相應(yīng)也進行更新,但是由于ET表表項通常被多個IT表表項所引用,因此不能簡單對ET表表項中的比特位圖中更新比特位進行置1操作,需要判斷是否存在共享。另一方面,當(dāng)?shù)谝粚硬檎医Y(jié)構(gòu)發(fā)生改變時,其他層查找結(jié)構(gòu)也需要更新,因此更新過程實質(zhì)上是從第一層查找結(jié)構(gòu)開始向后逐步更新的過程。本發(fā)明實施例所述的更新比特位是指ET表的比特位圖中與新增規(guī)則在規(guī)則集合中位置相對應(yīng)的比特位。對于第一層查找結(jié)構(gòu),參照圖9中所示,包括:S1051、首先判斷新增匹配域與已有匹配域是否具有公共匹配域及公共匹配域范圍,如果新增匹配域包含已有匹配域(即相當(dāng)于公共匹配域為已有匹配域),則跳轉(zhuǎn)步驟S1052;如果新增匹配域被包含于已有匹配域(即相當(dāng)于公共匹配域為新增匹配域),則跳轉(zhuǎn)步驟S1053;如果新增匹配域與已有匹配域部分重疊,則跳轉(zhuǎn)步驟S1054;如果新增匹配域與已有匹配域不具有公共匹配域,則跳轉(zhuǎn)步驟S1055。示例性的,假設(shè)未更新前規(guī)則集合中僅有一條規(guī)則,該規(guī)則為:[SP:(0,1024)DP:(18,18)優(yōu)先級:x動作:Y]。從中可以看出,該規(guī)則對應(yīng)兩個匹配域:源端口SP匹配域和目的端口DP匹配域,該規(guī)則對應(yīng)于源端口SP匹配域為[0,1024],對應(yīng)于目的端口DP匹配域為[18,18],該規(guī)則在規(guī)則集合中的位置為1。為便于描述,僅針對源端口SP匹配域進行說明。第一種情況:假設(shè)新增規(guī)則為:[SP:(0,1500)DP:(18,18)優(yōu)先級:x動作:Y],對于源端口SP匹配域來說新增匹配域為[0,1500],該新增匹配域[0,1500]與已有匹配域[0,1024]具有公共匹配域[0,1024],屬于新增匹配域包含已有匹配域的情況,因此跳轉(zhuǎn)步驟S1052。第二種情況:假設(shè)新增規(guī)則為:[SP:(100,1000)DP:(18,18)優(yōu)先級:x動作:Y],對于源端口SP匹配域來說新增匹配域為[100,1000],該新增匹配域[100,1000]與已有匹配域[0,1024]具有公共匹配域[100,1000],屬于新增匹配域被包含于已有匹配域的情況,因此跳轉(zhuǎn)步驟S1053。第三種情況:假設(shè)新增規(guī)則為:[SP:(1000,2000)DP:(18,18)優(yōu)先級:x動作:Y],對于源端口SP匹配域來說新增匹配域為[1000,2000],該新增匹配域[1000,2000]與已有匹配域[0,1024]具有公共匹配域[1000,1024],屬于新增匹配域與已有匹配域部分重疊的情況,因此跳轉(zhuǎn)步驟S1054。第四種情況:假設(shè)新增規(guī)則為:[SP:(2000,3500)DP:(18,18)優(yōu)先級:x動作:Y],對于源端口SP匹配域來說新增匹配域為[2000,3500],該新增匹配域[2000,3500]與已有匹配域[0,1024]不具有公共匹配域,因此跳轉(zhuǎn)步驟S1055。S1052、將公共匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖的更新比特位置1,新建全0臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的非公共匹配域?qū)?yīng)的表項中,非公共匹配域為新增匹配域減去已有匹配域后剩余的匹配域。參照圖10中所示,針對第一種情況,將公共匹配域[0,1024]對應(yīng)的IT表表項所引用ET表表項1的比特位圖中的第2比特位置1(即從1000000變成為1100000),將全0的臨時比特位圖的第2比特位置1(即從0000000變成為0100000),然后將該臨時比特位圖存儲至ET表中第一個空閑表項2中,同時將索引2填入IT表的非公共匹配域[1025,1500]對應(yīng)的表項中。S1053、復(fù)制已有匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖作為臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與公共匹配域?qū)?yīng)的表項中。參照圖11中所示,針對第二種情況,復(fù)制已有匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖(1000000)作為臨時比特位圖,將臨時比特位圖的第2比特位置1(即從1000000變成為1100000),然后將該臨時比特位圖存儲至ET表中第一個空閑表項2中,同時將索引2填入IT表的公共匹配域[100,1000]對應(yīng)的表項中。S1054、復(fù)制已有匹配域的比特位圖作為第一臨時比特位圖,將第一臨時比特位圖的更新比特位置1,并將第一臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與公共匹配域?qū)?yīng)的表項中;新建全0第二臨時比特位圖,將第二臨時比特位圖的更新比特位置1,并將第二臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表與非公共匹配域?qū)?yīng)的表項中。參照圖12中所示,針對第三種情況,復(fù)制已有匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖(1000000)作為第一臨時比特位圖,將第一臨時比特位圖的第2比特位置1(即從1000000變成為1100000),然后將該第一臨時比特位圖存儲至ET表中第一個空閑表項2中,同時將索引2填入IT表的公共匹配域[1000,1024]對應(yīng)的表項中;新建全0第二臨時比特位圖,將第二臨時比特位圖的第2比特位置1(即從0000000變成為0100000),并將第二臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項3中,并將該第一個空閑表項的索引3填入第一層查找結(jié)構(gòu)的IT表與新增匹配域[1000,2000]減去公共匹配域[1000,1024]后的匹配域[1025,2000]對應(yīng)的表項中。S1055、新建全0臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將該第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與非公共匹配域?qū)?yīng)的表項中。參照圖13中所示,針對第四種情況,將全0臨時比特位圖的第2比特位置1(即從0000000變成為0100000),然后將該臨時比特位圖存儲至ET表中第一個空閑表項2中,同時將索引2填入IT表的非公共匹配域[2000,3500]對應(yīng)的表項中。S106、根據(jù)前一層查找結(jié)構(gòu)中更新的比特位圖對當(dāng)前層查找結(jié)構(gòu)的IT表和ET表進行更新。第一層查找結(jié)構(gòu)的更新使得第一層查找結(jié)構(gòu)所有的ET表都產(chǎn)生變化,由于ΔC和ΔD均不為零時已經(jīng)在初始化階段預(yù)留了足夠大的ET表表長,因此在更新過程中并不需要重新初始化其他層查找結(jié)構(gòu)的整個ET表,僅需將新增表項填入ET表的空閑表項。以圖14所示的更新實施例為例進行說明,在第一層查找結(jié)構(gòu)的第一個查找結(jié)構(gòu)LS11如(1)所示,增加了一個ET表表項后如(2)所示,在第一層查找結(jié)構(gòu)的第二個查找結(jié)構(gòu)LS12如(3)所示,增加了一個ET表表項變?nèi)?4)所示,在更新之前作為下一層查找結(jié)構(gòu)ET表表項的LS11&LS12按位與(LS11&LS12)結(jié)果如(5)所示,更新之后LS11&LS12按位與(LS11&LS12)結(jié)果如(6)所示,可見更新后下一層查找結(jié)構(gòu)ET表表項中的表項0、2依舊使用更新前的ET表表項,因此可以利用這一特點減少下一層查找結(jié)構(gòu)IT表和ET表的更新計算量。根據(jù)實際應(yīng)用統(tǒng)計,在每次更新過程中,對于本層查找結(jié)構(gòu)來說,上一層查找結(jié)構(gòu)中未更新的ET表占大多數(shù),當(dāng)前層查找結(jié)構(gòu)的ET表是由前一層的兩個ET表按位與而來。參照圖15中所示,假設(shè)前一層查找結(jié)構(gòu)的兩個ET表分別是ET表1和ET表2,在ET表1中,新增表項G,其更新自同一ET表中的表項g;在ET表2中,新增表項H,其更新自同一ET表中的表項h。對于當(dāng)前層查找結(jié)構(gòu)的ET表來說,有表項p和新增表項P,表項p的比特位圖=表項g的比特位圖&表項h的比特位圖,表項P的比特位圖=表項G的比特位圖&表項H的比特位圖;當(dāng)且僅當(dāng)表項G和表項H均為新更新的表項時,各自的更新比特位進行按位與操作后,表項P的更新比特位才需要置1,其他情況下都置0。可以在更新上一層查找結(jié)構(gòu)的ET表時,為ET表表項增加兩個索引值,第一索引值指示本表項的更新源表項的索引,第二索引值指示本表項的更新目的表項的索引,例如,在更新表項G時,在表項G的第一索引值中填入表項g的索引,在表項g的第二索引值中填入表項G的索引;在更新表項H時,在表項H的第一索引值中填入表項h的索引,在表項h的第二索引值中填入表項H的索引。假設(shè)前一層查找結(jié)構(gòu)的ET表更新之后,在更新本層查找結(jié)構(gòu)的IT表和ET表時,不需要根據(jù)前一層查找結(jié)構(gòu)的所有IT表和ET表來求得本層查找結(jié)構(gòu)更新的IT表表項和ET表表項,在計算表項P的比特位圖=表項G的比特位圖&表項H的比特位圖之前,只需要根據(jù)前一層查找結(jié)構(gòu)中兩個ET表表項的第一索引值找到本層查找結(jié)構(gòu)的ET表的更新源表項p,對表項p的比特位圖復(fù)制為臨時比特位圖,對比特位圖的更新比特位置1后填入本層查找結(jié)構(gòu)ET表第一個空閑表項(圖中索引為17)即可,然后將該第一個空閑表項的索引填入對應(yīng)的IT表表項中。這樣可以實現(xiàn)快速更新。另外,還可以在更新源表項p的第二索引值中寫入更新目的表項P的索引(17),這樣當(dāng)下次更新如果更新源表項恰好為p時,可以通過第二索引值直接找到更新目的表項P,不用再重新更新,這樣可以大大降低更新計算量。進一步的,通過分析發(fā)現(xiàn),在更新當(dāng)前層查找結(jié)構(gòu)時,無論前一層查找結(jié)構(gòu)更新后ET表表項數(shù)目多還是少,都要循環(huán)遍歷前一層查找結(jié)構(gòu)的兩個ET表,即當(dāng)前層查找結(jié)構(gòu)中每個查找結(jié)構(gòu)的更新復(fù)雜度為前一層查找結(jié)構(gòu)兩個ET表表長的乘積,但實際上由于前一層查找結(jié)構(gòu)的兩個ET表中大部分ET表表項未更新,對應(yīng)的本層查找結(jié)構(gòu)的IT表表項和ET表表項不需要更新,因此本發(fā)明實施例引入分塊標(biāo)記比特位的方式進行標(biāo)記,在更新前一層查找結(jié)構(gòu)時,提前確定本層查找結(jié)構(gòu)需要更新的IT表表項和ET表表項。對于前一層查找結(jié)構(gòu)中進行按位與操作的第一ET表和第二ET表,第一ET表對應(yīng)第一組標(biāo)記比特位,第二ET表對應(yīng)第二組標(biāo)記比特位,每組標(biāo)記比特位的長度為第一ET表表長和第二ET表表長的乘積。參照圖16中所示,在更新階段,當(dāng)更新前一層查找結(jié)構(gòu)時,如果第一ET表表項g被更新,則在第一組比特位標(biāo)記的比特位[LEN2*g,LEN2*(g+1)]上置1來標(biāo)記,其中,LEN2為第二ET表表長;如果第二ET表表項h被更新,則在第二組比特位標(biāo)記的比特位h、h+LEN2*1、h+LEN2*2、h+LEN2*3、……、h+LEN2*(LEN1-1)上置1來標(biāo)記,其中,LEN1為第一ET表表長;當(dāng)完成對前一層查找結(jié)構(gòu)的更新后,將第一組標(biāo)記比特位和第二組標(biāo)記比特位按比特位相與,結(jié)果為1的標(biāo)記位對應(yīng)的本層查找結(jié)構(gòu)的IT表索引即為本層查找結(jié)構(gòu)需要更新的IT表索引(圖中陰影部分)。本發(fā)明實施例提供的更新過程還可以包括刪除規(guī)則,與新增加規(guī)則類似,唯一不同的是由置1操作變成了復(fù)位即清0操作,更新過程及步驟與新增加規(guī)則并無差別,在此不再贅述。本發(fā)明實施例提供的報文分類方法,在初始化過程中,生成多層查找結(jié)構(gòu),每層查找結(jié)構(gòu)均包括IT表和ET表,第一層查找結(jié)構(gòu)的IT表的表項a索引與規(guī)則的匹配域a相對應(yīng),IT表中存儲ET表表項索引,ET表表項中存儲比特位圖,比特位圖的取值標(biāo)識在規(guī)則集合中對應(yīng)位置的規(guī)則的匹配域是否包含取值a;對于其他層查找結(jié)構(gòu)來說,本層查找結(jié)構(gòu)的IT表和ET表均由前一層的ET表表項生成,其中,本層查找結(jié)構(gòu)的IT表索引由前一層查找結(jié)構(gòu)ET表索引增加更新裕量后計算得到,本層查找結(jié)構(gòu)的ET表由前一層查找結(jié)構(gòu)ET表中比特位圖按位與得到,支持在更新裕量范圍內(nèi)動態(tài)更新規(guī)則集合。在查找過程中,根據(jù)報文的匹配域?qū)?yīng)第一層查找結(jié)構(gòu)的IT表表項索引,得到IT表表項中存儲的ET表表項索引,然后逐層根據(jù)前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,如果當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則可得到該IT表表項中存儲的ET表表項索引值對應(yīng)的ET表表項,該ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為目標(biāo)規(guī)則,通過對報文的匹配域按照索引值逐層查找匹配規(guī)則,不斷縮小查找范圍,可以實現(xiàn)對報文快速分類。本發(fā)明實施例提供了一種報文分類裝置10,參照圖17中所示,包括:生成單元101,用于在初始化階段,根據(jù)規(guī)則集合中各個規(guī)則的匹配域生成第一層查找結(jié)構(gòu),其中,每個匹配域?qū)?yīng)第一層查找結(jié)構(gòu)中的至少一個查找結(jié)構(gòu),每個查找結(jié)構(gòu)包括索引表IT表和擴展比特向量表ET表,當(dāng)匹配域取值為a時,與匹配域?qū)?yīng)的第一層查找結(jié)構(gòu)的IT表表項a中存儲第一層查找結(jié)構(gòu)的ET表表項b的索引,ET表表項b中的比特位圖的取值用于標(biāo)識在規(guī)則集合中對應(yīng)位置的規(guī)則的匹配域是否包含取值a,a≥0,b≥0;生成單元101,還用于根據(jù)前一層查找結(jié)構(gòu)的ET表表項生成當(dāng)前層查找結(jié)構(gòu),直到當(dāng)前層查找結(jié)構(gòu)中的查找結(jié)構(gòu)數(shù)目為1,其中,當(dāng)前層查找結(jié)構(gòu)的IT表表項k的索引與前一層查找結(jié)構(gòu)的T個ET表表項的索引增加更新裕量后計算得到,T個ET表表項分別屬于前一層查找結(jié)構(gòu)的T個查找結(jié)構(gòu)之一,當(dāng)前層查找結(jié)構(gòu)的IT表表項k中存儲當(dāng)前層查找結(jié)構(gòu)的ET表表項f的索引,當(dāng)前層查找結(jié)構(gòu)的ET表表項f中的比特位圖為T個ET表表項中的比特位圖按位與的結(jié)果,k≥0,f≥0,T≥2;查找單元102,用于根據(jù)報文的匹配域查找得到對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項,并得到所述對應(yīng)的第一層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值;查找單元102,還用于根據(jù)得到的前一層查找結(jié)構(gòu)的ET表表項索引值計算得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值,并得到對應(yīng)的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值,如果當(dāng)前層查找結(jié)構(gòu)為最后一層查找結(jié)構(gòu),則根據(jù)得到的當(dāng)前層查找結(jié)構(gòu)的IT表表項中存儲的ET表表項索引值得到當(dāng)前層查找結(jié)構(gòu)的ET表表項,其中,得到的當(dāng)前層查找結(jié)構(gòu)的ET表表項中存儲的比特位圖的生效比特位所對應(yīng)的規(guī)則為報文所屬類型的目標(biāo)規(guī)則;更新單元103,用于在更新階段,根據(jù)新增匹配域與已有匹配域具有的公共匹配域的范圍,確定對第一層查找結(jié)構(gòu)的ET表中比特位圖的更新策略;根據(jù)前一層查找結(jié)構(gòu)中更新的比特位圖對當(dāng)前層查找結(jié)構(gòu)的IT表和ET表進行更新。在一種可能的設(shè)計中,生成單元101,具體用于:創(chuàng)建臨時比特位圖,其中,臨時比特位圖的存儲形式與第一層查找結(jié)構(gòu)的ET表的存儲形式相同;判斷規(guī)則集合中各個規(guī)則的匹配域中是否包含取值a,如果包含,則將臨時比特位圖中與各個規(guī)則在規(guī)則集合中的位置相對應(yīng)的比特位置1,否則置0;判斷第一層查找結(jié)構(gòu)的ET表的各個表項中是否已經(jīng)存在與臨時比特位圖相同的比特位圖,如果存在,則將對應(yīng)表項的索引填入第一層查找結(jié)構(gòu)的IT表表項a中,如果不存在,則將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表表項a中。在一種可能的設(shè)計中,生成單元101,具體用于:根據(jù)前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表項c以及第2i個查找結(jié)構(gòu)的ET表表項d,確定當(dāng)前層查找結(jié)構(gòu)中第i個查找結(jié)構(gòu)的IT表中的一個表項索引為c*(D+ΔD)+d,其中,i≥1,0≤c≤C+ΔC,0≤d≤D+ΔD,C為前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表長,D為前一層查找結(jié)構(gòu)中第2i個查找結(jié)構(gòu)的ET表表長,ΔC≥0,ΔD≥0;將前一層查找結(jié)構(gòu)中第2i-1個查找結(jié)構(gòu)的ET表表項c的比特位圖以及第2i個查找結(jié)構(gòu)的ET表表項d的比特位圖進行與操作,得到第二臨時比特位圖;判斷當(dāng)前層查找結(jié)構(gòu)的ET表的各個表項中是否已經(jīng)存在與第二臨時比特位圖相同的比特位圖,如果存在,則將對應(yīng)表項的索引填入當(dāng)前層查找結(jié)構(gòu)的IT表表項c*(D+ΔD)+d中,如果不存在,則將第二臨時比特位圖存儲至當(dāng)前層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入當(dāng)前層查找結(jié)構(gòu)的IT表表項c*(D+ΔD)+d中。在一種可能的設(shè)計中,查找單元102,具體用于:根據(jù)c*(D+ΔD)+d得到當(dāng)前層查找結(jié)構(gòu)的IT表表項的索引值。在一種可能的設(shè)計中,更新單元103,具體用于:如果新增匹配域包含已有匹配域,將公共匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖的更新比特位置1,新建全0臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的非公共匹配域?qū)?yīng)的表項中,非公共匹配域為新增匹配域減去已有匹配域后剩余的匹配域;如果新增匹配域被包含于已有匹配域,復(fù)制已有匹配域?qū)?yīng)的IT表表項所引用的ET表表項中的比特位圖作為臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與公共匹配域?qū)?yīng)的表項中如果新增匹配域與已有匹配域部分重疊,復(fù)制已有匹配域的比特位圖作為第一臨時比特位圖,將第一臨時比特位圖的更新比特位置1,并將第一臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與公共匹配域?qū)?yīng)的表項中;新建全0第二臨時比特位圖,將第二臨時比特位圖的更新比特位置1,并將第二臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表與非公共匹配域?qū)?yīng)的表項中如果新增匹配域與已有匹配域不具有公共匹配域,新建全0臨時比特位圖,將臨時比特位圖的更新比特位置1,并將臨時比特位圖存儲至第一層查找結(jié)構(gòu)的ET表中第一個空閑表項,并將第一個空閑表項的索引填入第一層查找結(jié)構(gòu)的IT表的與非公共匹配域?qū)?yīng)的表項中。在一種可能的設(shè)計中,對于前一層查找結(jié)構(gòu)中進行按位與操作的第一ET表和第二ET表,第一ET表對應(yīng)第一組標(biāo)記比特位,第二ET表對應(yīng)第二組標(biāo)記比特位,每組標(biāo)記比特位的長度為第一ET表表長和第二ET表表長的乘積,所述更新單元103還用于:在更新階段,當(dāng)更新前一層查找結(jié)構(gòu)時,如果第一ET表表項g被更新,則在第一組比特位標(biāo)記的比特位[LEN2*g,LEN2*(g+1)]上置1來標(biāo)記,其中,LEN2為第二ET表表長;如果第二ET表表項h被更新,則在第二組比特位標(biāo)記的比特位h、h+LEN2*1、h+LEN2*2、h+LEN2*3、……、h+LEN2*(LEN1-1)上置1來標(biāo)記,其中,LEN1為第一ET表表長;當(dāng)完成對前一層查找結(jié)構(gòu)的更新后,將第一組標(biāo)記比特位和第二組標(biāo)記比特位按比特位相與,結(jié)果為1的標(biāo)記位對應(yīng)的本層查找結(jié)構(gòu)的IT表索引即為本層查找結(jié)構(gòu)需要更新的IT表索引。在一種可能的設(shè)計中,比特位圖為比特串或分層塊壓縮結(jié)構(gòu),所述分層塊壓縮結(jié)構(gòu)包含S層的比特串,第s層比特串的每一位對應(yīng)于第s+1層的一個比特串,當(dāng)?shù)趕層中一個比特串全為0時,所述全為0比特串及對應(yīng)的s+1層的比特串均不存儲,其中,0<s<S。由于本發(fā)明實施例中的報文分類裝置可以應(yīng)用于上述報文分類方法,因此,其所能獲得的技術(shù)效果也可參考上述方法實施例,本發(fā)明實施例在此不再贅述。需要說明的是,生成單元、查找單元、更新單元可以為單獨設(shè)立的處理器,也可以集成在控制器的某一個處理器中實現(xiàn),此外,也可以以程序代碼的形式存儲于控制器的存儲器中,由控制器的某一個處理器調(diào)用并執(zhí)行以上生成單元、查找單元、更新單元的功能。這里所述的處理器可以是一個中央處理器(英文全稱:centralprocessingunit,英文簡稱:CPU),或者是特定集成電路(英文全稱:applicationspecificintegratedcircuit,英文簡稱:ASIC),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。應(yīng)理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(英文全稱:read-onlymemory,英文簡稱:ROM)、隨機存取存儲器(英文全稱:randomaccessmemory,英文簡稱:RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
:的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 敖汉旗| 增城市| 黑河市| 嘉黎县| 松滋市| 元阳县| 万年县| 北安市| 都匀市| 阿拉善盟| 夏河县| 锦屏县| 依安县| 桂林市| 涞源县| 新干县| 巫溪县| 蒙城县| 临桂县| 丹江口市| 剑川县| 迁西县| 崇礼县| 云和县| 浠水县| 浦北县| 阿勒泰市| 津南区| 昌平区| 关岭| 城市| 前郭尔| 西和县| 昌都县| 新宁县| 武陟县| 山东省| 盐山县| 武威市| 道孚县| 龙川县|