新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > NetFlow流量采集與聚合的研究實(shí)現(xiàn)

NetFlow流量采集與聚合的研究實(shí)現(xiàn)

作者: 時間:2009-07-10 來源:網(wǎng)絡(luò) 收藏
0 引 言
近年來,隨著信息技術(shù)的飛速發(fā)展,越來越多的企業(yè)和大型機(jī)構(gòu)在其內(nèi)部構(gòu)建基于網(wǎng)絡(luò)的應(yīng)用,復(fù)雜程度及對網(wǎng)絡(luò)的依賴程度日益提高,各種各樣的網(wǎng)絡(luò)問題也隨之產(chǎn)生。網(wǎng)絡(luò)監(jiān)測是網(wǎng)絡(luò)管理和系統(tǒng)管理的一個重要組成部分,網(wǎng)絡(luò)數(shù)據(jù)為網(wǎng)絡(luò)的運(yùn)行和維護(hù)提供了重要信息。這些數(shù)據(jù)對網(wǎng)絡(luò)的資源分布、容量規(guī)劃、服務(wù)質(zhì)量分析、錯誤監(jiān)測與隔離、安全管理都十分重要。因此,對網(wǎng)絡(luò)及相關(guān)情況實(shí)施科學(xué)合理的監(jiān)管和深入分析,成為網(wǎng)絡(luò)管理的重要環(huán)節(jié)之一;同時,它也為網(wǎng)絡(luò)問題提供有效解決方案及進(jìn)行網(wǎng)絡(luò)的規(guī)劃。
目前的網(wǎng)絡(luò)流量分析方法主要有基于SNMP、基于實(shí)時抓包分析、基于網(wǎng)絡(luò)探針和基于:Flow技術(shù)等幾種。基于Flow技術(shù),目前已得到大多數(shù)網(wǎng)絡(luò)設(shè)備廠商的支持,提供了網(wǎng)絡(luò)監(jiān)測方面非常完善的應(yīng)用?;?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/NetFlow">NetFlow的流量方法可以獲得包括源/目的主機(jī)IP、應(yīng)用協(xié)議類型、源/目的端口等詳細(xì)信息,根據(jù)這些信息就可以對協(xié)議(應(yīng)用)、主機(jī)IP(用戶)以及AS域等進(jìn)行統(tǒng)計(jì)排行和趨勢分析,也可對異常流量進(jìn)行監(jiān)測分析。此外,避免了大量部署和配置監(jiān)測探針的復(fù)雜過程,使得網(wǎng)絡(luò)性能分析更加全面、靈活且簡單易用。

l NetFlow技術(shù)
NetFlow是Cisco公司提出的基于Cisco IOS系統(tǒng)的一種應(yīng)用。它用于提供網(wǎng)絡(luò)設(shè)備上數(shù)據(jù)包形成的“流”的統(tǒng)計(jì)信息,并逐漸演變成為網(wǎng)絡(luò)流量統(tǒng)計(jì)和安全分析的主要手段。目前利用:NetFlow可以實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)測,用戶應(yīng)用監(jiān)控,網(wǎng)絡(luò)安全,網(wǎng)絡(luò)規(guī)劃以及流量計(jì)費(fèi)等功能。
NetFlow有兩個核心的組件:NetFlow緩存,存儲IP流信息;NetFlow的數(shù)據(jù)導(dǎo)出或傳輸機(jī)制,NetFlow利用此機(jī)制將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)管理器。
1.1 流(Flow)的定義
一條流由一個源主機(jī)與一個目的主機(jī)間的單方向傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)包組成,其中,源和目的主機(jī)由各自的IP地址和端口號來標(biāo)識。一條流一般由以下七個關(guān)鍵字段惟一標(biāo)識:
?源地址
?目的地址
?源端口號
?目的端口號
?第3層協(xié)議類型(如TCP,UDP)
?服務(wù)類型
?入邏輯接口標(biāo)示符
1.2 流(Flow)格式
啟動NetFlow的設(shè)備會輸出其緩沖區(qū)里的信息,以UDP包的形式傳送給NetFlow流量器。包由包頭和若干流記錄組成。常用的NetFlOW輸出包格式共有5個版本,它們分別是Version 1,Version 5,Ver-sion 7,Version 8和Version 9,其中V5是最為流行和成熟的版本,目前得到最廣泛的使用。最新的V9已經(jīng)被列入IETF的標(biāo)準(zhǔn),并有待進(jìn)一步研究和規(guī)范。V9采用了模板技術(shù)與流記錄相結(jié)合的方式,使NetFlow輸出包的格式具有動態(tài)和可擴(kuò)展的特性。NetFlow V9的輸出格式主要由三部分構(gòu)成:
(1)包頭部(Packet Header):包括版本號、包中數(shù)據(jù)流總數(shù)、系統(tǒng)時間、數(shù)據(jù)流序列、數(shù)據(jù)源ID等。
(2)模板流集(Template FlowSet):包含一個或多個模板,模板是用于描繪數(shù)據(jù)流中各個數(shù)據(jù)段的含義,可以在路由器上根據(jù)需要自行設(shè)置模板。
(3)數(shù)據(jù)流集(。Data FlowSet):包含多個數(shù)據(jù)流,每個數(shù)據(jù)流集通過模板ID對應(yīng)某個模板。數(shù)據(jù)采集端根據(jù)模板來解析數(shù)據(jù)流。

本文引用地址:http://2s4d.com/article/188834.htm

2 NetFlow流量采集與聚合
2.1 系統(tǒng)概述

根據(jù)NetFlow的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了一個網(wǎng)絡(luò)流量監(jiān)測系統(tǒng),其系統(tǒng)結(jié)構(gòu)如圖1所示。

當(dāng)NetFlow采集器接收到從路由器發(fā)送來的Net-Flow數(shù)據(jù)包后,采集器將進(jìn)行數(shù)據(jù)包的解析和數(shù)據(jù)流聚合,形成多種適合統(tǒng)計(jì)分析需要的數(shù)據(jù),再分門別類地存入數(shù)據(jù)庫。分析器則根據(jù)前端不同的查詢請求,依照一定的查詢策略從數(shù)據(jù)庫不同的表中提取相應(yīng)數(shù)據(jù)進(jìn)行分析展現(xiàn)。
本系統(tǒng)的后臺采集器和聚合處理部分用JAVA編寫實(shí)現(xiàn),數(shù)據(jù)庫采用開源的MySQL,而NetFlow流量分析利用Tomcat服務(wù)器通過Web方式展現(xiàn),前臺部分用JSP編寫實(shí)現(xiàn)。工作的重點(diǎn)即在于數(shù)據(jù)采集、數(shù)據(jù)聚合以及數(shù)據(jù)庫設(shè)計(jì)部分。
2.2 NetFlow流采集
2.2.1 采集器的設(shè)計(jì)

數(shù)據(jù)采集模塊是整個系統(tǒng)的基礎(chǔ)。由于。NetFlow數(shù)據(jù)流量非常大,為防止丟包系統(tǒng)采用緩沖區(qū)和線程池結(jié)構(gòu),如圖2所示。

當(dāng)采集器監(jiān)聽到一個NetFlow數(shù)據(jù)包時,將該數(shù)據(jù)包接收到緩沖區(qū),并從包解析線程池中取出一個線程,根據(jù)相應(yīng)的NetFlow的報文格式解析出數(shù)據(jù)流信息,將該原始流信息放入緩沖區(qū),然后將原始流存入數(shù)據(jù)庫,同時采用相應(yīng)的聚合策略聚合原始流生成聚合流并存入相應(yīng)的數(shù)據(jù)庫中。
2.2.2 NetFlow數(shù)據(jù)包接收與解析
由于NetFlow數(shù)據(jù)是借助于UDP數(shù)據(jù)報來傳送,因而倘若后續(xù)的處理速度跟不上數(shù)據(jù)包到達(dá)的速度,則會出現(xiàn)嚴(yán)重丟包的現(xiàn)象。為解決高速大流量數(shù)據(jù)的及時接收及較低丟包率問題,采用了多線程的方式來實(shí)現(xiàn)。用獨(dú)立的兩個線程分別完成數(shù)據(jù)接收和解析操作:接收數(shù)據(jù)的線程在特定的IP地址監(jiān)聽相應(yīng)的UDP端口,接收到的數(shù)據(jù)暫存在緩沖區(qū)中;解析線程從緩沖區(qū)提取數(shù)據(jù),按照相應(yīng)的報文格式進(jìn)行解析。由于接收線程和解析線程共享同一個臨界資源,即接收的緩沖區(qū),需要對臨界資源進(jìn)行加鎖操作。
下面為部分實(shí)現(xiàn)多線程采集的JAVA代碼實(shí)例,其中packet為接收的NetFlow數(shù)據(jù)包對象,linkedLst為linkedList容器,利用synchronized進(jìn)行線程間同步。
(1) 接收線程



上一頁 1 2 下一頁

關(guān)鍵詞: NetFlow 流量 采集

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉