发明名称 基于现场可编程门阵列的高速模式匹配算法
摘要 一种基于现场可编程门阵列的高速模式匹配的方法,该方法通过动态扩充AC算法中的跳转函数goto生成DFA状态表,并对其压缩后通过硬件的方式实现内容检测和应用识别,以满足用户对网络应用层处理和网络信息安全的需要。本发明涉及基于正则表达式的规则描述、状态机技术的模式匹配引擎、规则库压缩优化,DFA模式匹配是一种将时间复杂度转换为空间复杂度的算法,它可并行匹配多个规则,而且对规则长度无限制,被匹配的特征值可以是非定位的,也可以是定位模式匹配。DFA算法巧妙地将多模式匹配的处理过程转变成了状态转换的处理过程,从而实现了O(n)级别的匹配速度,所以规则库的压缩算法,既能保证查找速度,又能实现高效压缩。
申请公布号 CN101442540A 申请公布日期 2009.05.27
申请号 CN200810241135.1 申请日期 2008.12.30
申请人 北京畅讯信通科技有限公司 发明人 刘晓燕;王 霖
分类号 H04L29/06(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京中海智圣知识产权代理有限公司 代理人 曾永珠;胡 静
主权项 1、一种基于现场可编程门阵列的高速模式匹配算法,其特征在于,包括如下步骤:步骤1:依据动态扩充AC算法中跳转函数goto的方法及对规则库的压缩方法将输入的模式匹配规则集合文件编译为符合FPGA读写规律的二进制规则库文件;步骤2:将编译好的二进制规则库文件加载到FPGA的QDR SRAM,该规则库包括状态跳转表和状态信息表两部分;步骤3:系统初始化后开始接收数据包,当前系统状态号初始化为0;步骤4:判断接收到的新的数据包是否需要匹配;步骤5:取出0状态的状态信息,包括最大及最小有效字符、是否命中的标志位、状态跳转表的位置基地址,放入当前状态信息中;步骤6:取一个需要匹配的字符;步骤7:根据当前状态信息的内容判断取的字符是否在最小字符和最大字符之间;步骤8:根据当前状态信息中的状态跳转表的位置基址和字符计算该字符对应的跳转表的地址;步骤9:根据步骤8得到的状态跳转表的地址,取出下一状态号作为新的当前状态号;步骤10:根据取到的状态号来计算存放当前状态信息项的状态信息地址;步骤11:根据步骤10得到的状态信息表的地址,取出相应的状态信息放入当前状态信息中;步骤12:根据得到的状态信息判断输入的字符是否匹配;步骤13:记录匹配的结果;步骤14:判断收到的数据包是否全部完成匹配;步骤15:取下一个字符;步骤16:重复执行步骤7到步骤14;步骤17:当整个数据包匹配结束后,把匹配结果与原始的数据包重新组合成新的数据包;步骤18:把数据包转发出去,然后初始化当前的状态号为0,开始新的数据包匹配。
地址 100037北京市西城区阜外大街2号万通新世界广场B座8层