摘 要: 研究并解決網(wǎng)絡(luò)流量監(jiān)測(cè)中的各種關(guān)鍵技術(shù),提出符合中心計(jì)算機(jī)系統(tǒng)實(shí)際情況的網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)的架構(gòu);設(shè)計(jì)并實(shí)現(xiàn)了網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng),該系統(tǒng)基于Turbocap千兆捕獲卡和工作站。通過(guò)該系統(tǒng),用戶可以制定針對(duì)特定業(yè)務(wù)的流量監(jiān)測(cè),并根據(jù)詳細(xì)的流量信息實(shí)現(xiàn)故障定位。目前該系統(tǒng)己經(jīng)運(yùn)行在中心計(jì)算機(jī)系統(tǒng)網(wǎng)絡(luò)中。
關(guān)鍵詞: 網(wǎng)絡(luò)流量監(jiān)測(cè);Libpcap;ntop;span;tap;TurboCap
1 系統(tǒng)概述
中心計(jì)算機(jī)系統(tǒng)是武器試驗(yàn)靶場(chǎng)測(cè)控系統(tǒng)中數(shù)據(jù)處理與轉(zhuǎn)發(fā)的樞紐,是典型的實(shí)時(shí)系統(tǒng),主要任務(wù)是綜合接收、實(shí)時(shí)處理各種測(cè)量設(shè)備信息。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,中心計(jì)算機(jī)系統(tǒng)由點(diǎn)對(duì)點(diǎn)的專用通信鏈路(HDLC、串口)向網(wǎng)絡(luò)通信過(guò)渡。整個(gè)測(cè)控系統(tǒng)的IP化是必然趨勢(shì)。將來(lái),所有的測(cè)控設(shè)備都必需提供IP接口,以IP數(shù)據(jù)包交換為特征的網(wǎng)絡(luò)通信會(huì)逐步替代以點(diǎn)對(duì)點(diǎn)為主的傳統(tǒng)通信方式。隨著基地網(wǎng)絡(luò)應(yīng)用范圍的不斷擴(kuò)大以及網(wǎng)絡(luò)的日益復(fù)雜化,網(wǎng)絡(luò)管理工作的難度也越來(lái)越大。因此根據(jù)基地網(wǎng)絡(luò)實(shí)際情況設(shè)計(jì)了一種網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng),用來(lái)測(cè)試中心計(jì)算機(jī)系統(tǒng)網(wǎng)絡(luò)的性能和可靠性。通過(guò)該系統(tǒng),可以對(duì)網(wǎng)絡(luò)的健康狀況與瓶頸進(jìn)行測(cè)試,迅速地確定網(wǎng)絡(luò)問(wèn)題。
1.1 研究目的
本課題的研究目的是以中心計(jì)算機(jī)系統(tǒng)為應(yīng)用背景,研究并解決網(wǎng)絡(luò)流量監(jiān)測(cè)中的各種關(guān)鍵技術(shù),提出符合中心計(jì)算機(jī)系統(tǒng)實(shí)際情況的、技術(shù)可行的網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)的架構(gòu)和應(yīng)用方式,并構(gòu)建一套可滿足中心計(jì)算機(jī)系統(tǒng)應(yīng)用的網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)。
1.2 研究意義
網(wǎng)絡(luò)流量監(jiān)測(cè)有助于維護(hù)網(wǎng)絡(luò)持續(xù)、高效和安全地運(yùn)行,網(wǎng)絡(luò)流量監(jiān)測(cè)的意義在于取得對(duì)網(wǎng)絡(luò)運(yùn)行管理、應(yīng)用運(yùn)行管理和網(wǎng)絡(luò)問(wèn)題分析有意義的數(shù)據(jù)。這些數(shù)據(jù)(包括利用率、b/s、pps、網(wǎng)絡(luò)延遲、重傳、連接數(shù)量等)只有與實(shí)際的網(wǎng)絡(luò)應(yīng)用運(yùn)行情況結(jié)合起來(lái)才有意義。這是因?yàn)椴煌木W(wǎng)絡(luò)、不同的應(yīng)用都有完全不同的數(shù)據(jù)流量。只有對(duì)網(wǎng)絡(luò)和應(yīng)用進(jìn)行深入地了解,才能使這些數(shù)據(jù)的價(jià)值得到真正的體現(xiàn)。網(wǎng)絡(luò)流量的監(jiān)測(cè)對(duì)于技術(shù)人員了解網(wǎng)絡(luò)、發(fā)現(xiàn)問(wèn)題、確認(rèn)問(wèn)題原因有著重要的意義[1-3]。
2 方案設(shè)計(jì)
網(wǎng)絡(luò)流量監(jiān)測(cè)從不同的方面可以分為如下幾部分:
(1)基于硬件探針的測(cè)量和基于軟件的測(cè)量
基于硬件探針的測(cè)量通常指使用專用硬件設(shè)備進(jìn)行網(wǎng)絡(luò)流的測(cè)量,捕獲和實(shí)時(shí)分析能力強(qiáng),但一般價(jià)格昂貴?;谲浖臏y(cè)量通常是在PC上安裝軟件來(lái)實(shí)現(xiàn)。與基于硬件的方法比較,費(fèi)用比較低廉,但是性能一般。
(2)主動(dòng)測(cè)量和被動(dòng)測(cè)量
主動(dòng)測(cè)量使用由測(cè)量設(shè)備產(chǎn)生的數(shù)據(jù)流來(lái)探測(cè)網(wǎng)絡(luò)而獲知網(wǎng)絡(luò)的信息。被動(dòng)測(cè)量只是記錄網(wǎng)絡(luò)的數(shù)據(jù)流,不向網(wǎng)絡(luò)流中注入任何數(shù)據(jù)。大部分網(wǎng)絡(luò)流量測(cè)量都是被動(dòng)測(cè)量[4-5]。
(3)在線分析和離線分析
在線分析指實(shí)時(shí)地收集和分析網(wǎng)絡(luò)數(shù)據(jù),同時(shí)顯示流量數(shù)據(jù)和分析結(jié)果。離線分析只是在線地收集網(wǎng)絡(luò)數(shù)據(jù)并存儲(chǔ)下來(lái),并不對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)的分析。
(4)協(xié)議級(jí)分類
對(duì)于不同的協(xié)議,例如以太網(wǎng)(Ethernet)、幀中繼(Frame Relay)、異步傳輸模式(ATM),也就有了不同的通信量測(cè)試方法。
根據(jù)中心計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)際情況,采用基于硬件測(cè)量方式、被動(dòng)在線測(cè)量以及針對(duì)以太網(wǎng)的協(xié)議。經(jīng)過(guò)充分調(diào)研和分析,基于高速數(shù)據(jù)采集卡(TurboCap)和工作站來(lái)構(gòu)建流量監(jiān)測(cè)系統(tǒng),采用Linux操作系統(tǒng)和開(kāi)源軟件(LibpCap、ntop)來(lái)實(shí)現(xiàn)流量監(jiān)測(cè)功能。
2.1 硬件系統(tǒng)
2.1.1 TurboCap千兆抓包卡
TurboCap卡是一種基于PCI-E總線的高速抓包卡,提供TurboCap API以及LibpCap API[6]。如圖1所示。
2.1.2 計(jì)算機(jī)配置
為了保證抓包速度,需要計(jì)算機(jī)具有PCI-E 8x插槽,8 GB以上內(nèi)存。
2.2 軟件系統(tǒng)
軟件系統(tǒng)主要包括Linux操作系統(tǒng)、TurboCap開(kāi)發(fā)套件、LibpCap、ntop等。
2.2.1 LibpCap
LibpCap是一個(gè)平臺(tái)獨(dú)立的網(wǎng)絡(luò)數(shù)據(jù)抓包開(kāi)發(fā)包,其應(yīng)用非常廣泛,可以在絕大多數(shù)類Unix/Linux平臺(tái)下工作,提供了用戶級(jí)API編程接口,并充分考慮到應(yīng)用程序的可移植性。LibpCap隱藏了操作系統(tǒng)的細(xì)節(jié),為底層網(wǎng)絡(luò)監(jiān)控編程提供一個(gè)易于移植的應(yīng)用框架,可以捕獲網(wǎng)絡(luò)上的所有數(shù)據(jù)包。
2.2.2 TurboCap開(kāi)發(fā)套件
TurboCap開(kāi)發(fā)套件包括TurboCap驅(qū)動(dòng)、TurboCap內(nèi)核模塊、用戶級(jí)的API以及TurboCap開(kāi)發(fā)庫(kù)、文檔、例子。
2.2.3 網(wǎng)絡(luò)流量監(jiān)測(cè)軟件ntop
ntop可以從http://www.ntop.org下載,并以開(kāi)源方式提供使用,是Linux下著名的網(wǎng)絡(luò)流量監(jiān)測(cè)軟件。ntop是一種網(wǎng)絡(luò)嗅探器,以sniffery方式運(yùn)作,可以監(jiān)測(cè)的數(shù)據(jù)包括:網(wǎng)絡(luò)流量、使用協(xié)議、系統(tǒng)負(fù)載、端口情況等。ntop能夠顯示基于IP地址的帶寬占用情況,幫助技術(shù)人員迅速定位占有大量帶寬的主機(jī)和應(yīng)用,還能基于協(xié)議的類型進(jìn)行統(tǒng)計(jì)并生成直觀的圖表,幫助技術(shù)人員了解業(yè)務(wù)流量的組成和比例,進(jìn)而以此為依據(jù)來(lái)優(yōu)化網(wǎng)絡(luò)。
在使用ntop的過(guò)程中,解決了一些問(wèn)題,主要包括:
(1)在沒(méi)有連接互聯(lián)網(wǎng)的情況下ntop無(wú)法編譯安裝;
(2)在對(duì)ntop的源碼編譯時(shí)提示沒(méi)有定義pthread_
mutex_trywrlock;
(3)ntop運(yùn)行過(guò)程中會(huì)出現(xiàn)拒絕遠(yuǎn)程的連接請(qǐng)求等。
此外還對(duì)ntop進(jìn)行了一些改進(jìn),包括對(duì)歷史數(shù)據(jù)的保存、數(shù)據(jù)導(dǎo)出等。為了用戶使用方便,對(duì)ntop的Web界面顯示進(jìn)行了漢化,主要是修改http.c和report.c兩個(gè)文件。
2.3 關(guān)鍵技術(shù)研究
中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)的關(guān)鍵技術(shù)包括如下幾種。
2.3.1 千兆以太網(wǎng)線速抓包技術(shù)
在搭建網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)時(shí)需要全速千兆以太網(wǎng)抓包,這絕對(duì)是一項(xiàng)挑戰(zhàn)性任務(wù)。采用通用的設(shè)備,如何做到捕包性能最好、不丟包,是需要突破的關(guān)鍵技術(shù)。而采用純軟件的技術(shù)是無(wú)法達(dá)到線速抓包的,因此必須由硬件來(lái)配合。為了提高抓包性能,采取了以下措施:
(1)采用高端配置的工作站或者服務(wù)器,包括配備帶緩存的磁盤(pán)陣列、高速SAS硬盤(pán),CPU和內(nèi)存也要考慮配得高一些;
(2)采用高速抓包卡(TurboCap),用TurboCap自帶的測(cè)試程序HighSpeedTransmitter、HiPerfPktReceiver進(jìn)行收發(fā)包,用思博倫的Smartbits測(cè)試,TurboCap可以達(dá)到線速。
2.3.2 數(shù)據(jù)包獲得技術(shù)
在交換網(wǎng)絡(luò)中,有兩種獲得數(shù)據(jù)的方法:
(1)端口鏡像SPAN(Switch Port Analysis)。簡(jiǎn)單來(lái)說(shuō)就是把交換機(jī)某個(gè)端口的流量copy一份到另外一個(gè)端口,然后可以在該接口上接網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)。
(2)分路器TAP(Test Access Port)。需要串接在被監(jiān)測(cè)鏈路上。
中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)既支持SPAN方式,也支持TAP方式。這兩種技術(shù)在網(wǎng)絡(luò)監(jiān)測(cè)、分析時(shí)普遍應(yīng)用,每一種技術(shù)都有其優(yōu)點(diǎn)和缺點(diǎn):
(1)SPAN比較靈活,無(wú)其他設(shè)施需求,無(wú)需改變網(wǎng)絡(luò)拓樸結(jié)構(gòu);而TAP則需要接入到鏈路中去,如果需要監(jiān)測(cè)其他的鏈路,則需要重新連接線纜,會(huì)對(duì)網(wǎng)絡(luò)造成中斷,適合長(zhǎng)期的穩(wěn)定監(jiān)測(cè)。
(2)SPAN需要對(duì)交換機(jī)進(jìn)行配置,占據(jù)一個(gè)交換機(jī)端口;而TAP沒(méi)有這個(gè)問(wèn)題,它對(duì)于網(wǎng)絡(luò)設(shè)備來(lái)說(shuō)是透明的,不干涉數(shù)據(jù)流和原始數(shù)據(jù);
(3)SPAN方式獲得的流量其實(shí)已經(jīng)被過(guò)濾掉一些底層的信息了,所以有些故障信息無(wú)法看到,而TAP真實(shí)反映了網(wǎng)絡(luò)的流量,沒(méi)有任何修改;
(4)SPAN只適用于交換機(jī),如果需要監(jiān)測(cè)的鏈路兩端都是路由器,就無(wú)能為力了;而TAP這方面就沒(méi)有任何問(wèn)題。
2.3.3 網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)接入方式
由于受到網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)技術(shù)、網(wǎng)絡(luò)設(shè)備、傳輸線路和用戶應(yīng)用等多種條件的限制,如何將網(wǎng)絡(luò)流量實(shí)時(shí)監(jiān)測(cè)系統(tǒng)在不影響網(wǎng)絡(luò)應(yīng)用的前提下,快速、準(zhǔn)確、安全地連接到被測(cè)網(wǎng)絡(luò)中,成為一個(gè)具有挑戰(zhàn)性的問(wèn)題。網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)的部署方式有多種:
(1)并接,即SPAN方式。將交換機(jī)一個(gè)端口的數(shù)據(jù)包復(fù)制到一個(gè)指定的端口,然后可以在該接口上接網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng),即TurboCap卡的一個(gè)接口。
(2)聚合模式。對(duì)兩個(gè)千兆網(wǎng)口進(jìn)行聚合,按照時(shí)間戳記對(duì)來(lái)源于不同位置的數(shù)據(jù)進(jìn)行采集、分析,該模式可用于測(cè)量不同位置網(wǎng)絡(luò)包的延遲。
(3)串接,即TAP模式。當(dāng) TurboCap卡處于pass-thru模式時(shí),TurboCap把一個(gè)端口收到的數(shù)據(jù)注入到另一個(gè)端口,兩個(gè)端口支持全速對(duì)發(fā),從而使TurboCap具有分路器的功能。只是TurboCap在pass-thru模式下與普通TAP的連接性不同:裝有TAP的計(jì)算機(jī)必須開(kāi)機(jī)正常運(yùn)行,如果關(guān)機(jī),處于TAP位置的通信將中斷。
(4)匯聚TAP模式,類似串接TAP。匯聚TAP可以將一條或多條鏈路的全雙工數(shù)據(jù)合并到單一數(shù)據(jù)流中供分析,這樣能夠在單一數(shù)據(jù)流中看到來(lái)自多個(gè)端口的匯聚流量。
2.3.4 用戶特定業(yè)務(wù)流量監(jiān)測(cè)
中心計(jì)算機(jī)有很多非標(biāo)準(zhǔn)的網(wǎng)絡(luò)應(yīng)用。對(duì)于用戶來(lái)說(shuō),在進(jìn)行網(wǎng)絡(luò)流量監(jiān)測(cè)時(shí),如果能靈活定義需要監(jiān)測(cè)和分析的業(yè)務(wù),可快捷地找到網(wǎng)絡(luò)故障與問(wèn)題,從而提高解決問(wèn)題的效率。在Linux操作系統(tǒng)下,文件“/etc/services”保存的是Internet服務(wù)和與之對(duì)應(yīng)的端口號(hào)。該文件的每一行描述了一種服務(wù),格式為:
service-name port/protocol [aliases ...]
其中service-name 是服務(wù)的名字;port 是十進(jìn)制的數(shù)字,用來(lái)代表該服務(wù);protocol 是使用的協(xié)議類型,典型的值包括tcp和udp;aliases是可選的代表該服務(wù)的別名。
通過(guò)services文件,用戶可以設(shè)置自己的應(yīng)用,例如:
中心機(jī)接收端口 8201/udp
這樣,就很容易區(qū)分用戶不同的服務(wù)。
2.4 應(yīng)用舉例
中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)可以監(jiān)測(cè)的數(shù)據(jù)包括:網(wǎng)絡(luò)流量、使用協(xié)議、系統(tǒng)負(fù)載、端口情況、數(shù)據(jù)包發(fā)送時(shí)間等,能夠顯示基于IP地址的帶寬占用情況,還能基于協(xié)議的類型進(jìn)行統(tǒng)計(jì)并生成直觀的圖表,將每個(gè)節(jié)點(diǎn)計(jì)算機(jī)的網(wǎng)絡(luò)使用詳細(xì)情況顯示出來(lái);還可以很方便地確定出哪些通信量屬于某個(gè)特定的網(wǎng)絡(luò)協(xié)議、占主要通信量的主機(jī)、各次通信的目標(biāo)是哪個(gè)主機(jī)、數(shù)據(jù)包發(fā)送時(shí)間、各主機(jī)間數(shù)據(jù)包傳遞的間隔時(shí)間等。下面介紹兩個(gè)簡(jiǎn)單的使用例子。
(1)舉例一
選擇“全部網(wǎng)絡(luò)協(xié)議”→“流量”菜單選項(xiàng),在Hosts下拉列表框中選擇Local Only,在Data下拉列表框中選擇Received Only,在Data欄上單擊,對(duì)數(shù)據(jù)和百分比進(jìn)行排序??梢院苋菀椎匕l(fā)現(xiàn)當(dāng)前網(wǎng)絡(luò)中接收帶寬的最大占用者。
如果想知道當(dāng)前網(wǎng)絡(luò)中發(fā)送帶寬的最大占用者,在Data下拉列表框中選擇Sent Only即可。
(2)舉例二
選擇“網(wǎng)絡(luò)層協(xié)議統(tǒng)計(jì)”→“本地”→“本地矩陣” 菜單選項(xiàng),就可以看到本地主機(jī)發(fā)送的數(shù)據(jù)矩陣,找出發(fā)送數(shù)據(jù)最多的主機(jī)。
中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)基于TurboCap千兆捕獲卡和普通工作站設(shè)計(jì),簡(jiǎn)單實(shí)用,性價(jià)比高;采用Linux開(kāi)源操作系統(tǒng)和開(kāi)源軟件(LibpCap、ntop),安全性高。中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)自動(dòng)從網(wǎng)絡(luò)中識(shí)別有用的信息,直觀地呈現(xiàn)給技術(shù)人員;將截獲的數(shù)據(jù)包轉(zhuǎn)換成易于識(shí)別的格式,使技術(shù)人員一目了然;該系統(tǒng)基本滿足中心計(jì)算機(jī)系統(tǒng)大多數(shù)網(wǎng)絡(luò)流量監(jiān)測(cè)的需求,大大提高了網(wǎng)絡(luò)的利用率。
中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)還存在一定的不足,主要表現(xiàn)在:雖然TurboCap高速捕獲卡支持線速抓包,但是ntop通過(guò)LibpCap接口對(duì)TurboCap高速捕獲卡操作時(shí),由于LibpCap的性能問(wèn)題,無(wú)法達(dá)到線速抓包;ntop的遠(yuǎn)程訪問(wèn)還存在安全方面的問(wèn)題。因此還需要對(duì)中心計(jì)算機(jī)網(wǎng)絡(luò)流量監(jiān)測(cè)系統(tǒng)進(jìn)行改進(jìn)。
參考文獻(xiàn)
[1] 趙冉.網(wǎng)絡(luò)流量測(cè)量系統(tǒng)Ntop的分析與研究[D].西安:西北大學(xué),2008.
[2] 任富新.高速網(wǎng)絡(luò)流量測(cè)量系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2012,31(1):58-60.
[3] 沈華林.協(xié)議/流量分析系統(tǒng)Hntop的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(16):137-139.
[4] TAMON M A.Ntop network monitoring guide[EB/OL].[2008-05-25].http://techowto.wordpress.com.
[5] 夏光峰.網(wǎng)絡(luò)分析技術(shù)及其在網(wǎng)絡(luò)管理中的應(yīng)用研究[J].電腦知識(shí)與技術(shù),2009,5(3):587-590.
[6] Riverbed.CACE turbocap_flyer[EB/OL].[2010-01-18].http://www.cacetech.com.