專(zhuān)利名稱(chēng):基于規(guī)則集的報(bào)文處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于規(guī)則集的報(bào)文處理方法和裝置。
背景技術(shù):
現(xiàn)有技術(shù)通過(guò)網(wǎng)卡硬件直接進(jìn)行基于規(guī)則集的報(bào)文過(guò)濾、阻斷及上傳操作,但不 支持基于掩碼的規(guī)則集進(jìn)行報(bào)文過(guò)濾、阻斷及上傳操作?,F(xiàn)有技術(shù)中還沒(méi)有關(guān)于支持基于 掩碼的規(guī)則集進(jìn)行報(bào)文處理的方案。
發(fā)明內(nèi)容
針對(duì)相關(guān)技術(shù)中存在的一個(gè)或多個(gè)問(wèn)題,本發(fā)明的目的在于提供一種基于規(guī)則集 的報(bào)文處理方法和裝置,以解決上述問(wèn)題中的至少之一。 為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于規(guī)則集的報(bào)文處理方 法,該方法包括采用Trie算法對(duì)規(guī)則集進(jìn)行管理;將規(guī)則集中的掩碼采用特殊字符進(jìn)行 表示;在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并將轉(zhuǎn)換后的規(guī) 則與規(guī)則集進(jìn)行比較,其中,與規(guī)則集中的特殊字符的比較總是正確的;以及根據(jù)比較結(jié)果 確定規(guī)則是否與規(guī)則集匹配,并根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。
優(yōu)選地,可以將規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。
優(yōu)選地,特殊字符可以為非0、1字符。 優(yōu)選地,Trie算法能夠?qū)σ?guī)則集進(jìn)行以下至少一種操作添加規(guī)則的操作、刪除 規(guī)則的操作。 優(yōu)選地,在確定結(jié)果為規(guī)則與規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷
或上傳操作;以及在規(guī)則與規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。 為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種基于規(guī)則集的報(bào)文處
理裝置,該裝置包括規(guī)則集管理模塊,用于采用Trie算法對(duì)規(guī)則集進(jìn)行管理;掩碼替換模
塊,用于將規(guī)則集中的掩碼采用特殊字符進(jìn)行表示;匹配模塊,用于在接收到報(bào)文時(shí),從所
接收的報(bào)文提取規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并將轉(zhuǎn)換后的規(guī)則與規(guī)則集進(jìn)行比較,根據(jù)比
較結(jié)果確定規(guī)則是否與規(guī)則集匹配其中,與規(guī)則集中的特殊字符的比較總是正確的;以及
報(bào)文處理模塊,用于根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。 優(yōu)選地,可以將規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。 優(yōu)選地,特殊字符可以為非0、1字符。 優(yōu)選地,Trie算法能夠?qū)σ?guī)則集進(jìn)行以下至少一種操作添加規(guī)則的操作、刪除 規(guī)則的操作。 優(yōu)選地,在確定結(jié)果為規(guī)則與規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷 或上傳操作;以及在規(guī)則與規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。
借助本發(fā)明上述至少一個(gè)技術(shù)方案,通過(guò)采用Trie算法來(lái)管理規(guī)則集,能夠保存 大量的字符串,并利用字符串的公共前綴來(lái)節(jié)約存儲(chǔ)空間,并且能夠采用基于掩碼的規(guī)則集進(jìn)行報(bào)文的過(guò)濾、阻斷以及上傳操作,在本發(fā)明中,規(guī)則集的匹配效率高,匹配時(shí)間與規(guī) 矩集的大小、掩碼位置等無(wú)關(guān),只與規(guī)矩集的字符長(zhǎng)度相關(guān)。本發(fā)明彌補(bǔ)了現(xiàn)有技術(shù)中不存 在這種技術(shù)的缺陷并且能夠帶來(lái)以上技術(shù)效果。
圖1是根據(jù)本發(fā)明的Trie樹(shù)的示意圖;
圖2是根據(jù)本發(fā)明的在Trie樹(shù)中進(jìn)行插入操作的示意圖;
圖3是根據(jù)本發(fā)明的基于規(guī)則集的報(bào)文處理方法的流程圖;以及
圖4是根據(jù)本發(fā)明的基于規(guī)則集的報(bào)文處理裝置的框圖。
具體實(shí)施方式
功能概述 考慮到相關(guān)技術(shù)中存在的的問(wèn)題,本發(fā)明提出了一種基于規(guī)則集的報(bào)文處理方法
和裝置,通過(guò)采用Trie算法來(lái)管理規(guī)則集,能夠保存大量的字符串,并利用字符串的公共
前綴來(lái)節(jié)約存儲(chǔ)空間,并且對(duì)規(guī)則中的掩碼部分采用特殊字符進(jìn)行表示,軟件從接收到的
報(bào)文中提取到規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并將此規(guī)則與規(guī)則集進(jìn)行比較。在規(guī)則匹配時(shí),
與特殊字符的比較總是正確,進(jìn)行下一其他字符的比較,如果匹配規(guī)則集,則表示命中規(guī)
則,進(jìn)行報(bào)文過(guò)濾、阻斷或者上傳操作;如果不匹配規(guī)則集,按默認(rèn)操作對(duì)報(bào)文進(jìn)行后續(xù)處
理。在本發(fā)明中,規(guī)則集的匹配效率高,匹配時(shí)間與規(guī)矩集的大小、掩碼位置等無(wú)關(guān),只與規(guī)
矩集的字符長(zhǎng)度相關(guān)。采用基于掩碼的規(guī)則集進(jìn)行報(bào)文的過(guò)濾、阻斷以及上傳操作,彌補(bǔ)了
現(xiàn)有技術(shù)中不存在這種技術(shù)的缺陷。 以下簡(jiǎn)單介紹Trie算法中的Trie樹(shù) Trie是 一 種數(shù)字搜索樹(shù)(見(jiàn)用于數(shù)字搜索樹(shù)的詳情的[Knuth 1972]), [Fredkin1960]介紹了 trie術(shù)語(yǔ),其是"retrieval"的縮寫(xiě)。 Trie是有效的索引方法。它實(shí)際上還是一種決定性有限自動(dòng)機(jī)(DFA)(見(jiàn)[Cohen 1990,例如,用于DFA的限定])。在樹(shù)結(jié)構(gòu)中,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)DFA狀態(tài),從父節(jié)點(diǎn)到子 節(jié)點(diǎn)的每個(gè)(直接)標(biāo)記邊緣均對(duì)應(yīng)于DFA過(guò)渡。遍歷在根節(jié)點(diǎn)處開(kāi)始。然后,從頭到尾, 關(guān)鍵碼串中的一個(gè)接一個(gè)的字符被用于確定下一個(gè)狀態(tài)。標(biāo)記有相同字符的邊緣被選擇經(jīng) 過(guò)。注意,這樣經(jīng)過(guò)的每一步均消耗關(guān)鍵碼的一個(gè)字符并且使樹(shù)降低一個(gè)步驟。如果關(guān)鍵 碼被消耗了并且達(dá)到葉節(jié)點(diǎn),則達(dá)到了該關(guān)鍵碼的出口。如果在一些節(jié)點(diǎn)受到阻礙,這是因 為不存在我們擁有的標(biāo)記有當(dāng)前字符的分支,或者關(guān)鍵碼在內(nèi)部節(jié)點(diǎn)被消耗,則簡(jiǎn)單地暗 示了關(guān)鍵碼不被Trie識(shí)別。 需要注意的是,需要從根遍歷到葉的時(shí)間不取決于數(shù)據(jù)庫(kù)的大小,但是與關(guān)鍵碼 的長(zhǎng)度成比例。從而,在通常情況下,一般比B樹(shù)或任何基于比較的索引方法快很多。其時(shí) 間復(fù)雜性可以與散列法技術(shù)相比較。 Trie樹(shù)既可用于一般的字典搜索,也可用于索引查找。對(duì)于給定的一個(gè)字符串 al, a2, a3,. . . , an,則采用Trie樹(shù)搜索經(jīng)過(guò)n次搜索即可完成一次查找。不過(guò)好像還是沒(méi) 有B樹(shù)的搜索效率高,B樹(shù)搜索算法復(fù)雜度為logt(n+l/2)。當(dāng)t趨向大,搜索效率變得高 效。DB2的訪問(wèn)內(nèi)存設(shè)置為虛擬內(nèi)存的一個(gè)頁(yè)面大小,而且?guī)袚Q頻率降低,無(wú)需經(jīng)常的頁(yè)面切換。 Trie樹(shù)當(dāng)關(guān)鍵碼是可變長(zhǎng)時(shí),Trie樹(shù)是一種特別有用的索引結(jié)構(gòu)。
1、 Trie樹(shù)的定義如下 Trie樹(shù)是一棵度m^2的樹(shù),它的每一層分支不是靠整個(gè)關(guān)鍵碼的值來(lái)確定,而是 由關(guān)鍵碼的一個(gè)分量來(lái)確定。 如圖1所示的Trie樹(shù),關(guān)鍵碼由英文字母組成。它包括兩類(lèi)結(jié)點(diǎn)元素結(jié)點(diǎn)和分 支結(jié)點(diǎn)。元素結(jié)點(diǎn)包含整個(gè)key數(shù)據(jù);分支結(jié)點(diǎn)有27個(gè)指針,其中有一個(gè)空白字符'b',用 來(lái)終結(jié)關(guān)鍵碼;其它用來(lái)標(biāo)識(shí)'a' , 'b' , . . . , z'等26個(gè)英文字母。 在第0層,所有的關(guān)鍵碼根據(jù)它們第0位字符,被劃分到互不相交的27個(gè)類(lèi)中。因 此,root — brch. link[i]指向一棵子Trie樹(shù),該子Trie樹(shù)上所包含的所有關(guān)鍵碼都是以 第i個(gè)英文字母開(kāi)頭。 若某一關(guān)鍵碼第j位字母在英文字母表中順序?yàn)閕 (i = 0, 1, ? , 26),則它在Trie 樹(shù)的第j層分支結(jié)點(diǎn)中從第i個(gè)指針向下找第j+1位字母所在結(jié)點(diǎn)。當(dāng)一棵子Trie樹(shù)上 只有一個(gè)關(guān)鍵碼時(shí),就由一個(gè)元素結(jié)點(diǎn)來(lái)代替。在這個(gè)結(jié)點(diǎn)中包含有關(guān)鍵碼,以及其它相關(guān) 的信息,如對(duì)應(yīng)數(shù)據(jù)對(duì)象的存放地址等。 Trie樹(shù)的類(lèi)定義如下 const int MaxKeySize = 25 ;〃關(guān)鍵碼最大位數(shù) typedef struct {〃關(guān)鍵碼類(lèi)型char ch [MaxKeySize];〃關(guān)鍵碼存放數(shù)組int currentSize ;〃關(guān)鍵碼當(dāng)前位數(shù) }KeyType; class TrieNode {〃Trie樹(shù)結(jié)點(diǎn)類(lèi)定義friend class Trie ; protected :enum{branch, element} NodeType ;〃結(jié)點(diǎn)類(lèi)型union NodeType {〃根據(jù)結(jié)點(diǎn)類(lèi)型的兩種結(jié)構(gòu) struct {〃分支結(jié)點(diǎn) int皿m;〃本結(jié)點(diǎn)關(guān)鍵碼個(gè)數(shù) TrieNode*link[27];〃指針數(shù)組 } brch ; struct {〃元素結(jié)點(diǎn) KeyType key ;〃關(guān)鍵碼 recordNode*recptr ;〃矛旨向,據(jù)X寸象矛旨針 }elem; } } class Trie {〃Trie樹(shù)的類(lèi)定義 private :TrieNode訂oot,化urrent ;
public :RecordNode*S earch(const keyType&);
int Insert (const KeyType&);
int Delete (const KeyType&); } 2、 Trie樹(shù)的搜索如下 為了在Trie樹(shù)上進(jìn)行搜索,要求把關(guān)鍵碼分解成一些字符元素,并根據(jù)這些字符 向下進(jìn)行分支。 函數(shù)Search設(shè)定current = NULL,表示不指示任何一個(gè)分支結(jié)點(diǎn),如果current 指向一個(gè)元素結(jié)點(diǎn)elem,貝U current — elem. key是current所指結(jié)點(diǎn)中的關(guān)鍵碼。 Trie樹(shù)的搜索算法如下 RecordNode*Trie::Search (const KeyType&x){ k = x. key ; concatenate (k, 'b,); current = root ; int i = 0 ;〃掃描初始化 while (current ! = NUUJt¤t — NodeType ! = element&&i < = x.ch[i])( current = current — brch. link[ord(x. ch[i])]; i = i++ ; }; if (current ! = NUIX&¤t — NodeType == element&& current — elem. key = = x) return current — recptr 5 else return亂L ; } 經(jīng)驗(yàn)證,Trie樹(shù)的搜索算法在最壞情況下搜索的時(shí)間代價(jià)是0(1)。其中,1是Trie
樹(shù)的層數(shù)(包括分支結(jié)點(diǎn)和元素結(jié)點(diǎn)在內(nèi))。 在用作索引時(shí),Trie樹(shù)的所有結(jié)點(diǎn)都駐留在磁盤(pán)上。搜索時(shí)最多做1次磁盤(pán)存取。 當(dāng)結(jié)點(diǎn)駐留在磁盤(pán)上時(shí),不能使用C++的指針(pointer)類(lèi)型,因?yàn)镃++不允許指
針的輸入/輸出。在結(jié)點(diǎn)中的link指針可改用整型(integer)實(shí)現(xiàn)。 3、在Trie樹(shù)上的插入和刪除 示例插入關(guān)鍵碼bobwhite禾口 bluejay。a.插入x = bobwhite時(shí),首先搜索Trie樹(shù)尋找bobwhite所在的結(jié)點(diǎn)。 b.如果找到結(jié)點(diǎn),并發(fā)現(xiàn)該結(jié)點(diǎn)的link[ 'o' ] =NULL。 x不在Trie樹(shù)中,可以
在該處插入。插入結(jié)果參看圖。 c.插入x = bluejay時(shí),用Trie樹(shù)搜索算法可找到包含有bluebird的元素結(jié)點(diǎn), 關(guān)鍵碼bluebird和bluejay是兩個(gè)不同的值,它們?cè)诘?個(gè)字母處不匹配。從Trie樹(shù)沿
6搜索路徑,在第4層分支。插入結(jié)果參看圖。 在Trie樹(shù)上插入bobwhite和blue jay后的結(jié)果如圖2所示。 考慮在圖2所示Trie樹(shù)中刪除bobwhite。此時(shí),只要將該結(jié)點(diǎn)link[ 'o']置為
O(NULL)即可,Trie樹(shù)的其它部分不需要改變。 考慮刪除blue jay 。刪除之后在標(biāo)記為S 3的子Trie樹(shù)中只剩下一個(gè)關(guān)鍵碼,這 表明可以刪去結(jié)點(diǎn)S3,同時(shí)結(jié)點(diǎn)P向上移動(dòng)一層。對(duì)結(jié)點(diǎn)S2和Sl可以做同樣的工作, 最后到達(dá)結(jié)點(diǎn)6。因?yàn)橐?為根的子Trie樹(shù)中有多個(gè)關(guān)鍵碼,所以它不能刪去,令該結(jié)點(diǎn) link[ '1' ] = p即可。 為便于Trie樹(shù)的刪除,在每個(gè)分支結(jié)點(diǎn)中設(shè)置了一個(gè)皿m數(shù)據(jù)成員,它記載了結(jié) 點(diǎn)中子女的數(shù)目。 Trie樹(shù)有3個(gè)基本性質(zhì),如下 1、根節(jié)點(diǎn)不包含字符,除根節(jié)點(diǎn)外每一個(gè)節(jié)點(diǎn)都只包含一個(gè)字符。 2、從根節(jié)點(diǎn)到某一節(jié)點(diǎn),路徑上經(jīng)過(guò)的字符連接起來(lái),為該節(jié)點(diǎn)對(duì)應(yīng)的字符串。 3、每個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn)包含的字符都不相同。 圖3是根據(jù)本發(fā)明的基于規(guī)則集的報(bào)文處理方法的流程圖。如圖3所示,本發(fā)明
的基于規(guī)則集的處理方法包括以下步驟 步驟S302,采用Trie算法對(duì)規(guī)則集進(jìn)行管理; 步驟S304,將規(guī)則集中的掩碼采用特殊字符進(jìn)行表示; 步驟S306,在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并 將轉(zhuǎn)換后的規(guī)則與規(guī)則集進(jìn)行比較,其中,與規(guī)則集中的特殊字符的比較總是正確的;以及
步驟S308,根據(jù)比較結(jié)果確定規(guī)則是否與規(guī)則集匹配,并根據(jù)確定結(jié)果進(jìn)行后續(xù) 處理。 其中,可以將規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。特殊字符可以為非0、1字 符。 其中,Trie算法能夠?qū)σ?guī)則集進(jìn)行以下至少一種操作添加規(guī)則的操作、刪除規(guī) 則的操作。 在確定結(jié)果為規(guī)則與規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷或上傳操
作;以及在規(guī)則與規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。 圖4是根據(jù)本發(fā)明的基于規(guī)則集的報(bào)文處理裝置的框圖。如圖4所示,本發(fā)明的
基于規(guī)則集的報(bào)文處理裝置包括規(guī)則集管理模塊402,用于采用Trie算法對(duì)規(guī)則集進(jìn)行
管理;掩碼替換模塊404,用于將規(guī)則集中的掩碼采用特殊字符進(jìn)行表示;匹配模塊406,用
于在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并將轉(zhuǎn)換后的規(guī)則與
規(guī)則集進(jìn)行比較,根據(jù)比較結(jié)果確定規(guī)則是否與規(guī)則集匹配其中,與規(guī)則集中的特殊字符
的比較總是正確的;以及報(bào)文處理模塊408,用于根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。 其中,可以將規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。特殊字符可以為非0、1字符。 其中,Trie算法能夠?qū)σ?guī)則集進(jìn)行以下至少一種操作添加規(guī)則的操作、刪除規(guī) 則的操作。 在確定結(jié)果為規(guī)則與規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷或上傳操作;以及在規(guī)則與規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。
具體地,在本發(fā)明中,可以將規(guī)則各字段從十六進(jìn)制(兩個(gè)數(shù),高位可以為0,地位 也可以為0)轉(zhuǎn)換成兩進(jìn)制數(shù)(即用0和1字符表示),組合成0、1字符串。將掩碼部分用 其他字符表示(非0、1字符)。 因?yàn)檠诖a部分表示不關(guān)心字段,所以比較時(shí)總是正確。
替換掩碼的具體過(guò)程舉例如下
假如有一條規(guī)則192. 168. 0. 1 8 10. 0. 0. 2 16 ;
源IP地址192. 168. 0. 1 ; 源IP地址掩碼低8位; 目的IP地址10. 0. 0. 2 ; 目的IP地址掩碼低16位; 源IP地址十六進(jìn)制數(shù)表示C0:A8:00:01,此處0必須用十六進(jìn)制00表示; 源IP地址二進(jìn)制數(shù)表示11000000-10101000-00000000-00000001 ; 源IP地址掩碼低8位11000000-10101000-00000000-22222222,掩碼部分用字 符2表示; 這樣,規(guī)則源IP地址部分轉(zhuǎn)換成字符串11000000101010000000000022222222 ; 同樣,規(guī)則目的IP地址部分轉(zhuǎn)換如下 目的IP地址十六進(jìn)制數(shù)表示0A:00:00:02,此處0必須用十六進(jìn)制00表示; 目的IP地址二進(jìn)制數(shù)表示00001010-00000000-00000000-00000010 ; 目的IP地址掩碼低16位11000000-10101000-22222222-22222222,掩碼部分
用字符2表示;這樣,規(guī)則源IP地址部分轉(zhuǎn)換成字符串11000000101010002222222222222222 ;
這樣,規(guī)則轉(zhuǎn)換成字符串110000001010100000000000222222221100000010101000 2222222222222222。 當(dāng)接收的報(bào)文源、目的IP地址為192. 168. 0. Ill和10. 0. 122. 34時(shí),按上述方法 將此轉(zhuǎn)換成字符串,按上述步驟進(jìn)行比較,可以判斷命中規(guī)則。 當(dāng)接收的報(bào)文源、目的IP地址為193. 168. 0. Ill和10. 0. 122. 34時(shí),按上述方法 將此轉(zhuǎn)換成字符串,按上述步驟進(jìn)行比較,可以判斷不命中規(guī)則。 通過(guò)本發(fā)明的利用規(guī)則集的匹配效率高,匹配時(shí)間與規(guī)矩集的大小、掩碼位置等 無(wú)關(guān),只與規(guī)矩集的字符長(zhǎng)度相關(guān)。 綜上所述,借助本發(fā)明上述至少一個(gè)技術(shù)方案,通過(guò)采用Trie算法來(lái)管理規(guī)則 集,能夠保存大量的字符串,并利用字符串的公共前綴來(lái)節(jié)約存儲(chǔ)空間,并且對(duì)規(guī)則中的掩 碼部分采用特殊字符進(jìn)行表示,軟件從接收到的報(bào)文中提取到規(guī)則,將規(guī)則轉(zhuǎn)換成字符串, 并將此規(guī)則與規(guī)則集進(jìn)行比較。在規(guī)則匹配時(shí),與特殊字符的比較總是正確,進(jìn)行下一其他 字符的比較,如果匹配規(guī)則集,則表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷或者上傳操作;如果不 匹配規(guī)則集,按默認(rèn)操作對(duì)報(bào)文進(jìn)行后續(xù)處理。采用基于掩碼的規(guī)則集進(jìn)行報(bào)文的過(guò)濾、阻 斷以及上傳操作,彌補(bǔ)了現(xiàn)有技術(shù)中不存在這種技術(shù)的缺陷。 顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成
8的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
9
權(quán)利要求
一種基于規(guī)則集的報(bào)文處理方法,其特征在于,所述方法包括采用Trie算法對(duì)規(guī)則集進(jìn)行管理;將所述規(guī)則集中的掩碼采用特殊字符進(jìn)行表示;在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將所述規(guī)則轉(zhuǎn)換成字符串,并將轉(zhuǎn)換后的規(guī)則與所述規(guī)則集進(jìn)行比較,其中,與所述規(guī)則集中的特殊字符的比較總是正確的;以及根據(jù)比較結(jié)果確定所述規(guī)則是否與所述規(guī)則集匹配,并根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述特殊字符為非0、1字符。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述Trie算法能夠?qū)λ鲆?guī)則集進(jìn)行以 下至少一種操作添加規(guī)則的操作、刪除規(guī)則的操作。
5. 根據(jù)權(quán)利要求l所述的方法,其特征在于,在所述確定結(jié)果為所述規(guī)則與所述規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷 或上傳操作;以及在所述規(guī)則與所述規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。
6. —種基于規(guī)則集的報(bào)文處理裝置,其特征在于,所述裝置包括 規(guī)則集管理模塊,用于采用Trie算法對(duì)規(guī)則集進(jìn)行管理; 掩碼替換模塊,用于將所述規(guī)則集中的掩碼采用特殊字符進(jìn)行表示;匹配模塊,用于在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將所述規(guī)則轉(zhuǎn)換成字符 串,并將轉(zhuǎn)換后的規(guī)則與所述規(guī)則集進(jìn)行比較,根據(jù)比較結(jié)果確定所述規(guī)則是否與所述規(guī) 則集匹配其中,與所述規(guī)則集中的特殊字符的比較總是正確的;以及報(bào)文處理模塊,用于根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,將所述規(guī)則轉(zhuǎn)換為二進(jìn)制字符,組成0、1字符串。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述特殊字符為非0、1字符。
9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述Trie算法能夠?qū)λ鲆?guī)則集進(jìn)行以 下至少一種操作添加規(guī)則的操作、刪除規(guī)則的操作。
10. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,在所述確定結(jié)果為所述規(guī)則與所述規(guī)則集匹配時(shí),表示命中規(guī)則,進(jìn)行報(bào)文過(guò)濾、阻斷 或上傳操作;以及在所述規(guī)則與所述規(guī)則集不匹配時(shí),不命中規(guī)則,按照默認(rèn)操作對(duì)報(bào)文進(jìn)行處理。
全文摘要
本發(fā)明提供一種基于規(guī)則集的報(bào)文處理方法和裝置,其中,該方法包括采用Trie算法對(duì)規(guī)則集進(jìn)行管理;將規(guī)則集中的掩碼采用特殊字符進(jìn)行表示;在接收到報(bào)文時(shí),從所接收的報(bào)文提取規(guī)則,將規(guī)則轉(zhuǎn)換成字符串,并將轉(zhuǎn)換后的規(guī)則與規(guī)則集進(jìn)行比較,其中,與規(guī)則集中的特殊字符的比較總是正確的;以及根據(jù)比較結(jié)果確定規(guī)則是否與規(guī)則集匹配,并根據(jù)確定結(jié)果進(jìn)行后續(xù)處理。在本發(fā)明中,規(guī)則集的匹配效率高,匹配時(shí)間與規(guī)矩集的大小、掩碼位置等無(wú)關(guān),只與規(guī)矩集的字符長(zhǎng)度相關(guān)。
文檔編號(hào)H04L12/56GK101707588SQ20091009398
公開(kāi)日2010年5月12日 申請(qǐng)日期2009年9月25日 優(yōu)先權(quán)日2009年9月25日
發(fā)明者歷軍, 李永成, 聶華, 邵宗有 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司