[发明专利]深度报文检测DFA状态转移表的压缩与报文匹配方法有效
申请号: | 201110026486.2 | 申请日: | 2011-01-25 |
公开(公告)号: | CN102075430A | 公开(公告)日: | 2011-05-25 |
发明(设计)人: | 缪庆军;丁贤根 | 申请(专利权)人: | 无锡网芯科技有限公司;江苏华丽网络工程有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
代理公司: | 无锡华源专利事务所 32228 | 代理人: | 聂汉钦 |
地址: | 214028 江苏省无锡市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 深度 报文 检测 dfa 状态 转移 压缩 匹配 方法 | ||
技术领域
本发明涉及数据通信领域,特别涉及网络安全设备领域,具体涉及一种应用于深度报文检测的对DFA状态转移表的压缩与报文匹配的方法。
背景技术
计算机网络中存在众多的体系结构,为了解决不同体系结构的网络的互联问题,国际标准化组织ISO于1981年制定了开放系统互连参考模型。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presentation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。
传统的网络安全设备仅分析报文的四层及以下内容,即源IP地址、目的IP地址、源端口号、目的端口号、协议类型等信息。但该技术具有非常大的局限性,很多应用是不固定TCP/UDP端口的,因此仅分析报文的四层及以下内容是识别不了这些应用的。另外,网络入侵检测、病毒检测等也必须分析报文四层以上至七层的内容。
因此,目前的网络安全设备都趋向于使用深度报文检测技术来分析报文内容及其行为。即使用由正则表达式描述的特征库来识别应用类别、网络入侵行为、病毒等。在软件或硬件对报文进行匹配特征库前,需要将正则表达式转换成NFA(非确定状态自动机)状态转移表或DFA(确定状态自动机)状态转移表以便于查找和匹配。
其中NFA状态转移表的存储空间较小,但不适合高速报文匹配。
而正则表达式转换成DFA状态转移表存在空间爆炸问题,因为DFA状态转移表需要占用大量存储空间。占用大量存储空间就必须使用外部的DRAM,如DDR/DDR2/DDR3 DRAM。由于DRAM的特性,访问DRAM存储单元时需要打开关闭DRAM内部行列,随机访问数据需要几十个纳秒的时间,因此报文匹配速度无法适应多个千兆网络接口的流量。
发明内容
针对上述问题,申请人进行了改进研究,提供一种深度报文检测DFA状态转移表的压缩与报文匹配方法,能够有效减少DFA状态转移表占用的存储空间,并适合硬件电路实现高速报文匹配。
本发明的技术方案如下:
一种深度报文检测DFA状态转移表的压缩与报文匹配方法,对DFA状态转移表的每一行,将转移状态相同的相近输入字符及其转移状态用(起始字符,位图,转移状态)三元组表示,存放于高速存储器中;当查找输入字符的转移状态时,并行匹配同一行的三元组。
其进一步的技术方案为:
DFA状态转移表的压缩依次执行以下步骤:
1)对每个状态行,将转移状态相同的输入字符分为同一组;
2)对每个状态行,将分在同一组的相邻及邻近的输入字符及其转移状态用(起始字符,位图,转移状态)三元组来表示;其中起始字符为分组内最小的输入字符;位图以二进制表示,计算该组各个输入字符相对于起始字符的偏移值,将位图上与这些偏移值相对应的比特位置1,其余比特位置0;
3)对每个状态行,当分在同一组的输入字符不能被单个所述三元组编码时,由多个所述三元组来编码;
4)对每个状态行,如果其包含的所述三元组的个数不超过预设的阀值,则该状态行用上述三元组编码的方式存放在高速存储器中;否则,该状态行不压缩,用一维线性数组的方式存储在片外DRAM中;
5)对状态值重新映射,使得存放三元组的高速存储器中存放的状态值都小于片外DRAM存放的状态值;将片外DRAM存放的状态值中的极小值作为分界值;
报文匹配依次执行以下步骤:
6)以DFA状态转移表的起始状态和报文首字符作为起始输入;
7)如果该状态是终结状态则结束匹配;如果状态值小于所述分界值,则执行步骤8查找存放三元组的高速存储器;否则,执行步骤9查找片外DRAM;
8)根据一维线性数组索引的方式,从存放三元组的高速存储器中读出该状态行的所有三元组编码,将每一个三元组编码中位图比特偏移值置1的字符与该报文字符进行匹配;如果匹配到,则取该字符所在三元组的转移状态和报文的下个字符作为输入,执行步骤7;如果没有匹配到任何三元组,则匹配失败并结束;
9)根据二维线性数组索引的方式,从片外DRAM中读取对应的转移状态;如果有转移状态,则取该转移状态和报文的下个字符作为输入,执行步骤7;如果没有转移状态,则匹配失败并结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡网芯科技有限公司;江苏华丽网络工程有限公司,未经无锡网芯科技有限公司;江苏华丽网络工程有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110026486.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:煤焦块筛分系统
- 下一篇:烟丝翻箱喂料风送装置