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

用于深度包過濾的可編程硬件的制作方法

文檔序號(hào):7634743閱讀:205來源:國知局
專利名稱:用于深度包過濾的可編程硬件的制作方法
用于深度包過濾的可編程硬件 有關(guān)聯(lián)邦政府主辦的研究/開發(fā)的聲明本發(fā)明是在由國家科學(xué)基金會(huì)授予的許可No.0220100下,在政 府支持下做出的。政府對(duì)本發(fā)明具有一定的權(quán)利。
背景技術(shù)
盛行的網(wǎng)絡(luò)病毒表明僅檢查網(wǎng)絡(luò)包報(bào)頭的傳統(tǒng)的防火墻不足以 防止入侵計(jì)算機(jī)。許多新的攻擊以各種動(dòng)態(tài)位置隱藏在包的有效載荷 部分中,而不是靜態(tài)報(bào)頭部分中。例如,在互聯(lián)網(wǎng)中發(fā)現(xiàn)的許多最新 蠕蟲病毒是嵌入未知位置的包有效載荷中的應(yīng)用級(jí)攻擊。這些攻擊的 包報(bào)頭可以不表明該包是非法的,事實(shí)上,可能出現(xiàn)為合法包。因此, 期望具有一種安全系統(tǒng),包含深度包檢查單元,也稱為多層檢查單元, 不僅檢查靜態(tài)包報(bào)頭,而且監(jiān)聽整個(gè)有效載荷以便搜索預(yù)定模式。圖1是典型的多層檢查系統(tǒng)的框圖。該系統(tǒng)包括多層檢查單元 10,其獲得輸入包20,以及相對(duì)于所有包過濾器模式30檢查包的3-7 層。如果模式30的任何一個(gè)與3-7層中的信息匹配,則不允許該包通 過。否則,允"^午該包通過。多層檢查單元20可以實(shí)現(xiàn)為運(yùn)行基于規(guī)則的包過濾軟件的一個(gè) 或多個(gè)通用處理器。然而,由于由軟件系統(tǒng)使用的窮舉模式檢測(cè)算法, 通常該軟件難以過濾1Gbps或更高的高速網(wǎng)絡(luò)業(yè)務(wù)。特別地,因?yàn)樵?模式的位置不是預(yù)定的,因此在檢索過程期間,必須從有效載荷的每 一字節(jié)對(duì)齊開始來比較這些模式。因此,基于規(guī)則的包過濾軟件與這 種高速網(wǎng)絡(luò)一起使用是不實(shí)際的?,F(xiàn)有技術(shù)中存在支持更快網(wǎng)絡(luò)的定制硬件芯片。盡管基于包的靜 態(tài)字段的搜索,這些芯片有效地用作包分類器,但對(duì)深度包過濾器所 需的動(dòng)態(tài)模式搜索來說,它們是不佳的候選。這主要由于在Von
Neuman體系結(jié)構(gòu)上運(yùn)行的基本的按序算法,當(dāng)所需模式校驗(yàn)的數(shù)量 增加時(shí),最終導(dǎo)致性能瓶頸。因此,需要一種用于高速網(wǎng)絡(luò)的改進(jìn)的深度包過濾器系統(tǒng)。發(fā)明內(nèi)容本發(fā)明涉及深度包過濾器,包括前綴搜索邏輯,其被配置成比較 輸入數(shù)據(jù)的第一非報(bào)頭部分與前綴模式。該過濾器還包括存儲(chǔ)多個(gè)后 綴模式的存儲(chǔ)器;以及基于輸入數(shù)據(jù)的第一非報(bào)頭部分與前綴模式的 匹配,生成后綴索引的地址編碼器。該過濾器進(jìn)一步包括比較器邏輯, 其被配置成比較輸入數(shù)據(jù)的第二非報(bào)頭部分與基于所生成的后綴索引 識(shí)別的后綴模式?;诘诙菆?bào)頭部分的比較,允許輸入數(shù)據(jù)通過或 不允許輸入數(shù)據(jù)通過。根據(jù)一個(gè)實(shí)施例,前綴搜索邏輯同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭 部分和多個(gè)前綴模式。這可以通過同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部 分的多個(gè)字節(jié)與多個(gè)前綴模式的每一個(gè)的多個(gè)字節(jié)來實(shí)現(xiàn)。根據(jù)一個(gè)實(shí)施例,前綴搜索邏輯同時(shí)比較輸入數(shù)據(jù)的第 一 非報(bào)頭 部分的多個(gè)字節(jié)與多個(gè)前綴模式的每一個(gè)的不同字節(jié)對(duì)齊。根據(jù)一個(gè)實(shí)施例,前綴搜索邏輯包括用于檢測(cè)前綴模式的特定子 串的解碼器鏈。為優(yōu)化目的,用于檢測(cè)特定子串的解碼器鏈可以由配置成檢測(cè)包括特定子串的不同前綴模式的多個(gè)前綴搜索邏輯單元共享。根據(jù)一個(gè)實(shí)施例,在單個(gè)現(xiàn)場(chǎng)可編程門陣列上實(shí)現(xiàn)前綴搜索邏 輯、存儲(chǔ)器、用于生成后綴索引的裝置以及比較器邏輯。根據(jù)一個(gè)實(shí)施例,存儲(chǔ)器存儲(chǔ)排序后綴模式的列表,其中,將該 列表的偶數(shù)項(xiàng)中的模式從存儲(chǔ)器的第一項(xiàng)存儲(chǔ)到最后一項(xiàng),以及將該 列表中的奇數(shù)項(xiàng)中的模式從存儲(chǔ)器的最后一項(xiàng)存儲(chǔ)到第 一項(xiàng)。根據(jù)一個(gè)實(shí)施例,地址編碼器基于由耦合到前綴搜索邏輯的輸出 的OR門的二進(jìn)制樹導(dǎo)出的邏輯等式,生成后綴索引的每一位。根據(jù)一個(gè)實(shí)施例,前綴搜索邏輯表示字節(jié)對(duì)齊,以及比較器邏輯 包括用于根據(jù)所表示的字節(jié)對(duì)齊移位輸入數(shù)據(jù)的第二非報(bào)頭部分的移 位器。根據(jù)一個(gè)實(shí)施例,輸入數(shù)據(jù)的第一和第二非報(bào)頭部分是數(shù)據(jù)的有 效載荷部分。根據(jù)另一實(shí)施例,本發(fā)明涉及深度包過濾方法,包括將多個(gè)模式劃分成前綴部分和后綴部分;將多個(gè)模式的每一個(gè)的后綴部分存儲(chǔ)在 存儲(chǔ)器中;同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部分的至少一部分與多個(gè) 模式的每一個(gè)的前綴部分的至少一部分;基于輸入數(shù)據(jù)的第一非報(bào)頭 部分與特定模式的前綴部分的匹配,生成后綴索引;基于后綴索引, 識(shí)別在存儲(chǔ)器中存儲(chǔ)的特定模式的后綴部分;比較輸入數(shù)據(jù)的第二非 報(bào)頭部分與所識(shí)別的后綴部分;以及基于第二非報(bào)頭部分與所識(shí)別的 后綴部分的比較,轉(zhuǎn)發(fā)輸入數(shù)據(jù)或不轉(zhuǎn)發(fā)輸入數(shù)據(jù)。當(dāng)參考下述詳細(xì)描述、附加權(quán)利要求和附圖進(jìn)行考慮時(shí),將更全 面地理解本發(fā)明的這些和其他特征、方面和優(yōu)點(diǎn)。當(dāng)然,本發(fā)明的實(shí) 際范圍由附加權(quán)利要求限定。


圖l是典型的多層檢查系統(tǒng)的框圖;圖2描述根據(jù)本發(fā)明的示例性實(shí)施例,采用改進(jìn)的深度包過濾器 系統(tǒng)的網(wǎng)絡(luò);圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖l的改進(jìn)的深度包過濾器系 統(tǒng)的示意框圖;圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于解碼器的模式搜索引擎的 操作圖;圖5A示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,分別配置成校驗(yàn)以不同字節(jié)對(duì)齊的模式"B AB AB "和"AB AB ,,的兩個(gè)基于解碼器的模式搜索引擎;圖5B示例說明圖5A的子串比較器組,但去除重復(fù)組;圖6A示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,搜索去除重復(fù)比較器 的模式"ABCDEF,、 "ABCXXX"和"ABCYYY,,的子串比較器組;圖6B示例說明用于搜索模式"ABCDEF" 、 "ABCXXX"和 "ABCYYY,,的比較器的崩潰的(collapse)流水線鏈;圖7A示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,將15位輸入編碼成4 位索引的OR門的示例性二進(jìn)制樹;圖7B示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,在D-觸發(fā)器后,具有 由1個(gè)四輸入門替代的2個(gè)雙輸入門的流水線OR樹;圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于存儲(chǔ)器的模式搜索引擎的框圖;圖9示例說明劃分成前綴部分和后綴部分的輸入數(shù)據(jù),其中,由 前綴搜索引擎匹配前綴部分以便生成存儲(chǔ)輸入數(shù)據(jù)的相應(yīng)的前綴部分 的只讀存儲(chǔ)器中的地址;圖IO是根據(jù)本發(fā)明的一個(gè)實(shí)施例,包括在圖8的基于存儲(chǔ)器的 模式搜索引擎中的前綴搜索引擎的更詳細(xì)框圖;圖11示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于改進(jìn)存儲(chǔ)器利用 率的機(jī)制;圖12是根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于與圖8的基于存儲(chǔ)器的模式搜索引擎的存儲(chǔ)器一起使用的包裝器邏輯的示意框圖;圖13是根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖8的基于存儲(chǔ)器的模式搜 索引擎的比較器模塊的示意框圖;以及圖14是根據(jù)本發(fā)明的一個(gè)實(shí)施例,結(jié)合圖4-6的基于解碼器的 設(shè)計(jì)和圖8-13的基于存儲(chǔ)器的設(shè)計(jì)的模式搜索引擎的框圖。
具體實(shí)施方式
本發(fā)明針對(duì)設(shè)計(jì)成優(yōu)化用于高速網(wǎng)絡(luò)業(yè)務(wù),諸如例如1Gbps或 更高的網(wǎng)絡(luò)業(yè)務(wù)的動(dòng)態(tài)模式的搜索的改進(jìn)的深度包過濾器系統(tǒng)。根據(jù) 一個(gè)實(shí)施例,經(jīng)硬件實(shí)現(xiàn)改進(jìn)的深度包過濾器系統(tǒng)。這種基于硬件的 系統(tǒng)的設(shè)計(jì)的一個(gè)挑戰(zhàn)是通常需要大量邏輯資源以便支持大的模式 集??梢岳缬赏ǔ7Q為Snort的開源網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)提供這種模 式集.根據(jù)一個(gè)實(shí)施例,該改進(jìn)系統(tǒng)通過應(yīng)用多個(gè)優(yōu)化技術(shù),降低硬件 的所需邏輯區(qū)域。 一種優(yōu)化技術(shù)是在硬件設(shè)計(jì)中共享公共子邏輯以便 降低所使用的門的數(shù)量。另 一優(yōu)化技術(shù)是使用內(nèi)置存儲(chǔ)器來存儲(chǔ)也會(huì) 導(dǎo)致門降低的模式集的部分。降低邏輯區(qū)域允許通過單個(gè)芯片實(shí)現(xiàn)深度包過濾器系統(tǒng)。因?yàn)橥?過新病毒和蠕蟲的出現(xiàn),不斷更新用于入侵檢測(cè)的模式集,期望用來 快速和容易重新編程的芯片。因此,在本發(fā)明的一個(gè)實(shí)施例中,所使用的芯片是單個(gè)現(xiàn)場(chǎng)可編程門陣列(FPGA)。然而,本領(lǐng)域的技術(shù) 人員應(yīng)當(dāng)意識(shí)到本發(fā)明不限于FPGA,以及也可以使用允許快速和容 易重新編程的其它類似的芯片。圖2描述根據(jù)本發(fā)明的示例性實(shí)施例,其中采用改進(jìn)的深度包過 濾器系統(tǒng)的網(wǎng)絡(luò)。在所示的網(wǎng)絡(luò)中,經(jīng)不可靠介質(zhì)40,諸如例如互聯(lián) 網(wǎng)傳送包,以及由配置成防止設(shè)備50,諸如例如局域網(wǎng)中的設(shè)備的網(wǎng) 絡(luò)免受入侵的防火墻45接收和檢查所述包。根據(jù)一個(gè)實(shí)施例,防火墻 具有改進(jìn)的深度包檢查系統(tǒng)60,其不僅檢查包的報(bào)頭,而且檢查用于 確定該包應(yīng)當(dāng)被丟失還是允許通過的有效載荷部分。根據(jù)一個(gè)實(shí)施例, 防火墻還具有其他傳統(tǒng)的入侵檢測(cè)和防止機(jī)制,用于補(bǔ)充改進(jìn)的深度 包檢查系統(tǒng)60。在本發(fā)明的一個(gè)實(shí)施例中,改進(jìn)的深度包檢查系統(tǒng)也可以包含在 高速路由器或交換機(jī)中。通過將該系統(tǒng)包含在這種路由器或交換機(jī)中, 可以過濾出許多已知的應(yīng)用級(jí)攻擊。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的改進(jìn)的深度包過濾器系統(tǒng)60 的示意性框圖。示例性深度包過濾器系統(tǒng)由并行連接的各種檢查模塊 100a-100n (統(tǒng)稱為100)組成。用這種方式,每一檢查模塊在每一時(shí) 鐘周期,同時(shí)將輸入數(shù)據(jù)的一部分與給定的目標(biāo)模式集(也稱為規(guī)則 或特征)進(jìn)行比較。根據(jù)一個(gè)實(shí)施例,每一檢查模塊包括用于實(shí)現(xiàn)單 個(gè)Snort規(guī)則特征的邏輯。經(jīng)32位總線100,將輸入包數(shù)據(jù)102傳遞到32位寄存器112。
在寄存器中存儲(chǔ)的數(shù)據(jù)然后同時(shí)轉(zhuǎn)發(fā)到檢查模塊lOOa-lOOn,用于匹 配。根據(jù)本發(fā)明的一個(gè)實(shí)施例,每一檢查模塊100配置有動(dòng)態(tài)模式搜 索引擎104,其將輸入數(shù)據(jù)的有效載荷部分與特定規(guī)則模式進(jìn)行比較, 并將結(jié)果提供給地址編碼器108。根據(jù)本發(fā)明的一個(gè)實(shí)施例,搜索引 擎104包括各種可配置離散邏輯的并行流水線系列。地址編碼器108從每一檢查模塊接收匹配表示,以及輸出表示被 檢測(cè)模式的模式ID。另外,地址編碼器108可以由簡(jiǎn)單地表示是否已 經(jīng)實(shí)現(xiàn)匹配的OR門代替。然后,使用匹配表示來修改用戶和/或丟棄 輸入包。動(dòng)態(tài)模式搜索引擎104也可以與在輸入數(shù)據(jù)的靜態(tài)報(bào)頭分中搜索 特定類型的報(bào)頭信息的一個(gè)或多個(gè)靜態(tài)報(bào)頭檢測(cè)器106a-106d —起工 作?;谒鶛z測(cè)的報(bào)頭信息,可以啟動(dòng)或禁止動(dòng)態(tài)模式搜索引擎104 的深度包檢查。例如,靜態(tài)報(bào)頭檢測(cè)器可以搜索特定物理地址、協(xié)議、 IP地址、端口號(hào)等等。根據(jù)本發(fā)明的一個(gè)實(shí)施例,動(dòng)態(tài)模式搜索引擎104被實(shí)現(xiàn)為配置 成以不同字節(jié)偏移量搜索特定模式的流水線檢測(cè)器鏈。圖4是根據(jù)本 發(fā)明的一個(gè)實(shí)施例,基于解碼器的模式搜索引擎104a的操作圖。搜索 引擎104a包括流水線子串比較器鏈200,子串比較器用于將輸入數(shù)據(jù) 與特定特征比較。根據(jù)一個(gè)實(shí)施例,由于使用可重構(gòu)邏輯,可以用檢 測(cè)數(shù)據(jù)的一個(gè)字節(jié)的8-1解碼器實(shí)現(xiàn)每個(gè)單獨(dú)的比較器202。配置所示的基于解碼器的模式搜索引擎以便搜索串 "PATTERNS",在所示的例子中,在流水線的每一級(jí)/鏈中,匹配數(shù)據(jù) 的四個(gè)字節(jié)以便增加其吞吐量。由于提供輸入數(shù)據(jù)的多個(gè)字節(jié)的數(shù)據(jù)路徑,必須以總線的不同字節(jié)對(duì)齊檢查相同數(shù)據(jù)。因此,四組不同子 串比較器204能用在每一流水線級(jí)中以便同時(shí)檢查4字節(jié)輸入數(shù)據(jù)的 所有不同字節(jié)偏移量。然后,將每一匹配結(jié)果傳給耦合到每組子串比較器200的l位寄存器206。在所示例子中,組成32位寄存器112的每個(gè)8位寄存器存儲(chǔ)輸
入數(shù)據(jù)流的ASCII字符。寄存器A示例說明在第一時(shí)鐘周期期間的輸 入數(shù)據(jù),寄存器B示例說明在第二時(shí)鐘周期期間的輸入數(shù)據(jù),以及寄 存器C示例說明在第三時(shí)鐘周期期間的輸入數(shù)據(jù)。同時(shí),流水線寄存 器A、 B和C的內(nèi)容表示串流"PATTERNS"。在所示例子的第一周期期間,將子串"PAT"與行1中具有不同字 節(jié)偏移量的四個(gè)不同子串進(jìn)行比較。因?yàn)樗衛(wèi)位寄存器202初始化 為0,即使在行2和3中存在匹配模式,也不鎖存結(jié)果。在該例子中, 與子串"PAT"匹配的行1、歹'j 2中的比較器組200a產(chǎn)生結(jié)果值"l"。 通過相應(yīng)的1位寄存器202a,鎖存該值以便啟動(dòng)1位寄存器的下一行。在第二周期期間,將寄存器B中的子串鎖存到寄存器A中。然 后,將子串與所有模式子集進(jìn)行比較。然而,可以鎖定的唯一比較器 結(jié)果是行l(wèi)中的所有比較器,以及行2、列2中的比較器組200b。期 望啟動(dòng)所有行l(wèi)寄存器,因?yàn)樵诘谝恢芷谄陂g,該模式可以通過寄存 器B中的內(nèi)容真正啟動(dòng)。比較器組200b中的匹配模式生成通過相應(yīng) 的1位寄存器202b鎖存的值"l,,以便啟動(dòng)1位寄存器的下一行。在第三周期期間,將寄存器C中的子串鎖存到寄存器A中。在 行3、列2中的比較器組200c中配置的匹配模式將值"l,,發(fā)送到地址 編碼器108。如上所述,基于硬件的深度包過濾器系統(tǒng)的設(shè)計(jì)中的一個(gè)挑戰(zhàn)是 要求大量邏輯資源。例如,為實(shí)現(xiàn)Snort規(guī)則集中的2,207個(gè)特征, 通常將需要超過12個(gè)最大FPGA。因此,根據(jù)本發(fā)明的一個(gè)實(shí)施例, 使用各種優(yōu)化技術(shù)來允許在單個(gè)FPGA上實(shí)現(xiàn)深度包過濾器系統(tǒng)60。 一種這種優(yōu)化技術(shù)是設(shè)計(jì)允許共享子串比較器的基于解碼器的模式搜 索引擎104a。再參考圖4所示的設(shè)計(jì),將用于相同字節(jié)對(duì)齊的所有子 串比較器組連接到相同的輸入管腳。這些子串比較器的一些校驗(yàn)相同 子串。因此,可以安全地去除重復(fù)子串比較器組,而不喪失設(shè)計(jì)功能 性。根據(jù)一個(gè)實(shí)施例,用于消除重復(fù)子串比較器組的第一步驟的一個(gè) 是將每一目標(biāo)串劃分成1至4字節(jié)段集。然后,從初始集提取一組唯
一段。將所有唯一串段轉(zhuǎn)化成唯一子串比較器組。最后,將子串比較器的輸出轉(zhuǎn)發(fā)到相應(yīng)的動(dòng)態(tài)模式搜索引擎104。圖5A示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,被分別配置成校驗(yàn)不 同字節(jié)對(duì)齊的模式"B AB AB "和"AB AB"的兩個(gè)基于解碼器的模式搜 索引擎104b, 104c。為簡(jiǎn)化起見,僅示例說明每一子串比較器組中的 相關(guān)8位比較器。在所示的例子中,存在四對(duì)重復(fù)子串比較器組校驗(yàn)子串"ABAB,, 的子串比較器組304a, 304b、校驗(yàn)子串"BAB,,的子串比較器組306a, 306b、校驗(yàn)子串"AB,,的子串比較器組308a, 308b,以及校驗(yàn)子串"B,, 的子串比較器組310a, 310b。因?yàn)橛糜谙嗤止?jié)對(duì)齊的每對(duì)重復(fù)子串 比較器組連接到相同的數(shù)據(jù)輸入管腳,可以安全地去除來自每對(duì)的一 個(gè)子串比較器組并用AND門代替該子串比較器組。圖5B示例說明圖5A的子串比較器組,但去除了重復(fù)組。在所 示的例子中,用將來自子串比較器組304b的輸出接收為輸入的AND 門356代替子串比較器組304a;用將來自子串比較器組304a的輸出 接收為輸入的AND門354代替子串比較器組310b;用將來自子串比 較器組308a的輸出接收為輸入的AND門352代替子串比較器組308b; 以及用將來自子串比較器組306a的輸出接收為輸入的AND門350代 替子串比較器組306b。根據(jù)本發(fā)明的一個(gè)實(shí)施例,用來減小基于解碼器的模式搜索引擎 的邏輯區(qū)域的另 一優(yōu)化技術(shù)是將引擎設(shè)計(jì)成允許它共享相同字節(jié)對(duì)齊 中的各個(gè)比較器。例如,在圖5B的基于解碼器的模式搜索引擎104b, 104c中,可以將從特定輸入管腳接收輸入的第一流水線級(jí)中的"B,,比 較器360的輸出再用于也從相同輸入管腳接收輸入的第二流水線級(jí)中 的兩個(gè)其他比較器304a, 362。關(guān)于這一點(diǎn),用將來自"B"比較器360 的輸出接收為輸入的AND門代替冗余比較器304a, 362。在消除圖 5B中所示的示例性搜索引擎104b, 104c中的所有復(fù)制后,僅通過八 個(gè)8位比較器,可以獲得功能上等效的設(shè)計(jì),其中,每一個(gè)8位比較 器由兩個(gè)4位、可重構(gòu)查找表組成。因此,在該例子中,使整個(gè)邏輯 需求減小25%。根據(jù)本發(fā)明的 一 個(gè)實(shí)施例,用于減小改進(jìn)的深度包過濾器系統(tǒng)6 0 的邏輯區(qū)域的另一優(yōu)化技術(shù)是將關(guān)鍵字樹用于允許結(jié)合流水線鏈的模 式搜索引擎104。例如,如果將搜索的模式是"ABCDEF"、"ABCXXX", 以及"ABCYYY",可以以如圖6A所示的消除復(fù)制的方式使用子串比 較器。在所示的例子中,子串比較器400檢測(cè)子串"ABC",子串比較 器402檢測(cè)子串"DEF",子串比較器404檢測(cè)子串"XXX",以及子串 比較器406檢測(cè)子串"YYY"。然后,使用每一子串比較器的輸出來生 成具有AND門的三個(gè)流水線鏈。根據(jù)一個(gè)實(shí)施例,使該鏈崩潰以便 減少用于這些鏈的資源,如圖6B所示。該轉(zhuǎn)換不僅減少所需存儲(chǔ)量, 而且當(dāng)程序遍歷該樹時(shí),使?jié)撛谀J降臄?shù)量縮小。根據(jù)一個(gè)實(shí)施例, 構(gòu)造如圖4-5的實(shí)施例中所示的并行設(shè)計(jì)中的樹要求比較器400-406 的長度為數(shù)據(jù)路徑寬度的倍數(shù)。圖3實(shí)施例中的檢查模塊100a-110n生成表示在那個(gè)時(shí)鐘周期是 否出現(xiàn)匹配的l位輸出。在使用1519個(gè)唯一檢查模塊來表示規(guī)則集的 情況下,檢查模塊的輸出為1519位。在一些應(yīng)用中,通過用軟件實(shí)現(xiàn) 匹配的模式的標(biāo)識(shí),來簡(jiǎn)化所有這些表示匹配的位的"或"運(yùn)算是足 夠的。然而,通常更期望經(jīng)硬件產(chǎn)生匹配的模式的索引號(hào)。生成索引號(hào)的一個(gè)挑戰(zhàn)是通常由相當(dāng)大的輸入,諸如例如1519 位生成索引號(hào)。另 一挑戰(zhàn)是一個(gè)以上的檢查模塊可以在相同時(shí)鐘周期 期間表示匹配。根據(jù)本發(fā)明的一個(gè)實(shí)施例,地址編碼器108獲得由檢查模塊生成 的1519位,以及使用來自由地址編碼器108提供的OR門的二進(jìn)制樹 的輸出的組合,生成匹配的模式的ll位索引號(hào)。圖7A示例說明根據(jù) 將15位輸入502編碼成4位索引的示例性實(shí)施例的OR門500的示例 性二進(jìn)制樹。基于二進(jìn)制樹的自然屬性,可以確定如果斷言樹的相應(yīng) 級(jí)的奇數(shù)節(jié)點(diǎn)的任何一個(gè),則應(yīng)當(dāng)斷言索引的每一索引位。因此,如 果假定在每一時(shí)鐘周期,將斷言僅一個(gè)輸入管腳(即,在每一周期, 檢測(cè)僅一個(gè)模式),根據(jù)下述索引位等式(1) - (4),可以生成用于 15-位輸入的4-位索引編碼器Index3=al (1)Index2=bl+b3 ( 2 )Indexl=cl+c3+c5+c7 (3 )Index0=dl+d3+d5+d7+d9+dll+dl3+dl5 ( 4 )因此,在生成4位索引編碼器中,可以將邏輯用于組合二進(jìn)制樹的各 個(gè)節(jié)點(diǎn)的輸入,如由等式所示。例如,用于生成索引的位O的邏輯包 括在樹級(jí)D獲得奇數(shù)輸入管腳的輸出的多個(gè)OR門。用于生成索引的 位l的邏輯包括在樹級(jí)C獲得奇數(shù)節(jié)點(diǎn)的輸出的多個(gè)OR門等等。用 于每一索引位的邏輯的輸出的l位寄存器存儲(chǔ)所編碼的索引位。如上所述,根據(jù)等式(1) - (4)生成的地址編碼器是假定在特 定時(shí)鐘周期將斷言超不過一個(gè)輸入管腳的簡(jiǎn)單編碼器。然而,如果將 斷言一個(gè)以上輸入管腳,則簡(jiǎn)單地址編碼器可能不足以適當(dāng)?shù)乇硎灸?式索引。對(duì)這種沖突的一種解決方案是將規(guī)則集劃分成多個(gè)子集,每 一子集包含不重疊的模式。然后,將簡(jiǎn)單地址編碼器提供給每一子集 模式搜索單元。然而,在一些情況下,有限輸出管腳計(jì)數(shù)使得具有多 個(gè)索引輸出不可行。因此,在這種情況下,可以期望指定模式索引的 優(yōu)先級(jí)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,使用軟件預(yù)處理來將優(yōu)先級(jí)分配給索 引號(hào)。根據(jù)另一實(shí)施例,直接修改硬件來分配索引優(yōu)先級(jí)。根據(jù)軟件預(yù)處理方法,能同時(shí)斷言編碼器輸入的所有模式根據(jù)等 式5分配索引號(hào)In|In-l|I0=In (5)等式5將逐位OR應(yīng)用于重疊模式的所有索引,其中,Iii是具有 n的較高值的索引號(hào),n的較高值表示較高優(yōu)先級(jí)。只要根據(jù)所需優(yōu) 先級(jí),將所有索引分配給重疊模式,那么可以將索引分配給剩余模式。的模式集的大小進(jìn)行了限制。每一集的索引的最大數(shù)等于索引輸出管 腳的數(shù)量。在實(shí)際結(jié)構(gòu)中,可以有幾個(gè)獨(dú)立的重疊模式集,但同時(shí)重
疊模式的數(shù)量通常小于4。因此,對(duì)于大多數(shù)集,該技術(shù)是足夠的。 使用軟件預(yù)處理機(jī)制的優(yōu)點(diǎn)在于不需要另外的門。對(duì)需要嚴(yán)格優(yōu)先級(jí)的情形,基于硬件的優(yōu)先級(jí)索引編碼器可以用 來使用用于地址編碼器的另外的門,來構(gòu)造基于優(yōu)先級(jí)的索引。根據(jù) 該基于硬件的優(yōu)先級(jí)編碼器,較高索引表示較高優(yōu)先級(jí)。可以基于圖7A的二進(jìn)制OR樹的下述檢查,設(shè)計(jì)基于硬件的優(yōu) 先級(jí)編碼器。在所示的二進(jìn)制OR樹中,如果斷言在Al節(jié)點(diǎn)504下 的15位輸入502 (D節(jié)點(diǎn))的任何一個(gè),則最高有效索引位是"l"。 由于較高編號(hào)的D節(jié)點(diǎn)具有比較低節(jié)點(diǎn)更高的優(yōu)先級(jí),因此不需要考 慮A0節(jié)點(diǎn)512的輸出。因此,基于硬件的優(yōu)先級(jí)編碼器將索引的最 高有效位值分配給A1的輸出。對(duì)下一索引位,考慮具有Al和A0節(jié)點(diǎn)504, 512的直接子節(jié)點(diǎn) 的分支。這導(dǎo)致如果斷言B3節(jié)點(diǎn)508的輸出,則第二索引位為"l"的 推論。然而,如果B1節(jié)點(diǎn)506的輸出為"l",同時(shí)無較高標(biāo)志為"l", 則第二索引位也為"l"。在所示的二進(jìn)制OR樹中,僅需要校驗(yàn)A1節(jié) 點(diǎn)504為"0"以便校驗(yàn)斷言沒有構(gòu)成較高標(biāo)志的子節(jié)點(diǎn)的任何一個(gè)。使 用該推導(dǎo)過程,可以構(gòu)造后續(xù)地址/索引位。因此,根據(jù)下述索引位等 式(6 ) - ( 9 ),生成用于15位輸入的4位優(yōu)先級(jí)索引編碼器。因此,在生成基于硬件的優(yōu)先級(jí)編碼器中,使用另外的邏輯來結(jié) 合如由等式表示的二進(jìn)制樹的各個(gè)節(jié)點(diǎn)的輸入。例如,用于根據(jù)等式 (7)生成優(yōu)先級(jí)索引的位2的邏輯,與根據(jù)等式(2)的簡(jiǎn)單編碼器 的邏輯不同,其添加了用于校驗(yàn)A1節(jié)點(diǎn)504為"0"的另外的邏輯。根據(jù)本發(fā)明的一個(gè)實(shí)施例,為最大化用于地址編碼器的資源,刪 除不由等式中的任何一個(gè)使用的OR樹的節(jié)點(diǎn)。因此,在圖7A所示 的例子中,從主根節(jié)點(diǎn)510開始,刪除樹510, 512, 514, 516和518 的左沿上的所有節(jié)點(diǎn)。通過輸出編碼地址位處的寄存器,關(guān)鍵路徑具有最大值(logn)-l門延遲,其中,n是輸入管腳的數(shù)量。由于在每一門 后,流水線化模式搜索結(jié)構(gòu),這種長的門鏈變?yōu)殛P(guān)鍵路徑。大多數(shù) FPGA中的每一查找表通常與D觸發(fā)器配對(duì)。因此,編碼器的硬件設(shè) 計(jì)可以插入另外的流水線寄存器。圖7B示例說明具有在D觸發(fā)器后,由l個(gè)四輸入門代替的、具 有最多2個(gè)兩輸入門的流水線OR樹。進(jìn)一步流水線化用于實(shí)現(xiàn)該索 引等式的邏輯以便維持流水線寄存器間的單個(gè)門的電平。根據(jù)本發(fā)明的另一實(shí)施例,通過將模式搜索引擎104實(shí)現(xiàn)為利用 包括在FPGA芯片中的內(nèi)置存儲(chǔ)器,諸如只讀存儲(chǔ)器(ROM)的基 于存儲(chǔ)器的模式搜索引擎,減小用于實(shí)現(xiàn)改進(jìn)的深度包過濾器系統(tǒng)60 的邏輯區(qū)域。圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例,基于存儲(chǔ)器的模式搜索引擎 104d的框圖。如圖8所示,在調(diào)用與剩余數(shù)據(jù),在下文中稱為后綴的 完全比較之前,通過前綴搜索引擎602預(yù)先篩分在下文中稱為前綴的 輸入數(shù)據(jù)600的開始部分。前綴搜索引擎602將前綴部分與預(yù)定前綴 模式集進(jìn)行比較。對(duì)于具有多字節(jié)輸入的數(shù)據(jù)路徑,前綴搜索引擎602 還生成匹配前綴的對(duì)齊信息。然后,將匹配前綴模式的索引直接映射 為內(nèi)置存儲(chǔ)器604的地址,其中,存儲(chǔ)不同的前綴模式,如圖9所示。 通過相應(yīng)對(duì)齊處的比較器606模塊,比較輸入數(shù)據(jù)和后綴,以便確定 是否出現(xiàn)精確匹配。為了使基于存儲(chǔ)器的設(shè)計(jì)正確地起作用,劃分規(guī)則集中的模式并 將模式映射到一個(gè)或多個(gè)ROM中。根據(jù)本發(fā)明的一個(gè)實(shí)施例,劃分 模式以便每一分區(qū)中的前綴是唯一的。關(guān)于這一點(diǎn),對(duì)于不同長度的 前綴,劃分模式以便分區(qū)中的較長前綴的末端不與較短前綴匹配。否 則,會(huì)出現(xiàn)一個(gè)以上的前綴匹配。如果存在一個(gè)以上的前綴檢測(cè),則 前綴搜索引擎602可以不確定從存儲(chǔ)器讀取哪個(gè)前綴。前綴寬度可以是任意大小。然而,根據(jù)本發(fā)明的一個(gè)實(shí)施例,將 前綴設(shè)置成等于輸入總線的寬度,諸如例如四字節(jié)。由于每一時(shí)鐘可
能產(chǎn)生用于檢索后綴的有效索引,每一周期最多進(jìn)行后綴比較。因此,能產(chǎn)生兩個(gè)不同對(duì)齊的任何前綴被分配給單獨(dú)的ROM,對(duì)于具有一 字節(jié)輸入的數(shù)據(jù)路徑,該約束不產(chǎn)生任何問題,因?yàn)樵摂?shù)據(jù)總是處于 零對(duì)齊。然而,如果數(shù)據(jù)路徑提供多字節(jié)輸入,某些前綴能與兩個(gè)不 同對(duì)齊匹配。例如,假定在4字節(jié)數(shù)據(jù)路徑中,前綴搜索引擎602由前綴 "ABAB"構(gòu)成。如果輸入數(shù)據(jù)600以"ABAB"開始,用于前綴的對(duì)齊能 是0或2。這是因?yàn)榈诙哟?AB"能是模式的實(shí)際開始點(diǎn)。因此,根 據(jù)數(shù)據(jù)路徑和前綴的長度,形成測(cè)試集合中的每一模式以便在每一周 期僅允許一 個(gè)索引檢測(cè)的條件。對(duì)于具有固定4字節(jié)前綴的4字節(jié)數(shù)據(jù)路徑,使分區(qū)中的所有前 綴配置成滿足下述三個(gè)條件(1)前綴的字節(jié)1不等于字節(jié)4; (2) 字節(jié)1至2的子串不等于字節(jié)3至4的子串;以及(3)字節(jié)1至3 的子串不等于字節(jié)2至4的子串。圖10是根據(jù)本發(fā)明的一個(gè)實(shí)施例,包括在基于存儲(chǔ)器的模式搜 索引擎104d中的前綴搜索引擎602的更詳細(xì)框圖。前綴搜索引擎602 包括多個(gè)搜索模塊610a-610n,根據(jù)一個(gè)實(shí)施例,所述模塊實(shí)現(xiàn)為圖 4-6中所示的基于解碼器的模式搜索引擎。每一搜索模塊610a-610n 比較預(yù)定前綴模式的以不同字節(jié)對(duì)齊的輸入數(shù)據(jù)的前綴部分。耦合到 每一搜索模塊610a-610n的對(duì)齊模塊612a-612n表示匹配前綴模式的 對(duì)齊。然后,編碼來自各個(gè)對(duì)齊模塊612a-612n的匹配信號(hào),以便提 供對(duì)齊信息。此外,地址解碼器614基于來自各個(gè)搜索模塊610a-610n 的匹配信號(hào),生成后綴索引。地址編碼器614可以例如類似于圖3的 地址編碼器108。因?yàn)槿缟纤鰧?duì)前綴進(jìn)行分區(qū),在每一時(shí)鐘周期, 檢測(cè)指定子集中的僅一個(gè)前綴。因此,對(duì)齊和地址編碼不需要考慮匹 配模式的優(yōu)先級(jí),由此,可以使邏輯簡(jiǎn)單和緊湊。根據(jù)本發(fā)明的一個(gè)實(shí)施例,將存儲(chǔ)器604內(nèi)置在用來實(shí)現(xiàn)改進(jìn)的 深度包過濾器系統(tǒng)60的芯片中。例如,存儲(chǔ)器604是在FPGA芯片 中提供的ROM。根據(jù)一個(gè)實(shí)施例,使存儲(chǔ)器的寬度固定到與集合中 的最長后綴項(xiàng)一樣寬。由于后綴的變動(dòng)長度,具有這種固定寬度的存 儲(chǔ)器利用率可能不夠有效。圖11示例說明根據(jù)本發(fā)明的一個(gè)實(shí)施例,用于改進(jìn)存儲(chǔ)器利用率的機(jī)制。如圖ll所示,存儲(chǔ)器604a以排序方式,存儲(chǔ)變動(dòng)長度的 N個(gè)后綴項(xiàng)。然而,存儲(chǔ)器604a的利用率不足,因?yàn)樗S啻蠹s一半 的存儲(chǔ)器空間未用。根據(jù)本發(fā)明的一個(gè)實(shí)施例,通過用有效數(shù)據(jù)填充 未用空間,實(shí)現(xiàn)存儲(chǔ)器空間的更有效使用。關(guān)于這一點(diǎn),根據(jù)待存儲(chǔ) 的后綴模式的長度,首先排序所述待存儲(chǔ)的后綴模式。因此,將所有 偶數(shù)項(xiàng)順序地從存儲(chǔ)器的第一項(xiàng)存儲(chǔ)到最后一項(xiàng)。然后,根據(jù)它們的 位序列,翻轉(zhuǎn)將所有奇數(shù)項(xiàng),從最后一項(xiàng)存儲(chǔ)到第一項(xiàng),如存儲(chǔ)器604b 的內(nèi)容所示。該過程將奇數(shù)項(xiàng)有效地存儲(chǔ)到換位存儲(chǔ)器中。為了正確地讀取重排存儲(chǔ)器項(xiàng),使用少量包裝器邏輯。圖12是 根據(jù)本發(fā)明的一個(gè)實(shí)施例的包裝器邏輯的示意框圖。在存儲(chǔ)器的地址 輸入,將所有位,除最低有效位(LSB) 700外,傳送到存儲(chǔ)器604。 LSB700用來確定地址為奇還是偶。如果地址為偶數(shù),則不改變剩余 地址位,并將其傳遞為物理地址。否則,經(jīng)反向器702,首先倒置地 址位,然后傳遞到存儲(chǔ)器604。類似地,將存儲(chǔ)器604的輸出連接到 2-1復(fù)用器704,以及LSB連接到其選擇管腳。當(dāng)LSB表示偶數(shù)項(xiàng)時(shí), 選擇正常輸出706。如果表示奇數(shù)項(xiàng),選擇具有倒置位次序的輸出708。圖13是根據(jù)本發(fā)明的一個(gè)實(shí)施例的比較器模塊606的示意框圖。 只要從存儲(chǔ)器604讀取后綴模式,流水線化輸入包數(shù)據(jù)802并經(jīng)由比 較器模塊提供的移位器804,移位到適當(dāng)?shù)淖止?jié)對(duì)齊?;谧铋L模式 的長度和ROM等待時(shí)間;確定流水線級(jí)的數(shù)量。經(jīng)單級(jí)復(fù)用器可以實(shí)現(xiàn)移位器,或根據(jù)輸入總線的寬度,可以將 移位器流水線化到多級(jí)。 一字節(jié)數(shù)據(jù)路徑僅具有單個(gè)對(duì)齊,因此,不 需要移位器。除后綴模式外,存儲(chǔ)器604還存儲(chǔ)每一模式的長度,以及將這一 長度808提供給逐位比較器806。通過逐位比較器806解碼該長度以 便僅啟動(dòng)所示長度的比較器。逐位比較器806然后將所接收的后綴模
式810與字節(jié)對(duì)齊的包數(shù)據(jù)進(jìn)行比較。當(dāng)該數(shù)據(jù)與后綴模式匹配時(shí), 由前綴搜索引擎602生成的、用作后綴存儲(chǔ)器地址的前綴索引,被轉(zhuǎn) 發(fā)為識(shí)別所檢測(cè)的模式的輸出。也可以丟棄輸入數(shù)據(jù)包,和/或用戶修 改可疑包。根據(jù)本發(fā)明的一個(gè)實(shí)施例,將逐位比較器806實(shí)現(xiàn)為1字節(jié)XOR 比較器。與用在由兩個(gè)查找表組成的、圖4-6的基于解碼器的設(shè)計(jì)中 使用的解碼器不同,XOR比較器由八個(gè)查找表組成。然而,由于由在 ROM中存儲(chǔ)的所有模式使用僅一組比較器,每一字節(jié)平均的門可以 遠(yuǎn)小于全解碼器實(shí)現(xiàn)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,改進(jìn)的深度包過濾器系統(tǒng)60包含圖 4-6的基于解碼器的設(shè)計(jì)以及圖8-13的基于存儲(chǔ)器的設(shè)計(jì)。圖14是根 據(jù)本發(fā)明的一個(gè)實(shí)施例,結(jié)合兩種設(shè)計(jì)的模式搜索引擎104e的框圖。 因?yàn)樵诖鎯?chǔ)器中存儲(chǔ)的、用于模式的前綴基本上是較短模式集,它們 可以與剩余模式結(jié)合以便產(chǎn)生有效關(guān)鍵字樹900。對(duì)較短模式,然后, 基于解碼器的搜索引擎906執(zhí)行比較,以及將匹配表示傳送到地址編 碼器902,其可以與圖3的地址編碼器108類似。地址編碼器卯2然 后輸出相應(yīng)的模式ID。對(duì)較長模式,基于解碼器的搜索引擎908執(zhí)行前綴的比較,以及 使用輸出索引來選擇基于存儲(chǔ)器的搜索引擎904中的存儲(chǔ)后綴。然后, 將該索引輸出作為相應(yīng)的模式ID。由于將大量模式存儲(chǔ)在存儲(chǔ)器中,圖14的組合設(shè)計(jì)要求遠(yuǎn)少于 基于解碼器的過濾器的門。因此,可以將全過濾器成功地放置并布線 為更小Spartan 3-XC3S400設(shè)備。在實(shí)驗(yàn)期間,該系統(tǒng)使用XC3S400 設(shè)備中的200MHz的時(shí)鐘速率,以及XC3S1000設(shè)備中的237MHz的 總共4,415個(gè)查找表。XC3S1000設(shè)備中的加速是由于代替較大FPGA 中的部件的較高自由度。在模式檢測(cè)率低的實(shí)例中,可以足以表示匹配信號(hào),而不識(shí)別該 模式。然后,軟件可以進(jìn)行數(shù)據(jù)庫的全面搜索以便確定檢測(cè)哪種模式。 對(duì)于這一設(shè)計(jì),可以用所有索引編碼器902來代替OR門樹以便減少 門的數(shù)量。但是,由于我們的高效索引編碼器設(shè)計(jì),可以從基于解碼器的設(shè)計(jì)回收僅755查找表,以及65個(gè)用于基于存儲(chǔ)器實(shí)現(xiàn)的查找表。 盡管上面詳細(xì)地描述以及在附圖中示出了某些示例性實(shí)施例,應(yīng) 理解到這些實(shí)施例僅是示例性,以及不限制寬的發(fā)明。特別地,應(yīng)意 識(shí)到本發(fā)明的教導(dǎo)適合于各種系統(tǒng)和過程。因此,應(yīng)意識(shí)到可以對(duì)上 述本發(fā)明的示例性和其他實(shí)施例做出各種改進(jìn),而不背離其寬的發(fā)明 范圍。例如,盡管動(dòng)態(tài)模式搜索引擎描述為搜索數(shù)據(jù)包的有效載荷部 分,但本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到可以將搜索引擎配置成搜索除或代 替有效載荷部分的分組的其他部分。鑒于上文,將理解到本發(fā)明不限于在此公開的具體實(shí)施例或?qū)?齊,相反,意圖覆蓋落在由附加權(quán)利要求和它們的等效定義的、本發(fā) 明的范圍和精神內(nèi)的任何改變、適應(yīng)或修改。
權(quán)利要求
1. 一種深度包過濾器,包括前綴搜索邏輯,配置成比較輸入數(shù)據(jù)的第一非報(bào)頭部分與前綴模式;耦合到所述前綴搜索邏輯的存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)多個(gè)后綴模式;用于基于輸入數(shù)據(jù)的第一非報(bào)頭部分與前綴模式的匹配,生成后綴索引的裝置;以及比較器邏輯,配置成比較輸入數(shù)據(jù)的第二非報(bào)頭部分與基于所生成的后綴索引識(shí)別的后綴模式,其中,基于第二非報(bào)頭部分的比較,允許輸入數(shù)據(jù)通過或不允許輸入數(shù)據(jù)通過。
2. 如權(quán)利要求1所述的深度包過濾器,其中,所述前綴搜索邏 輯同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部分和多個(gè)前綴模式。
3. 如權(quán)利要求2所述的深度包過濾器,其中,所述前綴搜索邏 輯同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部分的多個(gè)字節(jié)與多個(gè)前綴模式的 每一個(gè)的多個(gè)字節(jié)。
4. 如權(quán)利要求3所述的深度包過濾器,其中,所述前綴搜索邏 輯同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部分的多個(gè)字節(jié)與多個(gè)前綴模式的 每一個(gè)的不同字節(jié)對(duì)齊。
5. 如權(quán)利要求1所述的深度包過濾器,其中,所述前綴搜索邏 輯包括用于檢測(cè)前綴模式的特定子串的解碼器鏈。
6. 如權(quán)利要求5所述的深度包過濾器,其中,用于檢測(cè)特定子 串的解碼器鏈由配置成檢測(cè)包括特定子串的不同前綴模式的多個(gè)前綴 搜索邏輯單元共享。
7. 如權(quán)利要求1所述的深度包過濾器,其中,在單個(gè)現(xiàn)場(chǎng)可編 程門陣列上實(shí)現(xiàn)所述前綴搜索邏輯、存儲(chǔ)器、用于生成后綴索引的裝 置以及比較器邏輯。
8. 如權(quán)利要求7所述的深度包過濾器,其中,所述存儲(chǔ)器存儲(chǔ)排序后綴模式的列表,其中,將該列表的偶數(shù)項(xiàng)中的模式從存儲(chǔ)器的 第一項(xiàng)存儲(chǔ)到最后一項(xiàng),以及將該列表中的奇數(shù)項(xiàng)中的模式從存儲(chǔ)器 的最后一項(xiàng)存儲(chǔ)到第一項(xiàng)。
9. 如權(quán)利要求1所述的深度包過濾器,其中,用于生成后綴索 引的裝置包括用于基于由耦合到前綴搜索邏輯的輸出的OR門的二進(jìn) 制樹導(dǎo)出的邏輯等式,生成后綴索引的每一位。
10. 如權(quán)利要求l所述的深度包過濾器,其中,所述前綴搜索邏 輯表示字節(jié)對(duì)齊,以及所述比較器邏輯包括用于根據(jù)所表示的字節(jié)對(duì) 齊,移位輸入數(shù)據(jù)的第二非報(bào)頭部分的移位器。
11. 如權(quán)利要求l所述的深度包過濾器,其中,輸入數(shù)據(jù)的第一 和第二非報(bào)頭部分是數(shù)據(jù)的有效栽荷部分。
12. —種深度包過濾方法,包括 將多個(gè)模式劃分成前綴部分和后綴部分;將多個(gè)模式的每一個(gè)的后綴部分存儲(chǔ)在存儲(chǔ)器中;同時(shí)比較輸入數(shù)據(jù)的第一非報(bào)頭部分的至少一部分與多個(gè)模式的每一個(gè)的前綴部分的至少一部分;基于輸入數(shù)據(jù)的第一非報(bào)頭部分與特定模式的前綴部分的匹配,生成后綴索引;基于后綴索引,識(shí)別在存儲(chǔ)器中存儲(chǔ)的特定模式的后綴部分; 比較輸入數(shù)據(jù)的第二非報(bào)頭部分與所識(shí)別的后綴部分;以及 基于第二非報(bào)頭部分與所識(shí)別的后綴部分的比較,轉(zhuǎn)發(fā)輸入數(shù)據(jù)或不轉(zhuǎn)發(fā)輸入數(shù)據(jù)。
13. 如;K利要求12所述的方法,其中,同時(shí)比較包括同時(shí)比較 輸入數(shù)據(jù)的第一非報(bào)頭部分的多個(gè)字節(jié)與多個(gè)模式的每一個(gè)的前綴部 分的不同字節(jié)對(duì)齊。
14. 如權(quán)利要求12所述的方法,其中經(jīng)配置成檢測(cè)特定子串的 解碼器鏈實(shí)現(xiàn)比較。
15. 如權(quán)利要求14所述的方法,其中,由配置成檢測(cè)包括特定 子串的多個(gè)模式的不同前綴部分的多個(gè)前綴搜索邏輯單元共享用于檢 測(cè)特定子串的解碼器鏈。
16. 如權(quán)利要求12所述的方法,其中,存儲(chǔ)器是內(nèi)置在現(xiàn)場(chǎng)可 編程門陣列中的只讀存儲(chǔ)器。
17. 如權(quán)利要求12所述的方法,其中,所述存儲(chǔ)器存儲(chǔ)多個(gè)模 式的排序后綴部分的列表,其中,將在該列表的偶數(shù)項(xiàng)中列出的后綴 部分從存儲(chǔ)器的第 一項(xiàng)存儲(chǔ)到最后 一項(xiàng),以及將在列表的奇數(shù)項(xiàng)中列 出的后綴部分從存儲(chǔ)器的最后一項(xiàng)存儲(chǔ)到第一項(xiàng)。
18. 如權(quán)利要求12所述的方法,其中,生成后綴索引包括基于 由耦合到前綴搜索邏輯的輸出的OR門的二進(jìn)制樹導(dǎo)出的邏輯等式, 生成后綴索引的每一位,所述前綴搜索邏輯同時(shí)比較輸入數(shù)據(jù)的第一 非報(bào)頭部分的至少一部分與多個(gè)模式的每一個(gè)的前綴部分的至少一部 分。
19. 如權(quán)利要求12所述的方法,進(jìn)一步包括 識(shí)別與輸入數(shù)據(jù)的第一非報(bào)頭部分與特定模式的前綴部分的匹配有關(guān)的字節(jié)對(duì)齊;以及根據(jù)所示的字節(jié)對(duì)齊,移位輸入數(shù)據(jù)的第二非報(bào)頭部分。
20. 如權(quán)利要求12所述的方法,其中,輸入數(shù)據(jù)的第一和第二 非報(bào)頭部分是數(shù)據(jù)的有效載荷部分。
全文摘要
本發(fā)明涉及改進(jìn)的深度包過濾器系統(tǒng)。其被設(shè)計(jì)成優(yōu)化用于高速網(wǎng)絡(luò)業(yè)務(wù)量的動(dòng)態(tài)模式的搜索。該改進(jìn)的深度包過濾器系統(tǒng)是具有優(yōu)化的邏輯區(qū)域的基于硬件的系統(tǒng)。一種優(yōu)化技術(shù)是在硬件設(shè)計(jì)中共享公用子邏輯以便減小所需的門數(shù)量。另一優(yōu)化技術(shù)是使用內(nèi)置存儲(chǔ)器來存儲(chǔ)部分模式集,也會(huì)導(dǎo)致減少門。邏輯區(qū)域的減少允許在單個(gè)現(xiàn)場(chǎng)可編程陣列芯片上實(shí)現(xiàn)深度包過濾器系統(tǒng)。
文檔編號(hào)H04L12/28GK101401090SQ200580011742
公開日2009年4月1日 申請(qǐng)日期2005年4月19日 優(yōu)先權(quán)日2004年4月19日
發(fā)明者威廉·H·曼吉奧尼-史密斯, 永·H·丘 申請(qǐng)人:加利福尼亞大學(xué)董事會(huì)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1