本發(fā)明涉及信息安全領域,尤其涉及一種數(shù)據包驗證方法及系統(tǒng)。
背景技術:
為了保證信息的安全,現(xiàn)有技術提供了多種驗證方式,其中,正則表達式因為其特殊的數(shù)據處理特點,已成為現(xiàn)在網絡數(shù)據檢測和識別的軟件工具語言。
在服務器上,基于軟件實現(xiàn)的正則表達式采用串行順序方式執(zhí)行指令,當今隨著互聯(lián)網發(fā)展與普及,服務器對海量網絡數(shù)據包的檢查變得越發(fā)困難,難以進一步提升檢測速度。
技術實現(xiàn)要素:
本發(fā)明提供了一種數(shù)據包驗證方法及系統(tǒng),以提供一種新的數(shù)據包驗證方法。
本發(fā)明提供了一種數(shù)據包驗證方法,包括:
服務器接收待驗證數(shù)據包;
FPGA從服務器接收待驗證數(shù)據包及用于驗證待驗證數(shù)據包的正則表達式;
FPGA并行調用多個微核執(zhí)行正則表達式對待驗證數(shù)據包進行驗證;
FPGA將各微核的檢驗結果合并后發(fā)送至服務器。
進一步的,在FPGA并行調用多個微核之前,還包括:FPGA獲取待驗證數(shù)據包的所有取值,根據所有取值的數(shù)量,并行調用對應數(shù)量的微核。
進一步的,在并行調用對應數(shù)量的微核之后,還包括:FPGA根據待驗證數(shù)據包的大小及速度,調整被調用微核的數(shù)量。
進一步的,還包括:FPGA根據正則表達式的檢驗結果,將待驗證數(shù)據包并行跳轉至其他被調用微核。
進一步的,還包括:FPGA從服務器獲取新的正則表達式,并替換當前使用的正則表達式。
進一步的,F(xiàn)PGA并行調用多個微核執(zhí)行正則表達式對待驗證數(shù)據包進行驗證包括:
FPGA將從服務器接收的正則表達式緩存在正則表達式矩陣中;
FPGA將從服務器接收的網絡數(shù)據包以包的形式緩存在網絡數(shù)據包中;
FPGA每次從數(shù)據包中讀出一個字節(jié),將字節(jié)并行和所有可能字符比較,每個比較結果輸出一個比特,所有比特組成一個判決數(shù)組;
FPGA將每個判決數(shù)組和正則表達式矩陣輸出的掩膜數(shù)據進行與操作,得到一個判決驗證結果輸出;
FPGA從正則表達式矩陣中讀取下一個掩膜數(shù)據,然后讀取下一個字節(jié),重復以上步驟,直到數(shù)據包檢驗結束;
FPGA將待驗證數(shù)據包中各字節(jié)對應的判決驗證結果,合并得到待驗證數(shù)據包的檢驗結果。
本發(fā)明提供了一種數(shù)據包驗證系統(tǒng),包括:服務器及FPGA,F(xiàn)PGA包括網絡數(shù)據包分配矩陣模塊、多個數(shù)據包微核判斷模塊、控制模塊、正則表達式模塊及判斷結果匯總模塊,其中,
服務器用于接收待驗證數(shù)據包;
網絡數(shù)據包分配矩陣模塊用于從服務器接收待驗證數(shù)據包;
正則表達式模塊用于獲取用于驗證待驗證數(shù)據包的正則表達式;
數(shù)據包微核判斷模塊用于執(zhí)行正則表達式對待驗證數(shù)據包進行驗證
控制模塊用于并行調用多個數(shù)據包微核判斷模塊執(zhí)行正則表達式對待驗證數(shù)據包進行驗證;
判斷結果匯總模塊用于將各微核的檢驗結果合并后發(fā)送至服務器。
進一步的,在FPGA并行調用多個微核之前,控制模塊還用于獲取待驗證數(shù)據包的所有取值,根據所有取值的數(shù)量,并行調用對應數(shù)量的數(shù)據包微核判斷模塊。
進一步的,在并行調用對應數(shù)量的微核之后,控制模塊還用于根據待驗證數(shù)據包的大小及速度,調整被調用數(shù)據包微核判斷模塊的數(shù)量。
進一步的,控制模塊還用于根據正則表達式的檢驗結果,將待驗證數(shù)據包并行跳轉至其他被調用數(shù)據包微核判斷模塊。
進一步的,正則表達式模塊還用于從服務器獲取新的正則表達式,并替換當前使用的正則表達式。
進一步的,數(shù)據包微核判斷模塊用于將從服務器接收的正則表達式緩存在正則表達式矩陣中,將從服務器接收的網絡數(shù)據包以包的形式緩存在網絡數(shù)據包中,每次從數(shù)據包中讀出一個字節(jié),將每個字節(jié)并行和所有可能字符比較,每個比較結果輸出一個比特,所有比特組成一個判決數(shù)組,將每個判決數(shù)組和正則表達式矩陣輸出的掩膜數(shù)據進行與操作,得到一個判決驗證結果輸出,從正則表達式矩陣中讀取下一個掩膜數(shù)據,然后讀取下一個字節(jié),重復以上步驟,直到數(shù)據包檢驗結束,將待驗證數(shù)據包中各字節(jié)對應的判決驗證結果,合并得到待驗證數(shù)據包的檢驗結果。
本發(fā)明的有益效果:
本發(fā)明提供了一種數(shù)據包驗證方法,基于FPGA實現(xiàn)的并行正則表達式算法以更短的周期實現(xiàn)算法加速,支持高速實時數(shù)據包檢查,F(xiàn)PGA可根據需要同時并行例化多個算法計算核,實現(xiàn)算法的倍數(shù)提升。
附圖說明
圖1為本發(fā)明第一實施例提供的數(shù)據包驗證系統(tǒng)的結構示意圖;
圖2為本發(fā)明第二實施例提供的數(shù)據包驗證方法的流程圖;
圖3為本發(fā)明第三實施例涉及的驗證系統(tǒng)的示意圖;
圖4為本發(fā)明第三實施例涉及的算法對比示意圖;
圖5為本發(fā)明第三實施例涉及的正則表達式實現(xiàn)方法的示意圖。
具體實施方式
現(xiàn)通過具體實施方式結合附圖的方式對本發(fā)明做輸出進一步的詮釋說明。
第一實施例:
圖1為本發(fā)明第一實施例提供的數(shù)據包驗證系統(tǒng)的結構示意圖,由圖1可知,在本實施例中,本發(fā)明提供的數(shù)據包驗證系統(tǒng)包括:服務器1及FPGA2,F(xiàn)PGA2包括網絡數(shù)據包分配矩陣模塊21、多個數(shù)據包微核判斷模塊22、控制模塊23、正則表達式模塊24及判斷結果匯總模塊25,其中,
服務器1用于接收待驗證數(shù)據包;
網絡數(shù)據包分配矩陣模塊21用于從服務器接收待驗證數(shù)據包;
正則表達式模塊24用于獲取用于驗證待驗證數(shù)據包的正則表達式;
數(shù)據包微核判斷模塊22用于執(zhí)行正則表達式對待驗證數(shù)據包進行驗證
控制模塊23用于并行調用多個數(shù)據包微核判斷模塊執(zhí)行正則表達式對待驗證數(shù)據包進行驗證;
判斷結果匯總模塊25用于將各微核的檢驗結果合并后發(fā)送至服務器。
在一些實施例中,在FPGA并行調用多個微核之前,上述實施例中的控制模塊23還用于獲取待驗證數(shù)據包的所有取值,根據所有取值的數(shù)量,并行調用對應數(shù)量的數(shù)據包微核判斷模塊。
在一些實施例中,在并行調用對應數(shù)量的微核之后,上述實施例中的控制模塊23還用于根據待驗證數(shù)據包的大小及速度,調整被調用數(shù)據包微核判斷模塊的數(shù)量。
在一些實施例中,上述實施例中的控制模塊23還用于根據正則表達式的檢驗結果,將待驗證數(shù)據包并行跳轉至其他被調用數(shù)據包微核判斷模塊。
在一些實施例中,上述實施例中的正則表達式模塊24還用于從服務器獲取新的正則表達式,并替換當前使用的正則表達式。
在一些實施例中,上述實施例中的數(shù)據包微核判斷模塊22用于將從服務器接收的正則表達式緩存在正則表達式矩陣中,將從服務器接收的網絡數(shù)據包以包的形式緩存在網絡數(shù)據包中,每次從數(shù)據包中讀出一個字節(jié),將每個字節(jié)并行和所有可能字符比較,每個比較結果輸出一個比特,所有比特組成一個判決數(shù)組,將每個判決數(shù)組和正則表達式矩陣輸出的掩膜數(shù)據進行與操作,得到一個判決驗證結果輸出,從正則表達式矩陣中讀取下一個掩膜數(shù)據,然后讀取下一個字節(jié),重復以上步驟,直到數(shù)據包檢驗結束,將待驗證數(shù)據包中各字節(jié)對應的判決驗證結果,合并得到待驗證數(shù)據包的檢驗結果。
第二實施例:
圖2為本發(fā)明第二實施例提供的數(shù)據包驗證方法的流程圖,由圖2可知,在本實施例中,本發(fā)明提供的數(shù)據包驗證方法包括:
S201:服務器接收待驗證數(shù)據包;
S202:FPGA從服務器接收待驗證數(shù)據包及用于驗證待驗證數(shù)據包的正則表達式;
S203:FPGA并行調用多個微核執(zhí)行正則表達式對待驗證數(shù)據包進行驗證;
S204:FPGA將各微核的檢驗結果合并后發(fā)送至服務器。
在一些實施例中,上述實施例中的方法在FPGA并行調用多個微核之前,還包括:FPGA獲取待驗證數(shù)據包的所有取值,根據所有取值的數(shù)量,并行調用對應數(shù)量的微核。
在一些實施例中,上述實施例中的方法在并行調用對應數(shù)量的微核之后,還包括:FPGA根據待驗證數(shù)據包的大小及速度,調整被調用微核的數(shù)量。
在一些實施例中,上述實施例中的方法還包括:FPGA根據正則表達式的檢驗結果,將待驗證數(shù)據包并行跳轉至其他被調用微核。
在一些實施例中,上述實施例中的方法還包括:FPGA從服務器獲取新的正則表達式,并替換當前使用的正則表達式。
在一些實施例中,上述實施例中的FPGA并行調用多個微核執(zhí)行正則表達式對待驗證數(shù)據包進行驗證包括:
FPGA將從服務器接收的正則表達式緩存在正則表達式矩陣中;
FPGA將從服務器接收的網絡數(shù)據包以包的形式緩存在網絡數(shù)據包中;
FPGA每次從數(shù)據包中讀出一個字節(jié),將每個字節(jié)并行和所有可能字符比較,每個比較結果輸出一個比特,所有比特組成一個判決數(shù)組;
FPGA將每個判決數(shù)組和正則表達式矩陣輸出的掩膜數(shù)據進行與操作,得到一個判決驗證結果輸出;
FPGA從正則表達式矩陣中讀取下一個掩膜數(shù)據,然后讀取下一個字節(jié),重復以上步驟,直到數(shù)據包檢驗結束;
FPGA將待驗證數(shù)據包中各字節(jié)對應的判決驗證結果,合并得到待驗證數(shù)據包的檢驗結果。
現(xiàn)結合具體應用場景對本發(fā)明做進一步的詮釋說明。
第三實施例:
針對基于軟件實現(xiàn)的正則表達式采用串行順序方式執(zhí)行指令,難以進一步提升很檢測速度。本實施例提供了新的驗證系統(tǒng),如圖3所示,基于FPGA的硬件以PCIE總線結合到服務器系統(tǒng)中,按服務器的指令從服務器中讀取數(shù)據和正則表達式算法,通過并行例化多個數(shù)據包微處理核實現(xiàn)并行正則表達式檢驗,把最后的檢驗結果上傳到服務器。本產品使用基于FPGA硬件實現(xiàn)的正則表達式算法系統(tǒng),首先FPGA以類似DMA的功能,分擔服務器對網絡數(shù)據包的處理,其次基于FPGA實現(xiàn)的并行正則表達式算法以更短的周期實現(xiàn)算法加速,支持高速實時數(shù)據包檢查,最后FPGA可根據需要同時并行例化多個算法計算核,實現(xiàn)算法的倍數(shù)提升。
具體的,在圖3中,網絡數(shù)據包分配矩陣:通過PCIE接口接收來自服務器的網絡數(shù)據包,緩存在存儲單元DDR中。數(shù)據包微判斷核:對網絡數(shù)據包進行判斷給出結果網絡數(shù)據包:查看分配矩陣的數(shù)據信息,讀取網絡數(shù)據包。正則表達式判斷:依次比較網絡數(shù)據包中的數(shù)據是否符合正則表達式。判斷結果:把判斷結果上傳給判斷結果匯總。正則表達式判斷:正則表達式的判斷規(guī)則,可通過PCIE進行更新。判斷結果匯總:把判斷結果匯總,上傳會服務器。
例如對正則表達式(11|22|33|A|B|C)的計算,如圖4所示,左邊:處理器的串行處理過程,最壞需要6級處理,右邊:FPGA的并行處理速度更快,最壞需要2級處理。
在實際應用中,本產品如圖3所示,整個正則表達式算法系統(tǒng),由網絡數(shù)據包分配矩陣通過PCIe接口接收并緩存來自服務器的數(shù)據包,各微處理器在空閑時查看分配矩陣的數(shù)據狀態(tài),然后去除數(shù)據進行分析。最后各處理器的判斷結果匯總,上傳回服務器。其中架構可以支持多微處理器同時進行數(shù)據處理,且微處理器的個數(shù)可以根據網絡數(shù)據的大小和速度做調整。
本產品如圖4所示,對正則表達式算法的實現(xiàn),基于FPGA硬件可采用并行字符檢驗,同時支持并行跳轉,以便適配更寬范圍的正則表達式,支持高速算法。
本產品如圖5所示,以只有8個字符有效為例的系統(tǒng)架構,本實施例提供的驗證方法包括:
S51.FPGA將從服務器接收的正則表達式緩存在正則表達式矩陣中
S52.FPGA將從服務器接收的網絡數(shù)據包以包的形式緩存在網絡數(shù)據包RAM中
S53.FPGA每次從數(shù)據包RAM中讀出一個Byte
S54.每個Byte并行和所有可能字符比較,每個比較結果輸出一個bit(相同為1,不同為0),所有比特組成一個判決數(shù)組Pattern(有多少個可能字符,Pattern就有多少Bit)
S55.每個Pattern和正則表達式矩陣輸出的掩膜數(shù)據Mask進行‘與’操作,得到一個判決驗證結果(即‘與’結果)后輸出;
S56.從正則表達式矩陣中讀取下一個Mask數(shù)據,然后讀取下一個Byte,重復以上步驟,直到結束得到檢驗結果;將待驗證數(shù)據包中各字節(jié)對應的判決驗證結果,合并得到所述待驗證數(shù)據包的檢驗結果。
綜上可知,通過本發(fā)明的實施,至少存在以下有益效果:
本發(fā)明提供了一種數(shù)據包驗證方法,基于FPGA實現(xiàn)的并行正則表達式算法以更短的周期實現(xiàn)算法加速,支持高速實時數(shù)據包檢查,F(xiàn)PGA可根據需要同時并行例化多個算法計算核,實現(xiàn)算法的倍數(shù)提升。
以上僅是本發(fā)明的具體實施方式而已,并非對本發(fā)明做任何形式上的限制,凡是依據本發(fā)明的技術實質對以上實施方式所做的任意簡單修改、等同變化、結合或修飾,均仍屬于本發(fā)明技術方案的保護范圍。