麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種在大流量下進行深度包檢測的方法

文檔序號:7886800閱讀:609來源:國知局
專利名稱:一種在大流量下進行深度包檢測的方法
技術領域
本發明涉及一種在大流量下進行深度包檢測的方法,屬于數據通信領域。
技術背景
在數據通信網絡中,深度包檢測技術的應用很廣泛,經常用于數據包應用類型分析、用戶行為分析,以及入侵檢測、病毒/蠕蟲檢測等方面。
深度包檢測技術的實現方法分為軟件和硬件兩種。軟件方法利用各種模式匹配算法來進行特定關鍵字的匹配,但軟件進行深度包檢測的速度有限,不能保證線速處理。而采用硬件的方法實現深度包檢測,可以在大流量下實現線速處理。
使用硬件進行深度包檢測的方法很多,當關鍵字量大,且需要在運行時更新時,常采用“現場可編程門陣列”(FPGA)加上“三相式內容尋址存儲器”(TCAM)的實現方式,將數據包輸入到FPGA的緩存中,然后發送給TCAM進行匹配,TCAM將匹配結果返回給FPGA繼續處理。雖然TCAM的運算速度非??欤斍爸髁鞯腡CAM的查找速度能達到300M次查找/ 秒。但在大流量網絡環境下,例如IOG 40G,該查找速度仍然達不到每次查找只偏移1個字節。而在需要查找浮動關鍵字的場合,由于關鍵字的起始位置不固定,因此查找過程需要每次僅偏移一個字節進行比對。這時,單純使用TCAM不能滿足系統要求。
另一種常用的規則匹配方法是使用布隆過濾器(Bloom Filter)進行匹配。布隆過濾器是由Burton Bloom在1970年提出,其基本工作方法如下
首先是配置過程生成一個位串,并清0,位串中的每個存儲單元對應一個地址。 然后,對需要進行匹配的每個關鍵字都用多個散列(hash)函數進行計算,并把計算結果作為配置地址,把位串中相應的存儲單元置為1。
需要進行匹配時,把待匹配內容用同樣的多個hash函數計算,將多個結果作為位串中的查詢地址與配置地址進行匹配。若查詢到的所有結果不是都為1,說明匹配不成功; 若結果都為1,說明匹配有可能成功,且成功的概率可以計算得到。但是當不匹配的待匹配內容的hash運算結果和關鍵字的hash運算結果相同時,可能會報告匹配成功(假陽性)。發明內容
本發明針對上述FPGA+TCAM方式實現深度包檢測的過程中,大流量時遇到的問題,提出了一種在大流量下進行深度包檢測的方法,充分利用了 FPGA的特點,在操作系統的主控單元(由用戶控制)的內存中和FPGA中分別設置不同種類和數量的布隆計數器,利用布隆過濾器進行初步過濾,使得關鍵字的增加、刪除、匹配過程方便易行。
本發明的硬件環境采用主控單元的內存+FPGA+TCAM。在主控單元的內存中實現關鍵字統計,在FPGA內部實現布隆過濾器進行粗匹配,隨后在TCAM中實現精匹配。
具體技術方案為
1)在FPGA內部搭建3個層次結構的過濾模塊。
a)并行放置L個結構、大小相同的第一層過濾模塊,待匹配內容在通過這L個過濾模塊進行匹配時依次偏移I個字節,從而使待匹配內容在每個時鐘周期內都可以偏移L個字節。L的值由需要進行深度包檢測的數據流量和FPGA的工作時鐘決定。
b)第一層過濾模塊內部并行放置M個第二層過濾模塊,用于匹配多種長度的關鍵字。M的值由關鍵字的長度分布情況決定。
c)第二層過濾模塊內部并行放置N個第三層過濾模塊,每個第三層過濾模塊由塊狀隨機存儲器組成基礎布隆過濾器,其中每個布隆過濾器的每個存儲單元所存儲的內容是 lbit。N的值由根據關鍵字長度采用的hash算法的種類除以2得到。
2)主控單元根據用戶的添加及刪除操作初始化配置地址。
a)在操作系統的主控單元的內存中保存有一個過濾模塊的存儲空間,同樣分為3 個層次,其中第三層是計數型布隆過濾器,即,在第三層的每個存儲單元中所存儲的內容并不是lbit,而是包含多bit的一個整數。
b)當添加關鍵字時,若關鍵字長度為m個字節,則在主控單元的存儲空間中找到匹配長度為n個字節的第二層過濾模塊,n為小于等于m的最大值,對關鍵字的前n個字節 (n字節前綴)進行hash運算,并把運算結果作為初始化地址,查詢N個第三層計數型布隆過濾器,修改相應配置地址內的值(通常是加I)。若第三層計數型布隆過濾器的存儲單元內的值發生變化(如從0變為非0),則對應更新FPGA內L個對應的存儲單元的值(如變為 I)。
c)當刪除關鍵字時,若關鍵字長度為m,則在主控的存儲空間中找到匹配長度為n 的第二層過濾模塊,n為小于等于m的最大值,對其n字節前綴進行hash運算,并把運算結果作為地址,查詢N個第三層計數型布隆過濾器,修改相應地址內的值(通常是減I)。若第三層計數型布隆過濾器的存儲單元內的值發生變化(如從非0變為0),則對應更新FPGA 內L個對應的存儲單元的值(如變為0)。
3)進行關鍵字匹配操作。
a)當某個待匹配內容在FPGA的第三層基礎布隆過濾器內的各個hash運算查詢存儲單元的值為全部命中(如都為I),說明粗匹配成功。對應的第一層過濾模塊所在的偏移位置被記錄下來,存儲進FPGA的緩存器中。每個時鐘周期有0 L個粗匹配成功結果。
b)將與第一層過濾模塊中粗匹配成功的偏移位置對應的待匹配內容,從數據包中重新提取出來,送入TCAM進行精匹配。
M值由關鍵字的長度分布情況決定。若關鍵字的長度分布范圍較大,則并不需要對每一種關鍵字長度都提供一個第二層過濾模塊。對于長度介于兩個第二層過濾模塊的存儲空間大小之間的關鍵字,僅取其字節前綴進行配置。
所述步驟2c)中,每個第三層布隆過濾器對應2種hash運算的結果,這利用了 FPGA中雙端口存儲器每個時鐘周期可以進行2次查找的特性。
根據關鍵字的數量及長度分布情況,合理設置L/M/N的值,以及每個第三層布隆過濾器的大小,可以把粗過濾的誤命中率降低到TCAM匹配能力范圍內。
本發明通過兩步匹配的方法,既實現了精確匹配,又減少了 TCAM的壓力。在布隆過濾器的實現過程中,采用了層次化的設計方法,并充分利用了 FPGA內豐富的雙端口隨機存儲器配置方式靈活的特點。設計中充分考慮了關鍵字量大且長度不同的問題,并且該方法能夠方便的進行關鍵字的增加、刪除操作。


圖1為主控單元+FPGA+TCAM進行深度包檢測的結構;
圖2為粗匹配模塊內部結構;
圖3為第一層過濾模塊內部結構;
圖4為第二層過濾模塊的內部結構;
圖5為第三層基礎布隆過濾器內部結構;
圖6為主控單元中存儲的計數型布隆過濾器。
具體實施方式
為讓本發明的上述特征和優點能更明顯易懂,下文特舉實施例,并配合附圖作如下詳細說明。
本發明的硬件環境采用操作系統的主控單元+FPGA+TCAM的結構,如圖1所示。主控單元實現關鍵字統計,根據用戶的添加/刪除關鍵字的操作初始化配置地址,數據包進入FPGA后,輸入到緩存器,然后進行粗匹配(布隆過濾器)、精匹配(TCAM匹配),最后經過處理后輸出。
首先在FPGA內部搭建3個層次結構的過濾模塊。
FPGA內粗匹配模塊結構如圖2所示。L個第一層過濾模塊并行排列(L的值由需要進行深度包檢測的數據流量和FPGA的工作時鐘決定,這里以L = 4為例,但并不以此為限),當數據輸入到相鄰的兩個第一層過濾模塊時,彼此偏移1個字節,也就是說每個第一層過濾模塊對應一個偏移位置。由于內部采用流水線操作,第一層過濾模塊每個時鐘周期都可以輸入新的數據,因此,相當于輸入數據每個時鐘周期可以偏移4個字節GB)。因此, 假設FPGA工作頻率為300MHz時,L = 4可以處理的數據流量為300M*4*8bit = 9. 6Gbps。 圖中以關鍵字粗匹配最長前綴為8進行示例,但并不以此為限。
L個第一層過濾模塊的內部結構完全相同,其結構如圖3所示。圖中,某個第一層過濾模塊內設置M個第二層過濾模塊,且并行排列(這里以M = 3為例)。3個第二層過濾模塊分別處理不同長度的關鍵字。這里,我們假設,最小的關鍵字長度為4B。3個第二層過濾模塊進行“或操作”后輸出結果。
M個第二層過濾模塊的內部結構大致相同,但每個第二層過濾模塊包含不同的存儲單元數。事實上,是根據存儲空間的大小來設置包含不同存儲單元數的第二層過濾模塊結構。圖3的第二層過濾模塊的結構如圖4所示。對于任一第二層過濾模塊,若需要使用的hash算法為2N個,則需要在該第二層過濾模塊中并聯使用N個第三層過濾模塊(這里以N = 2為例,但不以此為限),由塊狀隨機存儲器構成基礎布隆過濾器。將輸入的數據分別按照2N個hash算法進行運算后,使用基礎布隆過濾器進行運算結果的查找。基礎布隆過濾器的匹配結果需要進行“與運算”后輸出。
基礎布隆過濾器的內部結構如圖5所示,由FPGA的塊狀隨機存儲器組成,配置成寬度為Ibit的模式。利用該存儲器能夠同時進行雙端口操作的優勢,可以同時進行兩個 hash結果的查找。查找結果經過“與操作”后輸出。其中一個端口可以在進行關鍵字更新時進行配置操作。
布隆過濾器可能出現誤匹配的現象,為了減少誤匹配導致的TCAM負載過重,需要在一定的關鍵字數量下,盡量利用FPGA內的存儲器,加大布隆過濾器的存儲空間。并且,還可以根據關鍵字的長度分布,對多個第二層過濾模塊,采用不同大小的存儲空間。
在FPGA內部實現布隆過濾,需要一個主控單元作為用戶進行添加、刪除關鍵字的操作接口,因此在FPGA外部通過接口與主控單元連接。而在主控單元的內存中,也保存有一個存儲空間,該存儲空間只包括一個第一層過濾模塊,及該層過濾模塊內部的第二層和第三層結構,如圖6所示。主控單元的內存中的第三層過濾模塊,由塊狀隨機存儲器構成計數型布隆過濾器。在計數型布隆過濾器中,每個存儲單元存儲的都是包含多bit的一個整數,每次添加操作會使數據加1,刪除操作會使數據減1,因此計數型布隆過濾器實際記錄的是對關鍵字進行hash運算后得到的相同結果的重復次數。
下面詳細描述添加、刪除操作的過程
系統初始化過程中進行添加關鍵字操作時,主控單元首先分析該關鍵字的長度, 由于第二層過濾模塊處理的長度并不覆蓋所有的關鍵字長度,因此,某些關鍵字(如本身特別長的,或是超過設置時定義的最長長度的關鍵字)需要取其前綴。如圖2中所示的三個第二層過濾模塊,其存儲單元分別為4B、6B、8B,若關鍵字長度為5B,則需要取其4B前綴, 對應1號第二層過濾模塊;若關鍵字長度為7B,則需要取其6B前綴,對應2號第二層過濾模塊;若關鍵字長度在8B以上(含8B),則需要取其8B前綴,對應3號第二層過濾模塊。(第二層過濾模塊的存儲單元可以根據實際情況自行設置,并不局限于上述情況。)然后,主控單元使用與FPGA中完全相同的hash運算,將結果作為配置地址,查詢到第三層的計數型布隆過濾器的相應位置,并把該位置的數據加1。若N次加1運算使得某位置的數據由0變為非0,則把FPGA中L個第一層過濾模塊對應的第三層布隆過濾器中相應的配置地址都修改成1 ;若這些運算沒有從0到非0的跳變,則不需修改FPGA內的存儲值。隨后,主控單元把該關鍵字添加到TCAM中。
系統初始化過程中進行刪除操作時,主控單元同樣要分析該關鍵字的長度并視情況取其前綴,其步驟與添加操作時一樣,故不再贅述。之后,進行與FPGA中完全相同的hash 運算,將結果作為配置地址,查詢到內存中的計數型布隆過濾器的相應位置,并把該位置的數據減1。若N次減1運算使得某位置的數據由非0變為0,則把FPGA中L個第一層過濾模塊對應的第三層布隆過濾器中的相應的配置地址都修改成0。隨后,主控單元把該關鍵字從TCAM中刪除。
添加或刪除操作關鍵字的操作,在匹配過程中也能隨時進行,其步驟與系統初始化時一致,故不再贅述。
匹配過程如下
匹配過程中,輸入數據按照一字節的偏移分別送到L個第一層過濾模塊中,如圖2 所示。在每個第一層過濾模塊內部,輸入數據截取相應的字節前綴,同時送入M個第二層過濾模塊。例如輸入數據為“一種新的檢測方法”,則在圖3中即表現為截取“一種”送入1 號第二層過濾模塊(一個漢字占2個字節長度),同時截取“一種新的”送入2號第二層過濾模塊,以及截取“一種新的檢測”送入3號第二層過濾模塊。(第二層過濾模塊的存儲單元可以根據實際情況自行設置,并不局限于上述情況。)
在第二層過濾模塊內部,截取的字節前綴分別進行2*N次hash運算,并根據hash結果查詢第三層的基礎布隆過濾器的配置地址并進行匹配。利用FPGA中雙端口存儲器每個時鐘周期可以進行2次查找的特性,每個第三層的布隆過濾器對應2種hash運算的結果。當查詢地址對應的配置地址均顯示為1,則表示匹配成功。匹配后,所有的查詢結果進行“與操作”,并在第二層過濾模塊輸出后進行“或操作”,只有當結果均為I才表示粗匹配成功。若第一層過濾模塊顯示當前粗匹配成功,則其對應的偏移位置送入精匹配模塊,從該偏移位置開始的數據在精匹配模塊控制下送入TCAM進行精匹配。
最后,TCAM將精匹配結果反饋給FPGA作處理,然后FPGA將最終的匹配結果輸出。
權利要求
1.一種在大流量下進行深度包檢測的方法,包括在FPGA內部搭建3層過濾模塊,并行放置L個第一層過濾模塊;每第一層過濾模塊內部并行放置M個第二層過濾模塊;每第二層過濾模塊內部并行放置N個第三層過濾模塊,由多個塊狀隨機存儲器組成基礎布隆過濾器;在主控單元的內存中保存一個過濾模塊的存儲空間,構建與FPGA對應的3層結構,其中第三層組成計數型布隆過濾器;主控單元對關鍵字取其字節前綴作運算,把運算結果配置為初始化地址,并根據第三層計數型布隆過濾器的存儲單元內的值的變化更新FPGA內L個對應的存儲單元的值; 以及檢測過程,步驟包括a)輸入數據分別送到L個第一層過濾模塊中,并截取相應的字節前綴,同時送入M個第二層過濾模塊;b)在第二層過濾模塊內部,截取的字節前綴分別進行hash運算,并根據結果查詢第三層的基礎布隆過濾器的配置地址并進行匹配;c)根據待匹配內容在FPGA的第三層基礎布隆過濾器內的各個運算結果,記錄對應的第一層過濾模塊所在的偏移位置,存儲進FPGA的緩存器中;d)將被記錄下來的偏移位置對應的待匹配內容,從數據包中重新提取出來,送入TCAM 進行精匹配。
2.如權利要求I所述的方法,其特征在于,所述L個第一層過濾模塊結構、大小相同。
3.如權利要求I所述的方法,其特征在于,待匹配內容輸入所述L個第一層過濾模塊時依次偏移I個字節。
4.如權利要求I所述的方法,其特征在于,初始化過程包括對關鍵字的添加或刪除操作。
5.如權利要求I所述的方法,其特征在于,L的值由需要進行深度包檢測的數據流量和 FPGA的工作時鐘決定;M的值由關鍵字的長度分布情況決定;,N的值由根據關鍵字長度采用的hash算法的種類除以2得到。
6.如權利要求I所述的方法,其特征在于,所述字節前綴的截取值為存儲空間中小于關鍵字字節的最大匹配長度。
7.如權利要求I所述的方法,其特征在于,每個第二層過濾模塊包含不同的存儲單元數。
8.如權利要求I所述的方法,其特征在于,所述第二層過濾模塊進行“或操作”后輸出結果;所述基礎布隆過濾器的匹配結果需要進行“與運算”后輸出。
9.如權利要求I所述的方法,其特征在于,所述第三層過濾模塊同時進行雙端口匹配操作,其中一個端口在進行關鍵字更新時進行配置操作。
10.如權利要求I所述的方法,其特征在于,所述主控單元使用與FPGA中完全相同的 hash運算。
全文摘要
本發明提出了一種在大流量下進行深度包檢測的方法,針對FPGA+TCAM方式實現深度包檢測的過程中,大流量時遇到的問題,在操作系統的主控單元的內存中和FPGA中分別構建不同種類和數量的層次化布隆計數器,利用布隆過濾器進行初步過濾,在主控單元的內存中實現關鍵字統計,在FPGA內部實現布隆過濾器進行粗匹配,隨后在TCAM中實現精匹配。本發明通過兩步匹配的方法,既實現了精確匹配,又減少了TCAM的壓力,并充分考慮了關鍵字量大且長度不同的問題,使得關鍵字的增加、刪除、匹配過程方便易行。
文檔編號H04L29/06GK102546299SQ20121000478
公開日2012年7月4日 申請日期2012年1月9日 優先權日2012年1月9日
發明者岳培培 申請人:北京銳安科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 荔波县| 台中市| 廊坊市| 台中县| 合川市| 深州市| 沂源县| 新源县| 鄂伦春自治旗| 普兰店市| 罗山县| 洱源县| 汪清县| 潢川县| 盐源县| 阿克| 宝应县| 清丰县| 定西市| 万全县| 海安县| 安吉县| 平和县| 安化县| 应城市| 宜城市| 固镇县| 江阴市| 南丰县| 临邑县| 平阳县| 老河口市| 丰顺县| 凌云县| 高淳县| 阿瓦提县| 淮安市| 汶川县| 贺州市| 吉安市| 河间市|