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