两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種構(gòu)造匹配規(guī)則表及識(shí)別報(bào)文類型的方法和裝置的制作方法

文檔序號(hào):7700615閱讀:176來源:國知局
專利名稱:一種構(gòu)造匹配規(guī)則表及識(shí)別報(bào)文類型的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域,特別是指一種構(gòu)造匹配規(guī)則表及識(shí)別報(bào)文類型的方 法和裝置。
背景技術(shù)
在許多網(wǎng)絡(luò)設(shè)備(例如交換機(jī)、路由器)中,需要對(duì)接收到的各種報(bào)文進(jìn)行 處理,其中,有一些處理需要知道報(bào)文的類型,以便進(jìn)行統(tǒng)計(jì)、監(jiān)控等。報(bào)文 的類型由報(bào)文中一些特定字段的值來表示,不同類型的報(bào)文在某些字段的取值 不同,要判斷一個(gè)報(bào)文是否屬于某一報(bào)文類型,需要從這個(gè)報(bào)文中獲取這些字 段的值,并與一個(gè)已知的對(duì)應(yīng)字段值的組合對(duì)比,如果兩者完全一致,則可以 斷定當(dāng)前的報(bào)文是預(yù)期的報(bào)文類型。
判斷一個(gè)報(bào)文是否某屬于一預(yù)期報(bào)文類型的過程,稱為報(bào)文匹配,其中, 已知的字段值的組合是判斷的標(biāo)準(zhǔn),稱為匹配規(guī)則。滿足一個(gè)匹配規(guī)則的報(bào)文 必然屬于該匹配規(guī)則對(duì)應(yīng)的報(bào)文類型,反之,某一報(bào)文類型的所有報(bào)文都具有 相同的匹配規(guī)則。報(bào)文符合特定匹配規(guī)則,是報(bào)文屬于特定報(bào)文類型的充要條 件。據(jù)此,可以將每個(gè)報(bào)文類型與一個(gè)確定的匹配規(guī)則——對(duì)應(yīng),要判斷任一 報(bào)文類型,也就是將此報(bào)文中的某些字段的值與一系列匹配規(guī)則相對(duì)比,如果 找到一個(gè)匹配的規(guī)則,那么該報(bào)文就屬于該匹配規(guī)則對(duì)應(yīng)的報(bào)文類型?,F(xiàn)有技 術(shù)中,常使用基于報(bào)文特定字段的識(shí)別方法,可以對(duì)報(bào)文的內(nèi)容進(jìn)行解析并逐 層分析,以確定報(bào)文類型。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題對(duì)報(bào)
類似交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備對(duì)報(bào)文類型識(shí)別性能較高要求的場(chǎng)合;對(duì)于大 量的匹配規(guī)則,如果以線性表的方式來存放這些匹配規(guī)則,則在一個(gè)有n個(gè)匹 配規(guī)則的匹配規(guī)則表中進(jìn)行匹配的時(shí)間復(fù)雜度為O(n)。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種構(gòu)造匹配規(guī)則表及識(shí)別報(bào)文類型的方法和裝置, 用于解決現(xiàn)有技術(shù)中,對(duì)報(bào)文的內(nèi)容進(jìn)行解析并逐層分析以獲取報(bào)文類型所采 用的技術(shù)效率低,不適用于類似交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備對(duì)類型識(shí)別性能較 高要求的場(chǎng)合的問題。
一種構(gòu)造匹配規(guī)則表的方法,包括計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則所對(duì)應(yīng) 的哈希值;所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了一報(bào)文的類型為所述 報(bào)文類型需要滿足的條件;根據(jù)所述哈希值將所述匹配規(guī)則存入一哈希表中, 形成一用于報(bào)文類型識(shí)別的匹配規(guī)則表。
一種構(gòu)造匹配規(guī)則表的裝置,包括哈希值計(jì)算模塊,用于計(jì)算報(bào)文類型 對(duì)應(yīng)的匹配規(guī)則的哈希值;所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了報(bào)文 的類型為所述報(bào)文類型需要滿足的條件;匹配規(guī)則表建立模塊,用于根據(jù)所述 哈希值將所述匹配規(guī)則存入一哈希表中,形成一用于報(bào)文類型識(shí)別的匹配規(guī)則 表。
一種識(shí)別報(bào)文類型的方法,包括接收到一報(bào)文;提取所述報(bào)文中特征字 段的值,生成一報(bào)文特征;根據(jù)所述報(bào)文特征計(jì)算出一哈希值;根據(jù)所述哈希 值在匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則,將所述報(bào)文特征與該匹配規(guī)則進(jìn)行匹 配;所述的匹配規(guī)則表為一保存有匹配規(guī)則的哈希表;匹配成功之后,確定所 述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào)文的報(bào)文類型。
一種能夠識(shí)別報(bào)文類型的裝置,包括報(bào)文接收模塊,用于接收?qǐng)?bào)文;報(bào) 文特征提取模塊,用于提取所述報(bào)文中的特征字段,生成一報(bào)文特征;報(bào)文特 征哈希值計(jì)算模塊,用于根據(jù)所述報(bào)文特征計(jì)算出一哈希值;匹配規(guī)則查找模 塊,用于依據(jù)所述哈希值在所述匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則并與該匹配 規(guī)則進(jìn)行匹配;所述的匹配規(guī)則表為一保存有匹配規(guī)則的哈希表;匹配成功之 后,確定所述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào)文的報(bào)文類型。
應(yīng)用本發(fā)明實(shí)施例提供的技術(shù),? 1入哈希表作為匹配規(guī)則表來存儲(chǔ)匹配規(guī) 則,通過提取報(bào)文的特征字段,將它與預(yù)先存儲(chǔ)在哈希表中的匹配規(guī)則進(jìn)行比 對(duì),實(shí)現(xiàn)報(bào)文類型的快速識(shí)別,從而將匹配的時(shí)間復(fù)雜度由O(n)降低到了常 數(shù)級(jí)別的O(l)。


圖1為本發(fā)明實(shí)施例構(gòu)造匹配規(guī)則表方法流程示意圖一; 圖2為本發(fā)明實(shí)施例構(gòu)造匹配規(guī)則表方法流程示意圖二; 圖3為本發(fā)明實(shí)施例構(gòu)造匹配規(guī)則表的裝置結(jié)構(gòu)示意圖; 圖4為本發(fā)明實(shí)施例識(shí)別報(bào)文類型的方法流程示意圖一; 圖5為本發(fā)明實(shí)施例識(shí)別報(bào)文類型的方法流程示意圖二; 圖6為本發(fā)明實(shí)施例識(shí)別報(bào)文類型的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)特征和實(shí)施效果更加清楚,下面將結(jié)合附圖及具 體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)描述。本發(fā)明提供的實(shí)施例用以克服現(xiàn) 有技術(shù)中存在的匹配規(guī)則表查找效率低的問題和缺陷,提供基于哈希表建立匹 配規(guī)則表以及進(jìn)行報(bào)文匹配的方法。
本發(fā)明提供的實(shí)施例中,提供一種構(gòu)造匹配規(guī)則表的方法,如圖l所示, 包括
步驟IOI,計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則所對(duì)應(yīng)的哈希值;所述匹配規(guī)則 根據(jù)報(bào)文特征構(gòu)造而成,描述了一報(bào)文的類型為所述報(bào)文類型需要滿足的條 件;
步驟102,根據(jù)所述哈希值將所述匹配規(guī)則存入一哈希表中,形成一用于 報(bào)文類型識(shí)別的匹配關(guān)見則表。
應(yīng)用本實(shí)施例提供的技術(shù),以匹配規(guī)則表記錄不同的報(bào)文類型,為在交換 機(jī)、路由器等需要處理多種報(bào)文類型的網(wǎng)絡(luò)設(shè)備上實(shí)現(xiàn)快速識(shí)別報(bào)文類型提供 了可行方案。
本實(shí)施例中為充分揭示構(gòu)造一匹配規(guī)則表的流程,不失一般性,設(shè)定存在 一具體的報(bào)文類型type,報(bào)文pkt,則將匹配規(guī)則R(type)和報(bào)文的特征字段 C(pkt)分別表示成
R(type) = {Condition 1, Condition2,…, Conditionn } (1) C(pkt) = {Field 1:value 1 , Field2:value2, …,F(xiàn)ieldn:valuen} (2)式(l)中,Conditionl, Condition2等給出了報(bào)文類型type需要滿足的一系 列條件;式(2)中,給出了報(bào)文pkt的各個(gè)特征字段的名稱和值。
匹配過程中,將報(bào)文的一個(gè)或多個(gè)特征字段的值提取出來,記作C(pkt), 將C(pkt)與已經(jīng)確定的匹配規(guī)則R(type)進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果得出結(jié)論; 如果C(pkt)滿足R(type)所描述的條件,則pkt就是type這一報(bào)文類型的報(bào)文, 否則pkt不是type報(bào)文。
例如, 一個(gè)報(bào)文的報(bào)文類型為ARP的充要條件是由于是以太報(bào)文類型, 因此該報(bào)文中存在取值為0x0806的以太類型字段EthType,可以將ARP報(bào)文 的匹配身見則記為
R(arp) = { EthType=0x0806 }
因此,根據(jù)給定的任一報(bào)文pkt,提取該報(bào)文pkt的以太類型構(gòu)成報(bào)文特 征字段,記為
C(pkt) = { EthType:<ethType>}。其中,〈ethType〉為該報(bào)文pkt的實(shí)際以太 類型的值;如果〈ethType〉的值為0x0806,說明報(bào)文pkt滿足匹配規(guī)則R(arp), 可以判定pkt是一個(gè)arp報(bào)文,否則不是arp報(bào)文。
同理,ospf報(bào)文的匹配規(guī)則記為
R(ospf)= { EthType=0x0800, IPVersion=4, Protocol=0x59} 即,當(dāng)報(bào)文的以太類型為0x0800、 IP版本號(hào)為4、協(xié)議號(hào)為0x59時(shí),該 報(bào)文才會(huì)被認(rèn)為是ospf報(bào)文。
由上述描述可知,對(duì)于報(bào)文類型的識(shí)別,依賴于報(bào)文中一個(gè)或多個(gè)特定字 段的取值,而報(bào)文中其他字段的信息(如用戶數(shù)據(jù))不會(huì)影響報(bào)文類型的判斷。 這些特定字段多位于報(bào)文的各層包頭中,相對(duì)位置固定,因此使用本實(shí)施例提
比較,就可以判定報(bào)文是否對(duì)應(yīng)的報(bào)文類型,相比于逐字節(jié)解析報(bào)文的做法, 提高了判斷報(bào)文類型的效率。
本實(shí)施例中,給出了一種較為通用的定義匹配規(guī)則的結(jié)構(gòu)的方法
{Valid, DstMac=DST_MAC}, {Valid, EthType=ETHTYPE},{Valid, Protocol=PROTOCOL}, {Valid, SrcPort=SRC—PORT}, {Valid, DstPort=DST—PORT}, {Valid, ExtendedCondition}
顯然,匹配規(guī)則R由6個(gè)檢查條件構(gòu)成,每個(gè)檢查條件包含一個(gè)標(biāo)志Valid 和右面的取值要求,其中,標(biāo)志Valid用來指出本條^^查條件中,右面對(duì)應(yīng)的 條件是否必須被滿足如果此標(biāo)志Valid為真,則按照給定的字段值對(duì)報(bào)文進(jìn) 行檢查,如果為假,則對(duì)報(bào)文不必滿足該對(duì)應(yīng)的條件。最后一項(xiàng)檢查條件可以 是任意一個(gè)必檢的擴(kuò)展^r查條件,可以采用 一個(gè)等式或者其他任何形式的表達(dá) 式,例如可以用復(fù)雜的函數(shù)來表示,以便滿足某些特殊的匹配需求。
以太網(wǎng)中傳輸?shù)乃械膱?bào)文類型的匹配規(guī)則均可以用上述結(jié)構(gòu)來描述,一 系列匹配規(guī)則插入一哈希表中即構(gòu)成一匹配規(guī)則表。匹配規(guī)則表的建立需要確 定每個(gè)匹配規(guī)則的哈希值,該匹配規(guī)則的哈希值需要與計(jì)算所得的哈希值對(duì)應(yīng) 起來,因此,只能根據(jù)匹配規(guī)則中的某一個(gè)特定檢查字段來計(jì)算,這個(gè)特定檢 查字段即此匹配規(guī)則的關(guān)4建字段,記為key。
不同的匹配規(guī)則并不一定都會(huì)4企查同 一個(gè)關(guān)4建字段,因此無法使用某個(gè)固 定的特征字段來做為匹配規(guī)則的關(guān)鍵字段。哈希值的計(jì)算需要根據(jù)每條匹配規(guī) 則各自的特點(diǎn),選擇一個(gè)合適的關(guān)鍵字段來計(jì)算。
本實(shí)施例中,對(duì)于Ethernet格式報(bào)文,該格式報(bào)文EthType/Len字段大于 0x0600,代表報(bào)文的以太類型,是這類報(bào)文匹配規(guī)則的必檢字段;對(duì)于非 Ethernet格式報(bào)文,其EthType/Len字段不大于0x0600,不代表報(bào)文的以太類 型,但其目的MAC通常都具有明確特征,可以用來識(shí)別才艮文類型。因此,每 條匹配規(guī)則,在目的MAC字段和EthType/Len字段中,至少有一個(gè)是需要檢 查的必檢字段。
以下所描述的哈希值計(jì)算方法,正是基于這一特點(diǎn),確定了匹配規(guī)則的關(guān) 鍵字段,就可以根據(jù)其值使用一個(gè)哈希函數(shù)計(jì)算出當(dāng)前匹配規(guī)則的哈希值 hash_code:
hash_code = Hash(ke力 (3)
9通常應(yīng)用中,均需要按協(xié)議應(yīng)用來區(qū)分報(bào)文類型;通過分析各種報(bào)文的格 式發(fā)現(xiàn),在應(yīng)用于以太網(wǎng)的報(bào)文中,可以根據(jù)以下各特征字段中的一個(gè)或幾個(gè) 的取值來識(shí)別
目的MAC(DstMac)、以太類型(EthType)、 IP報(bào)文協(xié)議號(hào)(Protocol)、源端 口號(hào)(SrcPort)、目的端口號(hào)(DstPort)等。
有了匹配規(guī)則對(duì)應(yīng)的確定的哈希值,匹配規(guī)則就可以根據(jù)此哈希值插入哈 希表構(gòu)成所述匹配規(guī)則表。如圖2所示,給出了基于上述特征字段作為關(guān)鍵字 段建立匹配規(guī)則表的流程
步驟201 ,確定需要被識(shí)別的報(bào)文類型。
步驟202,將此報(bào)文類型所需滿足的不同特征轉(zhuǎn)換成當(dāng)前匹配規(guī)則;具體 包括將不同特征字段作為必檢字段,在匹配規(guī)則中記錄對(duì)應(yīng)的值。
步驟203,判斷EthType是否當(dāng)前匹配規(guī)則的必檢字段,如果不是轉(zhuǎn)步驟 204,否則轉(zhuǎn)步驟205;
步驟204,表明當(dāng)前匹配規(guī)則對(duì)應(yīng)的報(bào)文類型非Ethernet格式,選擇目的 MAC做為關(guān)鍵字段,轉(zhuǎn)步驟208。
步驟205,判斷Protocol是否當(dāng)前匹配規(guī)則的必檢字段,如果不是轉(zhuǎn)步驟 206,如果是,轉(zhuǎn)步驟207。
步驟206, EthType是當(dāng)前的匹配規(guī)則的必檢字段,以該EthType作為關(guān) 鍵字段,表明當(dāng)前匹配規(guī)則非IPV4或者IPV6報(bào)文,當(dāng)前匹配規(guī)則對(duì)應(yīng)的報(bào) 文類型是Ethernet格式,轉(zhuǎn)步驟208。
步驟207,選擇Protocol做為關(guān)鍵字段,轉(zhuǎn)步驟208。
步驟20S,根據(jù)選擇的關(guān)鍵字段的值,計(jì)算出哈希值hash一code。
步驟209,根據(jù)計(jì)算出來的哈希值hash—code,將匹配規(guī)則插入匹配規(guī)則 表中。
步驟210,判斷是否還有更多需要被識(shí)別的報(bào)文類型,如果沒有轉(zhuǎn)步驟 211,如果有則返回步驟201。
步驟211,構(gòu)造匹配規(guī)則表的流程結(jié)束。
由于不同匹配規(guī)則中對(duì)哈希值的計(jì)算并不一定是依據(jù)相同的關(guān)鍵字段,因 此不同的匹配規(guī)則存在哈希值相同的可能,即匹配規(guī)則表中不同匹配規(guī)則之間可能存在沖突;因此,所述哈希值將所述匹配規(guī)則存入一哈希表中進(jìn)一步包括 所述哈希表能夠支持沖突鏈;當(dāng)出現(xiàn)過多匹配規(guī)則具有相同哈希值的匹配規(guī)則 插入所述匹配規(guī)則表時(shí),所述哈希表自行建立并維護(hù)一個(gè)沖突鏈以實(shí)現(xiàn)這些匹 配規(guī)則的保存。即當(dāng)不同匹配規(guī)則的哈希值相同,哈希表會(huì)自動(dòng)建立一個(gè)沖突 鏈來保存這些匹配規(guī)則。如能合理設(shè)置匹配規(guī)則表的初始的表空間大小,或者 更換哈希值計(jì)算函數(shù)Hash(key),可以減少甚至消除出現(xiàn)沖突的可能。本實(shí)施 例中的"出現(xiàn)過多"是指具有相同哈希值的匹配規(guī)則的數(shù)目超出了一個(gè)預(yù)先設(shè) 定的能夠容忍的限度。
上述實(shí)施例提供的方法可以應(yīng)用于網(wǎng)絡(luò)安全的各個(gè)領(lǐng)域。 與所提供的方法對(duì)應(yīng),本實(shí)施例提供了一種構(gòu)造匹配規(guī)則表的裝置,如圖 3所示,至少包括
哈希值計(jì)算模塊301,用于計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則對(duì)應(yīng)的哈希值; 所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了報(bào)文的類型為所述報(bào)文類型需要 滿足的條件;
匹配規(guī)則表建立模塊302,用于根據(jù)所述哈希值將所述匹配規(guī)則存入一哈 希表中,形成一用于報(bào)文類型識(shí)別的匹配規(guī)則表。
應(yīng)用本實(shí)施例提供的技術(shù),用匹配規(guī)則表記錄不同的報(bào)文類型,為在交換 機(jī)、路由器等需要處理多種類型報(bào)文的網(wǎng)絡(luò)設(shè)備上實(shí)現(xiàn)快速的報(bào)文類型識(shí)別提 供了可依賴的技術(shù)。
還可以包括修正模塊303,與哈希值計(jì)算模塊301連接,統(tǒng)計(jì)不同匹配 規(guī)則出現(xiàn)哈希值相同的情況,用于當(dāng)出現(xiàn)過多匹配規(guī)則的哈希值相同時(shí),重新 設(shè)置所述哈希表的表空間大小,或者更換用于計(jì)算所述哈希值的哈希函數(shù);與 匹配規(guī)則表建立模塊302連接,為所述匹配規(guī)則表建立模塊302重新建立一匹 配規(guī)則表,直至不同匹配規(guī)則的哈希值之間的沖突降低到一預(yù)定程度;以此改 善存在匹配規(guī)則沖突時(shí)的性能。這些調(diào)整應(yīng)當(dāng)在設(shè)計(jì)階段確定。
本實(shí)施例中,基于上述提供的技術(shù)方案所構(gòu)建匹配規(guī)則表,應(yīng)用該匹配規(guī) 則表進(jìn)行報(bào)文匹配,提供一種識(shí)別報(bào)文類型的方法,如圖4所示,具體包括 步驟401,接收到一報(bào)文;步驟402,提取所述報(bào)文中特征字段的值,生成一報(bào)文特征; 步驟403,根據(jù)所述報(bào)文特征計(jì)算出一哈希值;
步驟404,依據(jù)所述哈希值在一匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則并與該 匹配規(guī)則進(jìn)行匹配;所述的匹配規(guī)則表為 一保存有匹配規(guī)則的哈希表;
步驟405,匹配成功之后,確定所述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào) 文的報(bào)文類型。
應(yīng)用本實(shí)施例提供的技術(shù),針對(duì)現(xiàn)有技術(shù)中存在的匹配規(guī)則表查找效率較 低的問題和缺陷進(jìn)行了改進(jìn),引入了哈希表來存儲(chǔ)匹配規(guī)則表,通過提取報(bào)文 的特征字段,將它與預(yù)先存儲(chǔ)在哈希表中的匹配規(guī)則進(jìn)行比對(duì),實(shí)現(xiàn)報(bào)文類型 的快速識(shí)別,從而將匹配的時(shí)間復(fù)雜度由O(n)降低到了常數(shù)級(jí)別的O(l)。
報(bào)文匹配是由報(bào)文特征選擇關(guān)鍵字段并計(jì)算哈希值,據(jù)此哈希值在匹配規(guī) 則表中與不同的匹配規(guī)則進(jìn)行對(duì)比。由于匹配規(guī)則表中有存在沖突的可能,根 據(jù)哈希值找到的第一條匹配規(guī)則并不一定能夠匹配成功,因此可能需要遍歷沖 突鏈,依次與沖突鏈上的部分或全部匹配規(guī)則進(jìn)行匹配,直至匹配成功或者全 部不成功。
大部分報(bào)文都可以根據(jù)以下各字段中的一個(gè)或幾個(gè)的取值來識(shí)別目的介 質(zhì)訪問控制地址(DstMAC)、以太類型(EthType)、 IP報(bào)文協(xié)議號(hào)(Protocol)、源 端口號(hào)(SrcPort)、目的端口號(hào)(DstPort)等。如圖5所示的報(bào)文匹配的流程圖, 對(duì)于任意報(bào)文,包括
步驟501,解析報(bào)文,提取報(bào)文中一特征字段EthType/Len的值。 步驟502,判斷EthType/Len的值是否大于0x0600,如果是轉(zhuǎn)步驟504, 否則轉(zhuǎn)步驟503。
步驟503,此特征字段為Len,非Ethernet格式的報(bào)文,需要選擇報(bào)文的 目的MAC作為關(guān)4建字段Key。
步驟504,此特征字段為EthType,需要進(jìn)一步進(jìn)行判斷EthType的值是 否為0x0800或0x86dd,如果是轉(zhuǎn)步驟506,否則轉(zhuǎn)步驟505。
步驟505,需要選擇EthType作為關(guān)鍵字段Key并轉(zhuǎn)步驟507。
步驟506,報(bào)文是IPV4或IPV6報(bào)文,需要選擇報(bào)文的Protocol作為關(guān)鍵 字段Key。
12步驟507,提取報(bào)文中由步驟503、步驟505或步驟506中得到的關(guān)鍵字 段Key的值,計(jì)算出該報(bào)文的哈希值hash一code。本步驟507實(shí)質(zhì)上處理的是 非IP的ETHERNET格式的報(bào)文,因此用EthType做關(guān)44字4更Key。
步驟508,使用所述hash—code對(duì)匹配規(guī)則表進(jìn)行哈希查找,嘗試找到此 hash—code對(duì)應(yīng)的下一條匹配MJ'J R(hash—code);
步驟509,判斷查找匹配規(guī)則R(hash—code)是否存在,如果存在轉(zhuǎn)步驟510, 否則轉(zhuǎn)步驟512。
步驟510,已找到R(hash_code),將報(bào)文的報(bào)文特征與此匹配規(guī)則進(jìn)行比 壽交匹配;
判斷是否匹配成功,如果是轉(zhuǎn)步驟511,否則轉(zhuǎn)步驟508。
步驟511,匹配規(guī)則中所有對(duì)應(yīng)的必檢字段的值與報(bào)文對(duì)應(yīng)的特征字段的
值都完全相同,且滿足擴(kuò)展檢查條件,則報(bào)文匹配成功,當(dāng)前匹配規(guī)則對(duì)應(yīng)的
報(bào)文類型就是待識(shí)別的報(bào)文的報(bào)文類型,轉(zhuǎn)步驟513。
步驟512,報(bào)文無法匹配成功,匹配失敗不再需要進(jìn)行任何對(duì)比,因此轉(zhuǎn)
步驟513。
匹配不成功的原因是在匹配規(guī)則表中沒有找到能夠描述待匹配報(bào)文的特 征的匹配失見則。
步驟513,匹配流程結(jié)束。
根據(jù)報(bào)文選擇不同的特征字段作為關(guān)鍵字段,與前述實(shí)施例中根據(jù)匹配規(guī) 則的特點(diǎn)選擇關(guān)鍵字段是對(duì)應(yīng)的,并且也使用相同的哈希函數(shù)計(jì)算各自的哈希 值,從而快速找到匹配規(guī)則。
與報(bào)文匹配方法對(duì)應(yīng)地,本實(shí)施例提供了一種能夠識(shí)別報(bào)文類型的裝置, 如圖6所示,包括
報(bào)文接收模塊601,用于接收?qǐng)?bào)文。
報(bào)文特征提取模塊602,用于提取所述報(bào)文中的特征字段,生成一報(bào)文特征。
報(bào)文特征哈希值計(jì)算模塊603,用于根據(jù)所述報(bào)文特征計(jì)算出 一哈希值。 匹配規(guī)則查找模塊604,用于依據(jù)所述哈希值在一匹配規(guī)則表中查找對(duì)應(yīng) 的匹配規(guī)則并與該匹配規(guī)則進(jìn)行匹配;所述的匹配規(guī)則表為 一保存有匹配規(guī)則的哈希表;
匹配成功之后,確定所述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào)文的報(bào)文類型。
應(yīng)用本實(shí)施例提供的技術(shù),針對(duì)現(xiàn)有技術(shù)中存在的匹配規(guī)則表查找效率較 低的問題和缺陷進(jìn)行了改進(jìn),引入了哈希表來存儲(chǔ)匹配規(guī)則表,通過提取報(bào)文 的特征字段,將它與預(yù)先存儲(chǔ)在哈希表中的匹配規(guī)則進(jìn)行比對(duì),實(shí)現(xiàn)報(bào)文類型 的快速識(shí)別,相對(duì)于采用線性表存儲(chǔ)匹配規(guī)則的方式,將匹配的時(shí)間復(fù)雜度由 O(n)降低到了常數(shù)級(jí)別的0(1)。
為了在任意報(bào)文pkt被裝置接收到時(shí)均可以被處理,匹配規(guī)則和匹配規(guī)則 表應(yīng)當(dāng)在對(duì)裝置進(jìn)行初始化時(shí)準(zhǔn)備好,因此還包括
匹配規(guī)則表存儲(chǔ)模塊,用于存儲(chǔ)所述匹配規(guī)則和匹配規(guī)則表,即匹配規(guī)則 是事先已經(jīng)確定的,并以匹配規(guī)則表的形式存儲(chǔ)在裝置中備用。
本發(fā)明的實(shí)施例具有以下有益效果,針對(duì)現(xiàn)有技術(shù)中存在的匹配規(guī)則表查 找效率較低的問題和缺陷進(jìn)行了改進(jìn),引入了哈希表來存儲(chǔ)匹配規(guī)則表,從而 將匹配的時(shí)間復(fù)雜度降低到0(1)。
應(yīng)當(dāng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,所有 的參數(shù)取值可以根據(jù)實(shí)際情況調(diào)整,且在該權(quán)利保護(hù)范圍內(nèi)。本領(lǐng)域的普通技 術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離 本發(fā)明技術(shù)方案的精神范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
1權(quán)利要求
1.一種構(gòu)造匹配規(guī)則表的方法,其特征在于,包括計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則的哈希值;所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了一報(bào)文的類型為所述報(bào)文類型需要滿足的條件;根據(jù)所述哈希值將所述匹配規(guī)則存入一哈希表中,形成一用于報(bào)文類型識(shí)別的匹配規(guī)則表。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述匹配規(guī)則包含至少一 個(gè)應(yīng)滿足的條件,每一條件為一特征字段應(yīng)取的值;在以太網(wǎng)中所傳輸?shù)膱?bào)文中,所述特征字段包括目的介質(zhì)訪問控制地址、以太類型、IP報(bào)文協(xié)議號(hào)、源端口號(hào)、目的端 口號(hào)中的至少一個(gè)。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,計(jì)算所述匹配規(guī)則的哈希 值進(jìn)一步包括確定一所述匹配規(guī)則的一關(guān)鍵字段,使用一哈希函數(shù)根據(jù)所述關(guān)鍵字段計(jì) 算出所述匹配規(guī)則的哈希值。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述哈希值將所述匹 配規(guī)則存入一哈希表中進(jìn)一步包括所述哈希表能夠支持沖突鏈;當(dāng)出現(xiàn)過多具有相同哈希值的匹配規(guī)則插入所述匹配規(guī)則表時(shí),所述哈希 表自行建立并維護(hù)所述沖突鏈以實(shí)現(xiàn)這些所述匹配規(guī)則的保存。
5. —種構(gòu)造匹配規(guī)則表的裝置,其特征在于,包括 哈希值計(jì)算模塊,用于計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則的哈希值;所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了報(bào)文的類型為所述報(bào)文類型需要滿足的條 件;匹配規(guī)則表建立模塊,用于根據(jù)所述哈希值將所述匹配規(guī)則存入一哈希表 中,形成一用于報(bào)文類型識(shí)別的匹配規(guī)則表。
6. 根據(jù)權(quán)利要求5所述的裝置,其特征在于,修正模塊,用于當(dāng)出現(xiàn)過多匹配規(guī)則的哈希值相同時(shí),重新設(shè)置所述哈希表的表空間大小,或者更換用于計(jì)算所述哈希值的哈希函數(shù);重新建立一匹配 規(guī)則表,直至不同匹配規(guī)則的哈希值之間的沖突降低到一預(yù)定程度。
7. —種識(shí)別報(bào)文類型的方法,其特征在于,包括 接收到一報(bào)文;提取所述報(bào)文中特征字段的值,生成一報(bào)文特征; 根據(jù)所述報(bào)文特征計(jì)算出 一哈希值;根據(jù)所述哈希值在匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則,將所述報(bào)文特征與 該匹配規(guī)則進(jìn)行匹配;所述匹配規(guī)則表為 一保存有匹配^見則的p合希表;匹配成功之后,確定所述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào)文的報(bào)文類型。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,根據(jù)所迷,合希值在匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則,將所述報(bào)文特征與 該匹配規(guī)則進(jìn)行匹配進(jìn)一 步包括的特征字段的值一致時(shí),匹配成功;當(dāng)所述匹配規(guī)則中還包括必檢的擴(kuò)展檢查條件,則所述報(bào)文還需滿足所述 擴(kuò)展檢查條件方能匹配成功。
9. 根據(jù)權(quán)利要求7所述的方法,其特征在于,根據(jù)所述哈希值在一匹配 規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則,將所述報(bào)文特征與該匹配規(guī)則進(jìn)行匹配進(jìn)一步 包括當(dāng)根據(jù)所述哈希值找到 一所述匹配規(guī)則后,所述報(bào)文特征與所述匹配規(guī)則 不匹配,且匹配規(guī)則表中有更多與該哈希值對(duì)應(yīng)的匹配規(guī)則時(shí),遍歷所述匹配 規(guī)則表中的與該哈希值對(duì)應(yīng)的其他匹配規(guī)則,依次與查找到的每條匹配規(guī)則進(jìn) 4亍匹配。
10. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述匹配規(guī)則包含至少一 個(gè)應(yīng)滿足的條件,每一條件為一特征字段應(yīng)取的值;在以太網(wǎng)中所傳輸?shù)膱?bào)文中,所述特征字段包括 目的介質(zhì)訪問控制地址、以太類型、IP報(bào)文協(xié)議號(hào)、源端口號(hào)、目的端 口號(hào)中的至少一個(gè)。
11. 根據(jù)權(quán)利要求7所述的方法,其特征在于,將所述^J艮文特征與該匹配 規(guī)則進(jìn)行匹配進(jìn)一步包括所述報(bào)文滿足預(yù)先設(shè)置的擴(kuò)展檢查條件。
12. —種能夠識(shí)別報(bào)文類型的裝置,其特征在于,包括 報(bào)文接收模塊,用于接收?qǐng)?bào)文;報(bào)文特征提取模塊,用于提取所述報(bào)文中的特征字段,生成一報(bào)文特征; 報(bào)文特征哈希值計(jì)算模塊,用于根據(jù)所述報(bào)文特征計(jì)算出 一哈希值; 匹配規(guī)則查找模塊,用于根據(jù)所述哈希值在所述匹配規(guī)則表中查找對(duì)應(yīng)的匹配規(guī)則并與該匹配規(guī)則進(jìn)行匹配;所述匹配規(guī)則表為 一保存有匹配規(guī)則的哈希表;匹配成功之后,確定所述匹配規(guī)則所對(duì)應(yīng)的報(bào)文類型為所述報(bào)文的報(bào)文類型。
全文摘要
本發(fā)明提供一種構(gòu)造匹配規(guī)則表及識(shí)別報(bào)文類型的方法和裝置,其中方法包括計(jì)算報(bào)文類型對(duì)應(yīng)的匹配規(guī)則的哈希值;所述匹配規(guī)則根據(jù)報(bào)文特征構(gòu)造而成,描述了一報(bào)文的類型為所述報(bào)文類型需要滿足的條件;根據(jù)所述哈希值將所述匹配規(guī)則存入一哈希表中,形成一用于報(bào)文類型識(shí)別的匹配規(guī)則表。應(yīng)用本發(fā)明實(shí)施例提供的技術(shù),通過提取報(bào)文的特征字段,將它與預(yù)先存儲(chǔ)在哈希表中的特定匹配規(guī)則進(jìn)行比對(duì),實(shí)現(xiàn)報(bào)文類型的快速識(shí)別,從而將報(bào)文匹配的時(shí)間復(fù)雜度由O(n)降低到了常數(shù)級(jí)別的O(1)。
文檔編號(hào)H04L29/06GK101562612SQ200910085600
公開日2009年10月21日 申請(qǐng)日期2009年5月26日 優(yōu)先權(quán)日2009年5月26日
發(fā)明者周鵬輝 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
屏山县| 乌海市| 沛县| 山丹县| 英山县| 舟山市| 科技| 登封市| 枣强县| 嘉黎县| 建瓯市| 阿克| 桓台县| 普格县| 石景山区| 常熟市| 营口市| 巴南区| 筠连县| 汝城县| 平遥县| 乌苏市| 威信县| 高陵县| 通海县| 焉耆| 玉林市| 南丰县| 留坝县| 景洪市| 扶余县| 定日县| 松原市| 永兴县| 五台县| 垫江县| 门源| 永和县| 监利县| 定兴县| 安庆市|