網速測試利器-iperf3

strivechao發表於2019-06-20

簡介

iperf3是一個網路速度測試工具,支援IPv4與IPv6,支援TCP、UDP、SCTP傳輸協議,可在Windows、Mac OS X、Linux、FreeBSD等各種平臺使用,是一個簡單又實用的小工具。 本文介紹安裝、使用iperf3 網速測試工具。


安裝iperf3

iperf3本身是以C++所開發的小程式,在官網上有提供各種平臺的預編譯二進位制檔案,解壓縮後即可使用。


在CentOS 7上使用下列命令即可安裝:


yum install iperf3

MAC OS X上使用下列命令即可安裝:


brew  install iperf3

網路頻寬測試

在使用iperf3測試時,要同時在server端與client端都各執行一個程式,讓它們互相傳送報文進行測試。下面的例子是在CentOS7上進行的測試。


首先在10.23.5.66機器啟動server端的程式:


iperf3 -s

接著在10.23.5.65伺服器上執行client 端的程式:


iperf3 -c 10.23.5.66

在測試時server端與client端都會出現測試的資料,client端以下是測試的結果:


[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66

Connecting to host 10.23.5.66, port 5201

[  4] local 10.23.5.65 port 10412 connected to 10.23.5.66 port 5201

[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd

[  4]   0.00-1.00   sec   114 MBytes   953 Mbits/sec    0   95.5 KBytes

[  4]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes

[  4]   2.00-3.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes

[  4]   3.00-4.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes

[  4]   4.00-5.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes

[  4]   5.00-6.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes

[  4]   6.00-7.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes

[  4]   7.00-8.00   sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes

[  4]   8.00-9.00   sec   113 MBytes   948 Mbits/sec    0   95.5 KBytes

[  4]   9.00-10.00  sec   113 MBytes   950 Mbits/sec    0   95.5 KBytes

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth       Retr

[  4]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec    0             sender

[  4]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec                  receiver

 

iperf Done.

從列印的內容看,預設引數下,Client將連線Server端的5201埠,持續向Server端傳送資料,並統計出每秒傳輸的位元組數、頻寬、出現報文重傳的次數、擁塞視窗(Congestion Window)大小,整個測試將持續10秒鐘;最後將彙總10秒的平均資料,並給出傳送和接收端的統計。


接下來分析一下Server的測試輸出結果:


[jinguang1@localhost ~]$ iperf3 -s

warning: this system does not seem to support IPv6 - trying IPv4

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Accepted connection from 10.23.5.65, port 10410

[  5] local 10.23.5.66 port 5201 connected to 10.23.5.65 port 10412

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-1.00   sec   109 MBytes   913 Mbits/sec

[  5]   1.00-2.00   sec   113 MBytes   948 Mbits/sec

[  5]   2.00-3.00   sec   113 MBytes   949 Mbits/sec

[  5]   3.00-4.00   sec   113 MBytes   949 Mbits/sec

[  5]   4.00-5.00   sec   113 MBytes   949 Mbits/sec

[  5]   5.00-6.00   sec   113 MBytes   949 Mbits/sec

[  5]   6.00-7.00   sec   113 MBytes   949 Mbits/sec

[  5]   7.00-8.00   sec   113 MBytes   949 Mbits/sec

[  5]   8.00-9.00   sec   113 MBytes   949 Mbits/sec

[  5]   9.00-10.00  sec   113 MBytes   949 Mbits/sec

[  5]  10.00-10.04  sec  4.29 MBytes   947 Mbits/sec

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender

[  5]   0.00-10.04  sec  1.10 GBytes   945 Mbits/sec                  receiver

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Server端預設監聽IPv6地址和埠,如果未配置IPv6,會嘗試IPv4。日誌顯示接收了來自10.23.5.65,源埠未10410的測試請求。Client端連續進行了10秒的測試,並顯示了每秒傳輸的位元組數,頻寬資訊;測試結束後會彙總傳送和接收的統計資訊。在Client連線關閉之後會繼續偵聽5201埠。


iperf3 進階指令

iperf3 所提供的選項非常多,以下介紹一些常用的引數。


1. 測試時間和輸出統計資料間隔


-t引數可以指定傳輸測試的持續時間,而-i可以指定統計輸出的間隔時間,如需要持續測試一個小時,每10秒鐘列印一次輸出結果:


iperf3 -c server_ip -i 10 -t 3600

2. 儲存測試結果


--logfile引數可以將輸出的測試結果儲存至檔案中:


iperf3 -c server_ip --logfile stats.txt

3. 設定偵聽埠


iperf3預設使用5201埠,如果需要指定,可以使用-p引數。這需要在Server和Client側都需要進行指定,如使用12345埠:


#server側

iperf3 -s -p 12345

#client側

iperf3 -c server_ip -p 12345

4. JSON 格式輸出


如果需要做一些自動化方面測試和管理工作,需要讀取格式化的測試結果,那可以選擇-J引數,來輸出JSON格式測試結果。


[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -J -t 2

{

"start": {

"connected": [{

"socket": 4,

"local_host": "10.23.5.65",

"local_port": 13346,

"remote_host": "10.23.5.66",

"remote_port": 5201

}],

"version": "iperf 3.1.7",

"system_info": "Linux localhost.localdomain 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64",

"timestamp": {

"time": "Fri, 07 Sep 2018 01:31:45 GMT",

"timesecs": 1536283905

},

"connecting_to": {

"host": "10.23.5.66",

"port": 5201

},

"cookie": "localhost.localdomain.1536283905.522",

"tcp_mss_default": 1460,

"test_start": {

"protocol": "TCP",

"num_streams": 1,

"blksize": 131072,

"omit": 0,

"duration": 2,

"bytes": 0,

"blocks": 0,

"reverse":

}

},

"intervals": [{

"streams": [{

"socket": 4,

"start": 0,

"end": 1.000059,

"seconds": 1.000059,

"bytes": 118546160,

"bits_per_second": 948313208.319058,

"retransmits": 0,

"snd_cwnd": 97820,

"rtt": 508,

"omitted": false

}],

"sum": {

"start": 0,

"end": 1.000059,

"seconds": 1.000059,

"bytes": 118546160,

"bits_per_second": 948313208.319058,

"retransmits": 0,

"omitted": false

}

}, {

"streams": [{

"socket": 4,

"start": 1.000059,

"end": 2.000063,

"seconds": 1.000004,

"bytes": 117912520,

"bits_per_second": 943296336.710671,

"retransmits": 0,

"snd_cwnd": 97820,

"rtt": 499,

"omitted": false

}],

"sum": {

"start": 1.000059,

"end": 2.000063,

"seconds": 1.000004,

"bytes": 117912520,

"bits_per_second": 943296336.710671,

"retransmits": 0,

"omitted": false

}

}],

"end": {

"streams": [{

"sender": {

"socket": 4,

"start": 0,

"end": 2.000063,

"seconds": 2.000063,

"bytes": 236458680,

"bits_per_second": 945804841.588347,

"retransmits": 0,

"max_snd_cwnd": 97820,

"max_rtt": 508,

"min_rtt": 499,

"mean_rtt": 503

},

"receiver": {

"socket": 4,

"start": 0,

"end": 2.000063,

"seconds": 2.000063,

"bytes": 235998780,

"bits_per_second": 943965299.700324

}

}],

"sum_sent": {

"start": 0,

"end": 2.000063,

"seconds": 2.000063,

"bytes": 236458680,

"bits_per_second": 945804841.588347,

"retransmits":

},

"sum_received": {

"start": 0,

"end": 2.000063,

"seconds": 2.000063,

"bytes": 235998780,

"bits_per_second": 943965299.700324

},

"cpu_utilization_percent": {

"host_total": 3.365885,

"host_user": 0.294900,

"host_system": 3.447099,

"remote_total": 0.054653,

"remote_user": 0.003388,

"remote_system": 0.049958

},

"sender_tcp_congestion": "cubic",

"receiver_tcp_congestion": "cubic"

}

}

5. 使用多條連線進行測試


-P引數可以指定同時連線測試的數量,預設使用一條連線。


[jinguang1@localhost ~]$ iperf3 -c 10.23.5.66 -P 2 -t 2

Connecting to host 10.23.5.66, port 5201

[  4] local 10.23.5.65 port 13652 connected to 10.23.5.66 port 5201

[  6] local 10.23.5.65 port 13654 connected to 10.23.5.66 port 5201

[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd

[  4]   0.00-1.00   sec  56.8 MBytes   477 Mbits/sec    0   65.6 KBytes

[  6]   0.00-1.00   sec  56.9 MBytes   478 Mbits/sec    0   67.0 KBytes

[SUM]   0.00-1.00   sec   114 MBytes   954 Mbits/sec    0

- - - - - - - - - - - - - - - - - - - - - - - - -

[  4]   1.00-2.00   sec  56.5 MBytes   474 Mbits/sec    0   65.6 KBytes

[  6]   1.00-2.00   sec  56.5 MBytes   474 Mbits/sec    0   67.0 KBytes

[SUM]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth       Retr

[  4]   0.00-2.00   sec   113 MBytes   475 Mbits/sec    0             sender

[  4]   0.00-2.00   sec   113 MBytes   474 Mbits/sec                  receiver

[  6]   0.00-2.00   sec   113 MBytes   476 Mbits/sec    0             sender

[  6]   0.00-2.00   sec   113 MBytes   474 Mbits/sec                  receiver

[SUM]   0.00-2.00   sec   227 MBytes   951 Mbits/sec    0             sender

[SUM]   0.00-2.00   sec   226 MBytes   949 Mbits/sec                  receiver

 

iperf Done.

6. 選擇使用的傳輸協議


iperf3預設使用TCP作為傳輸協議,如果使用UDP則使用-u引數,使用SCTP 則使用--sctp引數。


7. 反向傳輸


預設iperf3使用上傳模式:Client負責傳送資料,Server負責接收;如果需要測試下載速度,則在Client側使用-R引數即可。

--------------------- 

作者:劉近光 

來源:CSDN 

原文:https://blog.csdn.net/jinguangliu/article/details/82468482 

版權宣告:本文為博主原創文章,轉載請附上博文連結!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2648257/,如需轉載,請註明出處,否則將追究法律責任。

相關文章