程宗星,何紹勇,尚苗星
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
PF_RING對(duì)入侵防御系統(tǒng)中數(shù)據(jù)包捕獲性能的研究
程宗星,何紹勇,尚苗星
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
近幾年,隨著高速網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)要處理的實(shí)時(shí)流量已達(dá)千兆,甚至萬(wàn)兆的級(jí)別。傳統(tǒng)入侵防御系統(tǒng)(Snort),利用Libpcap進(jìn)行數(shù)據(jù)包的捕獲,在數(shù)據(jù)包捕獲方面已經(jīng)遠(yuǎn)遠(yuǎn)達(dá)不到實(shí)時(shí)處理的要求。討論并驗(yàn)證PF_RING對(duì)入侵防御系統(tǒng)中數(shù)據(jù)包捕獲性能的巨大影響。
入侵防御系統(tǒng);Libpcap;PF_RING;數(shù)據(jù)包捕獲
隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展以及網(wǎng)絡(luò)流量的增加,計(jì)算機(jī)面臨的網(wǎng)絡(luò)安全問題也愈加突出。入侵防御系統(tǒng)作為網(wǎng)絡(luò)安全防護(hù)的重要屏障得到了迅速的發(fā)展,然而傳統(tǒng)入侵防御系統(tǒng)的處理性能卻并不理想。主要表現(xiàn)在:(1)存在較高的漏報(bào)率;(2)存在較高的誤報(bào)率;(3)系統(tǒng)數(shù)據(jù)包捕獲能力低下,數(shù)據(jù)包捕獲速度跟不上檢測(cè)速度;(4)系統(tǒng)數(shù)據(jù)包檢測(cè)能力不足,數(shù)據(jù)包檢測(cè)速度跟不上捕獲速度;(5)日志記錄消耗大量CPU時(shí)間。
針對(duì)這些不足,已經(jīng)存在一些解決方法,如采用基于人工免疫的方法、數(shù)據(jù)挖掘方法以及基于危險(xiǎn)理論的算法等來(lái)減少漏報(bào)率和誤報(bào)率;在系統(tǒng)捕獲能力低下方面,采用內(nèi)存映射技術(shù)來(lái)減少數(shù)據(jù)包拷貝次數(shù);在數(shù)據(jù)包檢測(cè)能力不足方面,常采用多核處理設(shè)備加速并行處理、優(yōu)化檢測(cè)算法、負(fù)載均衡方式以及綁定進(jìn)程等方法。在日志記錄方面采用異步日志記錄的方式,來(lái)減少I/O處理所需時(shí)間。然而,一個(gè)優(yōu)秀的入侵防御系統(tǒng),往往需要綜合多種方法才能獲取較好的系統(tǒng)性能。
雖然通過內(nèi)存映射方式能夠在一定程度上減少數(shù)據(jù)包的拷貝次數(shù),但還是存在不少問題。主要表現(xiàn)在:(1)過多的系統(tǒng)調(diào)用;(2)頻繁的中斷導(dǎo)致上下文切換;(3)數(shù)據(jù)包拷貝仍需消耗CPU時(shí)鐘周期;(4)存在接收中斷和發(fā)送中斷優(yōu)先級(jí)過低的問題,容易被其他高優(yōu)先級(jí)中斷搶占的問題,從而導(dǎo)致數(shù)據(jù)包響應(yīng)不及時(shí)。
針對(duì)這些問題,本文采用PF_RING進(jìn)行數(shù)據(jù)包的加速捕獲,力求以更少的數(shù)據(jù)包拷貝次數(shù)精簡(jiǎn)數(shù)據(jù)包處理流程,爭(zhēng)取做到零次拷貝,即所謂的零拷貝技術(shù),其在數(shù)據(jù)包捕獲方面有其獨(dú)特的優(yōu)勢(shì)。
在國(guó)外研究方面,尤其以Luca Deri的兩篇文章Improving Passive Packet Capture:Beyond Device Pollin[1]和nCap:Wire-speed Packet and Transmission[2]最為經(jīng)典。
國(guó)內(nèi)在高速捕獲方面也有了一定的研究,例如劉峰的《Linux環(huán)境下基于Intel千兆網(wǎng)卡的高速數(shù)據(jù)包捕獲平臺(tái)的研究》[3]。其思想也是利用了CPU零參與。其他相似文章也大都如此,可見零拷貝(Zero-Copy)技術(shù)是實(shí)現(xiàn)數(shù)據(jù)包高速捕獲關(guān)鍵。
本文討論的就是基于零拷貝的PF_RING對(duì)入侵防御系統(tǒng)中數(shù)據(jù)包捕獲性能的影響,該實(shí)驗(yàn)以入侵防御系統(tǒng)(Snort)為應(yīng)用平臺(tái),對(duì)比PF_RING在不同模式下與傳統(tǒng)入侵防御系統(tǒng)在數(shù)據(jù)包捕獲性能上的差異。
本文系統(tǒng)以傳統(tǒng)入侵防御Snort為基礎(chǔ),利用PF_RING去改變?cè)紨?shù)據(jù)包的處理流程,從而減少數(shù)據(jù)包拷貝的次數(shù),盡量減少CPU參與拷貝的過程,使CPU全面投入入侵防御系統(tǒng)的入侵檢測(cè)中去。
1.1NAOL技術(shù)
在未存在NAPI技術(shù)之前,對(duì)于傳統(tǒng)數(shù)據(jù)包獲取需要調(diào)用相關(guān)I/O系統(tǒng)調(diào)用,會(huì)產(chǎn)生大量的中斷請(qǐng)求,導(dǎo)致所謂中斷活鎖現(xiàn)象。
NAPI是一套最新的處理網(wǎng)口數(shù)據(jù)的API,它是一種綜合中斷方式與輪詢方式的技術(shù)[7]。中斷與輪詢各有自己的優(yōu)缺點(diǎn),如中斷優(yōu)點(diǎn)是響應(yīng)及時(shí),但數(shù)據(jù)量大時(shí),會(huì)產(chǎn)生過多的中斷,消耗太多CPU時(shí)間,而輪詢適合處理大量數(shù)據(jù),但是會(huì)出現(xiàn)響應(yīng)不及時(shí)等問題[8]。
NAPI是中斷和輪詢的結(jié)合體,數(shù)據(jù)量低時(shí)采用中斷法,數(shù)據(jù)量高時(shí)采用輪詢法。平時(shí)是中斷方式,當(dāng)有數(shù)據(jù)包到達(dá)時(shí),會(huì)觸發(fā)中斷處理函數(shù)執(zhí)行(即數(shù)據(jù)接收的服務(wù)程序),中斷處理函數(shù)會(huì)關(guān)閉中斷并開始處理函數(shù),如果此時(shí)有數(shù)據(jù)到達(dá),則沒必要再觸發(fā)中斷了,因?yàn)橹袛嗵幚砗瘮?shù)會(huì)輪詢處理數(shù)據(jù),直到?jīng)]有新數(shù)據(jù)時(shí)才打開中斷。這種方式結(jié)合了中斷與輪詢的優(yōu)點(diǎn),性能較好,但是仍然會(huì)出現(xiàn)數(shù)據(jù)包響應(yīng)不及時(shí)的問題。PF_RING常規(guī)模式采用的就是NAPI輪詢的方式進(jìn)行數(shù)據(jù)包的拷貝,結(jié)合將內(nèi)核空間緩沖環(huán)映射到用戶空間,從而較高地提高網(wǎng)絡(luò)數(shù)據(jù)包的捕獲效率。
1.2傳統(tǒng)數(shù)據(jù)包處理流程
傳統(tǒng)入侵防御系統(tǒng)利用Libpcap進(jìn)行數(shù)據(jù)包的捕獲,數(shù)據(jù)包的流經(jīng)過程為,首先由網(wǎng)絡(luò)處理設(shè)備接收網(wǎng)絡(luò)數(shù)據(jù)包并將數(shù)據(jù)包存放在預(yù)先分配好的DMA緩沖區(qū),網(wǎng)卡驅(qū)動(dòng)程序?qū)?shù)據(jù)包由DMA緩沖區(qū)拷貝到內(nèi)核空間,最后再將數(shù)據(jù)包由內(nèi)核空間拷貝到用戶空間,以供應(yīng)用程序分析使用。缺點(diǎn)是數(shù)據(jù)包需要CPU參與其中兩次拷貝,在千兆網(wǎng)的條件下,捕獲包的性能較差,為了提高Libpcap的包捕獲性能,本文入侵防御系統(tǒng)采用PF_RING對(duì)Libpcap進(jìn)行改進(jìn)。傳統(tǒng)數(shù)據(jù)包處理流程如圖1所示。
1.3零拷貝
零拷貝技術(shù)是指通過減少或消除數(shù)據(jù)包從網(wǎng)絡(luò)設(shè)備(一般指網(wǎng)卡)到應(yīng)用程序空間的拷貝次數(shù),從而降低CPU的干預(yù),使CPU專注于數(shù)據(jù)處理。具體表現(xiàn)在,通過簡(jiǎn)化協(xié)議處理的層次,在應(yīng)用和網(wǎng)絡(luò)間提供更快的數(shù)據(jù)通路,可以有效地降低通信延遲,增加網(wǎng)絡(luò)吞吐率。
圖1 傳統(tǒng)數(shù)據(jù)包處理流程
一般來(lái)說(shuō),認(rèn)為從網(wǎng)卡到用戶空間的系統(tǒng)調(diào)用會(huì)經(jīng)歷兩次或者兩次半的copy過程,零拷貝就是要消除這些copy過程。
1.4PE_RLNG數(shù)據(jù)包處理流程
PF_RING是一種基于零拷貝的高效網(wǎng)絡(luò)數(shù)據(jù)包捕獲、過濾以及分析的開源框架平臺(tái)。它通過向內(nèi)核注冊(cè)一種新型的網(wǎng)絡(luò)套接字PF_RING,可以極大地改進(jìn)包捕獲的速度。它提供對(duì)Libpcap以及pcap的應(yīng)用程序的無(wú)縫集成。PF_RING有兩種工作方式,NAPI模式以及DNA(直接網(wǎng)卡訪問)模式。
在NAPI模式下,雖然內(nèi)核內(nèi)存環(huán)已映射到用戶空間,但網(wǎng)卡驅(qū)動(dòng)程序仍需要經(jīng)歷一次將數(shù)據(jù)包拷貝至內(nèi)核內(nèi)存環(huán)的過程,導(dǎo)致CPU參與了一次數(shù)據(jù)包的拷貝過程。
DNA技術(shù)是一種基于零拷貝技術(shù)的進(jìn)一步簡(jiǎn)化網(wǎng)絡(luò)數(shù)據(jù)包捕獲流程的技術(shù),在DNA模式下,將網(wǎng)卡內(nèi)存映射為內(nèi)核內(nèi)存環(huán),同時(shí)內(nèi)核內(nèi)存環(huán)也映射到用戶空間,從而應(yīng)用程序以直接內(nèi)存存取(DMA)方式訪問到數(shù)據(jù)包,進(jìn)一步減少數(shù)據(jù)包的拷貝次數(shù),實(shí)現(xiàn)了真正意義上的CPU零參與[9]。PF_RING兩種模式對(duì)比如圖2所示:
圖2 NAPI與DNA兩種模式對(duì)比
1.5多進(jìn)程與CPU綁定
在多核網(wǎng)絡(luò)處理設(shè)備上,為了充分挖掘多核平臺(tái)的性能優(yōu)勢(shì),提高多核處理器的效率,系統(tǒng)可采用多進(jìn)程的方式進(jìn)行數(shù)據(jù)包的捕獲與處理,且目前大多數(shù)網(wǎng)卡都支持多隊(duì)列技術(shù),PF_RING中的對(duì)稱RSS技術(shù)支持各隊(duì)列之間的負(fù)載均衡。因此可以對(duì)每一個(gè)接收隊(duì)列開啟一個(gè)進(jìn)程進(jìn)行數(shù)據(jù)包的處理。同時(shí)為了減少進(jìn)程在不同CPU之間遷移帶來(lái)的額外開銷,可以將每一個(gè)進(jìn)程綁定在一個(gè)特定的CPU上。
1.6異步日志
為了進(jìn)一步提高系統(tǒng)的捕獲效率以及減少I/O日志寫入對(duì)系統(tǒng)性能的影響,本系統(tǒng)采用共享內(nèi)存的方式實(shí)現(xiàn)了把日志記錄從整個(gè)數(shù)據(jù)包處理流程中分離出來(lái),提高處理效率。
本文在原始入侵防御系統(tǒng)(Snort)平臺(tái)上,構(gòu)建了以PF_RING為基礎(chǔ)的新型入侵防御系統(tǒng)。該系統(tǒng)運(yùn)行在通用多核平臺(tái)之上,可以運(yùn)行在NAPI與DNA兩種不同的模式,同時(shí)系統(tǒng)還采用了多進(jìn)程和CPU綁定技術(shù),實(shí)現(xiàn)了高度的并行處理,提高了系統(tǒng)整體處理速度。
系統(tǒng)分成發(fā)包機(jī)與被測(cè)試機(jī)以及管理主機(jī),三個(gè)機(jī)器都在同一網(wǎng)絡(luò)下192.168.4.0/24,以方便管理主機(jī)ssh登錄后臺(tái)進(jìn)行測(cè)試;發(fā)包機(jī)的接口1與被測(cè)機(jī)器的接口2直接相連,發(fā)包機(jī)接口3與被測(cè)機(jī)器的接口4直接相連;發(fā)包機(jī)內(nèi)安裝好PF_RING程序,PF_RING程序通過接口1向被測(cè)試機(jī)器發(fā)包并從接口3接收返回的數(shù)據(jù)包,測(cè)試被測(cè)機(jī)器的吞吐量。具體測(cè)試環(huán)境如圖3所示:
圖3 測(cè)試環(huán)境圖
本文的實(shí)驗(yàn)環(huán)境為CentOS6.3 x86_32操作系統(tǒng),CPU為兩個(gè)Intel Xeon E5-2630 2.3GHz,總共6×2個(gè)物理核心,內(nèi)存大小為16G,網(wǎng)卡是Intel B50(82580-based)千兆網(wǎng)卡。入侵防御庫(kù)采用的snort2.9.2.2原版規(guī)則庫(kù),包含6128條規(guī)則。實(shí)驗(yàn)設(shè)計(jì)了兩種方案,下面是每一種方案的說(shuō)明。
方案一:在DNA模式下,對(duì)比基于PF_RING抓包的入侵防御系統(tǒng)和原始入侵防御系統(tǒng)Snort-inline[10]。測(cè)試的方法是在入侵防御規(guī)則為6128條的情況下,Snort開啟的數(shù)量為1,測(cè)試結(jié)果如圖4所示。
圖4 DNA模式下,PF_RING抓包入侵防御系統(tǒng)與原始入侵防御系統(tǒng)性能對(duì)比
方案二:在NAPI模式下,對(duì)比基于PF_RING抓包的入侵防御系統(tǒng)和原始入侵防御系統(tǒng)。測(cè)試的方法是在入侵防御規(guī)則為6128條的情況下,Snort開啟的數(shù)量為1,測(cè)試結(jié)果如圖5所示。
圖5 NAPI模式下,PF_RING抓包入侵防御系統(tǒng)與原始入侵防御系統(tǒng)性能對(duì)比
實(shí)驗(yàn)數(shù)據(jù)顯示,在兩種模式下,PF_RING抓包入侵系統(tǒng)捕獲到更多的數(shù)據(jù)包且DNA模式下,捕獲數(shù)據(jù)包性能更高。
針對(duì)傳統(tǒng)數(shù)據(jù)包捕獲性能低下的問題,本文論述了影響數(shù)據(jù)高速捕獲的相關(guān)技術(shù),集中探討了PF_RING對(duì)入侵防御系統(tǒng)中數(shù)據(jù)包捕獲性能的影響,實(shí)驗(yàn)結(jié)果表明基于PF_RING的入侵防御系統(tǒng),不管是在NAPI模式還是在DNA模式,系統(tǒng)的抓包性能均有了不同程度的增加,在DNA模式下,系統(tǒng)的抓包性能更顯著一些。
[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環(huán)境下基于Intel千兆網(wǎng)卡的高速數(shù)據(jù)包捕獲平臺(tái)的研究.廈門大學(xué)碩士學(xué)位論文,2008.5
[4]謝大斌.一種高性能入侵防御系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).四川大學(xué)計(jì)算機(jī)學(xué)院,2013.
[5]趙月愛.基于非均衡數(shù)據(jù)分類的高速網(wǎng)絡(luò)入侵檢測(cè)研究.太原理工大學(xué)博士學(xué)位論文.2010.3
[6]白浩泉.高速網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).上海交通大學(xué)碩士學(xué)位論文.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]司艷芳.高速網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)體系結(jié)構(gòu)研究.哈爾濱工程大學(xué)工學(xué)碩士學(xué)位論文,2009.1
[12]張瑞.基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).電子科技大學(xué)碩士學(xué)位論文,2010.3
[13]汪泓帆.一種基于X86架構(gòu)的多核綁定技術(shù).四川大學(xué)碩士研究生,2012.5.24
[14]方浪.一種網(wǎng)絡(luò)加速引擎模型的設(shè)計(jì)與實(shí)現(xiàn).四川大學(xué)碩士研究生,2012.12.22
[15]崔傳斌.一種基于危險(xiǎn)理論的入侵檢測(cè)算法.哈爾濱理工大學(xué)碩士研究生,2009.11.21
[16]高宜楠.基于機(jī)器學(xué)習(xí)與人工免疫的入侵檢測(cè)系統(tǒng)研究.西安電子科技大學(xué)碩士研究生,2009.12.01
[17]姚云志.改進(jìn)的基于人工免疫的入侵檢測(cè)檢測(cè)模型.太原理工大學(xué)碩士研究生,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-),男,山東聊城人,在讀碩士研究生,研究方向?yàn)榫W(wǎng)絡(luò)安全技術(shù)與應(yīng)用
何紹勇(1984-),男,云南楚雄人,本科,工程師,研究方向?yàn)榫W(wǎng)絡(luò)安全
尚苗星(1981-),男,云南澄江人,本科,助理研究員,研究方向?yàn)榫W(wǎng)絡(luò)安全
2014-05-26
2015-04-16