PF_RING对入侵防御系统中数据包捕获性能的研究
2015-09-18程宗星何绍勇尚苗星
程宗星,何绍勇,尚苗星
(四川大学计算机学院,成都610065)
PF_RING对入侵防御系统中数据包捕获性能的研究
程宗星,何绍勇,尚苗星
(四川大学计算机学院,成都610065)
近几年,随着高速网络的不断发展,网络要处理的实时流量已达千兆,甚至万兆的级别。传统入侵防御系统(Snort),利用Libpcap进行数据包的捕获,在数据包捕获方面已经远远达不到实时处理的要求。讨论并验证PF_RING对入侵防御系统中数据包捕获性能的巨大影响。
入侵防御系统;Libpcap;PF_RING;数据包捕获
0 引言
随着计算机网络的不断发展以及网络流量的增加,计算机面临的网络安全问题也愈加突出。入侵防御系统作为网络安全防护的重要屏障得到了迅速的发展,然而传统入侵防御系统的处理性能却并不理想。主要表现在:(1)存在较高的漏报率;(2)存在较高的误报率;(3)系统数据包捕获能力低下,数据包捕获速度跟不上检测速度;(4)系统数据包检测能力不足,数据包检测速度跟不上捕获速度;(5)日志记录消耗大量CPU时间。
针对这些不足,已经存在一些解决方法,如采用基于人工免疫的方法、数据挖掘方法以及基于危险理论的算法等来减少漏报率和误报率;在系统捕获能力低下方面,采用内存映射技术来减少数据包拷贝次数;在数据包检测能力不足方面,常采用多核处理设备加速并行处理、优化检测算法、负载均衡方式以及绑定进程等方法。在日志记录方面采用异步日志记录的方式,来减少I/O处理所需时间。然而,一个优秀的入侵防御系统,往往需要综合多种方法才能获取较好的系统性能。
虽然通过内存映射方式能够在一定程度上减少数据包的拷贝次数,但还是存在不少问题。主要表现在:(1)过多的系统调用;(2)频繁的中断导致上下文切换;(3)数据包拷贝仍需消耗CPU时钟周期;(4)存在接收中断和发送中断优先级过低的问题,容易被其他高优先级中断抢占的问题,从而导致数据包响应不及时。
针对这些问题,本文采用PF_RING进行数据包的加速捕获,力求以更少的数据包拷贝次数精简数据包处理流程,争取做到零次拷贝,即所谓的零拷贝技术,其在数据包捕获方面有其独特的优势。
在国外研究方面,尤其以Luca Deri的两篇文章Improving Passive Packet Capture:Beyond Device Pollin[1]和nCap:Wire-speed Packet and Transmission[2]最为经典。
国内在高速捕获方面也有了一定的研究,例如刘峰的《Linux环境下基于Intel千兆网卡的高速数据包捕获平台的研究》[3]。其思想也是利用了CPU零参与。其他相似文章也大都如此,可见零拷贝(Zero-Copy)技术是实现数据包高速捕获关键。
本文讨论的就是基于零拷贝的PF_RING对入侵防御系统中数据包捕获性能的影响,该实验以入侵防御系统(Snort)为应用平台,对比PF_RING在不同模式下与传统入侵防御系统在数据包捕获性能上的差异。
1 系统原理
本文系统以传统入侵防御Snort为基础,利用PF_RING去改变原始数据包的处理流程,从而减少数据包拷贝的次数,尽量减少CPU参与拷贝的过程,使CPU全面投入入侵防御系统的入侵检测中去。
1.1NAOL技术
在未存在NAPI技术之前,对于传统数据包获取需要调用相关I/O系统调用,会产生大量的中断请求,导致所谓中断活锁现象。
NAPI是一套最新的处理网口数据的API,它是一种综合中断方式与轮询方式的技术[7]。中断与轮询各有自己的优缺点,如中断优点是响应及时,但数据量大时,会产生过多的中断,消耗太多CPU时间,而轮询适合处理大量数据,但是会出现响应不及时等问题[8]。
NAPI是中断和轮询的结合体,数据量低时采用中断法,数据量高时采用轮询法。平时是中断方式,当有数据包到达时,会触发中断处理函数执行(即数据接收的服务程序),中断处理函数会关闭中断并开始处理函数,如果此时有数据到达,则没必要再触发中断了,因为中断处理函数会轮询处理数据,直到没有新数据时才打开中断。这种方式结合了中断与轮询的优点,性能较好,但是仍然会出现数据包响应不及时的问题。PF_RING常规模式采用的就是NAPI轮询的方式进行数据包的拷贝,结合将内核空间缓冲环映射到用户空间,从而较高地提高网络数据包的捕获效率。
1.2传统数据包处理流程
传统入侵防御系统利用Libpcap进行数据包的捕获,数据包的流经过程为,首先由网络处理设备接收网络数据包并将数据包存放在预先分配好的DMA缓冲区,网卡驱动程序将数据包由DMA缓冲区拷贝到内核空间,最后再将数据包由内核空间拷贝到用户空间,以供应用程序分析使用。缺点是数据包需要CPU参与其中两次拷贝,在千兆网的条件下,捕获包的性能较差,为了提高Libpcap的包捕获性能,本文入侵防御系统采用PF_RING对Libpcap进行改进。传统数据包处理流程如图1所示。
1.3零拷贝
零拷贝技术是指通过减少或消除数据包从网络设备(一般指网卡)到应用程序空间的拷贝次数,从而降低CPU的干预,使CPU专注于数据处理。具体表现在,通过简化协议处理的层次,在应用和网络间提供更快的数据通路,可以有效地降低通信延迟,增加网络吞吐率。
图1 传统数据包处理流程
一般来说,认为从网卡到用户空间的系统调用会经历两次或者两次半的copy过程,零拷贝就是要消除这些copy过程。
1.4PE_RLNG数据包处理流程
PF_RING是一种基于零拷贝的高效网络数据包捕获、过滤以及分析的开源框架平台。它通过向内核注册一种新型的网络套接字PF_RING,可以极大地改进包捕获的速度。它提供对Libpcap以及pcap的应用程序的无缝集成。PF_RING有两种工作方式,NAPI模式以及DNA(直接网卡访问)模式。
在NAPI模式下,虽然内核内存环已映射到用户空间,但网卡驱动程序仍需要经历一次将数据包拷贝至内核内存环的过程,导致CPU参与了一次数据包的拷贝过程。
DNA技术是一种基于零拷贝技术的进一步简化网络数据包捕获流程的技术,在DNA模式下,将网卡内存映射为内核内存环,同时内核内存环也映射到用户空间,从而应用程序以直接内存存取(DMA)方式访问到数据包,进一步减少数据包的拷贝次数,实现了真正意义上的CPU零参与[9]。PF_RING两种模式对比如图2所示:
图2 NAPI与DNA两种模式对比
1.5多进程与CPU绑定
在多核网络处理设备上,为了充分挖掘多核平台的性能优势,提高多核处理器的效率,系统可采用多进程的方式进行数据包的捕获与处理,且目前大多数网卡都支持多队列技术,PF_RING中的对称RSS技术支持各队列之间的负载均衡。因此可以对每一个接收队列开启一个进程进行数据包的处理。同时为了减少进程在不同CPU之间迁移带来的额外开销,可以将每一个进程绑定在一个特定的CPU上。
1.6异步日志
为了进一步提高系统的捕获效率以及减少I/O日志写入对系统性能的影响,本系统采用共享内存的方式实现了把日志记录从整个数据包处理流程中分离出来,提高处理效率。
2 实验系统搭建
本文在原始入侵防御系统(Snort)平台上,构建了以PF_RING为基础的新型入侵防御系统。该系统运行在通用多核平台之上,可以运行在NAPI与DNA两种不同的模式,同时系统还采用了多进程和CPU绑定技术,实现了高度的并行处理,提高了系统整体处理速度。
系统分成发包机与被测试机以及管理主机,三个机器都在同一网络下192.168.4.0/24,以方便管理主机ssh登录后台进行测试;发包机的接口1与被测机器的接口2直接相连,发包机接口3与被测机器的接口4直接相连;发包机内安装好PF_RING程序,PF_RING程序通过接口1向被测试机器发包并从接口3接收返回的数据包,测试被测机器的吞吐量。具体测试环境如图3所示:
图3 测试环境图
3 实验分析
本文的实验环境为CentOS6.3 x86_32操作系统,CPU为两个Intel Xeon E5-2630 2.3GHz,总共6×2个物理核心,内存大小为16G,网卡是Intel B50(82580-based)千兆网卡。入侵防御库采用的snort2.9.2.2原版规则库,包含6128条规则。实验设计了两种方案,下面是每一种方案的说明。
方案一:在DNA模式下,对比基于PF_RING抓包的入侵防御系统和原始入侵防御系统Snort-inline[10]。测试的方法是在入侵防御规则为6128条的情况下,Snort开启的数量为1,测试结果如图4所示。
图4 DNA模式下,PF_RING抓包入侵防御系统与原始入侵防御系统性能对比
方案二:在NAPI模式下,对比基于PF_RING抓包的入侵防御系统和原始入侵防御系统。测试的方法是在入侵防御规则为6128条的情况下,Snort开启的数量为1,测试结果如图5所示。
图5 NAPI模式下,PF_RING抓包入侵防御系统与原始入侵防御系统性能对比
实验数据显示,在两种模式下,PF_RING抓包入侵系统捕获到更多的数据包且DNA模式下,捕获数据包性能更高。
4 结语
针对传统数据包捕获性能低下的问题,本文论述了影响数据高速捕获的相关技术,集中探讨了PF_RING对入侵防御系统中数据包捕获性能的影响,实验结果表明基于PF_RING的入侵防御系统,不管是在NAPI模式还是在DNA模式,系统的抓包性能均有了不同程度的增加,在DNA模式下,系统的抓包性能更显著一些。
[1]Luca Deri.Improving Passive Packet Capture:Beyond Device Polling[J].4th International System Administration and Network Engineering Conference-SANE 2004.October 2004
[2]Luca Deri nCap:Wire-speed Packet Capture and Transmission.Third IEEE International Workshop on End to End Monitoring-E2EM ON.May 2005
[3]刘峰.Linux环境下基于Intel千兆网卡的高速数据包捕获平台的研究.厦门大学硕士学位论文,2008.5
[4]谢大斌.一种高性能入侵防御系统的设计与实现.四川大学计算机学院,2013.
[5]赵月爱.基于非均衡数据分类的高速网络入侵检测研究.太原理工大学博士学位论文.2010.3
[6]白浩泉.高速网络入侵检测系统设计与实现.上海交通大学硕士学位论文.2010.12
[7]NAPI.http://www.ibm.com/developerworks/cn/linux/l-napi/
[8]Mogul J,Ramakrisnan K.Eliminating Receive Livelock in an Interrupt-Driven Kernel[C].Proceedings of 1996 Usenix Technical Conference.1996:217~252
[9]PF_RING DNA.http://www.ntop.org/products/pf_ring/dna/
[10]Snort inline.http://snort-inline.sourceforge.net/index.html
[11]司艳芳.高速网络入侵检测系统体系结构研究.哈尔滨工程大学工学硕士学位论文,2009.1
[12]张瑞.基于千兆网卡的高效数据包捕获技术的应用与实现.电子科技大学硕士学位论文,2010.3
[13]汪泓帆.一种基于X86架构的多核绑定技术.四川大学硕士研究生,2012.5.24
[14]方浪.一种网络加速引擎模型的设计与实现.四川大学硕士研究生,2012.12.22
[15]崔传斌.一种基于危险理论的入侵检测算法.哈尔滨理工大学硕士研究生,2009.11.21
[16]高宜楠.基于机器学习与人工免疫的入侵检测系统研究.西安电子科技大学硕士研究生,2009.12.01
[17]姚云志.改进的基于人工免疫的入侵检测检测模型.太原理工大学硕士研究生,2013.6
Research on the Effect of PF_RING on Packet Capture Performance of Instrusion Prevention System
CHENG Zong-xing,HE Shao-yong,SHANG Miao-xing
(College of Computer Science,Sichuan University,Chengdu 610065)
In recent years,with the development of high-speed network,the real-time traffic processing has reached Gigabit,sometimes even ten Gigabit.The traditional intrusion prevention system(Snort)capture packet by the Libpcap which has been far less than the requirements of real-time processing.Discusses and verifies the huge influence of PF_RING on data packet capture performance of intrusion prevention system.
Intrusion Prevention System;Libpcap;PF_RING;Packet Capture
1007-1423(2015)11-0048-05
10.3969/j.issn.1007-1423.2015.11.009
程宗星(1988-),男,山东聊城人,在读硕士研究生,研究方向为网络安全技术与应用
何绍勇(1984-),男,云南楚雄人,本科,工程师,研究方向为网络安全
尚苗星(1981-),男,云南澄江人,本科,助理研究员,研究方向为网络安全
2014-05-26
2015-04-16