首页> 中国专利> 一种基于NP和BS的千兆NIDS并行处理的方法

一种基于NP和BS的千兆NIDS并行处理的方法

摘要

本发明是一种基于NP和BS的千兆NIDS并行处理的方法,包括数据接收,转发器在交换机的镜像端口上接收所需检测网络上的所有数据包;数据划分,将高速的网络数据流划分成多个低速的数据流,并确定应送达的探测器;数据转发,转发器将数据包的目的MAC地址改为该探测器的MAC地址,由交换板发送给该探测器;数据检测,设计基于互补的两个线程进行数据采集、协议分析、特征匹配和响应;报告生成,在控制台形成检测报告。优点:通过对称多处理提高了NIDS单个探测器的性能的同时,简单地通过增加探测器的数量提高NIDS整个系统的处理能力,减少高带宽下NIDS的丢包数,提高其检测率,满足骨干网对千兆NIDS的需求。

著录项

  • 公开/公告号CN1964322A

    专利类型发明专利

  • 公开/公告日2007-05-16

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN200610097958.2

  • 发明设计人 黄皓;赖海光;黄松华;

    申请日2006-11-24

  • 分类号H04L12/56(20060101);H04L12/26(20060101);

  • 代理机构32215 南京君陶专利商标代理有限公司;

  • 代理人沈根水

  • 地址 210093 江苏省南京市汉口路22号

  • 入库时间 2023-12-17 18:33:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-02-02

    未缴年费专利权终止 IPC(主分类):H04L12/56 授权公告日:20090211 终止日期:20091224 申请日:20061124

    专利权的终止

  • 2009-02-11

    授权

    授权

  • 2007-07-11

    实质审查的生效

    实质审查的生效

  • 2007-05-16

    公开

    公开

说明书

技术领域

本发明涉及的是一种基于NP(网络处理器)和BS(刀片服务器)的千兆NIDS并行处理的方法,即是一种基于网络处理器和刀片服务器、用于解决高速骨干网络速率检测瓶颈的数据包并行处理的方法。属于网络安全产品中的检测技术领域。

背景技术

入侵检测系统(IDS)是一种软件或硬件系统,用于自动监视计算机或网络上发生的事件并对其进行分析以发现危及安全的征兆。按照分析数据的来源,IDS可以分为基于网络的入侵检测系统(NIDS)和基于主机的入侵检测系统(HIDS),其中,NIDS由于部署容易,不占用主机资源,所以得到了大量应。NIDS将所监测网段的所有流量作为其数据源,主要通过对从网络上捕获的数据包进行协议分析、特征匹配等处理以判断其中是否存在攻击行为,并给出响应。近年来,随着网络技术的发展,网络带宽越来越高,NIDS面临的一个严峻问题就是如何在保持低误报率的同时提供尽可能高的处理速率,以避免出现因为处理能力的不足会导致NIDS不得不丢弃部分网络数据包,造成攻击的漏检。

由于受CPU处理能力和PCI总线速度的制约,目前的大多数的网络入侵检测系统至多只能够处理100~200M bps的网络流量。这样的处理能力对百兆的共享式网络不存在什么问题,然而,对现在大量应用的百兆交换式网络而言,由于在交换机的镜像端口上很容易产生千兆的流量,远远超出了当前的网络入侵检测系统的处理能力。

网络入侵检测系统的处理能力有限的主要原因在于探测器对数据包的分析需要花费大量的计算资源,因而无法及时处理不断到来的网络数据。虽然在传统Intel X86架构上开发NIDS灵活性强,可扩充能力好,但即使处理器的处理速度近年来增加得很快,其靠单纯地提高处理器速度仍无法完全满足千兆骨干网络传输需求,而开发专用于网络处理的ASIC芯片则费用高、时间长而且灵活性较差。网络处理器(NP)是专门为处理数据包而设计的可编程处理器,能够直接完成网络数据处理的一般性任务,其硬件大多采用多内核并行处理器体系结构,并具有专用硬件协处理器、专用指令集、高速的I/O接口技术和总线规范,因而与通用处理器相比,网络处理器在网络大数据流处理上具有明显的优势,而和ASIC相比,具有编程方面的优势。在此情况下,利用网络处理器开发高速网络安全产品是一个必然趋势,特别是对国内NIDS而言,采用网络处理器可以快速缩短和国外产品的差距,填补国内产品在高端市场上的空白。这对提高我国网络安全防护的整体水平,建设具有自主知识产权的信息安全基础设施具有战略意义。

发明内容

本发明的目的是提出一种基于NP和BS的千兆NIDS并行处理的方法,针对目前网络入侵检测系统对高速数据流处理能力不足的问题,利用网络处理器对网络数据流处理的高速性、稳定性和可编程性以及刀片服务器的可并行性、易扩充性等特点,给出了千兆NIDS中对高速数据分流检测的处理机、处理器和线程三级并行处理方法。以提高网络入侵检测系统的在数据包处理速度上的性能,适应当前网络发展对入侵检测技术在性能方面的新需求。

本发明的技术解决方案:一种基于NP和BS的千兆NIDS并行处理的方法,包括(1)数据接收,基于网络处理器的转发器在交换机的镜像端口上接收所需检测网络上的所有数据包;(2)数据划分,即转发器按照既定的算法(根据探测器的网卡负载、该连接与探测器的连接状态等)对到达的数据包进行划分,即将高速的网络数据流划分成多个低速的数据流,并确定应送达的探测器;(3)数据转发,即转发器将数据包的目的MAC地址改为该探测器的MAC地址,随后数据包被转发给基于刀片服务器的交换板,由交换板发送给该刀片服务器的探测器;(4)数据检测,即利用探测器的双CPU对称多处理结构,设计基于互补的两个线程进行数据采集、协议分析、特征匹配和响应;(5)报告生成,即在控制台形成检测报告。

本发明的优点:在细节上通过对称多处理提高了NIDS单个探测器的性能的同时,可以简单地通过增加探测器的数量提高NIDS整个系统的处理能力,减少高带宽下NIDS的丢包数,提高其检测率,满足骨干网对千兆NIDS的需求。

附图说明

图1是本发明中网络数据包检测的流程图,

图2是本发明中网络处理器的数据流划分方法流程图,

图3是本发明中TCP包的连接状态修改流程图,

图4是本发明中基于对称多处理的探测器处理结构图,

图5是本发明中探测器两线程并行处理流程图。

具体实施方式

对照图1(实线表示数据流,虚线表示控制流),网络处理器通过镜像端口接收需要检测的所有数据包,并利用其数据包转发模块,安照一定的数据流划分算法对到达的数据包进行转发,将高速的网络数据流划分成多个低速的数据流,交给后端的探测器处理,并使得各探测器这间的协同关系降到最低。同时,后端的探测器向转发器反馈自己的负载情况,转发器再根据得到的反馈动态地对流量划分进行调整,从而保证各个探测器的负载尽可能的均衡。

在图1所示的整个过程中,步骤1是初始动作。步骤2网络处理器的数据流划分方法,对数据包进行流量划分,包括分析包头结构、计算数据包头中源、目IP地址及端口的Hash值、判断该连接的状态、确定最适合的探测器、获取该探测器的MAC地址等部分。步骤3只是根据包的MAC地址,通过刀片服务器的交换板把包转发到目标探测器。步骤4是多处理机对送达的数据包的并行处理,包括数据采集、协议分析、特征匹配和响应等部分。其中每一个处理机,即刀片服务器的一个刀片采用双CPU的对称多处理结构,并针对数据包处理过程中由于特征匹配产生的瓶颈设计双线程进行并行处理以实现性能互补。步骤5是检测结果的输出,包括各种连接的状态、网络流量、日志数据库记录等。

对照图2,数据划分是从镜像端口接收一个待检查的数据包,判断转发器是否工作在分流数据包的状态,若不工作在分流数据包的状态,则把取到的包交给上层协议栈,并取下一个数据包,这时整个检测系统处理停止运行状态;若是工作在分流数据包的状态,则通过分析包头,判断当前的数据包是否为TCP包或UDP包;若不是TCP包或UDP包,则无需检测该连接在探测器中的当前状态,根据各探测器反馈回来的待处理队列长度确定一个负载最轻探测器,然后将改写该数据包包头的MAC地址,通过交换机,将其送至目标探测器进行攻击特征的匹配检测;若是TCP包或UDP包,则读取包头的源、目IP地址及端口号,并计算其Hash值;接着判断该Hash值的连接是否处于活动状态,该连接处于活动状态,则根据该连接的探测器MAC地址通过交换板把当前数据包交给该探测器;该连接不处于活动状态,根据探测器的反馈信息确定一个负载相对较轻的探测器,然后把当前的包交给该探测器;根据该数据包的UDP或TCP包头标志对该Hash值的连接状态进行修改;最后回到取下一个数据包,完成这样一个数据包的处理过程,并等待接收下一个数据包。

图2说明了图1中的步骤2,网络处理器的数据流划分方法,其主要作用是将属于同一次TCP/UDP连接的数据包发给同一个探测器,使其不需要其它任何信息,即避免探测器之间的交互的条件下能够检测到此连接中可能存在的攻击行为,同时保持各探测器的负载平衡。图2中的步骤6是起始状态,设置网络处理器的包接收模式,决定是否打开转发器的转发开关,以分流数据包。步骤7是从镜像端口接收一个待检查的数据包。步骤8判断转发器是否工作在分流数据包的状态。若转发器不是工作在分流数据包的状态,则执行步骤18,即把取到的包交给上层协议栈,并转到步骤7,取下一个数据包,这时整个检测系统处理停止运行状态。若转发器是工作在分流数据包的状态,则执行步骤9,通过分析包头,判断当前的数据包是否为TCP包或UDP包。若当前的数据包不是为TCP包或UDP包,则无需检测该连接在探测器中的当前状态,直接跳转步骤15,根据各探测器反馈回来的待处理队列长度确定一个负载最轻探测器,然后执行步骤14,即将改写该数据包包头的MAC地址,通过交换机,将其送至目标探测器进行攻击特征的匹配检测。若当前的数据包是TCP包或UDP包,则执行步骤10,即读取包头的源、目IP地址及端口号,并计算其Hash值。步骤11用于判断该Hash值的连接是否处于活动状态,以把属于相同连接的数据包发往同一个探测器进行检测,减少探测器之间的交互。如果该连接处于活动状态,则执行步骤12,即根据该连接的探测器MAC地址通过交换板把当前数据包交给该探测器。否则,跳至步骤16,类似步骤15,根据探测器的反馈信息确定一个负载相对较轻的探测器,然后执行步骤17,即把当前的包交给该探测器。上述步骤完成后执行步骤13,即根据该数据包的UDP或TCP包头标志对该Hash值的连接状态进行修改,以方便后续数据包转发时的探测器选择。最后回到步骤7,完成这样一个数据包的处理过程,并等待接收下一个数据包。

图3为步骤13中TCP包的详细过程,其作用是根据数据包的标志位,修改该包所属连接的状态,判断TCP或UDP何时连接和终止,达到动态负载平衡的目的。为实现该目的,本发明设计了两张表的数据结构:(1)表T将一组TCP连接映射到探测器,其每个单元包括两个部分,一部分表示该组连接已有探测器的编号(编号从1开始,0表示该组连接没有分配探测器处理),另一部分表示该组TCP连接的状态(每个单独的连接有两个状态:关闭和活动,0表示关闭,1表示活动,该组中所有连接的状态之和表示该组的状态)。(2)表U与表T类似,用于将UDP连接映射到探测器,其单元亦包含探测器的编号和该连接的状态两部分。在图2中,当一个数据包被确定该包所属的连接并发往该连接的探测器后,进入图3的步骤19,从该包头部获取TCP连接的标志位。步骤20判断该标志位是否为SYN,若该标志位是SYN,则执行步骤21,该组连接状态递增1,若该标志位不是SYN,则跳转步骤22,继续判断该标志位是否是FIN。如果该标志位是FIN,则进行步骤23,该组连接状态递减1,然后跳转步骤24,否则跳转步骤26,判断该标志位是否是RST。若该标志位是RST,则执行步骤27,该组连接状态递减2,然后跳转步骤24,否则直接跳转步骤24;判断该组连接的总的状态值是否小于等于0,若小于等于0则进行步骤25,取消该连接,即该组连接已全部关闭,跳转步骤结束,连接状态修改结束,并进行图2的后续操作。

图4为处理图1中步骤4中基于对称多处理的探测器处理结构图,其作用是将整个处理任务划分成多个线程,在刀片服务器的各个CPU上并行地执行,即利用其对称多处理结构和多线程并行加快处理速度,提高NIDS的性能。本发明将处理过程划分成两个线程并行的处理结构:在一个线程中进行攻击特征匹配,另一个线程同时负责数据采集、协议分析和特征匹配,两个进程间通过一个循环队列来传递数据(如图4所示)。由于在NIDS的整个处理过程中,攻击特征匹配需要将采集到的数据同大量已知的攻击特征进行比较,会耗费相当多的计算资源,是整个处理过程的瓶颈,而数据采集(负责捕获当前网络上的数据包)、协议分析(对获取的数据包进行IP分片重组、TCP连接重组甚至HTTP、FTP等高层协议重组)、响应过程(检测到攻击后进行一些简单的操作)等其他部分处理速度较快,这样的结构保证了两个线程都始终有数据处理,避免了CPU空闲。

对照图5,数据检测,即基于对称多处理的双线程并行数据流检测,方法如下,线程A先从入口缓冲队列中采集数据包,然后进行协议分析,得到需要进行特征匹配的数据,随后查看循环队列是否已满,如果队列未满,则将该数据包放入循环队列尾部,接着对循环队列中数据元素的个数进行修改,对循环队列的尾指针进行处理,然后转到采集新的数据包;如果队列已满,不必等待线程B处理队列中的数据,直接进行攻击特征的匹配和响应;匹配及响应完毕后采集新的数据包,完成一个循环;线程B判断队列是否为空,如果为空,则继续进行循环判断,否则,取队列头部的数据,然后执行特征匹配;之后,修改循环队列中元素的个数以及处理队列的头指针,最后转到继续进行循环队列是否为空的判断,完成一个循环。

图5是对图4中两个线程A、B的详细处理过程,图中,循环队列的长度为N,用于存放了待匹配攻击特征的数据,size表示循环队列中数据元素的个数,head是循环队列的头指针,tail是循环队列的尾指针,同时,利用x86 CPU的lock指令保证了size加1和减1操作的原子性。从步骤28开始,线程A先进入步骤29,从入口缓冲队列中采集数据包。步骤30进行协议分析,得到需要进行特征匹配的数据。随后执行步骤31,查看循环队列是否已满,如果队列未满,则进行步骤36,将该数据包放入循环队列尾部。步骤35对循环队列中数据元素的个数进行修改,而步骤34则对循环队列的尾指针进行处理,然后转到步骤29,立即采集新的数据包。执行步骤31时,如果队列已满,不必等待线程B处理队列中的数据,直接进入步骤32和33,进行攻击特征的匹配和响应。匹配及响应完毕后转到步骤29,采集新的数据包,完成一个循环。线程B所做的工作比较简单,主要是从循环队列中取出数据进行特征匹配,包括步骤37,进行队列是否为空的判断,如果为空,则说明探测器还没有开始检测,所以继续执行步骤38,进行循环判断,否则,执行步骤39,取队列头部的数据,然后步骤40的特征匹配;类似步骤35和34,步骤41和42修改循环队列中元素的个数以及处理队列的头指针。最后转到步骤38,继续进行循环队列是否为空的判断,完成一个循环。

线程A通过循环队列向线程2传送数据的结构是典型的“生产者-消费者”模型,循环队列是线程A和线程B共享的数据结构,一般来讲,两个线程需要互斥的对其进行访问,这样势必会降低线程的并行度,影响系统的性能。本发明中,我们设计了一种线程同步的方法,即定义两个线程共享的全局变量:size,使得线程不需要互斥的访问循环队列,大大提高线程的并行度。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号