摘 要: 流量分析技術(shù)是網(wǎng)絡(luò)管理的重要組成部分,為網(wǎng)絡(luò)管理提供數(shù)據(jù)支撐,。描述了基于流的IP流導(dǎo)出標(biāo)準(zhǔn)IPFIX(IP Flow Information eXport)的工作原理,,分析了IPFIX流形成與處理的整個(gè)過程,并對(duì)流量分析系統(tǒng)結(jié)構(gòu)進(jìn)行研究設(shè)計(jì),。針對(duì)分析器可能產(chǎn)生的性能瓶頸問題,,提出兩點(diǎn)解決方案,并描述了收集器負(fù)載均衡的實(shí)現(xiàn)方法,。
關(guān)鍵詞: 流量分析,;分析器;收集器,;負(fù)載均衡
網(wǎng)絡(luò)管理技術(shù)是聯(lián)網(wǎng)系統(tǒng)中一個(gè)重要組成部分,。它為網(wǎng)絡(luò)高效穩(wěn)定地運(yùn)行提供了重要保證。流量分析技術(shù)作為網(wǎng)絡(luò)管理的重要組成部分,,其發(fā)展也十分迅速,。
流量數(shù)據(jù)的收集和分析有多種手段,常用的有基于SNMP協(xié)議的接口統(tǒng)計(jì)方式,、RMON方式,、數(shù)據(jù)流量探針等[1-2],這些方式各有特色,,適用于網(wǎng)絡(luò)中不同環(huán)境的流量分析工作,。但由于其統(tǒng)計(jì)流量方式不靈活或成本高等原因,無法滿足對(duì)網(wǎng)絡(luò)進(jìn)行更細(xì)致管理的要求,,需要一種新技術(shù)來更好地支持網(wǎng)絡(luò)流量統(tǒng)計(jì)與分析,。于是,,專門用于網(wǎng)絡(luò)流數(shù)據(jù)收集的協(xié)議產(chǎn)生了,如NetFlow、SFlow,、NetStream等基于Flow的技術(shù),,由于其實(shí)施成本低、操作靈活,、擴(kuò)展性好,,并且不需要額外硬件支持的顯著特點(diǎn),使得這些技術(shù)很快得到廣泛應(yīng)用,,特別是思科的NetFlow協(xié)議,。
然而,在實(shí)際應(yīng)用中,,由于各個(gè)大廠商各自擁有自己的Flow格式和流量數(shù)據(jù)輸出系統(tǒng),,使得彼此之間缺乏兼容性,無法滿足大規(guī)模異構(gòu)網(wǎng)絡(luò)中應(yīng)用的需要,。因此,,無論是在學(xué)術(shù)界還是工業(yè)界,都有必要建立一套輸出網(wǎng)絡(luò)流信息的標(biāo)準(zhǔn),。于是IETF在應(yīng)用廣泛的NetFlow V9[3]的基礎(chǔ)上制定了IPFIX(IP Flow Information eXport)技術(shù)標(biāo)準(zhǔn),。IPFIX在NetFlow的基礎(chǔ)上對(duì)安全、數(shù)據(jù)存儲(chǔ)等方面進(jìn)行了改進(jìn)與擴(kuò)充,。提供了流量分析系統(tǒng)與網(wǎng)絡(luò)設(shè)備之間數(shù)據(jù)采集與傳輸?shù)囊?guī)范,,定義了數(shù)據(jù)交互的標(biāo)準(zhǔn)格式,保證了對(duì)采集目標(biāo)網(wǎng)元設(shè)備良好的兼容性,。
1 IPFIX技術(shù)原理
1.1概念
觀察點(diǎn)[3]:指網(wǎng)絡(luò)中用來觀察和獲取IP數(shù)據(jù)包的位置,,例如以太網(wǎng)LAN中的一個(gè)或一組接口設(shè)備(路由器或交換機(jī)等)。
流(Flow):在一定時(shí)間間隔內(nèi),,通過一個(gè)觀察點(diǎn)并具有相同數(shù)據(jù)包屬性和操作動(dòng)作的數(shù)據(jù)包的集合,。流的屬性包括測(cè)量屬性(總的字節(jié)數(shù)、總包數(shù)等)與特征屬性(IP,、端口等),。一個(gè)數(shù)據(jù)包被歸于某流,當(dāng)且僅當(dāng)其完全滿足該流的所有特征屬性(鍵值),。
模板(Template):定義Flow記錄中各個(gè)屬性字段的結(jié)構(gòu)和語義,。收集進(jìn)程根據(jù)模板來解析數(shù)據(jù)流,當(dāng)需要支持某種新格式數(shù)據(jù)流時(shí),,只需變換模板,,不需要對(duì)程序進(jìn)行修改,使得IPFIX具備良好的可擴(kuò)展性,。
可選模板:可選流記錄提供收集器需要的一些額外信息,,如流的鍵值,、采樣、聚合策略等,??蛇x模板定義了可選流記錄中的各個(gè)屬性字段的結(jié)構(gòu)和語義。
1.2 工作原理
IPFIX以一種靈活的,、可擴(kuò)展的輸出流格式為用戶提供更加細(xì)致的流量信息,。下面從Flow記錄的形成、導(dǎo)出,、收集的過程來詳細(xì)分析IPFIX的工作原理[4],,如圖1所示。
首先測(cè)量進(jìn)程(Meter),,從觀測(cè)點(diǎn)觀測(cè)到數(shù)據(jù)包(Packet),,解析數(shù)據(jù)包首部、添加時(shí)間戳,,為了減少傳輸流的數(shù)量,,或只產(chǎn)生滿足某種需要的流記錄,可以采用采樣與聚合技術(shù),,采樣與聚合的規(guī)則要明確定義,并由導(dǎo)出進(jìn)程以可選模板與可選信息記錄的形式發(fā)送到收集器,。不能將使用不同規(guī)則的聚合策略采樣得到的數(shù)據(jù)混在一起,,當(dāng)規(guī)則有變化時(shí),應(yīng)立即同步處理,。測(cè)量進(jìn)程主要責(zé)任是產(chǎn)生新的流記錄,、更新或刪除舊的流記錄、定義并計(jì)算流的壽命,、計(jì)算統(tǒng)計(jì)值,。在此過程中發(fā)生超時(shí)、過載等任何異常都會(huì)記錄日志,,以方便跟蹤分析,。
導(dǎo)出進(jìn)程(Exporter),產(chǎn)生控制信息(模板,、可選模板),將控制信息與數(shù)據(jù)流信息一同裝載到IPFIX消息(Message)中,,發(fā)送到收集進(jìn)程。收集進(jìn)程根據(jù)控制信息完成相應(yīng)的數(shù)據(jù)流的解析,。IPFIX協(xié)議中,導(dǎo)出進(jìn)程只導(dǎo)出老化后的流,,老化規(guī)則由測(cè)量進(jìn)程確定,一般滿足下列條件之一的流被視為老化:
(1)該類型數(shù)據(jù)流傳送完畢,;
(2)在一個(gè)時(shí)間段內(nèi)某個(gè)數(shù)據(jù)流處于不活躍的狀態(tài),,這個(gè)時(shí)間段可以由輸出器進(jìn)行配置,;
(3)對(duì)于一個(gè)長(zhǎng)時(shí)間活躍的數(shù)據(jù)流,收集器將按照規(guī)則輸出數(shù)據(jù)流記錄,,并強(qiáng)制將該數(shù)據(jù)流老化,,這個(gè)“時(shí)間段”應(yīng)該在輸出器上進(jìn)行配置;
(4)在導(dǎo)出進(jìn)程內(nèi)部條件受限的情況下,,數(shù)據(jù)流也會(huì)被強(qiáng)制進(jìn)行老化,。例如:計(jì)數(shù)器歸零或內(nèi)存不足。
為了安全考慮,,可以將信息進(jìn)一步編碼加密,。同樣,導(dǎo)出進(jìn)程也對(duì)錯(cuò)誤進(jìn)行記錄日志,,并統(tǒng)計(jì)丟包個(gè)數(shù)等數(shù)據(jù),。
導(dǎo)出進(jìn)程可以將同樣的數(shù)據(jù)發(fā)送到多個(gè)收集進(jìn)程,多個(gè)收集進(jìn)程將這些數(shù)據(jù)匯總,,匯總時(shí)要注意處理好重復(fù)的數(shù)據(jù),。這種冗余數(shù)據(jù)的做法增強(qiáng)了流數(shù)據(jù)的完整性,但加大了負(fù)載,只有在對(duì)數(shù)據(jù)丟失相當(dāng)敏感的應(yīng)用中可以采用,。
導(dǎo)出進(jìn)程向不同的收集進(jìn)程傳送數(shù)據(jù)可以采用不同的協(xié)議,,同NetFlow默認(rèn)使用UDP不同,IPFIX默認(rèn)的是SCTP[5],。當(dāng)收集器收到一個(gè)不正常的IPFIX消息時(shí),,會(huì)話會(huì)被重新發(fā)起,并丟棄本次會(huì)話的所有模板,、停止解析,、登記日志。相同的模板與可選模板只傳送一次,。收集器必須存儲(chǔ)下來,。如果收集進(jìn)程先收到數(shù)據(jù)記錄,則要等待模板,,等待時(shí)間是可配置的,。IPFIX消息的序列號(hào)在首部,它隨著IPFIX消息中的數(shù)據(jù)流記錄的增加而增加,。通過這個(gè)序列號(hào),,收集進(jìn)程可以知曉是否有亂序的、丟失的或重復(fù)的數(shù)據(jù),,以跟蹤處理,。如NetFlow一樣,IPFIX的傳輸協(xié)議也可以使用UDP或TCP,,使用不同的協(xié)議,,導(dǎo)出進(jìn)程與收集進(jìn)程間的傳輸過程管理也不一樣,,可參考RFC5101。
2 流量分析系統(tǒng)結(jié)構(gòu)
根據(jù)IPFIX的工作原理可知,其包含三個(gè)重要組成部分,即測(cè)量進(jìn)程,、導(dǎo)出進(jìn)程,、收集進(jìn)程。參照其各自的功能,,將流量分析系統(tǒng)按功能分成:探測(cè)器,、收集器、分析器三個(gè)主要部分進(jìn)行分布式部署(如圖2),。其中,,分析器接收至少一個(gè)收集器的數(shù)據(jù),收集器接收至少一個(gè)探測(cè)器的數(shù)據(jù),,探測(cè)器可同時(shí)向多個(gè)收集器發(fā)送數(shù)據(jù),。
(1)探測(cè)器的工作對(duì)應(yīng)于圖1中的測(cè)量進(jìn)程與導(dǎo)出進(jìn)程部分,負(fù)責(zé)IPFIX流的形成與處理過程,,最終形成IPFIX消息發(fā)送給收集器,。它主動(dòng)采集數(shù)據(jù)包,透明地穿越網(wǎng)絡(luò)結(jié)構(gòu),,不會(huì)修改任何報(bào)文,。除非進(jìn)行了配置,否則它不會(huì)放過任何報(bào)文,。工作效率非常高,,其輸出數(shù)據(jù)的總量大約是網(wǎng)絡(luò)設(shè)備之間交換量的1.5%[6];
(2)收集器對(duì)應(yīng)圖1中的收集進(jìn)程,,具體工作細(xì)節(jié)見圖3,它接受IPFIX消息,,解析并形成壓縮文件,,定期將文件傳送到分析器;
(3)分析器負(fù)責(zé)計(jì)算與統(tǒng)計(jì)分析,,如圖3所示,,它接收IPFIX文件,并將信息存儲(chǔ)到數(shù)據(jù)庫中,,按用戶的需求,,對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行計(jì)算,形成報(bào)表呈現(xiàn)給用戶,。
總之,,流量分析系統(tǒng)的工作是把網(wǎng)絡(luò)中各種應(yīng)用數(shù)據(jù)包進(jìn)行清洗、篩選,、標(biāo)準(zhǔn)化處理,,形成屬性明確的流,,再對(duì)這海量的流記錄進(jìn)行數(shù)據(jù)挖掘的過程。挖掘出用戶關(guān)注的信息,,以清晰直觀的方式展現(xiàn)給用戶,,為用戶對(duì)網(wǎng)絡(luò)管理或其他應(yīng)用分析提供可靠的數(shù)據(jù)支持。
3 結(jié)構(gòu)分析與優(yōu)化
如圖2的系統(tǒng)結(jié)構(gòu),,實(shí)踐中發(fā)現(xiàn),,流記錄的海量數(shù)據(jù)全部放到分析器進(jìn)行計(jì)算分析,分析器處理能力有限,產(chǎn)生了瓶頸,,影響了整個(gè)系統(tǒng)的性能,。
本文給出了兩點(diǎn)改進(jìn)方案:計(jì)算下移和收集器負(fù)載均衡。
(1)計(jì)算下移
收集器只是簡(jiǎn)單地將數(shù)據(jù)解析并存儲(chǔ),,把所有的計(jì)算任務(wù)都交給分析器,。經(jīng)常出現(xiàn)的情況是收集器資源利用不充分,分析器過載,。故考慮在收集器將數(shù)據(jù)發(fā)送給分析器之前,,需對(duì)數(shù)據(jù)進(jìn)行一些預(yù)處理工作。這樣就能緩解分析器的工作負(fù)載,。如主機(jī)流量排行,、應(yīng)用流匯總數(shù)據(jù),這些常用的分析結(jié)果可以在收集器上進(jìn)行排序與計(jì)算后,,再將數(shù)據(jù)傳送給分析器,,必要時(shí),可以將預(yù)計(jì)算的結(jié)果存放在另一文件中與IPFIX文件一同上傳分析器,。分析器從這一文件直接得到預(yù)計(jì)算后的數(shù)據(jù),,而不必再對(duì)元數(shù)據(jù)進(jìn)行計(jì)算,從而減少了分析器的負(fù)載,,提高了分析效率,。
(2)收集器負(fù)載均衡
多個(gè)收集器同時(shí)工作時(shí),有的收集器可能很忙碌,,甚至達(dá)到性能極限,,而此時(shí),其他收集器則處于空閑狀態(tài),,形成了資源的浪費(fèi),,降低了工作效率。因此對(duì)收集器進(jìn)行負(fù)載均衡是必要的,,尤其對(duì)于計(jì)算下移的系統(tǒng),。負(fù)載均衡,即根據(jù)收集器的幾個(gè)重要的性能指標(biāo)來衡量收集器的資源使用情況,并根據(jù)使用情況,動(dòng)態(tài)調(diào)度各收集器的工作任務(wù),。
本系統(tǒng)在分析器中設(shè)計(jì)了一個(gè)均衡器來實(shí)現(xiàn)均衡調(diào)度,。均衡器維護(hù)一張收集器資源使用情況實(shí)時(shí)狀態(tài)表。具體采用基于負(fù)反饋機(jī)制的動(dòng)態(tài)負(fù)載均衡算法[7],,該算法考慮每個(gè)收集器的實(shí)時(shí)負(fù)載情況,,不斷調(diào)整任務(wù)的分配比例,避免有些收集器超載時(shí)依然收到大量IPFIX消息,,從而提高系統(tǒng)整體工作效率,,使整個(gè)系統(tǒng)成為一個(gè)智能的有機(jī)體。在系統(tǒng)內(nèi),,分析器承擔(dān)管理角色,,其均衡器負(fù)責(zé)監(jiān)聽各個(gè)收集器的負(fù)載信息,收集器定時(shí)向均衡器報(bào)告自身的負(fù)載狀況,。分析器根據(jù)均衡器的實(shí)時(shí)信息,,對(duì)各個(gè)收集器的工作量進(jìn)行調(diào)整。對(duì)于超載的收集器,,削減其工作量,,并取消其對(duì)IPFIX消息的預(yù)處理工作。
收集器主要工作是解析IPFIX消息,,以觀測(cè)點(diǎn)為單位,,將解析后的數(shù)據(jù)寫入文件,并將文件周期性地發(fā)送給分析器,,發(fā)送成功的文件做本地刪除,。針對(duì)其特點(diǎn)與實(shí)際經(jīng)驗(yàn),可取系數(shù){0.4,,0.4,,0.2}。若當(dāng)前的系數(shù)不能很好地反映實(shí)際應(yīng)用的負(fù)載情況,,可以對(duì)系數(shù)及時(shí)地進(jìn)行修正,,直到找到貼近當(dāng)前應(yīng)用的一組系數(shù)。
關(guān)于計(jì)算L(Ci)的周期設(shè)置,,雖然較短的周期可以更準(zhǔn)確及時(shí)地反映各個(gè)收集器的負(fù)載情況,但是頻繁的計(jì)算會(huì)給均衡器和收集器帶來負(fù)擔(dān),,也增加了不必要的網(wǎng)絡(luò)負(fù)荷,。另外,頻繁計(jì)算會(huì)導(dǎo)致均衡器反映出的負(fù)載信息出現(xiàn)抖動(dòng),,均衡器無法準(zhǔn)確捕捉各收集器實(shí)際的負(fù)載變化趨勢(shì),。雖然可用數(shù)據(jù)擬合等技術(shù)來處理數(shù)據(jù),使負(fù)載信息表現(xiàn)為平滑曲線,但如此額外增加了收集器的負(fù)擔(dān),,故應(yīng)避開抖動(dòng),,適當(dāng)增長(zhǎng)計(jì)算周期。
每個(gè)參數(shù)都設(shè)置有閾值,,如果某收集器的某一性能指標(biāo)超過閾值,,則立即減少該收集器的工作量,即應(yīng)將向該收集器發(fā)送的IPFIX消息發(fā)送到其他空閑的收集器,。如果系統(tǒng)中所有的收集器長(zhǎng)期處于過載狀態(tài),,則需要向系統(tǒng)中添加收集器,或調(diào)整采樣與聚合策略來減少數(shù)據(jù)流,。若所有收集器的使用率長(zhǎng)期處于低狀態(tài),,則可以削減收集器,減少不必要的維護(hù),。
IPFIX作為IP流量導(dǎo)出的標(biāo)準(zhǔn),繼承并完善了NetFlow,。它提供了多種字段類型,可針對(duì)具體的應(yīng)用自定義流的鍵值,、模版,、采樣、聚合機(jī)制以及傳輸方式,、編碼規(guī)則等,,能夠詳細(xì)描述流量的各類特征,為快速,、準(zhǔn)確地進(jìn)行流量分析提供了堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ),。基于模板的靈活數(shù)據(jù)格式,,使得其具備良好的可擴(kuò)展性,。本文根據(jù)IPFIX的工作原理,設(shè)計(jì)出流量分析系統(tǒng)的結(jié)構(gòu),,并分析了可能出現(xiàn)的性能瓶頸,,提出了兩種解決此瓶頸的方案。隨著網(wǎng)絡(luò)應(yīng)用的廣泛與復(fù)雜,,對(duì)流量分析的工作要求會(huì)進(jìn)一步增高,,需要更加高效合理的系統(tǒng)結(jié)構(gòu), 如分析器分布式部署,,并行分析將會(huì)成為未來研究的焦點(diǎn),。
參考文獻(xiàn)
[1] 王珊, 陳松,周明天.網(wǎng)絡(luò)流量分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2009,45(10):86-88.
[2] 李興國(guó),,費(fèi)玲玲.基于NetFlow的流量分析技術(shù)研究[J]. 微計(jì)算機(jī)信息,, 2008(5-3):198-200.
[3] QUITTEK J, ZSEBY T, CLASIE B, et al. Requirements for IP flow information export(IPFIX)[EB/OL]. RFC3917, 2004(10).
[4] CLAISE B E. Cisco systems NetFlow services export version 9[EB/OL]. RFC3954, 2004(10).
[5] CLAISE B. Specification of the IP flow information export(IPFIX) protocol for the exchange of IP traffic flow information[EB/OL]. RFC5101, 2008(1).
[6] CLAISE B, WOLTER R. 網(wǎng)絡(luò)管理:計(jì)費(fèi)與性能管理策略[M].北京:人民郵電出版社, 2009.
[7] 陳勇. 一種高效的分布式反饋流量負(fù)載均衡算法[J]. 計(jì)算機(jī)工程, 2009,35(2):198-102.