網絡性能評估工具Iperf詳解

一、網絡性能評估工具Iperf

網絡性能評估主要是監測網絡帶寬的使用率,將網絡帶寬利用最大化是保證網絡性能的基礎,但是由於網絡設計不合理、網絡存在安全漏洞等原因,都會導致網絡帶寬利用率不高。要找到網絡帶寬利用率不高的原因,就需要對網絡傳輸進行監控,此時就需要用到一些網絡性能評估工具,而Iperf就是這樣一款網絡帶寬測試工具,本節將詳細介紹一下Iperf的使用。

1、Iperf能做什麼

Iperf是一款基於TCP/IP和UDP/IP的網絡性能測試工具,它可以用來測量網絡帶寬和網絡質量,還可以提供網絡延遲抖動、數據包丟失率、最大傳輸單元等統計信息。網絡管理員可以根據這些信息瞭解並判斷網絡性能問題,從而定位網絡瓶頸,解決網絡故障。

下面介紹Iperf的主要功能。

(1)TCP方面

q 測試網絡帶寬。

q 支持多線程,在客戶端與服務端支持多重連接。

q 報告MSS/MTU值的大小。

q 支持TCP窗口值自定義並可通過套接字緩衝。

(2)UDP方面

q 可以設置指定帶寬的UDP數據流

q 可以測試網絡抖動值、丟包數

q 支持多播測試

q 支持多線程,在客戶端與服務端支持多重連接。

二、Iperf的安裝與使用

iperf可以運行在任何IP網絡上,包括本地以太網、接入因特網、Wi-Fi網絡等。在工作模式上,iperf運行於服務器、客戶端模式下,其服務器端主要用於監聽到達的測試請求,而客戶端主要用於發起連接會話,因此要使用iperf,需要兩臺服務器,一臺運行在服務器模式下,另一臺運行在客戶端模式下。

1.安裝iperf

iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多種操作系統平臺。讀者可以從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參數介紹

在完成iperf安裝後,執行“iperf3 –h”即可顯示iperf的詳細用法。iperf的命令行選項共分爲三類,分別是客戶端與服務器端公用選項、服務器端專用選項和客戶端專用選項,下面對常用的選項進行介紹。

服務器端專用選項的含義如表1所示。

表1 服務器端專用選項的含義

命令行參數

含義描述

-s

將iperf以server模式啓動,例如:iperf3 –s,iperf3默認啓動的監聽端口爲5201,可以通過“-p”選項修改默認監聽端口

-D

將iperf作爲後臺守護進程運行,例如:iperf3 -s -D

客戶端專用選項的含義如表2.5所示。

表2 客戶端專用選項的含義

命令行參數

含義描述

-c

將iperf以client模式啓動

例如:iperf3 -c 192.168.12.168,其中192.168.12.168是server端的IP地址

-u

指定使用UDP協議

-b [K|M|G]

指定UDP模式使用的帶寬,單位bits/sec。此選項與“-u”選項相關。默認值是1 Mbit/sec

-t

指定傳輸數據包的總時間。iperf將在指定的時間內,重複發送指定長度的數據包。默認是10秒鐘

-n [K|M|G]

指定傳輸數據包的字節數,例如:iperf3 -c 192.168.12.168 –n 100M

-l

指定讀寫緩衝區的長度。TCP方式默認大小爲8KB,UDP方式默認大小爲1470字節

-P

指定客戶端與服務端之間使用的線程數。默認是1個線程。需要客戶端與服務器端同時使用此參數

-R

切換數據發送接收模式,例如默認客戶端發送,服務器端接收,設置此參數後,數據流向變爲客戶端接收,服務器端發送

-w

指定套接字緩衝區大小,在TCP方式下,此設置爲TCP窗口的大小。在UDP方式下,此設置爲接受UDP數據包的緩衝區大小,用來限制可以接收數據包的最大值

-B

用來綁定一個主機地址或接口,這個參數僅用於具有多個網絡接口的主機。在UDP模式下,此參數用於綁定和加入一個多播組

-M

設置TCP最大信息段的值

-N

設置TCP無延時

客戶端與服務器端公用選項的含義如表3所示。

表3 客戶端與服務器端公用選項的含義

命令行參數

含義描述

-f [k|m|g|K|M|G]

指定帶寬輸出單位,“[k|m|g|K|M|G]”分別表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes顯示輸出結果,默認以Mbits爲單位,例如:iperf3 -c 192.168.12.168 -f M

-p

指定服務器端使用的端口或客戶端所連接的端口,例如:

iperf3 -s -p 9527;

iperf3 -c 192.168.12.168 -p 9527

-i

指定每次報告之間的時間間隔,單位爲秒。如果設置爲非零值,就會按照此時間間隔輸出測試報告。默認值爲1。

例如:iperf3 -c 192.168.12.168 -i 2

-F

指定文件作爲數據流進行帶寬測試。

例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz

2.3.3 Iperf應用實例

要使用iperf,首先要啓用一個服務端,這裏假定服務端的IP地址爲192.168.12.168,在此服務器上運行“iperf3 -s”即可開啓iperf的服務器模式。在默認情況下,iperf3將在服務端打開一個5201監聽端口,此時就可以將另一臺服務器作爲客戶端執行iperf功能測試了。

1.測試TCP吞吐量

爲了確定網卡的最大吞吐量,可以在任意客戶端運行iperf命令,iperf將嘗試從客戶端儘可能快地向服務端發送數據請求,並且會輸出發送的數據量和網卡平均帶寬值。圖1是一個最簡單的帶寬測試命令。

clip_image002

圖1通過iperf測試網絡帶寬利用率

從圖1可以看出,iperf默認的運行時間是10秒鐘,每隔一秒鐘輸出一次傳輸狀態,同時還可以看到每秒鐘傳輸的數據量在112MB左右,剛好與“Bandwidth”列的值對應起來,網卡的帶寬速率維持在941Mbits/sec左右,而測試的服務器是千兆網卡,這個測試值也基本合理。在輸出的最後,iperf還給出了總的數據發送、接收量,並給出了帶寬速率平均值,通過這些值,基本可以判斷網絡帶寬是否正常,網絡傳輸狀態是否穩定。

iperf提供很多參數,可以多角度、全方位地測試網絡帶寬利用率,例如,要改變iperf運行的時間和輸出頻率,可以通過“-t”和“-i”參數來實現,如圖2所示。

clip_image004

圖2 添加“-t”和“-i”參數後的iperf輸出

從圖2 可以看出,輸出狀態的間隔變爲每5秒鐘一次,總共執行測試時間爲20秒,測試的帶寬速率仍然保持在941Mbits/sec左右,唯一變化的是失敗重傳次數增加了。

爲了模擬大量的數據傳輸,也可以指定要發送的數據量,這可以通過“-n”參數來實現。在指定“-n”參數後,“-t”參數失效,iperf在傳輸完畢指定大小的數據包後,自動結束,如圖3所示。

clip_image006

圖3 iperf客戶端通過“-n”參數指定要傳輸的數據量

圖3的例子是指定發送一個5GB左右的數據包,並且每隔10秒鐘輸出一次傳輸狀態,從這個輸出可以看出,當失敗重傳次數較多時,傳輸速率急速下降。

有時候,爲了模擬更真實的TCP應用,iperf客戶端允許從一個特定的文件發送數據,這可以通過“-F”參數實現,如圖4所示。

clip_image008

圖4 iperf客戶端通過“-F”參數指定文件來發送數據

在圖4的例子中,通過“-F”參數指定了一個webdata.tar.gz文件作爲iperf要傳輸的數據,在使用此參數時,需要同時指定一個“-t”參數來設置要測試傳輸的時間,這個時間儘量設置長一些,因爲在默認傳輸時間10秒內,這個文件可能還沒有傳完。

在使用iperf進行網絡帶寬測試時,如果沒有指定發送方式,iperf客戶端只會使用一個單一的線程,而iperf是支持多線程的,可以使用iperf提供的“-P”參數來設置多線程的數目,通過使用多線程,可以在一定程度上增加網絡的吞吐量。

下面通過兩個例子進行簡單對比,圖5是iperf使用單線程傳輸1.86GBytes數據所消耗的時間和帶寬使用情況。爲了速率單位統一,這裏使用“-f”參數將輸出結果都通過MBytes來顯示。

clip_image010

圖5 iperf在單線程模式下的傳輸時間和傳輸速率

從圖5中可以看出,傳輸1.86GBytes的數據消耗了17秒的時間,平均帶寬速率爲112MBytes/sec(注意單位).下面再看看使用多線程後,iperf傳輸同樣大小數據量所消耗的時間和平均帶寬速率,如圖6所示。

clip_image012

圖6 iperf使用多線程後的數據傳輸狀態

這裏通過“-P”參數開啓了2個多線程,從傳輸時間上看,傳輸1.86GBytes的數據,消耗時間爲10.79秒,比之前單線程的傳輸時間少了近7秒鐘,在平均帶寬速率上,從之前單線程的112MBytes/sec提高到177MBytes/sec,從這個結果可以看出,多線程對網絡傳輸性能的提高不小。

2 . 測試UDP丟包和延遲

iperf也可以用於UDP數據包吞吐量、丟包率和延遲指標,但是由於UDP協議是一個非面向連接的輕量級傳輸協議,並且不提供可靠的數據傳輸服務,因此對UDP應用的關注點不是傳輸數據有多快,而是它的丟包率和延時指標。通過iperf的“-u”參數即可測試UDP應用的傳輸性能,圖7測試的是在iperf客戶端傳輸100MB的UDP數據包的輸出結果.:

clip_image014

圖7 iperf傳輸100MB的UDP數據包的輸出結果

在圖7中,重點關注虛線下的一段內容,在這段輸出中,“Jitter”列表示抖動時間,或者稱爲傳輸延遲,“Lost/Total”列表示丟失的數據報和總的數據報數量,後面的0.33%是平均丟包的比率,“Datagrams”列顯示的是總共傳輸數據報的數量。

這個輸出結果過於簡單,要了解更詳細的UDP丟包和延時信息,可以在iperf服務端查看,因爲在客戶端執行傳輸測試的同時,服務端也會同時顯示傳輸狀態,如圖8所示。

clip_image016

圖8 iperf服務端顯示的UDP傳輸狀態

在這個輸出中,詳細記錄了在傳輸過程中,每個階段的傳輸延時和丟包率,在UDP應用中隨着傳輸數據的增大,丟包率和延時也隨之增加。對於延時和丟包可以通過改變應用程序來緩解或修復,例如視頻流應用,可以通過緩存數據的方式而可以容忍更大的延時。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章