專利名稱:深度報(bào)文檢測(cè)dfa狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,特別涉及網(wǎng)絡(luò)安全設(shè)備領(lǐng)域,具體涉及一種應(yīng)用于深 度報(bào)文檢測(cè)的對(duì)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配的方法。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)中存在眾多的體系結(jié)構(gòu),為了解決不同體系結(jié)構(gòu)的網(wǎng)絡(luò)的互聯(lián)問(wèn)題, 國(guó)際標(biāo)準(zhǔn)化組織ISO于1981年制定了開(kāi)放系統(tǒng)互連參考模型。這個(gè)模型把網(wǎng)絡(luò)通信的工作 分為7層,它們由低到高分別是物理層(Physical Layer),數(shù)據(jù)鏈路層(Data Link Layer), 網(wǎng)絡(luò)層(Network Layer),傳輸層(Transport Layer),會(huì)話層(Session Layer),表不層 (Presentation Layer)和應(yīng)用層(Application Layer)。第一層到第三層屬于OSI參考模 型的低三層,負(fù)責(zé)創(chuàng)建網(wǎng)絡(luò)通信連接的鏈路;第四層到第七層為OSI參考模型的高四層,具 體負(fù)責(zé)端到端的數(shù)據(jù)通信。傳統(tǒng)的網(wǎng)絡(luò)安全設(shè)備僅分析報(bào)文的四層及以下內(nèi)容,即源IP地址、目的IP地址、 源端口號(hào)、目的端口號(hào)、協(xié)議類型等信息。但該技術(shù)具有非常大的局限性,很多應(yīng)用是不固 定TCP/UDP端口的,因此僅分析報(bào)文的四層及以下內(nèi)容是識(shí)別不了這些應(yīng)用的。另外,網(wǎng)絡(luò) 入侵檢測(cè)、病毒檢測(cè)等也必須分析報(bào)文四層以上至七層的內(nèi)容。因此,目前的網(wǎng)絡(luò)安全設(shè)備都趨向于使用深度報(bào)文檢測(cè)技術(shù)來(lái)分析報(bào)文內(nèi)容及其 行為。即使用由正則表達(dá)式描述的特征庫(kù)來(lái)識(shí)別應(yīng)用類別、網(wǎng)絡(luò)入侵行為、病毒等。在軟件 或硬件對(duì)報(bào)文進(jìn)行匹配特征庫(kù)前,需要將正則表達(dá)式轉(zhuǎn)換成NFA (非確定狀態(tài)自動(dòng)機(jī))狀態(tài) 轉(zhuǎn)移表或DFA (確定狀態(tài)自動(dòng)機(jī))狀態(tài)轉(zhuǎn)移表以便于查找和匹配。其中NFA狀態(tài)轉(zhuǎn)移表的存儲(chǔ)空間較小,但不適合高速報(bào)文匹配。而正則表達(dá)式轉(zhuǎn)換成DFA狀態(tài)轉(zhuǎn)移表存在空間爆炸問(wèn)題,因?yàn)镈FA狀態(tài)轉(zhuǎn)移表需 要占用大量存儲(chǔ)空間。占用大量存儲(chǔ)空間就必須使用外部的DRAM,如DDR/DDR2/DDR3 DRAM。 由于DRAM的特性,訪問(wèn)DRAM存儲(chǔ)單元時(shí)需要打開(kāi)關(guān)閉DRAM內(nèi)部行列,隨機(jī)訪問(wèn)數(shù)據(jù)需要 幾十個(gè)納秒的時(shí)間,因此報(bào)文匹配速度無(wú)法適應(yīng)多個(gè)千兆網(wǎng)絡(luò)接口的流量。
發(fā)明內(nèi)容
針對(duì)上述問(wèn)題,申請(qǐng)人進(jìn)行了改進(jìn)研究,提供一種深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表 的壓縮與報(bào)文匹配方法,能夠有效減少DFA狀態(tài)轉(zhuǎn)移表占用的存儲(chǔ)空間,并適合硬件電路 實(shí)現(xiàn)高速報(bào)文匹配。本發(fā)明的技術(shù)方案如下
一種深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,對(duì)DFA狀態(tài)轉(zhuǎn)移表的每一 行,將轉(zhuǎn)移狀態(tài)相同的相近輸入字符及其轉(zhuǎn)移狀態(tài)用(起始字符,位圖,轉(zhuǎn)移狀態(tài))三元組表 示,存放于高速存儲(chǔ)器中;當(dāng)查找輸入字符的轉(zhuǎn)移狀態(tài)時(shí),并行匹配同一行的三元組。其進(jìn)一步的技術(shù)方案為
DFA狀態(tài)轉(zhuǎn)移表的壓縮依次執(zhí)行以下步驟
31)對(duì)每個(gè)狀態(tài)行,將轉(zhuǎn)移狀態(tài)相同的輸入字符分為同一組;
2)對(duì)每個(gè)狀態(tài)行,將分在同一組的相鄰及鄰近的輸入字符及其轉(zhuǎn)移狀態(tài)用(起始字符, 位圖,轉(zhuǎn)移狀態(tài))三元組來(lái)表示;其中起始字符為分組內(nèi)最小的輸入字符;位圖以二進(jìn)制表 示,計(jì)算該組各個(gè)輸入字符相對(duì)于起始字符的偏移值,將位圖上與這些偏移值相對(duì)應(yīng)的比 特位置1,其余比特位置0;
3)對(duì)每個(gè)狀態(tài)行,當(dāng)分在同一組的輸入字符不能被單個(gè)所述三元組編碼時(shí),由多個(gè)所 述三元組來(lái)編碼;
4)對(duì)每個(gè)狀態(tài)行,如果其包含的所述三元組的個(gè)數(shù)不超過(guò)預(yù)設(shè)的閥值,則該狀態(tài)行用 上述三元組編碼的方式存放在高速存儲(chǔ)器中;否則,該狀態(tài)行不壓縮,用一維線性數(shù)組的方 式存儲(chǔ)在片外DRAM中;
5)對(duì)狀態(tài)值重新映射,使得存放三元組的高速存儲(chǔ)器中存放的狀態(tài)值都小于片外DRAM 存放的狀態(tài)值;將片外DRAM存放的狀態(tài)值中的極小值作為分界值;
報(bào)文匹配依次執(zhí)行以下步驟
6)以DFA狀態(tài)轉(zhuǎn)移表的起始狀態(tài)和報(bào)文首字符作為起始輸入;
7)如果該狀態(tài)是終結(jié)狀態(tài)則結(jié)束匹配;如果狀態(tài)值小于所述分界值,則執(zhí)行步驟8查 找存放三元組的高速存儲(chǔ)器;否則,執(zhí)行步驟9查找片外DRAM ;
8)根據(jù)一維線性數(shù)組索引的方式,從存放三元組的高速存儲(chǔ)器中讀出該狀態(tài)行的所有 三元組編碼,將每一個(gè)三元組編碼中位圖比特偏移值置1的字符與該報(bào)文字符進(jìn)行匹配; 如果匹配到,則取該字符所在三元組的轉(zhuǎn)移狀態(tài)和報(bào)文的下個(gè)字符作為輸入,執(zhí)行步驟7 ; 如果沒(méi)有匹配到任何三元組,則匹配失敗并結(jié)束;
9)根據(jù)二維線性數(shù)組索引的方式,從片外DRAM中讀取對(duì)應(yīng)的轉(zhuǎn)移狀態(tài);如果有轉(zhuǎn)移狀 態(tài),則取該轉(zhuǎn)移狀態(tài)和報(bào)文的下個(gè)字符作為輸入,執(zhí)行步驟7 ;如果沒(méi)有轉(zhuǎn)移狀態(tài),則匹配 失敗并結(jié)束。以及,其進(jìn)一步的技術(shù)方案為
所述每個(gè)位圖占Γ16個(gè)比特,且各個(gè)位圖的寬度是固定的。所述每個(gè)狀態(tài)行包含三元組個(gè)數(shù)的閥值為2 32。所述三元組可以存放在片內(nèi)高速存儲(chǔ)器中或片外高速存儲(chǔ)器中,所述高速存儲(chǔ)器 包括SRAM。本發(fā)明的有益技術(shù)效果是
本發(fā)明基于DFA狀態(tài)轉(zhuǎn)移表的稀疏和相近輸入字符轉(zhuǎn)移狀態(tài)相同這兩個(gè)特征,采用起 始字符、位圖、轉(zhuǎn)移狀態(tài)的三元組編碼方式,能夠有效的壓縮DFA狀態(tài)轉(zhuǎn)移表,從而將壓縮 部分放入高速存儲(chǔ)器中,有效減少片外DRAM存儲(chǔ)空間需求。此外,DFA狀態(tài)轉(zhuǎn)移表存放在 高速存儲(chǔ)器中也有利于硬件實(shí)現(xiàn)高速報(bào)文匹配。
圖1是實(shí)現(xiàn)本發(fā)明的硬件結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
做進(jìn)一步說(shuō)明。
表1示出了現(xiàn)有的采用標(biāo)準(zhǔn)二維線性數(shù)組存儲(chǔ)格式的DFA狀態(tài)轉(zhuǎn)移表。
表1 二維線性數(shù)組存儲(chǔ)格式的DFA狀態(tài)轉(zhuǎn)移表
權(quán)利要求
1.一種深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,其特征在于對(duì)DFA狀 態(tài)轉(zhuǎn)移表的每一行,將轉(zhuǎn)移狀態(tài)相同的相近輸入字符及其轉(zhuǎn)移狀態(tài)用(起始字符,位圖,轉(zhuǎn) 移狀態(tài))三元組表示,存放于高速存儲(chǔ)器中;當(dāng)查找輸入字符的轉(zhuǎn)移狀態(tài)時(shí),并行匹配同一 行的三元組。
2.根據(jù)權(quán)利要求1所述深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,其特征 在于DFA狀態(tài)轉(zhuǎn)移表的壓縮依次執(zhí)行以下步驟1)對(duì)每個(gè)狀態(tài)行,將轉(zhuǎn)移狀態(tài)相同的輸入字符分為同一組;2)對(duì)每個(gè)狀態(tài)行,將分在同一組的相鄰或鄰近的輸入字符及其轉(zhuǎn)移狀態(tài)用(起始字符, 位圖,轉(zhuǎn)移狀態(tài))三元組來(lái)表示;其中起始字符為分組內(nèi)最小的輸入字符;位圖以二進(jìn)制表 示,計(jì)算該組各個(gè)輸入字符相對(duì)于起始字符的偏移值,將位圖上與這些偏移值相對(duì)應(yīng)的比 特位置1,其余比特位置0;3)對(duì)每個(gè)狀態(tài)行,當(dāng)分在同一組的輸入字符不能被單個(gè)所述三元組編碼時(shí),由多個(gè)所 述三元組來(lái)編碼;4)對(duì)每個(gè)狀態(tài)行,如果其包含的所述三元組的個(gè)數(shù)不超過(guò)預(yù)設(shè)的閥值,則該狀態(tài)行用 上述三元組編碼的方式存放在高速存儲(chǔ)器中;否則,該狀態(tài)行不壓縮,用一維線性數(shù)組的方 式存儲(chǔ)在片外DRAM中;5)對(duì)狀態(tài)值重新映射,使得存放三元組的高速存儲(chǔ)器中存放的狀態(tài)值都小于片外DRAM 存放的狀態(tài)值;將片外DRAM存放的狀態(tài)值中的極小值作為分界值;報(bào)文匹配依次執(zhí)行以下步驟6)以DFA狀態(tài)轉(zhuǎn)移表的起始狀態(tài)和報(bào)文首字符作為起始輸入;7)如果該狀態(tài)是終結(jié)狀態(tài)則結(jié)束匹配;如果狀態(tài)值小于所述分界值,則執(zhí)行步驟8查 找存放三元組的高速存儲(chǔ)器;否則,執(zhí)行步驟9查找片外DRAM ;8)根據(jù)一維線性數(shù)組索引的方式,從存放三元組的高速存儲(chǔ)器中讀出該狀態(tài)行的所有 三元組編碼,將每一個(gè)三元組編碼中位圖比特偏移值置1的字符與該輸入字符進(jìn)行匹配; 如果匹配到,則取該字符所在三元組的轉(zhuǎn)移狀態(tài)和報(bào)文的下個(gè)字符作為輸入,執(zhí)行步驟7 ; 如果沒(méi)有匹配到任何三元組,則匹配失敗并結(jié)束;9)根據(jù)二維線性數(shù)組索引的方式,從片外DRAM中讀取對(duì)應(yīng)的轉(zhuǎn)移狀態(tài);如果有轉(zhuǎn)移狀 態(tài),則取該轉(zhuǎn)移狀態(tài)和報(bào)文的下個(gè)字符作為輸入,執(zhí)行步驟7 ;如果沒(méi)有轉(zhuǎn)移狀態(tài),則匹配 失敗并結(jié)束。
3.根據(jù)權(quán)利要求2所述深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,其特征 在于所述每個(gè)位圖占Γ16個(gè)比特,且各個(gè)位圖的寬度是固定的。
4.根據(jù)權(quán)利要求2所述深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,其特征 在于所述每個(gè)狀態(tài)行包含三元組個(gè)數(shù)的閥值為2 32。
5.根據(jù)權(quán)利要求2所述深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法,其特征 在于所述三元組可以存放在片內(nèi)高速存儲(chǔ)器中或片外高速存儲(chǔ)器中,所述高速存儲(chǔ)器包 括 SRAM。
全文摘要
本發(fā)明涉及一種深度報(bào)文檢測(cè)DFA狀態(tài)轉(zhuǎn)移表的壓縮與報(bào)文匹配方法。網(wǎng)絡(luò)設(shè)備對(duì)報(bào)文進(jìn)行七層深度檢測(cè)前,需要將正則表達(dá)式描述的特征庫(kù)轉(zhuǎn)換成DFA狀態(tài)轉(zhuǎn)移表,而該表往往很大并導(dǎo)致難以存儲(chǔ)和高速報(bào)文匹配。本方法使用位圖編碼方式來(lái)壓縮DFA狀態(tài)轉(zhuǎn)移表,將可壓縮部分壓縮后存放在高速存儲(chǔ)器中,難以壓縮部分放在DRAM中,從而有效減少DFA狀態(tài)轉(zhuǎn)移表占用的存儲(chǔ)空間,并易于高速報(bào)文匹配。
文檔編號(hào)H04L12/56GK102075430SQ20111002648
公開(kāi)日2011年5月25日 申請(qǐng)日期2011年1月25日 優(yōu)先權(quán)日2011年1月25日
發(fā)明者丁賢根, 繆慶軍 申請(qǐng)人:無(wú)錫網(wǎng)芯科技有限公司, 江蘇華麗網(wǎng)絡(luò)工程有限公司