亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于TCAM的確定性有窮狀態(tài)自動(dòng)機(jī)DFA的匹配方法和裝置與流程

文檔序號(hào):11772780閱讀:160來(lái)源:國(guó)知局
基于TCAM的確定性有窮狀態(tài)自動(dòng)機(jī)DFA的匹配方法和裝置與流程
本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種基于TCAM(ternarycontentaddressablememory,三態(tài)內(nèi)容尋址存儲(chǔ)器)的DFA的匹配方法和裝置。

背景技術(shù):
正則表達(dá)式技術(shù)是計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的一項(xiàng)核心基礎(chǔ)技術(shù),被廣泛應(yīng)用于入侵檢測(cè)和防護(hù)、簽名匹配、蠕蟲檢測(cè)、包內(nèi)容過濾、流量分析、協(xié)議識(shí)別等領(lǐng)域。正則表達(dá)式具有靈活、強(qiáng)大的描述字符串模式的能力,正則表達(dá)式的匹配通過有限自動(dòng)機(jī)實(shí)現(xiàn),該有限自動(dòng)機(jī)包括NFA(non-deterministicfiniteautomaton,非確定性有限自動(dòng)機(jī))和DFA(deterministicfiniteautomaton,確定性有限自動(dòng)機(jī))。即可將正則表達(dá)式編譯為一個(gè)NFA,然后可以進(jìn)一步將此NFA編譯為一個(gè)與之等價(jià)的DFA,通過NFA或者DFA的狀態(tài)轉(zhuǎn)換檢查輸入字符串中是否存在給定的正則表達(dá)式模式。NFA和DFA在存儲(chǔ)空間和匹配速度兩個(gè)方面擁有各自的優(yōu)點(diǎn)和缺點(diǎn)。有限自動(dòng)機(jī)存儲(chǔ)的是一個(gè)狀態(tài)轉(zhuǎn)換表,給定一個(gè)當(dāng)前活躍狀態(tài)和一個(gè)輸入字符,通過在狀態(tài)轉(zhuǎn)換表中查詢,可得到下一時(shí)刻活躍的狀態(tài)。自動(dòng)機(jī)的存儲(chǔ)空間取決于這個(gè)狀態(tài)轉(zhuǎn)換表的大小,由于字符表的大小通常是確定的(如ASCII表),所以自動(dòng)機(jī)的存儲(chǔ)空間主要取決于狀態(tài)的個(gè)數(shù)。NFA所需存儲(chǔ)空間小,其狀態(tài)數(shù)與正則表達(dá)式的規(guī)則集大小(即規(guī)則集中字符數(shù))成線性增長(zhǎng)關(guān)系。但NFA的匹配速度很慢。由于NFA的不確定性,對(duì)于每個(gè)字符,NFA中的狀態(tài)都有可能同時(shí)轉(zhuǎn)移到多個(gè)目的狀態(tài),導(dǎo)致一次狀態(tài)轉(zhuǎn)換需要多次內(nèi)存訪問。對(duì)于這些同時(shí)激活的目的狀態(tài),在處理下一個(gè)輸入字符時(shí),它們又會(huì)同時(shí)激活更多的目的狀態(tài)。因此,NFA的匹配速度是不可預(yù)測(cè)的,實(shí)際應(yīng)用中,通常需要幾十次內(nèi)存訪問才能完成一次NFA狀態(tài)轉(zhuǎn)換,遠(yuǎn)不能滿足網(wǎng)絡(luò)線速(linerate)。DFA具有確定性的匹配速度,由于對(duì)于每個(gè)輸入字符,每個(gè)DFA狀態(tài)有且僅有唯一的目的狀態(tài),因此每次DFA狀態(tài)轉(zhuǎn)換僅需一次內(nèi)存訪問。但DFA的狀態(tài)數(shù)可能與正則表達(dá)式的規(guī)則集大小成指數(shù)增長(zhǎng)關(guān)系,導(dǎo)致正則表達(dá)式規(guī)則通常無(wú)法用DFA存儲(chǔ)。目前的基于DFA的方法都無(wú)法突破一個(gè)存儲(chǔ)體積的瓶頸,即所存儲(chǔ)的DFA轉(zhuǎn)移邊的數(shù)目總是大于DFA狀態(tài)數(shù),因此也就無(wú)法存儲(chǔ)狀態(tài)數(shù)成指數(shù)膨脹的DFA。目前,由于上述有限狀態(tài)自動(dòng)機(jī)的體量非常大,導(dǎo)致上述基于DFA的正則表達(dá)式匹配方法亟待改進(jìn)。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供了一種基于TCAM的DFA的匹配方法和裝置,以實(shí)現(xiàn)解決同時(shí)兼顧存儲(chǔ)空間和匹配速度的難題。為實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術(shù)方案:一種基于TCAM的確定性有窮狀態(tài)自動(dòng)機(jī)DFA的匹配方法,包括:將確定性有窮狀態(tài)自動(dòng)機(jī)DFA的每個(gè)狀態(tài)用若干三態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目表示,每個(gè)TCAM條目由源狀態(tài)域、輸入字符域和目的狀態(tài)域三個(gè)域組成,所述源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,分別用于存儲(chǔ)源狀態(tài)的模板ID編碼和私有ID編碼,所述目的狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,所述模板ID域用于存儲(chǔ)目的狀態(tài)的模板ID編碼和源狀態(tài)的模板ID編碼的異或結(jié)果,所述私有ID域用于存儲(chǔ)目的狀態(tài)的私有ID編碼;以具體的所述源狀態(tài)域和輸入字符域的拼接作為搜索關(guān)鍵詞,按照所述搜索關(guān)鍵字在所述DFA的所有TCAM條目中進(jìn)行搜索,獲取搜索得到的目的狀態(tài)域,將所述目的狀態(tài)域中的模板ID域的值與所述搜索關(guān)鍵字搜索關(guān)鍵詞中的模板ID域的值進(jìn)行異或,將所述異或結(jié)果作為所述目的狀態(tài)域中的最終的模板ID域的值。一種基于TCAM的確定性有窮狀態(tài)自動(dòng)機(jī)的匹配裝置,包括:TCAM條目構(gòu)造模塊,用于將確定性有窮狀態(tài)自動(dòng)機(jī)DFA的每個(gè)狀態(tài)用若干三態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目表示,每個(gè)TCAM條目由源狀態(tài)域、輸入字符域和目的狀態(tài)域三個(gè)域組成,所述源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,分別用于存儲(chǔ)源狀態(tài)的模板ID編碼和私有ID編碼,所述目的狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,所述模板ID域用于存儲(chǔ)目的狀態(tài)的模板ID編碼和源狀態(tài)的模板ID編碼的異或結(jié)果,所述私有ID域用于存儲(chǔ)目的狀態(tài)的私有ID編碼;搜索匹配模塊,用于以具體的所述源狀態(tài)域和輸入字符域的拼接作為搜索關(guān)鍵詞,按照所述搜索關(guān)鍵字在所述DFA的所有TCAM條目中進(jìn)行搜索,獲取搜索得到的目的狀態(tài)域,將所述目的狀態(tài)域中的模板ID域的值與所述搜索關(guān)鍵詞中的模板ID域的值進(jìn)行異或,將所述異或結(jié)果作為所述目的狀態(tài)域中的最終的模板ID域的值。本發(fā)明實(shí)施例通過基于TCAM實(shí)現(xiàn)DFA,TCAM條目的源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,目的狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,可以在不犧牲匹配速度的前提下突破DFA狀態(tài)數(shù)指數(shù)膨脹的問題,大大減少了DFA所需的存儲(chǔ)空間?!靖綀D說明】圖1為本發(fā)明實(shí)施例一提供的一種基于TCAM(ternarycontentaddressablememory,三態(tài)內(nèi)容尋址存儲(chǔ)器)的DFA的匹配方法的具體處理流程圖;圖2為本發(fā)明實(shí)施例二所提供的用于匹配正則表達(dá)式ab.*cd的和ef.*gh的DFA;圖3為本發(fā)明實(shí)施例四所提供的圖2中的狀態(tài)00生成的TCAM條目;圖4為本發(fā)明實(shí)施例五所提供的用于匹配正則表達(dá)式ab.*cd的和ef.*gh的NFA;圖5為本發(fā)明實(shí)施例五所提供的圖2中的各個(gè)DFA狀態(tài)所對(duì)應(yīng)的NFA子集;圖6為本發(fā)明實(shí)施例五所提供的模板ID的編碼;圖7為本發(fā)明實(shí)施例五所提供的基于私有ID相同的狀態(tài)集合和模板關(guān)系構(gòu)造的樹;圖8為本發(fā)明實(shí)施例五所提供的私有ID的編碼;圖9為本發(fā)明實(shí)施例六所提供的圖2的整個(gè)DFA進(jìn)行編碼后的TCAM;圖10為本發(fā)明實(shí)施例七所提供的對(duì)圖9中的TCAM進(jìn)行壓縮后的TCAM;圖11為本發(fā)明實(shí)施例八提供的一種基于TCAM的DFA的匹配裝置的具體結(jié)構(gòu)圖?!揪唧w實(shí)施方式】為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖,以對(duì)本發(fā)明實(shí)施例進(jìn)行清楚、完整地描述人員。本發(fā)明實(shí)施例的目的在于突破當(dāng)前DFA實(shí)現(xiàn)技術(shù)難以同時(shí)兼顧存儲(chǔ)空間和匹配速度的難題,尤其是在不犧牲匹配速度的前提下突破DFA狀態(tài)數(shù)指數(shù)膨脹的問題,提供一種基于TCAM實(shí)現(xiàn)DFA的方法。實(shí)施例一該實(shí)施例提供的一種基于TCAM的DFA的匹配方法的具體處理流程如圖1所示,包括如下的處理步驟:步驟S101、將DFA的每個(gè)狀態(tài)用若干TCAM條目表示,每個(gè)TCAM條目由源狀態(tài)域、輸入字符域和目的狀態(tài)域三個(gè)域組成,所述源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成。DFA可采用TCAM實(shí)現(xiàn)。TCAM作為一種高速并行查找引擎,已廣泛部署于各種高速網(wǎng)絡(luò)設(shè)備中,用于IP地址查找和基于包頭的包分類等網(wǎng)絡(luò)應(yīng)用。TCAM存儲(chǔ)單元可存儲(chǔ)“0”、“1”、“*”三種狀態(tài)的比特值,其中,比特值“*”表示“不關(guān)心狀態(tài)”,即既可以是“0”也可以是“1”。TCAM芯片由一定數(shù)目的TCAM條目(entry)組成。每個(gè)時(shí)鐘周期內(nèi),TCAM并行地將所有條目與搜索關(guān)鍵詞(searchkey)進(jìn)行比較,在所有滿足匹配條件的條目中,TCAM返回第一個(gè)條目作為輸出。TCAM的輸出將作為新的搜索關(guān)鍵詞的一部分,繼續(xù)參與下一次匹配。由于TCAM能存儲(chǔ)“*”的模糊匹配能力,使得TCAM能有效存儲(chǔ)和壓縮DFA的存儲(chǔ)空間;由于TCAM的并行查找能力,使得TCAM每執(zhí)行一次DFA狀態(tài)轉(zhuǎn)換,只需要一次TCAM時(shí)鐘周期,從而保證了不犧牲DFA的匹配速度?;赥CAM實(shí)現(xiàn)DFA,有望同時(shí)兼顧存儲(chǔ)空間和匹配速度兩大難題。當(dāng)上述輸入字符采用ASCII字符時(shí),因?yàn)锳SCII字符有256個(gè),所以每個(gè)狀態(tài)對(duì)應(yīng)256個(gè)TCAM條目。在實(shí)際應(yīng)用中,上述“出發(fā)狀態(tài)”域和“輸入字符”域可以是由“0”、“1”和“*”組成的字符串,“到達(dá)狀態(tài)”域可以是“0”和“1”組成的字符串。上述DFA可能是由正則表達(dá)式規(guī)則編譯得到,也可能是由字符串規(guī)則編譯得到,甚至別的任何方式得到。本發(fā)明實(shí)施例將DFA的每個(gè)狀態(tài)用若干TCAM條目表示,每個(gè)TCAM條目由源狀態(tài)域、輸入字符域和目的狀態(tài)域三個(gè)域組成。表示同一狀態(tài)的TCAM條目的出發(fā)狀態(tài)相同。源狀態(tài)域、輸入字符域存儲(chǔ)在TCAM中,目的狀態(tài)域存儲(chǔ)在附屬的SRAM中。步驟S102、基于DFA內(nèi)在的結(jié)構(gòu)特征,對(duì)DFA狀態(tài)進(jìn)行編號(hào)的方法。定義DFA狀態(tài)i和的DFA狀態(tài)j之間的“共享邊”和“非共享邊”,若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該輸入字符轉(zhuǎn)移到某個(gè)相同的目的狀態(tài),則這兩條出邊是狀態(tài)i和狀態(tài)j之間的“共享邊”;若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該輸入字符轉(zhuǎn)移到不同的目的狀態(tài),則狀態(tài)i的這條出邊是關(guān)于狀態(tài)j的“非共享邊”,且狀態(tài)j的這條出邊是關(guān)于狀態(tài)i的“非共享邊”。定義兩個(gè)DFA狀態(tài)的“相似度”,它的取值是這兩個(gè)DFA狀態(tài)之間的共享邊的數(shù)目。每個(gè)DFA狀態(tài)均用一對(duì)狀態(tài)ID進(jìn)行編號(hào),這個(gè)狀態(tài)ID對(duì)命名為(“模板ID”,“私有ID”),每個(gè)DFA狀態(tài)有且僅有唯一的(模板ID,私有ID)對(duì)。定義“自循環(huán)狀態(tài)”,它是轉(zhuǎn)移到自身的出邊的數(shù)目超過了一定的閾值的狀態(tài),閾值大小為10。為每個(gè)自循環(huán)狀態(tài)分配一個(gè)唯一的模板ID,為所有的自循環(huán)狀態(tài)分配一個(gè)相同的私有ID。每個(gè)自循環(huán)狀態(tài)的模板ID的編碼過程如下:根據(jù)DFA與生成它的NFA之間的關(guān)系:每個(gè)DFA狀態(tài)代表一組NFA狀態(tài)的集合;對(duì)DFA中所有的自循環(huán)狀態(tài)所代表的NFA狀態(tài)的集合取并集,模板ID編碼的長(zhǎng)度即為該并集的大小,在模板ID編碼中為并集中的每個(gè)NFA狀態(tài)分配一位比特,對(duì)每一個(gè)自循環(huán)狀態(tài),若其子集中的NFA狀態(tài)出現(xiàn)在此并集中,其比特位置“1”,否則置“0”。對(duì)于每個(gè)非自循環(huán)狀態(tài),其模板ID的取值為與其相似度最大的自循環(huán)狀態(tài)的模板ID;其私有ID的取值按如下寬度遍歷過程迭代進(jìn)行,即維護(hù)一個(gè)狀態(tài)集合的隊(duì)列Q,嘗試為所有在同一個(gè)狀態(tài)集合中的狀態(tài)分配相同的私有ID,初始將由所有自循環(huán)狀態(tài)組成的狀態(tài)集合入隊(duì),并將該狀態(tài)集合標(biāo)記為“已訪問”,每次取出隊(duì)首的狀態(tài)集合S直至隊(duì)列為空:依次迭代檢查S經(jīng)每一個(gè)字符所達(dá)到的目的狀態(tài)集合D。從D中刪去所有自循環(huán)狀態(tài);若D中存在多個(gè)狀態(tài)共享相同的模板ID,則只留下其中一個(gè)狀態(tài)(優(yōu)先留下尚未被分配私有ID的狀態(tài)),其余的狀態(tài)從D中刪去。若存在一個(gè)已訪問過的狀態(tài)集合S’,使得則跳出本次迭代;若存在一個(gè)已訪問過的狀態(tài)集合S’(S’中所有的狀態(tài)已被分配相同的“私有ID”),使得則將S’中狀態(tài)所分配的“私有ID”分配給D中所有狀態(tài);否則,D中所有狀態(tài)分配一個(gè)尚未被分配過的“私有ID”;將D中所有狀態(tài)從所有已訪問的狀態(tài)集合中刪除;標(biāo)記集合D為已訪問;D入隊(duì)。步驟S103、基于上述DFA的狀態(tài)編號(hào)方法,確定DFA狀態(tài)間“模板”關(guān)系的方法。定義DFA狀態(tài)間的“模板”關(guān)系,模板關(guān)系是一種單向的關(guān)系,每個(gè)DFA狀態(tài)至多只有一個(gè)模板狀態(tài),若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i在TCAM中只需要存儲(chǔ)其關(guān)于狀態(tài)j的非共享邊。全部的DFA狀態(tài)被劃分成多個(gè)狀態(tài)集合,每個(gè)狀態(tài)集合包含的是全部擁有相同私有ID的狀態(tài),且該狀態(tài)集合以這個(gè)私有ID命名。定義“親屬狀態(tài)”,如果兩個(gè)狀態(tài)分屬于兩個(gè)狀態(tài)集合,且它們共享相同的模板ID,則它們互為彼此的親屬狀態(tài)。每個(gè)狀態(tài)至多只有一個(gè)模板狀態(tài)。對(duì)于私有ID為K的狀態(tài)集合,若私有ID為J的狀態(tài)集合同時(shí)滿足下述條件,則狀態(tài)集合K的所有狀態(tài)都各自選擇它們?cè)跔顟B(tài)集合J中的親屬狀態(tài)作為模板狀態(tài):J<K;對(duì)于集合K中的每一個(gè)狀態(tài),其在集合J中都存在一個(gè)親屬狀態(tài);在所有滿足上述兩個(gè)條件的候選狀態(tài)集合中,集合J與集合K的相似度(它的值為集合K與集合J之間所有的的親屬狀態(tài)對(duì)的相似度之和)最大;私有ID為0的狀態(tài),即自循環(huán)狀態(tài),不為之分配模板。步驟S104、基于上述DFA的狀態(tài)編號(hào)方法和模板關(guān)系,在TCAM中對(duì)DFA狀態(tài)進(jìn)行編碼的方法。定義字符串之間的“匹配”關(guān)系,給定兩個(gè)由比特“0”、“1”或“*”組成的字符串,分別記為T和P,如果字符串T和P的長(zhǎng)度一樣,且對(duì)于每一位比特,T在該位上的比特值等于P在該位上的比特值或者P在該位上的比特值為“*”,則稱字符串T“匹配”字符串P。每一個(gè)在DFA中出現(xiàn)的模板ID,其在TCAM中均有唯一的模板ID編碼;每一個(gè)在DFA中出現(xiàn)的私有ID,其在TCAM中均有唯一的私有ID編碼;每一個(gè)DFA狀態(tài),其在TCAM中均有有唯一的(模板ID編碼,私有ID編碼)對(duì);對(duì)于存在模板關(guān)系的兩個(gè)DFA狀態(tài)i和j,若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的私有ID編碼覆蓋狀態(tài)j的私有ID編碼?;谏鲜鯠FA狀態(tài)間的模板關(guān)系,在TCAM中對(duì)私有ID進(jìn)行編碼的方法包括:DFA狀態(tài)間的模板關(guān)系將所有的DFA狀態(tài)組織成多個(gè)樹,每個(gè)樹均以一個(gè)自循環(huán)狀態(tài)作為根,每個(gè)狀態(tài)均以它的模板狀態(tài)為父結(jié)點(diǎn);在所述樹中為每個(gè)狀態(tài)分配一個(gè)“子編碼”,如果一個(gè)狀態(tài)有N個(gè)子結(jié)點(diǎn),則這N個(gè)子結(jié)點(diǎn)所需的子編碼比特?cái)?shù)為每個(gè)子結(jié)點(diǎn)分配一個(gè)長(zhǎng)度為n的互不相同的子編碼;全“0”的編碼保留不分配,葉子結(jié)點(diǎn)的子編碼為空;私有ID相同的狀態(tài)分配的子編碼必須相同;每個(gè)狀態(tài)的私有ID的編碼即為它所有祖先結(jié)點(diǎn)的子編碼與自身子編碼的拼接,即從樹根開始到每個(gè)狀態(tài),該狀態(tài)的初始私有ID編碼為空,沿途依次在后面拼接上所訪問的父結(jié)點(diǎn)的子編碼,最后拼接上該狀態(tài)的子編碼,作為該狀態(tài)的私有ID編碼;為使私有ID編碼的長(zhǎng)度一致,取最長(zhǎng)的私有ID編碼的長(zhǎng)度,在所有的私有ID編碼后面拼接上全“*”以擴(kuò)展到統(tǒng)一的最長(zhǎng)的長(zhǎng)度。步驟S104、基于上述TCAM中的狀態(tài)編碼方法,在TCAM中對(duì)DFA的狀態(tài)轉(zhuǎn)移邊進(jìn)行編碼的方法。TCAM條目的源狀態(tài)域由“模板ID域”和“私有ID域”兩個(gè)子域組成,分別用于存儲(chǔ)源狀態(tài)的模板ID編碼和私有ID編碼;TCAM條目的目的狀態(tài)域由“模板ID域”和“私有ID域”兩個(gè)子域組成,“模板ID域”用于存儲(chǔ)目的狀態(tài)的模板ID編碼和源狀態(tài)的模板ID編碼的異或結(jié)果,“私有ID域”用于存儲(chǔ)目的狀態(tài)的私有ID編碼;TCAM的搜索關(guān)鍵詞由源狀態(tài)域和輸入字符域拼接而成,其中源狀態(tài)域由模板ID域和私有ID域組成,TCAM的搜索關(guān)鍵詞僅包含比特“0”或“1”;給定搜索關(guān)鍵詞,TCAM返回對(duì)應(yīng)的目的狀態(tài)域,其中,對(duì)于返回結(jié)果中的“模板ID域”的值,需計(jì)算它與搜索關(guān)鍵詞中的模板ID域的值的異或結(jié)果,作為真實(shí)的“模板ID域”的值輸出;每個(gè)DFA狀態(tài)只需存儲(chǔ)它關(guān)于其模板狀態(tài)的非共享邊,若一個(gè)狀態(tài)沒有模板狀態(tài),則它需要存儲(chǔ)其全部的狀態(tài)轉(zhuǎn)移邊;存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的順序如下:若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的狀態(tài)轉(zhuǎn)移邊都必須存儲(chǔ)在狀態(tài)j的狀態(tài)轉(zhuǎn)移邊之前;不存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的順序是任意的。步驟S105、對(duì)TCAM條目進(jìn)行壓縮的方法。狀態(tài)內(nèi)的TCAM條目壓縮:根據(jù)不同的TCAM條目共享相同的目的狀態(tài)域、源狀態(tài)域,對(duì)輸入字符域進(jìn)行合并,從而減少單個(gè)狀態(tài)所占用的TCAM條目;其過程如下:若存在共享相同的目的狀態(tài)域、源狀態(tài)域的兩個(gè)條目i和j且i和j的輸入字符域只相差一個(gè)比特,則在條目i的輸入字符域中,將與條目j相差的比特位的值置為“*”,刪除條目j,如此反復(fù)直到不存在這樣的兩個(gè)條目為止;狀態(tài)間的TCAM條目壓縮:根據(jù)不同的TCAM條目共享相同的目的狀態(tài)域、輸入字符域、源狀態(tài)域的私有ID域,對(duì)源狀態(tài)域的模板ID域進(jìn)行合并,從而減少不同狀態(tài)所占用的TCAM條目;其過程如下:若存在共享相同的目的狀態(tài)域、輸入字符域、源狀態(tài)域的私有ID域的兩個(gè)條目i和j且i和j的源狀態(tài)域的模板ID域只相差一個(gè)比特,則在條目i的模板ID域中,將與條目j相差的比特位的值置為“*”,刪除條目j,如此反復(fù)直到不存在這樣的兩個(gè)條目為止。步驟S106、將源狀態(tài)域和輸入字符域的拼接構(gòu)成TCAM的搜索關(guān)鍵詞,按照所述搜索關(guān)鍵字在所述DFA的所有TCAM條目中進(jìn)行搜索,獲取搜索得到的目的狀態(tài)域。TCAM的搜索關(guān)鍵詞由源狀態(tài)域和輸入字符域拼接而成,其中源狀態(tài)域由模板ID域和私有ID域組成,TCAM的搜索關(guān)鍵詞僅包含比特“0”或“1”。按照所述搜索關(guān)鍵字在所述DFA的所有TCAM條目中進(jìn)行搜索,獲取搜索得到的目的狀態(tài)域,一次DFA狀態(tài)轉(zhuǎn)換只需要一次TCAM并行查找即可完成。將所述返回的目的狀態(tài)域中的模板ID域的值與所述搜索關(guān)鍵詞中的模板ID域的值進(jìn)行異或,將所述異或結(jié)果作為所述目的狀態(tài)域中的最終的模板ID域的值。以下實(shí)施例均采用兩個(gè)正則表達(dá)式ab.*cd的和ef.*gh進(jìn)行說明,正則表達(dá)式ab.*cd用于識(shí)別如下特征的字符串:首先匹配ab,接下來(lái)是任意字符出現(xiàn)任意多次,接下來(lái)是cd;正則表達(dá)式ef.*gh用于識(shí)別如下特征的字符串:首先匹配ef,接下來(lái)是任意字符出現(xiàn)任意多次,接下來(lái)是gh。這兩個(gè)正則表達(dá)式匹配的字符串可以出現(xiàn)在輸入文本中的任意位置。實(shí)施例二該實(shí)施例提供的一種對(duì)DFA中的狀態(tài)進(jìn)行編碼的方法包括:一個(gè)狀態(tài)數(shù)為n的DFA,它的狀態(tài)通常用整數(shù)ID表示,即從表示,本發(fā)明對(duì)狀態(tài)號(hào)重新編碼以反映DFA的內(nèi)在結(jié)構(gòu)特征。圖2所示是用于匹配正則表達(dá)式ab.*cd的和ef.*gh的DFA,圓圈為DFA狀態(tài),實(shí)線箭頭為DFA的狀態(tài)轉(zhuǎn)移邊。狀態(tài)00是起始狀態(tài),接收狀態(tài)用雙圈表示,狀態(tài)15和狀態(tài)35是接收規(guī)則ab.*cd的接收狀態(tài),狀態(tài)26和狀態(tài)36是接收規(guī)則ef.*gh的接收狀態(tài)。先定義一些相關(guān)的概念:定義DFA狀態(tài)i和的DFA狀態(tài)j之間的“共享邊”和“非共享邊”,若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該字符轉(zhuǎn)移到某個(gè)相同的目的狀態(tài),則這兩條出邊是狀態(tài)i和狀態(tài)j之間的“共享邊”;若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該字符轉(zhuǎn)移到不同的目的狀態(tài),則狀態(tài)i的這條出邊是關(guān)于狀態(tài)j的“非共享邊”,且狀態(tài)j的這條出邊是關(guān)于狀態(tài)i的“非共享邊”;如圖2中狀態(tài)00和狀態(tài)01,對(duì)于字符b,狀態(tài)00到達(dá)狀態(tài)00,而狀態(tài)01到達(dá)狀態(tài)10,故關(guān)于字符b的出邊即為狀態(tài)00和狀態(tài)01的非共享邊;對(duì)于字符a,狀態(tài)00和狀態(tài)01都轉(zhuǎn)移到狀態(tài)01,對(duì)于字符e,狀態(tài)00和狀態(tài)01都轉(zhuǎn)移到狀態(tài)03,而對(duì)于除a、b和e以外的字符,狀態(tài)00和狀態(tài)01都轉(zhuǎn)移到狀態(tài)00,故除字符b以外的255條邊都是狀態(tài)00和狀態(tài)01的共享邊;定義兩個(gè)DFA狀態(tài)的“相似度”,它的取值是這兩個(gè)DFA狀態(tài)之間的共享邊的數(shù)目;如圖2中狀態(tài)00和狀態(tài)11的相似度為255,因?yàn)樗鼈兂藢?duì)于字符b的目的狀態(tài)不相同以外,對(duì)于其他255個(gè)字符均轉(zhuǎn)移到相同的目的狀態(tài);定義DFA狀態(tài)間的“模板”關(guān)系,模板關(guān)系是一種單向的關(guān)系,每個(gè)DFA狀態(tài)至多只有一個(gè)模板狀態(tài),若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i在TCAM中只需要存儲(chǔ)其關(guān)于狀態(tài)j的非共享邊;圖2中的狀態(tài)間的模板關(guān)系用虛線箭頭表示,箭頭末端的狀態(tài)即為箭頭起始端的狀態(tài)的“模板”;在圖2中,每個(gè)狀態(tài)只畫出了它關(guān)于它的模板狀態(tài)的非共享邊,任何一個(gè)狀態(tài)的非共享邊都可以通過它的模板狀態(tài)(通過虛線箭頭)得到;定義“自循環(huán)狀態(tài)”,它是轉(zhuǎn)移到自身的出邊的數(shù)目超過了一定的閾值的狀態(tài),閾值大小為10;圖2中對(duì)四個(gè)代表自循環(huán)狀態(tài)的圓圈加粗表示,即狀態(tài)00、10、20、30,。圖2中,DFA內(nèi)部存在特征相似的子結(jié)構(gòu),如和都是識(shí)別字符串a(chǎn)b的子結(jié)構(gòu),和都是識(shí)別字符串cd的子結(jié)構(gòu),和都是識(shí)別字符串ef的子結(jié)構(gòu),和都是識(shí)別字符串gh的子結(jié)構(gòu)。本發(fā)明對(duì)DFA狀態(tài)進(jìn)行合適的重編號(hào),即用一對(duì)狀態(tài)ID進(jìn)行編號(hào),其中一個(gè)ID用于表示具有相似結(jié)構(gòu)特征的狀態(tài)(稱之為“模板ID”),另一個(gè)ID則用于區(qū)分在同一個(gè)相似子結(jié)構(gòu)中不同的狀態(tài)(稱之為“私有ID”)。以下是狀態(tài)ID重編號(hào)的方法:每個(gè)DFA狀態(tài)均用一對(duì)狀態(tài)ID進(jìn)行編號(hào),這個(gè)狀態(tài)ID對(duì)命名為(模板ID,私有ID),每個(gè)DFA狀態(tài)有且僅有唯一的(模板ID,私有ID)對(duì);這也就保證了ID的唯一性,但同一個(gè)模板ID或者私有ID可以被不同的DFA狀態(tài)所共享,只需保證對(duì)于每個(gè)狀態(tài),由模板ID和私有ID組合起來(lái)的ID對(duì)是唯一的即可;為每個(gè)自循環(huán)狀態(tài)各自分配一個(gè)唯一的模板ID,為所有的自循環(huán)狀態(tài)分配一個(gè)相同的私有ID;圖2中為四個(gè)自循環(huán)狀態(tài)00、10、20、30各自分配一個(gè)模板ID為0、1、2、3;同時(shí)分配一個(gè)相同的私有ID為0;對(duì)于每個(gè)非自循環(huán)狀態(tài),其模板ID的取值為與其相似度最大的自循環(huán)狀態(tài)的模板ID;圖2中的狀態(tài)01、03與自循環(huán)狀態(tài)00相似度最大,故它們的“模板ID”為0;狀態(tài)12、13、15與自循環(huán)狀態(tài)10相似度最大,故它們的“模板ID”為1;狀態(tài)21、24、26與自循環(huán)狀態(tài)20相似度最大,故它們的“模板ID”為2;狀態(tài)32、34、35、36與自循環(huán)狀態(tài)30相似度最大,故它們的“模板ID”為3;非自循環(huán)狀態(tài)的“私有ID”的取值按如下寬度遍歷過程迭代進(jìn)行,即維護(hù)一個(gè)狀態(tài)集合的隊(duì)列Q,嘗試為所有在同一個(gè)狀態(tài)集合中的狀態(tài)分配相同的私有ID,初始將由所有自循環(huán)狀態(tài)組成的狀態(tài)集合入隊(duì),即Q={00,10,20,30},并將該狀態(tài)集合標(biāo)記為已訪問,每次取出隊(duì)首的狀態(tài)集合S直至隊(duì)列為空:依次迭代檢查S經(jīng)每一個(gè)字符所達(dá)到的目的狀態(tài)集合D,以字符a為例說明,狀態(tài)集合S={00,10,20,30},S經(jīng)過字符a所到達(dá)的目的狀態(tài)集合D={01,10,21,30}:從D中刪去所有自循環(huán)狀態(tài),因?yàn)樽匝h(huán)狀態(tài)已經(jīng)分配過了私有ID;若D中存在多個(gè)狀態(tài)共享相同的模板ID,則只留下其中一個(gè)(優(yōu)先留下尚未被分配私有ID的狀態(tài)),其余的從D中刪去,這樣保證了模板ID相同的狀態(tài)不會(huì)被分配相同的私有ID,也就保證了每個(gè)狀態(tài)分配了唯一的ID對(duì);經(jīng)過此步驟后,D={01,21};若存在一個(gè)已訪問過的狀態(tài)集合S’,使得則跳出本次迭代;若存在一個(gè)已訪問過的狀態(tài)集合S’(S’中所有的狀態(tài)已被分配相同的“私有ID”),使得則將S’中狀態(tài)所分配的“私有ID”分配給D中所有狀態(tài);否則,D中所有狀態(tài)分配一個(gè)尚未被分配過的“私有ID”,因此D中的所有狀態(tài)01和21被分配了一個(gè)相同的新的“私有ID”為1;將D中所有狀態(tài)從所有已訪問的狀態(tài)集合中刪除;標(biāo)記集合D為已訪問;D加入隊(duì)列Q。圖2中整個(gè)“私有ID”的分配過程如下:從自循環(huán)狀態(tài)組成的集合{00,10,20,30}出發(fā),經(jīng)過字符a找到集合{01,21}并為狀態(tài)01、21分配“私有ID”1,經(jīng)過字符c找到集合{12,32}并為狀態(tài)12、32分配“私有ID”2,經(jīng)過字符e找到集合{03,13}并為狀態(tài)03、13分配“私有ID”3,經(jīng)過字符g找到集合{24,34}并為狀態(tài)24、34分配“私有ID”4;從狀態(tài)集合{12,32}出發(fā),經(jīng)過字符d找到集合{15,35}并為狀態(tài)15、35分配“私有ID”5;從狀態(tài)集合{24,34}出發(fā),經(jīng)過字符h找到集合{26,36}并為狀態(tài)26、36分配“私有ID”6;圖2中的每個(gè)狀態(tài)的ID都用兩位數(shù)字表示,左邊的數(shù)字表示模板ID,右邊的數(shù)字表示私有ID,如狀態(tài)01,其模板ID為0,且其私有ID為1。實(shí)施例三該實(shí)施例提供的一種確定DFA狀態(tài)間“模板”關(guān)系的方法包括:圖2中狀態(tài)間的模板狀態(tài)已用虛線箭頭表示,本實(shí)施例說明如何建立狀態(tài)間的模板關(guān)系。每個(gè)狀態(tài)至多只有一個(gè)模板狀態(tài),其中自循環(huán)狀態(tài)都沒有模板狀態(tài),非自循環(huán)狀態(tài)都有一個(gè)模板狀態(tài)。首先,全部的DFA狀態(tài)被劃分成多個(gè)狀態(tài)集合,每個(gè)集合包含的是全部擁有相同私有ID的狀態(tài),且該集合以這個(gè)私有ID命名;這樣,圖2中的狀態(tài)可劃分為7個(gè)狀態(tài)集合,分別是私有ID為0~7的狀態(tài)集合;定義“親屬狀態(tài)”,如果兩個(gè)狀態(tài)分屬于兩個(gè)狀態(tài)集合,且它們共享相同的模板ID,則它們互為彼此的親屬狀態(tài)。如狀態(tài)01和狀態(tài)00就是一對(duì)親屬狀態(tài),因?yàn)闋顟B(tài)01屬于私有ID為1的狀態(tài)集合,狀態(tài)00屬于私有ID為0的狀態(tài)集合,且狀態(tài)01和狀態(tài)00共享相同的模板ID0。對(duì)于私有ID為K的狀態(tài)集合,若私有ID為J的狀態(tài)集合同時(shí)滿足下述條件,則狀態(tài)集合K的所有狀態(tài)都各自選擇它們?cè)跔顟B(tài)集合J中的親屬狀態(tài)作為模板狀態(tài):J<K;對(duì)于集合K中的每一個(gè)狀態(tài),其在集合J中都存在一個(gè)親屬狀態(tài);在所有滿足上述兩個(gè)條件的候選狀態(tài)集合中,集合J與集合K的相似度(即所有的集合K中的狀態(tài)與其在集合J中的親屬狀態(tài)的相似度之和)最大;也就是說,每個(gè)狀態(tài)都選擇一個(gè)和它共享模板ID的狀態(tài)作為模板狀態(tài),同時(shí),對(duì)于私有ID相同的狀態(tài),它們的模板狀態(tài)的私有ID也是相同的。對(duì)于任意一個(gè)狀態(tài)集合K,總是可以找到一個(gè)滿足條件的狀態(tài)集合J,因?yàn)橛伤凶匝h(huán)狀態(tài)組成的狀態(tài)集合總是滿足前兩個(gè)條件。由于具有模板關(guān)系的所有狀態(tài)都共享相同的模板ID,假設(shè)DFA中存在m個(gè)自循環(huán)狀態(tài)(即m個(gè)模板ID),那么整個(gè)DFA就被分成了m棵樹,樹中狀態(tài)通過模板關(guān)系聯(lián)通,樹根為一個(gè)自循環(huán)狀態(tài)。依次按私有ID從小到大為每個(gè)狀態(tài)集合中的狀態(tài)分配模板關(guān)系,圖2中的模板分配過程如下:私有ID為0的狀態(tài)集合不分配模板;私有ID為1~6的所有狀態(tài)集合都和私有ID為0的狀態(tài)集合相似度最大,故均以私有ID為0的親屬狀態(tài)為模板狀態(tài)。最終得到的狀態(tài)間的模板關(guān)系如圖2的虛線箭頭所示。實(shí)施例四該實(shí)施例提供的一種在TCAM中存儲(chǔ)圖2中的狀態(tài)00的轉(zhuǎn)移邊的方法包括:如圖3所示,DFA的狀態(tài)轉(zhuǎn)移邊存儲(chǔ)在一個(gè)TCAM和一個(gè)與之附屬的SRAM中,一個(gè)“TCAM條目”由存儲(chǔ)在TCAM中的“源狀態(tài)域”、“輸入字符域”和存儲(chǔ)在附屬的SRAM中的“目的狀態(tài)域”所組成;“源狀態(tài)域”和“讀入字符域”是由“0”、“1”和“*”組成的字符串,“目的狀態(tài)域”是“0”和“1”組成的字符串。用TCAM存儲(chǔ)該DFA,在不經(jīng)過任何壓縮的情況下,每個(gè)狀態(tài)需要256個(gè)TCAM條目(因?yàn)锳SCII字符有256個(gè)),由于TCAM可以存儲(chǔ)“*”,使得TCAM可以用較少的條目數(shù)表示一個(gè)狀態(tài)的轉(zhuǎn)移邊。圖2中的狀態(tài)00經(jīng)字符a到達(dá)目的狀態(tài)01,經(jīng)字符e到達(dá)目的狀態(tài)03,經(jīng)其它字符均返回自身。為清晰表示,下文中,狀態(tài)在TCAM中的編碼均以下劃線標(biāo)注。雖然TCAM存儲(chǔ)的是比特“0”、“1”、“*”,附屬的SRAM中存儲(chǔ)的是比特“0”和“1”,但為方便表示,下文中的文字說明以及附圖中,狀態(tài)ID的編碼有時(shí)會(huì)簡(jiǎn)寫為狀態(tài)的ID值,輸入字符的編碼簡(jiǎn)寫為輸入字符的值,為作分辨,在文字說明中用下劃線標(biāo)記編碼形式的值。TCAM條目用“(源狀態(tài)ID或其編碼)(讀入字符值或其ASCII編碼)→(目的狀態(tài)ID或其編碼)”,其中編碼形式用下劃線表示,如圖3中的第一個(gè)TCAM條目,記為“100000a→100001”。假定已知狀態(tài)00的編碼為“100000”,狀態(tài)01的編碼為“100001”,狀態(tài)03的編碼為“100100”,則如圖3所示,只需要3個(gè)TCAM條目即可表示狀態(tài)00的轉(zhuǎn)移邊。將DFA的源狀態(tài)編碼和輸入字符編碼拼接作為TCAM的搜索關(guān)鍵詞,在所有匹配的條目中,TCAM返回最高(即最前)的結(jié)果(存儲(chǔ)在附屬的SRAM中的對(duì)應(yīng)的目的狀態(tài)編碼),一次DFA狀態(tài)轉(zhuǎn)換只需要一次TCAM并行查找;如圖3所示,假定在DFA的匹配過程中,當(dāng)前狀態(tài)為00,根據(jù)輸入字符分三種情況:若輸入字符為a,則搜索關(guān)鍵詞為“100001a”,在TCAM中并行查找,搜索關(guān)鍵詞會(huì)同時(shí)匹配第一個(gè)條目和第三個(gè)條目,TCAM返回第一個(gè)條目,輸出存儲(chǔ)在SRAM中的結(jié)果“100001”,即狀態(tài)01;若輸入字符為e,則搜索關(guān)鍵詞為“100001e”,在TCAM中并行查找,搜索關(guān)鍵詞會(huì)同時(shí)匹配第二個(gè)條目和第三個(gè)條目,TCAM返回第二個(gè)條目,輸出存儲(chǔ)在SRAM中的結(jié)果“100011”,即狀態(tài)03;若輸入字符為a和e以外的任意字符,則在TCAM中并行查找,搜索關(guān)鍵詞僅匹配第三個(gè)條目,TCAM返回存儲(chǔ)在SRAM中的結(jié)果“100000”,即狀態(tài)00。用TCAM存儲(chǔ)DFA,使得狀態(tài)轉(zhuǎn)換可以通過TCAM的并行查找來(lái)完成,而且一次狀態(tài)轉(zhuǎn)換僅需要一次并行查找。圖3只是一個(gè)引子,用于說明TCAM如何存儲(chǔ)單個(gè)DFA狀態(tài)的轉(zhuǎn)移邊,TCAM更具體的結(jié)構(gòu)將在后面的實(shí)施例中說明。實(shí)施例五該實(shí)施例提供的一種在TCAM中對(duì)DFA狀態(tài)進(jìn)行編碼的方法包括:即對(duì)DFA狀態(tài)的模板ID和私有ID進(jìn)行編碼,每一個(gè)在DFA中出現(xiàn)的模板ID,其在TCAM中均有唯一的模板ID編碼;每一個(gè)在DFA中出現(xiàn)的私有ID,其在TCAM中均有唯一的私有ID編碼。這樣,每個(gè)DFA狀態(tài)也將擁有一個(gè)由模板ID編碼和私有ID編碼組成的唯一的狀態(tài)編碼。實(shí)施例2中已說明,在分配模板狀態(tài)的過程中,若DFA中存在m個(gè)自循環(huán)狀態(tài),則所有的狀態(tài)被分成了m棵樹,每棵樹都以一個(gè)自循環(huán)狀態(tài)為根狀態(tài)。這樣,每棵樹中的狀態(tài)都共享相同的模板ID,也就是作為樹根的自循環(huán)狀態(tài)的模板ID,因此,只需要對(duì)所有自循環(huán)狀態(tài)的模板ID進(jìn)行編碼即可;同時(shí),具有模板關(guān)系的狀態(tài)因?yàn)楸舜硕脊蚕硐嗤哪0錓D,故只需在私有ID編碼中正確地反映狀態(tài)間的模板關(guān)系即可。對(duì)模板ID和私有ID編碼是獨(dú)立進(jìn)行的。對(duì)模板ID進(jìn)行編碼的原理:根據(jù)DFA與NFA之間的內(nèi)在關(guān)系,在NFA轉(zhuǎn)化為一個(gè)等價(jià)的DFA的過程中,每個(gè)DFA狀態(tài)實(shí)際上模擬的是一組NFA狀態(tài)的集合,或者說一個(gè)DFA狀態(tài)本質(zhì)上就是一個(gè)NFA狀態(tài)子集。圖4所示是用于匹配正則表達(dá)式ab.*cd的和ef.*gh的NFA,圓圈為NFA狀態(tài),箭頭為NFA的狀態(tài)轉(zhuǎn)移邊。狀態(tài)0是起始狀態(tài),接收狀態(tài)用雙圈表示,狀態(tài)7是接收規(guī)則ab.*cd的接收狀態(tài),狀態(tài)8是接收規(guī)則ef.*gh的接收狀態(tài)。圖2所示的DFA是通過圖4的NFA通過標(biāo)準(zhǔn)的算法(子集構(gòu)造法)構(gòu)造得到的。圖5所示的是每個(gè)DFA狀態(tài)所對(duì)應(yīng)的NFA狀態(tài)子集。對(duì)模板ID進(jìn)行編碼的步驟如下:對(duì)DFA中所有的自循環(huán)狀態(tài)所代表的NFA狀態(tài)的集合取并集,模板ID編碼的長(zhǎng)度即為該并集的大小,在模板ID編碼中為并集中的每個(gè)NFA狀態(tài)分配一位比特;對(duì)每一個(gè)自循環(huán)狀態(tài),若其子集中的NFA狀態(tài)出現(xiàn)在此并集中,其比特位置“1”,否則置“0”。如圖5,四個(gè)自循環(huán)狀態(tài)的NFA子集分別為{0}、{0,3}、{0,4}、{0,3,4},取并集得到{0,3,4},為并集中的每一個(gè)NFA狀態(tài)依次分配一位比特,于是自循環(huán)狀態(tài)的NFA子集分別編碼為“100”、“110”、“101”、“111”,也就是這些自循環(huán)狀態(tài)的模板ID的編碼。對(duì)于非自循環(huán)狀態(tài),其模板ID總是和某個(gè)自循環(huán)狀態(tài)的模板ID相同,故它的模板ID編碼也和那個(gè)自循環(huán)狀態(tài)的模板ID編碼相同。圖6所示的是模板ID的編碼。對(duì)私有ID進(jìn)行編碼的原理是:DFA狀態(tài)間的模板關(guān)系將所有的DFA狀態(tài)組織成多個(gè)樹,每個(gè)樹均以一個(gè)自循環(huán)狀態(tài)作為根,每個(gè)狀態(tài)均以它的模板狀態(tài)為父結(jié)點(diǎn)。每個(gè)狀態(tài)只需在TCAM中保存它關(guān)于它的模板狀態(tài)的非共享邊,它和模板狀態(tài)的共享邊只需存放在模板狀態(tài)處。定義字符串之間的“匹配”關(guān)系,給定兩個(gè)由比特“0”、“1”或“*”組成的字符串,分別記為T和P,如果字符串T和P的長(zhǎng)度一樣,且對(duì)于每一位比特,T在該位上的比特值等于P在該位上的比特值或者P在該位上的比特值為“*”,則稱字符串T“匹配”字符串P;要在TCAM中實(shí)現(xiàn)狀態(tài)間模板關(guān)系,當(dāng)且僅當(dāng):對(duì)于存在模板關(guān)系的兩個(gè)DFA狀態(tài)i和j,若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的私有ID匹配狀態(tài)j的私有ID編碼。對(duì)私有ID進(jìn)行編碼的步驟如下:為每個(gè)私有ID分配一個(gè)“子編碼”,如果一個(gè)狀態(tài)有N個(gè)子結(jié)點(diǎn),為了區(qū)分這N個(gè)子結(jié)點(diǎn)以及它們的父結(jié)點(diǎn),所需的子編碼比特?cái)?shù)為每個(gè)子結(jié)點(diǎn)分配一個(gè)長(zhǎng)度為n的互不相同的子編碼;全“0”的編碼保留不分配,葉子結(jié)點(diǎn)的子編碼為空;私有ID相同的狀態(tài)分配的子編碼必須相同;為保證私有ID相同的狀態(tài)分配相同的子編碼,可采用實(shí)例2的基于狀態(tài)集合的方法,即只構(gòu)建一顆樹,將私有ID相同的狀態(tài)放到樹中同一個(gè)節(jié)點(diǎn)中,在這棵樹上,原來(lái)m棵樹的模板關(guān)系仍然得到保持。如圖7所示,每個(gè)結(jié)點(diǎn)代表一個(gè)私有ID相同的狀態(tài)集合,圖7中共7個(gè)結(jié)點(diǎn),一個(gè)根結(jié)點(diǎn)和6個(gè)葉子結(jié)點(diǎn),故需要個(gè)比特,私有ID為1~6的狀態(tài)分別被分配子編碼001~111;每個(gè)狀態(tài)的私有ID的編碼即為它所有祖先結(jié)點(diǎn)的子編碼與自身子編碼的拼接,即從樹根開始到每個(gè)狀態(tài),該狀態(tài)的初始私有ID編碼為空,沿途依次在后面拼接上所訪問的父結(jié)點(diǎn)的子編碼,最后拼接上該狀態(tài)的子編碼,作為該狀態(tài)的私有ID編碼;為使私有ID編碼的長(zhǎng)度一致,取最長(zhǎng)的私有ID編碼的長(zhǎng)度,在所有的私有ID編碼后面拼接上全“*”以擴(kuò)展到統(tǒng)一的最長(zhǎng)的長(zhǎng)度。如圖8所示,每個(gè)私有ID均分配了三位比特的編碼,其中私有ID0補(bǔ)齊“*”得到一個(gè)全“*”的編碼。實(shí)施例六該實(shí)施例提供的一種在TCAM中對(duì)DFA狀態(tài)轉(zhuǎn)移邊進(jìn)行編碼的方法包括:圖9所示為對(duì)圖2的整個(gè)DFA進(jìn)行編碼后的TCAM。TCAM條目的源狀態(tài)域存儲(chǔ)在TCAM部分,由“模板ID域”和“私有ID域”兩個(gè)子域組成,分別用于存儲(chǔ)源狀態(tài)的模板ID編碼和私有ID編碼,源狀態(tài)域允許存儲(chǔ)比特“*”,能夠被搜索關(guān)鍵詞中的比特“0”或“1”匹配,因此在不改變TCAM的語(yǔ)義的前提下,源狀態(tài)域可以將其存儲(chǔ)的狀態(tài)編碼的部分比特位置“*”。TCAM條目的目的狀態(tài)域存儲(chǔ)在附屬的SRAM中,僅存儲(chǔ)比特“0”或“1”,由“模板ID域”和“私有ID域”兩個(gè)子域組成,“模板ID域”用于存儲(chǔ)目的狀態(tài)的模板ID編碼和源狀態(tài)的模板ID編碼的異或結(jié)果,“私有ID域”用于存儲(chǔ)目的狀態(tài)的私有ID編碼。這里的“異或”是指對(duì)于源狀態(tài)的私有ID編碼和目的狀態(tài)的私有ID編碼,如果對(duì)應(yīng)位置上的比特相同,則異或的結(jié)果為“0”,否則異或的結(jié)果為“1”,如“110”和“101”異或的結(jié)果為“011”,因?yàn)椤?10”和“101”的第一個(gè)比特相同,故異或的結(jié)果為“0”,后兩位比特都不相同,故異或的結(jié)果為“1”。如果源狀態(tài)的私有ID編碼中出現(xiàn)“*”,在參與異或的時(shí)候,將其當(dāng)做“0”處理即可。每一個(gè)DFA狀態(tài)轉(zhuǎn)移邊都可以表示為一個(gè)TCAM條目,DFA狀態(tài)轉(zhuǎn)移邊由三部分組成,即源狀態(tài),輸入字符和目的狀態(tài);源狀態(tài)在TCAM中編碼成該狀態(tài)的模板ID的編碼和私有ID的編碼的連接,輸入字符在TCAM中編碼成該字符的ASCII二進(jìn)制碼,計(jì)算源狀態(tài)的模板ID編碼(若該編碼中包含比特*,則將比特*替換成比特0)和目的狀態(tài)的模板ID編碼(若該編碼中包含比特*,則將比特*替換成比特0)的異或結(jié)果,目的狀態(tài)域存儲(chǔ)的是該異或結(jié)果和私有ID的編碼的連接。如圖9中的第一個(gè)條目“100001b→010000”表示圖2中的狀態(tài)01經(jīng)過字符b轉(zhuǎn)移到了一個(gè)目的狀態(tài)10,對(duì)源狀態(tài)的的模板ID編碼(“100”)與目的狀態(tài)的模板ID編碼(“110”)做異或,異或的結(jié)果(“010”)存儲(chǔ)在目的狀態(tài)域的模板ID域。如圖9中的第五個(gè)條目“100****→000000”表示圖2中的狀態(tài)00經(jīng)過除字符a和e以外的任意字符轉(zhuǎn)移到了自身(狀態(tài)00),目的狀態(tài)域的模板ID域存儲(chǔ)的是源狀態(tài)的模板ID編碼(“100”)與目的狀態(tài)的模板ID編碼(“100”)的異或結(jié)果,狀態(tài)00的私有ID編碼是“***”,但目的狀態(tài)域只能存儲(chǔ)比特“0”和“1”,故在目的狀態(tài)域?qū)⑺接蠭D編碼中的“*”全部替換成“0”,由于在分配私有ID編碼的過程中為所有的父結(jié)點(diǎn)預(yù)留了全“0”的“子編碼”,故將私有ID編碼中的“*”全部替換成“0”不會(huì)導(dǎo)致和其他狀態(tài)的私有ID編碼產(chǎn)生歧義;TCAM的搜索關(guān)鍵詞由源狀態(tài)域和輸入字符域拼接而成,其中源狀態(tài)域由模板ID域和私有ID域組成,TCAM的搜索關(guān)鍵詞僅包含比特“0”或“1”;如圖9中的第一個(gè)條目“100001b→010000”表示圖2中的狀態(tài)01經(jīng)過字符b轉(zhuǎn)移到了一個(gè)目的狀態(tài),若搜索關(guān)鍵詞匹配并輸出第一個(gè)條目,因?yàn)槟康臓顟B(tài)域的模板ID域存儲(chǔ)的是源狀態(tài)的模板ID編碼與目的狀態(tài)的模板ID編碼的異或結(jié)果,為獲得真實(shí)的目的狀態(tài)的模板ID編碼,只需將搜索關(guān)鍵詞中的模板ID域(“100”)與目的狀態(tài)的模板ID域(“010”)做異或,異或的結(jié)果(“110”)即為真實(shí)的目的狀態(tài)的模板ID編碼,因此可知目的狀態(tài)為圖2中的狀態(tài)10;每個(gè)DFA狀態(tài)只需存儲(chǔ)它關(guān)于其模板狀態(tài)的非共享邊,若一個(gè)狀態(tài)沒有模板狀態(tài),則它需要存儲(chǔ)其全部的狀態(tài)轉(zhuǎn)移邊;圖2中的狀態(tài)01以狀態(tài)00為模板,故狀態(tài)01只需存儲(chǔ)其關(guān)于狀態(tài)00的非共享邊,圖9的第一個(gè)條目即用于存儲(chǔ)狀態(tài)01的非共享邊;狀態(tài)00沒有模板狀態(tài),故它需存儲(chǔ)所有的256條邊,由于空間所限,無(wú)法在圖9中列出狀態(tài)00的所有的256個(gè)TCAM條目,故利用TCAM可以存儲(chǔ)“*”的能力,在圖9中僅用三個(gè)條目存儲(chǔ)狀態(tài)00的所有的256條邊,即圖9所示的第3~5個(gè)TCAM條目,對(duì)狀態(tài)00的條目的壓縮方法將在后面的實(shí)施例中予以說明。存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的順序如下:若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的狀態(tài)轉(zhuǎn)移邊都必須存儲(chǔ)在狀態(tài)j的狀態(tài)轉(zhuǎn)移邊之前,反之若狀態(tài)j以狀態(tài)i為模板,則狀態(tài)j的狀態(tài)轉(zhuǎn)移邊都必須存儲(chǔ)在狀態(tài)i的狀態(tài)轉(zhuǎn)移邊之前;若狀態(tài)i和狀態(tài)j之間不存在模板關(guān)系,則狀態(tài)i的狀態(tài)轉(zhuǎn)移邊和狀態(tài)j的狀態(tài)轉(zhuǎn)移邊之間的順序是任意的;如圖9所示,圖2中的狀態(tài)01以狀態(tài)00為模板,故狀態(tài)01的TCAM條目必須放置于狀態(tài)00的條目之前,其余具有模板狀態(tài)的狀態(tài)也遵循同樣的順序放置它們的條目;不存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的順序是任意的。在對(duì)狀態(tài)的私有ID進(jìn)行編碼時(shí),根據(jù)DFA狀態(tài)間的模板關(guān)系將所有的DFA狀態(tài)組織成多個(gè)樹,每個(gè)樹均以一個(gè)自循環(huán)狀態(tài)作為根,每個(gè)狀態(tài)均以它的模板狀態(tài)為父結(jié)點(diǎn)。通過把私有ID相同的狀態(tài)合并到一個(gè)集合,可以將這些樹表示為一棵樹,如圖7所示。因此,只需自頂向下層序遍歷這顆樹,對(duì)于依次遍歷到的狀態(tài)集合,將集合中的狀態(tài)關(guān)于各自的模板狀態(tài)的非共享邊編碼后自上往下地放置于TCAM中即可。如圖9中,首先處理圖7中的葉子結(jié)點(diǎn),依次將私有ID為1~6的狀態(tài)的非共享邊編碼到TCAM中,即第1~8個(gè)條目,最后處理私有ID為0的所有狀態(tài)(即自循環(huán)狀態(tài)),如圖9中的第9~20個(gè)條目所示。實(shí)施例七該實(shí)施例提供的一種對(duì)TCAM條目進(jìn)行壓縮的方法包括:狀態(tài)內(nèi)的TCAM條目壓縮:根據(jù)不同的TCAM條目共享相同的目的狀態(tài)域、源狀態(tài)域,對(duì)輸入字符域進(jìn)行合并,從而減少單個(gè)狀態(tài)所占用的TCAM條目。如圖9所示,原本狀態(tài)00需要存儲(chǔ)為所有的256個(gè)字符存儲(chǔ)所有的256個(gè)條目,但采用狀態(tài)內(nèi)壓縮以后,僅需第3~5個(gè)條目即可存儲(chǔ)狀態(tài)00的所有條目,即在狀態(tài)00的壓縮前的256個(gè)條目中,找到出現(xiàn)次數(shù)最多的目的狀態(tài)域的值,即“000000”,生成一個(gè)新的條目作為“默認(rèn)條目”,默認(rèn)條目的輸入字符域?yàn)槿?”,默認(rèn)條目的目的狀態(tài)域?yàn)檫@個(gè)出現(xiàn)次數(shù)最多的值(狀態(tài)00的默認(rèn)條目即為“100****→000000”),默認(rèn)條目存儲(chǔ)為最后一個(gè)條目;在原256個(gè)條目中,刪去所有目的狀態(tài)域?yàn)槟J(rèn)條目的目的狀態(tài)域的值的條目;若剩下的條目中存在如下兩個(gè)條目i和j:i和j的目的狀態(tài)域相同且輸入字符域只相差一個(gè)比特,則在條目i的輸入字符域,將與條目j相差的比特位的值置為“*”,刪除條目j,如此反復(fù)直到不存在這樣的兩個(gè)條目為止。經(jīng)過上述步驟,狀態(tài)00最終只需要三個(gè)條目。狀態(tài)間的TCAM條目壓縮:根據(jù)不同的TCAM條目共享相同的目的狀態(tài)域、輸入字符域、源狀態(tài)域的私有ID域,對(duì)源狀態(tài)域的模板ID域進(jìn)行合并,從而減少不同狀態(tài)所占用的TCAM條目;狀態(tài)間壓縮過程如下:若存在共享相同的目的狀態(tài)域、輸入字符域、源狀態(tài)域的私有ID域的兩個(gè)條目i和j:i和j的源狀態(tài)域的模板ID域只相差一個(gè)比特,則在條目i的模板ID域中,將與條目j相差的比特位的值置為“*”,刪除條目j,如此反復(fù)直到不存在這樣的兩個(gè)條目為止。圖9的TCAM經(jīng)過狀態(tài)間壓縮和狀態(tài)內(nèi)壓縮后最終的結(jié)果如圖10所示。對(duì)于一個(gè)狀態(tài)數(shù)為16的DFA,本發(fā)明只需要9個(gè)TCAM條目即可存儲(chǔ),條目數(shù)少于DFA狀態(tài)數(shù),等于NFA狀態(tài)數(shù)。本實(shí)施例說明,本發(fā)明突破了DFA狀態(tài)空間的指數(shù)膨脹,所需的TCAM條目數(shù)能夠少于DFA的狀態(tài)數(shù)。本發(fā)明的積極效果不限于本實(shí)施例。實(shí)施例八該實(shí)施例提供了一種基于TCAM的NFA的匹配裝置,其具體結(jié)構(gòu)如圖11所示,包括如下的模塊:TCAM條目構(gòu)造模塊111,用于將確定性有窮狀態(tài)自動(dòng)機(jī)DFA的每個(gè)狀態(tài)用若干三態(tài)內(nèi)容尋址存儲(chǔ)器TCAM條目表示,每個(gè)TCAM條目由源狀態(tài)域、輸入字符域和目的狀態(tài)域三個(gè)域組成,所述源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,分別用于存儲(chǔ)源狀態(tài)的模板ID編碼和私有ID編碼,所述目的狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,所述模板ID域用于存儲(chǔ)目的狀態(tài)的模板ID編碼和源狀態(tài)的模板ID編碼的異或結(jié)果,所述私有ID域用于存儲(chǔ)目的狀態(tài)的私有ID編碼;搜索匹配模塊112,用于以具體的所述源狀態(tài)域和輸入字符域的拼接作為搜索關(guān)鍵詞,按照所述搜索關(guān)鍵字在所述DFA的所有TCAM條目中進(jìn)行搜索,獲取搜索得到的目的狀態(tài)域,將所述目的狀態(tài)域中的模板ID域的值與所述搜索關(guān)鍵詞中的模板ID域的值進(jìn)行異或,將所述異或結(jié)果作為所述目的狀態(tài)域中的最終的模板ID域的值。具體的,TCAM條目構(gòu)造模塊111,還用于當(dāng)若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該輸入字符轉(zhuǎn)移到某個(gè)相同的目的狀態(tài),則這兩條出邊是狀態(tài)i和狀態(tài)j之間的“共享邊”;若對(duì)于某個(gè)輸入字符,狀態(tài)i和狀態(tài)j各有一條出邊經(jīng)過該輸入字符轉(zhuǎn)移到不同的目的狀態(tài),則狀態(tài)i的這條出邊是關(guān)于狀態(tài)j的“非共享邊”,且狀態(tài)j的這條出邊是關(guān)于狀態(tài)i的“非共享邊”;每個(gè)DFA狀態(tài)均用一對(duì)狀態(tài)ID進(jìn)行編號(hào),所述狀態(tài)ID對(duì)為模板ID和私有ID,全部的DFA狀態(tài)被劃分成多個(gè)狀態(tài)集合,每個(gè)狀態(tài)集合包含的是全部擁有相同私有ID的狀態(tài),且該狀態(tài)集合以這個(gè)私有ID命名;如果兩個(gè)狀態(tài)分屬于兩個(gè)狀態(tài)集合,且所述兩個(gè)狀態(tài)集合共享相同的模板ID,則所述兩個(gè)狀態(tài)集合互為彼此的親屬狀態(tài);對(duì)于私有ID為K的狀態(tài)集合,若私有ID為J的狀態(tài)集合同時(shí)滿足下述條件,則狀態(tài)集合K的所有狀態(tài)都各自選擇它們?cè)跔顟B(tài)集合J中的親屬狀態(tài)作為模板狀態(tài):J<K;對(duì)于集合K中的每一個(gè)狀態(tài),其在集合J中都存在一個(gè)親屬狀態(tài);在所有滿足上述兩個(gè)條件的候選狀態(tài)集合中,集合J中集合K的相似度最大;每個(gè)DFA狀態(tài)最多只有一個(gè)模板狀態(tài),對(duì)于自循環(huán)狀態(tài)不為之分配模板;若一個(gè)DFA狀態(tài)有模板狀態(tài)時(shí),則該DFA狀態(tài)的狀態(tài)轉(zhuǎn)移邊只需存儲(chǔ)該DFA狀態(tài)關(guān)于其模板狀態(tài)的非共享邊;若一個(gè)DFA狀態(tài)沒有模板狀態(tài),則該DFA狀態(tài)需要存儲(chǔ)其全部的狀態(tài)轉(zhuǎn)移邊;存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的存儲(chǔ)順序如下:若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的狀態(tài)轉(zhuǎn)移邊都必須存儲(chǔ)在狀態(tài)j的狀態(tài)轉(zhuǎn)移邊之前;不存在模板關(guān)系的兩個(gè)DFA狀態(tài)生成的TCAM條目之間的存儲(chǔ)順序是任意的。具體的,TCAM條目構(gòu)造模塊111,還用于將轉(zhuǎn)移到自身的出邊的數(shù)目超過了一定的閾值的狀態(tài)定義為自循環(huán)狀態(tài),每個(gè)DFA狀態(tài)有且僅有唯一的(模板ID,私有ID)對(duì);為每個(gè)自循環(huán)狀態(tài)分配一個(gè)唯一的模板ID,為所有的自循環(huán)狀態(tài)分配一個(gè)相同的私有ID;對(duì)于每個(gè)非自循環(huán)狀態(tài),其模板ID的取值為與其相似度最大的自循環(huán)狀態(tài)的模板ID;其私有ID的取值按如下寬度遍歷過程迭代進(jìn)行:維護(hù)一個(gè)狀態(tài)集合的隊(duì)列,嘗試為所有在同一個(gè)狀態(tài)集合中的狀態(tài)分配相同的私有ID,初始將由所有自循環(huán)狀態(tài)組成的狀態(tài)集合入隊(duì),并將該狀態(tài)集合標(biāo)記為已訪問,每次取出隊(duì)首的狀態(tài)集合S直至隊(duì)列為空:依次迭代檢查S經(jīng)每一個(gè)字符所達(dá)到的目的狀態(tài)集合D:從D中刪去所有自循環(huán)狀態(tài);若D中存在多個(gè)狀態(tài)共享相同的模板ID,則只留下其中一個(gè)狀態(tài),其余的狀態(tài)從D中刪去;若存在一個(gè)已訪問過的狀態(tài)集合S’,使得則跳出本次迭代;若存在一個(gè)已訪問過的狀態(tài)集合S’,S’中所有的狀態(tài)已被分配相同的“私有ID”,使得則將S’中狀態(tài)所分配的私有ID分配給D中所有狀態(tài);否則,D中所有狀態(tài)分配一個(gè)尚未被分配過的私有ID;將D中所有狀態(tài)從所有已訪問的狀態(tài)集合中刪除;標(biāo)記集合D為已訪問;D入隊(duì)。具體的,TCAM條目構(gòu)造模塊111,還用于對(duì)于存在模板關(guān)系的兩個(gè)DFA狀態(tài)i和j,若狀態(tài)i以狀態(tài)j為模板,則狀態(tài)i的私有ID編碼匹配狀態(tài)j的私有ID編碼;DFA狀態(tài)間的模板關(guān)系將所有的DFA狀態(tài)組織成多個(gè)樹,每個(gè)樹均以一個(gè)自循環(huán)狀態(tài)作為根,每個(gè)DFA狀態(tài)均以它的模板狀態(tài)為父結(jié)點(diǎn);在所述樹中為每一個(gè)狀態(tài)分配一個(gè)“子編碼”,如果一個(gè)狀態(tài)有N個(gè)子結(jié)點(diǎn),則這N個(gè)子結(jié)點(diǎn)所需的子編碼比特?cái)?shù)為每個(gè)子結(jié)點(diǎn)分配一個(gè)長(zhǎng)度為n的互不相同的子編碼;全“0”的編碼保留不分配,葉子結(jié)點(diǎn)的子編碼為空;私有ID相同的狀態(tài)分配的子編碼必須相同;每個(gè)狀態(tài)的私有ID的編碼即為該狀態(tài)所有祖先結(jié)點(diǎn)的子編碼與自身子編碼的拼接,即從樹根開始到每個(gè)狀態(tài),該狀態(tài)的初始私有ID編碼為空,沿途依次在后面拼接上所訪問的父結(jié)點(diǎn)的子編碼,最后拼接上該狀態(tài)的子編碼,作為該狀態(tài)的私有ID編碼;將所有狀態(tài)的私有ID編碼的長(zhǎng)度設(shè)置為一致。進(jìn)一步地,所述的裝置還可以包括:TCAM條目刪除模塊113,用于若存在共享相同的目的狀態(tài)域、源狀態(tài)域的兩個(gè)TCAM條目i和j且i和j的輸入字符域只相差一個(gè)比特,則在TCAM條目i的輸入字符域中,將與TCAM條目j相差的比特位的值置為“*”,刪除TCAM條目j;若存在共享相同的目的狀態(tài)域、輸入字符域、源狀態(tài)域的私有ID域的兩個(gè)TCAM條目i和j且i和j的源狀態(tài)域的模板ID域只相差一個(gè)比特,則在TCAM條目i的模板ID域中,將與TCAM條目j相差的比特位的值置為“*”,刪除TCAM條目j。應(yīng)用本發(fā)明實(shí)施例的裝置進(jìn)行DFA匹配的具體處理過程與前述方法實(shí)施例類似,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-OnlyMemory,ROM)或隨機(jī)存儲(chǔ)記憶體(RandomAccessMemory,RAM)等。綜上所述,本發(fā)明實(shí)施例通過基于TCAM實(shí)現(xiàn)DFA,TCAM條目的源狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,目的狀態(tài)域由模板ID域和私有ID域兩個(gè)子域組成,可以在不犧牲匹配速度的前提下突破DFA狀態(tài)數(shù)指數(shù)膨脹的問題,所需的TCAM條目數(shù)能夠少于DFA的狀態(tài)數(shù),從而大大減少了DFA所需的存儲(chǔ)空間?;贒FA的正則表達(dá)式匹配技術(shù)是當(dāng)代網(wǎng)絡(luò)系統(tǒng)的一項(xiàng)基礎(chǔ)核心技術(shù),各種網(wǎng)絡(luò)應(yīng)用,如深度包檢測(cè)、簽名匹配、蠕蟲檢測(cè)、入侵檢測(cè)和防護(hù)、流量分析等等,一旦解決了DFA的匹配速度和存儲(chǔ)空間的兩難境地,將對(duì)這些網(wǎng)絡(luò)應(yīng)用產(chǎn)生直接的經(jīng)濟(jì)效益。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1