1.本发明属于多核架构智能检测检测方法技术领域,具体地说,涉及一种防火墙多核架构智能检测方法。
背景技术:
2.随着网络应用越来越多,对于带宽的需求也水涨船高,由此给安全审计的软硬件实际解决方案提出了挑战,怎样在不牺牲性能或者付出较少性能代价的基础上实现企业应用的安全审计为成设计的重点。
3.智能检测的技术主要是应用状态检测防火墙的技术与应用层数据流识别的技术相给合,高效地识别出网络上的各种应用,以及通过对应用流数据的检测从而实现对网络应用级别的安全审计,流量控制,企业级应用的安全策略实施,高可靠性等的功能需求。智能检测技术的实际方案遇到许多实现的挑战,比如应用程序的加密,隧道技术。
4.安全网关类产品应用越来越宽泛,从经典的防火墙扩展到utm、ips、在线流量分析监控设备、在线流量管理设备、web访问管理设备等等。这些应用既有强大丰富的报文分析和流量分析功能,也需要对经过本设备的流量进行高效地转发处理,从安全网关类产品的共性来看,它们虽然应用场景各异,但都需要有强大的cpu处理能力来同时保证分析工作和转发工作,而cpu处理能力的限制往往使得转发工作挤占了分析工作所需的资源,产品应用开发人员不得不在性能和功能的平衡取舍问题上花费很多的精力,网络性能问题甚至成了制约功能进一步丰富完善的瓶颈。
5.回顾典型的基于x86系统的安全网关应用软件实现,有如下瓶颈制约着网络性能提升:(1)总线;(2)中断;(3)报文转换和校验处理;(4)路由表、状态表查询;(5)流分类算法;(6)流量采样、统计和调度。
6.针对这些问题,asic芯片、网络处理器、多核处理器等技术相继出现,并从不同层面不同角度或多或少的解决了上述问题,然而,和网络性能的飞快提升、业务功能飞快丰富的需求增长速度相比,这些架构并没有快速普及,从出色的芯片能力到成熟的应用产品之间仍然存在不小的跨越距离,这种距离制约了上述专有硬件架构在安全网关领域的流行和普及。
技术实现要素:
7.、要解决的问题针对上述现有技术存在的问题,本发明提供一种防火墙多核架构智能检测方法,
创造性引入根据硬件配置的参数来获得最大启动监控进程数snum,并根据snum值来进行是否进行cpu绑定的中断,实现依据系统网卡的实际状态分配其cpu,从而使cpu能够满足网卡的需要,接着,利用启动的进程与cpu的绑定,实现智能检测引擎,优化各个进程服务之间的调度情况,结合上述步骤最终实现多网卡更高性能并发数据包检测过程。
8.、技术方案为解决上述问题,本发明采用如下的技术方案。
9.一种防火墙多核架构智能检测方法,包括以下步骤:(1)根据系统的硬件配置,检索系统的支持核数、网卡队列数以及内存来获取的最大启动监控进程数snum;(2)根据步骤(1)获取的最大启动监控进程数snum设置网卡监控队列数并进行cpu绑定的中断;(3)将启动的进程与cpu进行绑定,启动智能检测引擎;(4)利用cpu隔离技术优化各个进程服务之间的调度情况,进行多个网卡之间并发数据包的检测。
10.上述所述的防火墙多核架构智能检测方法中,步骤(1)中所述的系统的硬件配置包括系统网卡的配置,其中系统网卡与系统cpu之间进行绑定,所述的系统cpu与所述的系统网卡之间设置有多核架构的防火墙检测引擎,所述的防火墙检测引擎通过中断机制来监管所述的系统网卡的数据包。
11.上述所述的防火墙多核架构智能检测方法中,步骤(1)处理之前还包括如下的步骤:终止所述的系统的irqbalance服务,设置所述的系统的模式为中断非自动平衡调整;接着,判断当前所述的系统的环境是否支持多队列网卡,具体包括:执行lspci-vvv命令,若ethernet项中含有msi-x:enable+count=9 masked-语句,则当前系统支持多队列网卡,执行所述的步骤(1);若ethernet项中不含上述语句,则终止执行所有步骤。
12.上述所述的防火墙多核架构智能检测方法中,步骤(1)中所述的最大启动监控进程数snum根据所述的系统的最大支持引擎启动核数、所述的系统的最小网卡队列数及所述的系统的内存的最大支持进程来获取。
13.上述所述的防火墙多核架构智能检测方法中,步骤(2)中所述的网卡监控队列数从需要监控的网卡列表中获取并通过ethtool命令行网卡队列的配置。
14.上述所述的防火墙多核架构智能检测方法中,步骤(2)中所述的cpu绑定的中断具体如下:通过网卡队列的中断号来进行cpu亲和度的绑定。
15.上述所述的防火墙多核架构智能检测方法中,步骤(3)处理之前还包括如下的步骤:根据多队列进程监控对每个进程监控相同队列的网卡收发的数据流量进行处理。
16.上述所述的防火墙多核架构智能检测方法中,
步骤(3)中智能检测引擎用于分析数据包所属的链路号以及流动方向。
17.上述所述的防火墙多核架构智能检测方法中,步骤(4)中所述的cpu隔离技术具体为利用cgroup技术进行隔离。
18.上述所述的防火墙多核架构智能检测方法中,步骤(4)中所述的优化各个进程服务之间的调度情况的算法公式如下:
ꢀꢀ
(i),式中,k是数据包的丢包率,xi是第i个数据包,ρ与c分别是数据包的链路号与数据包的流动方向的自由度值,t0为初始时刻,t为网卡队列的中断号值,ω为计算域;
ꢀꢀꢀꢀ
(ii),式中,m,n分别为数据包的测量数据数量与辨识参数数量,t为网卡队列的中断号值,采用复变量求导法计算j的各系数。
19.、有益效果相比于现有技术,本发明的有益效果为:本技术创造性引入根据硬件配置的参数来获得最大启动监控进程数snum,并根据snum值来进行是否进行cpu绑定的中断,实现依据系统网卡的实际状态分配其cpu,从而使cpu能够满足网卡的需要,接着,利用启动的进程与cpu的绑定,实现智能检测引擎,优化各个进程服务之间的调度情况,结合上述步骤最终实现多网卡更高性能并发数据包检测过程。
附图说明
20.图1为本发明的防火墙多核架构智能检测方法的流程图;图2为本发明的设备支持核数获取图;图3为本发明的网卡支持队列数获取图;图4为本发明的igb网卡支持队列数的展示图;图5为本发明的i40e网卡支持队列数的展示图;图6为本发明的系统内存获取图。
具体实施方式
21.下面结合具体实施例对本发明进一步进行描述。
22.服务器通过其与外部世界交互的通道是网络,并且最终结果通过网络反馈给请求对象,而不管服务器执行的复杂工作。从某种意义上说,网卡是服务器外部通信和通信的“要塞”,网卡的性能在一定程度上决定了服务器的整体性能,快速发展的云服务器与高性能网络支持密不可分。多队列网卡是一种技术,最初是用来解决网络io qos(quality of service)问题的,后来随着网络io的带宽的不断提升,单核cpu不能完全处满足网卡的需求,体现最为明显的就是单核cpu处理不了网卡大量的数据包请求(软中断)而造成大量丢包,其实当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存,因为网卡缓存大小有限,如果不及时拷出数据,后续数据包将会因为缓存溢出被丢弃,因此这一工作需要立即完成。剩下的处理和操作数据包的工作就会交给软中断,高负载的网卡是软中断产生的大户,很容易形成瓶颈。但通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的cpu核上,便能够满足网卡的需求,这是多队列网卡的基本内含。
23.需要提醒的是,在本技术中,cpu亲和性:cpu亲和性(cpu affinity)是一种调度属性(scheduler property),它可以将一个进程"绑定"到一个或一组cpu上。在smp(symmetric multi-processing对称多处理)架构下,linux调度器(scheduler)会根据cpu affinity的设置让指定的进程运行在"绑定"的cpu上,而不会在别的cpu上运行。linux调度器同样支持自然cpu亲和性(natural cpu affinity):调度器会试图保持进程在相同的cpu上运行,这意味着进程通常不会在处理器之间频繁迁移,进程迁移的频率小就意味着产生的负载小。而通过配置cpu亲和性则可以实现依据系统网卡的实际状态分配其cpu,从而使cpu能够满足网卡的需求。irqbalance服务:irqbalance用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于performance mode或power-save mode。处于performance mode时,irqbalance会将中断尽可能均匀地分发给各个cpu core,以充分利用cpu多核,提升性能。
24.本实施例的防火墙多核架构智能检测方法,该方法主要检测防火墙硬件设置信息智能设置引擎多核启动模式。如图1所示,从硬件配置获取、设置网卡队列、软中断绑定、根据网卡队列数启动检测引擎至cpu隔离技术,具体来说,包括以下步骤:(1)根据系统的硬件配置,检索系统的支持核数、网卡队列数以及内存来获取的最大启动监控进程数snum;上述所述的防火墙多核架构智能检测方法中,步骤(1)中所述的系统的硬件配置包括系统网卡的配置,其中系统网卡与系统cpu之间进行绑定,所述的系统cpu与所述的系统网卡之间设置有多核架构的防火墙检测引擎,所述的防火墙检测引擎通过中断机制来监管所述的系统网卡的数据包。此处,需要说明的是,在一个虚拟防火墙实例内,虚拟防火墙管理员还可以继续创建本虚拟防火墙内独立的vpn多实例(vrf),不同虚拟墙内的vrf实例完全独立,名字可以相同。同一个虚拟墙内多个vrf共享该虚拟防火墙的资源,通过抢占进行分配。通过这种1:n:m虚拟化方式可以满足一个租户内部的进一步业务隔离需求,同时进一步扩大系统虚拟化能力。上述功能尤其适用于部分变更频繁且有实时性要求的业务系统,可以开通独立的虚拟防火墙并且将该虚拟防火墙授权给业务系统管理员,并且限定业务系统管理员的权限,比如仅能操作该虚拟防火墙内的安全策略。对于其他的业务系统,可以在缺省虚拟防火墙内通过vrf隔离,由管理员统一维护管理。此方案实现了业务快速响应、虚拟化业务能力扩展及安全权限控制的多方平衡。
25.上述所述的防火墙多核架构智能检测方法中,步骤(1)处理之前还包括如下的步骤:终止所述的系统的irqbalance服务,设置所述的系统的模式为中断非自动平衡调整;接着,判断当前所述的系统的环境是否支持多队列网卡,具体包括:执行lspci-vvv命令,若ethernet项中含有msi-x:enable+count=9 masked-语句,则当前系统支持多队列网卡,执行所述的步骤(1);若ethernet项中不含上述语句,则终止执行所有步骤。
26.上述所述的防火墙多核架构智能检测方法中,步骤(1)中所述的最大启动监控进程数snum根据所述的系统的最大支持引擎启动核数、所述的系统的最小网卡队列数及所述的系统的内存的最大支持进程来获取。具体来说,如图2所示,考虑到其他服务cpu占用,这里设置最大支持引擎启动核数为3,预留0号cpu进行系统调用cpu=3;如图3、图4及图5所示,需要考虑多网卡驱动混用情况,可以看到不同网卡驱动支持最大队列数不一样,取最小队列combined=最小值获取(igb网卡支持队列数,i40e网卡支持队列数)=4;如图6所示,最大支持进程mem=(总内存(15g)-其他服务预留内存(2g))/单体进程所需内存(1g)mem=13;最后,将获取的cpu、combined、mem获取启动的最小值为启动引擎的个数(snum)。
27.(2)根据步骤(1)获取的最大启动监控进程数snum设置网卡监控队列数并进行cpu绑定的中断;上述操作,提高网卡的收发包能力,具体来说,操作如下:上述所述的防火墙多核架构智能检测方法中,步骤(2)中所述的网卡监控队列数从需要监控的网卡列表中获取并通过ethtool命令行网卡队列的配置。
28.上述所述的防火墙多核架构智能检测方法中,步骤(2)中所述的cpu绑定的中断具体如下:通过网卡队列的中断号来进行cpu亲和度的绑定,例如采用基于irq获取系统网卡与cpu绑定的硬中断。
29.需要说明的是,获取需要监控的网卡列表(根据时间环境配置),接着设置网卡队列,通过ethtool命令提供的方法进行配置:“ethtool-l eth1 combined snum”,可以通过ethtool-l eth1进行查看,最后设置软中断cpu绑定,由于0号cpu复制系统调度这从1号cpu进行绑定,获取网卡对列的中断号然后进行cpu亲和度绑定(1号开始进行绑定)。
30.此外,可设计类似的系统,例如:网卡配置获取模块,用于获取系统网卡配置;具体来说,irqbalance服务终止模块,用于终止系统irqbalance服务,并设置系统为中断非自动平衡调整,系统环境判断模块,用于判断当前系统是否支持多队列网卡,具体包括:执行lspci-vvv命令,若ethernet项中含有msi-x:enable+count=9 masked-语句,则当前系统支持多队列网卡,并进入网卡配置获取模块;若ethernet项中不含上述语句,则终止执行所有进程。
31.绑定中断模块,用于获取系统网卡与cpu绑定中断;其用于基于irq获取系统网卡与cpu绑定的硬中断。
32.亲和性配置模块,用于配置被中断的cpu亲和性;具体来说,获取被中断的系统网
卡支持的队列数;获取被中断的cpu核数;依据被中断的系统网卡支持的队列数及被中断的cpu核数配置被中断的cpu亲和性。
33.此外,上述操作带来如下效果:本发明通过上述步骤实现了多队列网卡绑定cpu,最终实现依据系统网卡的实际状态分配其cpu,从而使cpu能够满足网卡的需要。通过将cpu的多核绑定系统网卡,实现了cpu的各个核可以并发的收发包,避免了一个核不能满足需求,导致网络io性能下降的问题,提高网络的吞吐量和网络性能。
34.(3)将启动的进程与cpu进行绑定,启动智能检测引擎,此处,需要注意的是,智能检测引擎至少包括以下三个装置:侦听装置,用于侦听并拦截访问程序;引擎装置,用于根据所述访问程序而输出指示所述访问程序的危险等级的信息,其中所述引擎装置包括:分析装置,用于分析所侦听的访问程序的特性;上述操作进而提高cpu利用率;上述所述的防火墙多核架构智能检测方法中,步骤(3)处理之前还包括如下的步骤:根据多队列进程监控对每个进程监控相同队列的网卡收发的数据流量进行处理。
35.上述所述的防火墙多核架构智能检测方法中,步骤(3)中智能检测引擎用于分析数据包所属的链路号以及流动方向。
36.(4)利用cpu隔离技术优化各个进程服务之间的调度情况,进行多个网卡之间并发数据包的检测;cpu隔离和进程调度优先级设置的相关知识:1.uboot启动参数中增加”isolcpus=1“,计数从0开始表示隔离第2个cpu,系统启动后,程序不能在第2个cpu上运行。
37.如果要使用隔离的cpu,需要在代码中添加如下代码。
38.pid_t tid;cpu_set_t set;tid=gettid();cpu_zero(&set);cpu_set(1,&set);sched_setaffinity(tid,sizeof(cpu_set_t),&set);查看线程运行在那个cpu上:a.执行top-h,显示所有线程信息b.按f键进入菜单向,使用方向键移动到“p=last used cpu”,用空格键选中c.按q键回到上级菜单显示如下,多了一列p,pid user pr ni virt res%cpu%mem time+p s command1 root 20 0 2.3m 0.7m 0.0 0.3 0:04.65 0 s init92 root 20 0 1.8m 0.6m 0.0 0.2 0:00.01 1 s`-pvalue_valid+2.设置线程调度策略和优先级pthread_attr_t attr;int policy,inher;
struct sched_param param;pthread_attr_init(&attr);//policy=sched_fifo;policy=sched_rr;ret=pthread_attr_setschedpolicy(&attr,policy);if(ret!=0)printf("pthread_attr_setschedpolicy/n%s/n",strerror(ret));param.sched_priority=99;ret=pthread_attr_setschedparam(&attr,&param);if(ret!=0)printf("pthread_attr_setschedparam/n%s/n",strerror(ret));pthread_attr_setinheritsched(&attr,pthread_explicit_sched);//设置线程调度策略时,必须设置此参数,否则会继承父进程的属性。
39.ret=pthread_create(&thread_la,&attr,threadtest,null);查看线程调度策略和优先级,可以用命令chrtchrt-p pid设置为实时调度,优先级99,执行命令chrt-r-p 99 pid3.补充,另外pc(ubuntu)机上有个taskset命令(默认已安装),可以设置程序运行在那个cpu上,但要隔离cpu,设置比较麻烦。大家可以设置程序运行在那个cpu上。
40.例:程序启动时taskset-c 0,5,7,9-11./appapp启动后可以在0,5,7,9,10,11号cpu上运行;cpuid是从0开始计数,cpuid可以10进制,也可以16进制0x00ea1,1位代表一个cpu,最低位为cpu0例:程序运行后taskset-cp 0 11111设置进程号为11111的进程在cpu 0上运行。
41.查看使用上面的提到的top命令。
42.上述所述的防火墙多核架构智能检测方法中,步骤(4)中所述的cpu隔离技术具体为利用cgroup技术进行隔离。
43.具体来说,group(control group)是将任意进程进行分组化管理的linux内核功能。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,i/o或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为cgroup子系统或控制器。cgroup子系统有控制内存的memory控制器、控制进程调度的cpu控制器等。运行中的内核可以使用的cgroup子系统由/proc/cgroup来确认。cgroup提供了一个cgroup虚拟文件系统,作为进行分组管理和各子系统设置的用户接口。要使用cgroup,必须挂载cgroup文件系统。这时通过挂载选项指定使用哪个子系统。在申请中,可以这样应用:步骤一,将每块fpga硬件独立虚拟为一个字符类型设备;步骤二,将fpga的虚拟字符类型设备与cpu的核心进行绑定运行,实质上为利用cgroup技术中的devices子系统,将fpga虚拟为字符类型设备,允许或拒绝cgroup中的进程访问设备,同时在cpu端通过cgroup技术进行物理隔离cpu核心,使fpga的虚拟字符类型设备与固定cpu核心进行绑定运行。
44.上述所述的防火墙多核架构智能检测方法中,步骤(4)中所述的优化各个进程服务之间的调度情况的算法公式如下:
ꢀꢀ
(i),式中,k是数据包的丢包率,xi是第i个数据包,ρ与c分别是数据包的链路号与数据包的流动方向的自由度值,t0为初始时刻,t为网卡队列的中断号值,ω为计算域;
ꢀꢀ
(ii),式中,m,n分别为数据包的测量数据数量与辨识参数数量,t为网卡队列的中断号值,采用复变量求导法计算j的各系数。
45.上述调度情况的算法公式,可以有效优化数据包的丢包率,同时可进行异常行为的分析,处理如下:数据预处理:通过规则文件对接入的上行数据或下行数据进行匹配和提取,而后进行归一化处理;数据经过归一化处理后还需要对后续分析所依赖的属性进行丰富化处理;实时异常检测:对数据预处理后的实时数据流进行处理,依据检测规则对数据内容进行检测,提取异常行为的特征数据;判定异常行为原因:通过包括规则匹配、设定异常度阈值的方法,比较被检测的数据行为与异常行为之间是否存在偏差,以此来判定造成异常行为的原因;作出保护处置:根据处理策略选择触发报警、自动过滤数据、切断通讯链路或将异常部分数据进行清除和修复,以实现对异常行为的保护性处理。
46.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
47.此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
技术特征:
1.一种防火墙多核架构智能检测方法,其特征在于:包括以下步骤:(1)根据系统的硬件配置,检索系统的支持核数、网卡队列数以及内存来获取的最大启动监控进程数snum;(2)根据步骤(1)获取的最大启动监控进程数snum设置网卡监控队列数并进行cpu绑定的中断;(3)将启动的进程与cpu进行绑定,启动智能检测引擎;(4)利用cpu隔离技术优化各个进程服务之间的调度情况,进行多个网卡之间并发数据包的检测。2.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(1)中所述的系统的硬件配置包括系统网卡的配置,其中系统网卡与系统cpu之间进行绑定,所述的系统cpu与所述的系统网卡之间设置有多核架构的防火墙检测引擎,所述的防火墙检测引擎通过中断机制来监管所述的系统网卡的数据包。3.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(1)处理之前还包括如下的步骤:终止所述的系统的irqbalance服务,设置所述的系统的模式为中断非自动平衡调整;接着,判断当前所述的系统的环境是否支持多队列网卡,具体包括:执行lspci-vvv命令,若ethernet项中含有msi-x:enable+count=9 masked-语句,则当前系统支持多队列网卡,执行所述的步骤(1);若ethernet项中不含上述语句,则终止执行所有步骤。4.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(1)中所述的最大启动监控进程数snum根据所述的系统的最大支持引擎启动核数、所述的系统的最小网卡队列数及所述的系统的内存的最大支持进程来获取。5.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(2)中所述的网卡监控队列数从需要监控的网卡列表中获取并通过ethtool命令行网卡队列的配置。6.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(2)中所述的cpu绑定的中断具体如下:通过网卡队列的中断号来进行cpu亲和度的绑定。7.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(3)处理之前还包括如下的步骤:根据多队列进程监控对每个进程监控相同队列的网卡收发的数据流量进行处理。8.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(3)中智能检测引擎用于分析数据包所属的链路号以及流动方向。9.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(4)中所述的cpu隔离技术具体为利用cgroup技术进行隔离。10.根据权利要求1所述的防火墙多核架构智能检测方法,其特征在于:步骤(4)中所述的优化各个进程服务之间的调度情况的算法公式如下:
ꢀꢀꢀꢀ
(i),式中,k是数据包的丢包率,x
i
是第i个数据包,ρ与c分别是数据包的链路号与数据包的流动方向的自由度值,t0为初始时刻,t为网卡队列的中断号值,ω为计算域;
ꢀꢀ
(ii),式中,m,n分别为数据包的测量数据数量与辨识参数数量,t为网卡队列的中断号值,采用复变量求导法计算j的各系数。
技术总结
本发明公开了一种防火墙多核架构智能检测方法,属于多核架构智能检测检测方法技术领域。其中智能检测方法,包括以下步骤:(1)根据系统的硬件配置,检索系统的支持核数、网卡队列数以及内存来获取的最大启动监控进程数SNUM;(2)根据步骤(1)获取的最大启动监控进程数SNUM设置网卡监控队列数并进行CPU绑定的中断;(3)将启动的进程与CPU进行绑定,启动智能检测引擎;(4)利用CPU隔离技术优化各个进程服务之间的调度情况,进行多个网卡之间并发数据包的检测。本申请通过优化各个进程服务之间的调度情况,最终实现多网卡更高性能并发数据包检测过程。检测过程。检测过程。
技术研发人员:李建北 毛庆威 陈英辉 胡江
受保护的技术使用者:杭州立思辰安科科技有限公司
技术研发日:2022.04.01
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-21401.html