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