网络入侵检测系统性能取决于软硬件两方面的因素。 1.软件因素 软件因素主要是: ●网络抓包的效率; ●入侵分析的效率。入侵检测一般是基于特征匹配的,将网络数据包与入侵规则库进行特征匹配的。很多产品利用协议分析技术提高入侵分析的效率,先使用协议分析过滤冗余数据,同时尽快在规则树上分叉,加速深度遍历; ●C/S结构下,网络通信的延迟。在服务器端和客户端都要引入网络通信模块,从而增加事件传输的延迟。大多数网络入侵检测系统都是采用Client/Server结构的,例如ISS Real Secure,赛门铁克的IDS系统,启明星辰的天阗和金诺的KIDS等等。像一些基于浏览器/服务器(B/S)结构的网络入侵检测系统就没有这种问题,例如方正科技软件的方通Sniper,因为它的事件直接存储在网络传感器上; ●事件日志库的记录能力。有的系统将事件收集(Event Collector)和事件日志库分开,事件收集器和事件日志数据库又形成了C/S结构,又引入了延迟。如果EC和日志数据库在不同的主机上,更引入了网络传输延迟。ISS Real Secure,启明星辰的天阗和金诺的KIDS等等又是采用这种结构;基于浏览器/服务器结构的网络入侵检测系统也没有这种问题; ●控制台的事件显示效率。很多控制台会因为事件多的处理不过来,所以导致控制台死机。很多C/S结构的控制台完成的功能太多了,例如和传感器的网络通信、和事件收集器的通信、和事件日志数据库的通信,还要完成事件显示、事件分析、系统管理和配置等等。引入了很多性能瓶颈点。如果不能达到实时监控,就会使网络入侵检测系统的价值大打折扣。 2.硬件因素 硬件方面主要是CPU处理能力、内存、网卡和硬盘IO等。 ●CPU处理能力 CPU处理能力是影响网络入侵检测系统网络传感器性能的重要因素。CPU处理能力从三个方面对系统产生影响:CPU主频和CPU的个数,分别被称为CPU的纵向和横向的扩展能力。一般而言,随着CPU主频的提高,网络传感器的处理能力越高,这是显而易见的。 但是是不是随着CPU数量的提高网络传感器的性能就线性增加呢?这要看系统是否是多进程或多线程架构的。很多网络入侵检测系统都在做多处理器的优化。 对CPU处理能力的利用率也极大地影响网络传感器的性能,那么如何提高CPU处理能力的利用率呢?其中一个非常重要的方法就是对网络传感器进行CPU指令集的优化。例如,在P4处理器上,尽可能的使用P4处理器的指令集。Intel公司提供的C&C++编译器,就有针对指令集进行优化的功能,而且Intel实验室还提供这方面优化服务。 目前,Intel的新至强处理器采用了超线程技术,但是网络传感器如果要发挥新至强处理器的性能,就必须针对超线程进行优化。目前Linux最新的核心还不支持超线程技术。 ●内存 内存对网络传感器的影响是显著的。因为网络入侵检测系统需要大量的内存进行抓包、包重组、流重组、协议分析、规则匹配等计算。 内存的使用方法也是至关重要的,因为会影响CPU的利用率。使用方法包括:内存分配、释放、复制、匹配等。使用不当一方面会造成内存泄露,另一方面会占用CPU开销。 网络传感器的部分进程在核心态运行,另一部分进程运行在用户态,两者之间如果共享数据,必须进行内存复制,这时就需要在核心态和用户态之间切换,两者之间切换的CPU开销是很大的,如果切换非常频繁,CPU开销就会非常大。 ●二级缓存 L2 Cache的数量也对网络传感器的性能有积极的影响。因此,尽可能的使用大的L2 Cache。 ●网卡 网卡对网络传感器性能的影响主要是抓包效率。网卡到达性能峰值时,就很容易丢包。所以网络传感器的网卡就不能使用一般性的网卡。目前,使用比较多的是Intel系列、3Com系列网卡。例如,Intel百兆网卡中的82559,千兆网卡中的82543,82544等。 如果网络入侵检测系统支持多个网卡监控,那么各个网卡最好分配在不同的总线段。 网卡对网络入侵检测系统的影响还体现在网络传感器与控制台的数据传输上。 网卡驱动对网络传感器的影响也是很重要的,有的网络入侵检测系统,对网卡做专门的优化。 ●PCI总线带宽 另一个非常重要的硬件因素是PCI总线带宽。特别是在千兆网络入侵检测系统上,为了实现几个G的抓包速率,必须使用多个66Mhz/64-bit PCI or 133Mhz/64-bit PCI-X总线扩展槽。如果使用PCI-X总线,就必须使用PCI-X兼容的网卡,以充分发挥PCI-X 133MHz标准。为了提供更好的带宽利用,多个网卡必须合理地分布在PCI/PCI-X总线段上。 ●硬盘IO 因为网络入侵检测系统的传感器需要在硬盘上存储很多日志信息,所以硬盘的IO也会影响到网络传感器的性能。
入侵检测系统的性能的辨别
三、性能指标受哪些因素影响?
●数据包重组和TCP流重组的效率。这是严重影响网络入侵检测系统性能的因素,对处理器和内存的开销非常大。如果数据包重组和TCP流重组在操作系统的用户层完成,那么就会导致操作系统以极高的频率在核心态和用户态之间切换,导致大量额外的系统开销;