【學習筆記】Iperf3網路性能測試工具

本文下載鏈接

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

一、Iperf簡介

1、什麼是iperf?

Iperf是美國伊利諾斯大學(University of Illinois)開發的一種開源的網路性能測試工具。可以用來測試網路節點間(也包括迴環)TCP或UDP連接的性能,包括頻寬、抖動以及丟包率,其中抖動和丟包率適應於UDP測試,而頻寬測試適應於TCP和UDP。

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

Iperf 是一款基於命令行模式的網路性能測試工具,是跨平台的,提供橫跨Windows、Linux、Mac的全平台支援。iperf 全程使用記憶體作為發送/接收緩衝區,不受磁碟性能的影響,對於機器配置要求很低。不過由於是命令行工具, iperf 不支援輸出測試圖形。

Iperf可以測試TCP和UDP頻寬品質,具有多種參數和UDP特性,可以用來測試一些網路設備如路由器,防火牆,交換機等的性能。

2、Iperf的功能
(1)TCP方面

① 測量網路頻寬

② 報告MSS/MTU值的大小和觀測值

③ 支援TCP窗口值通過套接字緩衝

④ 當P執行緒或Win32執行緒可用時,支援多執行緒。客戶端與服務端支援同時多重連接

(2)UDP方面

① 客戶端可以創建指定頻寬的UDP流

② 測量丟包

③ 測量延遲

④ 支援多播

⑤ 當P執行緒可用時,支援多執行緒。客戶端與服務端支援同時多重連接(不支援Windows)

(3)其他方面

① 在適當的地方,選項中可以使用K(kilo-)和M(mega-)。例如131072位元組可以用128K代替。

② 可以指定運行的總時間,甚至可以設置傳輸的數據總量。

③ 在報告中,為數據選用最合適的單位。

④ 伺服器支援多重連接,而不是等待一個單執行緒測試。

⑤ 在指定時間間隔重複顯示網路頻寬,波動和丟包情況。

⑥ 伺服器端可作為後台程式運行。

⑦ 伺服器端可作為Windows 服務運行。

⑧ 使用典型數據流來測試鏈接層壓縮對於可用頻寬的影響。

二、Iperf的安裝

1、iperf的版本

Iperf有兩種版本,windows版和linux版本。

(1)Unix/Linux版

Unix/Linux版更新比較快,版本最新,目前最新的版本是iperf3.0。

Linux版本下載地址://code.google.com/p/iperf/downloads/list

為了測試的準確性,盡量使用linux環境測試。

(2)Windows版

Windows版iperf叫jperf,或者xjperf,更新慢,目前最新版本為1.7(打包在jperf中)。

Windows版本下載地址://sourceforge.net/projects/iperf/files/jperf/jperf 2.0.0/

jperf是在iperf基礎上開發的圖形介面程式,簡化了複雜命令行參數的構造,而且還能保存測試結果,同時實時圖形化顯示結果。

2、Windows版iperf安裝

對於windows版的iperf,下載安裝包後直接解壓,然後將解壓出來的iperf.exe和cygwin1.dll複製到%systemroot%目錄即可。

3、Linux版iperf安裝
(1)在線安裝:

CentOS安裝:yum install -y iperf3

Debian和Ubuntu安裝:apt-get install iperf3

(2)離線安裝:下載相應版本的安裝包

gunzip -c iperf-.tar.gz | tar -xvf – cd iperf- ./configure make make install

三、Iperf的使用

1、Iperf的工作模式

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

在完成iperf安裝後,執行「iperf3 –h」即可顯示iperf的詳細用法。iperf的命令行選項共分為三類,分別是客戶端與伺服器端公用選項、伺服器端專用選項和客戶端專用選項。

2、Iperf常用參數(測試夠用)

(1)-s,–server:iperf伺服器模式,默認啟動的監聽埠為5201,eg:iperf -s

(2)-c,–client host:iperf客戶端模式,host是server端地址,eg:iperf -c 222.35.11.23

(3)-i,–interval:指定每次報告之間的時間間隔,單位為秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-p,–port:指定伺服器端監聽的埠或客戶端所連接的埠,默認是5001埠。

(5)-u,–udp:表示採用UDP協議發送報文,不帶該參數表示採用TCP協議。

(6)-l,–len:設置讀寫緩衝區的長度,單位為 Byte。TCP方式默認為8KB,UDP方式默認為1470位元組。通常測試 PPS 的時候該值為16,測試BPS時該值為1400。

(7)-b,–bandwidth [K|M|G]:指定UDP模式使用的頻寬,單位bits/sec,默認值是1 Mbit/sec。

(8)-t,–time:指定數據傳輸的總時間,即在指定的時間內,重複發送指定長度的數據包。默認10秒。

(9)-A:CPU親和性,可以將具體的iperf3進程綁定對應編號的邏輯CPU,避免iperf進程在不同的CPU間調度。

3、通用參數(Server端和Client端共用)

(1)-f,–farmat [k|m|g|K|M|G]:指定頻寬輸出單位,「[k|m|g|K|M|G]」分別表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes顯示輸出結果,默認Mbits,eg:iperf3 -c 192.168.12.168 -f M

(2)-p,–port:指定伺服器端監聽的埠或客戶端所連接的埠,默認是5001埠。

(3)-i,–interval:指定每次報告之間的時間間隔,單位為秒,eg:iperf3 -c 192.168.12.168 -i 2

(4)-F:指定文件作為數據流進行頻寬測試。例如:iperf3 -c 192.168.12.168 -F web-ixdba.tar.gz

4、Server端專用參數

(1)-s,–server:iperf伺服器模式,默認啟動的監聽埠為5201,eg:iperf -s

(2)-c,–client host:如果iperf運行在伺服器模式,並且用-c參數指定一個主機,那麼iperf將只接受指定主機的連接。此參數不能工作於UDP模式。

(3)-D:Unix平台下將Iperf作為後台守護進程運行。在Win32平台下,Iperf將作為服務運行。

(4)-R:卸載Iperf服務(僅用於Windows)。

(5)-o:重定向輸出到指定文件(僅用於Windows)。

(6)-P,–parallel:伺服器關閉之前保持的連接數。默認是0,這意味著永遠接受連接。

5、Client端專用參數

(1)-c,–client host:iperf客戶端模式,host是server端地址,eg:iperf -c 222.35.11.23

(2)-u,–udp:表示採用UDP協議發送報文,不帶該參數表示採用TCP協議。

(3)-b,–bandwidth [K|M|G]:指定UDP模式使用的頻寬,單位bits/sec,默認值是1 Mbit/sec。

(4)-t,–time:指定數據傳輸的總時間,即在指定的時間內,重複發送指定長度的數據包。默認10秒。

(5)-l,–len:設置讀寫緩衝區的長度,單位為 Byte。TCP默認為8KB,UDP默認為1470位元組。通常測試 PPS 的時候該值為16,測試BPS時該值為1400。

(6)-n,–num [K|M|G]:指定傳輸數據包的位元組數,例如:iperf3 -c 192.168.12.168 –n 100M

(7)-P,–parallel:指定客戶端與服務端之間使用的執行緒數。默認是1個執行緒。需要客戶端與伺服器端同時使用此參數。

(8)-w,–window:指定套接字緩衝區大小,在TCP方式下,此設置為TCP窗口的大小。在UDP方式下,此設置為接受UDP數據包的緩衝區大小,用來限制可以接收數據包的最大值

(9)-B,–bind:用來綁定一個主機地址或介面,這個參數僅用於具有多個網路介面的主機。在UDP模式下,此參數用於綁定和加入一個多播組。

(10)-M,–mss:設置TCP最大資訊段的值

(11)-N,–nodelay:設置TCP無延時

(12)-V:綁定一個IPv6地址。

(13)-d,–dualtest:運行雙測試模式。將使伺服器端反向連接到客戶端,使用-L參數中指定的埠(或默認使用客戶端連接到伺服器端的埠)。使用參數-r以運行交互模式。

(14)-L,–listenport:指定服務端反向連接到客戶端時使用的埠。默認使用客戶端連接至服務端的埠。

(15)-r,–tradeoff:往複測試模式。當客戶端到伺服器端的測試結束時,伺服器端反向連接至客戶端。當客戶端連接終止時,反向連接隨即開始。如果需要同時進行雙向測試,請嘗試-d參數。

6、其他參數

(1)-h,–help:顯示命令行參考並退出。

[root]# iperf3 -h  
Usage: iperf3  [-s|-c host] [options]  
iperf3 [-h|--help] [-v|--version]

(2)-v,–version:顯示版本資訊和編譯資訊並退出。

四、Iperf使用實例

1、環境準備:

(1)Server端IP地址:192.168.0.120

(2)Server端IP地址:192.168.0.121

2、測試TCP吞吐量
(1)Server端開啟iperf的伺服器模式,指定TCP埠:
[root@iperf-server  ~]# iperf3 -s -i 1 -p  520  
------------------------------------------------------------  
Server listening  on TCP port 520  
TCP window size:  85.3 KByte (default)  
------------------------------------------------------------ 
(2)Client端啟動iperf的客戶端模式,連接服務端
[root@iperf-client  ~]# iperf -c 192.168.0.120  -i 1 -t 60 -p 520  
------------------------------------------------------------  
Client connecting  to 192.168.0.120, TCP port 520  
TCP window size:  45.0 KByte (default)  
------------------------------------------------------------  
[ 3] local 192.168.0.121  port 50616 connected with 192.168.0.120 port 520  
[ ID] Interval  Transfer Bandwidth  
[ 3] 0.0-10.1 sec  1.27 GBytes 1.08 Gbits/sec     
(3)Server端監聽結果
------------------------------------------------------------  
Server listening  on TCP port 5001  TCP window size:  85.3 KByte (default)  
------------------------------------------------------------  
[ 4] local 192.168.0.120  port 520 connected with 192.168.0.121 port 50616  
[ ID] Interval  Transfer Bandwidth  
[ 4] 0.0-10.1 sec  1.27 GBytes 1.08 Gbits/sec  

① Interval表示時間間隔。

② Transfer表示時間間隔裡面轉輸的數據量。

③ Bandwidth是時間間隔里的傳輸速率。

(4)測試多執行緒TCP吞吐量

如果沒有指定發送方式,iPerf客戶端只會使用單執行緒。

iperf3 -c 192.168.0.120 -P 30 -t 60  
(5)進行上下行頻寬測試(雙向傳輸)
iperf3 -c 192.168.0.120 -d -t 60
(6)停止iperf3服務進程

要停止iperf3服務進程,請按CTRL+z或CTRL+c

建議在Server端執行sar命令來統計實際收到的包並作為實際結果:sar -n DEV 1 320

3、測試UDP吞吐量

頻寬測試通常採用UDP模式,因為能測出極限頻寬、時延抖動、丟包率。在進行測試時,首先以鏈路理論頻寬作為數據發送速率進行測試,例如,從客戶端到伺服器之間的鏈路的理論頻寬為100Mbps,先用-b 100M進行測試,然後根據測試結果(包括實際頻寬,時延抖動和丟包率),再以實際頻寬作為數據發送速率進行測試,會發現時延抖動和丟包率比第一次好很多,重複測試幾次,就能得出穩定的實際頻寬。

(1)Server端開啟iperf的伺服器模式,指定UDP埠:
[root@iperf-server  ~]# iperf3 -s -i 1 -p  521  
------------------------------------------------------------  
Server listening  on port 521  
------------------------------------------------------------
(2)Client端啟動iperf的客戶端模式,連接服務端
[root@iperf-client  ~]# iperf3 -u -c 192.168.0.120  -b 100m -t 60 -p 521  
------------------------------------------------------------  
Client connecting  to 192.168.0.120, port 521  
------------------------------------------------------------  
[ 3] local 192.168.0.121  port 50616 connected with 192.168.0.120 port 521  
[ ID] Interval  Transfer Bandwidth TotalDatagrams   
[ 3] 0.0-10.1 sec  1.27 GBytes 1.08 Gbits/sec 82
(3)Server端監聽結果
------------------------------------------------------------  
Server listening  on port 521  
------------------------------------------------------------  
[ 4] local 192.168.0.120  port 520 connected with 192.168.0.121 port 50616  
[ ID] Interval  Transfer Bandwidth Jitter Lost/Total Datagrams  
[ 4] 0.0-10.1 sec  1.27 GBytes 1.08 Gbits/sec 0.007 ms 0/82 (0%)

① Jitter為抖動,在連續傳輸中的平滑平均值差。

② Lost為丟包數量。

③ Total Datagrams為包數量。

(4)測試多執行緒UDP吞吐量

如果沒有指定發送方式,iPerf客戶端只會使用單執行緒。

iperf3 -u -c  192.168.1.1 -b 5M -P 30 -t 60  
(5)進行上下行頻寬測試(雙向傳輸)
iperf3 -u -c  192.168.1.1 -b 100M -d -t 60 

五、Jperf介紹

1、Jperf簡介

jperf是基於iperf開發的圖形介面程式,簡化了複雜命令行參數的構造,而且還能夠保存測試結果,同時實時圖形化顯示結果。JPerf可以測試TCP和UDP頻寬品質。JPerf可以測量最大TCP頻寬,具有多種參數和UDP特性。JPerf可以報告頻寬,延遲抖動和數據包丟失。

2、JPerf2.0運行環境

(1)作業系統:Java運行環境

(2)網路要求:Jperf可以在任何IP網路上運行,包括本地乙太網,網際網路接入連接和Wi-Fi網路。

(3)其他要求:JPerf必須安裝兩個組件:JPerf 伺服器和JPerf客戶端。

3、JPerf2.0頁面介紹

JPerf2.0頁面

(1)Iperf命令行(無法直接輸入)

Iperf命令行

① 服務端設置

服務端設置

❶ 監聽埠:5001

❷ client limit:客戶端限制,僅允許指定客戶端連接

❸ Num Connections:最大允許連接的數量,為0不限制

② 客戶端設置

客戶端設置

伺服器地址:10.0.115.82 ,埠:5001 ,並發流:1個

(2)應用層設置

應用層設置

① 兼容舊版本(當server端和client端版本不一樣時使用)

兼容舊版本

② 設置測試模式:傳輸位元組總量大小15Bytes或者按傳輸時間總長度15秒

設置測試模式

③ 同時進行雙向傳輸測試

同時進行雙向傳輸測試

④ 單獨進行雙向傳輸測試,先測c到s的頻寬

單獨進行雙向傳輸測試

⑤ 指定需要傳輸的文件

指定需要傳輸的文件

⑥ 顯示tcp最大mtu值

顯示tcp最大mtu值

(3)傳輸層設置

① TCP協議

❶ 設置緩衝區大小

設置緩衝區大小

❷ 指定TCP窗口大小

指定TCP窗口大小

❸ 設定TCP數據包的最大mtu值

設定TCP數據包的最大mtu值

❹ 設定TCP不延時

設定TCP不延時

② UDP協議

❶ 設置UDP最大頻寬

設置UDP最大頻寬

❷ 設置UDP緩衝區

設置UDP緩衝區

❸ UDP包封裝大小:默認1470 byte

UDP包封裝大小

③ IP層設置

IP層設置

❶ 指定ttl值

指定ttl值

❷ 服務類型(Type of Service, ToS),大小範圍從0x10 (最小延遲) 到0x2 (最少費用)

服務類型

本文下載鏈接

附錄:參考資料

1.《網路性能測試方法》

作者:阿里雲幫助文檔

地址://help.aliyun.com/knowledge_detail/55757.html#HFXbx

2.《iperf-百度百科》(文章)

作者:百度百科網友

地址://baike.baidu.com/item/iperf/11067694?fr=aladdin

3.《Linux網路性能評估工具iperf 、CHARIOT測試網路吞吐量》(文章)

作者:Konglingbin

地址://www.cnblogs.com/klb561/p/9215952.html

4.《Linux命令大全-iperf命令》

作者:不確定

地址://man.linuxde.net/iperf

5.《網路性能測試工具iPerf功能與使用教程》

作者:不確定

地址://www.veryhuo.com/a/view/159685.html

6.《iPerf圖形化工具Jperf圖文使用教程》

作者:不確定

地址://www.veryhuo.com/a/view/159704.html

7.《使用iPerf進行網路吞吐量測試》

作者:放開那個電扇

地址://www.jianshu.com/p/15f888309c72