999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

NetFlow流量采集與存儲技術的研究實現

2008-01-01 00:00:00徐同閣
計算機應用研究 2008年2期

摘要:為解決高速大流量網絡的流量監測與分析問題,提出了一套基于NetFlow的流量采集與存儲方案,設計了多線程與雙鏈表的NetFlow數據采集機制,有效提高了數據采集效率和可靠性。此外,在存儲原始NetFlow數據的基礎上,設計了一套NetFlow流量的三級聚合和存儲方案。基于此方法可對紛繁復雜的原始流量信息進行有效整理,為前端靜態#65380;動態流量分析提供合理高效的數據支持。

關鍵詞:NetFlow; 流量采集; 雙鏈表; 流量聚合; 時間粒度

中圖分類號:TP393.09文獻標志碼:A

文章編號:1001-3695(2008)02-0559-03

近年來,隨著技術的發展和企業大量業務的需要,構建在網絡上的應用越來越多,其復雜程度及對網絡的依賴程度日益提高,各種各樣的網絡問題也隨之產生。對于網絡這樣龐大的復合體,解決網絡問題的關鍵在于問題的定位。因此,對網絡流量及相關情況實施科學合理的監管和深入分析,成為網絡管理的重要環節之一;同時,它也是為網絡問題提供有效解決方案及進行網絡規劃的重要手段之一。

目前的網絡流量分析方法主要有基于SNMP#65380;基于實時抓包分析#65380;基于網絡探針和基于flow技術等幾種。NetFlow是Cisco公司在1996年開發出的技術,它既是一種交換技術(NetFlow交換),也是一種流量分析技術。其版本5是到目前為止使用最廣泛的版本。基于NetFlow的流量采集方法可以獲得包括源/目的主機IP#65380;應用協議類型#65380;源/目的端口等詳細信息,根據這些信息就可以對TopN協議(應用)#65380;TopN主機IP(用戶)以及TopN AS域等進行統計排行和趨勢分析,同時也可對異常流量進行監測分析。另外,基于NetFlow的采集方法是被動式的,因而不會向被測網絡增加額外的流量負荷,這也是其優點之一。

1問題的提出

對網絡流量進行監控分析,其核心問題就是如何對采集來的數據進行歸納整理,尤其針對高速大流量網絡環境所產生的海量數據。有效的數據整理是進行全面流量統計分析的基礎,也是提高系統性能的手段。

本文針對高速大流量網絡環境的數據處理進行研究。這里的高速大流量網絡環境是指有100~500 Mbps左右的實際流量和幾十萬臺活動主機的網絡。本文所測試的網絡環境是某部委的核心骨干網,該網絡具有200 Mbps左右的實際流量,且網絡中的交換設備絕大多數都是Cisco路由器,便于筆者采用基于NetFlow的方法進行流量采集。

高速大流量網絡的特點對流量的采集#65380;數據存儲組織以及分析展現都提出了較大的挑戰。主要體現在以下幾方面:

a) 高速流量,接收要及時。經實驗觀測,被測網絡繁忙時1 h的NetFlow流條數可達百萬條。由于其采用不可靠的UDP方式發送數據,采集模塊若不能及時接收并處理如此巨大的數據量,必定產生丟包現象。

b) 原始信息復雜,需有效整理。由于NetFlow數據流所含信息比較詳細,要進行細致的統計分析就需要對原始NetFlow數據流進行有效的分類整理,提取有用信息,這給數據處理和存儲組織帶來了一定難度。

c) 歷史數據量巨大,查詢不便。為了分析流量走勢,就需要保存大量的歷史數據。若使用諸如MySQL這種數據庫表容量受文件大小所限的數據庫作為存儲數據庫,就可能出現所需統計的數據分散存儲在多個表中的現象,從而導致跨表查詢,給操作帶來不便,也降低了系統效率。

本文結合NetFlow的數據特點和實際應用需要,提出了一套網絡流量采集和存儲方案,并基于此方案實現了一個基于NetFlow的#65380;可支持高速大流量網絡環境的流量分析系統。

2流量采集與存儲組織

2.1系統概述

基于以上一些問題,筆者設計了如圖1所示的系統結構。

在路由器上開啟NetFlow流量采集功能后,UDP形式的NetFlow數據將被發送到本系統的NetFlow采集器中,并進行數據包的解析,提取有用信息。多級聚合處理模塊負責對提取的原始信息進行分級聚合整理,形成多種適合統計分析需要的數據,再分門別類地存入數據庫。分析器則根據前端不同的查詢請求,依照一定的查詢策略從數據庫不同的表中提取相應數據進行分析展現。

本系統的后臺采集器和聚合處理部分用C++編寫實現,運行在Linux平臺上,數據庫采用開源的MySQL,而NetFlow流量分析利用Tomcat服務器通過Web方式展現,前臺部分用JSP編寫實現。本文工作的重點即在于數據采集#65380;多級聚合以及數據庫表結構設計部分。

2. 2數據采集

2.2.1采集原理和雙鏈表緩沖存儲結構

路由器NetFlow cache內過期的NetFlow數據以UDP包的形式不斷向采集器的指定端口發送,每個UDP包攜帶n條flow記錄,如圖2所示。

為解決高速大流量數據的及時接收問題,本文采用了多線程的方式來實現。用獨立的兩個線程分別完成數據接收和解析操作,偽代碼如圖3所示。

由于接收線程和解析線程共享同一個臨界資源,即接收到的數據鏈表,因而需要對臨界資源進行加鎖操作。為了在解析線程獲得鎖的同時確保接收線程仍在工作,筆者設計了一個雙鏈表的緩沖存儲結構,即解析線程獲得鎖后,首先將接收鏈表備份出來,然后將其置空,隨即釋放鎖繼續接收,再進行鏈表解析。這種雙鏈表緩沖結構的優點是在數據解析的過程中確保數據接收的永不間斷,有效提高了流量采集的可靠性。

2.2.2優先隊列處理機制

經過對NetFlow原始流的觀察發現,在一些網絡環境中,少數原始流的流量/包數之和占據了整體流量/包數的絕大部分,而大量的原始流卻只有很少的流量/包數,這種現象被稱為80-20現象。該現象符合少部分用戶占用絕大部分帶寬的實際情況,具有通用性。對于流量趨勢分析來說,大量的小流量NetFlow記錄會極大增加系統的處理量#65380;降低系統效率。

基于上述問題,本文提出在原始流聚合入庫操作前加入優先隊列(priority queue)處理機制,將原始流按流量降序排列依次執行后續操作,直到入庫的flow總流量達到全部流量的一定比例(如預先設定95%)時停止入庫,將未入庫的記錄丟棄。由實驗可見,優先隊列的引入可以在較大程度上減少預處理的數據量,同時也能基本保證流量不丟失。表1所示即為實驗中不同入庫比例對flow的流縮減比率。

2.3流量聚合與數據存儲

根據NetFlow的數據特點,網絡流量分析可從靜態和動態兩個角度進行。靜態分析主要是指對流量在某個時間段內的主機#65380;應用協議等構成情況進行的分析;動態分析則是指隨時間推移,對某應用協議或某端口流量的變化趨勢進行的分析。

2.3.1數據處理總體策略

對高速大流量網絡進行流量趨勢的動態分析就需要大量歷史數據作為支撐。針對選用的MySQL數據庫而言,若單表存儲過多記錄,可能導致查詢效率的明顯降低;若數據存儲得太過分散又可能導致經常性的跨表查詢,同樣影響效率。可見,為滿足動態分析的需要,必須將原始流先進行壓縮整理,再以較為合理的存儲形式保存在數據庫中。目前的靜態分析主要以新采集的數據作為分析對象,本文設計了如圖4所示的數據處理總體策略,通過兩個并發線程分別生成靜態分析和動態分析所需的數據。

2.3.2詳細流量存儲設計

靜態構成分析需要按源/目的主機#65380;應用協議及端口等規則進行分類統計#65380;流量構成和TopN排行等,因而需從原始流中提取相應信息。根據從UDP包解析出來的原始流信息,創建了如下格式的詳細流結構體,包含有導入詳細流表的全部數據信息。

struct flow5_t {unsigned char srcaddr[4];/* source IP address */

unsigned char dstaddr[4]; /* destination IP address */

unsigned short input_if; /* index of input interface */

unsigned short output_if;/* index of output interface */

unsigned int dpkts;/* packets in flow */

unsigned int doctets; /* octets in flow */

unsigned int fuptime; /* uptime at start of flow */

unsigned int luptime; /* uptime at end of flow */

unsigned short srcport; /* source port */

unsigned short dstport; /* destination port */

char prot; /* IP protocol */

};

經實際測量發現,被測網絡流量較大時每天采集的flow數量可達百萬條,MySQL數據庫單表記錄數則應盡量小于200萬條,以便保證較高的查詢效率。因而本文設計每天一張詳細流表來保存流經一個路由器(采集點)的原始流記錄,以供靜態分析時進行數據查詢。

2.3.3分級聚合策略

對于動態分析,本文設計了一套分級流量聚合策略來滿足流量趨勢分析時的數據查詢。所謂流量聚合,是指對符合NetFlow數據格式的原始流記錄根據一定條件進行流量合并,實現多條流合并為一條的過程,以實現原始流的壓縮整理。流量聚合有三個關鍵要素:聚合條件#65380;聚合項和時間粒度。滿足相同聚合條件和時間粒度的流進行流量疊加,并保留聚合項(往往聚合條件屬于聚合項的一部分)。

基于上述聚合思想,本文提出了三個時間粒度(5#65380;30 min和3 h)的聚合方案,并通過內存級流量聚合與DB級流量聚合相結合的策略來實現三個粒度的聚合,這就是所謂的分級流量聚合策略。由于內存級的聚合操作是在實時采集到原始流后立即執行的,為加快聚合條件的匹配速度以適應采集速度,筆者在內存中采用了hash表的存儲結構。分級聚合策略如圖5所示。

1) 內存級聚合

(1) 聚合流結構設計

如圖5所示,內存級聚合實現了從原始流到5 min時間粒度聚合流的轉換。為使查詢更加方便快捷,本文又設計了兩種聚合流結構,以分別滿足基于三層協議(TCP/UDP)的較粗泛的流量趨勢分析和基于應用層協議端口的較細致的流量趨勢分析。它們采用了不同的聚合條件,其結構如下:

struct flow_aggr_total {

unsigned int timephase;/* time of phase */

unsigned short ifindex; /* index of interface */

short direction;/* in or out */

char ipprot;/* IP protocol */

unsigned int dpkts; /* packets in flow */

unsigned int doctets;/* octets in flow */

};

struct flow_aggr_detail {

unsigned int timephase; /* time phase */

unsigned short ifindex; /* index of interface */

short direction;/* flag of in or out */

unsigned short portnum; /* port number */

char* protname; /* protocol name */

unsigned int dpkts; /* packets in flow */

unsigned int doctets; /* octets in flow */

char ipprot;/* IP protocol */

};//注:加粗的四個字段為聚合條件組合,其他為聚合項

在這兩種結構體中,timephase表示一個5 min的整點時間段(如00:00:00~00:00:05),用于標志聚合流持續發生的時間段;ifindex表示原始流所流經的路由器接口號;direction表示從該接口流入還是流出的方向標志;ipprot表示傳輸層協議名稱,portnum表示應用層端口號,這兩個字段是區分兩種聚合結構的根本所在。聚合項都包括dpkts(流量)和doctets(包數),而基于應用層協議端口號的聚合流還記錄了protname(應用層協議名稱)以及其所對應的ipprot(傳輸層協議名稱)。

由此,當需要進行基于傳輸層協議的流量趨勢分析時,只需直接查詢flow_aggr_total結構體所對應的聚合流數據表即可,避免了從基于應用協議端口號的聚合表歸總統計的麻煩。

(2)hash表設計

對于一個新采集的原始流,必須能根據其所攜帶的聚合條件信息快速匹配是否已存在與其相同聚合條件的聚合流,若有則做流量疊加,若沒有則創建一條新的聚合流。Hash表具有從key快速映射到value的特點,這種特點對于實時性較高的內存級聚合非常有意義。Hash表在內存級聚合中的應用如圖6所示(以基于應用層協議端口號的聚合為例)。

在使用hash表實現流量聚合的過程中,hash函數的優劣將影響匹配過程的快慢。根據聚合條件四元組的特點,本文設計的hash函數算法如下:

class AggrDetailKey_HashFunc

{

public:

unsigned int operator()(const AggrDetail_Key key) const

{

return (unsigned int)(key.phasetime+(key.portnum % 300));

}

};

其中:key是聚合條件四元組結構體,包含四個聚合條件字段。由于key.phasetime(5 min時間段)是個大整數且重復率較高,而key.portnum(端口號)在1~10 000的變化較大,因而考慮以時間段為基礎,在其上疊加端口號對300的模值(300是5 min折合的秒數),可實現較好的離散效果。

2) DB級聚合

由圖5可見,除了5 min時間粒度的內存級聚合外,其他兩個時間粒度的聚合都是DB級聚合,通過每晚固定時間運行獨立的聚合程序來實現。這兩級聚合將根據當天新生成的5 min時間粒度聚合流分別創建30 min和3 h粒度的聚合流存儲到相應的聚合流表中。有了這三個時間粒度的聚合流,就可以在動態流量趨勢分析時,根據指定的時間段信息動態確定查詢哪個粒度的聚合流,以避開復雜且效率低下的跨表查詢。做法是當所需查詢的時間段出現跨表時,系統將自動查詢更粗一級時間粒度的聚合流表。

3) 聚合實驗結果

對被測網絡3 h左右所產生的共計292 307條原始流進行聚合。各級聚合結果如表2所示。

2.3.4聚合流量存儲設計

根據被測網絡的實際流量情況,本文設計了三級時間粒度聚合表的單表時間跨度,如表3所示。經實驗證明,這種時間跨度的設計不會發生MySQL單表記錄數過大從而導致查詢效率低下的現象,同時也不會由于時間跨度過小而出現過多的跨表情況。

3流量分析展現

在本系統多級聚合與存儲策略的支持下,系統數據庫為前端分析提供了充足且多樣化的數據準備,前端程序只需通過簡單的查詢語句即可得到所需的數據集,極大簡化了查詢的工作量。圖7即為被測網絡某路由器接口HTTP協議的流出流量趨勢實驗效果。由圖清晰可見每日流量呈周期性變化。

4結束語

本文基于NetFlow特點,提出了一套適用于高速大流量網絡的流量采集與多級聚合存儲方案。流量采集通過多線程和雙鏈表機制實現,有效提高了流量采集的可靠性。采集的原始流經內存級聚合和DB級聚合,并通過合理的分級存儲策略進行存儲組織,為前端的數據分析提供了全面支持。本系統在實際應用中取得了良好效果。下一步還將對采集和多級聚合存儲方案進行改進,以豐富系統對子網#65380;主機等信息的靜態統計分析功能,并力爭為異常流量分析提供較為完善的數據支持。

參考文獻:

[1]RFC 2722, Traffic flow measurement: architecture [S].1999.

[2]YANG Bo, LI Yi,CHEN Yue-hei,et al.A flow-based network monitoring system used for CSCW in design[C]//Proc ofthe 9th International Conference on Computer Supported Cooperative Work in Design.2005:503-507.

[3]王華. 軟件實現NetFlow流量處理的關鍵技術和算法[J]. 計算機工程, 2004, 30(增):232-233.

[4]袁梅宇. 高效率多線程網絡流量采集算法研究及實踐[J]. 昆明理工大學學報:理工版, 2006, 31(1):34-36.

[5]周韶澤, 邵力耕. 高速網絡環境下基于NetFlow的網絡監測系統設計[J]. 大連鐵道學院學報, 2005, 26(2):86-89.

[6]蔡偉祥,張凌,寧國寧. 流量采集在網絡性能監測與分析系統中的改進和實現[J]. 計算機工程, 2003, 29(15):58-59.

[7]徐川, 唐紅, 趙國鋒. 降低高速網絡流量測量器報文丟失率技術的研究[J]. 計算機工程, 2006, 32(16):115-117.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 国产 在线视频无码| 日韩欧美中文亚洲高清在线| 91精品专区| 99久久免费精品特色大片| 伊人无码视屏| 日本精品αv中文字幕| 欧美午夜在线视频| 久操线在视频在线观看| 一本大道AV人久久综合| 亚州AV秘 一区二区三区| 国产精品综合久久久| 丁香综合在线| 亚洲国产日韩欧美在线| 福利视频一区| 欧美日韩高清| 国产成年女人特黄特色毛片免| 亚洲精品免费网站| 在线亚洲精品福利网址导航| 亚洲天堂.com| 一级毛片不卡片免费观看| 一区二区理伦视频| 成人精品视频一区二区在线| 日韩天堂视频| 国产成人精品一区二区秒拍1o| 国产亚洲精久久久久久无码AV| 亚洲国产综合自在线另类| 国产精品香蕉在线观看不卡| 国产va在线观看| 精品中文字幕一区在线| 亚洲无码电影| 99久久精品久久久久久婷婷| 国产精品一老牛影视频| 欧美自拍另类欧美综合图区| 国产v精品成人免费视频71pao| 国产视频资源在线观看| 天天干天天色综合网| 一级成人a毛片免费播放| 女高中生自慰污污网站| 99精品久久精品| 一区二区偷拍美女撒尿视频| 久久99国产精品成人欧美| 日韩毛片在线播放| 中文字幕在线一区二区在线| 99精品热视频这里只有精品7| 国产粉嫩粉嫩的18在线播放91| 国产成人无码AV在线播放动漫| 久久精品一卡日本电影| 国产精品久久精品| 久久大香香蕉国产免费网站| 国产丝袜无码精品| 欧美亚洲一区二区三区在线| 欧美日韩国产精品综合| 日韩福利视频导航| 亚洲欧州色色免费AV| 亚洲天堂日韩在线| 国产天天射| 四虎国产永久在线观看| 亚洲首页在线观看| 狠狠亚洲婷婷综合色香| 国产日韩精品欧美一区灰| 国产不卡一级毛片视频| 国产日韩欧美在线视频免费观看| 久99久热只有精品国产15| 97久久免费视频| 老色鬼欧美精品| 国产福利免费在线观看| 婷五月综合| 色综合久久88| 免费国产高清精品一区在线| 中文字幕在线一区二区在线| 欧美黄色网站在线看| 中国国产高清免费AV片| 99在线观看精品视频| 亚洲黄色网站视频| 好吊日免费视频| 一本一道波多野结衣一区二区| 国内精品伊人久久久久7777人| 亚洲国产一区在线观看| 伊人色天堂| 亚洲人精品亚洲人成在线| 亚洲欧美一区在线| 久久精品中文字幕少妇|