一种防火墙设备及其报文处理方法以及介质与流程

文档序号:17147694发布日期:2019-03-19 23:07阅读:269来源:国知局
一种防火墙设备及其报文处理方法以及介质与流程

本申请涉及网络安全技术领域,具体涉及一种防火墙设备及其报文处理方法以及计算机可读存储介质。



背景技术:

防火墙(firewall)也称为防护墙,其是位于内部网和外部网之间的屏障,它按照预先定义好的规则来控制报文的进出。防火墙可以理解为是网络系统的第一道防线,其作用是防止非法用户的进入。

随着科技的快速发展,网卡攻击也随之升级,动辄就几十吉兆甚至上百吉兆的ddos(distributeddenialofservice,分布式阻断服务)攻击层出不穷,因此防火墙的报文处理压力也越来越大,而且,为了更好维护网络安全,防火墙应用方例如企业,其购买防火墙不仅仅希望防火墙可以防止网络攻击,更希望防火墙能够记录攻击日志,以便于后续分析。

然而现如今的软件防火墙,由于多核并发资源竞争原因以及软件性能的限制,很难既保证正常流量畅通,又阻止大流量攻击,更没有办法实现攻击日志的记录。基于此,目前亟需实现一种实现软件防火墙的方案,在保证正常流量畅通,阻止大流量攻击的同时,还能够实现攻击日志的记录。



技术实现要素:

本申请实施例提供了一种防火墙设备、报文处理方法以及存储介质,即使在遭遇大流量攻击的情况下,也能够实现对攻击日志的记录,且不对防火墙的攻击防御性能和正常报文转发性能造成影响。

有鉴于此,本申请第一方面提供了一种防火墙设备,包括:

三种类型的中央处理器以及与每种类型的中央处理器对应的存储器;所述三种类型的中央处理器包括第一类中央处理器、第二类中央处理器以及第三类中央处理器;其中,

所述第一类中央处理器中配置有转发核,所述转发核用于接收并识别第一类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述转发核对应的第一攻击报文缓存区;

所述第二类中央处理器中配置有攻击防御专用核,所述攻击防御专用核用于接收并识别第二类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述攻击防御专用核对应的第二攻击报文缓存区;

所述第三类中央处理器中配置有日志记录核,所述日志记录核用于通过无锁读操作,读取所述第一攻击报文缓存区和所述第二攻击报文缓存区中的攻击报文,根据所述攻击报文生成攻击日志。

可选的,所述转发核还用于当所述第一攻击报文缓存区饱和时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述攻击防御专用核还用于当所述第二攻击报文缓存区饱和时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述转发核还用于当与所述转发核对应的第一报文内存池中可用内存占比小于第一阈值时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述攻击防御专用核还用于当与所述攻击防御专用核对应的第二报文内存池中可用内存占比小于第一阈值时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述防火墙设备包括多个所述第一类中央处理器和多个所述第二类中央处理器。

可选的,所述第三类中央处理器与所述第一类中央处理器和所述第二类中央处理器分别共用同一物理设备;并且,所述第三类中央处理器中的日志记录核具体用于通过所述物理设备虚拟出的超线程读取攻击报文。

可选的,所述第一类中央处理器和所述第二类中央处理器采用同一物理设备。

可选的,所述日志记录核具体用于启动多个日志线程,通过多个日志线程采用无锁读操作,以并发地方式分别读取攻击报文,其中,一个日志线程与一个所述第一攻击报文缓存区或一个所述第二攻击报文缓存区对应,用于从与其对应的攻击报文缓存区中读取攻击报文。

可选的,所述防火墙设备包括多个所述第三类中央处理器,则每个所述第三类中央处理器中的日志记录核启动一个日志线程,通过该日志线程从一个所述第一攻击报文缓存区或所述第二攻击报文缓存区中读取攻击报文。

可选的,所述转发核还用于当所述第一攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,则通知日志线程读取攻击报文;

所述攻击防御专用核还用于当所述第二攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,则通知日志线程读取攻击报文。

可选的,所述转发核还用于根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数;

所述攻击防御专用核还用于根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数。

本申请第二方面提供了一种防火墙设备的报文处理方法,包括:

第一类中央处理器通过预配置的转发核,接收并识别第一类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述转发核对应的第一攻击报文缓存区;

第二类中央处理器通过预配置的攻击防御专用核,接收并识别第二类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述攻击防御专用核对应的第二攻击报文缓存区;

第三种中央处理器通过预配置的日志记录核,通过无锁读操作,读取所述第一攻击报文缓存区和所述第二攻击报文缓存区中的攻击报文,根据所述攻击报文生成攻击日志。

可选的,所述方法还包括:

所述第一类中央处理器通过所述转发核,在所述第一攻击报文缓存区饱和时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述第二类中央处理器通过所述攻击防御专用核,在所述第二攻击报文缓存区饱和时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述第一类中央处理器通过所述转发核,在与所述转发核对应的第一报文内存池中可用内存占比小于第一阈值时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述第二类中央处理器通过所述攻击防御专用核,在与所述攻击防御专用核对应的第二报文内存池中可用内存占比小于第一阈值时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述第三类中央处理器通过所述日志记录核,启动多个日志线程,通过多日志线程采用无锁读操作,以并发地方式分别读取攻击报文,其中,一个日志线程与一个中央处理器对应,用于从对应的中央处理器中读取攻击报文。

可选的,所述方法还包括:

所述第一类中央处理器通过所述转发核,当所述第一攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,通知日志线程读取攻击报文;

所述第二类中央处理器通过所述攻击防御专用核,当所述第二攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,通知日志线程读取攻击报文。

可选的,所述方法还包括:

所述第一类中央处理器通过所述转发核,根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数;

所述第二类中央处理器通过所述攻击防御专用核,根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数。

本申请第三方面提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第二方面所述报文处理的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例提供了一种防火墙设备,该防火墙设备中包括有三种类型的中央处理器(centerprocessingunit,cpu)以及与每种类型的中央处理器对应的存储器,三种类型的中央处理器分别为第一类中央处理器、第二类中央处理器和第三类中央处理器;其中,第一类中央处理器中配置有转发核,其用于对正常报文进行转发以及将小流量的攻击报文丢弃至第一攻击报文缓存区;第二类中央处理器中配置有攻击防御专用核,其用于对正常报文进行转发以及将大流量的攻击报文丢弃至第二攻击报文缓存区;第三类中央处理器中配置有日志记录核,其用于通过无锁读操作,读取第一攻击报文缓存区和第二攻击报文缓存区中的攻击报文,并据此生成攻击日志。上述防火墙设备中三种类型的中央处理器各自独立并行地工作,由转发核处理正常报文以及小流量攻击,由攻击防御专用核处理大流量攻击,由日志记录核主动获取攻击报文,并相应地生成攻击日志,三者各司其职,保证防火墙设备既能实现报文的正常转发,又能有效地防御大流量攻击,还能同时记录攻击日志,有效地提高了防火墙设备的性能,使其满足市场需求。

附图说明

图1为本申请实施例提供的一种防火墙设备的结构示意图;

图2为本申请实施例提供的另一种防火墙设备的结构示意图;

图3为本申请实施例提供的又一种防火墙设备的结构示意图;

图4为本申请实施例提供的一种报文处理方法的流程示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

现有技术中,通常选用硬件防火墙作为内部网与外部网之间的屏障,硬件防火墙价格高昂、具有较好的抵御攻击的能力。然而,即使硬件防火墙选用性能较好的中央处理器,受到多核并发资源竞争以及软件性能的限制等因素,通常也无法在阻止流量攻击的同时,对攻击日志进行记录。

相比于硬件防火墙,软件防火墙抵御攻击的性能相对较弱,其同样无法在抵御攻击的同时对攻击日志进行记录;究其原因在于,软件防火墙若要对攻击日志进行记录,其中的转发核需要从攻击报文中提取攻击流量信息并记录下来,进而将所记录的攻击流量信息发送至日志系统,如果在大攻击流量到来时,使用性能占用查看命令如perf命令查看转发核的性能占用情况,将明显地发现日志系统此时占用转发核大量的调用。

也就是说,在流量攻击到来时,转发核需要同时执行转发正常报文、抵御流量攻击、提取攻击流量信息以及将攻击流量信息发送至日志系统的操作,并且,提取攻击流量信息以及将攻击流量信息发送至日志系统会占用转发核大量的性能,因此,在流量攻击到来时,转发核自身的性能很难同时支持转发正常报文、抵御流量攻击以及提取攻击流量信息这些操作。此外,在向日志系统发送攻击流量信息之前,转发核还需要相应地通知日志系统,在该通知过程中,不同的线程之间无论是使用信号调用还是使用系统调用的方式,均会对转发核的性能造成不同程度的影响。

为了解决上述现有技术中存在的技术问题,本申请实施例提供了一种防火墙设备,该防火墙设备即使在遭遇大流量攻击的情况下,也能够实现对攻击日志的记录,并且不对防火墙的攻击防御性能和正常报文的转发性能造成影响。

具体的,在本申请实施例提供的防火墙设备中包括有三种类型的中央处理器以及每种类型的中央处理器对应的存储器,这三种类型的中央处理器中分别配置有转发核、攻击防御专用核以及日志记录核,其中,转发核用于转发正常报文以及将小流量攻击报文丢弃至第一攻击报文缓存区,攻击防御专用核用于将大流量攻击报文丢弃至第二攻击报文缓存区,日志记录核用于通过无锁读操作,读取第一攻击报文缓存区和第二攻击报文缓存区中的攻击报文,并相应地生成攻击日志。

由于转发核、攻击防御专用核以及日志记录核三者分别独立并行地工作,转发核专门用于转发正常报文以及处理小流量攻击,攻击防御专用核专门用于处理大流量攻击,日志记录核专门用于读取攻击报文并生成攻击日志,因此,该防火墙设备可以同时执行转发正常报文、抵御流量攻击以及生成攻击日志这三项操作,即使在遭遇大流量攻击时,记录攻击日志也不会对防火墙的攻击抵御性能以及报文转发性能产生影响。

下面通过实施例对本申请提供的防火墙设备进行介绍。

参见图1,图1为本申请实施例提供的防火墙设备的结构示意图。如图1所示,该防火墙设备中包括三种类型的中央处理器,分别为第一类中央处理器101、第二类中央处理器102和第三类中央处理器103;该防火墙设备中还包括与上述三种类型的中央处理器对应的存储器,分别为对应于第一类中央处理器101的存储器104、对应于第二类中央处理器102的存储器105和对应于第三类中央处理器103的存储器106。

需要说明的是,图1所示的防火墙设备仅为一种示例,在实际应用中,三种类型的中央处理器可以分别各自对应一个存储器,也可以多种类型的中央处理器共同对应一个存储器,即第一类中央处理器101、第二类中央处理器102以及第三类中央处理器103中任意两者可以共同对应一个存储器,或者,这三种类型的中央处理器可以共同对应一个存储器。

第一类中央处理器101中配置有转发核,该转发核用于接收并识别第一类型的报文,进而根据识别结果转发正常报文,或者丢弃攻击报文至与转发核对应的第一攻击报文缓存区。

第二类中央处理器102中配置有攻击防御专用核,该攻击防御专用核用于接收并识别第二类型的报文,进而根据识别结果转发正常报文,或者丢弃攻击报文至与攻击防御专用核对应的第二攻击报文缓存区。

其中,第一类型的报文具体包括正常报文和小流量攻击报文;第二类型的报文具体包括正常报文和大流量攻击报文。防火墙设备接收到来自外界的报文后,防火墙设备中的网卡可以预先根据设置于网卡驱动中的流量特征规则,相应地识别防火墙设备接收的报文所属的类型,若判断所接收的报文的特征符合第一类型的报文的特征,则相应地将该报文发送至第一类中央处理器101,若判断所接收的报文所具备的特征符合第二类型的报文的特征,则相应地将该报文发送至第二类中央处理器102。

根据报文所具备的特征,将大流量攻击报文与正常报文、小流量攻击报文区分开来,利用配置有攻击防御专用核的第二类中央处理器102对大流量攻击报文进行处理,这种操作也被称为黑洞化处理;防火墙设备接收到大流量攻击报文如ddos攻击后,直接将其引导至单独的线程攻击防御专用核进行处理,保证正常报文的转发不受大流量攻击报文的影响,同时也可以保证对大流量攻击报文处理的高效性。

上述第一攻击报文缓存区具体可以被设置于与第一类中央处理器对应的存储器104中,第二攻击报文缓存区具体可以被设置于与第二类中央处理器对应的存储器105中;第一攻击报文缓存区与转发核呈一一对应的关系,第二攻击报文缓存区与攻击防御专用核呈一一对应的关系。

第一类中央处理器101接收到第一类型的报文后,其中配置的转发核对该第一类型的报文做进一步识别处理,若识别出该第一类型的报文为正常报文,则相应地对该正常报文进行转发,若识别出该第一类型的报文为小流量攻击报文,则将该攻击报文丢弃至第一类中央处理器101对应的存储器104中,即,将该攻击报文丢弃至与转发核对应的第一攻击报文缓存区。

相类似地,第二类中央处理器102接收到第二类型的报文后,其中配置的攻击防御专用核对该第二类型的报文做进一步处理,若识别出该第二类型的报文为正常报文,则相应地转发该正常报文,若识别出该第二类型的报文为大流量攻击报文,则将该攻击报文丢弃至第二类中央处理器102对应的存储器105中,即,将该攻击报文丢弃至与攻击防御专用核对应的第二攻击报文缓存区。

应理解,在实际应用中,攻击防御专用核除了可以对大流量攻击报文进行处理外,其也可以实现正常的报文转发功能,也就是说,在攻击防御专用核接收到正常报文的情况下,该攻击防御专用核也可以对该正常报文进行转发。

需要说明的是,在实际应用中,为了提高防火墙设备的性能,通常可以设置多个第一类中央处理器101和多个第二类中央处理器102,即,可以设置多个配置有转发核的第一类中央处理器101和多个配置有攻击防御专用核的第二类中央处理器103;相应地,防火墙设备的报文转发性能以及攻击防御性能,也将相应地随第一类中央处理器101和第二类中央处理器102的增加而增强;每种类型的中央处理器的数量具体可以根据实际需求进行设置。

需要说明的是,在一些情况下,第一类中央处理器101和第二类中央处理器102可以采用同一物理设备,即转发核和攻击防御专用核可以共用一个中央处理器,该中央处理器中的转发核和攻击防御专用核共用一个独占线程,其可以同时实现正常报文转发、小流量攻击报文处理以及大流量攻击报文处理三种功能。

相应地,防火墙设备中的攻击报文缓存区(包括第一攻击报文缓存区和第二攻击报文缓存区)的数量,将取决于转发核、攻击防御专用核以及被共用的中央处理器的数量。假设存在a个转发核、b个攻击防御核和n个攻击报文缓存区;若转发核和攻击防御核之间不存在共用的中央处理器,则n=a+b,其中,第一攻击报文缓存区的数量为a,第二攻击报文缓存区的数量为b;若转发核和攻击防御核之间存在c个共用的中央处理器,则n=a+b-c。

通常情况下,对中央处理器对应的存储器进行初始化处理时,可以先在存储器中构建通用内存池mubfmempool,中央处理器接收到报文后,可以相应地从该通用内存池mubfmempool中申请用于存放所接收的报文的内容,在报文被释放后,将被该报文占用的内存释放回通用内存池mubfmempool。

针对本申请实施例提供的防火墙设备,对存储器进行初始化处理时,需要相应地针对转发核构建其对应的第一报文内存池common-mempool,针对攻击防御专用核构建其对应的第二报文内存池special-mempool。具体的,可以在第一类中央处理器对应的存储器中构建第一报文内存池common-mempool,转发核接收到报文后,从该第一报文内存池common-mempool中申请用于存储报文的内存,在报文被释放后,将报文所占用的内存释放回该第一报文内存池common-mempool;在第二类中央处理器对应的存储器中构建第二报文内存池special-mempool,攻击防御专用核接收到报文后,从该第二报文内存池special-mempool中申请用于存储报文的内存,在报文被释放后,将报文所占用的内存释放回第二报文内存池special-mempool。

需要说明的是,当防火墙设备采用非统一内存访问架构(nonuniformmemoryaccessarchitecture,numa)的中央处理器时,对第一类中央处理器对应的存储器进行初始化处理,实质上就是对第一类中央处理器自身所在的numa对应的存储器进行初始化处理,相应地,第一报文内存池common-mempool的数量等于防火墙设备中包括有第一类中央处理器的numa的数量。

为了防止在大流量攻击报文到来时,因资源竞争对大流量攻击报文的处理产生影响;在对第二中央处理器对应的存储器进行初始化处理时,可以针对每个攻击防御专用核相应地构建一个第二报文内存池special-mempool,各个攻击防御专用核在接收到报文后,从自身对应的第二报文内存池special-mempool中申请内存,保证各个攻击防御专用核之间不存在内存资源的竞争,相应地,防火墙设备的攻击防御性能也能够随攻击防御专用核数量的增加而线性增强。

应理解,当第一类中央处理器与第二类中央处理器共同对应同一个存储器时,可以在该存储器中相应地构建转发核专用的第一报文内存池common-mempool,以及攻击防御专用核专用的第二报文内存池special-mempool。

需要说明的是,由于攻击防御专用核需要处理的攻击报文的数目通常远大于转发核需要处理的报文的数目,因此,在对存储器进行初始化处理时,所构建的第二报文内存池special-mempool的大小通常远大于第一报文内存池common-mempool的大小,即第二报文内存池special-mempool中能够存储的报文数量远大于第一报文内存池common-mempool中能够存储的报文数量。

对存储器进行初始化处理时,除了需要构建第一报文内存池common-mempool和第二报文内存池special-mempool外,还需要相应地构建第一攻击报文缓存区dorpring和第二攻击报文缓存区dorpring。其中,第一报文缓存区dropring的数量与转发核的数量相等,第二攻击报文缓存区dropring的数量与攻击防御专用核的数量相等。

此外,第一攻击报文缓存区dorpring的大小取决于第一报文内存池common-mempool的大小,第二攻击报文缓存区dorpring的大小取决于第二报文内存池special-mempool的大小。当防火墙设备采用numa架构的中央处理器时,第一攻击报文缓存区dorpring中能够存储的报文的数量,取决于第一报文内存池common-mempool中能够存储的报文的数量和一个numa中包括的中央处理器的数量,假设第一报文内存池common-mempool中能够存储m个报文,numa所包括的中央处理器的个数为a,则第一攻击报文缓存区dorpring的长度x=m/a。第二攻击报文缓存区dorpring中能够存储的报文的数量,仍与第二报文内存池special-mempool中能够存储的报文数量相等。

应理解,由于第二报文内存池special-mempool的大小通常远大于第一报文内存池common-mempool的大小,因此,第二攻击报文缓存区dorpring中能够存储的报文的数量也远大于第一攻击报文缓存区dorpring中能够存储的报文的数量。

第三类中央处理器103中配置有日志记录核,该日志记录核用于通过无锁读操作,读取第一攻击报文缓存区和第二攻击报文缓存区中的攻击报文,根据所读取的攻击报文生成攻击日志。

第一类中央处理器101在判断所接收的报文为攻击报文时,将该报文丢弃至第一攻击报文缓存区,相类似地,第二类中央处理器102在判断所接收的报文为攻击报文时,将该报文丢弃至第二攻击报文缓存区。进而,配置有日志记录核的第三类中央处理器103,从第一攻击报文缓存区和第二攻击报文缓存区中遍历读取其中存储的攻击报文,并根据所读取的攻击报文生成攻击日志。

需要说明的是,为了保证日志记录核从第一攻击报文缓存区和第二攻击报文缓存区中读取攻击报文时,能够获知所读取的攻击报文被丢弃的原因,第一报文缓存区和第二报文缓存区中的报文通常携带有用于标记丢弃原因的字段,如extern_id字段,由此便于日志记录核根据extern_id字段获取丢弃原因,提取攻击报文中的特定字段形成攻击日志。

需要说明的是,通常情况下,多核同时对同一缓存区中的数据进行读操作或写操作时,多核之间需要通过加锁模式对该缓存区内的数据进行相应地操作,即需要根据各核各自对应的优先级,确定各核对缓存区内数据进行操作的顺序,优先级较高的核先操作,优先级较低的核后操作。而在本申请实施例提供的技术方案中,日志记录核与转发核之间可以采用无锁模式对第一攻击报文缓存区内的数据进行相应地操作,即在转发核向第一攻击报文缓存区写入攻击报文的同时,日志记录核也可以从第一攻击报文缓存区中读取攻击报文,转发核与日志记录核二者互不影响;相类似地,日志记录核与攻击防御专用核之间也可以采用无锁模式对第二攻击报文缓存区内的数据进行相应地操作,即在攻击防御专用核向第二攻击报文缓存区写入攻击报文的同时,日志记录核也可以从该第二攻击报文缓存区中读取攻击报文,攻击防御专用核与日志记录核二者互不影响。

上述防火墙设备中三种类型的中央处理器各自独立并行地工作,由转发核处理正常报文以及小流量攻击,由攻击防御专用核处理大流量攻击,由日志记录核主动获取攻击报文,并相应地生成攻击日志,三者各司其职,保证防火墙设备既能实现报文的正常转发,又能有效地防御大流量攻击,还能同时记录攻击日志,由此有效地提高防火墙设备的性能,满足市场需求。

需要说明的是,日志记录核读取到第一攻击报文缓存区和第二攻击报文缓存区中存储的攻击报文后,转发核可以相应地回收第一攻击报文缓存区中已被读取的攻击报文占用的存储空间至第一报文内存池,攻击防御专用核可以相应地回收第二攻击报文缓存区中已被读取的攻击报文占用的存储空间至第二报文内存池,由此保证转发核和攻击防御专用核后续接收到报文时,第一报文内存池和第二报文内存池能够提供足够的存储空间被其调用,保证转发核和攻击防御专用核能够正常工作。

在一种可能的实现方式中,转发核用于当第一攻击报文缓存区饱和时,回收第一攻击报文缓存区中所有已被日志记录核读取的攻击报文的存储空间,将该存储空间释放至与该转发核对应的第一报文内存池;相类似地,攻击防御专用核用于当第二攻击报文缓存区饱和时,回收第二攻击报文缓存区中所有已被日志记录核读取的攻击报文的存储空间,将该存储空间释放至该攻击防御专用核对应的第二报文内存池。

具体的,当第一攻击报文缓存区已被转发核丢弃的攻击报文填满时,转发核可以对第一攻击报文缓存区中被标记为已读的攻击报文占用的存储空间进行回收,被标记为已读的攻击报文实质上就是被日志记录核读取过的攻击报文,回收到已读的攻击报文占用的存储空间后,进一步将所回收的存储空间释放至该转发核对应的第一报文内存池。

相类似地,当第二攻击报文缓存区已被攻击防御专用核丢弃的攻击报文填满时,攻击防御专用核可以对第二攻击报文缓存区中被标记为已读的攻击报文占用的存储空间进行回收,被标记为已读的攻击报文实质上就是被日志记录核读取过的攻击报文,回收到已读的攻击报文占用的存储空间后,进一步将所回收的存储空间释放至该攻击防御专用核对应的第二报文内存池。

在另一种可能的实现方式中,转发核用于当与自身对应的第一报文内存池中可用内存占比小于第一阈值时,回收第一攻击报文缓存区中所有已被日志记录核读取的攻击报文的存储空间,将所回收的存储空间释放至与该转发核对应的第一报文内存池;相类似地,攻击防御专用核用于当与自身对应的第二报文内存池中可用内存占比小于第一阈值时,回收第二攻击报文缓存区中所有已被日志记录核读取的攻击报文的存储空间,将所回收的存储空间释放至与攻击防御专用核对应的第二报文内存池。

具体的,当第一报文内存池中可用内存占比小于第一阈值时,说明可以被转发核申请用于存储新接收的报文的内存较少,此时,转发核可以对第一攻击报文缓存区中被标记为已读的攻击报文占用的存储空间进行回收,进而,将所回收的存储空间释放至该转发核对应的第一报文内存池,从而增加第一报文内存池中的可用内存。

相类似地,当第二报文内存池中可用内存占比小于第一阈值时,说明可以被攻击防御专用核申请用于存储新接收的报文的内存较少,此时,攻击防御专用核可以对第二攻击报文缓存区中被标记为已读的攻击报文占用的存储空间进行回收,进而,将所回收的存储空间释放至该攻击防御专用核对应的第二报文内存池,从而增加第二报文内存池中可用的内存。

应理解,上述第一阈值可以根据实际需求进行设定,通常可以将其设置为总内存的1/10,相应地,对应于第一报文内存池的第一阈值为第一报文内存池总内存的1/10,对应于第二报文内存池的第一阈值为第二报文内存池总内存的1/10;当然,第一阈值还可以根据实际需求设置为其他数值,在此不对第一阈值做任何具体限定。

上述两种可能的实现方式对第一攻击报文缓存区和第二攻击报文缓存区中的内存进行回收时,均采用的是批量回收的方式,即在满足内存回收条件时,一次性对所有已被日志记录核读取的攻击报文的存储空间进行回收,这种回收方式能够在一定程度上简化防火墙设备的整体设计方案,同时还可以提升防火墙设备的转发处理性能。

需要说明的是,配置于第三类中央处理器中的日志记录核,在读取第一攻击报文缓存区和第二攻击报文缓存区中的攻击报文时,日志记录核具体可以启动多个日志线程,通过多个日志线程采用无锁读操作,以并发地方式分别读取攻击报文,其中,一个日志线程与一个第一攻击报文缓存区或一个第二攻击报文缓存区对应,用于从其对应的攻击报文缓存区中读取攻击报文。

具体的,日志记录核在从第一攻击报文缓存区和第二攻击报文缓存区读取攻击报文时,日志记录核可以针对每个攻击报文缓存区(包括第一攻击报文缓存区和第二攻击报文缓存区)相应地启动一个日志线程,进而,通过各个攻击报文缓存区各自对应的日志线程,相应地从各个攻击报文缓存区中读取攻击报文。

应理解,此处的日志线程与第一攻击报文缓存区或第二攻击报文缓存区呈一一对应关系,相应地,日志线程与第一类中央处理器或第二类中央处理器呈一一对应关系,日志线程专门用于从与自身对应的攻击报文缓存区中读取攻击报文。

在这种多个日志线程并发读取攻击报文缓存区的机制中,日志线程与攻击报文缓存区是一一对应的,即一个日志线程仅从一个攻击报文缓存区中读取攻击报文,不存在多个日志线程共同分享一个攻击报文缓存区的情况,因此,能够有效地避免在读取攻击报文的过程中,各日志线程之间产生资源竞争,进而保证日志记录核记录日志的操作能够顺利进行。

在一种可能的实现方式中,为了保证随着日志记录核数量的增加,防火墙设备日志记录性能能够线性增强,可以在防火墙设备中设置多个第三类中央处理器,每个第三类中央处理器中的日志记录核启动一个日志线程,通过该日志线程从一个第一攻击报文缓存区或第二攻击报文缓存区中读取攻击报文。

参见图2,图2为该种防火墙设备对应的工作原理示意图。如图2所示,该防火墙设备中包括:两个配置有转发核的中央处理器,两个被转发核和攻击防御专用核所共用的中央处理器以及一个配置有攻击防御专用核的中央处理器;在上述中央处理器对应的存储器中设置有与各中央处理器各自对应的攻击报文缓存区dropring。

该防火墙设备中还包括与上述各个中央处理器对应的第三类中央处理器,如图2所示,该防火墙设备中包括有五个配置有日志记录核的中央处理器,每个中央处理器分别与上述配置有转发核和/或攻击防御专用核的中央处理器对应。

每个第三类中央处理器中的日志记录核针对自身对应的第一类中央处理器或第二类中央处理器启动一个日志线程,通过日志线程从该第一类中央处理器或第二类中央处理器对应的攻击报文缓存区dropring中读取攻击报文。

应理解,图2所示的防火墙设备仅为一种示例。在实际应用中,攻击报文缓存区被设置在中央处理器对应的存储器中,为了便于描述,图2将中央处理器与存储器做了合并处理,将攻击报文缓存区直接设置于中央处理器中,实际上存储器与中央处理器二者互相独立;另外,防火墙设备中可以包括若干个第一类中央处理器和第二类中央处理器,第三类中央处理器的数量取决于第一类中央处理器和第二类中央处理器的数量,在此不对防火墙设备中包括的中央处理器的数量做具体限定。

在图2所示的防火墙设备中,各个日志记录核之间完全并行化,由于各个日志记录核所访问的资源均是独立资源,每个攻击报文缓存区仅有读和写两个线程可以访问,其他中央处理器无法对其进行访问,因此,可以做到随着日志记录核的增加而线性提高防火墙设备的日志记录性能。

在支持超线程的设备中,第三类中央处理器可以与第一类中央处理器和第二类中央处理器分别共用同一物理设备;并且,该第三类中央处理器中的日志记录核具体可以用于通过该物理设备虚拟出的超线程读取攻击报文。

在支持超线程的设备中,其中的物理设备可以同时支持两类中央处理器运行,具体的,可以在物理设备创建虚拟设备,在该物理设备上运行第一类中央处理器或第二类中央处理器的同时,可以利用所创建的虚拟设备支持第三类中央处理器的运行。

需要说明的是,该物理设备实际上即为中央处理器,其支持两类中央处理器运行,实质上就是可以同时支持转发核与日志记录核工作,或同时支持攻击防御专用核与日志记录核工作;具体可以利用中央处理器中虚拟出的中央处理器支持日志记录核工作。

应理解,在同一物理设备中运行的第三类中央处理器与其中运行的第一类中央处理器或第二类中央处理器存在对应关系,即若在同一物理设备中同时运行第一类中央处理器和第三类中央处理,该第三类中央处理器中的日志记录核可以直接通过该物理设备虚拟出的超线程,从该第一类中央处理器对应的第一攻击报文缓存区中读取攻击报文;相类似地,若在同一物理设备中同时运行第二类中央处理器和第三类中央处理器,该第三类中央处理器中的日志记录核可以直接通过物理设备虚拟出的超线程,从该第二类中央处理器对应的第二攻击报文缓存区中读取攻击报文。

应理解,上述物理设备虚拟出的超线程实质上即为日志线程,其所需执行的操作与日志线程所需执行的操作相同,即用于从攻击报文缓存区中读取攻击报文。

参见图3,图3为本申请实施例提供的支持超线程的防火墙设备的工作原理示意图。该防火墙设备中包括四个中央处理器,其中,中央处理器1和中央处理器2同时支持转发核和日志记录核工作,中央处理器3和中央处理器4中同时支持攻击防御专用核和日志记录核工作。

如图3所示,中央处理器1、中央处理器2、中央处理器3和中央处理器4中虚拟出的超线程分别用作日志线程,中央处理器1和中央处理器2中的日志记录核通过其中虚拟出的超线程,从转发核对应的第一攻击报文缓存区中读取攻击报文,中央处理器3和中央处理器4中的日志记录核通过其中虚拟出的超线程,从攻击防御专用核对应的第二攻击报文缓存区中读取攻击报文。

应理解,为了便于描述,在图3所示的防火墙设备中的各个中央处理器中未表现出其中运行的日志记录核。图3所示的防火墙设备仅为一种示例。在实际应用中,攻击报文缓存区被设置在中央处理器对应的存储器中,为了便于描述,图3将中央处理器与存储器做了合并处理,将攻击报文缓存区直接设置于中央处理器中,实际上存储器与中央处理器二者互相独立;另外,防火墙设备中可以包括若干个支持超线程的中央处理器,在此不对防火墙设备中包括的中央处理器的数量做具体限定。

在支持超线程的防火墙设备中,转发核或攻击防御专用核与日志记录核可以共同使用同一高速缓冲存储器cache,日志线程可以在超线程内读取攻击报文缓存区中的攻击报文;攻击报文缓存区由转发核或攻击防御专用核顺序放入攻击报文,日志记录核逆向读取其中的攻击报文,转发核或攻击防御专用核和日志记录核不会同时访问同一内存,日志记录核读取到攻击报文缓存区中的攻击报文后,已被读取的攻击报文占用的内存在被释放前不会被再次读取,而且已被读取的攻击报文占用的内存通常在达到一定条件时,才会被批量释放,因此,日志记录核与转发核或攻击防御专用核更加不会同时占用同一资源。此外,由于日志记录核与转发核或攻击防御专用核所执行的操作完全不同,因此,使日志记录核与转发核或攻击防御专用核共用同一物理设备,可以使得该物理设备被更充分地利用。

由于日志记录核与转发核之间通常不是同步工作的关系,即日志线程通常不会在攻击报文缓存区中写入攻击报文后,立即从攻击报文缓存区中读取该攻击报文;因此,可能出现日志线程难以及时读取攻击报文的问题。在遭遇大量攻击报文的情况下,攻击报文缓存区可能在短时间内被大量写入或写满,而日志线程可能仍未读取攻击报文缓存区中的攻击报文,对防火墙性能将造成一定程度的影响。

为了防止上述情况发生,本申请提供了两种通知日志线程读取攻击报文的方式,下面对这两种方式做介绍。

在第一种实现方式中,转发核在第一攻击报文缓存区已写区域占比达到第二阈值,且日志线程还未读取其中的攻击报文时,通知日志线程读取攻击报文;相类似地,攻击防御专用核在第二攻击报文缓存区已写区域占比达到第二阈值,且日志线程还未读取其中的攻击报文时,通知日志线程读取攻击报文。

具体的,转发核对第一攻击报文缓存区中已写区域的大小进行监测,当监测到第一攻击报文缓存区中的已写区域在第一攻击报文缓存区中的占比达到第二阈值,且确定日志线程还未对该第一攻击报文缓存区中的攻击报文进行读取时,转发核通知日志线程读取该第一攻击报文缓存区中的攻击报文。

相类似地,攻击防御专用核对第二攻击报文缓存区中已写区域的大小进行监测,当监测到第二攻击报文缓存区中的已写区域在第二攻击报文缓存区中的占比达到第二阈值,且确定日志线程还未对该第二攻击报文缓存区中的攻击报文进行读取时,攻击防御专用核通知日志线程读取该第二攻击报文缓存区中的攻击报文。

应理解,上述第二阈值的大小可以根据实际需求进行设定,通常可以将其设置为1/3,当然,也可以将该第二阈值设置为其他数值,在此不对该第二阈值做具体限定。

在第二种实现方式中,转发核可以根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过该提示信息通知日志线程,以使日志线程根据该提示信息调整每次读取的报文的个数;相类似地,攻击防御专用核也可以根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过该提示信息通知日志线程,以使日志线程根据该提示信息调整每次读取报文的个数。

具体的,转发核根据攻击流量的大小,相应地在被丢弃至第一攻击报文缓存区中的攻击报文的尾部增加提示信息,该提示信息用于提示日志线程如何对每次读取报文的个数进行调整;相应地,日志线程读取到该攻击报文时,将获取到该攻击报文中携带的提示信息,进而,日志线程可以根据该提示信息,对每次读取报文的个数相应地进行调整,并在下次从第一攻击报文缓存区中读取攻击报文时,按照该调整的个数对攻击报文进行读取。

相类似地,攻击防御专用核也可以根据攻击流量的大小,相应地在被丢弃至第二攻击报文缓存区中的攻击报文的尾部增加提示信息,该提示信息用于提示日志线程如何对每次读取报文的个数进行调整,相应地,日志线程读取到该攻击报文时,将获取到该攻击报文中携带的提示信息,进而,日志线程可以根据该提示信息,对每次读取报文的个数进行调整,并在下次从第二攻击报文缓存区中读取攻击报文时,按照该调整的个数对攻击报文进行读取。

应理解,当攻击流量较多时,转发核或攻击防御专用核在攻击报文尾部增加的提示信息,用于通知日志线程增加每次读取报文的个数;当攻击流量较少时,转发核或攻击防御专用核在攻击报文尾部增加的提示信息,用于通知日志线程减少每次读取报文的个数。

由此,通过上述两种实现方式通知日志线程对攻击报文缓存区中的攻击报文进行读取,保证日志线程可以及时地对攻击报文缓存区中的攻击报文进行读取,从而有效地防止在遭遇大量攻击报文的情况下,影响防火墙设备的性能。

针对上文所述的防火墙设备,本申请还提供了一种防火墙设备的报文处理方法,以便该防火墙设备在实际应用中基于该报文处理方法,对自身接收的报文进行处理。

参见图4,图4为本申请实施例提供的报文处理方法的流程示意图。如图4所示,该报文处理方法包括以下步骤:

步骤401:第一类中央处理器通过预配置的转发核,接收并识别第一类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述转发核对应的第一攻击报文缓存区。

步骤402:第二类中央处理器通过预配置的攻击防御专用核,接收并识别第二类型的报文,根据识别结果转发正常报文或者丢弃攻击报文至与所述攻击防御专用核对应的第二攻击报文缓存区。

步骤403:第三种中央处理器通过预配置的日志记录核,通过无锁读操作,读取所述第一攻击报文缓存区和所述第二攻击报文缓存区中的攻击报文,根据所述攻击报文生成攻击日志。

可选的,该报文处理方法还包括:

所述第一类中央处理器通过所述转发核,在所述第一攻击报文缓存区饱和时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述第二类中央处理器通过所述攻击防御专用核,在所述第二攻击报文缓存区饱和时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述第一类中央处理器通过所述转发核,在与所述转发核对应的第一报文内存池中可用内存占比小于第一阈值时,回收所述第一攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述转发核对应的第一报文内存池;

所述第二类中央处理器通过所述攻击防御专用核,在与所述攻击防御专用核对应的第二报文内存池中可用内存占比小于第一阈值时,回收所述第二攻击报文缓存区中所有已被所述日志记录核读取的攻击报文的存储空间,将所述存储空间释放至与所述攻击防御专用核对应的第二报文内存池。

可选的,所述第三类中央处理器通过所述日志记录核,启动多个日志线程,通过多日志线程采用无锁读操作,以并发地方式分别读取攻击报文,其中,一个日志线程与一个中央处理器对应,用于从对应的中央处理器中读取攻击报文。

可选的,该报文处理方法还包括:

所述第一类中央处理器通过所述转发核,当所述第一攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,通知日志线程读取攻击报文;

所述第二类中央处理器通过所述攻击防御专用核,当所述第二攻击报文缓存区已写区域占比达到第二阈值且日志线程还未读取时,通知日志线程读取攻击报文。

可选的,该报文处理方法还包括:

所述第一类中央处理器通过所述转发核,根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数;

所述第二类中央处理器通过所述攻击防御专用核,根据攻击流量的大小,在攻击报文的尾部增加提示信息,通过所述提示信息通知日志线程,以使日志线程根据所述提示信息调整每次读取报文的个数。

在本申请实施例提供的防火墙设备的报文处理方法中,防火墙设备中三种类型的中央处理器各自独立并行地工作,由转发核处理正常报文以及小流量攻击,由攻击防御专用核处理大流量攻击,由日志记录核主动获取攻击报文,并相应地生成攻击日志,三者各司其职,保证防火墙设备既能实现报文的正常转发,又能有效地防御大流量攻击,还能同时记录攻击日志,有效地提高了防火墙设备的性能,使其满足市场需求。

本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种防火墙设备的报文处理方法中的任意一种实施方式。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1