国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種入侵檢測(cè)中模式匹配的方法和裝置的制作方法

      文檔序號(hào):7643121閱讀:217來(lái)源:國(guó)知局
      專利名稱:一種入侵檢測(cè)中模式匹配的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及入侵檢測(cè)技術(shù),特別是涉及一種入侵檢測(cè)中模式匹配的方法和裝置。
      背景技術(shù)
      為了更好地保證網(wǎng)絡(luò)安全,阻止破壞資源完整性、可用性和保密性等的入侵行為,目前提出一種可以識(shí)別未經(jīng)授權(quán)或越權(quán)訪問(wèn)系統(tǒng)資源的行為的軟、硬件系統(tǒng),即入侵檢測(cè)系統(tǒng)(IDS,Intrusion Detection System)。由于入侵檢測(cè)系統(tǒng)能夠?qū)崟r(shí)地監(jiān)控系統(tǒng)的活動(dòng),及時(shí)發(fā)現(xiàn)攻擊行為并采取相應(yīng)的抵御措施來(lái)避免進(jìn)一步的攻擊,減少攻擊造成的危害,已成為目前網(wǎng)絡(luò)安全研究的熱點(diǎn)。
      實(shí)現(xiàn)網(wǎng)絡(luò)入侵檢測(cè)常用的方法可以分為兩類一類是異常檢測(cè),另外一類是特征檢測(cè)。其中,異常檢測(cè)是根據(jù)對(duì)被檢測(cè)系統(tǒng)的某種定量或定性的描述,得出一系列目標(biāo)系統(tǒng)的正常統(tǒng)計(jì)數(shù)據(jù)和行為參量,一旦檢測(cè)出這些參量發(fā)生了一定程度的偏離,則認(rèn)為有異常發(fā)生。特征檢測(cè)則是通過(guò)將當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包與已知攻擊及系統(tǒng)漏洞的特征庫(kù)進(jìn)行模式匹配來(lái)發(fā)現(xiàn)入侵。由于異常檢測(cè)需要長(zhǎng)時(shí)間的學(xué)習(xí)才能提高檢測(cè)的準(zhǔn)確性,否則,其檢測(cè)誤報(bào)率比較高,很難適應(yīng)大流量網(wǎng)絡(luò)的實(shí)時(shí)檢測(cè)要求,因此大多數(shù)網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)都采用基于模式匹配的檢測(cè)方法。
      模式匹配雖然具有易于實(shí)現(xiàn),檢測(cè)精度高等優(yōu)點(diǎn),但是網(wǎng)絡(luò)速度的迅速提高以及模式庫(kù)的日益增大,對(duì)基于模式匹配的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)的實(shí)時(shí)檢測(cè)性能提出了挑戰(zhàn)。當(dāng)待檢測(cè)的網(wǎng)絡(luò)數(shù)據(jù)流的產(chǎn)生速度超過(guò)了系統(tǒng)檢測(cè)引擎的處理能力時(shí),必然導(dǎo)致數(shù)據(jù)包來(lái)不及檢測(cè)就被丟棄的情況出現(xiàn)。如果這些被丟棄的數(shù)據(jù)包含有具有攻擊特征的惡意數(shù)據(jù),入侵檢測(cè)系統(tǒng)就會(huì)遺漏該攻擊事件。攻擊者往往會(huì)利用入侵檢測(cè)系統(tǒng)的這一弱點(diǎn),通過(guò)發(fā)送大量的數(shù)據(jù)包使系統(tǒng)過(guò)載而造成拒絕服務(wù)攻擊(DoS,Denial of Service)或逃避入侵檢測(cè)。因此,為了適應(yīng)大流量網(wǎng)絡(luò)的發(fā)展,必須提高基于模式匹配的入侵檢測(cè)系統(tǒng)的性能。
      在入侵檢測(cè)系統(tǒng)性能評(píng)價(jià)中,模式匹配是一個(gè)重要的指標(biāo),也是入侵檢測(cè)系統(tǒng)主要的性能瓶頸。常用的模式匹配有BM、AC、AC-BM等。這些模式匹配方法雖然在理論上有較優(yōu)的時(shí)間復(fù)雜度,但隨著網(wǎng)絡(luò)帶寬的增加,在現(xiàn)有條件下單純依賴軟件方法來(lái)實(shí)現(xiàn)模式匹配,系統(tǒng)的性能往往難以達(dá)到實(shí)時(shí)檢測(cè)的要求,必須考慮從硬件方面來(lái)尋求模式匹配問(wèn)題的解決途徑。
      目前,提出一種利用三態(tài)內(nèi)容可尋址存儲(chǔ)器(TCAM,Ternary ContentAddressable Memory)進(jìn)行的模式匹配方法,其大致思想是將預(yù)先設(shè)置的各個(gè)模式輸入一個(gè)TCAM中,直接利用TCAM對(duì)接收到的數(shù)據(jù)包中的字符串進(jìn)行匹配。這里所述的模式就是為判定入侵行為的規(guī)則對(duì)應(yīng)的字符串。如果TCAM中的模式與數(shù)據(jù)包中字符串匹配成功,則上報(bào)給系統(tǒng)。之后,系統(tǒng)就可以根據(jù)匹配結(jié)果進(jìn)行相應(yīng)的處理,比如丟棄、轉(zhuǎn)發(fā)等。
      在上述基于TCAM的模式匹配方法中,入侵系統(tǒng)整體性能基本取決于TCAM的查找速度。但由于TCAM本身在目前的工藝水平下,很難提高查詢速度,已成為進(jìn)一步提高入侵系統(tǒng)性能的瓶頸。在這種情況下,如果用于模式匹配的字符串比較多,就難以保證入侵檢測(cè)系統(tǒng)性能的要求。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明實(shí)施例提供一種入侵檢測(cè)中模式匹配的方法和裝置,可以在模式匹配的字符串比較多的情況下,保持入侵檢測(cè)系統(tǒng)的性能。
      為了達(dá)到上述第一個(gè)目的,本發(fā)明提出的技術(shù)方案為一種入侵檢測(cè)中模式匹配的方法,設(shè)置兩個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,其中一個(gè)為頭部TCAM,另外一個(gè)為尾部TCAM,該方法為
      將已有的用于模式匹配的各個(gè)模式字符串輸入頭部TCAM,并將所述輸入頭部TCAM的字符串首尾倒置后輸入尾部TCAM;所述頭部TCAM和尾部TCAM再分別同時(shí)從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)。
      為了達(dá)到上述第二個(gè)目的,本發(fā)明提出的技術(shù)方案為一種入侵檢測(cè)中模式匹配的裝置,該裝置包括頭部三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,用于在匹配控制單元的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)中頭部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;尾部TCAM,用于在匹配控制單元的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)中尾部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;匹配控制單元,用于將模式字符串輸入給頭部TCAM,將模式字符串首尾倒置后輸入給尾部TCAM,將待檢測(cè)數(shù)據(jù)輸入給緩沖區(qū),還用于控制頭部TCAM和尾部TCAM分別同時(shí)從緩沖區(qū)中待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng);緩沖區(qū),用于保存待檢測(cè)數(shù)據(jù)。
      綜上所述,本發(fā)明實(shí)施例提出的一種入侵檢測(cè)中模式匹配的方法和裝置,由于設(shè)置了兩個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,即頭部TCAM和尾部TCAM,所述頭部TCAM和尾部TCAM分別同時(shí)從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,可以提高整體的匹配速度,從而提高入侵檢測(cè)系統(tǒng)的性能。


      圖1是本發(fā)明方法實(shí)施例一的流程圖;圖2是本發(fā)明方法實(shí)施例二中訪問(wèn)特征表的尋址方式示意圖;圖3是本發(fā)明方法實(shí)施例二中TCAM_H、TCAM_T、計(jì)數(shù)器以及緩沖區(qū)的初始狀態(tài)示意圖;圖4是本發(fā)明方法實(shí)施例二的流程圖;
      圖5是一種實(shí)現(xiàn)條件關(guān)聯(lián)模式匹配時(shí)的示意圖;圖6是本發(fā)明實(shí)現(xiàn)模式匹配的裝置實(shí)施例的示意圖。
      具體實(shí)施例方式
      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
      為了提高模式匹配的速度,本發(fā)明用兩個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器(TCAM)同時(shí)從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間進(jìn)行模式匹配,這里所述的兩個(gè)TCAM,其中一個(gè)為頭部TCAM,另外一個(gè)為尾部TCAM。
      圖1是應(yīng)用本發(fā)明方案的實(shí)施例一的流程圖。如圖1所示,本實(shí)施例實(shí)現(xiàn)入侵檢測(cè)中模式匹配的方法可以為步驟101將已有的用于模式匹配的各個(gè)模式字符串輸入頭部TCAM,并將所述輸入頭部TCAM的字符串首尾倒置后輸入尾部TCAM。
      這里所述已有的用于模式匹配的各個(gè)模式字符串就是入侵檢測(cè)系統(tǒng)規(guī)則庫(kù)中的模式字符串,可以事先設(shè)置并存儲(chǔ)在規(guī)則庫(kù)中。至于如何設(shè)置所述的模式字符串則與實(shí)際的入侵檢測(cè)系統(tǒng)相關(guān),此處不再贅述。
      另外,為了后續(xù)能夠從待檢測(cè)數(shù)據(jù)的尾部向中間進(jìn)行模式匹配,需要字符串首尾倒置后再輸入尾部TCAM。
      步驟102所述頭部TCAM和尾部TCAM再分別同時(shí)從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)。
      這里所述待檢測(cè)數(shù)據(jù)就是入侵檢測(cè)系統(tǒng)所捕獲到的數(shù)據(jù)包中的字符串,捕獲之后,入侵檢測(cè)系統(tǒng)就可以將所述數(shù)據(jù)包中的字符串輸入緩沖區(qū)中,再利用頭部TCAM和尾部TCAM同時(shí)從緩沖區(qū)的兩端向中間進(jìn)行匹配。
      在匹配的過(guò)程中,根據(jù)TCAM中模式字符串之間的關(guān)系,可以將匹配的方式分為兩類一類是模式字符串之間無(wú)關(guān)聯(lián)關(guān)系的匹配方法,另外一類是模式字符串之間有關(guān)聯(lián)關(guān)系的匹配方法。這里所述關(guān)聯(lián)關(guān)系指各個(gè)模式字符串彼此是否獨(dú)立,如果每一個(gè)模式字符串匹配成功并不受其它模式字符串匹配結(jié)果的影響,那么,這些模式字符串就是獨(dú)立的,或者說(shuō)是無(wú)關(guān)聯(lián)關(guān)系的。比如有兩個(gè)模式字符串,分別為“CHINA”和“CANADA”。如果從緩沖區(qū)待檢測(cè)數(shù)據(jù)中成功匹配到“CHINA”,并且可以立即將其對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),那么模式字符串“CANADA”對(duì)模式字符串“CHINA”并不造成影響。這種情況下,“CHINA”和“CANADA”就是無(wú)關(guān)聯(lián)關(guān)系的模式字符串。又比如從緩沖區(qū)待檢測(cè)數(shù)據(jù)中成功匹配到“CHINA”和“CANADA”,并規(guī)則只有在“CHINA”和“CANADA”這兩個(gè)模式字符串保持預(yù)先規(guī)定的順序時(shí),才可以將這兩個(gè)有順序的模式字符串對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。這種情況下,“CHINA”和“CANADA”就是有關(guān)聯(lián)關(guān)系的模式字符串。當(dāng)然,實(shí)際應(yīng)用中,模式字符串之間還可以存在其它的關(guān)聯(lián)關(guān)系,此處不再詳細(xì)描述。
      另外,如果模式字符串的長(zhǎng)度大于TCAM字寬,即長(zhǎng)模式字符串,還需要將長(zhǎng)模式字符串按照TCAM的字寬分割為子模式字符串,輸入TCAM的模式字符串就為分割后的子模式字符串,以便于可以按照TCAM字寬依次對(duì)緩沖區(qū)中的字符串進(jìn)行匹配。由于長(zhǎng)模式字符串自身并不能在一次匹配中真正參與匹配,所以需要記錄各子模式字符串匹配情況,并從各子模式字符串的匹配情況最終獲取長(zhǎng)模式字符串的匹配結(jié)果。實(shí)際應(yīng)用中,可以用匹配表、部分命中列表等來(lái)記錄各子模式字符串匹配情況,所述匹配表和部分命中列表一般保存在內(nèi)存中。
      由于訪問(wèn)內(nèi)存比查找TCAM耗時(shí)要多得多,如果要提高模式匹配的整體性能,就需要控制訪問(wèn)內(nèi)存的次數(shù)和占用內(nèi)存的空間。
      為了有效地減少訪問(wèn)內(nèi)存的次數(shù)和占用內(nèi)存的空間,可以為頭部TCAM和尾部TCAM構(gòu)造統(tǒng)一的匹配表,其構(gòu)造方法可以為X1、先將每一個(gè)長(zhǎng)模式字符串根據(jù)TCAM字寬進(jìn)行劃分,獲得前綴子串、中綴子串和后綴子串的組合,所述前綴子串、中綴子串和后綴子串組合為一個(gè)完整的長(zhǎng)模式字符串;X2、再將所有劃分出的前綴子串、中綴子串和后綴子串按照組合的對(duì)應(yīng)關(guān)系填入匹配表,并為每一個(gè)前綴子串、中綴子串和后綴子串分配索引號(hào);X3、對(duì)于每一個(gè)組合,如果由前綴子串和中綴子串構(gòu)成的新的前綴子串與匹配表中其它組合已有的前綴子串相同,則將所述其它組合已有的前綴子串的索引號(hào)作為所述構(gòu)成新的前綴子串的組合信息記錄下來(lái);如果由后綴子串和中綴子串構(gòu)成的新的后綴子串與匹配表中其它組合已有的后綴子串相同,則將所述其它組合已有的后綴子串的索引號(hào)作為所述構(gòu)成新的后綴子串的組合信息記錄下來(lái);如果由前綴子串和后綴子串構(gòu)成一個(gè)完整的長(zhǎng)模式字符串,則直接將該完整的長(zhǎng)模式字符串對(duì)應(yīng)的規(guī)則號(hào)作為組合信息記錄下來(lái)。
      匹配表中各組合的前綴子串、中綴子串和后綴子串是對(duì)稱的,頭部TCAM所匹配到的前綴子串就是尾部TCAM所匹配到的后綴子串,頭部TCAM所匹配到的中綴子串可以與尾部TCAM所匹配到的中綴子串相同,頭部TCAM所匹配到的后綴子串則是尾部TCAM所匹配到的前綴子串。這樣,頭部TCAM和尾部TCAM就可以使用同一個(gè)匹配表,可以有效地節(jié)約內(nèi)存空間。
      同樣,頭部TCAM和尾部TCAM也可以使用同一個(gè)用于記錄TCAM中字符串對(duì)應(yīng)的類型值的特征表,此處不再贅述。
      基于上述分析,下面分別對(duì)無(wú)關(guān)聯(lián)關(guān)系、有順序關(guān)聯(lián)關(guān)系、有條件關(guān)聯(lián)關(guān)系的匹配方法進(jìn)行描述1、對(duì)于模式字符串之間無(wú)關(guān)聯(lián)關(guān)系的情況,頭部TCAM進(jìn)行模式匹配的方法與尾部TCAM進(jìn)行模式匹配的方法相同,都是各自從待檢測(cè)數(shù)據(jù)的兩端向中間進(jìn)行匹配,并且在匹配到自身保存的每一個(gè)完整的短模式字符串或完整的長(zhǎng)模式字符串時(shí)向系統(tǒng)上報(bào)。其匹配的具體方法可以為步驟A1根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);步驟A2TCAM根據(jù)輸入給自身的各個(gè)字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟A4;否則,執(zhí)行步驟A3;步驟A3判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù)的一半,如果已經(jīng)匹配完,則退出本流程,如果沒(méi)有匹配完,則TCAM向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟A2;步驟A4、判斷TCAM匹配成功時(shí)所對(duì)應(yīng)的字符串是否為長(zhǎng)度不大于TCAM字寬的短模式字符串,如果是,則直接上報(bào)系統(tǒng),再執(zhí)行步驟A3;否則,通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和自身的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則上報(bào)系統(tǒng),再執(zhí)行步驟A3;否則,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟A3。
      實(shí)際應(yīng)用中,如果匹配成功時(shí)所對(duì)應(yīng)的字符串既為短模式字符串又為長(zhǎng)模式字符串的一部分,那么,可以先將匹配到短模式字符串的情況上報(bào)給系統(tǒng),同時(shí)查找匹配表和自身的部分命中列表來(lái)確定匹配結(jié)果,如果匹配到完整的長(zhǎng)模式字符串,就再次上報(bào)系統(tǒng),然后執(zhí)行步驟A3;否則,根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟A3。
      當(dāng)然,如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,而是長(zhǎng)模式字符串的一部分,也可能在通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和自身的部分命中列表后,既匹配到完整的長(zhǎng)模式字符串又同時(shí)是某個(gè)更長(zhǎng)的長(zhǎng)模式字符串的一部分,那么不但要將匹配到的長(zhǎng)模式字符串上報(bào)給系統(tǒng),還需要根據(jù)當(dāng)前匹配情況更新自身部分命中列表。
      2、對(duì)于模式字符串之間有順序關(guān)聯(lián)關(guān)系的情況,用于模式匹配的n個(gè)模式字符串之間存在順序關(guān)聯(lián)關(guān)系,所述n為大于或等于2的整數(shù),即P1P2P3…Pn這些模式字符串之間存在順序。那么,每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法為B1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);B2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟B4;否則,執(zhí)行步驟B3;B3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù),如果已經(jīng)匹配完,則在匹配到所述保持順序關(guān)聯(lián)關(guān)系的n個(gè)模式字符串時(shí),將所述保持順序關(guān)聯(lián)關(guān)系的n個(gè)模式字符串對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟B2;B4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則將所述短模式字符串記錄下來(lái),并判斷記錄下來(lái)的所有字符串是否保持順序關(guān)聯(lián)關(guān)系,如果是,則執(zhí)行步驟B3;否則,退出本流程;B5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則TCAM通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和自身的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟B6;如果匹配到長(zhǎng)模式字符串的一部分,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟B3;B6、將所述長(zhǎng)模式字符串記錄下來(lái),并判斷記錄下來(lái)的所有字符串是否保持所述順序關(guān)聯(lián)關(guān)系,如果是,則執(zhí)行步驟B3;否則,退出本流程;3、對(duì)于模式字符串之間存在條件關(guān)聯(lián)關(guān)系的情況,又可以根據(jù)條件的不同分為兩種基本類型一類是在匹配成功時(shí)滿足P1·Px·P2的條件,其中,P1和P2為兩個(gè)輸入給TCAM的模式字符串,Px為P1和P2之間長(zhǎng)度為X的任意的字符串;另外一類則是在匹配成功時(shí)滿足P1·Px·P2的條件,其中,P1、P2和Px的含義與P1·Px·P2條件中的含義相同,其區(qū)別僅僅在于匹配成功時(shí),后一個(gè)字符串應(yīng)該不是P2,即P2。
      對(duì)于第一類條件關(guān)聯(lián)關(guān)系的情況,即滿足P1·Px·P2的條件,每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法可以為C1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);C2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟C4;否則,執(zhí)行步驟C3;C3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù)的一半,如果已經(jīng)匹配完,則退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟C2;C4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則記錄下當(dāng)前匹配成功時(shí)的位置,并在另一TCAM也匹配成功時(shí),判斷兩個(gè)TCAM之間當(dāng)前匹配的距離是否滿足所述條件關(guān)聯(lián)關(guān)系,如果滿足,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;C5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則TCAM通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和TCAM的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟C6;如果匹配到長(zhǎng)模式的一部分字符串,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟C3;C6、記錄下當(dāng)前匹配成功時(shí)的位置,并在另一TCAM也匹配成功時(shí),判斷兩個(gè)TCAM之間當(dāng)前匹配的距離是否滿足所述條件關(guān)聯(lián)關(guān)系,如果滿足,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程。
      對(duì)于第二類條件關(guān)聯(lián)關(guān)系的情況,即滿足P1PxP2的條件,每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法可以為D1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);D2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟D4;否則,執(zhí)行步驟D3;D3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù)的一半,如果已經(jīng)匹配完,則退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟D2;D4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則記錄下當(dāng)前匹配成功時(shí)的位置,并在兩個(gè)TCAM之間匹配的距離滿足所述條件關(guān)聯(lián)關(guān)系時(shí),判斷另一TCAM是否匹配成功,如果沒(méi)有匹配成功,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;D5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則TCAM通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和TCAM的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟D6;如果匹配到長(zhǎng)模式的一部分字符串,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟D3;D6、記錄下當(dāng)前匹配成功時(shí)的位置,并在兩個(gè)TCAM之間匹配的距離滿足所述條件關(guān)聯(lián)關(guān)系時(shí),判斷另一TCAM是否匹配成功,如果沒(méi)有匹配成功,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程。
      為了更好地說(shuō)明本發(fā)明方案,下面用較佳實(shí)施例進(jìn)行詳細(xì)描述。
      在實(shí)施例二中,輸入給TCAM的模式字符串為無(wú)關(guān)聯(lián)關(guān)系的模式字符串,分別為P1=“CANADA”、P2=“CANADA->CHINA”、P3=“CHINA”、P4=“CHI”;TCAM的字寬為4,那么,P4為短模式字符串,P1~P3為長(zhǎng)模式字符串;入侵檢測(cè)系統(tǒng)捕獲到的數(shù)據(jù)包中輸入給緩沖區(qū)的字符串,即待檢測(cè)數(shù)據(jù)為“CANADA->CHINA”。
      本實(shí)施例中有兩個(gè)TCAM,一個(gè)為頭部TCAM,記為T(mén)CAM_H;另外一個(gè)為尾部TCAM,記為T(mén)CAM_T。在將模式字符串輸入TCAM中時(shí),如果為短模式字符串,則直接輸入,并且在長(zhǎng)度不足TCAM字寬時(shí)用通配符“?”補(bǔ)足,表示可以忽略“?”處的字符,即“?”處的字符可以為任意的字符。如果是長(zhǎng)模式字符串,為了便于TCAM進(jìn)行匹配,需要將各個(gè)長(zhǎng)模式字符串分割為子模式字符串。分割時(shí),可以按照TCAM的字寬進(jìn)行分割,如果最后一個(gè)子串不足TCAM字寬長(zhǎng)度,就可以利用上一個(gè)子串的尾部將其補(bǔ)足4個(gè)字符。這樣,本實(shí)施例中輸入給頭部TCAM的字符串有6個(gè),分別為“CANA”、“NADA”、“DA->”、“CHIN”、“HINA”、“CHI?”。同時(shí),將輸入給頭部TCAM的字符串首尾倒置后,再輸入給尾部TCAM。
      實(shí)際應(yīng)用中,按照上述的分割方式在某些特殊情況下可能會(huì)產(chǎn)生問(wèn)題。例如長(zhǎng)模式字符串“CANADA”和“CANANADA”分割后會(huì)產(chǎn)生一樣的子模式字符串,即“CANA”和“NADA”。這樣,在匹配成功時(shí)就不知道應(yīng)該將“CANA”和“NADA”合并為“CANADA”還是“CANANADA”。上述這種現(xiàn)象可以稱為“分割沖突”。所以,實(shí)際應(yīng)用中,如果存在分割沖突的長(zhǎng)模式字符串,可以將其最后一個(gè)子串改成以“?”來(lái)補(bǔ)足,即將“CANADA”分割成“CANA”和“DA??”,將“CANANADA”分割成“CANA”和“NADA”,便可以消除沖突。
      另外,本實(shí)施例中,為了記錄匹配時(shí)字符串的在待檢測(cè)數(shù)據(jù)中的位置,還可以設(shè)置一個(gè)計(jì)數(shù)器Counter,并將其初始值設(shè)置為緩沖區(qū)的長(zhǎng)度13。進(jìn)行匹配時(shí),每一個(gè)TCAM在一個(gè)時(shí)鐘節(jié)拍完成一個(gè)匹配操作,計(jì)數(shù)器Counter在一個(gè)時(shí)鐘節(jié)拍結(jié)束時(shí)減2,不但可以指示頭部TCAM和尾部TCAM匹配數(shù)據(jù)之間的距離,還可以指示待檢測(cè)數(shù)據(jù)是否已經(jīng)匹配完。
      從上述分析的情況來(lái)看,本實(shí)施例匹配過(guò)程中可能出現(xiàn)三種情況第一種情況是匹配到短模式字符串,可以直接上報(bào)給系統(tǒng);第二種情況是匹配到長(zhǎng)模式字符串的前綴子串,則需要記錄當(dāng)前匹配情況;第三種情況是匹配到長(zhǎng)模式字符串的后綴子串,可以與之前已經(jīng)匹配的部分組合為完整的長(zhǎng)模式字符串并上報(bào)給系統(tǒng)。其中,第二種和第三種情況都涉及長(zhǎng)模式字符串,可以在靜態(tài)內(nèi)存(SRAM)中構(gòu)造匹配表、特征表和部分命中列表,并在匹配過(guò)程中由匹配表、特征表和部分命中列表配合。
      構(gòu)造頭部TCAM和尾部TCAM統(tǒng)一的匹配表時(shí),首先需要將每一個(gè)長(zhǎng)模式字符串根據(jù)TCAM字寬進(jìn)行劃分,獲得前綴子串、中綴子串和后綴子串的組合。以“CANADA->CHINA”這里長(zhǎng)模式字符串為例,其組合狀態(tài)可以如表一所示

      表一其次,將所有劃分出的前綴子串、中綴子串和后綴子串按照組合的對(duì)應(yīng)關(guān)系填入匹配表,并為每一個(gè)前綴子串、中綴子串和后綴子串分配索引號(hào)。本實(shí)施例中,可以按照出現(xiàn)的順序?yàn)榍熬Y子串、中綴子串和后綴子串分配索引號(hào)。這里所述匹配表的格式可以如表二所示

      表二再次,對(duì)于每一個(gè)組合,在TCAM_H匹配時(shí),如果前綴子串和中綴子串構(gòu)成的新的前綴子串與匹配表中其它組合的前綴子串相同,則將所述其它組合已有的前綴子串的索引號(hào)作為所述構(gòu)成新的前綴子串的組合信息記錄下來(lái);如果由后綴子串和中綴子串構(gòu)成的新的后綴子串與匹配表中其它組合已有的后綴子串相同,則將所述其它組合已有的后綴子串的索引號(hào)作為所述構(gòu)成新的后綴子串的組合信息記錄下來(lái);如果由前綴子串和后綴子串構(gòu)成一個(gè)完整的長(zhǎng)模式字符串,則直接將該完整的長(zhǎng)模式字符串對(duì)應(yīng)的規(guī)則號(hào)作為組合信息記錄下來(lái)。
      比如匹配表第三行中,前綴子串“CANA”和中綴子串“DA->”構(gòu)成的新的前綴子串為“CANADA->”,并且經(jīng)與匹配表第四行中的前綴子串相同,那么,可以將第四行前綴子串的索引號(hào)作為第三行中TCAM-H匹配對(duì)應(yīng)的組合信息記錄下來(lái)。又比如匹配表第五行,后綴子串“HINA”和中綴子串“CHIN”構(gòu)成新的后綴子串為“CHINA”,并且與匹配表第三行中的后綴子串相同,那么,可以將第三行后前綴子串的索引號(hào)作為第五行中TCAM-T匹配對(duì)應(yīng)的組合信息記錄下來(lái)。再比如匹配表第一行的前綴子串和后綴子串可以組合為一個(gè)完整的長(zhǎng)模式字符串“CANADA”,則將“CANADA”對(duì)應(yīng)的規(guī)則號(hào)作為組合信息記錄下來(lái)。匹配表中其它的組合信息都可以按照上述的方式獲取,此處不再贅述。之后,所述匹配表可如表三所示

      表三實(shí)際應(yīng)用中,匹配表可以存儲(chǔ)在一個(gè)三維數(shù)組里,匹配表中前三列索引號(hào)可以作為三維數(shù)組的下標(biāo),后面兩列的項(xiàng)作為每個(gè)數(shù)組元素存儲(chǔ)的內(nèi)容。這樣,就可以保證僅需一次內(nèi)存訪問(wèn)即可找到相應(yīng)的項(xiàng),以達(dá)到減少內(nèi)存訪問(wèn)的次數(shù)的目的。比如給定三元地址(1,0,1)就可以查詢到匹配表的第一項(xiàng)。假設(shè)前綴索引、中綴索引和后綴索引的最大值分別為h、b和t,則三維數(shù)組大小為h*b*t項(xiàng),且實(shí)際占用空間與匹配表的項(xiàng)數(shù)無(wú)關(guān)。這是因?yàn)閿?shù)組空間一經(jīng)分配便可以固定,匹配表項(xiàng)數(shù)只影響數(shù)組的利用率??梢酝谱C,若一個(gè)長(zhǎng)模式字符串包含n個(gè)中綴子串,則該長(zhǎng)模式會(huì)在匹配表中產(chǎn)生2*n+1項(xiàng),特別地,若n=0則只產(chǎn)生一項(xiàng),例如“CANADA”在匹配表中僅產(chǎn)生一項(xiàng)。所以,對(duì)于包含m個(gè)長(zhǎng)模式字符串的匹配表,數(shù)組空間利用率可以近似估算為

      其中ni表示第i個(gè)長(zhǎng)模式字符串所包含的中綴子串?dāng)?shù)。
      本實(shí)施例中,當(dāng)匹配表構(gòu)造完成后,為了便于在匹配過(guò)程中確定匹配到的字符串的類型值,可以事先設(shè)置一個(gè)頭部TCAM和尾部TCAM共同的特征表。其中,如果字符串為短模式字符串,則類型值為短模式字符串對(duì)應(yīng)的規(guī)則號(hào),如果字符串為前綴子串、中綴子串或后綴子串,則類型值為對(duì)應(yīng)的索引號(hào)。這樣,本實(shí)施例的特征表可以如表四所示

      表四在表四中可以看到,“CANA”為前綴子串,其對(duì)應(yīng)的索引號(hào)為1;“NADA”為后綴子串,其對(duì)應(yīng)的索引號(hào)為1;“DA->”為中綴子串,其對(duì)應(yīng)的索引號(hào)為1;“CHIN”包括了短模式字符串,同時(shí)也為前綴子串和中綴子串,對(duì)應(yīng)的索引號(hào)分別為4和2;“HINA”為后綴子串,其對(duì)應(yīng)的索引號(hào)為4;“CHI?”為短模式字符串。
      實(shí)際應(yīng)用中,為了更好地訪問(wèn)特征表,可以采用基址+偏移地址的尋址機(jī)制。比如利用TCAM提供的索引值,加上特征表的基地址組成一個(gè)實(shí)際地址,再利用這里實(shí)際地址來(lái)訪問(wèn)特征表,其訪問(wèn)方式可以如圖2所示。
      圖3是本實(shí)施例在開(kāi)始進(jìn)行模式匹配時(shí),TCAM_H、TCAM_T、計(jì)數(shù)器Counter、緩沖區(qū)的初始狀態(tài)。如圖3所示,所述TCAM_H已經(jīng)輸入?yún)⑴c匹配的各個(gè)字符串,所述TCAM_T已經(jīng)輸入首尾倒置的各個(gè)字符串,所述計(jì)數(shù)器Counter的值為13,所述緩沖區(qū)中待檢測(cè)數(shù)據(jù)為“CANADA->CHINA”。
      圖4是本實(shí)施例實(shí)現(xiàn)模式匹配的流程圖。如圖4所示,本實(shí)施例可以包括以下步驟步驟401在第一個(gè)時(shí)鐘節(jié)拍中,將緩沖區(qū)中待檢測(cè)數(shù)據(jù)頭部的4個(gè)字符作為T(mén)CAM_H的當(dāng)前檢測(cè)數(shù)據(jù),將緩沖區(qū)中待檢測(cè)數(shù)據(jù)尾部的4個(gè)字符作為T(mén)CAM_T的當(dāng)前檢測(cè)數(shù)據(jù);步驟402TCAM_H將自身當(dāng)前檢測(cè)數(shù)據(jù)與自身保存的各個(gè)字符串進(jìn)行匹配,并匹配到字符串“CANA”,TCAM_T將自身當(dāng)前檢測(cè)數(shù)據(jù)與自身保存的各個(gè)字符串進(jìn)行匹配,并匹配到字符串“HINA”;步驟403通過(guò)查詢特征表確定匹配到的字符串“CANA”為前綴子串,對(duì)應(yīng)的索引號(hào)為1,將該索引號(hào)添加到TCAM_H的部分命中列表中;同時(shí),通過(guò)查詢特征表確定匹配到的字符串“HINA”為后綴子串,對(duì)應(yīng)的索引號(hào)為4,將該索引號(hào)添加到TCAM_T的部分命中列表中。
      這里,需要注意的是,由于TCAM_T是從緩沖區(qū)的尾部逆向開(kāi)始匹配的,在匹配表查詢到的后綴子串實(shí)際上是TCAM_T匹配到的前綴子串,相應(yīng)的索引號(hào)應(yīng)該前綴索引。另外,為了便于記錄匹配成功時(shí)字符串所在的位置,可以將計(jì)數(shù)器Counter的當(dāng)前值13記錄在兩個(gè)部分命中列表中。所述兩個(gè)部分命中列表分別為表五和表六,其中表五為T(mén)CAM_H的部分命中列表,表六為T(mén)CAM_T的部分命中列表。


      表五表六步驟404根據(jù)計(jì)數(shù)器Counter的值判斷出還沒(méi)有匹配完待檢測(cè)數(shù)據(jù),TCAM_H向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“ANAD”;同時(shí),TCAM-T向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“CHIN”,計(jì)數(shù)器Counter的值減2;此時(shí),將開(kāi)始第二個(gè)時(shí)鐘節(jié)拍中的匹配工作。
      步驟405在第二個(gè)時(shí)鐘節(jié)拍中,TCAM_H將自身當(dāng)前檢測(cè)數(shù)據(jù)“ANAD”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定此次無(wú)成功的匹配;同時(shí),TCAM_T將自身當(dāng)前檢測(cè)數(shù)據(jù)“CHIN”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定匹配到字符串“CHIN”;步驟406通過(guò)查詢特征表確定TCAM_T匹配到的字符串“CHIN”是索引號(hào)為2的中綴子串,再聯(lián)合TCAM_T的部分命中列表中已有的索引號(hào)4查詢匹配表,將匹配表中新構(gòu)成的后綴子串對(duì)應(yīng)的索引號(hào)3添加到TCAM_T的部分命中列表中。
      這里需要注意的是,TCAM_T部分命中列表中記錄的前綴索引實(shí)際上是匹配表中后綴子串對(duì)應(yīng)的索引,所以,聯(lián)合中綴子串索引號(hào)2和TCAM_T部分命中列表中的索引號(hào)4,實(shí)際上則是查詢匹配表中綴索引為2,后綴索引為4的項(xiàng),并確定該項(xiàng)中TCAM_T匹配對(duì)應(yīng)的組合信息為3,即當(dāng)前匹配成功時(shí)的字符串并不是一個(gè)完整的長(zhǎng)模式字符串的規(guī)則號(hào),而是部分字符串對(duì)應(yīng)的索引號(hào)。
      本步驟中,通過(guò)查詢特征表確定TCAM_T匹配到的字符串“CHIN”是索引號(hào)為2的中綴子串,而實(shí)際上,“CHIN”也同時(shí)是一個(gè)索引號(hào)為4的后綴字符串,并可以與TCAM_T部分命中列表中的索引號(hào)聯(lián)合查詢匹配表,獲取完整的長(zhǎng)模式字符串“CHINA”,上報(bào)給系統(tǒng)。但至于是僅將匹配到的長(zhǎng)模式字符串上報(bào)給系統(tǒng);或者僅匹配一個(gè)更長(zhǎng)的長(zhǎng)模式字符串的一部分;或者既將匹配到的長(zhǎng)模式字符串上報(bào)給系統(tǒng),又匹配一個(gè)更長(zhǎng)的長(zhǎng)模式字符串的一部分,則與實(shí)際的設(shè)計(jì)相關(guān),此處不再詳細(xì)敘述。
      另外,本步驟執(zhí)行后,TCAM_H的部分命中列表保持不變,而TCAM_T的部分命中列表更新為表七

      表七步驟407根據(jù)計(jì)數(shù)器Counter的值判斷出還沒(méi)有匹配完待檢測(cè)數(shù)據(jù),TCAM_H向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“NADA”;同時(shí),TCAM-T向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“>CHI”,計(jì)數(shù)器Counter的值減2;此時(shí),將開(kāi)始第三個(gè)時(shí)鐘節(jié)拍中的匹配工作。
      步驟408在第三個(gè)時(shí)鐘節(jié)拍中,TCAM_H將自身當(dāng)前檢測(cè)數(shù)據(jù)“NADA”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定匹配到字符串“NADA”;同時(shí),TCAM_T將自身當(dāng)前檢測(cè)數(shù)據(jù)“>CHI”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定匹配到字符串“CHI”;步驟409通過(guò)查詢特征表確定TCAM_H匹配到的字符串“NADA”是索引號(hào)為1的后綴子串,再聯(lián)合TCAM_H的部分命中列表中已有的索引號(hào)1查詢匹配表,確定匹配到完整的長(zhǎng)模式字符串“CANADA”,并將對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng);同時(shí),通過(guò)查詢特征表確定TCAM_T匹配到的字符串為短模式字符串,并將對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng);步驟410根據(jù)計(jì)數(shù)器Counter的值判斷出還沒(méi)有匹配完待檢測(cè)數(shù)據(jù),TCAM_H向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“ADA-”;同時(shí),TCAM-T向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“->CH”,計(jì)數(shù)器Counter的值減2;此時(shí),將開(kāi)始第四個(gè)時(shí)鐘節(jié)拍中的匹配工作。
      步驟411在第四個(gè)時(shí)鐘節(jié)拍中,TCAM_H將自身當(dāng)前檢測(cè)數(shù)據(jù)“ADA-”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定無(wú)成功匹配;同時(shí),TCAM_T將自身當(dāng)前檢測(cè)數(shù)據(jù)“->CH”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定無(wú)成功匹配;步驟412根據(jù)計(jì)數(shù)器Counter的值判斷出還沒(méi)有匹配完待檢測(cè)數(shù)據(jù),TCAM_H向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“DA->”;同時(shí),TCAM-T向中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù)為“A->C”,計(jì)數(shù)器Counter的值減2;
      此時(shí),將開(kāi)始第五個(gè)時(shí)鐘節(jié)拍中的匹配工作。
      步驟413第五個(gè)時(shí)鐘節(jié)拍中,TCAM_H將自身當(dāng)前檢測(cè)數(shù)據(jù)“DA->”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定匹配到字符串“DA->”;同時(shí),TCAM_T將自身當(dāng)前檢測(cè)數(shù)據(jù)“A->C”與自身保存的各個(gè)字符串進(jìn)行匹配,并確定無(wú)成功匹配;步驟414通過(guò)查詢特征表確定TCAM_H匹配到的字符串“DA->”是索引號(hào)為1的中綴子串,再聯(lián)合TCAM_H的部分命中列表中已有的索引號(hào)1查詢匹配表,將匹配表中新構(gòu)成的前綴子串對(duì)應(yīng)的索引號(hào)2添加到TCAM_H的部分命中列表中。
      本步驟中,更新后的TCAM_H的部分命中列表可以如表八所示

      表八實(shí)際應(yīng)用中,假設(shè)TCAM字寬為w,每經(jīng)過(guò)一個(gè)時(shí)鐘節(jié)拍后計(jì)數(shù)器Counter值減2,不難推證,當(dāng)部分命中列表中兩項(xiàng)位置差大于或等于2w時(shí),就可以將前一項(xiàng)刪除。這是由于表中兩項(xiàng)位置差大于或等于2w時(shí),各自對(duì)應(yīng)的字符串的距離在待檢測(cè)數(shù)據(jù)中相差大于或等于w,說(shuō)明TCAM已經(jīng)移動(dòng)了w或w以上的字符,即使再有匹配的情況發(fā)生,也不會(huì)與前一項(xiàng)字符串進(jìn)行組合了。此時(shí),前一項(xiàng)的信息已經(jīng)無(wú)法被后續(xù)的匹配過(guò)程利用。為了節(jié)約部分命中列表的大小,減少訪問(wèn)部分命中列表的時(shí)間,可以將已經(jīng)無(wú)用的項(xiàng)刪除。在本實(shí)施例中,由于步驟414中,TCAM_H部分命中列表的第一項(xiàng)與第二項(xiàng)的位置差為8,等于2倍TCAM字寬,可以將其刪除。這樣,TCAM_H的新的部分命中列表可以如表九所示

      表九步驟415將TCAM_H和TCAM_T各自部分列表中保存的索引號(hào)進(jìn)行組合,并根據(jù)組合結(jié)果查詢匹配表,如果匹配到完整的長(zhǎng)模式字符串,則將匹配表中對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。
      本步驟中,由于TCAM_H保存有索引號(hào)2,TCAM_T保存有索引號(hào)4和3,可以分別組合成(索引2,索引4)以及(索引2,索引3),再利用每一個(gè)組合查詢匹配表。需要注意的是,這里所述索引號(hào)在部分命中列表中都是前綴索引,但實(shí)際上TCAM_T的前綴索引在匹配中應(yīng)該對(duì)應(yīng)為后綴子串。也就是說(shuō),如果以(索引2,索引4)去查詢匹配表,實(shí)際上是以前綴索引2和后綴索引4去查詢匹配表,并確定無(wú)法構(gòu)成一個(gè)完整的長(zhǎng)模式字符串。如果以前綴索引2和后綴索引3去查詢匹配表,則可以匹配出一個(gè)完整的長(zhǎng)模式字符串“CANADA->CHINA”,并將對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。
      至此,本實(shí)施例匹配到三個(gè)完整的模式字符串,一個(gè)為步驟409中由TCAM_H匹配到的“CANADA”,一個(gè)為步驟409中TCAM_T匹配到的“CHI”,另外一個(gè)為步驟415中TCAM_H和TCAM_T共同匹配到的“CANADA->CHINA”。實(shí)際應(yīng)用中,如果某字符串匹配成功時(shí),既將匹配到的長(zhǎng)模式字符串上報(bào)給系統(tǒng),又匹配一個(gè)更長(zhǎng)的長(zhǎng)模式字符串的一部分,那么,本實(shí)施例步驟405中TCAM_T還匹配到了“CHINA”。當(dāng)然,由于本實(shí)施例各個(gè)模式字符串無(wú)關(guān)聯(lián)關(guān)系,匹配后可以立即將對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),系統(tǒng)再根據(jù)規(guī)則號(hào)對(duì)應(yīng)的動(dòng)作對(duì)數(shù)據(jù)包進(jìn)行相關(guān)處理,比如報(bào)警、丟棄、轉(zhuǎn)發(fā)等等。至于各個(gè)模式字符串對(duì)應(yīng)的規(guī)則號(hào)以及動(dòng)作,則與具體的實(shí)現(xiàn)相關(guān),此處不再詳細(xì)描述。
      本實(shí)施例中,當(dāng)TCAM_H和TCAM_T匹配到待檢測(cè)數(shù)據(jù)的中間時(shí),各自的部分命中列表中也可能沒(méi)有仍然保存的索引號(hào),則無(wú)需執(zhí)行步驟415。
      另外,本實(shí)施例是以各個(gè)模式字符串為無(wú)關(guān)聯(lián)關(guān)系為例來(lái)說(shuō)明本發(fā)明方案的。實(shí)際應(yīng)用中,如果各個(gè)模式字符串有關(guān)聯(lián)關(guān)系,其實(shí)現(xiàn)方法與本實(shí)施例相似,其區(qū)別在于對(duì)于各個(gè)模式字符串有順序關(guān)聯(lián)關(guān)系的情況來(lái)說(shuō),即P1P2P3...Pn這些模式字符串之間存在順序。當(dāng)TCAM_H和TCAM_T匹配到完整的模式字符串時(shí),不會(huì)馬上上報(bào)給系統(tǒng),而是暫時(shí)記錄下來(lái),等到所有的模式字符串全部匹配成功,并且保持順序時(shí),才可以將P=P1P2P3...Pn對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。
      對(duì)于各個(gè)模式字符串有條件關(guān)聯(lián)關(guān)系的情況來(lái)說(shuō),即需要滿足P1·Px·P2的條件或滿足P1·Px·P2的條件。以滿足P1·Px·P2為例,當(dāng)TCAM_H和TCAM_T各自從待檢測(cè)數(shù)據(jù)兩端匹配到模式字符串P1和模式字符串P2時(shí),不能馬上上報(bào)給系統(tǒng),而是判斷兩個(gè)字符串之間是否存在某個(gè)符合長(zhǎng)度的任意的字符串,只有在滿足這種條件下,才將P=P1·Px·P2對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。比如一條針對(duì)POP3協(xié)議溢出攻擊的規(guī)則為“contentUSER;nocase;content!’0a’;within128”,表示如果在檢測(cè)到“USER”之后128個(gè)字符內(nèi)沒(méi)有檢測(cè)到回車符,就認(rèn)為是一次攻擊。如圖5所示,假設(shè)緩沖區(qū)長(zhǎng)度為256個(gè)字符,TCAM_H在第100個(gè)字符處檢測(cè)到“USER”,如果TCAM_T在第156到228的位置內(nèi)已經(jīng)檢測(cè)到回車符,則可以馬上判斷這不是一個(gè)攻擊,而無(wú)需繼續(xù)向中間進(jìn)行匹配。如果TCAM_T在第156到228的位置內(nèi)沒(méi)有檢測(cè)到回車符,則最多還需(256-2*100)/2=28步就可以判斷出結(jié)果,TCAM_H的部分命中列表中與匹配到“USER”相關(guān)的信息只需要保留28個(gè)時(shí)鐘節(jié)拍。這樣,利用本實(shí)施例中的TCAM_H和TCAM_T兩個(gè)TCAM同時(shí)向待檢測(cè)數(shù)據(jù)的中間進(jìn)行匹配,不但可以大大減少匹配次數(shù),而且可以防止攻擊者利用“USER”和回車符之間的空隙設(shè)計(jì)攻擊數(shù)據(jù),從而可以有效地提高模式匹配的性能。
      針對(duì)上述實(shí)現(xiàn)模式匹配的方法,本發(fā)明還提出一種實(shí)現(xiàn)模式匹配的裝置。該裝置實(shí)施例可以如圖6所示,包括頭部TCAM601,用于在匹配控制單元603的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)604中頭部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;
      尾部TCAM602,用于在匹配控制單元603的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)604中尾部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;匹配控制單元603,用于將模式字符串輸入給頭部TCAM601,將模式字符串首尾倒置后輸入給尾部TCAM602,將待檢測(cè)數(shù)據(jù)輸入給緩沖區(qū)603,還用于控制頭部TCAM601和尾部TCAM602分別同時(shí)從緩沖區(qū)604中待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng);緩沖區(qū)604,用于保存待檢測(cè)數(shù)據(jù)。
      實(shí)際應(yīng)用中,為了更好地控制頭部TCAM601和尾部TCAM602的匹配工作,該裝置還可以進(jìn)一步包括計(jì)數(shù)器605,可以為一個(gè)寄存器,用于記錄頭部TCAM601和尾部TCAM602所匹配字符串之間的距離。
      時(shí)鐘產(chǎn)生單元606,用于生成時(shí)鐘信號(hào),并輸出給頭部TCAM601、尾部TCAM602和匹配控制單元603。
      當(dāng)然,如果TACM中包括長(zhǎng)模式字符串,不能一次匹配成功,可以構(gòu)造匹配表、特征表和部分命中列表來(lái)實(shí)現(xiàn)匹配。所述匹配表、特征表和部分命中列表用于記錄與長(zhǎng)模式字符串匹配相關(guān)的信息,可以保存在長(zhǎng)模式信息存儲(chǔ)單元607中,所述長(zhǎng)模式信息存儲(chǔ)單元607可以是內(nèi)存,比如采用靜態(tài)內(nèi)存(SRAM)來(lái)實(shí)現(xiàn)。至于匹配表、特征表和部分命中列表中的具體信息可以參見(jiàn)上述方法的相關(guān)描述,此處不再贅述。
      當(dāng)需要進(jìn)行模式匹配時(shí),匹配控制單元603將模式字符串輸入頭部TCAM601中,并將模式字符串首尾倒置后輸入尾部TCAM602中,將捕獲到的數(shù)據(jù)包中待檢測(cè)數(shù)據(jù)輸入緩沖區(qū)604中,并設(shè)置計(jì)數(shù)器初始值。之后,當(dāng)匹配控制單元603接收到時(shí)鐘產(chǎn)生單元606所產(chǎn)生的時(shí)鐘時(shí),在時(shí)鐘節(jié)拍內(nèi),控制頭部TCAM601和尾部TCAM602分別同時(shí)從緩沖區(qū)中待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)。當(dāng)然,在匹配過(guò)程中,如果匹配的字符串為長(zhǎng)模式字符串,還可能需要訪問(wèn)長(zhǎng)模式信息存儲(chǔ)單元607,查詢其中的匹配表、特征表和部分命中列表。另外,在每一個(gè)時(shí)鐘節(jié)拍結(jié)束時(shí),匹配控制單元603還需要控制計(jì)數(shù)器605減2,以記錄頭部TCAM601和尾部TCAM602所匹配字符串之間的距離。
      當(dāng)然,如果TCAM中都是短模式字符串,則可以不用設(shè)置長(zhǎng)模式信息存儲(chǔ)單元607。如果無(wú)需獲取匹配成功時(shí)字符串的位置,匹配控制單元603事先可以知道需要匹配多少個(gè)時(shí)鐘節(jié)拍就可以完成緩沖區(qū)中待檢測(cè)數(shù)據(jù)的匹配,也可以不設(shè)置計(jì)數(shù)器605。
      實(shí)際應(yīng)用中,用于入侵檢測(cè)的規(guī)則很多,比如可以達(dá)到3000條以上,其中95%以上對(duì)應(yīng)的模式字符串長(zhǎng)度小于30,其中又有超過(guò)70%的長(zhǎng)度小于20?,F(xiàn)有的制造工藝可以使單片TCAM的容量達(dá)到20Mbit以上。如果使用本方案,只需要使用16Mbit的芯片,并將其配置為字寬64字節(jié)、深度32k,即可容納所有的模式字符串,并可以使大部分歸為短模式字符串。由于實(shí)際應(yīng)用中,長(zhǎng)模式需要被分割為3個(gè)以上子串的情況比較少,本發(fā)明實(shí)施例中構(gòu)造的匹配表將不會(huì)占有很多內(nèi)存。當(dāng)然,如果所有的長(zhǎng)模式都無(wú)需劃分成3個(gè)或以上子串的話,也可以將匹配表和特征表的中綴索引一列去掉。
      另外,本發(fā)明實(shí)施例中是以兩個(gè)TCAM為例進(jìn)行說(shuō)明的,實(shí)際應(yīng)用中,還可以使用4個(gè)、8個(gè)等更多的TCAM同時(shí)進(jìn)行匹配。比如用兩個(gè)TCAM從待檢測(cè)數(shù)據(jù)的前半部進(jìn)行匹配,另外兩個(gè)TCAM從待檢測(cè)數(shù)據(jù)的后半部進(jìn)行匹配,其匹配的方法可以與本實(shí)施例中提供的方法相同。
      應(yīng)用本發(fā)明方案,由于使用兩個(gè)TCAM從待檢測(cè)數(shù)據(jù)的兩端同時(shí)向中間匹配,不但可以提高TCAM的查詢速度,將入侵檢測(cè)系統(tǒng)的性能提高一倍,而且在關(guān)聯(lián)模式匹配的情況下,可以有效防止攻擊者的攻擊,保證系統(tǒng)的性能。另外,由于頭部TCAM和尾部TCAM可以同時(shí)訪問(wèn)相同的匹配表和特征表,從而可以減少內(nèi)存空間開(kāi)銷,節(jié)約資源,也可以減少訪問(wèn)內(nèi)存的次數(shù),提高匹配的效率。
      綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種入侵檢測(cè)中模式匹配的方法,其特征在于,設(shè)置兩個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,其中一個(gè)為頭部TCAM,另外一個(gè)為尾部TCAM,將已有的用于模式匹配的各個(gè)模式字符串輸入頭部TCAM,并將所述輸入頭部TCAM的字符串首尾倒置后輸入尾部TCAM,當(dāng)需要對(duì)待檢測(cè)數(shù)據(jù)進(jìn)行模式匹配時(shí),該方法為所述頭部TCAM和尾部TCAM分別同時(shí)根據(jù)輸入給自身的各個(gè)模式字符串從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果所述模式字符串為長(zhǎng)度大于TCAM字寬的長(zhǎng)模式字符串,則在將所述長(zhǎng)模式字符串輸入頭部TCAM之前,該方法進(jìn)一步包括將長(zhǎng)模式字符串按照TCAM的字寬分割為子模式字符串;所述輸入頭部TCAM的模式字符串為分割后的子模式字符串。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,如果用于模式匹配的各個(gè)模式字符串之間無(wú)關(guān)聯(lián)關(guān)系,那么每一個(gè)TCAM向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)的方法為A1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);A2、TCAM根據(jù)輸入給自身的各個(gè)字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟A4;否則,執(zhí)行步驟A3;A3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù),如果已經(jīng)匹配完,則退出本流程,如果沒(méi)有匹配完,則TCAM向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟A2;A4、判斷TCAM匹配成功時(shí)所對(duì)應(yīng)的字符串是否為長(zhǎng)度不大于TCAM字寬的短模式字符串,如果是,則直接上報(bào)系統(tǒng),再執(zhí)行步驟A3;否則,通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和自身的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則上報(bào)系統(tǒng),再執(zhí)行步驟A3;否則,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟A3。
      4.根據(jù)權(quán)利要求3任一項(xiàng)所述的方法,其特征在于,所述匹配表為同時(shí)提供給頭部TCAM和尾部TCAM的統(tǒng)一的匹配表,所述構(gòu)造匹配表的方法為X1、先將每一個(gè)長(zhǎng)模式字符串根據(jù)TCAM字寬進(jìn)行劃分,獲得前綴子串、中綴子串和后綴子串的組合,所述前綴子串、中綴子串和后綴子串組合為一個(gè)完整的長(zhǎng)模式字符串;X2、再將所有劃分出的前綴子串、中綴子串和后綴子串按照組合的對(duì)應(yīng)關(guān)系填入匹配表,并為每一個(gè)前綴子串、中綴子串和后綴子串分配索引號(hào);X3、對(duì)于每一個(gè)組合,如果由前綴子串和中綴子串構(gòu)成的新的前綴子串與匹配表中其它組合已有的前綴子串相同,則將所述其它組合已有的前綴子串的索引號(hào)作為所述構(gòu)成新的前綴子串的組合信息記錄下來(lái);如果由后綴子串和中綴子串構(gòu)成的新的后綴子串與匹配表中其它組合已有的后綴子串相同,則將所述其它組合已有的后綴子串的索引號(hào)作為所述構(gòu)成新的后綴子串的組合信息記錄下來(lái);如果由前綴子串和后綴子串構(gòu)成一個(gè)完整的長(zhǎng)模式字符串,則直接將該完整的長(zhǎng)模式字符串對(duì)應(yīng)的規(guī)則號(hào)作為組合信息記錄下來(lái)。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟A4所述方法具體為A41、根據(jù)TCAM當(dāng)前匹配成功時(shí)所對(duì)應(yīng)的字符串在內(nèi)存中查找事先構(gòu)造的特征表,所述特征表用于記錄事先輸入給TCAM中字符串的類型值,如果字符串為短模式字符串,則類型值為短模式字符串對(duì)應(yīng)的規(guī)則號(hào),如果字符串為前綴子串、中綴子串或后綴子串,則類型值為對(duì)應(yīng)的索引號(hào);A42、如果當(dāng)前匹配成功時(shí)的字符串在特征表中的類型值為規(guī)則號(hào),則確定為短模式字符串,并直接將規(guī)則號(hào)上報(bào)給系統(tǒng),再執(zhí)行步驟A3;否則,執(zhí)行步驟A43;A43、如果當(dāng)前匹配成功時(shí)所對(duì)應(yīng)的字符串在特征表中的類型值為索引號(hào),則聯(lián)合在特征表中查找到的索引號(hào)和已記錄在部分命中列表中的索引號(hào)查找匹配表,如果僅匹配到完整的長(zhǎng)模式字符串,則將相應(yīng)的規(guī)則號(hào)上報(bào)系統(tǒng),再執(zhí)行步驟A3;否則,執(zhí)行步驟A44;A44、將當(dāng)前匹配成功時(shí)的字符串對(duì)應(yīng)的索引號(hào)添加到部分命中列表中,再執(zhí)行步驟A3。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,如果所述添加到部分命中列表中的索引號(hào)在部分命中列表中超過(guò)預(yù)先設(shè)置的保存時(shí)間,則刪除該索引號(hào)。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在步驟A3所述TCAM判斷出已經(jīng)匹配完待檢測(cè)數(shù)據(jù)的一半時(shí),如果頭部TCAM和尾部TCAM各自的部分命中列表中還有保存的索引號(hào),該方法進(jìn)一步包括將頭部TCAM和尾部TCAM各自部分列表中保存的索引號(hào)進(jìn)行組合,并根據(jù)組合結(jié)果查詢匹配表,如果匹配到完整的長(zhǎng)模式字符串,則將匹配表中對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng)。
      8.根據(jù)權(quán)利要求2所述的方法,其特征在于,如果用于模式匹配的n個(gè)模式字符串之間存在順序關(guān)聯(lián)關(guān)系,所述n為大于或等于2的整數(shù),那么每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法為B1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);B2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟B4;否則,執(zhí)行步驟B3;B3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù),如果已經(jīng)匹配完,則在匹配到所述保持順序關(guān)聯(lián)關(guān)系的n個(gè)模式字符串時(shí),將所述保持順序關(guān)聯(lián)關(guān)系的n個(gè)模式字符串對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟B2;B4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則將所述短模式字符串記錄下來(lái),并判斷記錄下來(lái)的所有字符串是否保持順序關(guān)聯(lián)關(guān)系,如果是,則執(zhí)行步驟B3;否則,退出本流程;B5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則TCAM通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和自身的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟B6;如果匹配到長(zhǎng)模式字符串的一部分,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟B3;B6、將所述長(zhǎng)模式字符串記錄下來(lái),并判斷記錄下來(lái)的所有字符串是否保持所述順序關(guān)聯(lián)關(guān)系,如果是,則執(zhí)行步驟B3;否則,退出本流程。
      9.根據(jù)權(quán)利要求2所述的方法,其特征在于,如果用于模式匹配的有兩個(gè)模式字符串,并且兩個(gè)模式字符串之間存在條件關(guān)聯(lián)關(guān)系,那么每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法為C1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);C2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟C4;否則,執(zhí)行步驟C3;C3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù),如果已經(jīng)匹配完,則退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟C2;C4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則記錄下當(dāng)前匹配成功時(shí)的位置,并在另一TCAM也匹配成功時(shí),判斷兩個(gè)TCAM之間當(dāng)前匹配的距離是否滿足所述條件關(guān)聯(lián)關(guān)系,如果滿足,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;C5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和TCAM的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟C6;如果匹配到長(zhǎng)模式的一部分字符串,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟C3;C6、記錄下當(dāng)前匹配成功時(shí)的位置,并在另一TCAM也匹配成功時(shí),判斷兩個(gè)TCAM之間當(dāng)前匹配的距離是否滿足所述條件關(guān)聯(lián)關(guān)系,如果滿足,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程。
      10.根據(jù)權(quán)利要求2所述的方法,其特征在于,如果用于模式匹配的為兩個(gè)模式字符串,并且兩個(gè)模式字符串之間存在條件關(guān)聯(lián)關(guān)系,那么每一個(gè)TCAM向中間依次進(jìn)行模式匹配并將匹配結(jié)果上報(bào)給系統(tǒng)的方法為D1、根據(jù)TCAM字寬從待檢測(cè)數(shù)據(jù)確定TCAM的當(dāng)前檢測(cè)數(shù)據(jù);D2、TCAM根據(jù)輸入的字符串與自身的當(dāng)前檢測(cè)數(shù)據(jù)進(jìn)行匹配,如果匹配成功,則執(zhí)行步驟D4;否則,執(zhí)行步驟D3;D3、判斷TCAM是否已經(jīng)匹配完待檢測(cè)數(shù)據(jù),如果已經(jīng)匹配完,則退出本流程;如果沒(méi)有匹配完,則向待檢測(cè)數(shù)據(jù)的中間移動(dòng)一個(gè)字符,確定各自新的當(dāng)前檢測(cè)數(shù)據(jù),然后繼續(xù)執(zhí)行步驟D2;D4、如果匹配成功時(shí)所對(duì)應(yīng)的字符串是短模式字符串,則記錄下當(dāng)前匹配成功時(shí)的位置,并在兩個(gè)TCAM之間匹配的距離滿足所述條件關(guān)聯(lián)關(guān)系時(shí),判斷另一TCAM是否匹配成功,如果沒(méi)有匹配成功,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程;D5、如果匹配成功時(shí)所對(duì)應(yīng)的字符串不是短模式字符串,則通過(guò)在內(nèi)存中查找事先構(gòu)造的匹配表和TCAM的部分命中列表來(lái)確定匹配結(jié)果,如果僅匹配到完整的長(zhǎng)模式字符串,則執(zhí)行步驟D6;如果匹配到長(zhǎng)模式的一部分字符串,則根據(jù)當(dāng)前匹配情況更新自身部分命中列表,再執(zhí)行步驟D3;D6、記錄下當(dāng)前匹配成功時(shí)的位置,并在兩個(gè)TCAM之間匹配的距離滿足所述條件關(guān)聯(lián)關(guān)系時(shí),判斷另一TCAM是否匹配成功,如果沒(méi)有匹配成功,則將存在條件關(guān)聯(lián)關(guān)系的兩個(gè)模式字符串所對(duì)應(yīng)的規(guī)則號(hào)上報(bào)給系統(tǒng),并退出本流程。
      11.一種入侵檢測(cè)中模式匹配的裝置,其特征在于,該裝置包括頭部三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,用于在匹配控制單元的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)中頭部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;尾部TCAM,用于在匹配控制單元的控制下,根據(jù)輸入給自身的模式字符串從緩沖區(qū)中尾部數(shù)據(jù)開(kāi)始進(jìn)行模式匹配;匹配控制單元,用于將模式字符串輸入給頭部TCAM,將模式字符串首尾倒置后輸入給尾部TCAM,將待檢測(cè)數(shù)據(jù)輸入給緩沖區(qū),還用于控制頭部TCAM和尾部TCAM分別同時(shí)從緩沖區(qū)中待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng);緩沖區(qū),用于保存待檢測(cè)數(shù)據(jù)。
      12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,該裝置進(jìn)一步包括計(jì)數(shù)器,用于記錄頭部TCAM和尾部TCAM所匹配字符串之間的距離;時(shí)鐘產(chǎn)生單元,用于生成時(shí)鐘信號(hào),并輸出給頭部TCAM、尾部TCAM和匹配控制單元。
      13.根據(jù)權(quán)利要求11或12所述的裝置,其特征在于,該裝置進(jìn)一步包括長(zhǎng)模式信息存儲(chǔ)單元,保存用于記錄與長(zhǎng)模式字符串匹配相關(guān)的匹配表、特征表和部分命中列表。
      全文摘要
      本發(fā)明提供一種入侵檢測(cè)中模式匹配的方法和裝置,具體為設(shè)置兩個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器TCAM,其中一個(gè)為頭部TCAM,另外一個(gè)為尾部TCAM,將已有的用于模式匹配的各個(gè)模式字符串輸入頭部TCAM,并將所述輸入頭部TCAM的字符串首尾倒置后輸入尾部TCAM;所述頭部TCAM和尾部TCAM再分別同時(shí)從待檢測(cè)數(shù)據(jù)的頭部和尾部向中間依次進(jìn)行模式匹配,并將匹配結(jié)果上報(bào)給系統(tǒng)。應(yīng)用本發(fā)明方案,由于使用兩個(gè)TCAM從待檢測(cè)數(shù)據(jù)的兩端同時(shí)向中間匹配,可以提高TCAM的查詢速度,從而提高入侵檢測(cè)系統(tǒng)的性能。
      文檔編號(hào)H04L29/06GK101030897SQ20071000046
      公開(kāi)日2007年9月5日 申請(qǐng)日期2007年2月7日 優(yōu)先權(quán)日2007年2月7日
      發(fā)明者鐘杰萍, 張玉鵬, 李 東, 林玉蓓, 古寧, 王亮明, 余丙軍 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1