摘要:通過對網(wǎng)絡(luò)性能測量的調(diào)研,結(jié)合網(wǎng)絡(luò)性能測量工具iperf的研究,報(bào)告了不同情況下的網(wǎng)絡(luò)性能。并對網(wǎng)絡(luò)性能測量工具的實(shí)際應(yīng)用做了說明。
關(guān)鍵詞:網(wǎng)絡(luò)性能測量;iperf;網(wǎng)絡(luò)性能測量工具
中圖分類號:TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1009-3044(2009)36-10227-03
Iperf-based Network Performance Measurement
ZHANG Bai, SONG An-jun
(Information Engineering College, Shanghai Maritime University, Shanghai 200135, China)
Abstract: Through the network performance measurement research, combined with iperf network performance measurement tool study, reported on the network performance under different circumstances. Network performance measurement tools as well as the practical application is explained.
Key words: network performance measurement; iperf; network performance measurement tools
在構(gòu)建或管理一個(gè)網(wǎng)絡(luò)系統(tǒng)時(shí),我們更多的是關(guān)心網(wǎng)絡(luò)的可用性,即網(wǎng)絡(luò)是否連通,而對于其整體的性能往往考慮不多,或者即使考慮到性能的問題,但是卻發(fā)現(xiàn)沒有合適的手段去測試網(wǎng)絡(luò)的性能。
當(dāng)開發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用程序后,我們會(huì)發(fā)現(xiàn),在實(shí)際的網(wǎng)絡(luò)環(huán)境使用中,網(wǎng)絡(luò)應(yīng)用程序的使用效果不是很理想,問題可能出現(xiàn)在程序的開發(fā)上面,也有可能由于實(shí)際的網(wǎng)絡(luò)環(huán)境中存在著瓶頸。面對這種問題,程序員一般會(huì)一籌莫展,原因就在于不掌握一些網(wǎng)絡(luò)性能測量的工具。本文將通過iperf這一網(wǎng)絡(luò)性能測量工具來討論網(wǎng)絡(luò)性能測試的知識(shí)。
1 網(wǎng)絡(luò)性能測量的概念
1.1 網(wǎng)絡(luò)性能的概念
網(wǎng)絡(luò)性能可以采用以下方式定義:網(wǎng)絡(luò)性能是對一系列對于運(yùn)營商有意義的,并可用于系統(tǒng)設(shè)計(jì)、配置、操作和維護(hù)的參數(shù)進(jìn)行測量所得到的結(jié)果??梢?,網(wǎng)絡(luò)性能是與終端性能以及用戶的操作無關(guān)的,是網(wǎng)絡(luò)本身特性的體現(xiàn),可以由一系列的性能參數(shù)來描述,也可以由網(wǎng)絡(luò)性能測量工具來測量。
1.2 網(wǎng)絡(luò)性能測量的五項(xiàng)指標(biāo)
網(wǎng)絡(luò)性能參數(shù)即網(wǎng)絡(luò)性能測量的五項(xiàng)指標(biāo),包括:可用性(availability);響應(yīng)時(shí)間(response time);網(wǎng)絡(luò)利用率(network utilization);網(wǎng)絡(luò)吞吐量(network throughput);網(wǎng)絡(luò)帶寬容量(network bandwidth capacity)。
1.3 網(wǎng)絡(luò)性能測量方法和工具的分類
1.3.1 網(wǎng)絡(luò)性能測量方法
網(wǎng)絡(luò)性能測量方法有兩類:主動(dòng)測量和被動(dòng)測量。這兩種方法的作用和特點(diǎn)不同,可以相互作為補(bǔ)充。主動(dòng)測量是在選定的測量點(diǎn)上利用測量工具有目的地主動(dòng)產(chǎn)生測量流量,注入網(wǎng)絡(luò),并根據(jù)測量數(shù)據(jù)流的傳送情況來分析網(wǎng)絡(luò)的性能。主動(dòng)測量的優(yōu)點(diǎn)是對測量過程的可控性比較高,靈活、機(jī)動(dòng),易于進(jìn)行端到端的性能測量;缺點(diǎn)是注入的測量流量會(huì)改變網(wǎng)絡(luò)本身的運(yùn)行情況,使得測量的結(jié)果與實(shí)際情況存在一定的偏差,而且測量流量還會(huì)增加網(wǎng)絡(luò)負(fù)擔(dān)。主動(dòng)測量在性能參數(shù)的測量中應(yīng)用十分廣泛,目前大多數(shù)測量系統(tǒng)都涉及到主動(dòng)測量。
被動(dòng)測量是指在鏈路或設(shè)備(如路由器,交換機(jī)等)上利用測量設(shè)備對網(wǎng)絡(luò)進(jìn)行監(jiān)測,而不需要產(chǎn)生多余流量的測量方法。被動(dòng)測量的優(yōu)點(diǎn)在于理論上它不產(chǎn)生多余流量,不會(huì)增加網(wǎng)絡(luò)負(fù)擔(dān);其缺點(diǎn)在于被動(dòng)測量基本上是基于對單個(gè)設(shè)備的監(jiān)測,很難對網(wǎng)絡(luò)端到端的性能進(jìn)行分析,并且可能實(shí)時(shí)采集的數(shù)據(jù)量過大,另外還存在用戶數(shù)據(jù)泄漏等安全性和隱私問題。
被動(dòng)測量非常適合用來進(jìn)行流量測量。
主動(dòng)測量與被動(dòng)測量的結(jié)合。主動(dòng)測量與被動(dòng)測量各有其優(yōu)、缺點(diǎn),而且對于不同的性能參數(shù)來說,主動(dòng)測量和被動(dòng)測量也都有其各自的用途。因此,將主動(dòng)測量與被動(dòng)測量相結(jié)合將會(huì)給網(wǎng)絡(luò)性能測量帶來新的發(fā)展。
1.3.2 網(wǎng)絡(luò)性能測量工具
從主動(dòng)測量方法與被動(dòng)測量方法的角度,測試工具大致可以分為以下兩類:
產(chǎn)生數(shù)據(jù)流的主動(dòng)測量方法:netperf,dbs,Iperf,Pathrate,Nettest不產(chǎn)生數(shù)據(jù)流的被動(dòng)測量方法:Netlogger,tcptrace與ntop。產(chǎn)生數(shù)據(jù)流的主動(dòng)測量方法通過在網(wǎng)絡(luò)中產(chǎn)生用于測量的數(shù)據(jù)包流量,來測量網(wǎng)絡(luò)帶寬,響應(yīng)時(shí)間,包丟棄等數(shù)據(jù),這類工具對于判斷網(wǎng)絡(luò)瓶頸和估計(jì)帶寬利用率是非常有用的。
不產(chǎn)生數(shù)據(jù)流的被動(dòng)測量方法,通過捕獲數(shù)據(jù)包,分析包頭信息,經(jīng)過統(tǒng)計(jì)給出網(wǎng)絡(luò)流量信息,網(wǎng)絡(luò)流量監(jiān)視信息。這對于網(wǎng)絡(luò)管理員對實(shí)際運(yùn)行的網(wǎng)絡(luò)系統(tǒng)進(jìn)行測試來說,是非常有用的方法與可用的工具。
2 iperf測量工具
2.1 iperf簡介
iperf 是一個(gè) TCP/IP 和 UDP/IP 的性能測量工具,能夠提供網(wǎng)絡(luò)吞吐率信息,以及震動(dòng)、丟包率、最大段和最大傳輸單元大小等統(tǒng)計(jì)信息;從而能夠幫助我們測試網(wǎng)絡(luò)性能,定位網(wǎng)絡(luò)瓶頸。iperf程序是由一個(gè)iperf可執(zhí)行文件,一個(gè)java應(yīng)用程序jperf和一組iperf庫文件組成??蓤?zhí)行文件既有客戶端的應(yīng)用程序,又有服務(wù)器端的應(yīng)用程序;java應(yīng)用程序提供圖形前端處理功能;庫文件為套接子程序提供各種附加功能。
2.2 命令使用:
iperf有許多參數(shù),這里就只介紹兩個(gè)。
-s 以server模式啟動(dòng),eg:iperf –s
-c 以client模式啟動(dòng),host是server端地址,eg:iperf -c 192.168.111.172
2.3 iperf測試內(nèi)容
2.3.1 功能介紹
通過iperf應(yīng)用程序TCP,網(wǎng)絡(luò)管理員可以測量TCP網(wǎng)絡(luò)特性:測量網(wǎng)絡(luò)帶寬;報(bào)告MSS/MTU值的大小和觀測值;支持TCP窗口值通過套接字緩沖;當(dāng)P線程或Win32線程可用時(shí),支持多線程;客戶端與服務(wù)端支持同時(shí)連接。
通過iperf應(yīng)用程序UDP,網(wǎng)絡(luò)管理員可以測量UDP網(wǎng)絡(luò)特性:特定寬帶之下的UDP性能;數(shù)據(jù)包流中UDP包丟失情況;數(shù)據(jù)包流中UDP包的延遲抖動(dòng)情況;UDP多播數(shù)據(jù)包的性能;當(dāng)P線程可用時(shí),支持多線程;客戶端與服務(wù)端支持同時(shí)多重連接(不支持Windows)。服務(wù)器端可作為后臺(tái)程序運(yùn)行。服務(wù)器端可作為Windows 服務(wù)運(yùn)行。
2.3.2 tcp測試
首要的iperf的目標(biāo)是幫助調(diào)整TCP連接的一個(gè)特定的路徑。最根本的調(diào)整問題, 在TCP窗口大小,它控制多少數(shù)據(jù)可以在網(wǎng)絡(luò)中傳輸。如果是太小了,可能丟包。理論上使用的TCP窗口大小是帶寬延遲的結(jié)果=瓶頸帶寬*往返時(shí)間,在下面的例子中,鏈接的瓶頸是一個(gè)45兆位/秒的DS3的聯(lián)系和往返時(shí)間測量平為42毫秒,則帶寬延遲結(jié)果230字節(jié)另一個(gè)試驗(yàn)做的是并行的TCP流。如果帶寬總量超過個(gè)人流得到,這是錯(cuò)誤的。無論是TCP窗口大小是太小了,或者操作系統(tǒng)的TCP執(zhí)行錯(cuò)誤,或網(wǎng)絡(luò)本身的缺陷。見上文的TCP窗口大小,否則診斷是有些困難。如果Iperf編制與依靠,一個(gè)單一的客戶端和服務(wù)器可以測試這一點(diǎn),否則安裝多個(gè)客戶機(jī)和服務(wù)器在不同的端口。下面是一個(gè)例子在一個(gè)單一的流得到16.5兆位/秒,但兩個(gè)平行流一起獲得16.7 + 9.4 = 26.1兆位/秒,即使使用大型TCP窗口大小。
2.3.3 udp測試
Iperf創(chuàng)建一個(gè)恒定比特率UDP數(shù)據(jù)流。這是一個(gè)非常人工流,類似語音通信。您將要調(diào)整的數(shù)據(jù)大小將在你的應(yīng)用程序中使用。服務(wù)器檢測UDP連接數(shù)據(jù)損失的身份證號碼中的數(shù)據(jù)。通常是一個(gè)UDP數(shù)據(jù)資料成為幾個(gè)IP數(shù)據(jù)包。失去一個(gè)單一的IP數(shù)據(jù)包將失去整個(gè)數(shù)據(jù)。為了衡量丟包而不是數(shù)據(jù)丟失,使數(shù)據(jù)小到足以放入一個(gè)單一的數(shù)據(jù)包,使用一l選項(xiàng)。的默認(rèn)大小工程1470字節(jié)的以太網(wǎng)。亂序數(shù)據(jù)包檢測(亂序的數(shù)據(jù)包導(dǎo)致一些模棱兩可的數(shù)據(jù)包丟失計(jì)數(shù); Iperf假設(shè)他們是不重復(fù)的數(shù)據(jù)包,因此他們被排除在丟失數(shù)據(jù)包數(shù)量。)自TCP連接沒有損失報(bào)告給用戶,我覺得有用的UDP連接測試看到丟包沿路徑。
2.3.4 jperf
iperf程序可以在命令行下運(yùn)行,它或者也在一個(gè)名為JPerf的Java實(shí)現(xiàn)前端工具上運(yùn)行。JPerf不僅能簡化復(fù)雜命令行參數(shù)的構(gòu)造,而且它還保存測試結(jié)果——同時(shí)實(shí)時(shí)圖形化顯示結(jié)果。
2.4 Iperf開源軟件簡單分析
在開發(fā)Iperf的過程中,開發(fā)者把Socket編程和多線程編程中經(jīng)常用到的一些系統(tǒng)調(diào)用封裝成對象,屏蔽了底層函數(shù)的復(fù)雜接口,提供了模塊化和面向?qū)ο蟮臋C(jī)制,也為我們提供了一些非常實(shí)用的編程工具,我們可以在實(shí)現(xiàn)自己的程序時(shí)復(fù)用這些類。由于這些類實(shí)現(xiàn)的源代碼都比較簡單,也為我們修改前人的代碼實(shí)現(xiàn)自己的功能提供了方便。
這些類的定義與實(shí)現(xiàn)都在源代碼文件夾的lib子文件夾下。主要包括以下一些對象:
SocketAddr類:封裝了Socket接口中的網(wǎng)絡(luò)地址結(jié)構(gòu)(sockaddr_in等)以及各種地址轉(zhuǎn)換的系統(tǒng)調(diào)用(gethostbyname、gethostbyaddr、inet_ntop等);
Socket類:封裝了socket文件描述符,以及socket、listen、connect等系統(tǒng)調(diào)用;
Mutex類以及Condition類:封裝了POSIX標(biāo)準(zhǔn)中的mutex和condition(條件變量)線程同步機(jī)制;
Thread類:封裝了POSIX標(biāo)準(zhǔn)中的多線程機(jī)制,提供了一種簡單易用的線程模型;
Timestamp類:通過Unix系統(tǒng)調(diào)用gettimeofday實(shí)現(xiàn)了一個(gè)時(shí)間戳對象,提供了獲得當(dāng)前時(shí)間戳,計(jì)算兩個(gè)時(shí)間戳之間的先后關(guān)系等方法。
此外,在lib文件夾中還包括一些Iperf的實(shí)現(xiàn)提供的實(shí)用工具函數(shù),包括endian.c文件中的字節(jié)序轉(zhuǎn)換函數(shù)、gnu_getopt文件中的命令行參數(shù)處理函數(shù)、snprintf文件中的字符串格式化函數(shù)、signal.c文件中的與信號處理有關(guān)的函數(shù)、string.c文件中的字符處理函數(shù)、tcp_window_size.c文件中的TCP窗口大小處理函數(shù)等。
3 網(wǎng)絡(luò)性能測量的是實(shí)際應(yīng)用
在實(shí)際網(wǎng)絡(luò)測試中,簡單的采用ping命令的方法進(jìn)行連通性測試是可行的,但它的結(jié)果對于網(wǎng)絡(luò)性能的評價(jià)沒有實(shí)際意義。如果希望對網(wǎng)絡(luò)性能作出相對深入的分析,那么就需要綜合的應(yīng)用多種網(wǎng)絡(luò)測試工具。
一種綜合使用網(wǎng)絡(luò)測試工具測試網(wǎng)絡(luò)傳輸狀態(tài)的方法如下。
1)使用pathrate應(yīng)用程序確定源結(jié)點(diǎn)到目的節(jié)點(diǎn)的網(wǎng)絡(luò)最大帶寬
2)使用netperf應(yīng)用程序確定源結(jié)點(diǎn)到目的節(jié)點(diǎn)的實(shí)際網(wǎng)絡(luò)帶寬
3)使用ntop應(yīng)用程序分析網(wǎng)絡(luò)流量
4)使用Netlogger應(yīng)用程序分析主機(jī)運(yùn)行狀況
以上測試結(jié)果對與網(wǎng)絡(luò)管理員確定網(wǎng)絡(luò)帶寬瓶頸的位置有幫助
Web是Internet最常用的一種運(yùn)用,一種綜合使用網(wǎng)絡(luò)測試工具測試網(wǎng)絡(luò)web服務(wù)性能的方法如下。
1)使用netperf模擬http流量
2)使用tcptrace應(yīng)用程序觀察http會(huì)話
以上測試結(jié)果對于網(wǎng)絡(luò)管理員確定web系統(tǒng)服務(wù)的狀態(tài)與網(wǎng)絡(luò)整體服務(wù)性能有幫助
4 結(jié)束語
通過對網(wǎng)絡(luò)性能測量進(jìn)行簡單描述,利用Iperf軟件詳細(xì)介紹了網(wǎng)絡(luò)性能測量工具的使用和用途,最后簡單描述網(wǎng)絡(luò)性能測量工具的實(shí)際應(yīng)用。
參考文獻(xiàn):
[1] 吳功宜.計(jì)算機(jī)網(wǎng)絡(luò)高級教程[M].北京:清華大學(xué)出版社,2007.
[2] 張勇.網(wǎng)絡(luò)性能測量技術(shù)的研究[J].科技資訊,2006(20).
[3] 雷劍剛,吳洲.網(wǎng)絡(luò)性能測量技術(shù)的研究[J].福建電腦,2006(5).