最近几年,IPS产品成为安全产品市场新的热点,不仅保持了每年100%以上的市场增长率,而且应用领域不断扩大,应用技术也逐步普及。与传统的IDS旁路接入不同,IPS产品采用inline工作方式,即对接收的数据进行检测,然后按照其目的转发,这与安全网关类产品如防火墙、VPN等非常相似。这种工作方式决定了IPS产品除了要有准确的检测能力,还要有与应用网络相适应的性能要求。
实际上自IPS产品诞生以来,一直采用协议识别和攻击特征模式匹配等成熟技术,困扰其应用范围的主要是性能要求。目前的防火墙达到千兆线速、4G、甚至10G转发能力已属平常,但IPS要实现这一性能绝非易事。在IPS中不仅需要检查数据报文的头部,还要针对具体的应用协议检查数据报文的内容,这就使得在IPS中五元组相同的数据报文也不能“加速处理”,也就是说在IPS处理数据报文的整个路途中没有“捷径”,IPS需要对流经自身的每一个报文进行逐一检测。这样IPS成为CPU资源的主要耗费者,其性能很大程度上取决于硬件处理器的处理能力。
使用硬件内容加速卡来协助处理类似正则表达式查找的工作,可以起到局部加速作用,但整体效果有限,因为类似对TCP流状态的跟踪、各种应用协议的识别、策略的查找以及事件的统计和记录等等繁重工作还是要依靠CPU来处理。
近年来多核处理器的发展为并行处理技术的应用提供了广阔的空间,在一个处理器内部集成多个内核(独立运算单元)已日趋成熟,比较有代表性的商业化产品是RMI公司的XLR系列线程处理器,它集成了多达8个内核。在多核处理器硬件平台上,可以利用并行处理技术来提升IPS产品性能,但是实际性能的提升取决于IPS并行化的方法及其并行化的程度,不幸的是IPS软件的并行化远比硬件增加1个或几个物理内核要复杂得多,这涉及到操作系统并发工作的模式、流量的分担与负载、IPS引擎的并行检测、配置的同步与竞争控制、事件统计以及运行态调试等等问题。以下我们将对这些IPS并行化中的问题逐一探寻。
首先需要IPS系统软件(这里假定IPS系统是一个运行于应用层的程序,如果将IPS做为内核模块嵌入到操作系统中则需要考虑的问题会更多一些)的载体-操作系统本身支持并行化,也即操作系统有稳定的SMP版本。操作系统在多核处理器硬件平台上一般有两种构架,一种是SMP方式,也称为同构方式(见图:SMP方式示意图,以4核为例),另一种为AMP方式,也称为异构方式(见图:AMP方式示意图,以4核为例)。

![]()
AMP方式就是将多个内核区别看待,可以运行不同的操作系统也可以在相同的操作系统上运行不同的任务,各个处理器内核按照任务划分,各负其责,规避共享资源的竞争,做到“术有专攻”,从而提升IPS产品的综合性能。完整的操作系统往往比较庞大,耗费资源较多,效率也较低。拿出几个物理内核,在其上建立一种简易的系统环境(有时候直接叫做“裸核”环境),在这个“洁净的空间”内运行单一任务(比如收发数据、模式匹配等)往往可以获得极高的性能,这是AMP方式的特点,也是其优势。另外一种方式,在相同的操作系统上运行不同的任务也是同样的机理,只不过更容易实现一些,相应的性能提升的效果也逊色一些。这种架构也有其缺陷,在测试单一性能指标时,因为特定功能只有有限的内核参与处理,往往性能不够理想。架构本身也比较复杂,需要仔细权衡各个内核的任务分担,否则会造成内核负载不均衡,影响性能发挥。
选择哪一种架构需要根据处理器硬件平台与IPS系统本身的特点来抉择,通常在硬件处理器内核比较少的情况下选择SMP架构,在需要将一大堆不可能并行化的“遗产”继承到产品中时只好选择AMP架构,如果已经使用了硬件内容加速,那么可以选择SMP架构,如果是新开发IPS产品,内核分工可以动态调整的AMP架构是不错的选择,但需要保证足够的技术储备和适当的人力投入。
在确定了工作模式后,就要考虑流量的分担与负载问题了,多个内核并行处理,它们共同的输入就是来自网络的数据流,如何将这些数据流“喂”给处理器内核呢?最简单的就是轮询方法,即将到达的数据依次交给等待处理的内核,各个内核平均分配,这对早期的基于