2021-4-10 | 互聯(lián)網(wǎng)
隨著寬帶互聯(lián)網(wǎng)應(yīng)用的普及,互聯(lián)網(wǎng)用戶數(shù)量在不斷增加,各個領(lǐng)域的應(yīng)用也在逐步深入,網(wǎng)絡(luò)規(guī)模持續(xù)擴(kuò)展,網(wǎng)絡(luò)流量高速增長。尤其是P2P技術(shù)產(chǎn)生以來,互聯(lián)網(wǎng)網(wǎng)絡(luò)流量激增,對網(wǎng)絡(luò)的處理能力提出了更高的要求。同時,要合理、有效地疏導(dǎo)流量,必須對網(wǎng)絡(luò)流量進(jìn)行科學(xué)、細(xì)致的分析,通過流量分析可以有效地總結(jié)出網(wǎng)內(nèi)、網(wǎng)外流量比例,各區(qū)域用戶產(chǎn)生的流量大小,進(jìn)而對用戶使用習(xí)慣、各類應(yīng)用帶寬消耗情況等進(jìn)行分析,從而可以對不同區(qū)域用戶使用習(xí)慣、網(wǎng)內(nèi)資源建設(shè)方向等進(jìn)行有效的指導(dǎo)。不僅要依據(jù)數(shù)據(jù)的目的地址去疏導(dǎo)流量,還要明晰流量的來源和成分,區(qū)分流量類型,以精確地計算成本,合理分配IP地址數(shù)量和流量占用帶寬,使流量管理更加規(guī)范。
Netflow技術(shù)最早由Cisco公司研發(fā),首先被用于網(wǎng)絡(luò)設(shè)備對數(shù)據(jù)交換進(jìn)行加速,并可同步實現(xiàn)對高速轉(zhuǎn)發(fā)的IP數(shù)據(jù)流進(jìn)行測量和統(tǒng)計。經(jīng)過多年的技術(shù)演進(jìn),Netflow對流經(jīng)網(wǎng)絡(luò)設(shè)備的IP數(shù)據(jù)流進(jìn)行測量和統(tǒng)計的功能更加成熟,并成為當(dāng)今互聯(lián)網(wǎng)領(lǐng)域公認(rèn)的最主要的IP/MPLS流量分析、統(tǒng)計和計費(fèi)行業(yè)標(biāo)準(zhǔn)。Netflow技術(shù)能對IP/MPLS網(wǎng)絡(luò)的通信流量進(jìn)行詳細(xì)的行為模式分析和計量,并提供網(wǎng)絡(luò)運(yùn)行的詳細(xì)統(tǒng)計數(shù)據(jù)。
通過對某電信運(yùn)營商的網(wǎng)絡(luò)進(jìn)行改造,引入互聯(lián)網(wǎng)流量分析系統(tǒng),以互聯(lián)網(wǎng)流量數(shù)據(jù)為分析對象,實現(xiàn)以下功能:(1)精確判斷流量歸屬地;(2)精確統(tǒng)計流量類型;(3)精確區(qū)分流量成分;(4)以天為單位,對某一天的流量及以天為周期單位的時間段產(chǎn)生的流量進(jìn)行查詢。
1流量分析系統(tǒng)設(shè)計
由于Netflow僅能宏觀地對網(wǎng)絡(luò)流量進(jìn)行分析和監(jiān)控,無法滿足精細(xì)化管理的要求。鑒于此,需要建立網(wǎng)絡(luò)流量分析系統(tǒng)。
首先在省級主干路中引入流控設(shè)備,對全省網(wǎng)絡(luò)流量進(jìn)行控制。通過建立一臺Linux服務(wù)器(CMserver),在流控設(shè)備中將流量鏡像至此服務(wù)器的數(shù)據(jù)庫中,便可采集到全網(wǎng)的流量明細(xì),進(jìn)而通過存儲過程將各種需要分析的數(shù)據(jù)進(jìn)行聚合成表,便可對全網(wǎng)流量進(jìn)行實時監(jiān)控分析。
本系統(tǒng)包括4個功能模塊,分別是數(shù)據(jù)采集模塊、接口程序模塊、數(shù)據(jù)庫模塊、頁面呈現(xiàn)模塊。
1.1數(shù)據(jù)采集模塊
要實現(xiàn)對流量源和目的地的分析,首先要進(jìn)行流量采集并存儲,采集的數(shù)據(jù)中要包含數(shù)據(jù)包的源地址、目的地址、數(shù)據(jù)包發(fā)送時間等信息。本系統(tǒng)采用NetflowV9版本進(jìn)行數(shù)據(jù)采集,需要對Netflow協(xié)議、待采集的路由器端口和數(shù)據(jù)采集存儲服務(wù)器等進(jìn)行配置。
由于需要分析的路由器端口數(shù)據(jù)量很大,而且分析目的主要為各方向流量數(shù)據(jù)比例,綜合考慮數(shù)據(jù)處理量和數(shù)據(jù)準(zhǔn)確性之后,將采集周期定為5分鐘,采樣比例定為1000:1,此時每5分鐘Netflow數(shù)據(jù)流約有30萬~40萬條,存儲Netflow數(shù)據(jù)流的文件大小約20~30MB。
在采集數(shù)據(jù)的端口選擇方面,既要采集所有流量數(shù)據(jù),保證數(shù)據(jù)的完整性;又要避免數(shù)據(jù)重復(fù)采集,以保證數(shù)據(jù)的準(zhǔn)確性。按照上述條件,選擇省級主干中路由器上行端口為流量采集端口,通過該端口既可以采集所有互聯(lián)網(wǎng)用戶訪問Internet的流量數(shù)據(jù),又不會發(fā)生流量數(shù)據(jù)重復(fù)采集情況。
為分析路由器端口的網(wǎng)絡(luò)流量數(shù)據(jù),必須將從路由器中送出的Netflow數(shù)據(jù)收集并存儲,以便進(jìn)一步的處理,所以需要配置Netflow采集存儲服務(wù)器。具體配置為2.4GHz四核CPU、2G內(nèi)存,使用Linux系統(tǒng),并安裝CiscoNetflowCollector(NFC)采集軟件。
1.2接口程序模塊
經(jīng)過采集,每5分鐘會輸出一個格式為XML的文件,文件數(shù)據(jù)分3部分:數(shù)據(jù)頭、模板部分、數(shù)據(jù)部分。NetflowV9的數(shù)據(jù)格式可以自定義,根據(jù)分析需要,定義數(shù)據(jù)模板主要包括我們關(guān)心的13個字段,分別為:源地址、目的地址、源端口號、目的端口號、入接口、出接口、協(xié)議、服務(wù)類型、流數(shù)量、報文數(shù)、字節(jié)數(shù)、開始時間、結(jié)束時間。每個字段使用“|”分開。
選用C++程序語言進(jìn)行數(shù)據(jù)的分析及入庫。程序語言完成的主要功能為按照字段定義進(jìn)行數(shù)據(jù)分列,并按要求建立數(shù)據(jù)表,然后將分析后的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中。原始數(shù)據(jù)每天自動生成一個文件夾,文件夾中每5分鐘生成一個數(shù)據(jù)文件,為了達(dá)到自動讀取數(shù)據(jù)的功能,采用“日期+時間”循環(huán)來自動讀取數(shù)據(jù)文件。
讀取數(shù)據(jù)文件對每行按照不同字段分列。由于每個數(shù)據(jù)文件的數(shù)據(jù)頭部分完全相同,而且不包含所要分析的數(shù)據(jù)信息,所以可以把數(shù)據(jù)頭部分跳過,然后根據(jù)每行數(shù)據(jù)的“|”將每個字段的數(shù)據(jù)進(jìn)行分列。
再根據(jù)各字段數(shù)據(jù)分析的需要,轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型,并與數(shù)據(jù)庫連接寫入數(shù)據(jù)庫中。
1.3數(shù)據(jù)庫模塊
作為基于Netflow流量的分析系統(tǒng),數(shù)據(jù)庫成為系統(tǒng)的基礎(chǔ)及核心,一切功能模塊及數(shù)據(jù)采集均需建立在數(shù)據(jù)庫中,從性能、成本、易用性、可靠性等方面綜合考慮,選用MySQL作為本系統(tǒng)的數(shù)據(jù)庫。
首先是基本表的設(shè)計。在程序操作數(shù)據(jù)表時,讀寫的性能受數(shù)據(jù)表字段所占字節(jié)數(shù)的影響,數(shù)據(jù)表字段所占字節(jié)數(shù)越大,則需要更長的讀寫操作時間,字段所占字節(jié)數(shù)越小,則其讀寫操作的性能將會有所提高。因此,設(shè)計數(shù)據(jù)庫字段的屬性對整個系統(tǒng)的性能至關(guān)重要。在分析程序?qū)?shù)據(jù)按照規(guī)則條件進(jìn)行匹配后,將更新數(shù)據(jù)表中IP地址等相應(yīng)的歸屬信息,但在數(shù)據(jù)的進(jìn)一步匯總中,如果匯總程序按照IP地址歸屬信息進(jìn)行數(shù)據(jù)分組匯總,則需要讀取歸屬信息的全部字節(jié)數(shù),這對于系統(tǒng)整體匯總而言,其運(yùn)行效率仍會受到影響。本著讀取最少字節(jié)數(shù)以提升系統(tǒng)工作效率的原則,需要將歸屬信息代碼化,匯總程序僅需要根據(jù)歸屬信息代碼作為分組條件即可。
根據(jù)Netflow的原始數(shù)據(jù)量,如果對其進(jìn)行一一匹配對應(yīng),則無法在5分鐘內(nèi)完成相應(yīng)的數(shù)據(jù)歸屬、流量分析等操作。為了提高數(shù)據(jù)庫效率,最直接的方法就是先進(jìn)行關(guān)鍵字段的聚合,然后進(jìn)行相應(yīng)的遞歸聚合,最后將分析數(shù)據(jù)進(jìn)行匹配分析,這樣可以有效地減少原始數(shù)據(jù)的運(yùn)算量,尤其在磁盤I/O有限的條件下,性能提升更明顯。