一种amp架构下处理器负载均衡的实现方法及装置的制作方法

文档序号:7974446阅读:333来源:国知局
专利名称:一种amp架构下处理器负载均衡的实现方法及装置的制作方法
技术领域
本发明属于通信技术领域,特别是涉及一种多核并行计算环境中, AMP (Asymmetric Multiprocessing, # ^ ^ ^h S ) Ig I^J T CPU (Central Processing Unit,中央处理器,以下简称处理器)负载均衡的实现方法及装置。
背景技术
最近几年,IPSantrusion Prevention System,入侵防御系统)产品成为安全产品市场新的热点,不仅保持了每年100%以上的市场增长率,而且应用领域不断扩大,应用技术也逐步普及。与传统的IDSantrusion Detection Systems,入侵检测系统)旁路接入不同,IPS产品采用在线工作方式,即对接收的数据进行检测,然后按照其目的转发,这与安全网关类产品如防火墙、VPN(Virtual Private Network,虚拟专用网)等非常相似。这种工作方式决定了 IPS产品除了要有准确的检测能力,还要有与应用网络相适应的性能要求。实际上自IPS产品诞生以来,一直采用协议识别和攻击特征模式匹配等成熟技术,困扰其应用范围的主要是性能要求。目前的防火墙达到千兆线速、4G、甚至10G转发能力已属平常,但IPS要实现这一性能绝非易事。在IPS中不仅需要检查数据报文的头部,还要针对具体的应用协议检查数据报文的内容,这就使得在IPS中五元组相同的数据报文也不能“加速处理”,也就是说在IPS处理数据报文的整个路途中没有“捷径”,IPS需要对流经自身的每一个报文进行逐一检测。这样IPS成为CPU资源的主要耗费者,其性能很大程度上取决于硬件处理器的处理能力。近年来多核处理器的发展为利用并行处理技术提升IPS产品性能提供了广阔的空间,由于处理器计算能力的提升对IPS检测全路径都是有效的,所以从理论上讲内核数量与性能提升成正比。但是理论不等于实践,实际性能的提升主要取决于IPS对各个处理器均衡的利用,即发挥每一个处理器的最大计算能力。在多核并行计算环境中一般有两种处理器工作构架,一种是SMP(Symmetrical Multiprocessing,对称多处理)方式,也称为同构方式,SMP方式顾名思义就是将多个内核平等看待,每个内核担负的工作都相同,且每个内核上都运行一套IPS系统,这样从数据接收、连接建立、数据检测到数据发送都是并发执行的,相当于多个IPS系统在同时运行。这种架构比较简洁,各个处理器内核负载均衡,但是因为所有内核都担负相同的工作,势必产生对共享资源(内存数据、文件描述符、1/0设备等)的大量争用,为处理这些并发与同步使用的大量锁机制,又严重制约了性能发挥,更严重的是随着内核数量的增多,并发与同步的消耗达到一定的量级,性能不但不会增长反而会有所下降。另一种为AMP方式,也称为异构方式。AMP方式就是将多个内核区别看待,可以运行不同的操作系统也可以在相同的操作系统上运行不同的任务,各个处理器内核按照任务划分,各负其责,规避共享资源的竞争,从而提升IPS产品的综合性能。完整的操作系统往往比较庞大,耗费资源较多,效率也较低。拿出几个物理内核,在其上建立一种简易的系统环境(有时候直接叫做“裸核”环境),在这个“洁净的空间”内运行单一任务(比如收发数据、模式匹配等)往往可以获得极高的性能,这是AMP方式的特点,也是其优势。虽然AMP 构架比较复杂,但因其性能提升非常有效,目前已被广泛应用。AMP构架的难点在于需要仔细权衡各个内核的任务分担,否则会造成内核负载不均衡,影响性能发挥。目前普遍采用的方法是将处理器内核分为两类,一类叫作网络处理器,用于处理网络数据报文的接收和发送,另一类叫做检测处理器,用于进行IPS检测。网络处理器接收到网络数据报文后,根据其五元组建立连接(数据流),然后用hash算法将连接平均地定位到唯一的检测处理器上,这样实现负载均衡,即将数据流平均地分配到检测处理器上,同时保障将同一个数据流分配到同一个检测处理器上,保障一个数据流始终由一个检测处理器处理。图1为该现有技术中AMP架构下处理器负载均衡的实现方法原理图。上述方法的缺陷是,虽然数据流被相对均衡地分配到检测处理器上,但是因为不同的数据流中包含的数据报文个数、报文大小、报文内容都差异很大,这直接导致检测处理器检测数据流的速度不相同,如有的报文比较小甚至不包含应用层数据,无须进行IPS检测,可以快速地处理完毕,而有的数据报文是http (超文本传输协议)协议且包含丰富的 uri (统一资源标识符)信息,有大量的IPS规则需要逐一匹配检测,势必耗时较长。这导致了检测处理器之间的负载实际上处于不均衡状态,影响了性能发挥。另一方面,在网络处理器和检测处理器之间是固定任务分配,而网络处理与检测处理两种工作不可能正好均衡, 这也影响了整体性能的提升。对于av (反病毒)、dpi (深度报文检测)等其他需要做数据内容检测的产品,其处理器同样分为网络处理器和检测处理器,并同样存在着上述网络处理与检测处理两种工作不能很好均衡的问题。

发明内容
本发明提供一种AMP架构下处理器负载均衡的实现方法及装置,以解决现有技术中AMP架构下网络处理器与检测处理器的负载不能有效均衡的问题。本发明提供一种AMP架构下处理器负载均衡的实现方法,包括为每个检测处理器各建立一个环形工作队列;当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的所述环形工作队列未满,则将报文交由该检测处理器检测;如果该检测处理器的所述环形工作队列已满,则将报文交由一个所述环形工作队列未满的检测处理器检测。进一步地,所述网络管理器收到数据报文后,查找该报文对应的检测处理器,包括以下步骤网络管理器收到数据报文后,如果查找到对应的连接,则在该连接的记录中找到对应的检测处理器;如果未查找到对应的连接,则根据该报文的五元组建立连接,再根据连接确定对应的检测处理器。更进一步地,所述查找到对应的连接,采用的方法为根据报文的五元组计算 hash值,再根据hash值查找到连接。更进一步地,所述报文的五元组包括源地址、目的地址、源端口、目的端口和协议。
4
更进一步地,所述根据连接确定对应的检测处理器,是采用hash算法来实现的。进一步地,所述AMP架构下处理器负载均衡的实现方法还包括在网络处理器与检测处理器之间进行工作任务动态调整。更进一步地,所述在网络处理器与检测处理器之间进行工作任务动态调整,包括当各检测处理器的所述环形工作队列均为空时,将原本由所述网络处理器处理的工作交由所述检测处理器处理。再进一步地,所述原本由所述网络处理器处理的工作是指发送报文的工作。本发明还提供了一种AMP架构下处理器负载均衡的实现装置,包括环形工作队列建立模块,用于为每个检测处理器各建立一个环形工作队列;检测处理器负载均衡模块,用于当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的所述环形工作队列未满,则将报文交由该检测处理器检测;如果该检测处理器的所述环形工作队列已满,则将报文交由一个所述环形工作队列未满的检测处理器检测。进一步地,AMP架构下处理器负载均衡的实现装置还包括工作任务调整模块,该模块用于在网络处理器与检测处理器之间进行工作任务动态调整。本发明有益效果如下本发明提出了为检测处理器建立环形工作队列(即循环工作队列),从而能够动态感知各检测处理器的负载情况;本发明提出了检测处理器负载均衡的方法,有利于检测处理器的性能发挥;本发明提出了网络处理器与检测处理器之间的负载均衡方法,从而解决了现有技术中网络处理器和检测处理器之间无法均衡的问题,实现了 AMP架构下数据检测系统整体性能的提升。


图1为现有技术中AMP架构下处理器负载均衡的实现方法原理图;图2为本发明实施例的AMP架构下处理器负载均衡的实现方法流程图;图3为本发明实施例的AMP架构下处理器负载均衡的实现方法原理图;图4为本发明实施例的AMP架构下处理器负载均衡的实现装置结构图。
具体实施例方式以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。方法实施例根据本发明的实施例,提供了一种AMP架构下处理器负载均衡的实现方法,以下实施例中,以IPS系统为例进行具体说明,设该IPS系统中,有一个网络处理器和三个检测处理器,三个检测处理器编号依次为0、1和2。图2是本发明实施例的AMP架构下处理器负载均衡的实现方法的流程图,图3为本发明实施例的AMP架构下处理器负载均衡的实现方法原理图,结合图2和图3可知,本发明实施例的AMP架构下处理器负载均衡的实现方法,包括如下处理步骤201,建立环形工作队列。本实施例中,队列长度为512,即最大可以缓存512个报文信息,同时分别建立队列头和队列尾指针。环形工作队列的工作方式为当网络处理器接收到数据报文后,根据其源地址、目的地址、源端口、目的端口查找连接,如果查找不到需要新建立一个连接结构,然后将报文协议类型、报文大小、报文数据地址、连接句柄(指向连接结构的指针)等信息组成一个报文信息结构,加入到对应的检测处理器的环形工作队列的队列尾部。环形工作队列的队列头和队列尾都是动态的,头尾之间保持距离,如果距离为零说明队列为空,如果距离为队列长度则说明队列满。当从尾部加入一个数据结构时距离加1,当从头部取走一个数据结构时距离减1,头尾距离为零时队列为空就不能再取数据结构了,同样头尾距离为队列长度时队列满,就不能再加入数据结构了。检测处理器从队列头中依次取出报文信息,根据该信息对数据报文内容进行IPS检测处理,处理后队列头依次后移。步骤202,在检测处理器之间进行数据流重定向。该步骤具体包括1)网络处理器接收到数据报文,进行初步分析,对于非TCP (Transmission Control Protocol,传输控制协议)/UDP⑴ser Data Protocol,用户数据报协议)报文不处理直接转发,对于TCP/UDP报文根据其五元组(源地址、目的地址、源端口、目的端口、协议) 计算hash值,再根据hash值查找连接。所有的连接结构都记录在一个hash数组里面,数组的下标为hash值,数组的成员即连接结构的指针,查找时用hash值做数组下标取出数组成员,就得到了需要的连接结构,如果是空指针说明还没有建立连接。通常这个hash数组有100万个成员,代表系统最多能够支持100万个连接。如果查找到连接直接执行步骤4)。2)对于没有查找到连接,需要根据报文的五元组新建立一个连接结构,一个连接结构实际上对应一个数据流。3)对连接的hash值除以cpu个数减1,然后取余,得到的值在0 2之间,这个值就是这个连接对应的检测处理器编号,将编号记录到连接结构中,这样不用每次都计算。当然,该步骤中采用hash算法得到连接对应的检测处理器编号,具体的算法不限于这里提供的例子,还可以为其他任何能够将连接的hash值与检测处理器的编号对应起来的算法。4)取出连接中记录的检测处理器编号,找到其一一对应的环形工作队列,检查环形工作队列的头尾指针,如果头尾指针差距小于512则说明队列未满,直接执行步骤6)。5)队列已满则继续检查下一个检测处理器的环形工作队列,如果未满,则更改连接中的检测处理器编号,将连接重定向到该新的检测处理器,然后判断该新的检测处理器的头尾指针距离是否小于512,这样直到查找到环形工作队列未满的检测处理器。如果所有检测处理器的环形工作队列均满,则放弃检测,直接转发该连接。6)生成一个报文信息结构,包含报文协议类型、报文大小、报文数据地址、连接句柄(指向连接结构的指针)等信息,从队列尾部加入环形工作队列,等待检测处理器检测。步骤203,在网络处理器与检测处理器之间进行工作任务动态调整。下面以发送报文的工作为例进行说明,当然,网络处理器与检测处理器之间的工作任务调整并不仅限于对发送报文的工作任务进行调整。该步骤具体包括
1)将发送报文工作独立出来。将发送报文部分程序独立成一个模块,使得网络处理器可以调用,同时检测处理器也可以调用。当网络处理器调用发送报文模块时,该模块代码是在网络处理器上运行的, 占用网络处理器负载。当检测处理器调用发送报文模块时,该模块代码是在检测处理器上运行的,占用检测处理器负载。设置一个开关,正常情况下处于关闭状态。该开关关闭时由网络处理器调用发送报文模块,检测处理器不调用。开关打开时正好相反。2)根据检测处理器负载情况在网络处理器与检测处理器之间进行工作任务动态调整。设置一个定时器,定时检查各个检测处理器的环形工作队列。如果所有环形工作队列均为队列头与队列尾相等,即所有环形工作队列均为空, 则打开开关,使检测处理器承担发送报文工作,增加检测处理器负载,同时减轻网络处理器负载,网络处理器不再处理发送报文工作,在两种处理器之间进行工作任务动态调整。当然,也可以设计为当所有环形工作队列的待处理报文个数均小于预设阀值时, 打开开关,在网络处理器与检测处理器之间进行工作任务动态调整。以上以IPS系统为例,对本发明AMP架构下处理器负载均衡的实现方法进行了具体说明,本发明并不仅限于IPS系统的应用,而同样能够应用于av、dpi等其他数据检测系统。装置实施例根据本发明的实施例,提供了一种AMP架构下处理器负载均衡的实现装置,图4是本发明实施例的AMP架构下处理器负载均衡的实现装置的结构示意图,如图4所示,本发明实施例的AMP架构下处理器负载均衡的实现装置包括环形工作队列建立模块401、检测处理器负载均衡模块402和工作任务调整模块403。以下对本发明实施例的各个模块进行详细的说明。具体地,环形工作队列建立模块401用于为每个检测处理器各建立一个环形工作队列。检测处理器负载均衡模块402用于当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的环形工作队列未满,则将报文交由该检测处理器检测;如果该检测处理器的环形工作队列已满,则将报文交由一个环形工作队列未满的检测处理器检测。工作任务调整模块403用于在网络处理器与检测处理器之间进行工作任务动态调整。本发明AMP架构下处理器负载均衡的实现装置的具体实施方式
的细节可参见方法实施例部分对AMP架构下处理器负载均衡的实现方法的描述,此处不再赘述。尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
权利要求
1.一种非对称多处理AMP架构下处理器负载均衡的实现方法,其特征在于,包括为每个检测处理器各建立一个环形工作队列;当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的所述环形工作队列未满,则将报文交由该检测处理器检测;如果该检测处理器的所述环形工作队列已满,则将报文交由一个所述环形工作队列未满的检测处理器检测。
2.如权利要求1所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述网络管理器收到数据报文后,查找该报文对应的检测处理器,包括以下步骤网络管理器收到数据报文后,如果查找到对应的连接,则在该连接的记录中找到对应的检测处理器;如果未查找到对应的连接,则根据该报文的五元组建立连接,再根据连接确定对应的检测处理器。
3.如权利要求2所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述查找到对应的连接,采用的方法为根据报文的五元组计算hash值,再根据hash值查找到连接。
4.如权利要求2所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述报文的五元组包括源地址、目的地址、源端口、目的端口和协议。
5.如权利要求2所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述根据连接确定对应的检测处理器,是采用hash算法来实现的。
6.如权利要求1至5中任一项所述的AMP架构下处理器负载均衡的实现方法,其特征在于,还包括在网络处理器与检测处理器之间进行工作任务动态调整。
7.如权利要求6所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述在网络处理器与检测处理器之间进行工作任务动态调整,包括当各检测处理器的所述环形工作队列均为空时,将原本由所述网络处理器处理的工作交由所述检测处理器处理。
8.如权利要求7所述的AMP架构下处理器负载均衡的实现方法,其特征在于,所述原本由所述网络处理器处理的工作是指发送报文的工作。
9.一种非对称多处理AMP架构下处理器负载均衡的实现装置,其特征在于,包括环形工作队列建立模块,用于为每个检测处理器各建立一个环形工作队列;检测处理器负载均衡模块,用于当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的所述环形工作队列未满,则将报文交由该检测处理器检测; 如果该检测处理器的所述环形工作队列已满,则将报文交由一个所述环形工作队列未满的检测处理器检测。
10.如权利要求9所述的AMP架构下处理器负载均衡的实现装置,其特征在于,还包括工作任务调整模块,该模块用于在网络处理器与检测处理器之间进行工作任务动态调整。
全文摘要
本发明公开了一种AMP架构下处理器负载均衡的实现方法。该方法包括为每个检测处理器各建立一个环形工作队列;当网络管理器收到数据报文后,查找该报文对应的检测处理器,如果该检测处理器的所述环形工作队列未满,则将报文交由该检测处理器检测;如果该检测处理器的所述环形工作队列已满,则将报文交由一个所述环形工作队列未满的检测处理器检测;当各检测处理器的所述环形工作队列均为空时,将原本由所述网络处理器处理的发送报文的工作交由所述检测处理器处理。借助于本发明的技术方案,实现了各检测处理器之间,以及网络处理器与检测处理器之间负载的有效均衡,从而更有利于各处理器的性能发挥。
文档编号H04L12/24GK102404211SQ20111036223
公开日2012年4月4日 申请日期2011年11月15日 优先权日2011年11月15日
发明者刘彤 申请人:北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1