欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種規(guī)則匹配方法和裝置的制作方法

文檔序號:6374561閱讀:192來源:國知局

專利名稱::一種規(guī)則匹配方法和裝置的制作方法
技術領域
:本發(fā)明涉及網絡
技術領域
,尤其涉及一種規(guī)則匹配方法和裝置。
背景技術
:DPI(DeepPacketInspection,深度報文包檢測)技術作為ー種網絡設備增強的過濾器,逐步將用戶管理、安全控制、精細的業(yè)務控制等能力有機地集成在一起,實現各類業(yè)務的動態(tài)感知、策略控制、Qos(QualityofService,服務質量)保障,以及網絡與業(yè)務的安全保障等功能,降低運營商的資本性支出與運營支出,為運營商提供一個電信業(yè)務的基礎運營平臺。DPI技術基本原理包括檢測報文中高層協(xié)議(如應用層)中的ー些特征字符,然后與狀態(tài)機(由規(guī)則編譯而成)進行匹配,判斷檢測得到特征字符是預定的ー些關鍵字,井根據判斷結果進行相應的處理。DPI技術可以基于軟件或硬件實現,軟件相對比較靈活,但性能較差(如速度慢、支持規(guī)則數量少)。在實際應用中,為了提升性能,現有技術一般都使用硬件來實現,如使用FPGA(Field-ProgrammableGrateArray,現場可編程門陣列)來實現,但為了讓產品取得更好的性能提升,找到ー種更好的方法來提升性能一直是業(yè)界需要解決的問題。
發(fā)明內容本發(fā)明的實施例提供一種規(guī)則匹配方法和裝置,用于解決現有技術存在著的基于DPI技術的產品的性能仍然有待提升的問題。為達到上述目的,本發(fā)明的實施例采用如下技術方案一種規(guī)則匹配方法,包括接收報文;檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的一個規(guī)則組的分類特性,所述多個規(guī)則組中的每個規(guī)則組由一條或多條規(guī)則按預定的分類特性劃分后得到,每個所述規(guī)則組編譯后對應ー個狀態(tài)機,所述狀態(tài)機用于對所述報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性吋,將所述ー個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷所述第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有所述第一狀態(tài)機時,將所述第一狀態(tài)機從片外存儲器加載到片內存儲器,使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果。一種規(guī)則匹配裝置,包括接收單元,用于接收報文;檢測單元,檢測所述接收単元接收的所述報文中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組的ー個規(guī)則組的分類特性,并將檢測結果發(fā)送給匹配単元,其中,所述規(guī)則組為多個,由一條或多條規(guī)則按預定的分類特性劃分后得至IJ,每個所述規(guī)則組編譯后對應ー個狀態(tài)機以及狀態(tài)機標識,所述狀態(tài)機用于對所述報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;匹配単元,根據所述檢測單元發(fā)送的所述檢測結果得知當所述檢測単元當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性吋,將所述ー個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷所述第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有所述第一狀態(tài)機時,將所述第一狀態(tài)機從片外存儲器加載到片內存儲器,使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果。本發(fā)明實施例提供的規(guī)則匹配方法和裝置中,對規(guī)則進行了分組,這樣可以避免規(guī)則爆炸問題;將常用的狀態(tài)機存儲在片內存儲器,匹配時優(yōu)先使用片內存儲器中的狀態(tài)機進行匹配,可以縮短匹配時間(片內處理器讀寫速度快),提升產品性能。為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I為現有技術中規(guī)則編譯成NFA的結構圖;圖2為現有技術中規(guī)則編譯成DFA的結構圖;圖3為本發(fā)明實施例I中一種規(guī)則匹配方法的流程圖;圖4為本發(fā)明實施例2中一種規(guī)則匹配方法中,一種對規(guī)則進行分組的方法的流程圖;圖5為本發(fā)明實施例2中基于圖4的劃分方法對應的檢測方法的流程圖;圖6為本發(fā)明實施例3中一種規(guī)則匹配方法中,一種對規(guī)則進行分組的方法的流程圖;圖7為本發(fā)明實施例3中對規(guī)則進行分組的方法中生成的規(guī)則組一的特征表示例圖;圖8為本發(fā)明實施例3中基于圖6的劃分方法對應的檢測方法的流程圖;圖9為本發(fā)明實施例3中對規(guī)則進行分組的方法中生成的規(guī)則組ニ的特征表示例圖;圖10為本發(fā)明實施例3中對規(guī)則進行分組的方法中生成的規(guī)則組三的特征表示例圖;圖11為本發(fā)明實施例3中一種規(guī)則匹配方法中邏輯與運算結果示例圖;圖12為本發(fā)明實施例4中一種規(guī)則匹配裝置的結構圖;圖13為本發(fā)明實施例5中另ー種規(guī)則匹配裝置的結構圖;圖14為本發(fā)明實施例6中又一種規(guī)則匹配裝置的結構圖15為本發(fā)明實施例6中還又ー種規(guī)則匹配裝置的結構圖;圖16為本發(fā)明實施例7中一種硬件架構結構圖。具體實施例方式下面結合附圖對本發(fā)明實施例一種規(guī)則匹配方法和裝置進行詳細描述。實施例I本發(fā)明實施例提供一種規(guī)則匹配方法,如圖3所示,該方法包括如下步驟301、接收報文;302、檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性,所述多個規(guī)則組中的每個規(guī)則組由一條或多條規(guī)則按預定的分類特性劃分后得到,每個所述規(guī)則組編譯后對應ー個狀態(tài)機,所述狀態(tài)機用于對所述報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;這里的片內存儲器是指固化在處理芯片(如FPGA)內部的存儲器,讀寫速度快,片外存儲器是指獨立與芯片內部的存儲器(如DDRSDRAM,雙倍速率同步動態(tài)隨機存儲器,或者flash存儲器),讀寫速度相對于片內的較慢。為了取得更好的性能,本實施例優(yōu)選使用FPGA內存的存儲器作為片內存儲器,選用DDRSDRAM作為片外存儲器。如果對性能要求不高,也可以使用flash等速度相對慢一點的存儲器作為片外存儲器。FPGA芯片內部的存儲器以及DDRSDRAM一般都是易失性存儲器,所以需要在上電時將存儲在其他存儲介質中的狀態(tài)機加載到這些存儲器當中,然后如果片內外存儲器為非易失性存儲介質時(如片外為flash存儲器吋),也可以事先將狀態(tài)機存儲在那里。步驟302中,可以認為已經通過加載流程將存儲在其他介質當中的狀態(tài)機存儲到了片內外存儲器當中。303、當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性吋,將所述一個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷所述第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有所述第一狀態(tài)機時,將所述第一狀態(tài)機從片外存儲器加載到片內存儲器,使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果??蛇x的,片內存儲器又可包括兩種,ー種是靜態(tài)的,里面的內容不會在程序運行過程更新的存儲器(這里稱“靜態(tài)片內存儲器”),即只要加載狀態(tài)后,就會一直存儲在那里。另ー種是動態(tài)的,里面的內容會在程序運行過程中更新的存儲器,稱為“cache”緩存區(qū)域,會根據狀態(tài)機使用頻率更新里面的內容,如有些狀態(tài)機需要不斷地從片外存儲器加載進來,則會更新這些狀態(tài)機到cache中,或者有些cache中的狀態(tài)機很長一段時間內都沒使用,則會將這些長期沒被使用的狀態(tài)機從cache中清除?;谶@種片內存儲器架構,本實施例在判斷第一狀態(tài)機是否存儲在片內存儲器吋,先判斷是否存儲在靜態(tài)片內存儲器,如果是,則判斷是在片內,如果否,再判斷是否在cache中,如果是,則也判斷在片內,否則,判斷在片夕卜。當判斷在片內存儲器時,那么就可以使用存儲在靜態(tài)片內存儲器或者cache中的狀態(tài)機進行匹配。當判斷在片外存儲器時,將所述第一狀態(tài)機從所述片外存儲器加載到cache中進行匹配。當然,如果片內存儲器沒有這種架構的話,那么只需要判斷一次即可,這里不再贅述??蛇x的,本實施例還可以基于多線程技術使用第一狀態(tài)機進行匹配。例如,使用多線程中的一個線程來用第一狀態(tài)機進行匹配,其他線程用其他狀態(tài)機進行匹配,這樣可以并發(fā)執(zhí)行多個匹配,從而加快匹配速度。本實施例將規(guī)則按多個規(guī)則按同一分類特性劃分編譯成狀態(tài)機,從而可以避免出現規(guī)則爆炸的情況;同時,按狀態(tài)機的使用頻率將狀態(tài)機分別存儲在片內外存儲器,在匹配過程中先找片內的狀態(tài)機進行匹配,再找片內的狀態(tài)機進行匹配,可以滿足大容量的存儲需求(片內存儲器容量較大),又兼顧了速度的要求(片內速度快),從而可以更好地提升了產品性能。實施例2在實施例I中,多個規(guī)則組中的每個規(guī)則組由一條或多條規(guī)則按預定的分類特性劃分后得到,這種劃分可以采用多種規(guī)則,本實施例將對其中一種規(guī)則具體的劃分方法以及基于這種劃分方法對應的檢測方法進行具體介紹,需要說明的是,這種劃分方法以及基于這種劃分方法對應的檢測方法并不一定限定在實施例I所在的應用場景,也可以應用在其他需要用到劃分以及檢測的場景中,即本實施例可以單獨地存在并解決相應的技術問題,并非一定要依賴于實施例I。如圖4所示,本實施例將一條或多條規(guī)則按預定的分類特性劃分成多個規(guī)則組包括如下步驟401、確定一條或多條規(guī)則中的每條規(guī)則的區(qū)別特征,使得一條或多條規(guī)則中存在盡可能多的不具備所述區(qū)別特征的其它規(guī)則,將具備相同區(qū)別特征的規(guī)則劃分為ー組,其中,區(qū)別特征為規(guī)則中從ー個偏移量開始的ー個或多個預定數量的連續(xù)字符;這里如果只有“一條”規(guī)則,那么顯然單獨劃分為ー組就可以了,這里為了說明方便,將這種例外與“多條”情況一起描述,針對“一條”的情況,本步驟中的“其他規(guī)則”理解為沒有規(guī)則即可。上述方案的意思也可以理解為將一條或多條與其他盡可能多的規(guī)則相比具備不同區(qū)別特征的規(guī)則分為ー組,其中,所述區(qū)別特征為從ー個偏移量開始的一個或多個預定數量的連續(xù)字符;如何確定區(qū)別特征,使得一條或多條規(guī)則中存在盡可能多的不具備該區(qū)別特征的其它規(guī)則,并將具備相同區(qū)別特征的規(guī)則劃分為ー組的具體實現為本領域技術人員所公知的技木,即本領域技術人員可以很容易通過技術手段來實現這個結果。例如可以是確定ー個規(guī)則的區(qū)別特征,然后遍歷一遍其他的規(guī)則是否具有該特征,如果都沒有,那么顯然可以滿足“使得一條或多條規(guī)則中存在盡可能多的不具備該區(qū)別特征的其它規(guī)則”的要求,將具備該區(qū)別特征規(guī)則單獨分成ー組即可,如果還有其他規(guī)則也具備該區(qū)別特征,那么就可以換個區(qū)別特征,如換ー下連續(xù)字符的偏移量或者預定數量。如果仍然有其他規(guī)則跟具備該區(qū)別特征,那么就確定ー個區(qū)別特征,能夠使得一條或多條規(guī)則中存在“盡可能多”的不具備該區(qū)別特征的其它規(guī)則即可,如總共4條規(guī)則,規(guī)則I有3個區(qū)別特征,對于規(guī)則I的區(qū)別特征1,其他規(guī)則中存在2條不具備區(qū)別特征I的規(guī)則;對于規(guī)則I的區(qū)別特征2,其他規(guī)則中存在2條不具備區(qū)別特征2的規(guī)則;對于規(guī)則I的區(qū)別特征3,其他規(guī)則中存在I條不具備區(qū)別特征3的規(guī)則,此時,就可以選區(qū)別特征I或2作為分組的依據。除了上述先定初值,再遍歷的確定區(qū)別特征方式外,本領域技術人員也可以采用其他算法來實現最后的區(qū)別特征確定及規(guī)則組的劃分,這里并不進行詳細說明,只描述最后劃分后的結果,即如果一條規(guī)則與其他盡可能多的規(guī)則(如其他全部規(guī)則)相比,具備獨有的區(qū)別特征,那么將這條規(guī)則單獨分為一組。舉個例子,假設區(qū)別特征中連續(xù)字符的預定數量為2,偏移量從O開始算,并假設有如下4個規(guī)則規(guī)則IAbcce;規(guī)則2:Abced;規(guī)則3:Bbcde;規(guī)則4:Bbced;可以看到,規(guī)則I中,從偏移量2開始,2個連續(xù)的字符為“cc”,這兩個連續(xù)的字符與其他規(guī)則中從該偏移量開始的2個連續(xù)字符都不相同(第2條規(guī)則中為“ce”,第3條規(guī)則中為“Cd”,第4條規(guī)則中也是“cd”),那么就可以將規(guī)則I單獨劃分為ー組,因為存在與其他所有規(guī)則相比,都不同的區(qū)別特征,符合“盡可能多”原則。如果找不出與其他所有規(guī)則(假設其他規(guī)則總共N條規(guī)則)相比都具有不同的區(qū)別特征的一條規(guī)則,那么“盡可能多”的意思就是退一歩,找是否與其他N-I條規(guī)則相比具有不同的區(qū)別特征。例如,仍然針對上述4條規(guī)則,可以看到規(guī)則2并不具備與其他3條規(guī)則相比都有區(qū)別的區(qū)別特征(偏移量O開始的2個字符“ab”與規(guī)則I中的字符重復,偏移量1,2,3開始的2個字符“bc”,“ce”,“ed”分別與規(guī)則3,4,4中的字符重復),因此,退一歩,找與其他2條規(guī)則(原來是3條,現在減I條)不同的區(qū)別特征,例如,規(guī)則2在從偏移量2開始的2個字符“ce”僅僅與規(guī)則4中對應偏移量上的兩個字符的相同,與規(guī)則1,3這兩條規(guī)則中的都不同,則可以將這個作為自己的區(qū)別特征,將規(guī)則2劃分為ー個規(guī)則組。需要說明的是,此時,也有可能存在其他的規(guī)則也具有該區(qū)別特征,如規(guī)則4中,從偏移量2開始的2個字符也是“ce”,則也可以將規(guī)則4與規(guī)則2—起劃分成一組??偠灾?,本實施例中的分組原則為盡量將ー些具有“獨特”的區(qū)別特征的規(guī)則分為ー組,這里的“獨特”最好是指該區(qū)別特征其他規(guī)則都不具備的;如果不滿足時,可以放松限定,選“盡量獨特”的區(qū)別特征,即具備這個區(qū)別特征的其他規(guī)則最少最好。需要說明的是,上述方式是ー種優(yōu)選方式,實際應用中,如果有一條或多條規(guī)則不滿足嚴格的“獨特”(如一開始就不找與其他所有規(guī)則不同,而找其他所有規(guī)則減I條規(guī)則不同),也是可以的,可以認為這是ー種等同的實現手段。402、將所述區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,并將所述關鍵字存儲在所述偏移量對應的存儲空間。其中,當一條或多條規(guī)則存在多個區(qū)別特征時,選取所述多個區(qū)別特征中其中一個區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,其中,選取的所述其中ー個區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字數量相比于所述多個區(qū)別特征中除所述其中一個區(qū)別特征外其他區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字盡量少。例如,如果規(guī)則組在偏移量O存在區(qū)別特征,偏移量3也存在區(qū)別特征,如果在偏移量O的存儲空間相對于偏移量3的存儲空間要小時,則將偏移量3上的區(qū)別特征作為所述規(guī)則組的關鍵字。403、對所述規(guī)則組的關鍵字進行哈希運算,得到對應于所述規(guī)則組的預定哈希值,在與所述預定哈希值對應的存儲地址上存儲所述關鍵字,其中,所述預定哈希值與所述存儲地址符合預定對應關系。如圖5所示,基于上述規(guī)則組分類方法,相應的“檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性”包括如下步驟501、計算所述報文中每ー個偏移量上所述預定數量的連續(xù)字符的當前哈希值;502、查找與所述當前哈希值對應的當前存儲地址是否有所述預定數量的連續(xù)字符,其中,所述當前哈希值與所述當前存儲地址符合所述預定對應關系;503、如果有,則判斷檢測得到的所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;504、如果沒有,則判斷檢測得到的所述報文中的特征信息不符合預設的規(guī)則組的分類特性。本實施例通過特定的劃分方法以及基于哈希表查找的方法可以根據報文中的特征信息快速地判斷得到使用哪個狀態(tài)機對報文進行匹配。實施例3本實施例將對其中另ー種規(guī)則具體的劃分方法以及基于這種劃分方法對應的檢測方法進行具體介紹,與實施例2類似,這種劃分方法以及基于這種劃分方法對應的檢測方法并不一定限定在實施例I所在的應用場景,也可以應用在其他需要用到劃分以及檢測的場景中,即本實施例可以單獨地存在并解決相應的技術問題,并非一定要依賴于實施例I以及實施例2。參見圖6,具體分組方法以及基于該分組方法執(zhí)行的一些其他預處理步驟如下601、將從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組??蛇x的,在進行分組之前,根據是協(xié)議類型和/或是否是熱規(guī)則將對規(guī)則進行劃分,得到一個或多個規(guī)則集,然后將每個規(guī)則集中從相同偏移量開始,具有盡量多相同字符的一個或多個規(guī)則劃分為一組。例如協(xié)議識別中的協(xié)議規(guī)則本身是TCP/UDP(TransmissionControlProtocol/UserDatagramProtocol傳輸控制協(xié)議/用戶數據包協(xié)議),是否為該設備上的熱規(guī)則,所述熱規(guī)則即經常被匹配到的規(guī)則。獲得的規(guī)則組要保證在編譯生成狀態(tài)機之后,狀態(tài)機所占用的空間不能超過預設值,所述預設值是該狀態(tài)機最終在外存中所占用的空間。在對規(guī)則進行分組時,從相同偏移量開始,要盡量將盡量多相同字符的ー個或多個規(guī)則劃分為一組。其中,所述盡量多相同字符,就是從相同偏移量開始,連續(xù)有盡量多相同字符的規(guī)則分為一組。例如以下規(guī)則規(guī)則I:·abed規(guī)則2.abcdmn規(guī)則3.abmn規(guī)則4.....abed其中規(guī)則I和2在偏移量為I到4的時候,字符信息都是a、b、C、d。而規(guī)則4雖然與規(guī)則I有完全相同的字符信息,但是沒有在相同的偏移量上。另外雖然規(guī)則3與規(guī)則1、2在偏移量為I和2上,具有相同的字符信息a和b,但是以盡量多相同字符為準則,將規(guī)則I和2分為ー組,規(guī)則3分到另外ー組,規(guī)則4也分到另外的一組。對于在整個規(guī)則集中經常出現的字符C0MM0N_CHAR(常用字符),例如協(xié)議識別中的0x00,分組時需要特別處理,不要讓太多組里同時出現每個位置都有C0MM0N_CHAR的情況。而且在分組之后,對ー些比較小的規(guī)則組或者分類特性很接近的規(guī)則組可以合并在一起,以降低規(guī)則組的個數,便于減小步驟602生成的每個規(guī)則組對應特征表的大小。602、生成與每個規(guī)則組對應的特征表,特征表包括多個ニ維表項,每個ニ維表項包括偏移量以及字符,當規(guī)則組中的有規(guī)則在特定偏移量有特定字符時,設置對應于特定偏移量及特定字符的ニ維表項的值為有效值;當規(guī)則組中沒有規(guī)則在特定偏移量有特定字符時,設置對應于特定偏移量及特定字符的ニ維表項的值為無效值;具體的,ニ維表項的具體實現形式可以采用ニ維數組,如定義如下的特征表table[O][‘a,]table[O][‘b,]......table[‘A,]......其中,table[‘a’]為一個ニ維表項,table為表項名,可自定義;該ニ維表項包括偏移量(O)以及字符(a),為了表示方便,這里用‘a’表示這個字符a被轉化成ー個ASCII碼后的數值,但實際上,這個ASCII碼仍然對應著a這個字符,即仍可認為ニ維數據包括字符a。參見圖7,為了表不方便,本實施例使用ニ維圖表來表不邏輯意義上的特征表,圖7中,橫軸為偏移量信息(從O開始數),縱軸為字符信息,每個橫軸縱軸交叉的格子等同于上述所說的ニ維表項,每個交叉格子值就是ニ維表項對應的值。例如,圖7中第二排從左數起(從I開始數)第2個標記為I的方格,由于對應的橫軸是偏移量1,對應的字符是b,因此,該交叉格就等同于table[I][‘b’],該表項對應的值為I。圖7中,示出了0-4共5個偏移量,實際當中,每條規(guī)則的長度不同,這里的偏移量也會有所不同,這里并不限定。同理,縱軸中的字符個數這里也不限定,實際當中,一般都會對應所有ASCII中的字符,但是如果實際應用中確定只需要使用其中一部分字符,那么也可以僅包括這部分字符。圖7中的每個交叉格(ニ維表項)需要對應ー個有效值或無效值,為了表示方便,本實施例用I表示有效值,O表示無效值。填寫的依據是看規(guī)則組中是否有規(guī)則在特定偏移量上有特定字符,如果有,則填1,否則,填O。例如,圖7為ー個規(guī)則組對應的特征表,該規(guī)則組包括abc.s,abxyt,ab.mn三條規(guī)則,那么,對于ニ維表項table[O][‘a’],由于第I個規(guī)PJCabc.s)中在偏移量O上有字符a,因此,table[O][‘a’]置為1,即圖7中橫軸為0,縱軸為a的交叉格置1,需要說明的是,這里是依據第I個規(guī)則來置1,實際中,也可以利用第2個或者第3個規(guī)則來置偏移量O,字符為O的ニ維表項對應值為1,因為這些規(guī)則偏移量O上的字符都是a,S卩,只要有任何一個規(guī)則符合條件,都可以將ニ維表項table[‘a’]置Io同理,偏移量為2,字符為c的ニ維表項table[2][‘c’]也為I;偏移量為2,字符為X的ニ維表項table[2][‘X’]也為I。而由于三個規(guī)則中,并沒有符合偏移量為I,字符為a(三個規(guī)則在偏移量I上都是字符b),因此,ニ維表項table[I][a]對應的值為0,即圖7中橫軸為1,縱軸b的交叉格的值為I。此外,規(guī)則中可以會出現ー些通配符,例如’可以表示匹配任何字符,對于規(guī)則abc.s,在偏移量為3的位置上,有一個通配符’,即表不在該偏移量位置可以是任何字符,因此,對應于該偏移量的ニ維表項(如table[3][‘a’],table[3][‘b’],table[3][‘c’]……)都置I。603、生成與每個規(guī)則組對應的結果比特位?;谏鲜鲆?guī)則組分類方法以及ー些預處理步驟(如602),參見圖8,相應的“檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性”包括如下步驟801、將所述報文中的每個偏移量上的每個字符與每個規(guī)則組中對應的特征表中的ニ維表項進行匹配,如果包括當前偏移量以及當前字符的ニ維表項對應的值為有效值,則匹配成功,否則,匹配失?。?02、當為第一次匹配吋,將對應于用于匹配的規(guī)則組的結果比特位的值設置為匹配結果的值,其中,當匹配成功時,所述匹配結果為1,匹配失敗時,匹配結果為O;當不為第一次匹配時,更新對應于用于匹配的規(guī)則組的結果比特位的值,更新后的值為先前的值與所述匹配結果進行“與”運算后得到的值;803、當所述結果比特位最后為I時,確定所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;當所述結果比特位最后為O時,確定所述報文中的特征信息不符合預設的規(guī)則組的分類特性。下面通過具體的例子進行介紹。例如所述報文內的字符信息為tamny,規(guī)則組一中的規(guī)則為abc.s,abxyt,ab.mn,特征表如圖7所示;規(guī)則組ニ中的規(guī)則為..mny,stmny,特征表如圖9所示;規(guī)則組三中的規(guī)則為xxxxy,x.bxy,特征表如圖10所示。將“tamny”與上述三個規(guī)則組對應的特征表中的對應偏移量上的字符信息進行匹配,各個規(guī)則組分別對應ー個生成的結果比特位,具體流程如下a)將報文中每個偏移量上每個字符與規(guī)則組中的ニ維表項匹配;即對于報文中的tamny,將各個偏移量上的字符與各個規(guī)則組進行匹配,可以ー個一個匹配,也可以一次同時匹配三個;如果包括當前偏移量以及當前字符的ニ維表項對應的值為有效值,則認為匹配成功,否則,匹配失敗。例如,報文中偏移量為O的字符為t,各規(guī)則中,只有規(guī)則組ニ中二維表項table2[‘t’]對應的值為有效值(I),則認為匹配成功;如果為無效值,則認為匹配失敗;b)當為第一次匹配吋,將對應于用于匹配的規(guī)則組的結果比特位的值設置為匹配結果的值,其中,當匹配成功時,所述匹配結果為1,匹配失敗時,匹配結果為O;對于報文tamny,第一次匹配可以從偏移量為O的t開始,由于規(guī)則組ニ對應的table2[‘t’]對應的值為I,則認為匹配成功,匹配結果為I,將規(guī)則組ニ對應的結果比特位bit2的值設置為匹配結果的值,即bit2=l。反之,由于tablel[‘t’],table3[O][‘t’]對應的值都為0,所以認為匹配失敗,匹配結果為0,將規(guī)則組一、三分別對應的結果比特位bitl,bit3分別置O。c)當不為第一次匹配時,更新對應于用于匹配的規(guī)則組的結果比特位的值,更新后的值為先前的值與所述匹配結果進行與運算后得到的值;例如,報文中偏移量為I的字符為a,規(guī)則組ニ中的ニ維表項table2[l][‘a’]對應的值為1,則匹配成功,匹配結果為1,則更新規(guī)則組ニ對應的結果比特位bit2,更新后的值為先前的值(I)與匹配結果(I)進行與運算后得到的值,I與I后結果仍為I,因此,更新后的bit2值為I。對于bitl,tablel[l][‘a’]對應的值為0,匹配失敗,匹配結果為0,O與先前的結果比特位的值O進行與運算后,最后bitl結果為O;對于bit3,table3[l][‘a’]對應的值為1,匹配結果為1,I與先前的結果比特位的值O進行與運算后,最后bit3結果為O0進行多次與運算后,看各結果比特位最后的結果,如果為1,則認為符合分類特性,否則,如果為0,則認為不符合分類特性。參見圖11,為上述例子匹配過程中,各結果比特位變化示意圖,規(guī)則組一、ニ、三分別對應于圖中所示比特位bitl,bit2,bit3。在偏移量為O時,報文tamny中的t與規(guī)則組一、三不匹配與規(guī)則組ニ匹配,因此,置bitl、bit3為O,置bit2為I;在偏移量為I時,報文tamny中的a與規(guī)則組ー不匹配,與規(guī)則組ニ、三匹配,匹配結果為分別為011,與前次結果比特位010相與后,更新后的各結果比特位010;在偏移量為2時,報文tamny中的m與規(guī)則組一、ニ匹配,與規(guī)則組三不匹配,匹配結果分別為110,前與次結果比特位010相與后,更新后的各結果比特位為010;后面依次按上述方法運算,最后各結果比特位為010,即bitl=0,bit2=l,bit3=0,即報文中的特征信息符合規(guī)則組二分類特性,不符合規(guī)則組一、三分類特性。需要說明的是,上述比特運算的實現方式并不唯一,本領域技術人員在實現時,可以如圖11所示的一次對多個結果比特位進行運算,也可以將這些結果比特位分別運算。此夕卜,本領域技術人員也容易注意到,由于無論O或1,只要與O相與,最后的結果一定為0,因此,如果匹配結果中有0,可直接置該結果比特位最終結果為0,這些方式或其他類似的方式都可視為本實施例等同方式。通過本實施例,可以統(tǒng)ー對各規(guī)則組對應的結果比特位進行處理,便于軟件實現。本實施例通過特定的劃分方法以及基于比特位運算可以根據報文中的特征信息快速地判斷得到使用哪個狀態(tài)機對報文進行匹配。實施例4基于上述各實施例,本實施例提供了一種規(guī)則匹配裝置12,用于執(zhí)行上述各實施例的方法流程,參見圖12,包括接收單元121,用于接收報文;檢測單元122,檢測接收單元121接收的報文中的特征信息,判斷檢測得到的報文中的特征信息是否符合預設的多個規(guī)則組的ー個規(guī)則組的分類特性,并將檢測結果發(fā)送給匹配単元,其中,規(guī)則組為多個,由一條或多條規(guī)則按預定的分類特性劃分后得到,每個規(guī)則組編譯后對應ー個狀態(tài)機以及狀態(tài)機標識,狀態(tài)機用于對報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;匹配単元123,根據檢測単元122發(fā)送的檢測結果得知當檢測單元當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性時,將ー個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用第一狀態(tài)機對報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有第一狀態(tài)機時,將第一狀態(tài)機從片外存儲器加載到片內存儲器,使用第一狀態(tài)機對報文進行匹配,得到匹配結果。本實施例檢測單元以及匹配単元具體可以基于FPGA實現,片內存儲器使用FPGA自帶的存儲器,片外存儲器使用DDRSDRAM,以取得更好的性能。如何基于FPGA實現上述功能模塊屬于本領域技術人員公知的技木,這里不再贅述。實施例5基于實施例4,如圖13所示,本實施例的規(guī)則匹配裝置12還包括第一分組單元123,用于確定一條或多條規(guī)則中的每條規(guī)則的區(qū)別特征,使得一條或多條規(guī)則中存在盡可能多的不具備該區(qū)別特征的其它規(guī)則,將具備相同區(qū)別特征的規(guī)則劃分為ー組,其中,區(qū)別特征為規(guī)則中從ー個偏移量開始的ー個或多個預定數量的連續(xù)字符。第一分組單元的功能可以基于現有的編譯器實現。本實施例的規(guī)則匹配裝置12還可以包括關鍵字處理單元124,用于將區(qū)別特征中預定數量的連續(xù)字符作為規(guī)則組的關鍵字,并將關鍵字存儲在偏移量對應的存儲空間。該單元也可以基于現有的編譯器實現。這里的存儲空間為片內的存儲空間,如果片內存儲器是易失性的,則可以事先存儲在其他介質,然后運行的時候拷貝到片內存儲器,事先生成的空間地址與最終拷貝到片內存儲空間的地址一一對應。哈希值計算單元125,用于對關鍵字處理單元124處理得到的規(guī)則組的關鍵字進行哈希運算,得到對應于規(guī)則組的預定哈希值,在與預定哈希值對應的存儲地址上存儲關鍵字,其中,預定哈希值與存儲地址符合預定對應關系。本単元具體可以基于FPGA實現。檢測單元122具體包括哈希值計算子単元1221,用于計算報文中每ー個偏移量上預定數量的連續(xù)字符的當前哈希值;查找單元1222,用于查找與哈希值計算子單元計算得到的當前哈希值對應的當前存儲地址是否有預定數量的連續(xù)字符,其中,當前哈希值與當前存儲地址符合預定對應關系;第一判斷単元1223,如果有,則判斷檢測得到的報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;如果沒有,則判斷檢測得到的報文中的特征信息不符合預設的規(guī)則組的分類特性。其中,本實施例中的第一分組單元123還用于,當一條或多條規(guī)則存在多個區(qū)別特征時,選取多個區(qū)別特征中其中ー個區(qū)別特征中預定數量的連續(xù)字符作為規(guī)則組的關鍵字,其中,選取的其中一個區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字數量相比于多個區(qū)別特征中除其中一個區(qū)別特征外其他區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字盡量少。實施例6基于實施例4,如圖14所示,本實施例的規(guī)則匹配裝置還包括第二分組單元126,用于將從相同偏移量開始具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。本實施例的規(guī)則匹配裝置還包括第三分組單元127,用于根據是否是協(xié)議類型和/或是否是熱規(guī)則將對規(guī)則進行劃分,得到一個或多個規(guī)則集,一個規(guī)則集包含ー個或多個規(guī)則;將每個規(guī)則集中包含的規(guī)則中從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。上述兩個分組單元是并列的關系,即可以只包括其中ー個,該兩個單元都可以基于現有的編譯器實現。本實施例的規(guī)則匹配裝置還可以包括特征表生成単元128,用于生成與每個規(guī)則組對應的特征表,特征表包括多個ニ維表項,每個ニ維表項包括偏移量以及字符,當規(guī)則組中的有規(guī)則在特定偏移量有特定字符時,設置對應于特定偏移量及特定字符的ニ維表項的值為有效值;當規(guī)則組中沒有規(guī)則在特定偏移量有特定字符時,設置對應于特定偏移量及特定字符的ニ維表項的值為無效值。本単元可以基于現有的編譯器實現。結果比特位生成単元129,用于生成與每個規(guī)則組對應的結果比特位.本単元可以基于FPGA實現。檢測單元122包括特征表匹配単元1224,用于將報文中的每個偏移量上的每個字符與每個規(guī)則組中對應的特征表中的ニ維表項進行匹配,如果包括當前偏移量以及當前字符的ニ維表項對應的值為有效值,則匹配成功,否則,匹配失??;結果比特位設置単元1225,用于當為第一次匹配吋,將對應于用于匹配的規(guī)則組的結果比特位生成単元生成的結果比特位的值設置為匹配結果的值,其中,當特征表匹配単元判斷匹配成功吋,匹配結果為1,當特征表匹配単元判斷匹配失敗時,匹配結果為O;當不為第一次匹配時,更新對應于用于匹配的規(guī)則組的結果比特位的值,更新后的值為先前的值與匹配結果進行“與”運算后得到的值;第二判斷単元1226,用于當經過結果比特位設置単元處理后,結果比特位最后為I吋,確定報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;當結果比特位最后為O吋,確定報文中的特征信息不符合預設的規(guī)則組的分類特性?;谏鲜鰧嵤├?-6,各實施例中的片內存儲器包括靜態(tài)片內存儲器以及cache,靜態(tài)片內存儲器中的內容不會在程序運行過程中更新,cache中的內容會在程序運行過程當中更新;則如圖15所示的規(guī)則匹配裝置中檢測單元122包括存儲器判斷單元1227,用于判斷是否存儲在靜態(tài)片內存儲器,如果是,則判斷是在片內;如果否,再判斷是否在cache中,如果是,則判斷在片內,否則,判斷在片外。此外,基于上述實施例4-6中的匹配単元基于多線程技術使用第一狀態(tài)機對所述報文進行匹配。上述裝置可以取得方法實施例中相應的有益效果,對于各個單元具體執(zhí)行步驟的描述,可以參考相應的實施例,這里不再贅述。本實施例為了取得更好地性能,使用FPGA這種硬件處理器來處理,本領域技術人員也可以根據實際對性能方面的要求使用其他類似的處理器來實現,這里不進行具體介紹。實施例7基于上述各實施例,本實施例介紹ー種典型的硬件架構來實現上述各實施例中的方法或各功能模塊,如圖16所示,包括FPGA芯片161,編譯器162。其中,FPGA芯片161用于完成運行過程當中的處理功能;編譯器162主要用于完成分組、編譯、以及ー些運行時需要運行的數據的生成(如上述實施例介紹的特征表生成,關鍵字存儲等)。編譯器可以基于現有的編譯器(一般使用軟件處理)實現,即在現有的編譯器上增加一些軟件功能模塊來實現本實施例所需的方法流程及功能模塊,這些技術為本領域技術人員所公知的技木,這里不再贅述。以上各實施例,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術領域
的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以權利要求的保護范圍為準。權利要求1.一種規(guī)則匹配方法,其特征在于,包括接收報文;檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性,所述多個規(guī)則組中的每個規(guī)則組由一條或多條規(guī)則按預定的分類特性劃分后得到,每個所述規(guī)則組編譯后對應ー個狀態(tài)機,所述狀態(tài)機用于對所述報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性吋,將所述一個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷所述第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有所述第一狀態(tài)機吋,將所述第一狀態(tài)機從片外存儲器加載到片內存儲器,使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果。2.根據權利要求I所述的方法,其特征在于,所述按預定的分類特性劃分包括確定一條或多條規(guī)則中的每條規(guī)則的區(qū)別特征,使得所述一條或多條規(guī)則中存在盡可能多的不具備所述區(qū)別特征的其它規(guī)則,將具備相同區(qū)別特征的規(guī)則劃分為ー組,其中,所述區(qū)別特征為規(guī)則中從ー個偏移量開始的ー個或多個預定數量的連續(xù)字符。3.根據權利要求2所述的方法,其特征在于,還包括將所述區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,并將所述關鍵字存儲在所述偏移量對應的存儲空間;對所述規(guī)則組的關鍵字進行哈希運算,得到對應于所述規(guī)則組的預定哈希值,在與所述預定哈希值對應的存儲地址上存儲所述關鍵字,其中,所述預定哈希值與所述存儲地址符合預定對應關系;所述檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性包括計算所述報文中每ー個偏移量上所述預定數量的連續(xù)字符的當前哈希值;查找與所述當前哈希值對應的當前存儲地址是否有所述預定數量的連續(xù)字符,其中,所述當前哈希值與所述當前存儲地址符合所述預定對應關系;如果有,則判斷檢測得到的所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;如果沒有,則判斷檢測得到的所述報文中的特征信息不符合預設的規(guī)則組的分類特性。4.根據權利要求3所述的方法,其特征在于,還包括當一條或多條規(guī)則存在多個區(qū)別特征時,選取所述多個區(qū)別特征中其中ー個區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,其中,選取的所述其中一個區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字數量相比與所述多個區(qū)別特征中除所述其中一個區(qū)別特征外其他區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字盡量少。5.根據權利要求I所述的方法,其特征在于,所述按預定的分類特性劃分包括將從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。6.根據權利要求I所述的方法,其特征在于,所述按預定的分類特性劃分包括根據是否是協(xié)議類型和/或是否是熱規(guī)則將對規(guī)則進行劃分,得到一個或多個規(guī)則集,一個規(guī)則集包含一個或多個規(guī)則;將每個規(guī)則集中包含的規(guī)則中從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。7.根據權利要求5或6所述的方法,其特征在于,所述方法還包括生成與每個規(guī)則組對應的特征表,所述特征表包括多個ニ維表項,每個ニ維表項包括偏移量以及字符,當所述規(guī)則組中有規(guī)則在特定偏移量有特定字符時,設置對應于所述特定偏移量及特定字符的ニ維表項的值為有效值;當所述規(guī)則組中沒有規(guī)則在特定偏移量有特定字符時,設置對應于所述特定偏移量及特定字符的ニ維表項的值為無效值;生成與每個規(guī)則組對應的結果比特位;所述檢測所述報文內容中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性包括將所述報文中的每個偏移量上的每個字符與每個規(guī)則組中對應的特征表中的ニ維表項進行匹配,如果包括當前偏移量以及當前字符的ニ維表項對應的值為有效值,則匹配成功,否則,匹配失敗;當為第一次匹配吋,將對應于用于匹配的規(guī)則組的結果比特位的值設置為匹配結果的值,其中,當匹配成功時,所述匹配結果為1,匹配失敗時,匹配結果為O;當不為第一次匹配時,更新對應于用于匹配的規(guī)則組的結果比特位的值,更新后的值為先前的值與所述匹配結果進行“與”運算后得到的值;當所述結果比特位最后為I時,確定所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;當所述結果比特位最后為O時,確定所述報文中的特征信息不符合預設的規(guī)則組的分類特性。8.根據權利要求1-7任一所述的方法,其特征在干,所述片內存儲器包括靜態(tài)片內存儲器以及緩存區(qū)域cache,所述靜態(tài)片內存儲器中的內容不會在程序運行過程中更新,所述cache中的內容會在程序運行過程當中更新;所述判斷所述第一狀態(tài)機是否存儲在片內存儲器包括判斷所述第一狀態(tài)機是否存儲在靜態(tài)片內存儲器,如果是,則判斷是在片內;如果否,再判斷是否在cache中,如果是,則判斷在片內,否則,判斷在片外。9.根據權利要求1-8任一所述的方法,其特征在干所述使用所述第一狀態(tài)機對所述報文進行匹配包括基于多線程技術使用所述第一狀態(tài)機對所述報文進行匹配。10.一種規(guī)則匹配裝置,其特征在于,包括接收單元,用于接收報文;檢測單元,檢測所述接收単元接收的所述報文中的特征信息,判斷檢測得到的所述報文中的特征信息是否符合預設的多個規(guī)則組的ー個規(guī)則組的分類特性,并將檢測結果發(fā)送給匹配単元,其中,所述規(guī)則組為多個,由一條或多條規(guī)則按預定的分類特性劃分后得到,每個所述規(guī)則組編譯后對應ー個狀態(tài)機以及狀態(tài)機標識,所述狀態(tài)機用于對所述報文進行匹配,其中,匹配時常用的狀態(tài)機存儲在讀寫速度較快的片內存儲器當中,其他狀態(tài)機存儲在讀寫速度較慢的片外存儲器當中;匹配単元,根據所述檢測單元發(fā)送的所述檢測結果得知當所述檢測単元當檢測得到的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性吋,將所述一個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷所述第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有所述第一狀態(tài)機時,將所述第一狀態(tài)機從片外存儲器加載到片內存儲器,使用所述第一狀態(tài)機對所述報文進行匹配,得到匹配結果。11.根據權利要求10所述的裝置,其特征在于,還包括第一分組單元,所述第一分組單元用干確定一條或多條規(guī)則中的每條規(guī)則的區(qū)別特征,使得所述一條或多條規(guī)則中存在盡可能多的不具備該區(qū)別特征的其它規(guī)則,將具備相同區(qū)別特征的規(guī)則劃分為ー組,其中,所述區(qū)別特征為規(guī)則中從ー個偏移量開始的ー個或多個預定數量的連續(xù)字符。12.根據權利要求11所述的裝置,其特征在于,還包括關鍵字處理單元,用于將所述區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,并將所述關鍵字存儲在所述偏移量對應的存儲空間;哈希值計算單元,用于對關鍵字處理單元處理得到的所述規(guī)則組的關鍵字進行哈希運算,得到對應于所述規(guī)則組的預定哈希值,在與所述預定哈希值對應的存儲地址上存儲所述關鍵字,其中,所述預定哈希值與所述存儲地址符合預定對應關系;所述檢測單元具體包括哈希值計算子単元,用于計算所述報文中每ー個偏移量上所述預定數量的連續(xù)字符的當前哈希值;查找單元,用于查找與所述哈希值計算子単元計算得到的所述當前哈希值對應的當前存儲地址是否有所述預定數量的連續(xù)字符,其中,所述當前哈希值與所述當前存儲地址符合所述預定對應關系;第一判斷単元,如果有,則判斷檢測得到的所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;如果沒有,則判斷檢測得到的所述報文中的特征信息不符合預設的規(guī)則組的分類特性。13.根據權利要求12所述的裝置,其特征在于,所述第一分組單元還用于,當一條或多條規(guī)則存在多個區(qū)別特征時,選取所述多個區(qū)別特征中其中ー個區(qū)別特征中預定數量的連續(xù)字符作為所述規(guī)則組的關鍵字,其中,選取的所述其中一個區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字數量相比于所述多個區(qū)別特征中除所述其中一個區(qū)別特征外其他區(qū)別特征中的偏移量對應的存儲空間中存儲的關鍵字盡量少。14.根據權利要求10所述的裝置,其特征在于,還包括第二分組單元,用于將從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。15.根據權利要求10所述的裝置,其特征在于,還包括第三分組單元,用于根據是否是協(xié)議類型和/或是否是熱規(guī)則將對規(guī)則進行劃分,得到一個或多個規(guī)則集,一個規(guī)則集包含一個或多個規(guī)則;將每個規(guī)則集中包含的規(guī)則中從相同偏移量開始,具有盡量多相同字符的ー個或多個規(guī)則劃分為一組。16.根據權利要求14或15所述的裝置,其特征在于,還包括特征表生成単元,用于生成與每個規(guī)則組對應的特征表,所述特征表包括多個ニ維表項,每個ニ維表項包括偏移量以及字符,當所述規(guī)則組中的有規(guī)則在特定偏移量有特定字符時,設置對應于所述特定偏移量及特定字符的ニ維表項的值為有效值;當所述規(guī)則組中沒有規(guī)則在特定偏移量有特定字符時,設置對應于所述特定偏移量及特定字符的ニ維表項的值為無效值;結果比特位生成単元,用于生成與每個規(guī)則組對應的結果比特位;所述檢測單元包括特征表匹配単元,用于將所述報文中的每個偏移量上的每個字符與每個規(guī)則組中對應的特征表中的ニ維表項進行匹配,如果包括當前偏移量以及當前字符的ニ維表項對應的值為有效值,則匹配成功,否則,匹配失敗;結果比特位設置単元,用于當為第一次匹配吋,將對應于用于匹配的規(guī)則組的所述結果比特位生成単元生成的結果比特位的值設置為匹配結果的值,其中,當所述特征表匹配単元判斷匹配成功時,所述匹配結果為1,當所述特征表匹配単元判斷匹配失敗時,匹配結果為O;當不為第一次匹配時,更新對應于用于匹配的規(guī)則組的結果比特位的值,更新后的值為先前的值與所述匹配結果進行“與”運算后得到的值;第二判斷単元,用于當經過所述結果比特位設置単元處理后,所述結果比特位最后為I時,確定所述報文中的特征信息符合預設的多個規(guī)則組中的ー個規(guī)則組的分類特性;當所述結果比特位最后為O時,確定所述報文中的特征信息不符合預設的規(guī)則組的分類特性。17.根據權利要求10-16任一所述的裝置,其特征在于,所述片內存儲器包括靜態(tài)片內存儲器以及cache,所述靜態(tài)片內存儲器中的內容不會在程序運行過程中更新,所述cache中的內容會在程序運行過程當中更新;所述檢測單元包括存儲器判斷単元,用于判斷所述第一狀態(tài)機是否存儲在靜態(tài)片內存儲器,如果是,則判斷是在片內;如果否,再判斷是否在cache中,如果是,則判斷在片內,否則,判斷在片外。18.根據權利要求10-17任一所述的裝置,其特征在于,所述匹配単元基于多線程技術使用所述第一狀態(tài)機對所述報文進行匹配。全文摘要本發(fā)明公開了一種規(guī)則匹配方法和裝置,涉及通信
技術領域
,解決現有技術存在著的基于DPI技術的產品的性能仍然有待提升的問題。方法包括接收報文;檢測報文內容中的特征信息,判斷檢測得到的報文中的特征信息是否符合預設的多個規(guī)則組中的一個規(guī)則組的分類特性;當符合時,將一個規(guī)則組對應的狀態(tài)機確定為第一狀態(tài)機;判斷第一狀態(tài)機是否存儲在片內存儲器,如果是,則使用第一狀態(tài)機對報文進行匹配,得到匹配結果;如果不是,當片外存儲器存儲有第一狀態(tài)機時,將第一狀態(tài)機從片外存儲器加載到片內存儲器,使用第一狀態(tài)機對報文進行匹配,得到匹配結果。本發(fā)明實施例可以讓產品取得更好的性能。文檔編號G06F17/30GK102868571SQ201210278778公開日2013年1月9日申請日期2012年8月7日優(yōu)先權日2012年8月7日發(fā)明者郭智,吳富強,曾佳,迪帕克·曼沙拉姆尼,約翰·科特斯,孫靈燕,田聃申請人:華為技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灵寿县| 丰顺县| 寿阳县| 瑞金市| 厦门市| 保康县| 德兴市| 兴宁市| 甘洛县| 台中县| 石河子市| 略阳县| 佛冈县| 连州市| 万全县| 新密市| 阿拉善左旗| 北宁市| 咸丰县| 噶尔县| 城步| 荣成市| 英山县| 康乐县| 莒南县| 灵璧县| 九台市| 若尔盖县| 平定县| 会宁县| 惠水县| 宜城市| 比如县| 开化县| 府谷县| 临桂县| 宁津县| 耒阳市| 姜堰市| 大悟县| 高尔夫|