论文部分内容阅读
随着网络规模的不断扩大,网络流量的不断增大,传统的入侵检测系统在高速网络环境下存在较大的性能瓶颈和缺陷。主要表现在两个方面:一是当前应用层的入侵检测系统虽然比较稳定,但是太依赖于类似libpcap这样的抓包库,前端报文捕获速率不高,丢包现象严重;驱动层的入侵检测系统虽然报文捕获性能较好,但是基本上都是基于Netfilter框架的开发,大量驱动代码运行在内核空间,简单的程序BUG就会导致宕机,系统稳定性过差。二是随着多核处理器的发展,网络入侵检测系统的性能并没有随着处理单元增多而大量提升,主要是因为各个CPU对于公共资源抢占严重,需要大量的加锁和等待。本文在研究了入侵检测系统的工作原理的基础上,提出了一种高性能入侵检测系统的优化设计与实现方案,解决了基于libpcap抓包库的入侵检测系统的性能问题和基于驱动层入侵检测系统的稳定性问题。优化设计包括两个方面:第一,提出了一种零拷贝无锁队列的并行处理设计方案,该方案在内核空间构造一组并行处理队列并通过零拷贝技术映射到应用层的进程地址空间,使得网卡从接收数据包到发送数据包整个过程不加锁,从而提高系统性能。第二,在应用层构建AppNetfilter使得系统有良好的扩展性。AppNetfilter主要提供连接跟踪的建立、维护、销毁等功能,同时建立一套业务钩子的回调框架。AppNetfilter是在应用层以绑定CPU的进程作为并发处理单元,并借鉴内核的Netfilter设计思想设计的一种应用层业务钩子回调框架。本文在linux内核3.0.9的基础上,对本文提出的入侵检测系统进行了实现,并在模拟2Gbps网络下进行测试,测试结果表明本系统可以有效提高系统处理数据包的能力,减少CPU占用率,并且提高系统稳定性。