iperf3 網絡帶寬性能測試工具


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

工具下載地址:https://iperf.fr/download/source/iperf-3.1.3-source.tar.gz

1、安裝iperf3
(1)上傳工具包
下載工具包至本地后上傳到服務器,我使用的是lrzsz直接拉上去 很方便

[root@redhat7 tools]# pwd
/root/tools
[root@redhat7 tools]# ls
iperf-3.1.3-source.tar.gz

(2)解壓后進入目錄下

[root@redhat7 tools]# tar zxf iperf-3.1.3-source.tar.gz
[root@redhat7 tools]# cd iperf-3.1.3
[root@redhat7 iperf-3.1.3]# ls
aclocal.m4    config.log     configure.ac  examples     iperf3.spec.in  Makefile     make_release   src
bootstrap.sh  config.status  contrib       INSTALL      libtool         Makefile.am  README.md      test_commands.sh
config        configure      docs          iperf3.spec  LICENSE         Makefile.in  RELEASE_NOTES

(3)編譯安裝

./configure
#可自行選擇是否設置安裝路徑./configure --prefix=/app/iperf-3.1.3
make && make install

(4)查看是否存在命令iperf3
可以使用Tab補齊鍵測試是否存在該命令

2、iperf3 --help 參數詳解

通用參數:
  -p, --port          #        ## 偵聽/連接到的服務器端口 定義端口號
  -f, --format        [kmgKMG] ## 報告格式:Kbits,Mbits,KB,MBytes
  -i, --interval      #        ## 定期帶寬報告之間的秒數
  -F, --file name              ## xmit / recv指定的文件
  -A, --affinity      n/n,m    ## n / n,m設置CPU親和力
  -B, --bind          <host>   ## <主機>綁定到特定接口
  -V, --verbose                ## 更詳細的輸出
  -J, --json                   ## 以JSON格式輸出
  --logfile f                  ## 將輸出發送到日志文件
  -d, --debug                  ## 發出調試輸出
  -v, --version                ## 顯示版本信息並退出
  -h, --help                   ## 顯示此消息並退出
服務端:
  -s, --server                 ## 在服務器模式下運行
  -D, --daemon                 ## 將服務器作為守護程序運行
  -I, --pidfile file           ## 文件寫入PID文件
  -1, --one-off                ## 處理一個客戶端連接,然后退出

客戶端:
  -c, --client    <host>       ## 在客戶端模式下運行,連接到<主機>
  -u, --udp                    ## 使用UDP而不是TCP
  -b, --bandwidth #[KMG][/#]   ## 目標帶寬,以位/秒為單位(0表示無限制)
                               ## (對於UDP,默認為1 Mbit / sec,對於TCP,為無限)
                               ## (突發模式的可選斜杠和數據包計數)
  -t, --time      #            ## 傳輸時間(以秒為單位)(默認為10秒)
  -n, --bytes     #[KMG]       ## 要傳輸的字節數(而不是-t)
  -k, --blockcount #[KMG]      ## 要傳輸的塊(數據包)數(而不是-t或-n)
  -l, --len       #[KMG]       ## 讀取或寫入的緩沖區長度
                               ## (TCP的默認值為128 KB,UDP的默認值為8 KB)
  --cport         <port>       ## 綁定到特定的客戶端端口(TCP和UDP,默認:臨時端口)
  -P, --parallel  #            ## 要運行的並行客戶端流的數量
  -R, --reverse                ## 以反向模式運行(服務器發送,客戶端接收)
  -w, --window    #[KMG]       ## 設置窗口大小/套接字緩沖區大小
  -C, --congestion <algo>      ## 設置TCP擁塞控制算法(僅Linux和FreeBSD)
  -M, --set-mss   #            ## 設置TCP / SCTP最大段大小(MTU-40字節)
  -N, --no-delay               ## 設置TCP / SCTP無延遲,禁用Nagle的算法
  -4, --version4               ## 僅使用IPv4
  -6, --version6               ## 僅使用IPv6
  -S, --tos N                  ## 設置IP“服務類型”
  -L, --flowlabel N            ## 設置IPv6流標簽(僅在Linux上受支持)
  -Z, --zerocopy               ## 使用發送數據的“零復制”方法
  -O, --omit N                 ## 省略前n秒
  -T, --title str              ## 在此字符串的每個輸出行之前加上前綴
  --get-server-output          ## 從服務器獲取結果
  --udp-counters-64bit         ## 在UDP測試數據包中使用64位計數器
  --no-fq-socket-pacing        ## 禁用基於公平隊列的套接字步調 

3、簡單使用示例
服務端與客戶端均進行工具的安裝,兩台主機均可做為服務端或客戶端

服務端運行命令:

[root@redhat7 iperf-3.1.3]# iperf -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

客戶端運行命令:
(1)iperf3 測試網絡帶寬利用率

默認運行時間是10秒 每隔一秒輸出一次傳輸狀態,同時還能看到每秒鍾的傳輸數據量在200MB左右,與Bandwidth值對應起來網卡的帶寬速率維持在1.68 Gbits/sec左右,網卡為千兆網卡這個值也基本合理。

在輸出最后還給出了總的數據發送、接收量,並給出了網絡帶寬的平均值 通過這些值基本可以判斷網絡帶寬和網絡傳輸狀態是否穩定。

[root@redhat7 ~]# iperf3 -c 172.20.10.4
Connecting to host 172.20.10.4, port 5201
[  4] local 172.20.10.2 port 33706 connected to 172.20.10.4 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   164 MBytes  1.38 Gbits/sec    0   1.48 MBytes       
[  4]   1.00-2.00   sec   200 MBytes  1.68 Gbits/sec   13   1.46 MBytes       
[  4]   2.00-3.00   sec   200 MBytes  1.68 Gbits/sec    0   1.58 MBytes       
[  4]   3.00-4.00   sec   212 MBytes  1.78 Gbits/sec    0   1.68 MBytes       
[  4]   4.00-5.00   sec   214 MBytes  1.80 Gbits/sec    0   1.76 MBytes       
[  4]   5.00-6.00   sec   194 MBytes  1.63 Gbits/sec    0   1.81 MBytes       
[  4]   6.00-7.00   sec   194 MBytes  1.62 Gbits/sec    4   1.33 MBytes       
[  4]   7.00-8.00   sec   191 MBytes  1.61 Gbits/sec    0   1.43 MBytes       
[  4]   8.00-9.00   sec   192 MBytes  1.61 Gbits/sec    0   1.52 MBytes       
[  4]   9.00-10.00  sec   189 MBytes  1.58 Gbits/sec    0   1.61 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.90 GBytes  1.64 Gbits/sec   17             sender
[  4]   0.00-10.00  sec  1.90 GBytes  1.63 Gbits/sec                  receiver

iperf Done.

(2)iperf3 改變運行時間和輸出頻率 “-t” “-i” 參數實現

輸出狀態更改為5秒一次,共測試30秒,測試速率基本也能維持在1.68 Gbits/sec左右,失敗重傳次數增加了。

[root@redhat7 ~]# iperf3 -c 172.20.10.4 -i 5 -t 30
Connecting to host 172.20.10.4, port 5201
[  4] local 172.20.10.2 port 33750 connected to 172.20.10.4 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-5.00   sec  1.00 GBytes  1.72 Gbits/sec   13   1.77 MBytes       
[  4]   5.00-10.00  sec  1000 MBytes  1.68 Gbits/sec    8   1.58 MBytes       
[  4]  10.00-15.00  sec  1.02 GBytes  1.76 Gbits/sec   21   1.54 MBytes       
[  4]  15.00-20.00  sec   982 MBytes  1.65 Gbits/sec   14   1.37 MBytes       
[  4]  20.00-25.00  sec   999 MBytes  1.68 Gbits/sec    0   1.81 MBytes       
[  4]  25.00-30.00  sec   959 MBytes  1.61 Gbits/sec    3   1.68 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-30.00  sec  5.87 GBytes  1.68 Gbits/sec   59             sender
[  4]   0.00-30.00  sec  5.87 GBytes  1.68 Gbits/sec                  receiver

iperf Done.

(3)iperf3 指定數據量模擬大量數據傳輸 "-n 字節"

以下是傳輸5G數據包 每隔5秒輸出一次傳輸狀態,可以看出失敗重傳次數較多時傳輸速率下降

[root@redhat7 ~]# iperf3 -c 172.20.10.4 -i 5 -n 5368709120
Connecting to host 172.20.10.4, port 5201
[  4] local 172.20.10.2 port 33778 connected to 172.20.10.4 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-5.00   sec   982 MBytes  1.65 Gbits/sec   22   1.76 MBytes       
[  4]   5.00-10.00  sec  1.00 GBytes  1.73 Gbits/sec    9   1.64 MBytes       
[  4]  10.00-15.00  sec  1.16 GBytes  2.00 Gbits/sec    7   1.64 MBytes       
[  4]  15.00-20.00  sec  1.01 GBytes  1.74 Gbits/sec    3   1.59 MBytes       
[  4]  20.00-24.28  sec   884 MBytes  1.73 Gbits/sec   27   1.38 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-24.28  sec  5.00 GBytes  1.77 Gbits/sec   68             sender
[  4]   0.00-24.28  sec  5.00 GBytes  1.77 Gbits/sec                  receiver

iperf Done.

(4)iperf3 測試UDP丟包和延遲 ”-u“

iperf3可以用於測試UDP數據包吞吐量、丟包率和延遲指標 UDP是一個非面向連接的輕量級傳輸協議不提供可靠的數據傳輸服務,應該關注的點是它的丟包率和延時指標。

以下為傳輸100MB UDP數據包的傳輸結果,主要關注虛線以下內容

”Jitter“ 表示抖動時間也可稱為傳輸延遲

”Lost/Total“表示丟失的數據包和數據包數量,%號后面是平均丟包的比率

”Datagrams“表示總共傳輸數據包的數量

[root@redhat7 ~]# iperf3 -c 172.20.10.4 -u -b 100M  -i 2
Connecting to host 172.20.10.4, port 5201
[  4] local 172.20.10.2 port 49755 connected to 172.20.10.4 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-2.00   sec  23.0 MBytes  96.3 Mbits/sec  2941  
[  4]   2.00-4.00   sec  23.9 MBytes   100 Mbits/sec  3062  
[  4]   4.00-6.00   sec  23.9 MBytes   100 Mbits/sec  3062  
[  4]   6.00-8.00   sec  23.9 MBytes   100 Mbits/sec  3055  
[  4]   8.00-10.00  sec  23.8 MBytes  99.9 Mbits/sec  3050  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   119 MBytes  99.4 Mbits/sec  0.097 ms  0/15170 (0%)  
[  4] Sent 15170 datagrams

iperf Done.

可以通過查看服務端輸出狀態查看詳細UDP丟包和延時指標,如下

[root@centos7 ~]# /app/iperf-3.1.3/bin/iperf3  -s #路徑為我自己的安裝路徑 忽略
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 172.20.10.2, port 33784
[  5] local 172.20.10.4 port 5201 connected to 172.20.10.2 port 49755
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec  11.1 MBytes  93.2 Mbits/sec  0.075 ms  0/1423 (0%)  
[  5]   1.00-2.00   sec  11.9 MBytes  99.4 Mbits/sec  0.081 ms  0/1517 (0%)  
[  5]   2.00-3.00   sec  11.9 MBytes  99.9 Mbits/sec  0.048 ms  0/1524 (0%)  
[  5]   3.00-4.00   sec  12.0 MBytes   101 Mbits/sec  0.098 ms  0/1538 (0%)  
[  5]   4.00-5.00   sec  11.8 MBytes  99.3 Mbits/sec  0.024 ms  0/1516 (0%)  
[  5]   5.00-6.00   sec  12.1 MBytes   101 Mbits/sec  0.054 ms  0/1546 (0%)  
[  5]   6.00-7.00   sec  11.8 MBytes  99.3 Mbits/sec  0.076 ms  0/1516 (0%)  
[  5]   7.00-8.00   sec  12.0 MBytes   101 Mbits/sec  0.053 ms  0/1539 (0%)  
[  5]   8.00-9.00   sec  11.9 MBytes   100 Mbits/sec  0.042 ms  0/1526 (0%)  
[  5]   9.00-10.00  sec  11.9 MBytes  99.9 Mbits/sec  0.033 ms  0/1524 (0%)  
[  5]  10.00-10.04  sec  8.00 KBytes  1.53 Mbits/sec  0.097 ms  0/1 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec  0.097 ms  0/15170 (0%)  

 

以上為我使用的自己的虛擬機 對該工具的測試,個人覺得還是非常簡單實用的,如果大家覺得不准確或者哪里理解錯誤還希望大家指正,謝謝!

如果覺得看着比較困難可以帶着個網址查看 -_- : https://blog.csdn.net/weixin_44654338/article/details/116502853


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM