一种利用内容加速卡实现内容检测的装置和方法

文档序号:7974424阅读:264来源:国知局
专利名称:一种利用内容加速卡实现内容检测的装置和方法
技术领域
本发明涉及网络技术领域,特别涉及一种利用内容加速卡实现内容检测的装置和方法。
背景技术
随着网络信息安全需求的不断发展,传统的作用于TCP/IP协议栈2层、3层的防火墙等安全产品已经无法满足人们的需要。现在人们更关心在网络上传输的是什么内容,这些内容是否会造成危害。因此,入侵防御系统(Intrusiorfrotection System, IPS)、杀毒 (Antivirus,AV)等基于内容检测的安全产品渐渐成为主流。然而,一个关键的问题制约着此类产品的发展,那就是性能。内容检测的核心是字符串模式匹配,模式匹配相当消耗CPU 计算资源,而且随着模式串的增长,对CPU的消耗呈线性增长。因此,只有突破模式匹配的性能瓶颈,才能使基于内容检测的安全产品得到进一步的发展。基于专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)和PCI-E 技术的内容加速卡是为解决上述问题而发明的。内容加速卡利用了专用硬件的特点,具有处理能力强、处理速度不随模式串的递增而递减、成本低廉等特点。内容加速卡通过PCI-E 接口连接到网络安全设备上,因此也比较容易对现有的网络安全设备进行扩展。内容检测的核心字符串模式匹配工作可以使用内容加速卡硬件来提升性能,但是内容检测是一个复杂的过程,包含很多步骤,字符串匹配只是其中之一,其它部分工作还需要CPU来处理,这就形成了 CPU处理一部分工作,交给内容加速卡处理,然后再返回给CPU 处理的工作过程,其中CPU与内容加速卡的交互过程直接影响了整个工作过程的效率,也是使用内容加速卡来提升内容检测性能的关键。CPU与内容加速卡的交互过程通常如下CPU处理一部分,完成后交给内容加速卡处理,内容加速卡处理完成后再交回给CPU处理,整个处理过程是完整贯通的,是连续不中断的,这种方式对检测过程改动比较小,但是因为内容加速卡的延迟特性,CPU需要一段等待空耗时间,所以效率不高。

发明内容
本发明的目的在于,提供一种利用内容加速卡实现内容检测的装置,能够最大限度的提升内容检测安全产品的检测效率和性能。本发明的另一目的在于,提供一种利用内容加速卡实现内容检测的方法,能够最大限度的提升内容检测安全产品的检测效率和性能。本发明的利用内容加速卡实现内容检测的装置,包括第一线程单元和第二线程单元,所述第一线程单元和第二线程单元同时工作,其中,第一线程单元,用于接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果,开始处理下一个报文;第二线程单元,用于从内容加速卡获取匹配结果,并根据匹配结果执行相应处理。
其中,在所述第一线程单元中,包含预处理模块,用于接收的数据包进行预处理, 所述预处理至少包括下列一种协议分析、对IP分片的报文进行重组、对TCP报文记录连接信息,以及对应用层协议进行解析,拆解出需要检测的报文头部结构。其中,所述预处理模块,进一步用于进行DDOS检测。其中,所述预处理模块,进一步用于在网络层面进行处理,对于特定报文不进行检测,直接转发或提交,其中,所述特定报文,包括没有数据内容的数据包、提交给设备本身的管理报文、路由交换信息报文以及二层广播报文。其中,所述第二线程单元,根据匹配结果执行相应处理,包括检查报文头部、调用第三方插件、采取阻断动作或者记录日志。其中,第一线程单元将待检测报文送到内容加速卡做模式匹配时,返回数据流ID, 该数据流ID是数据报文的唯一标识,在第二线程单元取得匹配结果时也带有该数据流ID, 用于将一个数据报文和一个匹配结果进行对应。本发明的利用内容加速卡实现内容检测的方法,包括第一线程接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果,开始处理下一个报文;第二线程从内容加速卡获取匹配结果,并根据匹配结果执行相应处理;其中,所述第一线程和第二线程同时工作。其中,在所述第一线程中,对接收的数据包进行预处理,至少包括下列一种协议分析、对IP分片的报文进行重组、对TCP报文记录连接信息,以及对应用层协议进行解析, 拆解出需要检测的报文头部结构。其中,在所述第二线程中,根据匹配结果执行相应处理,包括检查报文头部、调用第三方插件、采取阻断动作或者记录日志。其中,在第一线程将待检测报文送到内容加速卡做模式匹配时,返回数据流ID,该数据流ID是数据报文的唯一标识,在第二线程取得匹配结果时也带有该数据流ID,用于将一个数据报文和一个匹配结果进行对应。本发明的有益效果是依照本发明的利用内容加速卡实现内容检测的装置和方法,能够消除CPU等待空耗时间,最大限度的提升内容检测安全产品的检测效率和性能,保证检测过程的完整性。


图1为本发明的利用内容加速卡实现内容检测的装置的结构示意图;图2为本发明实施例的利用内容加速卡实现内容检测的方法流程图。
具体实施例方式以下,参考附图1 2详细描述本发明的利用内容加速卡实现内容检测的装置和方法。图1为本发明的利用内容加速卡实现内容检测的装置的结构示意图。如图1所示, 本发明的装置包括第一线程单元和第二线程单元。其中,在第一线程单元中,包括接收数据包模块和预处理模块,接收数据包模块, 用于从网络模块获取数据包;预处理模块,用于对数据包进行预处理,预处理完成后,调用内容加速卡提供的接口函数将数据报文交给内容加速卡,然后不等待结果,立即开始处理下一个报文。其中,预处理包括协议分析,对IP分片的报文进行重组,对TCP报文记录连接信息,以便在一个流中检测数据内容;并对常用的协议进行解析(例如http、p0p3、smtp、 ftp等常用应用层协议),拆解出需要检测的报文头部结构。生成与该数据包相关的私有信息。该私有信息必须包含以下内容连接结构的句柄该连接结构的唯一标识,一个句柄对应一个连接结构,不同句柄对应不同的连接结构,句柄同时也作为查找连接结构的索引值。匹配到的策略id 根据用户配置,每一个连接可能具有不同的策略,比如有的连接需要检查全部规则,而有些连接只检查部分规则,有的连接发现异常需要阻断,而有些连接需要记录日志等等,通过这个id可以找到该连接对应的策略,从而就可以做到用户配置所要求的功能。策略匹配的方向决定策略应用到数据流的哪个方向,从客户端到服务器方向,还是从服务器到客户端方向,抑或双向。快速路经标记根据前面步骤分析的结果,如果不需要做内容检测就标记出来,这样这个数据流可以走快速路经,加快报文处理速度,提高性能。TCP连接建立标记标记是正在建立过程中的连接,还是已经建立的连接,这两种状态的连接有不同的处理方法。绑定cpu 根据连接的hash值计算得到的cpu序号,表明这个连接的所有数据报文必须送给这个CPU进行检测。统计数据分别记录从客户端向服务器方向上检测的数据报文个数,以及从服务器向客户端方向上检测的数据报文个数。例如,生成的私有信息如下struct ips ;ips加在连接上的私有数据,每个连接1个。
struct ips {
_u32 session; —u32 policy—id[2] _u8 policy—dir; _u8 ids:l;
5
/*连接结构的句柄*/ ;/*policy_id
匹配到的策略 id, */ /* 策略匹配的方向,l:c->s;2:s->c; 3: c<->s */ /* IDS Mode*/u8 fastpath:!; /*走快速路径,不伯文任何检测*/
u8 anyany:!;
u8 established: 1; /* TCP连接已经建立标记*/ u8 nat:l;/* 连接做了 NAT */
u8 check—nat:l;
_u8 handle_cpu; /*按报文分发策略确定的cpu,此连接所有报文必须送给这个cpu */
u32 natportp];
u32 nataddr[2]; /* NAT时要替换的地址*/
ul6 packets[2];/*分别记录在方向1和方向2上已经检测的数椐包数*/另外,预处理模块,还可以进一步用于进行DDOS(Distributed Denial ofkrvice,分布式拒绝服务攻击)检测。DDOS检测主要采用统计访问频率并预设阀值方法,超出阀值则判定为DDOS攻击行为。DDOS检测通过则继续后面的数据内容检测,如果不通过则即刻阻断攻击源,以尽最大努力减少对被防护网络的冲击。这是由于,在实际应用时,DDOS攻击通常表现为flood形式,即不同的源同时大量地向目标主机发起请求,使得目标主机资源负载超出负荷从而无法处理正常的访问请求。DDOS需要在模式匹配之前进行检测,一个原因是DDOS占用带宽比较大,对安全设备本身也构成威胁,需要在程序的最开始处尽可能早地发现并及时阻断。另一个原因是如果将DDOS报文送到内容加速卡做模式匹配,会大大降低内容加速卡的工作效率,同时也使得内容加速卡大量地进行无谓的工作,因为DDOS攻击是无法通过匹配检测出来的。另外,预处理模块,还进一步用于在网络层面进行处理,对没有数据内容的数据包无需检测,可以直接转发;对于提交给设备本身的管理报文也无需检测,可以直接提交;还有一些路由交换信息报文,二层广播报文等,处理的原则是不需要检测的报文尽可能不送给后续检测程序处理,以减轻检测程序的压力。第一线程单元调用内容加速卡驱动提供的接口函数,将待检测报文送到内容加速卡做模式匹配,调用时同时提供流id参数,这样内容加速卡会针对数据流而非单个报文进行匹配,即在匹配了一个报文之后,将报文尾部的一段数据(长度可以配置)留存下来,下次匹配时与同一个数据流的第2个报文头接在一起匹配,这样可以发现攻击特征正好跨越两个报文之间的情况。本发明的第一线程单元和第二线程单元合起来完成一个完整的数据报文内容检测过程。但是两个单元的工作是同时进行的,相互不干扰也不必等待,第一线程单元完成预处理后调用内容加速卡提供的接口函数将数据报文交给内容加速卡,然后不等待结果,立即开始处理下一个报文。第二线程单元,用于调用内容加速卡提供的接口函数从内容加速卡获取匹配结果,如果取到,就根据匹配结果继续处理,如检查报文头部、调用其它第三方插件、采取阻断动作或者记录日志等,如果没有取到结果,则说明匹配还没有结束,此时不用作任何处理。这里需要说明的是,内容加速卡通常具有多个检测通道,可以容纳多个报文同时提交匹配,下半部分取到的结果可能是多个,即多个报文匹配工作同时结束,同时生成结果,此时下半部分需要连续处理,待多个结果处理完毕后再取结果。第一线程单元在将数据报文提交内容加速卡进行模式匹配时,都会返回一个数据流id,该id是数据报文的唯一标识,在第二线程单元取得匹配结果时也带了这个标识,主要是用于将一个数据报文和一个匹配结果一一对应起来,特别是在同时产生多个匹配结果时,用来唯一标识这种对应关系。内容加速卡中多个匹配通道的工作是同时进行的,相对CPU检测性能大幅度提高,但是针对不同的数据报文其匹配速度是不同的,即使是按顺序逐个通道提交待匹配的数据报文,也可能后提交的数据报文先匹配完成,生成结果,即不是符合“先进先出”规则。 这主要是报文长短不同,报文内容复杂程度不同导致的。不同厂商的内容加速卡都有自己的规范,主要是能够支持的正则表达式的子集, 本申请可以使用是NetLogic加速卡,这种加速卡采用单芯片结构,PCI-E接口,具有2G的模式匹配能力,能够支持完整的PCRE。在初始化时需要使用加速卡厂商提供的编译软件对规则库中的规则进行编译,使其转换为可以被内容加速卡识别的模式特征,然后调用厂商提供的接口函数将编译好的模式特征加载到内容加速卡上。如果特征比较复杂且比较多,加载过程会比较长。通常情况下加载是一次性的,除非规则库更新,否则不用重新加载。如图2所示,本发明的利用内容加速卡实现内容检测的方法,包括第一线程接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果, 开始处理下一个报文;第二线程从内容加速卡获取匹配结果,并根据匹配结果执行相应处理;其中,所述第一线程和第二线程同时工作。其中,在第一线程中,对接收的数据包进行预处理,至少包括下列一种协议分析、 对IP分片的报文进行重组、对TCP报文记录连接信息,以及对应用层协议进行解析,拆解出需要检测的报文头部结构。在第二线程中,根据匹配结果执行相应处理,包括检查报文头部、调用其它第三方插件、采取阻断动作或者记录日志。(第二线程找到该数据包对应的私有信息,私有信息包括连接结构的句柄、匹配到的策略id、策略匹配的方向、快速路经标记、TCP连接建立标记、 绑定CPU和统计数据等内容。继续未完的处理(包括查找策略,根据策略以及策略匹配的方向得到需要采取的动作,统计检测报文个数,记录日志等等),第二线程根据处理的结果, 将报文交还给网络模块做发送或者丢弃等处理,然后继续针对下一个匹配结果进行相应处理)另外,在第一线程将待检测报文送到内容加速卡做模式匹配时,返回数据流ID,该数据流ID是数据报文的唯一标识,在第二线程取得匹配结果时也带有该数据流ID,用于将一个数据报文和一个匹配结果进行对应。在具体实现时,依照本发明的方法,从网卡接收上来数据包,经过网络模块,交给用户进程,用户进程调用内容加速卡做完模式匹配,最后交还给网络模块从网卡发送出去。 利用内容加速卡实现异步检测还有一个优势,就是在增加一些检测规则的情况下,性能几乎可以保持不变,而使用传统的CPU同步检测方式,随着检测规则数量的增加检测性能会大幅度下降,甚至当规则数量增加到一定程度时能够导致设备性能不足,无法继续处理数据报文。网络攻击曾出不穷,检测规则库也是每周更新一次,规则数量不断增加,随着对内容安全检测产品的需求越来越多,产品性能问题也会越来越突出,使用本法是其中的解决方法之一。综上所述,依照本发明的利用内容加速卡实现内容检测的装置和方法,能够消除 CPU等待空耗时间,最大限度的提升内容检测安全产品的检测效率和性能,保证检测过程的完整性。以上是为了使本领域普通技术人员理解本发明,而对本发明所进行的详细描述, 但可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改, 这些变化和修改均在本发明的保护范围内。
权利要求
1.一种利用内容加速卡实现内容检测的装置,其特征在于,包括第一线程单元和第二线程单元,所述第一线程单元和第二线程单元同时工作,其中,第一线程单元,用于接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果,开始处理下一个报文;第二线程单元,用于从内容加速卡获取匹配结果,并根据匹配结果执行相应处理。
2.如权利要求1所述的利用内容加速卡实现内容检测的装置,其特征在于,在所述第一线程单元中,包含预处理模块,用于接收的数据包进行预处理,所述预处理至少包括下列一种协议分析、对IP分片的报文进行重组、对TCP报文记录连接信息,以及对应用层协议进行解析,拆解出需要检测的报文头部结构。
3.如权利要求2所述的利用内容加速卡实现内容检测的装置,其特征在于,所述预处理模块,进一步用于进行DDOS检测。
4.如权利要求2所述的利用内容加速卡实现内容检测的装置,其特征在于,所述预处理模块,进一步用于在网络层面进行处理,对于特定报文不进行检测,直接转发或提交,其中,所述特定报文,包括没有数据内容的数据包、提交给设备本身的管理报文、路由交换信息报文以及二层广播报文。
5.如权利要求1至4中任一项所述的利用内容加速卡实现内容检测的装置,其特征在于,所述第二线程单元,根据匹配结果执行相应处理,包括检查报文头部、调用第三方插件、 采取阻断动作或者记录日志。
6.如权利要求1至4中任一项所述的利用内容加速卡实现内容检测的装置,其特征在于,第一线程单元将待检测报文送到内容加速卡做模式匹配时,返回数据流ID,该数据流 ID是数据报文的唯一标识,在第二线程单元取得匹配结果时也带有该数据流ID,用于将一个数据报文和一个匹配结果进行对应。
7.一种利用内容加速卡实现内容检测的方法,其特征在于,包括第一线程接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果,开始处理下一个报文;第二线程从内容加速卡获取匹配结果,并根据匹配结果执行相应处理;其中,所述第一线程和第二线程同时工作。
8.如权利要求7所述的利用内容加速卡实现内容检测的方法,其特征在于,在所述第一线程中,对接收的数据包进行预处理,至少包括下列一种协议分析、对IP分片的报文进行重组、对TCP报文记录连接信息,以及对应用层协议进行解析,拆解出需要检测的报文头部结构。
9.如权利要求7或8所述的利用内容加速卡实现内容检测的方法,其特征在于,在所述第二线程中,根据匹配结果执行相应处理,包括检查报文头部、调用第三方插件、采取阻断动作或者记录日志。
10.如权利要求7或8所述的利用内容加速卡实现内容检测的方法,其特征在于,在第一线程将待检测报文送到内容加速卡做模式匹配时,返回数据流ID,该数据流ID是数据报文的唯一标识,在第二线程取得匹配结果时也带有该数据流ID,用于将一个数据报文和一个匹配结果进行对应。
全文摘要
本发明提供一种利用内容加速卡实现内容检测的装置及方法,其中,该装置包括第一线程单元和第二线程单元,所述第一线程单元和第二线程单元同时工作,其中,第一线程单元,用于接收数据包,并进行预处理,将预处理后的数据报文发送给内容加速卡进行匹配,不等待结果,开始处理下一个报文;第二线程单元,用于从内容加速卡获取匹配结果,并根据匹配结果执行相应处理。本发明能够消除CPU等待空耗时间,最大限度的提升内容检测安全产品的检测效率和性能,保证检测过程的完整性。
文档编号H04L29/06GK102404169SQ20111036202
公开日2012年4月4日 申请日期2011年11月15日 优先权日2011年11月15日
发明者刘彤 申请人:北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1