一种数据包验证方法及系统与流程

文档序号:11147420阅读:359来源:国知局
一种数据包验证方法及系统与制造工艺

本发明涉及信息安全领域,尤其涉及一种数据包验证方法及系统。



背景技术:

为了保证信息的安全,现有技术提供了多种验证方式,其中,正则表达式因为其特殊的数据处理特点,已成为现在网络数据检测和识别的软件工具语言。

在服务器上,基于软件实现的正则表达式采用串行顺序方式执行指令,当今随着互联网发展与普及,服务器对海量网络数据包的检查变得越发困难,难以进一步提升检测速度。



技术实现要素:

本发明提供了一种数据包验证方法及系统,以提供一种新的数据包验证方法。

本发明提供了一种数据包验证方法,包括:

服务器接收待验证数据包;

FPGA从服务器接收待验证数据包及用于验证待验证数据包的正则表达式;

FPGA并行调用多个微核执行正则表达式对待验证数据包进行验证;

FPGA将各微核的检验结果合并后发送至服务器。

进一步的,在FPGA并行调用多个微核之前,还包括:FPGA获取待验证数据包的所有取值,根据所有取值的数量,并行调用对应数量的微核。

进一步的,在并行调用对应数量的微核之后,还包括:FPGA根据待验证数据包的大小及速度,调整被调用微核的数量。

进一步的,还包括:FPGA根据正则表达式的检验结果,将待验证数据包并行跳转至其他被调用微核。

进一步的,还包括:FPGA从服务器获取新的正则表达式,并替换当前使用的正则表达式。

进一步的,FPGA并行调用多个微核执行正则表达式对待验证数据包进行验证包括:

FPGA将从服务器接收的正则表达式缓存在正则表达式矩阵中;

FPGA将从服务器接收的网络数据包以包的形式缓存在网络数据包中;

FPGA每次从数据包中读出一个字节,将字节并行和所有可能字符比较,每个比较结果输出一个比特,所有比特组成一个判决数组;

FPGA将每个判决数组和正则表达式矩阵输出的掩膜数据进行与操作,得到一个判决验证结果输出;

FPGA从正则表达式矩阵中读取下一个掩膜数据,然后读取下一个字节,重复以上步骤,直到数据包检验结束;

FPGA将待验证数据包中各字节对应的判决验证结果,合并得到待验证数据包的检验结果。

本发明提供了一种数据包验证系统,包括:服务器及FPGA,FPGA包括网络数据包分配矩阵模块、多个数据包微核判断模块、控制模块、正则表达式模块及判断结果汇总模块,其中,

服务器用于接收待验证数据包;

网络数据包分配矩阵模块用于从服务器接收待验证数据包;

正则表达式模块用于获取用于验证待验证数据包的正则表达式;

数据包微核判断模块用于执行正则表达式对待验证数据包进行验证

控制模块用于并行调用多个数据包微核判断模块执行正则表达式对待验证数据包进行验证;

判断结果汇总模块用于将各微核的检验结果合并后发送至服务器。

进一步的,在FPGA并行调用多个微核之前,控制模块还用于获取待验证数据包的所有取值,根据所有取值的数量,并行调用对应数量的数据包微核判断模块。

进一步的,在并行调用对应数量的微核之后,控制模块还用于根据待验证数据包的大小及速度,调整被调用数据包微核判断模块的数量。

进一步的,控制模块还用于根据正则表达式的检验结果,将待验证数据包并行跳转至其他被调用数据包微核判断模块。

进一步的,正则表达式模块还用于从服务器获取新的正则表达式,并替换当前使用的正则表达式。

进一步的,数据包微核判断模块用于将从服务器接收的正则表达式缓存在正则表达式矩阵中,将从服务器接收的网络数据包以包的形式缓存在网络数据包中,每次从数据包中读出一个字节,将每个字节并行和所有可能字符比较,每个比较结果输出一个比特,所有比特组成一个判决数组,将每个判决数组和正则表达式矩阵输出的掩膜数据进行与操作,得到一个判决验证结果输出,从正则表达式矩阵中读取下一个掩膜数据,然后读取下一个字节,重复以上步骤,直到数据包检验结束,将待验证数据包中各字节对应的判决验证结果,合并得到待验证数据包的检验结果。

本发明的有益效果:

本发明提供了一种数据包验证方法,基于FPGA实现的并行正则表达式算法以更短的周期实现算法加速,支持高速实时数据包检查,FPGA可根据需要同时并行例化多个算法计算核,实现算法的倍数提升。

附图说明

图1为本发明第一实施例提供的数据包验证系统的结构示意图;

图2为本发明第二实施例提供的数据包验证方法的流程图;

图3为本发明第三实施例涉及的验证系统的示意图;

图4为本发明第三实施例涉及的算法对比示意图;

图5为本发明第三实施例涉及的正则表达式实现方法的示意图。

具体实施方式

现通过具体实施方式结合附图的方式对本发明做输出进一步的诠释说明。

第一实施例:

图1为本发明第一实施例提供的数据包验证系统的结构示意图,由图1可知,在本实施例中,本发明提供的数据包验证系统包括:服务器1及FPGA2,FPGA2包括网络数据包分配矩阵模块21、多个数据包微核判断模块22、控制模块23、正则表达式模块24及判断结果汇总模块25,其中,

服务器1用于接收待验证数据包;

网络数据包分配矩阵模块21用于从服务器接收待验证数据包;

正则表达式模块24用于获取用于验证待验证数据包的正则表达式;

数据包微核判断模块22用于执行正则表达式对待验证数据包进行验证

控制模块23用于并行调用多个数据包微核判断模块执行正则表达式对待验证数据包进行验证;

判断结果汇总模块25用于将各微核的检验结果合并后发送至服务器。

在一些实施例中,在FPGA并行调用多个微核之前,上述实施例中的控制模块23还用于获取待验证数据包的所有取值,根据所有取值的数量,并行调用对应数量的数据包微核判断模块。

在一些实施例中,在并行调用对应数量的微核之后,上述实施例中的控制模块23还用于根据待验证数据包的大小及速度,调整被调用数据包微核判断模块的数量。

在一些实施例中,上述实施例中的控制模块23还用于根据正则表达式的检验结果,将待验证数据包并行跳转至其他被调用数据包微核判断模块。

在一些实施例中,上述实施例中的正则表达式模块24还用于从服务器获取新的正则表达式,并替换当前使用的正则表达式。

在一些实施例中,上述实施例中的数据包微核判断模块22用于将从服务器接收的正则表达式缓存在正则表达式矩阵中,将从服务器接收的网络数据包以包的形式缓存在网络数据包中,每次从数据包中读出一个字节,将每个字节并行和所有可能字符比较,每个比较结果输出一个比特,所有比特组成一个判决数组,将每个判决数组和正则表达式矩阵输出的掩膜数据进行与操作,得到一个判决验证结果输出,从正则表达式矩阵中读取下一个掩膜数据,然后读取下一个字节,重复以上步骤,直到数据包检验结束,将待验证数据包中各字节对应的判决验证结果,合并得到待验证数据包的检验结果。

第二实施例:

图2为本发明第二实施例提供的数据包验证方法的流程图,由图2可知,在本实施例中,本发明提供的数据包验证方法包括:

S201:服务器接收待验证数据包;

S202:FPGA从服务器接收待验证数据包及用于验证待验证数据包的正则表达式;

S203:FPGA并行调用多个微核执行正则表达式对待验证数据包进行验证;

S204:FPGA将各微核的检验结果合并后发送至服务器。

在一些实施例中,上述实施例中的方法在FPGA并行调用多个微核之前,还包括:FPGA获取待验证数据包的所有取值,根据所有取值的数量,并行调用对应数量的微核。

在一些实施例中,上述实施例中的方法在并行调用对应数量的微核之后,还包括:FPGA根据待验证数据包的大小及速度,调整被调用微核的数量。

在一些实施例中,上述实施例中的方法还包括:FPGA根据正则表达式的检验结果,将待验证数据包并行跳转至其他被调用微核。

在一些实施例中,上述实施例中的方法还包括:FPGA从服务器获取新的正则表达式,并替换当前使用的正则表达式。

在一些实施例中,上述实施例中的FPGA并行调用多个微核执行正则表达式对待验证数据包进行验证包括:

FPGA将从服务器接收的正则表达式缓存在正则表达式矩阵中;

FPGA将从服务器接收的网络数据包以包的形式缓存在网络数据包中;

FPGA每次从数据包中读出一个字节,将每个字节并行和所有可能字符比较,每个比较结果输出一个比特,所有比特组成一个判决数组;

FPGA将每个判决数组和正则表达式矩阵输出的掩膜数据进行与操作,得到一个判决验证结果输出;

FPGA从正则表达式矩阵中读取下一个掩膜数据,然后读取下一个字节,重复以上步骤,直到数据包检验结束;

FPGA将待验证数据包中各字节对应的判决验证结果,合并得到待验证数据包的检验结果。

现结合具体应用场景对本发明做进一步的诠释说明。

第三实施例:

针对基于软件实现的正则表达式采用串行顺序方式执行指令,难以进一步提升很检测速度。本实施例提供了新的验证系统,如图3所示,基于FPGA的硬件以PCIE总线结合到服务器系统中,按服务器的指令从服务器中读取数据和正则表达式算法,通过并行例化多个数据包微处理核实现并行正则表达式检验,把最后的检验结果上传到服务器。本产品使用基于FPGA硬件实现的正则表达式算法系统,首先FPGA以类似DMA的功能,分担服务器对网络数据包的处理,其次基于FPGA实现的并行正则表达式算法以更短的周期实现算法加速,支持高速实时数据包检查,最后FPGA可根据需要同时并行例化多个算法计算核,实现算法的倍数提升。

具体的,在图3中,网络数据包分配矩阵:通过PCIE接口接收来自服务器的网络数据包,缓存在存储单元DDR中。数据包微判断核:对网络数据包进行判断给出结果网络数据包:查看分配矩阵的数据信息,读取网络数据包。正则表达式判断:依次比较网络数据包中的数据是否符合正则表达式。判断结果:把判断结果上传给判断结果汇总。正则表达式判断:正则表达式的判断规则,可通过PCIE进行更新。判断结果汇总:把判断结果汇总,上传会服务器。

例如对正则表达式(11|22|33|A|B|C)的计算,如图4所示,左边:处理器的串行处理过程,最坏需要6级处理,右边:FPGA的并行处理速度更快,最坏需要2级处理。

在实际应用中,本产品如图3所示,整个正则表达式算法系统,由网络数据包分配矩阵通过PCIe接口接收并缓存来自服务器的数据包,各微处理器在空闲时查看分配矩阵的数据状态,然后去除数据进行分析。最后各处理器的判断结果汇总,上传回服务器。其中架构可以支持多微处理器同时进行数据处理,且微处理器的个数可以根据网络数据的大小和速度做调整。

本产品如图4所示,对正则表达式算法的实现,基于FPGA硬件可采用并行字符检验,同时支持并行跳转,以便适配更宽范围的正则表达式,支持高速算法。

本产品如图5所示,以只有8个字符有效为例的系统架构,本实施例提供的验证方法包括:

S51.FPGA将从服务器接收的正则表达式缓存在正则表达式矩阵中

S52.FPGA将从服务器接收的网络数据包以包的形式缓存在网络数据包RAM中

S53.FPGA每次从数据包RAM中读出一个Byte

S54.每个Byte并行和所有可能字符比较,每个比较结果输出一个bit(相同为1,不同为0),所有比特组成一个判决数组Pattern(有多少个可能字符,Pattern就有多少Bit)

S55.每个Pattern和正则表达式矩阵输出的掩膜数据Mask进行‘与’操作,得到一个判决验证结果(即‘与’结果)后输出;

S56.从正则表达式矩阵中读取下一个Mask数据,然后读取下一个Byte,重复以上步骤,直到结束得到检验结果;将待验证数据包中各字节对应的判决验证结果,合并得到所述待验证数据包的检验结果。

综上可知,通过本发明的实施,至少存在以下有益效果:

本发明提供了一种数据包验证方法,基于FPGA实现的并行正则表达式算法以更短的周期实现算法加速,支持高速实时数据包检查,FPGA可根据需要同时并行例化多个算法计算核,实现算法的倍数提升。

以上仅是本发明的具体实施方式而已,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施方式所做的任意简单修改、等同变化、结合或修饰,均仍属于本发明技术方案的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1