1.一種在大流量下進行深度包檢測的方法,包括:
在FPGA內部搭建3層過濾模塊,并行放置L個第一層過濾模塊;每第一層過濾模
塊內部并行放置M個第二層過濾模塊;每第二層過濾模塊內部并行放置N個第三層過濾
模塊,由多個塊狀隨機存儲器組成基礎布隆過濾器;在主控單元的內存中保存一個過濾
模塊的存儲空間,構建與FPGA對應的3層結構,其中第三層組成計數型布隆過濾器;
主控單元對關鍵字取其字節前綴作運算,把運算結果配置為初始化地址,并根據第
三層計數型布隆過濾器的存儲單元內的值的變化更新FPGA內L個對應的存儲單元的值;
以及檢測過程,步驟包括:
a)輸入數據分別送到L個第一層過濾模塊中,并截取相應的字節前綴,同時送入M
個第二層過濾模塊;
b)在第二層過濾模塊內部,截取的字節前綴分別進行hash運算,并根據結果查詢第
三層的基礎布隆過濾器的配置地址并進行匹配;
c)根據待匹配內容在FPGA的第三層基礎布隆過濾器內的各個運算結果,記錄對應
的第一層過濾模塊所在的偏移位置,存儲進FPGA的緩存器中;
d)將被記錄下來的偏移位置對應的待匹配內容,從數據包中重新提取出來,送入
TCAM進行精匹配。
2.如權利要求1所述的方法,其特征在于,所述L個第一層過濾模塊結構、大小相同。
3.如權利要求1所述的方法,其特征在于,待匹配內容輸入所述L個第一層過濾模塊時
依次偏移1個字節。
4.如權利要求1所述的方法,其特征在于,初始化過程包括對關鍵字的添加或刪除操作。
5.如權利要求1所述的方法,其特征在于,L的值由需要進行深度包檢測的數據流量和
FPGA的工作時鐘決定;M的值由關鍵字的長度分布情況決定;N的值由根據關鍵
字長度采用的hash算法的種類除以2得到。
6.如權利要求1所述的方法,其特征在于,所述字節前綴的截取值為存儲空間中小于關
鍵字字節的最大匹配長度。
7.如權利要求1所述的方法,其特征在于,每個第二層過濾模塊包含不同的存儲單元數。
8.如權利要求1所述的方法,其特征在于,所述第二層過濾模塊進行“或操作”后輸出
結果;所述基礎布隆過濾器的匹配結果需要進行“與運算”后輸出。
9.如權利要求1所述的方法,其特征在于,所述第三層過濾模塊同時進行雙端口匹配操
作,其中一個端口在進行關鍵字更新時進行配置操作。
10.如權利要求1所述的方法,其特征在于,所述主控單元使用與FPGA中完全相同的hash
運算。
展開