[發明專利]一種在大流量下進行深度包檢測的方法有效
| 申請號: | 201210004781.2 | 申請日: | 2012-01-09 |
| 公開(公告)號: | CN102546299A | 公開(公告)日: | 2012-07-04 |
| 發明(設計)人: | 岳培培 | 申請(專利權)人: | 北京銳安科技有限公司 |
| 主分類號: | H04L12/26 | 分類號: | H04L12/26;H04L29/06 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 余功勛 |
| 地址: | 100044 北京市海*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 流量 進行 深度 檢測 方法 | ||
技術領域
本發明涉及一種在大流量下進行深度包檢測的方法,屬于數據通信領域。
背景技術
在數據通信網絡中,深度包檢測技術的應用很廣泛,經常用于數據包應用類型分析、用戶行為分析,以及入侵檢測、病毒/蠕蟲檢測等方面。
深度包檢測技術的實現方法分為軟件和硬件兩種。軟件方法利用各種模式匹配算法來進行特定關鍵字的匹配,但軟件進行深度包檢測的速度有限,不能保證線速處理。而采用硬件的方法實現深度包檢測,可以在大流量下實現線速處理。
使用硬件進行深度包檢測的方法很多,當關鍵字量大,且需要在運行時更新時,常采用“現場可編程門陣列”(FPGA)加上“三相式內容尋址存儲器”(TCAM)的實現方式,將數據包輸入到FPGA的緩存中,然后發送給TCAM進行匹配,TCAM將匹配結果返回給FPGA繼續處理。雖然TCAM的運算速度非???,當前主流的TCAM的查找速度能達到300M次查找/秒。但在大流量網絡環境下,例如10G~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個過濾模塊進行匹配時依次偏移1個字節,從而使待匹配內容在每個時鐘周期內都可以偏移L個字節。L的值由需要進行深度包檢測的數據流量和FPGA的工作時鐘決定。
b)第一層過濾模塊內部并行放置M個第二層過濾模塊,用于匹配多種長度的關鍵字。M的值由關鍵字的長度分布情況決定。
c)第二層過濾模塊內部并行放置N個第三層過濾模塊,每個第三層過濾模塊由塊狀隨機存儲器組成基礎布隆過濾器,其中每個布隆過濾器的每個存儲單元所存儲的內容是1bit。N的值由根據關鍵字長度采用的hash算法的種類除以2得到。
2)主控單元根據用戶的添加及刪除操作初始化配置地址。
a)在操作系統的主控單元的內存中保存有一個過濾模塊的存儲空間,同樣分為3個層次,其中第三層是計數型布隆過濾器,即,在第三層的每個存儲單元中所存儲的內容并不是1bit,而是包含多bit的一個整數。
b)當添加關鍵字時,若關鍵字長度為m個字節,則在主控單元的存儲空間中找到匹配長度為n個字節的第二層過濾模塊,n為小于等于m的最大值,對關鍵字的前n個字節(n字節前綴)進行hash運算,并把運算結果作為初始化地址,查詢N個第三層計數型布隆過濾器,修改相應配置地址內的值(通常是加1)。若第三層計數型布隆過濾器的存儲單元內的值發生變化(如從0變為非0),則對應更新FPGA內L個對應的存儲單元的值(如變為1)。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京銳安科技有限公司,未經北京銳安科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210004781.2/2.html,轉載請聲明來源鉆瓜專利網。





