曹建業(yè),董永吉,冶曉隆,龔莉萍
(1.國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,河南 鄭州450002;2.中國人民解放軍75779部隊,廣東 廣州510000)
網(wǎng)絡(luò)流量統(tǒng)計及分析是掌握網(wǎng)絡(luò)行為的基礎(chǔ)[1],是用于分析網(wǎng)絡(luò)狀況、掌握流量特性的有效方法,可以通過收集數(shù)據(jù)或報文蹤跡,定量的分析不同的網(wǎng)絡(luò)應(yīng)用在網(wǎng)絡(luò)中活動規(guī)律。目前流統(tǒng)計的設(shè)計大都是基于NetFlow[2]實現(xiàn)的,基于NetFlow 的流量統(tǒng)計方法[3]可以獲得包括源地址IP、目的地址IP、源端口、目的端口和協(xié)議字段的五元組信息等詳細(xì)信息,根據(jù)這些信息可以對協(xié)議 (應(yīng)用)、主機(jī)IP (用戶)以及AS域等進(jìn)行統(tǒng)計和趨勢分析,從而實現(xiàn)網(wǎng)絡(luò)流量監(jiān)測,用戶應(yīng)用監(jiān)控,網(wǎng)絡(luò)安全,網(wǎng)絡(luò)規(guī)劃以及異常流量檢測[4]等功能。
傳統(tǒng)的流量統(tǒng)計系統(tǒng)通常都是基于微處理器,通過軟件實現(xiàn)流量采集功能,并將所采集數(shù)據(jù)包的五元組信息進(jìn)行整理,得到流統(tǒng)計表項并存儲于專用存儲器中,為后續(xù)的流量收集器進(jìn)行網(wǎng)絡(luò)流量屬性分析提供依據(jù)。隨著網(wǎng)絡(luò)鏈路速率的不斷提高,傳統(tǒng)的流量統(tǒng)計方式已經(jīng)難以滿足高速提取、實時處理的需求。因此,本文在研究NetFlow實現(xiàn)機(jī)制的基礎(chǔ)上,提出了一種基于硬件實現(xiàn)的網(wǎng)絡(luò)流量統(tǒng)計系統(tǒng),本系統(tǒng)一方面充分利用了硬件本身處理速度的優(yōu)勢,采用硬件實現(xiàn)流量的采集處理,滿足系統(tǒng)對高速處理性能的要求,另一方面,采用外部存儲器件,解決數(shù)據(jù)流統(tǒng)計信息存儲空間不足的問題,從而使得系統(tǒng)的整體性能有了很大提升。
典型NetFlow 是思科公司提出的一種基于Cisco IOS的應(yīng)用,主要用于網(wǎng)絡(luò)流量的監(jiān)測統(tǒng)計和分析,目前已成為業(yè)界的標(biāo)準(zhǔn),它動態(tài)地收集網(wǎng)絡(luò)中的流量信息,并以特定的格式將收集的信息發(fā)往分析服務(wù)器進(jìn)行統(tǒng)計分析[5],如圖1所示?;贜etFlow 的應(yīng)用系統(tǒng)根據(jù)流記錄的五元組信息以及Flow 的開始和結(jié)束時間、包數(shù)、字節(jié)數(shù)等信息進(jìn)行綜合分析,可獲取大量有用信息,如某段時間內(nèi)網(wǎng)絡(luò)的流量大小、協(xié)議分布、流量用戶排行和應(yīng)用排行、用戶之間的詳細(xì)通話信息、以及各種應(yīng)用的流量隨時間變化的趨勢等等。通過較長時間的數(shù)據(jù)采集分析[6],就可以了解整體網(wǎng)絡(luò)流量和某些重要應(yīng)用的帶寬占用比例和變化趨勢等信息,為網(wǎng)絡(luò)規(guī)劃和升級提供參考依據(jù)。
圖1 基于NetFlow 流量統(tǒng)計結(jié)構(gòu)框架
NetFlow 技術(shù)作為業(yè)界流量統(tǒng)計的標(biāo)準(zhǔn)之一,已集成到大多數(shù)的網(wǎng)絡(luò)設(shè)備中 (交換機(jī)/路由器等),具有配置方便安裝簡單的優(yōu)點,其采集到的流量信息可以作為網(wǎng)絡(luò)規(guī)劃、管理和流量計費(fèi)與病毒檢測的依據(jù)。現(xiàn)有的交換機(jī)或路由器本身承擔(dān)著網(wǎng)絡(luò)數(shù)據(jù)報文路由轉(zhuǎn)發(fā)任務(wù),NetFlow功能的開啟會極大的占用設(shè)備CPU 計算能力,嚴(yán)重影響設(shè)備的性能。為緩解處理器的壓力,一般采用抽樣技術(shù)對網(wǎng)絡(luò)流量進(jìn)行抽樣輸出,不可避免會導(dǎo)致部分流量統(tǒng)計信息的丟失??紤]到實時上報的數(shù)據(jù)量較大,傳輸和存儲相關(guān)信息的工作量較大,需要有專門的數(shù)據(jù)分析統(tǒng)計和存儲數(shù)據(jù)庫用于實時分析和維護(hù)歷史統(tǒng)計[7]。若采用軟件實現(xiàn)上述功能,將大大占用設(shè)備本身的CPU 和存儲資源,嚴(yán)重影響流統(tǒng)計的速率和準(zhǔn)確率。
為了提高流統(tǒng)計的速率和改善流統(tǒng)計的準(zhǔn)確率,本文提出一種基于FPGA 實現(xiàn)的網(wǎng)絡(luò)流量采集系統(tǒng)[8],該系統(tǒng)基于Xilinx公司的FPGA 實現(xiàn),用VHDL語言完成協(xié)議解析、流信息提取和表項存儲管理等處理,并采用外部DDRII存儲器作為外部傳輸設(shè)備,F(xiàn)PGA 直接控制DDRII存儲器[9],用于存儲提取的流統(tǒng)計信息。FPGA 作為本系統(tǒng)設(shè)計中的重點和難點,基于流水線處理方式,將流量采集系統(tǒng)劃分為協(xié)議解析模塊、流信息提取模塊、時間戳標(biāo)記模塊、哈希處理模塊、流信息匹配模塊、流表項管理模塊和NetFlow 格式封裝輸出模塊,如圖2所示。
圖2 硬件FPGA 處理流程
(1)流信息提取模塊
該模塊在數(shù)據(jù)包中提取流統(tǒng)計需要的各種信息,主要包括:源IP地址 (Src IP Address)、目的IP地址 (Dst IP Address)、源端口號 (Src Port)、目的端口號 (Dst Port)、協(xié)議號 (Protocol)、接口號 (Interface)、TCP 標(biāo)志 (TCP Flags)、Tos(服務(wù)類型)、包計數(shù) (Packet Count)、字節(jié)計數(shù) (Byte Count)等。流信息提取模塊只對數(shù)據(jù)提出相關(guān)信息,并不影響原數(shù)據(jù)流設(shè)備中的正常轉(zhuǎn)發(fā)處理,提出的信息送至后續(xù)模塊繼續(xù)進(jìn)行處理。
(2)時間戳標(biāo)記模塊
該模塊在流信息中加入數(shù)據(jù)包到達(dá)的時間標(biāo)簽,為后續(xù)的流超時判定提供依據(jù),計數(shù)精度為毫秒,系統(tǒng)設(shè)定的時間戳長度是32bit,它的溢出時間是接近50 天,所以完全可以滿足時間精度的要求。
(3)哈希處理模塊
本設(shè)計中將五元組信息作為哈希運(yùn)算的關(guān)鍵詞,運(yùn)算結(jié)果用作存儲統(tǒng)計信息的地址。CRC[10]計算利用FPGA 內(nèi)部并行計算的優(yōu)勢,可以實現(xiàn)快速計算,利用FPGA 實現(xiàn)完全可以忽略計算時延。對104bit五元組信息在FPGA 內(nèi)部采用并行D64-CRC24算法,實現(xiàn)兩個周期計算出哈希地址,利用該哈希值作為寫內(nèi)存表項的地址,可以很簡單的實現(xiàn)流表項的存儲和更新[11]。
如圖3所示,指數(shù)曲線表示哈希長度為104 (五元組長度),流表項空間占用率分別為25%,35%,45%和50%時查表次數(shù)和沖突概率的指數(shù)關(guān)系,在占用表項為25%時,如果采用8 次查表,則可以滿足沖突概率低于1x10-4,可以保證流統(tǒng)計信息最大輸出速率要求。
圖3 多次查找的哈希沖突概率
(4)流信息匹配模塊
該模塊通過FPGA DDRII控制器接口與片外存儲器進(jìn)行數(shù)據(jù)的交互,實現(xiàn)流表項空間的遍歷查找功能。狀態(tài)遍歷流程如圖4所示。
具體步驟如下:
步驟1 將外部存儲器中遍歷的初始地址清零;
步驟2 檢查外部存儲器中遍歷地址上存儲的有效指示位,判斷是否具備被輪詢檢測表項的條件。如果不具備,則執(zhí)行步驟3,否則就執(zhí)行步驟4;
圖4 狀態(tài)遍歷流程
步驟3 將指示位無效的流統(tǒng)計地址輸出;
步驟4 檢查外部存儲器遍歷地址是否已全部被遍歷,如果是,執(zhí)行步驟6,否則執(zhí)行步驟5;
步驟5 將外部存儲器的遍歷地址順序移至下一個未被檢測的地址;
步驟6 將有效流的數(shù)目輸出給格式封裝模塊。
(5)流表項管理模塊
流表項管理模塊負(fù)責(zé)對各類表項進(jìn)行記錄上報判定,及時更新釋放超時表項的空間以容納新表項。根據(jù)由數(shù)據(jù)流五元組哈希得到的地址,從存儲器中讀出表項,再將該數(shù)據(jù)流的五元組與該表項中存儲的五元組信息進(jìn)行比較,根據(jù)比較結(jié)果對存儲器中的表項進(jìn)行更新或超時刪除等操作。表項管理處理流程如圖5所示。
圖5 流表項管理操作流程
具體步驟如下:
步驟1 判斷從哈希處理模塊輸出的流記錄中的五元組信息是否與表項空間中的表項地址上的表中的五元組匹配,如果是,執(zhí)行步驟3,否則執(zhí)行步驟2;
步驟2 檢查表項空間中的表項地址上是否都已經(jīng)建立了流記錄表 (表項空間是否已經(jīng)被占滿),如果是,執(zhí)行步驟6,否則執(zhí)行步驟7;
步驟3 通過從流單元表中的提取的時間戳判斷需要匹配的流記錄表是否已經(jīng)超時,如果是,執(zhí)行步驟4,否則執(zhí)行步驟5;
步驟4 刪除超時的流記錄信息,并將該條流信息送至格式封裝模塊進(jìn)行封裝;
步驟5 對流記錄表中的包長,包個數(shù)及時間戳等信息進(jìn)行更新;
步驟6 刪除表項記錄空間中的一條流記錄表項,并將刪除的該流記錄表信息送至格式封裝模塊封裝輸出;
步驟7 在表項空間中未被占用的地址上為新流創(chuàng)建流記錄表。
(6)格式封裝輸出模塊
該模塊的輸出參照NetFlowV5信息格式封裝,輸出時外加UDP頭和IP 頭發(fā)送給指定服務(wù)器進(jìn)行分析處理。輸出信息格式封裝如圖6所示。
圖6 輸出流格式封裝
流記錄信息包括NetFlow 頭信息和流記錄信息。頭信息包含版本號、流記錄數(shù)、系統(tǒng)時間、流序列號等信息;流記錄信息包 含 五 元組信息 (sip、dip、sport、dport、pro)、接口號、Tos和流中報文個數(shù)等信息。
為了對本文所提出的設(shè)計方案進(jìn)行功能和性能驗證,我們采用專用網(wǎng)絡(luò)測試儀 (斯博倫TestCenter3.61)進(jìn)行實際發(fā)包測試,采用逐步增大測試流數(shù)目的方法測試本系統(tǒng)在處理不同流數(shù)目情況下的識別率。通過測試儀分別模擬4個數(shù)據(jù)源見表1。
表1 測試流介紹
采用以上4種數(shù)據(jù)源分別對軟件實現(xiàn)的流識別系統(tǒng)和本設(shè)計實現(xiàn)的流識別系統(tǒng)進(jìn)行對比測試,測試結(jié)果如圖7所示。
圖7 性能測試結(jié)果
從圖6中看以看出,軟件系統(tǒng)的流識別率隨著測試流數(shù)目的增大急劇下降,本系統(tǒng)的流識別率隨著測試流數(shù)目的增大稍微下降,流識別的準(zhǔn)確率比軟件實現(xiàn)的識別率最大高出了37%。
測試分析結(jié)果表明,由于軟件實現(xiàn)是基于串行處理的,識別率急劇下降主要是由于處理能能力的不足導(dǎo)致的;本系統(tǒng)實現(xiàn)是基于硬件并行處理的,流識別率的稍微下降,說明系統(tǒng)的流處理能力不是瓶頸,流識別率下降的根本原因是產(chǎn)生了哈希沖突。通過以上分析我們得出以下結(jié)論,本系統(tǒng)在處理能力和流識別率上都有很大提高。
傳統(tǒng)的流統(tǒng)計系統(tǒng)一般都是基于軟件實現(xiàn)流量采集功能的,采集流量信息所帶來的系統(tǒng)開銷會消耗大量的處理器資源,導(dǎo)致系統(tǒng)處理系能急劇下降。本文研究了Netflow的實現(xiàn)機(jī)制,提出了一種基于硬件實現(xiàn)的流量采集系統(tǒng)。該系統(tǒng)充分發(fā)揮了硬件實現(xiàn)在處理性能上的優(yōu)勢,彌補(bǔ)了軟件實現(xiàn)處理能力的不足;采用全流統(tǒng)計模式,信息統(tǒng)計的更加精細(xì),彌補(bǔ)了采用抽樣統(tǒng)計容易造成信息偏差的不足;采用外部存儲器,使得存儲空間相當(dāng)豐富,采用哈希算法,優(yōu)化了表項匹配速率。所以,用本系統(tǒng)實現(xiàn)流量采集功能,可以滿足對現(xiàn)有網(wǎng)絡(luò)進(jìn)行流量統(tǒng)計的需求。
[1]CHEN Shuhui,SU Jinshu.Protocol identification research based on content analysis[J].Journal of National University of Defense Technology,2008,30 (4):82-87 (in Chinese).[陳曙暉,蘇金樹.基于內(nèi)容分析的協(xié)議識別研究 [J].國防科技大學(xué)學(xué)報,2008,30 (4):82-87.]
[2]Bilge L,Balzarotti D,Robertson W,et al.Disclosure:Detecting botnet command and control servers through large-scale NetFlow analysis[C]//Proceedings of the 28th Annual Computer Security Applications Conference. ACM, 2012:129-138.
[3]Lo C H,Peng W C,Chen C W,et al.Carweb:A traffic data collection platform [C]//9th International Conference on Mobile Data Management,2008:221-222.
[4]Wagner C,Engel T.Detecting anomalies in netflow record time series by using a kernel function [G].LNCS 7279:Dependable Networks and Services.Berlin:Springer Berlin Heidelberg,2012:122-125.
[5]MENG Xiaobei.Network flux collection technique base on Net-Flow and its application [J].Journal of Wuhan University of Technology,2009,31 (23):155-158 (in Chinese). [孟曉蓓.基于NetFlow 的網(wǎng)絡(luò)流量采集技術(shù)和應(yīng)用 [J].武漢理工大學(xué)學(xué)報,2009,31 (23):155-158.]
[6]CHENG Guang,TANG Yongning.Estimation algorithms of the flow number from sampled packets on approximate approaches[J].Journal of Software,2013,24 (2):255-265 (in Chinese).[程光,唐永寧.基于近似方法的抽樣報文流數(shù)估計算法 [J].軟件學(xué)報,2013,24 (2):255-265.]
[7]QI Kaiyuan,ZHAO Zhuofeng,F(xiàn)ANG Jun,et al.Real-time processing for high speed data stream over larger scale data[J].Chinese Journal of Computers,2012,35 (3):477-490(in Chinese).[亓開元,趙卓峰,房俊,等.針對高速數(shù)據(jù)流的大規(guī)模數(shù)據(jù)實時處理方法 [J].計算機(jī)學(xué)報,2012,35(3):477-490.]
[8]ZHANG Xiaochu,YANG Ruijun,WU Weihang,et al.Design and implementation of internet traffic collection and analysis system [J].Computer Engineering,2012,38 (3):321-325 (in Chinese).[張曉初,楊瑞君,吳偉航,等.互聯(lián)網(wǎng)流量采集分析系統(tǒng)設(shè)計與實現(xiàn) [J].計算機(jī)工程,2012,38(3):321-325.]
[9]ZHOU Liang,WANG Juan,HU Changhua,et al.Design of DDR2SDRAM controller based on Verilog HDL [J].Journal of Hefei University of Technology (Nature Science Edition),2010,33 (8):1253-1256 (in Chinese).[周亮,王娟,胡暢華,等.基于Verilog HDL 的DDR2SDRAM 控制器設(shè)計[J].合 肥 工 業(yè) 大 學(xué) 學(xué) 報 (自 然 科 學(xué) 版),2010,33 (8):1253-1256.]
[10]DU Rui,ZHANG Weigong,DENG Zhe,et al.Parallel CRC algorithm design and implementation of new bus [J].Computer Engineering and Design,2013,34 (1):131-135 (in Chinese).[杜瑞,張偉功,鄧哲,等.新型總線中并行CRC算法的設(shè)計與實現(xiàn) [J].計算機(jī)工程與設(shè)計,2013,34 (1):131-135.]
[11]Mishra T,Sahni S.PETCAM-A power efficient TCAM architecture for forwarding tables [J].IEEE Transactions on Computers,2012,61 (1):3-17.
[12]Ma G L,Tang W.Efficient intrusion detection for high-speed networks [J].Applied Mechanics and Materials,2013,263:2915-2919.