【博文推薦】安全運(yùn)維之:網(wǎng)絡(luò)性能評估工具Iperf詳解
本文出自南非螞蟻的BLOG,如需與本文作者討論互動,請直接點(diǎn)擊這里跳轉(zhuǎn)。 |
一、網(wǎng)絡(luò)性能評估工具Iperf
網(wǎng)絡(luò)性能評估主要是監(jiān)測網(wǎng)絡(luò)帶寬的使用率,將網(wǎng)絡(luò)帶寬利用***化是保證網(wǎng)絡(luò)性能的基礎(chǔ),但是由于網(wǎng)絡(luò)設(shè)計不合理、網(wǎng)絡(luò)存在安全漏洞等原因,都會導(dǎo)致網(wǎng)絡(luò)帶寬利用率不高。要找到網(wǎng)絡(luò)帶寬利用率不高的原因,就需要對網(wǎng)絡(luò)傳輸進(jìn)行監(jiān)控,此時就需要用到一些網(wǎng)絡(luò)性能評估工具,而Iperf就是這樣一款網(wǎng)絡(luò)帶寬測試工具,本節(jié)將詳細(xì)介紹一下Iperf的使用。
1、Iperf能做什么
Iperf是一款基于TCP/IP和UDP/IP的網(wǎng)絡(luò)性能測試工具,它可以用來測量網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)質(zhì)量,還可以提供網(wǎng)絡(luò)延遲抖動、數(shù)據(jù)包丟失率、***傳輸單元等統(tǒng)計信息。網(wǎng)絡(luò)管理員可以根據(jù)這些信息了解并判斷網(wǎng)絡(luò)性能問題,從而定位網(wǎng)絡(luò)瓶頸,解決網(wǎng)絡(luò)故障。
下面介紹Iperf的主要功能。
(1)TCP方面
q 測試網(wǎng)絡(luò)帶寬。
q 支持多線程,在客戶端與服務(wù)端支持多重連接。
q 報告MSS/MTU值的大小。
q 支持TCP窗口值自定義并可通過套接字緩沖。
(2)UDP方面
q 可以設(shè)置指定帶寬的UDP數(shù)據(jù)流
q 可以測試網(wǎng)絡(luò)抖動值、丟包數(shù)
q 支持多播測試
q 支持多線程,在客戶端與服務(wù)端支持多重連接。
二、Iperf的安裝與使用
iperf可以運(yùn)行在任何IP網(wǎng)絡(luò)上,包括本地以太網(wǎng)、接入因特網(wǎng)、Wi-Fi網(wǎng)絡(luò)等。在工作模式上,iperf運(yùn)行于服務(wù)器、客戶端模式下,其服務(wù)器端主要用于監(jiān)聽到達(dá)的測試請求,而客戶端主要用于發(fā)起連接會話,因此要使用iperf,需要兩臺服務(wù)器,一臺運(yùn)行在服務(wù)器模式下,另一臺運(yùn)行在客戶端模式下。
1.安裝iperf
iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多種操作系統(tǒng)平臺。讀者可以從iperf官方主頁http://iperf.fr/ 下載各種版本,目前***的版本是iperf3.0,這里下載的軟件包為iperf-3.0.tar.gz,安裝過程如下:
[root@ networkserver ~]# tar zxvf iperf-3.0.tar.gz
[root@ networkserver ~]# cd iperf
[root@ networkserver iperf]# make
[root@ networkserver iperf]# make install
這樣,iperf就安裝完成了。
2.iperf參數(shù)介紹
在完成iperf安裝后,執(zhí)行“iperf3 –h”即可顯示iperf的詳細(xì)用法。iperf的命令行選項(xiàng)共分為三類,分別是客戶端與服務(wù)器端公用選項(xiàng)、服務(wù)器端專用選項(xiàng)和客戶端專用選項(xiàng),下面對常用的選項(xiàng)進(jìn)行介紹。
服務(wù)器端專用選項(xiàng)的含義如表1所示。
表1 服務(wù)器端專用選項(xiàng)的含義
命令行參數(shù) |
含義描述 |
-s |
將iperf以server模式啟動,例如:iperf3 –s,iperf3默認(rèn)啟動的監(jiān)聽端口為5201,可以通過“-p”選項(xiàng)修改默認(rèn)監(jiān)聽端口 |
-D |
將iperf作為后臺守護(hù)進(jìn)程運(yùn)行,例如:iperf3 -s -D |
客戶端專用選項(xiàng)的含義如表2.5所示。
表2 客戶端專用選項(xiàng)的含義
命令行參數(shù) |
含義描述 |
-c |
將iperf以client模式啟動 例如:iperf3 -c 192.168.12.168,其中192.168.12.168是server端的IP地址 |
-u |
指定使用UDP協(xié)議 |
-b [K|M|G] |
指定UDP模式使用的帶寬,單位bits/sec。此選項(xiàng)與“-u”選項(xiàng)相關(guān)。默認(rèn)值是1 Mbit/sec |
-t |
指定傳輸數(shù)據(jù)包的總時間。iperf將在指定的時間內(nèi),重復(fù)發(fā)送指定長度的數(shù)據(jù)包。默認(rèn)是10秒鐘 |
-n [K|M|G] |
指定傳輸數(shù)據(jù)包的字節(jié)數(shù),例如:iperf3 -c 192.168.12.168 –n 100M |
-l |
指定讀寫緩沖區(qū)的長度。TCP方式默認(rèn)大小為8KB,UDP方式默認(rèn)大小為1470字節(jié) |
-P |
指定客戶端與服務(wù)端之間使用的線程數(shù)。默認(rèn)是1個線程。需要客戶端與服務(wù)器端同時使用此參數(shù) |
-R |
切換數(shù)據(jù)發(fā)送接收模式,例如默認(rèn)客戶端發(fā)送,服務(wù)器端接收,設(shè)置此參數(shù)后,數(shù)據(jù)流向變?yōu)榭蛻舳私邮?,服?wù)器端發(fā)送 |
-w |
指定套接字緩沖區(qū)大小,在TCP方式下,此設(shè)置為TCP窗口的大小。在UDP方式下,此設(shè)置為接受UDP數(shù)據(jù)包的緩沖區(qū)大小,用來限制可以接收數(shù)據(jù)包的***值 |
-B |
用來綁定一個主機(jī)地址或接口,這個參數(shù)僅用于具有多個網(wǎng)絡(luò)接口的主機(jī)。在UDP模式下,此參數(shù)用于綁定和加入一個多播組 |
-M |
設(shè)置TCP***信息段的值 |
-N |
設(shè)置TCP無延時 |
客戶端與服務(wù)器端公用選項(xiàng)的含義如表3所示。
表3 客戶端與服務(wù)器端公用選項(xiàng)的含義
命令行參數(shù) |
含義描述 |
-f [k|m|g|K|M|G] |
指定帶寬輸出單位,“[k|m|g|K|M|G]”分別表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes顯示輸出結(jié)果,默認(rèn)以Mbits為單位,例如:iperf3 -c 192.168.12.168 -f M |
-p |
指定服務(wù)器端使用的端口或客戶端所連接的端口,例如: iperf3 -s -p 9527; iperf3 -c 192.168.12.168 -p 9527 |
-i |
指定每次報告之間的時間間隔,單位為秒。如果設(shè)置為非零值,就會按照此時間間隔輸出測試報告。默認(rèn)值為1。 例如:iperf3 -c 192.168.12.168 -i 2 |
-F |
指定文件作為數(shù)據(jù)流進(jìn)行帶寬測試。 例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz |
2.3.3 Iperf應(yīng)用實(shí)例
要使用iperf,首先要啟用一個服務(wù)端,這里假定服務(wù)端的IP地址為192.168.12.168,在此服務(wù)器上運(yùn)行“iperf3 -s”即可開啟iperf的服務(wù)器模式。在默認(rèn)情況下,iperf3將在服務(wù)端打開一個5201監(jiān)聽端口,此時就可以將另一臺服務(wù)器作為客戶端執(zhí)行iperf功能測試了。
1.測試TCP吞吐量
為了確定網(wǎng)卡的***吞吐量,可以在任意客戶端運(yùn)行iperf命令,iperf將嘗試從客戶端盡可能快地向服務(wù)端發(fā)送數(shù)據(jù)請求,并且會輸出發(fā)送的數(shù)據(jù)量和網(wǎng)卡平均帶寬值。圖1是一個最簡單的帶寬測試命令。
圖1通過iperf測試網(wǎng)絡(luò)帶寬利用率
從圖1可以看出,iperf默認(rèn)的運(yùn)行時間是10秒鐘,每隔一秒鐘輸出一次傳輸狀態(tài),同時還可以看到每秒鐘傳輸?shù)臄?shù)據(jù)量在112MB左右,剛好與“Bandwidth”列的值對應(yīng)起來,網(wǎng)卡的帶寬速率維持在941Mbits/sec左右,而測試的服務(wù)器是千兆網(wǎng)卡,這個測試值也基本合理。在輸出的***,iperf還給出了總的數(shù)據(jù)發(fā)送、接收量,并給出了帶寬速率平均值,通過這些值,基本可以判斷網(wǎng)絡(luò)帶寬是否正常,網(wǎng)絡(luò)傳輸狀態(tài)是否穩(wěn)定。
iperf提供很多參數(shù),可以多角度、全方位地測試網(wǎng)絡(luò)帶寬利用率,例如,要改變iperf運(yùn)行的時間和輸出頻率,可以通過“-t”和“-i”參數(shù)來實(shí)現(xiàn),如圖2所示。
圖2 添加“-t”和“-i”參數(shù)后的iperf輸出
從圖2 可以看出,輸出狀態(tài)的間隔變?yōu)槊?秒鐘一次,總共執(zhí)行測試時間為20秒,測試的帶寬速率仍然保持在941Mbits/sec左右,唯一變化的是失敗重傳次數(shù)增加了。
為了模擬大量的數(shù)據(jù)傳輸,也可以指定要發(fā)送的數(shù)據(jù)量,這可以通過“-n”參數(shù)來實(shí)現(xiàn)。在指定“-n”參數(shù)后,“-t”參數(shù)失效,iperf在傳輸完畢指定大小的數(shù)據(jù)包后,自動結(jié)束,如圖3所示。
圖3 iperf客戶端通過“-n”參數(shù)指定要傳輸?shù)臄?shù)據(jù)量
圖3的例子是指定發(fā)送一個5GB左右的數(shù)據(jù)包,并且每隔10秒鐘輸出一次傳輸狀態(tài),從這個輸出可以看出,當(dāng)失敗重傳次數(shù)較多時,傳輸速率急速下降。
有時候,為了模擬更真實(shí)的TCP應(yīng)用,iperf客戶端允許從一個特定的文件發(fā)送數(shù)據(jù),這可以通過“-F”參數(shù)實(shí)現(xiàn),如圖4所示。
圖4 iperf客戶端通過“-F”參數(shù)指定文件來發(fā)送數(shù)據(jù)
在圖4的例子中,通過“-F”參數(shù)指定了一個webdata.tar.gz文件作為iperf要傳輸?shù)臄?shù)據(jù),在使用此參數(shù)時,需要同時指定一個“-t”參數(shù)來設(shè)置要測試傳輸?shù)臅r間,這個時間盡量設(shè)置長一些,因?yàn)樵谀J(rèn)傳輸時間10秒內(nèi),這個文件可能還沒有傳完。
在使用iperf進(jìn)行網(wǎng)絡(luò)帶寬測試時,如果沒有指定發(fā)送方式,iperf客戶端只會使用一個單一的線程,而iperf是支持多線程的,可以使用iperf提供的“-P”參數(shù)來設(shè)置多線程的數(shù)目,通過使用多線程,可以在一定程度上增加網(wǎng)絡(luò)的吞吐量。
下面通過兩個例子進(jìn)行簡單對比,圖5是iperf使用單線程傳輸1.86GBytes數(shù)據(jù)所消耗的時間和帶寬使用情況。為了速率單位統(tǒng)一,這里使用“-f”參數(shù)將輸出結(jié)果都通過MBytes來顯示。
圖5 iperf在單線程模式下的傳輸時間和傳輸速率
從圖5中可以看出,傳輸1.86GBytes的數(shù)據(jù)消耗了17秒的時間,平均帶寬速率為112MBytes/sec(注意單位).下面再看看使用多線程后,iperf傳輸同樣大小數(shù)據(jù)量所消耗的時間和平均帶寬速率,如圖6所示。
圖6 iperf使用多線程后的數(shù)據(jù)傳輸狀態(tài)
這里通過“-P”參數(shù)開啟了2個多線程,從傳輸時間上看,傳輸1.86GBytes的數(shù)據(jù),消耗時間為10.79秒,比之前單線程的傳輸時間少了近7秒鐘,在平均帶寬速率上,從之前單線程的112MBytes/sec提高到177MBytes/sec,從這個結(jié)果可以看出,多線程對網(wǎng)絡(luò)傳輸性能的提高不小。
2 . 測試UDP丟包和延遲
iperf也可以用于UDP數(shù)據(jù)包吞吐量、丟包率和延遲指標(biāo),但是由于UDP協(xié)議是一個非面向連接的輕量級傳輸協(xié)議,并且不提供可靠的數(shù)據(jù)傳輸服務(wù),因此對UDP應(yīng)用的關(guān)注點(diǎn)不是傳輸數(shù)據(jù)有多快,而是它的丟包率和延時指標(biāo)。通過iperf的“-u”參數(shù)即可測試UDP應(yīng)用的傳輸性能,圖7測試的是在iperf客戶端傳輸100MB的UDP數(shù)據(jù)包的輸出結(jié)果.:
圖7 iperf傳輸100MB的UDP數(shù)據(jù)包的輸出結(jié)果
在圖7中,重點(diǎn)關(guān)注虛線下的一段內(nèi)容,在這段輸出中,“Jitter”列表示抖動時間,或者稱為傳輸延遲,“Lost/Total”列表示丟失的數(shù)據(jù)報和總的數(shù)據(jù)報數(shù)量,后面的0.33%是平均丟包的比率,“Datagrams”列顯示的是總共傳輸數(shù)據(jù)報的數(shù)量。
這個輸出結(jié)果過于簡單,要了解更詳細(xì)的UDP丟包和延時信息,可以在iperf服務(wù)端查看,因?yàn)樵诳蛻舳藞?zhí)行傳輸測試的同時,服務(wù)端也會同時顯示傳輸狀態(tài),如圖8所示。
圖8 iperf服務(wù)端顯示的UDP傳輸狀態(tài)
在這個輸出中,詳細(xì)記錄了在傳輸過程中,每個階段的傳輸延時和丟包率,在UDP應(yīng)用中隨著傳輸數(shù)據(jù)的增大,丟包率和延時也隨之增加。對于延時和丟包可以通過改變應(yīng)用程序來緩解或修復(fù),例如視頻流應(yīng)用,可以通過緩存數(shù)據(jù)的方式而可以容忍更大的延時。