【學習筆記】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-
三、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頁面介紹
(1)Iperf命令行(無法直接輸入)
① 服務端設置
❶ 監聽埠:5001
❷ client limit:客戶端限制,僅允許指定客戶端連接
❸ Num Connections:最大允許連接的數量,為0不限制
② 客戶端設置
伺服器地址:10.0.115.82 ,埠:5001 ,並發流:1個
(2)應用層設置
① 兼容舊版本(當server端和client端版本不一樣時使用)
② 設置測試模式:傳輸位元組總量大小15Bytes或者按傳輸時間總長度15秒
③ 同時進行雙向傳輸測試
④ 單獨進行雙向傳輸測試,先測c到s的頻寬
⑤ 指定需要傳輸的文件
⑥ 顯示tcp最大mtu值
(3)傳輸層設置
① TCP協議
❶ 設置緩衝區大小
❷ 指定TCP窗口大小
❸ 設定TCP數據包的最大mtu值
❹ 設定TCP不延時
② UDP協議
❶ 設置UDP最大頻寬
❷ 設置UDP緩衝區
❸ UDP包封裝大小:默認1470 byte
③ IP層設置
❶ 指定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命令》
作者:不確定
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