[发明专利]一种在大流量下进行深度包检测的方法有效
申请号: | 201210004781.2 | 申请日: | 2012-01-09 |
公开(公告)号: | CN102546299A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 岳培培 | 申请(专利权)人: | 北京锐安科技有限公司 |
主分类号: | H04L12/26 | 分类号: | H04L12/26;H04L29/06 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余功勋 |
地址: | 100044 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 流量 进行 深度 检测 方法 | ||
技术领域
本发明涉及一种在大流量下进行深度包检测的方法,属于数据通信领域。
背景技术
在数据通信网络中,深度包检测技术的应用很广泛,经常用于数据包应用类型分析、用户行为分析,以及入侵检测、病毒/蠕虫检测等方面。
深度包检测技术的实现方法分为软件和硬件两种。软件方法利用各种模式匹配算法来进行特定关键字的匹配,但软件进行深度包检测的速度有限,不能保证线速处理。而采用硬件的方法实现深度包检测,可以在大流量下实现线速处理。
使用硬件进行深度包检测的方法很多,当关键字量大,且需要在运行时更新时,常采用“现场可编程门阵列”(FPGA)加上“三相式内容寻址存储器”(TCAM)的实现方式,将数据包输入到FPGA的缓存中,然后发送给TCAM进行匹配,TCAM将匹配结果返回给FPGA继续处理。虽然TCAM的运算速度非常快,当前主流的TCAM的查找速度能达到300M次查找/秒。但在大流量网络环境下,例如10G~40G,该查找速度仍然达不到每次查找只偏移1个字节。而在需要查找浮动关键字的场合,由于关键字的起始位置不固定,因此查找过程需要每次仅偏移一个字节进行比对。这时,单纯使用TCAM不能满足系统要求。
另一种常用的规则匹配方法是使用布隆过滤器(Bloom Filter)进行匹配。布隆过滤器是由Burton Bloom在1970年提出,其基本工作方法如下:
首先是配置过程:生成一个位串,并清0,位串中的每个存储单元对应一个地址。然后,对需要进行匹配的每个关键字都用多个散列(hash)函数进行计算,并把计算结果作为配置地址,把位串中相应的存储单元置为1。
需要进行匹配时,把待匹配内容用同样的多个hash函数计算,将多个结果作为位串中的查询地址与配置地址进行匹配。若查询到的所有结果不是都为1,说明匹配不成功;若结果都为1,说明匹配有可能成功,且成功的概率可以计算得到。但是当不匹配的待匹配内容的hash运算结果和关键字的hash运算结果相同时,可能会报告匹配成功(假阳性)。
发明内容
本发明针对上述FPGA+TCAM方式实现深度包检测的过程中,大流量时遇到的问题,提出了一种在大流量下进行深度包检测的方法,充分利用了FPGA的特点,在操作系统的主控单元(由用户控制)的内存中和FPGA中分别设置不同种类和数量的布隆计数器,利用布隆过滤器进行初步过滤,使得关键字的增加、删除、匹配过程方便易行。
本发明的硬件环境采用主控单元的内存+FPGA+TCAM。在主控单元的内存中实现关键字统计,在FPGA内部实现布隆过滤器进行粗匹配,随后在TCAM中实现精匹配。
具体技术方案为:
1)在FPGA内部搭建3个层次结构的过滤模块。
a)并行放置L个结构、大小相同的第一层过滤模块,待匹配内容在通过这L个过滤模块进行匹配时依次偏移1个字节,从而使待匹配内容在每个时钟周期内都可以偏移L个字节。L的值由需要进行深度包检测的数据流量和FPGA的工作时钟决定。
b)第一层过滤模块内部并行放置M个第二层过滤模块,用于匹配多种长度的关键字。M的值由关键字的长度分布情况决定。
c)第二层过滤模块内部并行放置N个第三层过滤模块,每个第三层过滤模块由块状随机存储器组成基础布隆过滤器,其中每个布隆过滤器的每个存储单元所存储的内容是1bit。N的值由根据关键字长度采用的hash算法的种类除以2得到。
2)主控单元根据用户的添加及删除操作初始化配置地址。
a)在操作系统的主控单元的内存中保存有一个过滤模块的存储空间,同样分为3个层次,其中第三层是计数型布隆过滤器,即,在第三层的每个存储单元中所存储的内容并不是1bit,而是包含多bit的一个整数。
b)当添加关键字时,若关键字长度为m个字节,则在主控单元的存储空间中找到匹配长度为n个字节的第二层过滤模块,n为小于等于m的最大值,对关键字的前n个字节(n字节前缀)进行hash运算,并把运算结果作为初始化地址,查询N个第三层计数型布隆过滤器,修改相应配置地址内的值(通常是加1)。若第三层计数型布隆过滤器的存储单元内的值发生变化(如从0变为非0),则对应更新FPGA内L个对应的存储单元的值(如变为1)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210004781.2/2.html,转载请声明来源钻瓜专利网。