本发明涉及报文检测处理技术领域,尤其涉及一种基于FPGA中DPI的多引擎实现方法及系统。
背景技术:
DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术。目前主流的DPI技术分为两类,一种利用软件方法,利用多核/NP等进行检测。另一种利用FPGA等硬件进行检测。如利用软件方法进行处理,无法达到大流量线速处理的要求。对于大流量下线速进行DPI的处理,目前主流为利用硬件进行。基于FPGA的DPI技术,如果采用单引擎处理报文,相对简单。但由于对外部的存储器访问存在时延,和内部的处理速度有差异,容易成为性能瓶颈,单引擎也不利于性能的平滑扩展。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
技术实现要素:
针对上述的缺陷,本发明的目的在于提供一种基于FPGA中DPI的多引擎实现方法及系统,其可以降低每个引擎的设计难度与性能要求,同时降低片外存储器的存储速率及时延要求。
为了实现上述目的,本发明提供一种基于FPGA中DPI的多引擎实现方法,包括以下步骤:
基于FPGA的高速时钟,对报文进行线速转发;
提取报文的五元组信息;
对所述五元组信息通过哈希压缩算法计算处理;
根据计算结果,将所述报文配置给相应的引擎处理。
根据本发明的基于FPGA中DPI的多引擎实现方法,所述对报文进行线速转发步骤之前还包括:
针对不同类别报文配置若干引擎。
根据本发明的基于FPGA中DPI的多引擎实现方法,所述根据处理结果,将所述报文配置给相应的搜索引擎步骤之后包括:
将各个引擎处理的报文信息合并处理;
将合并后的报文信息转发。
根据本发明的基于FPGA中DPI的多引擎实现方法,所述方法还包括:
部分引擎将报文丢弃处理。
本发明还相应提供一种基于FPGA中DPI的多引擎实现系统,包括:
报文转发模块,用于基于FPGA的高速时钟,对报文进行线速转发;
信息提取模块,用于提取报文的五元组信息;
计算处理模块,用于对所述五元组信息通过哈希压缩算法计算处理;
报文配置模块,用于根据计算结果,将所述报文配置给相应的引擎处理。
根据本发明的基于FPGA中DPI的多引擎实现系统,所述系统还包括:
引擎配置模块,用于针对不同类别报文配置若干引擎。
根据本发明的基于FPGA中DPI的多引擎实现系统,还包括:
报文合并模块,用于将各个引擎处理的报文信息合并处理;
信息转发模块,用于将合并后的报文信息转发。
根据本发明的基于FPGA中DPI的多引擎实现系统,所述引擎还用于根据计算机结果将报文丢弃处理。
本发明提供了一种基于FPGA中DPI的多引擎实现方法,包括以下步骤:基于FPGA的高速时钟,对报文进行线速转发;提取报文的五元组信息;对所述五元组信息通过哈希压缩算法计算处理;根据计算结果,将所述报文配置给相应的引擎处理。本发明相应的提供一种基于FPGA中DPI的多引擎实现系统。借此,本发明利用多引擎的分发处理,降低了每个引擎的设计难度与性能要求,同时降低了片外存储器的存储速率及时延要求。
附图说明
图1是本发明的系统结构示意图;
图2是本发明的另一系统结构示意图;
图3是本发明的方法流程图;
图4是本发明一实施例的报文处理流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1和图2,本发明提供了一种基于FPGA中DPI的多引擎实现系统,该系统100是基于FPGA及引擎对报文进行处理的系统,其包括:
报文转发模块10,用于基于FPGA的高速时钟,对报文进行线速转发。
信息提取模块20,用于提取报文的五元组信息。本发明所述的五元组信息包括报文的源IP地址、源端口、目的IP地址、目的端口和传输层协议。
计算处理模块30,用于对所述五元组信息通过哈希压缩算法计算处理。哈希算法是一种把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出的算法。其包括直接取余法、乘法取整法及平方取中法。本发明可以选任一种算法作为主算法。
报文配置模块40,用于根据计算结果,将所述报文配置给相应的引擎处理。对于报文的配置,实际上是基于引擎配置模块50配置了各引擎为基础的。
具体的说,本发明主要是针对报文信息的类型,特别是具有优先级别分类的报文进行引擎配置。因为通信服务提供商可以分配现有资源以精简信息流。例如,一个标记为高优先级的消息可以比不太重要或低优先级的信息或数据包先被路由到其目的地。深度包检测(DPI)也可以用来节制数据传输,以防止对等网络(P2P)被滥用,从而改善绝大多数用户的网络性能。也就是说,实际应用中,不同类型的报文会分配给不同的引擎处理。使得报文可以基于多引擎并行处理检测以满足大流量线速下的DPI处理要求。
对于多个引擎处理后的信息,则可以通过报文合并模块60将各个引擎处理的报文信息合并处理,并通过信息转发模块70将合并后的报文信息转发。当然,如果有需要丢弃的报文,也可以通过引擎直接丢弃。
本发明在FPGA内部高速时钟处理缓存报文的同时,利用多引擎的分发处理,降低了每个引擎的设计难度与性能要求,同时降低了片外存储器的存储速率及时延要求。
参见图3和图4,本发明相应的提供一种基于FPGA中DPI的多引擎实现方法,其可以通过如图1或2所示的系统100实现,该方法包括:
步骤S301,基于FPGA的高速时钟,对报文进行线速转发。
步骤S302,提取报文的五元组信息。本发明所述的五元组信息包括报文的源IP地址、源端口、目的IP地址、目的端口和传输层协议。
步骤S303,对所述五元组信息通过哈希压缩算法计算处理。哈希算法是一种把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出的算法。其包括直接取余法、乘法取整法及平方取中法。本发明可以选任一种算法作为主算法。
步骤S304,根据计算结果,将所述报文配置给相应的引擎处理。
需要说明的,本发明在步骤S301之前通过引擎配置模块50针对不同的报文类别配置了各引擎。
对于多个引擎处理后的信息,则可以将各个引擎处理的报文信息合并处理,并对合并后的报文信息转发。当然,如果有需要丢弃的报文,也可以通过引擎直接丢弃。
综上所述,本发明提供了一种基于FPGA中DPI的多引擎实现方法,包括以下步骤:基于FPGA的高速时钟,对报文进行线速转发;提取报文的五元组信息;对所述五元组信息通过哈希压缩算法计算处理;根据计算结果,将所述报文配置给相应的搜索引擎处理。本发明相应的提供一种基于FPGA中DPI的多引擎实现系统。借此,本发明利用多引擎的分发处理,降低了每个引擎的设计难度与性能要求,同时降低了片外存储器的存储速率及时延要求。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。