程宗星,何紹勇,尚苗星
(四川大學計算機學院,成都610065)
PF_RING對入侵防御系統中數據包捕獲性能的研究
程宗星,何紹勇,尚苗星
(四川大學計算機學院,成都610065)
近幾年,隨著高速網絡的不斷發展,網絡要處理的實時流量已達千兆,甚至萬兆的級別。傳統入侵防御系統(Snort),利用Libpcap進行數據包的捕獲,在數據包捕獲方面已經遠遠達不到實時處理的要求。討論并驗證PF_RING對入侵防御系統中數據包捕獲性能的巨大影響。
入侵防御系統;Libpcap;PF_RING;數據包捕獲
隨著計算機網絡的不斷發展以及網絡流量的增加,計算機面臨的網絡安全問題也愈加突出。入侵防御系統作為網絡安全防護的重要屏障得到了迅速的發展,然而傳統入侵防御系統的處理性能卻并不理想。主要表現在:(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在不同模式下與傳統入侵防御系統在數據包捕獲性能上的差異。
本文系統以傳統入侵防御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日志寫入對系統性能的影響,本系統采用共享內存的方式實現了把日志記錄從整個數據包處理流程中分離出來,提高處理效率。
本文在原始入侵防御系統(Snort)平臺上,構建了以PF_RING為基礎的新型入侵防御系統。該系統運行在通用多核平臺之上,可以運行在NAPI與DNA兩種不同的模式,同時系統還采用了多進程和CPU綁定技術,實現了高度的并行處理,提高了系統整體處理速度。
系統分成發包機與被測試機以及管理主機,三個機器都在同一網絡下192.168.4.0/24,以方便管理主機ssh登錄后臺進行測試;發包機的接口1與被測機器的接口2直接相連,發包機接口3與被測機器的接口4直接相連;發包機內安裝好PF_RING程序,PF_RING程序通過接口1向被測試機器發包并從接口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模式下,捕獲數據包性能更高。
針對傳統數據包捕獲性能低下的問題,本文論述了影響數據高速捕獲的相關技術,集中探討了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