基于MPI的WM串匹配并行算法的网络信息过滤系统的制作方法

文档序号:15281820发布日期:2018-08-28 23:37阅读:148来源:国知局
本发明涉及网络与信息安全
技术领域
:,尤其涉及一种基于mpi的wm串匹配并行算法的网络信息过滤系统。
背景技术
::随着计算机技术的迅速发展,信息在人们的生活中起着重要的作用。计算机网络中存在的大量信息影响着国家、政府、企事业单位和个人。网络信息为人们提供了丰富的资源和有益的信息,但是,在其中也存在着大量非法的、暴力的、恐怖的和色情等严重干扰社会和人们生活的不良内容。这些不良信息不仅会给社会带来严重的政治动乱,而且也会严重干扰人们的正常的生活。网络信息过滤系统是对网络中的信息进行筛选,并把不符合要求的网络信息进行屏蔽或者过滤,预警和报告给计算机网络管理人员,以便进行处理。目前使用的网络信息过滤系统,一种是安装在网络代理防火墙中,代理防火墙设置在内网和外网之间。代理防火墙主要的问题在于代理型防火墙自身所存在的缺点,防火墙虽然能够抵御大部分外部的攻击,但是对于防火墙内部的防范却很有限,如果黑客攻击内部网络主机成功,很容易造成单点失效的问题。此外,防火墙很难对网络信息的内容进行有效监控。另一种主要使用的方法是把网络信息过滤系统安装在代理路由器中,由于代理路由器需要大量转发网络数据包,在安装网络信息过滤系统之后,网络信息过滤系统会成为代理路由器的瓶颈,因此,影响着代理路由器的工作效率。如何让网络信息过滤系统即保持着防火墙的基本功能,又能够实现在代理路由器中对网络数据包的有效过滤是一个技术难题。深度数据包检测(deeppacketinspection)技术是网络信息过滤系统中的核心技术。深度数据包检测能够结合入侵检测系统、入侵防御系统及状态防火墙等功能,实现对网络数据包的数据部分的特征数据进行甄别和分类处理,因此,深度数据包检测比依靠数据包头部能够更精确地实现控制。同时,深度数据包检测也能够有效阻挡来自病毒、蠕虫和拒绝服务攻击等。深度数据包检测技术中主要的算法来源于字符串匹配算法。在众多的字符串匹配算法中经典的是:aho-corasick(ac)算法和wu-manber(wm)算法。ac算法和wm算法都是多模式串匹配算法。ac算法是alfredv.aho和margaretj.corasick于1975年提出的,因此,简称为ac算法。wm算法是sunwu和他的导师udimanber在20世纪90年代提出来的,因此,简称为wm算法。多核处理器的出现,是计算机发展的一次革命性的飞跃。多核处理器极大地提高了计算机数据处理的速度,减少了计算机数据处理的时间,增加了计算机系统的性能。但是,在实际应用中所使用的传统的计算机算法,最初的设计是在单处理器系统中,因此,很难适应多核处理器的平台。openmulti-processing(openmp)和messagepassinginterface(mpi)是目前并行程序设计流行的接口,并被很多计算机厂商所接受。消息传递接口(mpi)是一种基于消息传递的并行程序接口。mpi比openmp在并行程序设计上具有更大的灵活性。mpi具有独立的运行空间,进程之间通过消息(message)交换数据。但是,基于mpi的并行程序设计比openmp更加复杂。设计在代理路由器和代理防火墙中的网络信息过滤系统要求更高的处理速度和响应时间。因此,在多核处理器时代,网络信息过滤系统如何实现快速、并行的处理是亟待解决的技术难题。技术实现要素:(一)要解决的技术问题本发明的目的是提出一种基于mpi的wm串匹配并行算法的网络信息过滤系统,解决网络信息过滤系统中的核心算法难以适应多核处理器的并行结构,实现网络信息过滤系统快速和并行的数据处理。(二)技术方案为了解决上述技术问题,本发明提供了一种基于mpi的wm串匹配并行算法的网络信息过滤系统,包括:part1、多核系统初始化,初始化数据报文队列,初始化报文鉴别队列;part2、并行加载缓冲区报文到数据报文队列,并行转发报文;part3、利用wm算法对数据报文队列进行并行筛选,对报文鉴别队列进行并行审查;part4、根据网络带宽和多核处理器的负载,实现基于消息传递的指令控制。首先,一种基于mpi的wm串匹配并行算法的网络信息过滤系统的数据结构定义,包括如下部分:模式字符串,简称模式,包括网络协议类型,数据报文中需要鉴别的规则,过滤条件和审查内容。模式集合,记为:set_pattern,形式描述为:set_pattern={p1,p2,…,pi,…},其中,pi是模式集合set_pattern的第i个模式字符串。模式字符串pi形式描述为:pi=pi1…pin,pi1是模式字符串pi的左面第一个字符,pin是模式字符串pi的右面最末尾的字符。len(p)表示字符串p的长度。字符串b是pi的子串,表示为:b=pij-len(b)+1…pij。pmin是模式集合set_pattern中模式字符串长度最小的模式。哈希函数记为:hash(),hash(p)表示对字符串p进行哈希运算所获得的数值。在wm算法中跳转表shift记为:table_shift_b,包括:表table_shift_b定义开始;数据项1、字符串b的哈希值,即hash(b);数据项2、在wm算法中跳转的距离,定义为偏移值,记为:offset;数据项3、当偏移值offset等于0时,包含子串b的模式集合,记为:subset_pattern,subset_pattern的初始值为空集;表table_shift_b定义结束。数据报文队列,记为:queue_datagram,包括:数据报文队列queue_datagram定义开始;数据项1、数据报文的编号,记为:id_datagram;数据项2、编号为id_datagram的数据报文的处理状态,记为:status_datagram;当status_datagram等于0时,表示该报文转发;当status_datagram等于1时,表示该报文禁止转发;当status_datagram等于2时,表示该报文正在处理中;status_datagram的初始值设定为-1;数据项3、编号为id_datagram的数据报文正在处理器中利用wm算法对数据报文进行筛选的状态,记为:status_wm_slave_work;当status_wm_slave_work等于0时,表示报文处理过程已经完成;当status_wm_slave_work等于1时,表示报文处理过程正在进行中;status_wm_slave_work的初始值设定为-1;数据项4、编号为id_datagram的数据报文正在处理器中进行内容鉴别过程的处理状态,记为:status_wm_judge_work;当status_wm_judge_work等于0时,表示报文的鉴别过程已经完成;当status_wm_judge_work等于1时,表示报文的鉴别过程正在进行中;status_wm_judge_work的初始值设定为-1;数据项5、编号为id_datagram的数据报文的鉴别结果,记为:status_wm_judge_result;当status_wm_judge_result等于0时,表示内容审查后报文符合要求,转发该报文;当status_wm_judge_result等于1时,表示内容审查后报文不符合要求,禁止转发该报文;status_wm_judge_result的初始值设定为-1;数据项6、编号为id_datagram的数据报文中需要鉴别内容的数量,记为:status_wm_judge_count;当status_wm_judge_count等于0时,表示报文中没有需要鉴别的内容,当status_wm_judge_count为大于0的数值时,表示报文中需要鉴别内容的总数量;status_wm_judge_count的初始值设定为0;数据项7、编号为id_datagram的数据报文在数据缓冲区中的地址信息,记为:id_datagram_addressinfo;数据报文队列queue_datagram定义结束。数据报文需要鉴别内容的队列,定义为报文鉴别队列,记为:queue_judge,包括:报文鉴别队列queue_judge定义开始;数据项1、鉴别的数据报文的编号,记为:id_datagram;数据项2、在鉴别的数据报文中,鉴别内容所在报文中的位置信息,记为:location_i;数据项3、在鉴别的数据报文中,鉴别内容需要匹配的模式集合信息;记为:set_matchingpattern_info;报文鉴别队列queue_judge定义结束。在多核处理器系统中使用的处理器的工作状态队列,记为:queue_corestatuswork,包括:处理器工作状态队列queue_corestatuswork定义开始;数据项1、处理器在多核系统中的编号,记为:id_core;数据项2、编号为id_core的处理器当前的工作状态,记为:corestatuswork;当corestatuswork等于0时,表示该处理器处于空闲状态;当corestatuswork等于1时,表示该处理器处于忙状态,也就是正在被应用程序占用;处理器工作状态队列queue_corestatuswork定义结束。在mpi系统中,消息传递过程记为:message(information1,information2,…,id_core_i),其中,information表示传递的信息内容,id_core_i表示多核系统中处理器的编号。记录数据报文队列queue_datagram的锁状态,记为:lock_queue_datagram;当lock_queue_datagram等于0时,表示当前数据报文队列queue_datagram没有加锁;当lock_queue_datagram等于1时,表示当前数据报文队列queue_datagram处于锁定状态。其次,一种基于mpi的wm串匹配并行算法的网络信息过滤系统的过程描述,包括:模式集合set_pattern初始化过程,包括:s1、建立过滤网络协议库,过滤网络层数据包头部规则,过滤ip数据包规则,过滤tcp数据包规则,过滤udp数据包规则,审查内容关键字;s2、由网络协议库,过滤规则和审查内容建立模式集合,确定过滤条件和审查内容,统计模式的总数量,模式的最小长度;s3、如果模式最小长度小于2,则对该模式进行补位处理,具体为:处理后的模式的第一位填加原模式的字符,在第二位填加ascii码nul操作符;s4、过程结束。在wm算法中,表table_shift_b的建立过程,包括:s1、初始化表table_shift_b的字符串b的偏移值offset,设定为len(pmin)-len(b)+1;s2、i为循环计数器,获得模式集合set_pattern的第i个模式pi,计算pi中的每个b子串的跳转距离len(pi)-j;如果表table_shift_b中对应b的hash(b)的偏移值offset大于len(pi)-j,则把offset的值修改为len(pi)-j;如果len(pi)-j等于0,那么把模式pi添加到对应b的hash(b)的subset_pattern集合中;s3、重复步骤s2,直到模式集合set_pattern的所有模式处理完毕;s4、过程结束。并行加载缓冲区报文到数据报文队列queue_datagram的过程,包括:s1、如果lock_queue_datagram当前为锁定状态,则继续进行查询;否则,转到s2;s2、如果当前数据报文队列queue_datagram没有加锁,则设置lock_queue_datagram为锁定状态;s3、从缓冲区读取报文,创建数据报文队列queue_datagram新的结点,编号设定为id_datagram,初始化status_datagram,status_wm_slave_work,status_wm_judge_work,status_wm_judge_result的值为-1,初始化status_wm_judge_count的值为0,初始化id_datagram_addressinfo为缓冲区的报文的地址,将该报文信息插入数据报文队列queue_datagram;s4、重复步骤s3,直到缓冲区所有报文处理完毕;s5、设置lock_queue_datagram为解锁状态;s6、过程结束。对数据报文队列queue_datagram中的报文进行并行转发的过程,包括:s1、如果lock_queue_datagram当前为锁定状态,则继续进行查询;否则,转到s2;s2、如果当前数据报文队列queue_datagram没有加锁,则设置lock_queue_datagram为锁定状态;s3、由数据报文队列queue_datagram的头结点开始,查询数据报文队列中编号为id_datagram的报文的status_datagram状态;如果status_datagram等于0,则消息传递message(id_datagram,id_datagram_addressinfo,转发,id_core),通知处理器id_core的进程对报文编号为id_datagram和缓冲区地址为id_datagram_addressinfo的报文进行转发处理;如果status_datagram等于1,则消息传递message(id_datagram,id_datagram_addressinfo,禁止转发,id_core),通知处理器id_core的进程对报文编号为id_datagram和缓冲区地址为id_datagram_addressinfo的报文禁止转发;如果status_datagram等于0和1,将编号为id_datagram的结点移出数据报文队列queue_datagram;如果status_datagram等于2,则查询数据报文队列queue_datagram的下一个结点;重复步骤s3,直到数据报文队列queue_datagram的所有结点查询完毕;s4、设置lock_queue_datagram为解锁状态;s5、等待系统主进程的消息传递的指令信息,指令信息如果为:继续执行,则转到s1;指令信息如果为:停止转发过程,则转到s6;s6、过程结束。报文转发状态结果处理过程,包括:s1、查询数据报文队列queue_datagram中的编号为id_datagram的报文的status_wm_slave_work,status_wm_judge_work,status_wm_judge_result的状态;如果status_wm_slave_work等于0,并且,status_wm_judge_work等于0,并且,status_wm_judge_result等于0,则设置status_datagram的值为0,该报文将进行转发处理;如果status_wm_slave_work等于0,并且,status_wm_judge_work等于0,并且,status_wm_judge_result等于1,则设置status_datagram的值为1,该报文将禁止转发;s2、查询数据报文队列queue_datagram中的编号为id_datagram的报文的下一个结点;s3、如果当前结点是数据报文队列queue_datagram的队尾,则等待系统主进程的消息传递的指令信息;指令信息如果为:继续执行,则由数据报文队列queue_datagram的队列头结点开始继续报文转发状态结果处理过程,转到s1;指令信息如果为:停止处理过程,则转到s5;指令信息如果为:处理编号为id_datagram的报文,则在数据报文队列queue_datagram中找到编号为id_datagram的结点,转到s1;指令信息如果为:指定处理过程等待time时间,然后重新开始,则转到s4;s4、等待给定的time时间后,由数据报文队列queue_datagram的队列头结点开始继续报文转发状态结果处理过程,转到s1;s5、过程结束。报文鉴别过程,记为:wm_judge,包括:s1、获得报文鉴别队列queue_judge的当前结点的报文编号id_datagram;s2、查询queue_corestatuswork的处理器工作状态,如果处理器编号id_core的当前工作状态corestatuswork为空闲,则转到s3;否则,继续查询;s3、将队列queue_corestatuswork的处理器编号id_core的当前工作状态corestatuswork设置为忙;s4、查找数据报文队列queue_datagram的报文编号id_datagram的结点,设置status_wm_judge_work的状态值为1;获得id_datagram_addressinfo的信息;s5、从id_datagram_addressinfo的数据报文中获得location_i位置的鉴别字符串string,将字符串string与set_matchingpattern_info中的模式进行匹配;如果匹配成功,则设置status_wm_judge_result等于1;如果匹配失败,则将status_wm_judge_count的值减去1;s6、如果status_wm_judge_count等于0,则设置status_wm_judge_work等于0;如果status_wm_judge_count大于0,则设置status_wm_judge_work等于1;s7、如果status_wm_judge_count等于0,并且,status_wm_judge_work等于0,则设置status_wm_judge_result等于0;s8、将当前处理结点移出报文鉴别队列queue_judge,将队列queue_corestatuswork的处理器编号id_core的当前工作状态corestatuswork设置为空闲;s9、过程结束。基于wm算法的报文处理过程,记为:wm_slave,包括:s1、从数据报文队列queue_datagram获得当前结点的报文编号id_datagram;s2、查询queue_corestatuswork的处理器工作状态,如果处理器编号id_core的当前工作状态corestatuswork为空闲,则转到s3;否则,继续查询;s3、将报文编号id_datagram的status_wm_slave_work的状态值设置为1,即正在处理过程中,将队列queue_corestatuswork的处理器编号id_core的当前工作状态corestatuswork设置为忙;s4、获得报文编号id_datagram的id_datagram_addressinfo的信息,并消息传递获得报文的拷贝;设置报文的处理状态status_datagram等于2;s5、location_i记录当前报文的处理位置,blc为wm算法当前处理的字符串,location_i的初始值设定为len(blc);s6、如果在table_shift_b表中,字符串blc对应的hash(blc)的偏移值offset等于0,则建立报文鉴别队列queue_judge的新结点newpoint包含:id_datagram,location_i,将subset_pattern模式集合的信息复制给set_matchingpattern_info,将新结点newpoint插入到报文鉴别队列queue_judge中;在数据报文队列queue_datagram当前结点的报文编号id_datagram中,设置status_wm_judge_count=status_wm_judge_count+1;设置location_i=location_i+1;s7、如果在table_shift_b表中,字符串blc对应的hash(blc)的偏移值offset不等于0,则location_i=location_i+offset;如果location_i大于报文的长度,则设置location_i为报文的最末位置;s8、如果location_i小于等于报文的长度,则转到s6;否则,转到s9;s9、在数据报文队列queue_datagram当前结点的报文编号id_datagram中,设置status_wm_slave_work等于0;如果status_wm_judge_count等于0,设置status_wm_judge_work等于0,设置status_wm_judge_result等于0;s10、将队列queue_corestatuswork的处理器编号id_core的当前工作状态corestatuswork设置为空闲;s11、过程结束。利用wm算法对数据报文队列进行并行筛选的过程,记为parallel_wm_execute,包括:s1、获得数据报文队列queue_datagram的头结点,并设置为当前结点currentpoint;s2、查询queue_corestatuswork的处理器工作状态,如果处理器编号id_core的当前工作状态corestatuswork为空闲,则转到s3;如果队列queue_corestatuswork中的所有处理器均为忙状态,继续查询,转到s2;s3、消息传递message(currentpoint,wm_slave,id_core),在编号为id_core的处理器中对数据报文队列queue_datagram的当前结点currentpoint执行wm算法的报文处理过程wm_slave;s4、依次遍历数据报文队列,当前结点currentpoint指向下一个结点;s5、接收系统主进程的消息传递的指令信息;指令信息如果为:继续执行,如果当前结点为队尾,则当前结点指向队列queue_datagram的头结点;转到s2;指令信息如果为:停止处理过程,则转到s6;s6、过程结束。对报文鉴别队列queue_judge进行并行审查的过程,记为parallel_check,包括:s1、获得报文鉴别队列queue_judge的头结点,并设置为当前结点currentpoint;s2、查询queue_corestatuswork的处理器工作状态,如果处理器编号id_core的当前工作状态corestatuswork为空闲,则转到s3;如果队列queue_corestatuswork中的所有处理器均为忙状态,继续查询,转到s2;s3、消息传递message(currentpoint,wm_judge,id_core),在编号为id_core的处理器中对报文鉴别队列queue_judge的当前结点currentpoint执行报文鉴别过程wm_judge;s4、依次遍历报文鉴别队列,当前结点currentpoint指向下一个结点;s5、接收系统主进程的消息传递的指令信息;指令信息如果为:继续执行,如果当前结点为队尾,则当前结点指向队列queue_judge的头结点;转到s2;指令信息如果为:停止处理过程,则转到s6;指令信息如果为:指定处理过程等待time时间,然后重新开始,则转到s2;s6、过程结束。多核系统并行主程序,包括:s1、初始化mpi运行环境;s2、获得多核系统的处理器信息,如果多核系统中的处理器核心数小于7个,则提示用户当前系统不能完成并行执行过程,结束mpi,退出系统;建立多核系统的处理器的工作状态队列queue_corestatuswork,初始化处理器编号id_core和工作状态corestatuswork,corestatuswork初始值设置为空闲;用户设定wm算法的len(b)的数值;初始化表table_shift_b;执行模式集合set_pattern初始化过程;执行wm算法的表table_shift_b的建立过程;初始化数据报文队列queue_datagram;初始化报文鉴别队列queue_judge;用户设定数据报文队列queue_datagram的锁状态;设置报文缓冲区的入口地址,最大容量,网络带宽信息;s3、分配多核系统并行主程序的处理器编号为0号,并设置处理器的工作状态队列queue_corestatuswork的id_core等于0的处理器的工作状态corestatuswork为忙;s4、分配编号为1号的处理器给并行加载缓冲区报文到数据报文队列queue_datagram的过程,并设置id_core等于1的处理器的工作状态corestatuswork为忙;启动并行加载缓冲区报文到数据报文队列queue_datagram的过程;s5、分配编号为2号的处理器给对数据报文队列queue_datagram中的报文进行并行转发的过程,并设置id_core等于2的处理器的工作状态corestatuswork为忙;启动对数据报文队列queue_datagram中的报文进行并行转发的过程;s6、分配编号为3号的处理器给报文转发状态结果处理过程,并设置id_core等于3的处理器的工作状态corestatuswork为忙;启动报文转发状态结果处理过程;s7、主程序把表table_shift_b依次消息传递给处理器工作状态队列queue_corestatuswork中工作状态corestatuswork为空闲的处理器;s8、分配编号为4号的处理器给并行筛选的过程parallel_wm_execute,并设置id_core等于4的处理器的工作状态corestatuswork为忙;启动利用wm算法对数据报文队列queue_datagram进行并行筛选的过程;s9、分配编号为5号的处理器给并行审查的过程parallel_check,并设置id_core等于5的处理器的工作状态corestatuswork为忙;启动对报文鉴别队列queue_judge进行并行审查的过程;s10、根据网络带宽和多核处理器的负载情况,利用消息传递message(指令,id_core)实现报文转发的控制,即在编号为id_core的处理器中执行主程序下达的指令信息;s11、结束mpi;s12、过程结束。(三)有益效果本发明克服了wm算法在单处理器模式下的按照顺序进行报文处理的缺陷,对报文进行并行处理,并能够并行鉴别审查内容,加速了报文处理的速度,提高了网络信息过滤系统的效率。此外,本发明的控制模块优化设计了多核系统的计算资源和带宽的分配,能够有效抵御网络攻击,有效提高网络信息过滤系统的报文转发性能。附图说明图1是基于mpi的wm串匹配并行算法的网络信息过滤系统流程图。具体实施方式下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例用于说明本发明,但不能用来限制发明的范围。实例1:假定“病毒”被确定为非法内容。缓冲区有两个报文:datagram_1和datagram_2,其中,datagram_1中在报文中间位置location_mid具有非法内容“病毒”,而datagram_2中没有审查内容。系统主程序初始化mpi运行环境后,获得多核系统的处理器信息,多核系统中的处理器核心数假定是9个。初始化表table_shift_b后,执行模式集合set_pattern初始化过程;执行wm算法的表table_shift_b的建立过程;设置报文缓冲区的入口地址,最大容量,网络带宽信息。建立多核系统的处理器的工作状态队列queue_corestatuswork,初始化处理器编号id_core和工作状态corestatuswork,corestatuswork初始值设置为空闲。初始化数据报文队列queue_datagram和报文鉴别队列queue_judge后,处理器的负载和任务分布如下:id_core_0:运行系统主程序,工作状态corestatuswork:忙;id_core_1:运行并行加载缓冲区报文到数据报文队列queue_datagram的过程,工作状态corestatuswork:忙;id_core_2:运行对数据报文队列queue_datagram中的报文进行并行转发的过程,工作状态corestatuswork:忙;id_core_3:运行报文转发状态结果处理过程,工作状态corestatuswork:忙;id_core_4:无,工作状态corestatuswork:空闲;id_core_5:无,工作状态corestatuswork:空闲;id_core_6:无,工作状态corestatuswork:空闲;id_core_7:无,工作状态corestatuswork:空闲;id_core_8:无,工作状态corestatuswork:空闲;主程序把表table_shift_b依次消息传递给处理器工作状态队列queue_corestatuswork中工作状态corestatuswork为空闲的处理器;即,id_core_4,id_core_5,id_core_6,id_core_7,id_core_8的处理器中接收了表table_shift_b。主程序在id_core_4处理器启动利用wm算法对数据报文队列queue_datagram进行并行筛选的过程parallel_wm_execute。主程序在id_core_5处理器启动对报文鉴别队列queue_judge进行并行审查的过程parallel_check。处理器id_core_1已经加载缓冲区报文datagram_1和datagram_2到数据报文队列queue_datagram。处理器id_core_4利用wm算法对数据报文队列queue_datagram进行并行筛选的过程,消息传递message(datagram_1,wm_slave,id_core_6)和message(datagram_2,wm_slave,id_core_7)。处理器id_core_6在执行wm算法对报文datagram_1处理过程wm_slave中,发现在location_mid位置的“病毒”审查信息,于是把该信息登记在报文鉴别队列queue_judge中。与此同时,处理器id_core_7在执行wm算法对报文datagram_2处理过程wm_slave。并行执行的处理器id_core_5发现报文鉴别队列queue_judge有内容需要审查,于是消息传递message(datagram_1,wm_judge,id_core_8)。在处理器id_core_8中执行对报文datagram_1的鉴别过程wm_judge,由于匹配模式“病毒”成功,则设置数据报文队列queue_datagram的报文编号datagram_1的结点的status_wm_judge_result状态值为1,即发现在location_mid位置的“病毒”非法信息。并行执行的处理器id_core_3对报文转发状态结果进行处理,设置数据报文队列queue_datagram中的编号为datagram_2的报文的status_datagram的值为0;设置编号为datagram_1的报文的status_datagram的值为1;并行执行的处理器id_core_2对数据报文队列queue_datagram中的报文进行并行转发处理,由于datagram_1包含非法内容,报文被禁止转发,而datagram_2不包含非法内容,报文被转发。在单处理器的处理方式中,报文datagram_1和datagram_2必须按照顺序进行处理,而且在审查到location_mid位置的内容时,需要匹配审查内容,然后顺序进行后面的处理。本发明能够充分利用多核处理器计算资源,把审查内容的鉴别和报文的处理并行执行,加速了报文处理的速度,提高了网络信息过滤系统的效率。实例2:在实际应用中,由于一些包含大量非法内容的报文在经过代理路由器和代理防火墙时,审查过程占用大量的计算机资源和网络带宽,致使正常的报文转发受到严重的影响;因此,本发明在网络信息过滤系统中加入控制模块,可以有效防御此类网络攻击。假设缓冲区中有10个报文,其中datagram_1和datagram_5中包含大量非法信息。假设datagram_1中包含10个,datagram_5中包含20个,其它,datagram_2至datagram_4,datagram_6至datagram_10不包含非法信息,属于合法的报文。在数据报文队列queue_datagram中,顺序为datagram_1,…,datagram_10的10个报文,在报文鉴别队列queue_judge中,有30个需要鉴别的审查内容。假如多核系统的计算资源都用于鉴别审查内容,势必影响其他报文的正常转发,也就会出现例子开始所说的此类网络攻击。具体的过程简化说明如下:假如系统中有12个处理器,其中:id_core_0运行系统主程序。id_core_1运行并行加载缓冲区报文到数据报文队列queue_datagram的过程。id_core_2运行对数据报文队列queue_datagram中的报文进行并行转发的过程。id_core_3运行报文转发状态结果处理过程。id_core_4运行wm算法对数据报文队列queue_datagram进行并行筛选的过程。id_core_5运行对报文鉴别队列queue_judge进行并行审查的过程。以上6个处理器均为忙状态。id_core_6:无,工作状态corestatuswork:空闲;id_core_7:无,工作状态corestatuswork:空闲;id_core_8:无,工作状态corestatuswork:空闲;id_core_9:无,工作状态corestatuswork:空闲;id_core_10:无,工作状态corestatuswork:空闲;id_core_11:无,工作状态corestatuswork:空闲。在处理器id_core_5中对报文鉴别队列queue_judge进行并行审查的过程,消息传递message(currentpoint,wm_judge,id_core_6),在编号为id_core_6的处理器中对当前结点currentpoint执行报文鉴别过程wm_judge。如果出现鉴别报文内容过多占用系统资源的情况,则在parallel_check过程进行的步骤s5接收系统主进程的消息传递的指令信息,此时,主程序可以下达:“指定处理过程等待5分钟时间,然后重新开始”;在5分钟内处理器id_core_5不再分配处理器给报文鉴别队列queue_judge进行并行审查。与此同时,在处理器id_core_4中,对数据报文队列queue_datagram进行并行筛选的过程继续分配处理器进行报文处理,即消息传递message(currentpoint,wm_slave,id_core)给处理器id_core进行wm_slave过程,如下所示:message(datagram_2,wm_slave,id_core_7),即在处理器id_core_7处理报文datagram_2;message(datagram_3,wm_slave,id_core_8),即在处理器id_core_8处理报文datagram_3;message(datagram_4,wm_slave,id_core_9),即在处理器id_core_9处理报文datagram_4;message(datagram_5,wm_slave,id_core_10),即在处理器id_core_10处理报文datagram_5;message(datagram_6,wm_slave,id_core_11),即在处理器id_core_11处理报文datagram_6;因此,有限的计算资源和带宽被分配给处理正常的报文。与此同时,在处理器id_core_3中的报文转发状态结果处理过程已经把不含非法内容的报文的转发结果统计出来。与此同时,在处理器id_core_2中,对数据报文队列queue_datagram中的符合要求的报文进行转发;与此同时,数据报文队列queue_datagram的报文编号datagram_1的其它数据项如下:数据报文的处理状态status_datagram等于2;对数据报文进行筛选的状态status_wm_slave_work等于0;鉴别过程的处理状态status_wm_judge_work等于1数据报文的鉴别结果status_wm_judge_result等于1;数据报文中需要鉴别内容的数量status_wm_judge_count等于9;因此,该报文还处于待处理状态。此外,报文鉴别队列queue_judge中大量的鉴别内容并没有被分配计算资源,因此,并没有影响系统对正常报文的处理,也就是说,在10个报文中,8个正常的报文已经处理完毕,而剩下的2个报文待处理。在处理器id_core_5中,并行审查过程等待了5分钟后;然后重新开始,此时,依然可以根据多核系统的计算资源和带宽决定是否进行继续处理的过程。本发明优化设计了把多核系统的计算资源和带宽分配给正常的报文处理,而对需要鉴别的报文的处理,则延迟到计算资源和带宽满足条件时进行处理,从而,抵御了网络攻击,有效提高了系统的报文转发性能。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1