專利名稱:模式檢測(cè)的制作方法
模式檢測(cè)
背景技術(shù):
隨著聯(lián)網(wǎng)技術(shù)和互聯(lián)網(wǎng)的出現(xiàn),全世界的計(jì)算設(shè)備已經(jīng)能夠與彼此相互通信。盡管這已經(jīng)提供了許多優(yōu)點(diǎn),但是存在著一些問(wèn)題。一個(gè)問(wèn)題是:不期望的計(jì)算機(jī)代碼或信息(例如計(jì)算機(jī)病毒、特洛伊木馬、蠕蟲、垃圾郵件等)可以更容易且不期望地遍布于大量計(jì)算設(shè)備上。
圖1是根據(jù)本公開的實(shí)施例的模式檢測(cè)設(shè)備的圖。圖2是根據(jù)本公開的實(shí)施例的詳細(xì)的圖1的設(shè)備的處理管線的圖。圖3是根據(jù)本公開的實(shí)施例的詳細(xì)的圖1的設(shè)備的檢測(cè)器的圖。圖4是根據(jù)本公開的實(shí)施例的用于檢測(cè)的方法的流程圖。
具體實(shí)施例方式隨著計(jì)算設(shè)備通過(guò)互聯(lián)網(wǎng)和其他網(wǎng)絡(luò)的互聯(lián)性的提高,不期望的計(jì)算機(jī)代碼或信息的散播已經(jīng)成為問(wèn)題。由此,用戶和網(wǎng)絡(luò)管理員通常關(guān)心檢測(cè)這種不期望的計(jì)算機(jī)代碼或信息。此外,用戶和網(wǎng)絡(luò)管理員通常關(guān)心在可以在一個(gè)或多個(gè)給定計(jì)算設(shè)備上接收到和/或安裝這種不期望的計(jì)算機(jī)代碼或信息或者這種不期望的計(jì)算機(jī)代碼或信息以其他方式感染一個(gè)或多個(gè)給定計(jì)算設(shè)備之前,檢測(cè)到這種不期望的計(jì)算機(jī)代碼或信息。其他時(shí)候,其不是不期望的信息,而是用戶和/或網(wǎng)絡(luò)管理員希望以某種獨(dú)特方式檢測(cè)和處理的感興趣信息。例如,公司可能希望檢測(cè)到在保密信息中找到的具體模式,并確保它們未被傳輸至不安全位置。因而,如本文所討論的,不期望的計(jì)算機(jī)代碼或信息包括以下這兩種類型的信息:包括不期望的計(jì)算機(jī)代碼或信息以及感興趣信息。如本文所討論的,提供了一種模式檢測(cè)機(jī)制,其中,在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí),可以在不延遲數(shù)據(jù)通過(guò)管線的移動(dòng)的情況下,在管線內(nèi)檢測(cè)一個(gè)或多個(gè)模式。在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí),對(duì)模式的檢測(cè)可以聚焦于特定位置,或者相對(duì)于數(shù)據(jù)分組內(nèi)的特定參考。例如,可以在多個(gè)層報(bào)頭之一內(nèi)、在分組有效載荷內(nèi)、在特定位置或相對(duì)于另一模式的匹配位置中等等檢測(cè)到模式。如本文所討論的,將針對(duì)一個(gè)或多個(gè)模式和/或一個(gè)或多個(gè)模式部分來(lái)討論不期望的計(jì)算機(jī)代碼或信息。圖1示出了根據(jù)本公開的示例的代表性設(shè)備100。設(shè)備100可以是聯(lián)網(wǎng)設(shè)備,例如,交換機(jī)、路由器或其他類型的聯(lián)網(wǎng)設(shè)備??商鎿Q地或附加地,設(shè)備100可以是像通用計(jì)算機(jī)之類的計(jì)算設(shè)備,諸如,服務(wù)器計(jì)算設(shè)備、客戶端計(jì)算設(shè)備、臺(tái)式計(jì)算機(jī)和/或膝上型計(jì)算機(jī)、除此之外還有其他類型的計(jì)算設(shè)備。設(shè)備100包括處理管線102和檢測(cè)器104。管線102和檢測(cè)器104 二者均至少以硬件實(shí)現(xiàn)。在一個(gè)示例中,管線102和檢測(cè)器104 二者諸如通過(guò)使用適當(dāng)?shù)膶S眉呻娐?ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)和其他類型的僅硬件組件而完全以硬件來(lái)加以實(shí)現(xiàn)。在另一示例中,管線102和檢測(cè)器104可以在以下范圍內(nèi)至少以硬件加以實(shí)現(xiàn):它們也是由處理器(硬件)執(zhí)行以執(zhí)行其相應(yīng)功能的軟件。為了在設(shè)備100內(nèi)處理數(shù)據(jù),使數(shù)據(jù)移動(dòng)通過(guò)管線102,如由箭頭106所指示的那樣。該處理與模式檢測(cè)不相關(guān)。即,使數(shù)據(jù)移動(dòng)通過(guò)管線102以對(duì)數(shù)據(jù)執(zhí)行處理的目的與模式檢測(cè)不相關(guān)。在數(shù)據(jù)移動(dòng)通過(guò)管線102時(shí)對(duì)數(shù)據(jù)執(zhí)行處理,其中,數(shù)據(jù)由管線102內(nèi)執(zhí)行的處理代理更改,該處理代理可以控制數(shù)據(jù)移動(dòng)通過(guò)管線102的速率。例如,在設(shè)備100是聯(lián)網(wǎng)設(shè)備(例如,交換機(jī)或路由器)的情況下,數(shù)據(jù)可以是從對(duì)于其而言設(shè)備100是網(wǎng)守(gateke印er)的網(wǎng)絡(luò)的外部接收到的輸入數(shù)據(jù)分組。管線102可以用于修改這些數(shù)據(jù)分組的報(bào)頭信息,從而使得將分組傳輸至網(wǎng)絡(luò)內(nèi)的合適設(shè)備。例如,可以將與萬(wàn)維網(wǎng)(WWW)請(qǐng)求相關(guān)的數(shù)據(jù)分組傳輸至網(wǎng)絡(luò)上的WWW服務(wù)器設(shè)備,可以將與文件傳輸協(xié)議(FTP)請(qǐng)求相關(guān)的數(shù)據(jù)分組傳輸至網(wǎng)絡(luò)上的FTP服務(wù)器設(shè)備,等等。因此,網(wǎng)絡(luò)上的外部設(shè)備可以將網(wǎng)絡(luò)視為具有單個(gè)聯(lián)網(wǎng)地址,而實(shí)際上,網(wǎng)絡(luò)由具有對(duì)應(yīng)(內(nèi)部)網(wǎng)絡(luò)地址的多個(gè)設(shè)備組成。因此,在該示例中,使用管線102將輸入數(shù)據(jù)分組的聯(lián)網(wǎng)地址更改為網(wǎng)絡(luò)上的要處理所述數(shù)據(jù)分組的設(shè)備的內(nèi)部網(wǎng)絡(luò)地址。輸入數(shù)據(jù)分組的聯(lián)網(wǎng)地址向內(nèi)部網(wǎng)絡(luò)地址的修改是可在管線102內(nèi)對(duì)這些數(shù)據(jù)分組執(zhí)行的處理的示例。然而,與在數(shù)據(jù)移動(dòng)通過(guò)管線102時(shí)的數(shù)據(jù)處理并行地,檢測(cè)器104在數(shù)據(jù)移動(dòng)通過(guò)管線102時(shí)在該數(shù)據(jù)內(nèi)檢測(cè)一個(gè)或多個(gè)模式,如由虛線108所指示的那樣。檢測(cè)器104能夠在不延遲數(shù)據(jù)進(jìn)入、通過(guò)和退出管線102的移動(dòng)的情況下,在數(shù)據(jù)移動(dòng)通過(guò)管線102時(shí)在該數(shù)據(jù)內(nèi)檢測(cè)至少一個(gè)模式。在管線102中執(zhí)行的數(shù)據(jù)處理與由檢測(cè)器104執(zhí)行的模式檢測(cè)無(wú)關(guān)。在無(wú)需等待檢測(cè)器104執(zhí)行其檢測(cè)的情況下,數(shù)據(jù)進(jìn)入、移動(dòng)通過(guò)并退出管線102。在該方面,圖1的示例能夠在不降低設(shè)備100的總體性能的情況下檢測(cè)至少一個(gè)模式。此外,圖1的示例不需要潛在地昂貴且功耗大的專用處理器來(lái)進(jìn)行模式檢測(cè)。更確切地,可以經(jīng)由與專用處理器相比消耗低得多的功率的低得多成本的硬件組件、以硬件方式實(shí)現(xiàn)檢測(cè)器104。圖1的示例的附加優(yōu)點(diǎn)在于:在至少一些情形中,進(jìn)入設(shè)備100的所有數(shù)據(jù)移動(dòng)通過(guò)管線102以供處理,從而使得檢測(cè)器104能夠在所有數(shù)據(jù)內(nèi)檢測(cè)至少一個(gè)模式。圖2更詳細(xì)地示出了根據(jù)本公開的示例的處理管線102。管線102包括多個(gè)行
202A、202B、202C、......、202N,通稱為行202。行202還可以被稱為管線102的級(jí)。行202A
是管線102的第一行,以及行202N是管線102的最后一行。管線102的每個(gè)行202存儲(chǔ)相同數(shù)目的字節(jié)。出于示例性目的,每個(gè)行202存儲(chǔ)8個(gè)字節(jié)。然而,每個(gè)行202可以存儲(chǔ)不同數(shù)目的字節(jié),諸如16個(gè)字節(jié)、32個(gè)字節(jié)等。管線寬度不限于2的冪次數(shù)目的字節(jié)。與每個(gè)行202可存儲(chǔ)的字節(jié)數(shù)目相等的數(shù)目的數(shù)據(jù)字節(jié)在第一行202A處進(jìn)入管線102,并逐行地行進(jìn)通過(guò)管線102,直到數(shù)據(jù)退出最后一行202N為止,如由箭頭106所指示的那樣。例如,第一 8個(gè)數(shù)據(jù)字節(jié)在第一行202A處進(jìn)入管線102。然后,這第一 8個(gè)數(shù)據(jù)字節(jié)向下級(jí)聯(lián)至第二行202B,并且同時(shí),第二 8個(gè)數(shù)據(jù)字節(jié)在第一行202A處進(jìn)入管線102。接著,第一 8個(gè)數(shù)據(jù)字節(jié)向下移動(dòng)至第三行202C,第二 8個(gè)字節(jié)向下移動(dòng)至第二行202B,以及第三8個(gè)數(shù)據(jù)字節(jié)在第一行202A處進(jìn)入管線。該過(guò)程繼續(xù),直到第一 8個(gè)數(shù)據(jù)字節(jié)進(jìn)入并且然后退出管線102的最后一行202N,緊接著,第二 8個(gè)字節(jié)進(jìn)入并且然后退出最后一行202N,依此類推。
在管線102的任何給定行202處,可以更改或處理數(shù)據(jù)。例如,如上所記錄的,在處理管線102是網(wǎng)守聯(lián)網(wǎng)設(shè)備100的一部分的情況下,可以更改數(shù)據(jù)分組的報(bào)頭信息。例如,可以利用聯(lián)網(wǎng)地址E.F.G.H來(lái)替換聯(lián)網(wǎng)地址A.B.C.D.聯(lián)網(wǎng)地址A.B.C.D指定了設(shè)備100作為其一部分的網(wǎng)絡(luò)作為整體的外部聯(lián)網(wǎng)地址。聯(lián)網(wǎng)地址E.F.G.H指定了要處理所討論的數(shù)據(jù)分組的網(wǎng)絡(luò)內(nèi)的設(shè)備的內(nèi)部聯(lián)網(wǎng)地址。在圖2中明確地標(biāo)注了行202的兩個(gè)特定行204和206,將與圖2相關(guān)地描述由檢測(cè)器 104 對(duì)模式的檢測(cè)。行 204 包括字節(jié) 208A、208B、208C、208D、208E、208F、208G 和 208H,起始于字節(jié)208A并結(jié)束于字節(jié)208H。行206包括字節(jié)2081、208J、208K、208L、208M、208N、2080和208P,起始于字節(jié)2081并結(jié)束于字節(jié)208P。在初步示例中,數(shù)據(jù)分組210被認(rèn)為由12個(gè)字節(jié)208C-208N組成,其在圖2中由陰影指示。注意,實(shí)際上,在至少一些情形中,數(shù)據(jù)分組更可能由更多數(shù)目的字節(jié)組成。圖2中對(duì)行204和206以及數(shù)據(jù)分組210的明確標(biāo)注示意了數(shù)據(jù)分組與管線102的行202相比較的兩個(gè)方面。第一,數(shù)據(jù)分組可以跨越多于一個(gè)行。例如,示例性數(shù)據(jù)分組210跨越行204和206。第二,數(shù)據(jù)分組不必起始于行的第一個(gè)字節(jié),也不必結(jié)束于行的最后一個(gè)字節(jié)。例如,示例性數(shù)據(jù)分組210起始于行204的第三字節(jié)208C,并結(jié)束于行206的第六字節(jié)208N。行204的第二字節(jié)208B可以是前一數(shù)據(jù)分組的結(jié)束字節(jié),并且行206的第七字節(jié)2080可以是下一數(shù)據(jù)分組的起始字節(jié)。圖3更詳細(xì)地示出了根據(jù)本公開的示例的檢測(cè)器104。此外,與圖3相關(guān)地描述了檢測(cè)器104可以如何代表性地檢測(cè)跨越處理管線102的行204和206的數(shù)據(jù)分組210中的一個(gè)或多個(gè)模式。檢測(cè)器104包括:存儲(chǔ)器302,存儲(chǔ)模式316、318 ;位掩碼324、326,其分別與模式316、318相關(guān)聯(lián);存儲(chǔ)器310,存儲(chǔ)與存儲(chǔ)器302中存儲(chǔ)的模式316、318中的每一個(gè)相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)集320、322 ;邏輯312 ;以及相關(guān)器304A、304B、304C、304D、304E、304F、304G和304H,其通稱為相關(guān)器304。盡管在圖3中僅描繪了兩個(gè)模式316、318和關(guān)聯(lián)位掩碼324、326,但是可以意識(shí)到,可替換地,可以存儲(chǔ)具有關(guān)聯(lián)位掩碼的僅一個(gè)模式,或者可以存儲(chǔ)具有關(guān)聯(lián)位掩碼的多于兩個(gè)模式。因此,由于參數(shù)與存儲(chǔ)器302中存儲(chǔ)的模式相對(duì)應(yīng),因而根據(jù)存儲(chǔ)器302中存儲(chǔ)的模式的數(shù)目,可以將一個(gè)參數(shù)或多于兩個(gè)參數(shù)存儲(chǔ)在存儲(chǔ)器310中。存儲(chǔ)器302存儲(chǔ)一個(gè)或多個(gè)模式316、318。模式316具有字節(jié)308A、308B、308C、308D、308E、308F、308G、308H 和 3081,其通稱為字節(jié) 308。該一個(gè)或多個(gè)模式 316、318的字節(jié)308的數(shù)目與管線102的每個(gè)行202中的字節(jié)的數(shù)目無(wú)關(guān)。在圖3中所描繪的示例中,在圖3的示例的存儲(chǔ)器302中的每個(gè)模式中存在9個(gè)字節(jié)308,但實(shí)際上,可以存在更多或更少這種字節(jié)308。模式316、318中的每一個(gè)與一個(gè)或多個(gè)模式部分相對(duì)應(yīng)。模式部分是模式的足以利用預(yù)定置信度標(biāo)識(shí)該模式的部分。例如,在模式316與具有字節(jié)308的一個(gè)模式部分相對(duì)應(yīng)的情況下,如果在數(shù)據(jù)內(nèi)發(fā)現(xiàn)所有字節(jié)308按照相同順序并具有相同值,則這意味著:該數(shù)據(jù)包含具有有著該預(yù)定置信度的該模式部分的模式。字節(jié)308的每個(gè)比特可以與兩種不同類型的比特之一相對(duì)應(yīng)。第一種類型的比特是具有特定值以由相關(guān)器304與字節(jié)308的其他比特相關(guān)地在數(shù)據(jù)內(nèi)檢測(cè)到的實(shí)際不期望的計(jì)算機(jī)代碼或信息比特。然而,第二種類型的比特是不用注意(do-not-care)比特。數(shù)據(jù)內(nèi)的對(duì)應(yīng)比特的身份對(duì)不用注意比特來(lái)說(shuō)無(wú)關(guān)緊要,并且對(duì)數(shù)據(jù)內(nèi)的模式檢測(cè)來(lái)說(shuō)不重要。這些不用注意比特是基于分別與模式316、318相關(guān)聯(lián)的位掩碼324、326來(lái)定義的。
例如,可能已知的是,給定類型的不期望的計(jì)算機(jī)代碼或信息具有以下代碼段:該代碼段包括特定值A(chǔ)的比特,后面兩比特下跟隨著特定值B的比特。然而,具有值A(chǔ)和B的比特中間的比特?zé)o足輕重,并對(duì)該類型的代碼的檢測(cè)來(lái)說(shuō)不重要。因此,將模式316的字節(jié)308內(nèi)的對(duì)應(yīng)比特設(shè)置為不用注意比特,以向相關(guān)器304指示該比特實(shí)際上不用于檢測(cè)數(shù)據(jù)內(nèi)的不期望的計(jì)算機(jī)代碼或信息。換言之,不用注意比特是占位符比特,用于指定在數(shù)據(jù)內(nèi)檢測(cè)模式過(guò)程中重要的其他比特的分離。該逐比特運(yùn)算的一個(gè)顯著用途是:對(duì)于由ASCII字符集(每個(gè)字節(jié)占一個(gè)字符)表示的英文字母表而言,大寫字符僅與其小寫對(duì)應(yīng)物有一比特區(qū)別。因此,可以通過(guò)將每個(gè)字節(jié)內(nèi)的特定比特標(biāo)記為不用注意比特,使模式區(qū)分大小寫變得不敏感。存儲(chǔ)器310存儲(chǔ)一個(gè)或多個(gè)參數(shù)集320、322。每個(gè)參數(shù)集可以與存儲(chǔ)器302中存儲(chǔ)的模式316、318之一相關(guān)聯(lián)。例如,參數(shù)集320可以與模式316相關(guān)聯(lián),參數(shù)集322可以與模式318相關(guān)聯(lián)等等。每個(gè)參數(shù)集可以包括一個(gè)或多個(gè)參數(shù),包括參考、起始、停止、匹配位置、匹配分組標(biāo)識(shí)(ID)和匹配。其他參數(shù)可以被存儲(chǔ)在存儲(chǔ)器302中并與存儲(chǔ)器302中的模式316、318相關(guān)聯(lián)。例如,關(guān)于參數(shù)集320,參考參數(shù)可以提供對(duì)數(shù)據(jù)分組中的起始參考點(diǎn)的指示以查找模式316。參考點(diǎn)可以是例如層2、層3或?qū)?報(bào)頭起始、存儲(chǔ)器302中的另一模式的或相對(duì)于該另一模式的匹配位置、分組有效載荷、分組有效載荷內(nèi)的特定位置等。起始參數(shù)可以提供相對(duì)于參考的具體字節(jié)位置,檢測(cè)器應(yīng)當(dāng)在該具體字節(jié)位置處開始查找模式316。例如,起始參數(shù)可以指示檢測(cè)器應(yīng)當(dāng)在參考參數(shù)之后四個(gè)字節(jié)開始查找模式316。這提供了以下可能性:搜索數(shù)據(jù)分組以得到具有數(shù)據(jù)分組內(nèi)的已知位置或與分組的感興趣部分或較早模式匹配相關(guān)的已知位置的模式。停止參數(shù)可以提供檢測(cè)器應(yīng)當(dāng)查找模式316的起始之后的字節(jié)的數(shù)目。通過(guò)提供起始和停止參數(shù),檢測(cè)器可以標(biāo)識(shí)檢測(cè)器將在其中查找數(shù)據(jù)分組內(nèi)的模式的字節(jié)的窗口或范圍。通過(guò)提供這種窗口或范圍,如果已知不期望的計(jì)算機(jī)代碼或信息的位置在數(shù)據(jù)分組的特定部分內(nèi),則檢測(cè)器可以聚焦于不期望的計(jì)算機(jī)代碼或信息的已知位置,并且在分組的非感興趣部分中檢測(cè)到模式的情況下,不生成“錯(cuò)誤肯定”通知。例如,檢測(cè)器104可以以特定已知位置(諸如層4報(bào)頭之后50-200個(gè)字節(jié)等)為目標(biāo)。如果檢測(cè)到模式316,則匹配位置參數(shù)存儲(chǔ)數(shù)據(jù)分組內(nèi)的檢測(cè)到模式的位置。匹配位置參數(shù)可以由與不同模式相關(guān)聯(lián)的參考參數(shù)指代。例如,模式318的參考參數(shù)可以指代模式316的匹配位置參數(shù)。因此,檢測(cè)器可以在與模式316的位置相關(guān)的位置中查找模式318。通過(guò)提供這種靈活性,可以檢測(cè)復(fù)雜的模式串。通過(guò)提供參考參數(shù)、起始參數(shù)和停止參數(shù),檢測(cè)器104可以以不期望的計(jì)算機(jī)代碼或信息的特定已知位置(諸如,從模式316的匹配位置起200-2000個(gè)字節(jié))為目標(biāo)。如果檢測(cè)到模式316,則匹配分組ID參數(shù)存儲(chǔ)其中檢測(cè)到模式316的分組的ID。這可以用于確保多個(gè)模式的模式匹配發(fā)生在相同分組內(nèi),而不在碰巧同時(shí)共存于數(shù)據(jù)管線中的兩個(gè)不同分組的不同部分上觸發(fā)。如果檢測(cè)到模式316,則匹配參數(shù)存儲(chǔ)找到匹配的指示。通過(guò)提供該參數(shù)集,可以檢測(cè)到復(fù)雜的模式串。例如,可以檢測(cè)到層3報(bào)頭中的模式X后跟隨著層4報(bào)頭中的模式Y(jié)、后又跟隨著分組的有效載荷中的模式Z。因此,由于檢測(cè)器可以確保在相同數(shù)據(jù)分組內(nèi)檢測(cè)到模式,因此可以減少錯(cuò)誤肯定。在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí),相關(guān)器304搜索數(shù)據(jù)。相關(guān)器304在數(shù)目上等于管線102的每個(gè)行202中的字節(jié)的數(shù)目。因此,在圖3的示例中,存在8個(gè)相關(guān)器304,這是由于在管線102的每個(gè)行202中存在8個(gè)字節(jié)。相關(guān)器304中的每一個(gè)檢測(cè)模式316的模式部分是否存在于數(shù)據(jù)內(nèi)、開始于行204中但在行204內(nèi)的不同起始字節(jié)位置處。即,相關(guān)器304A至304H具有與行內(nèi)的字節(jié)208A至208H的位置相對(duì)應(yīng)的起始字節(jié)位置,并因此分別具有O至7的唯一偏移。例如,相關(guān)器304A具有為O的偏移,并因此具有與行204的字節(jié)208A相對(duì)應(yīng)的起始字節(jié)位置。因此,相關(guān)器304A檢測(cè)模式316的字節(jié)308A至3081是否與行204和206的字節(jié)208A至2081相匹配,其中,字節(jié)208A至208H處于行204中,并且字節(jié)2081處于行206中。S卩,相關(guān)器304A檢測(cè)字節(jié)308A是否與字節(jié)208A相匹配、字節(jié)308B是否與字節(jié)208B相匹配、依此類推,至字節(jié)3081是否與字節(jié)2081相匹配。這些比較中的每一個(gè)由“不用注意”參數(shù)逐比特地加以標(biāo)記。通過(guò)比較,相關(guān)器304B具有為I的偏移,并因此具有與行204的字節(jié)208B相對(duì)應(yīng)的起始字節(jié)位置。因此,相關(guān)器檢測(cè)模式316的字節(jié)308A至3081是否與字節(jié)208B至208J相匹配。即,相關(guān)器304B檢測(cè)字節(jié)308A是否與字節(jié)208B相匹配、字節(jié)308B是否與字節(jié)208C相匹配、依此類推,至字節(jié)3081是否與字節(jié)208J相匹配。因此,鑒于相關(guān)器304A確定模式316的字節(jié)308是否存在于行204和206內(nèi)、起始于字節(jié)208A處,相關(guān)器304B確定字節(jié)308是否存在于行204和206內(nèi)、起始于字節(jié)208B處。類似地,相關(guān)器304C具有為2的偏移,并因此確定字節(jié)308是否存在、起始于字節(jié)208C處,相關(guān)器304D具有為3的偏移,并確定字節(jié)308是否存在、起始于字節(jié)208D處,依此類推。由于相關(guān)器304的數(shù)目等于管線102的每個(gè)行202中的字節(jié)的數(shù)目,因此相關(guān)器304可以檢測(cè)模式316的字節(jié)308是否存在于行204和206中的對(duì)應(yīng)字節(jié)序列中(即,按照相同順序并具有相同值),而不論序列起始于行204內(nèi)的何處。如果字節(jié)308的序列起始于行204中的字節(jié)208A處,則相關(guān)器304A檢測(cè)到模式316,并且如果字節(jié)308的序列起始于行204中的字節(jié)208B處,則相關(guān)器304B檢測(cè)到模式316。類似地,如果字節(jié)308的序列起始于行204中的給定字節(jié)208C至208H處,則具有與行204中的該字節(jié)相對(duì)應(yīng)的起始字節(jié)位置的相關(guān)器304C至308H檢測(cè)到模式316。在圖3的示例中,由于該數(shù)據(jù)跨越管線102的行204和206 二者,因此每個(gè)相關(guān)器304檢測(cè)在數(shù)據(jù)內(nèi)是否存在模式316的模式部分。然而,一般地,根據(jù)模式316內(nèi)的字節(jié)308的數(shù)目和管線102的每行202內(nèi)的字節(jié)的數(shù)目,可以不存在跨越管線102的多于一行202的相關(guān)器??商鎿Q地,可以存在跨越管線102的兩行202或多于兩行202的一個(gè)或多個(gè)相關(guān)器。如上所示,每個(gè)模式具有關(guān)聯(lián)的參數(shù)集。因此,相關(guān)器304可以基于與每個(gè)模式相關(guān)聯(lián)的參數(shù)來(lái)檢測(cè)每個(gè)模式。相關(guān)器304可以基于關(guān)聯(lián)的參考、起始和停止參數(shù)來(lái)查找模式316。例如,如果模式316具有指示數(shù)據(jù)有效載荷的起始的參考參數(shù)、從數(shù)據(jù)有效載荷的起始起I字節(jié)的起始參數(shù)、和從起始參數(shù)起200個(gè)字節(jié)的停止參數(shù),則(一個(gè)或多個(gè))適當(dāng)?shù)南嚓P(guān)器304可以在如關(guān)聯(lián)參數(shù)集中定義的窗口或范圍處進(jìn)行搜索,以檢測(cè)模式316。每個(gè)相關(guān)器304提供其已與模式316相匹配的數(shù)據(jù)的字節(jié)的數(shù)目,并且檢測(cè)器104基于已與模式316相匹配的數(shù)據(jù)的字節(jié)的該數(shù)目來(lái)指示已經(jīng)在數(shù)據(jù)內(nèi)檢測(cè)到模式。例如,在一個(gè)實(shí)施例中,僅當(dāng)給定的相關(guān)器308將模式316的所有字節(jié)與數(shù)據(jù)的對(duì)應(yīng)字節(jié)相匹配時(shí),檢測(cè)器104才指示已經(jīng)檢測(cè)到模式。作為其他示例,以及在其他實(shí)施例中,可以采用可編程閾值字節(jié)數(shù)或者所匹配的字節(jié)數(shù)相對(duì)于模式316內(nèi)的字節(jié)308的總數(shù)的閾值百分比,來(lái)決定是否指示已經(jīng)檢測(cè)到模式。還可以在不同時(shí)刻處將不同模式存儲(chǔ)在存儲(chǔ)器302中作為模式316。因此,相關(guān)器304可以在不同時(shí)刻處在移動(dòng)通過(guò)管線102的數(shù)據(jù)內(nèi)檢測(cè)不同模式。這在以下情況下可能是有用的:在存在針對(duì)其而測(cè)試數(shù)據(jù)的大量的模式的情況下,以及在這樣的情況下:如果一個(gè)數(shù)據(jù)分組感染有給定類型的模式,則其他數(shù)據(jù)分組很可能感染有相同類型的模式,因此,當(dāng)模式316被配置為查找不同模式時(shí),錯(cuò)過(guò)對(duì)某些分組的檢測(cè)可能是可接受的,只要一旦模式316被恢復(fù)至感興趣的模式,其就可以在未來(lái)分組中檢測(cè)模式即可。然而,如果先驗(yàn)地已知給定類型的模式在任何給定時(shí)刻處更危險(xiǎn)或更盛行,則可以在模式316內(nèi)保留與這種類型的模式相對(duì)應(yīng)的模式,而同時(shí)通過(guò)例如模式318輪轉(zhuǎn)與其他類型的模式相對(duì)應(yīng)的其他模式。在一個(gè)示例中,模式316內(nèi)的每個(gè)模式部分的字節(jié)308可能必須存在于處理管線102中的數(shù)據(jù)的相同數(shù)據(jù)分組內(nèi)。在圖3的示例中,如果字節(jié)308A至308D與給定的模式部分相對(duì)應(yīng),則僅相關(guān)器304C至304H能夠在這種情形中檢測(cè)到該模式部分,而相關(guān)器304A和304B不能。這是由于關(guān)于這四個(gè)字節(jié)308A至308D的相關(guān)器304A和304D跨越兩個(gè)數(shù)據(jù)分組,而不是僅跨越數(shù)據(jù)分組210。通過(guò)比較,相關(guān)器304C至304H僅跨越數(shù)據(jù)分組210。由相關(guān)器340執(zhí)行的比較相對(duì)較快,這是由于每個(gè)相關(guān)器304僅必須將開始于行204內(nèi)的對(duì)應(yīng)起始字節(jié)位置處的數(shù)據(jù)與模式316的字節(jié)308進(jìn)行比較。例如,相關(guān)器304的一個(gè)實(shí)施方式可以是與模式316的比特(與字節(jié)形成對(duì)照)的總數(shù)相等數(shù)目的比較器。因此,盡管檢測(cè)器104不具有沿行202向下延遲數(shù)據(jù)通過(guò)管線102的移動(dòng)的能力,但是這不是對(duì)實(shí)施方式的阻礙,這是由于可以快速進(jìn)行比較。比較器也是實(shí)現(xiàn)起來(lái)相對(duì)較便宜的硬件組件,特別是與專用處理器相比。設(shè)備104還包括邏輯312。邏輯312可以被實(shí)現(xiàn)為多個(gè)邏輯選擇塊。邏輯選擇塊的數(shù)目可以與存儲(chǔ)器302中存儲(chǔ)的模式的數(shù)目相對(duì)應(yīng)。邏輯選擇塊可以用于執(zhí)行任何邏輯運(yùn)算,例如AND (與)、0R (或)、Ν0Τ (非)、N0R (或非)、XOR (異或)、XNOR (同或)、NAND (與非)等??梢酝ㄟ^(guò)將這些邏輯運(yùn)算中的兩個(gè)或更多個(gè)串在一起來(lái)定義其他更復(fù)雜的運(yùn)算,例如匹配模式I與模式3非模式5等??梢允褂糜脩艚缑?未示出)來(lái)定義一個(gè)或多個(gè)功能。該一個(gè)或多個(gè)功能可以利用邏輯選擇塊,以基于指示在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí)是否在數(shù)據(jù)內(nèi)發(fā)現(xiàn)存儲(chǔ)器302中的模式中的一個(gè)或多個(gè)的匹配的匹配參數(shù)和匹配分組ID參數(shù)來(lái)執(zhí)行邏輯運(yùn)算。這提供了在每個(gè)分組的數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)管線102時(shí)在該每個(gè)分組的數(shù)據(jù)內(nèi)搜索復(fù)雜模式的能力。圖4描繪了用于執(zhí)行與關(guān)于圖1-3提供的描述相一致的模式檢測(cè)的方法400的流程圖。檢測(cè)器確定與第一模式相關(guān)聯(lián)的參考(402)。在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí),檢測(cè)器基于所確定的參考,在管線中的數(shù)據(jù)內(nèi)檢測(cè)第一模式(404)。檢測(cè)器與在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí)的數(shù)據(jù)處理并行地以及在不延遲數(shù)據(jù)進(jìn)入、通過(guò)和退出管線的移動(dòng)的情況下檢測(cè)第一模式。檢測(cè)器存儲(chǔ)與檢測(cè)到的第一模式的位置相關(guān)聯(lián)的信息(406)。
對(duì)已經(jīng)在數(shù)據(jù)內(nèi)檢測(cè)到模式的確定可以基于已與該模式相匹配的數(shù)據(jù)的每個(gè)重疊部分的字節(jié)的數(shù)目。例如,如果基于關(guān)聯(lián)的參考參數(shù),模式316與開始于行204內(nèi)的起始字節(jié)位置處的管線102內(nèi)的數(shù)據(jù)的重疊部分中的任一個(gè)相匹配(即,所有字節(jié)308匹配于與字節(jié)308相同的序列中的數(shù)據(jù)內(nèi)的對(duì)應(yīng)比特),則已經(jīng)檢測(cè)到模式316。然而,如果模式316不與開始于行204內(nèi)的起始字節(jié)位置處的管線102內(nèi)的數(shù)據(jù)的重疊部分中的任一個(gè)相匹配,則在該示例中,尚未檢測(cè)到模式。一旦已經(jīng)檢測(cè)到模式,就存儲(chǔ)標(biāo)識(shí)在何處檢測(cè)到第一模式的字節(jié)位置和分組標(biāo)識(shí)信息。如果指示模式316的匹配的字節(jié)位置的匹配位置被存儲(chǔ)為與模式318相關(guān)聯(lián)的參考,則使用模式316的字節(jié)位置來(lái)查找模式318。因此,可以基于與模式318相關(guān)聯(lián)的參考(即,模式316的匹配或字節(jié)位置)來(lái)檢測(cè)模式318。如果檢測(cè)到模式318,則存儲(chǔ)標(biāo)識(shí)在何處檢測(cè)到模式318的字節(jié)位置和分組標(biāo)識(shí)信息??梢曰谒鎯?chǔ)的模式的檢測(cè)或缺乏檢測(cè),利用邏輯運(yùn)算符,來(lái)執(zhí)行邏輯運(yùn)算或功能。
權(quán)利要求
1.一種設(shè)備,包括: 至少以硬件實(shí)現(xiàn)的管線,數(shù)據(jù)移動(dòng)通過(guò)所述管線,以執(zhí)行與模式檢測(cè)不相關(guān)的對(duì)所述數(shù)據(jù)的處理;以及 至少以硬件實(shí)現(xiàn)的檢測(cè)器,用于與所述數(shù)據(jù)移動(dòng)通過(guò)所述管線時(shí)的數(shù)據(jù)處理并行地、以及在不延遲所述數(shù)據(jù)通過(guò)所述管線的移動(dòng)的情況下,在所述數(shù)據(jù)移動(dòng)通過(guò)所述管線時(shí)在所述數(shù)據(jù)內(nèi)的預(yù)定第一位置處檢測(cè)第一模式。
2.根據(jù)權(quán)利要求1所述的設(shè)備,還包括: 存儲(chǔ)器,其用于存儲(chǔ)所述第一模式和與所述第一模式相關(guān)聯(lián)的位掩碼,所述位掩碼標(biāo)識(shí)了關(guān)聯(lián)的第一模式的不用注意比特,其中,所述檢測(cè)器將基于除所述不用注意比特外的比特來(lái)檢測(cè)所述第一模式。
3.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述預(yù)定第一位置標(biāo)識(shí)了對(duì)所述檢測(cè)器能夠在所述數(shù)據(jù)中的何處檢測(cè)到所述第一模式的參考,所述參考標(biāo)識(shí)了多個(gè)層報(bào)頭之一、分組有效載荷和第二模式的匹配位置,以及其中,第一位置還標(biāo)識(shí)了相對(duì)于所述參考的起始點(diǎn)和相對(duì)于所述起始點(diǎn)的停止點(diǎn),以標(biāo)識(shí)所述檢測(cè)器能夠在其中檢測(cè)到所述第一模式的字節(jié)窗□。
4.根據(jù)權(quán)利要求1所述的設(shè)備,其中,在檢測(cè)到所述第一模式時(shí),所述檢測(cè)器將存儲(chǔ)分組中的在其處檢測(cè)到所述第一模式的第一字節(jié)位置。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述檢測(cè)器將基于在其處檢測(cè)到所述第一模式的第一字節(jié)位置來(lái)定義第二位置,以及其中,所述檢測(cè)器將存儲(chǔ)在其處檢測(cè)到所述第二模式的第二字節(jié)位置,所述第二模式是基于所定義的第二位置而檢測(cè)的。
6.根據(jù)權(quán)利要求4所述 的設(shè)備,其中,當(dāng)檢測(cè)到所述第一模式時(shí),所述檢測(cè)器將存儲(chǔ)標(biāo)識(shí)分組的分組標(biāo)識(shí)信息。
7.根據(jù)權(quán)利要求5所述的設(shè)備,其中,所述檢測(cè)器包括用于基于所述第一模式的檢測(cè)和所述第二模式的檢測(cè)執(zhí)行運(yùn)算的邏輯。
8.一種方法,包括: 確定與第一模式相關(guān)聯(lián)的參考; 基于所確定的參考,在管線中的數(shù)據(jù)內(nèi)檢測(cè)所述第一模式,所述檢測(cè)是與所述數(shù)據(jù)移動(dòng)通過(guò)所述管線時(shí)的數(shù)據(jù)處理并行且在不延遲所述數(shù)據(jù)進(jìn)入、通過(guò)和退出所述管線的移動(dòng)的情況下執(zhí)行的;以及 存儲(chǔ)與檢測(cè)到的第一模式的位置相關(guān)聯(lián)的信息。
9.根據(jù)權(quán)利要求8所述的方法,還包括: 存儲(chǔ)標(biāo)識(shí)在何處檢測(cè)到所述第一模式的字節(jié)位置和分組標(biāo)識(shí)信息; 將所述字節(jié)位置存儲(chǔ)為與第二模式相關(guān)聯(lián)的參考;以及 基于與所述第二模式相關(guān)聯(lián)的參考,在所述管線中檢測(cè)所述第二模式。
10.根據(jù)權(quán)利要求8所述的方法,其中,所述參考標(biāo)識(shí)了多個(gè)層報(bào)頭之一、分組有效載荷和第二模式的匹配位置。
11.根據(jù)權(quán)利要求8所述的方法,還包括: 將相對(duì)于所述參考的起始點(diǎn)和相對(duì)于所述起始點(diǎn)的停止點(diǎn)與所述第一模式相關(guān)聯(lián),以標(biāo)識(shí)能夠在其中檢測(cè)到所述第一模式的字節(jié)窗口。
12.根據(jù)權(quán)利要求8所述的方法,還包括: 基于所述第一模式和所述第二模式的檢測(cè)來(lái)執(zhí)行邏輯運(yùn)算。
13.—種設(shè)備,包括: 存儲(chǔ)設(shè)備,以硬件實(shí)現(xiàn),用于存儲(chǔ): 具有預(yù)定數(shù)目的字節(jié)的長(zhǎng)度的多個(gè)模式;以及 與所述多個(gè)模式中的每一個(gè)相關(guān)聯(lián)的多個(gè)參數(shù),所述多個(gè)參數(shù)包括標(biāo)識(shí)在何處檢測(cè)所述多個(gè)模式中的關(guān)聯(lián)的每個(gè)模式的參考、起始和停止;以及 多個(gè)相關(guān)器,以硬件實(shí)現(xiàn)并在數(shù)目上等于管線的多個(gè)行中的每個(gè)行的字節(jié)的數(shù)目, 每個(gè)相關(guān)器將提供已與所述多個(gè)模式中的一個(gè)或多個(gè)相匹配的數(shù)據(jù)的字節(jié)的數(shù)目, 每個(gè)相關(guān)器具有唯一的偏移,以開始于所述管線的給定行內(nèi)的數(shù)據(jù)的不同起始字節(jié)位置處,檢測(cè)所述多個(gè)模式中的一個(gè)或多個(gè),以及 每個(gè)相關(guān)器用于提供已與所述多個(gè)模式中的一個(gè)或多個(gè)相匹配的所述數(shù)據(jù)的字節(jié)的數(shù)目;以及 其中,將所述多個(gè)模式中的一個(gè)模式指示為已由每個(gè)相關(guān)器基于已與該模式相匹配的所述數(shù)據(jù)的字節(jié)的數(shù)目在所述數(shù)據(jù)內(nèi)檢測(cè)到。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中,所述參考標(biāo)識(shí)了多個(gè)層報(bào)頭之一、分組有效載荷和所述多個(gè)模式中的第二模式 的匹配位置,以及其中,所述起始表示分組中相對(duì)于所述參考的起始點(diǎn),并且所述停止表示相對(duì)于所述起始點(diǎn)的停止點(diǎn),以標(biāo)識(shí)能夠在其中檢測(cè)到所述多個(gè)模式中的每一個(gè)的字節(jié)窗口。
15.根據(jù)權(quán)利要求14所述的設(shè)備,還包括用于基于檢測(cè)到的模式執(zhí)行運(yùn)算的邏輯。
全文摘要
在執(zhí)行與模式檢測(cè)不相關(guān)的數(shù)據(jù)處理時(shí),使數(shù)據(jù)移動(dòng)通過(guò)管線。與數(shù)據(jù)移動(dòng)通過(guò)管線時(shí)的數(shù)據(jù)處理并行地,檢測(cè)器在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí)在預(yù)定位置處或者基于預(yù)定參考來(lái)在該數(shù)據(jù)內(nèi)檢測(cè)模式。檢測(cè)器在不延遲數(shù)據(jù)進(jìn)入、通過(guò)和退出管線的移動(dòng)的情況下,在數(shù)據(jù)移動(dòng)通過(guò)管線時(shí)在該數(shù)據(jù)內(nèi)檢測(cè)模式。
文檔編號(hào)G06F9/06GK103154884SQ201080069855
公開日2013年6月12日 申請(qǐng)日期2010年10月27日 優(yōu)先權(quán)日2010年10月27日
發(fā)明者D.A.沃倫, B.E.拉維涅 申請(qǐng)人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)