iperf3 網(wǎng)絡(luò)帶寬測試工具
iperf3 是一個 TCP, UDP, 和 SCTP (傳輸層協(xié)議)網(wǎng)絡(luò)帶寬測量工具.
簡介
iperf 是一個用于主動測量 IP 網(wǎng)絡(luò)上最大可用帶寬的工具. 它支持與時間、協(xié)議和緩沖區(qū)相關(guān)的各種參數(shù)的調(diào)優(yōu). 對于每個測試,它報告測量的吞吐量/比特率(帶寬), 丟包率和其他參數(shù).
這個版本,有時被稱為 iperf3, 是 NLANR/DAST 開發(fā)的原始版本的重新設(shè)計. iperf3 是一個從頭開始的新實現(xiàn), 目標(biāo)是更小, 更簡單的代碼庫, 以及可以在其他程序中使用的功能的庫版本. iperf3 還具有許多在其他工具(如 nutctp 和 netperf)中可以找到的特性, 但這些特性在最初的 iperf 中是沒有的. 例如, 這包括 零復(fù)制模式
和可選的 JSON輸出
. 注意 iperf3 與原來的 iperf 不向后兼容.
iperf3 的主要工作開發(fā)是在 CentOS Linux, FreeBSD 和 macOS 上進行的. 目前, 這些是唯一得到官方支持的平臺, 但是已經(jīng)有一些關(guān)于 OpenBSD, NetBSD, Android, Solaris 和其他 Linux 發(fā)行版的成功報告.
iperf3 主要由 ESnet / Lawrence Berkeley National 實驗室開發(fā). 它是在 three-clause BSD 許可下發(fā)布的.
更多信息: http://software.es.net/iperf
源代碼和問題跟蹤: https://github.com/esnet/iperf
獲得 iperf3
iperf3 的下載地址:
http://downloads.es.net/pub/iperf/
https://iperf.fr/
要查看最新的代碼, 克隆 git 存儲庫:
https://github.com/esnet/iperf.git
構(gòu)建 iperf3
./configure
make
make install
使用
iperf3 包含一個列出所有命令行選項的手冊頁. 手冊頁是對各種標(biāo)志和參數(shù)的最新參考.
有關(guān)命令行使用示例,請參見:
https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/
使用默認(rèn)選項, iperf 旨在顯示典型的精心設(shè)計的應(yīng)用程序(Typical well designed application)性能.
典型的精心設(shè)計的應(yīng)用程序(Typical well designed application) 意味著避免只對測試有效的人工增強(例如 splice() 將數(shù)據(jù)發(fā)送到 /dev/null). iperf 也有用于 “極端最佳情況” 優(yōu)化的標(biāo)志, 但必須顯式地激活它們.
這些標(biāo)志包括:
-Z, --zerocopy 使用 ‘zero copy’ sendfile() 的方式數(shù)據(jù)發(fā)送
-A, --affinity n/n,m 設(shè)置 CPU 親和力
快速開始
- 接收端
# 參數(shù) -s 表示 iperf3 以服務(wù)端模式運行.
iperf3 -s
輸出
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
iperf3 服務(wù)監(jiān)聽在默認(rèn)端口 5201
- 發(fā)送端
# 參數(shù) -c 表示 iperf3 以客戶端模式運行, 192.168.101.7 為服務(wù)端的IP地址.
iperf3 -c 192.168.101.7
輸出
[ 5] local 192.168.101.5 port 53506 connected to 192.168.101.7 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 91.2 MBytes 765 Mbits/sec 0 837 KBytes
[ 5] 1.00-2.00 sec 86.2 MBytes 724 Mbits/sec 0 969 KBytes
[ 5] 2.00-3.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes
[ 5] 3.00-4.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes
[ 5] 4.00-5.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes
[ 5] 5.00-6.00 sec 88.8 MBytes 744 Mbits/sec 0 969 KBytes
[ 5] 6.00-7.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes
[ 5] 7.00-8.00 sec 87.5 MBytes 734 Mbits/sec 0 1.04 MBytes
[ 5] 8.00-9.00 sec 87.5 MBytes 734 Mbits/sec 0 1.09 MBytes
[ 5] 9.00-10.00 sec 87.5 MBytes 734 Mbits/sec 0 1.09 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 879 MBytes 737 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 876 MBytes 735 Mbits/sec receiver
發(fā)送端使用端口 53506 連接到接收端的 5201 端口.
總共發(fā)送了 879 MBytes
數(shù)據(jù), 發(fā)送端測得帶寬為 737 Mbits/sec
.
接收端總共接收到 876 MBytes
數(shù)據(jù), 接收端測得帶寬為 735 Mbits/sec
.
常用參數(shù)
iperf3 參數(shù)分為服務(wù)端參數(shù), 客戶端參數(shù), 通用參數(shù).
參考文檔
https://iperf.fr/iperf-doc.php
通用參數(shù) (Server or Client)
-p, --port # 用于監(jiān)聽/連接的服務(wù)器端口, 默認(rèn)值是 5201.
-f, --format [kmgtKMGT] 輸出報告的單位(默認(rèn)值: m): Kbits, Mbits, Gbits, Tbits (小寫為bit, 大寫為 Byte)
-i, --interval # 每次報告的間隔時間(單位: 秒, 默認(rèn)值: 1)
-F, --file name 指定 xmit/recv 的文件, 客戶端模式下表示要發(fā)送的文件名, 服務(wù)端模式下表示要寫入的文件名.
-A, --affinity n/n,m 設(shè)置 CPU 親和性
-B, --bind <host> 綁定到主機<host>, 這臺機器的地址之一.
對于客戶端, 這將設(shè)置出站網(wǎng)絡(luò)接口.
對于服務(wù)器, 這將設(shè)置傳入接口.
這只在具有多個網(wǎng)絡(luò)接口的多主機上有用.
-V, --verbose 更詳細(xì)的輸出
-J, --json 使用 JSON 格式輸出
--logfile f 輸出日志到文件
--forceflush 在每個間隔強制 flush 輸出
--timestamps <format> 在每個輸出行開始處添加一個時間戳
(使用可選格式字符串按 strftime(3) 給定)
-d, --debug 打開調(diào)試輸出
-v, --version 顯示版本信息并退出
-h, --help 顯示此消息并退出
服務(wù)端專用參數(shù) (Server specific)
-s, --server 以服務(wù)器模式運行
-D, --daemon 將服務(wù)器作為守護進程運行
-I, --pidfile file 寫到 PID 文件
-1, --one-off 處理一個客戶端連接然后退出
--server-bitrate-limit #[KMG][/#] 服務(wù)器的總比特率(帶寬)限制 (默認(rèn)值: 0 = 無限制)
(可選的斜杠和數(shù)值(/#) 表示#秒間隔的平均值, 默認(rèn)為5秒 )
--rsa-private-key-path 用于解密認(rèn)證憑證的 RSA 私鑰路徑
--authorized-users-path 包含用戶憑證的配置文件的路徑
客戶端專用參數(shù) (Client specific)
-c, --client <host> 以客戶端模式運行, 連接到 <host> (服務(wù)器地址)
--sctp 使用 SCTP 而不是 TCP
-X, --xbind <name> 將 SCTP 關(guān)聯(lián)綁定到鏈接
--nstreams # SCTP 流的個數(shù)
-u, --udp 使用 UDP 而不是 TCP
--connect-timeout # 控制連接建立超時 (ms)
-b, --bitrate #[KMG][/#] 目標(biāo)比特率 bits/sec (0 表示無限制)
(UDP: 默認(rèn)為 1 Mbit/sec, TCP: 默認(rèn)無限制)
(可選的斜杠和數(shù)字, 數(shù)字表示突發(fā)模式的包數(shù))
--pacing-timer #[KMG] 設(shè)置 pacing 時間,以微秒為單位(default 1000)
--fq-rate #[KMG] 啟用基于套接字的 pacing bits/sec 的加權(quán)公平隊列(fair-queuing)(只有 Linux 可用).
-t, --time # 以秒為單位的傳輸時間(默認(rèn)為10秒)
-n, --bytes #[KMG] 傳輸?shù)淖止?jié)數(shù)(代替 -t)
-k, --blockcount #[KMG] 要傳輸?shù)膲K(包)數(shù)(代替 -t 或 -n)
-l, --length #[KMG] 讀取或?qū)懭刖彌_區(qū)的長度
(TCP默認(rèn): 128 KB, UDP: 動態(tài)調(diào)整或 1460)
--cport <port> 綁定到特定的客戶端端口 (TCP 和 UDP, default: 臨時端口)
-P, --parallel # 要運行的并行客戶端流的數(shù)量(并行測試)
-R, --reverse 以反向模式運行(服務(wù)器發(fā)送,客戶端接收)
--bidir 以雙向模式運行.
客戶端和服務(wù)器同時發(fā)送和接收數(shù)據(jù).
-w, --window #[KMG] 設(shè)置窗口大小/套接字緩沖區(qū)大小
-C, --congestion <algo> 設(shè)置 TCP 的擁塞控制算法 (只有: Linux 和 FreeBSD 支持)
-M, --set-mss # 設(shè)置 TCP/SCTP 最大分段大小(MSS, MTU - 40字節(jié))
-N, --no-delay 設(shè)置 TCP/SCTP 無延遲,禁用 Nagle's 算法
-4, --version4 只使用 IPv4
-6, --version6 只使用 IPv6
-S, --tos N 設(shè)置 IP 服務(wù)類型(TOS, Type Of Service), 0-255.
可以使用八進制和十六進制的常用前綴,
例如 52, 064 和 0x34 都指定相同的值.
--dscp N or --dscp val 設(shè)置 IP dscp 值, 0-63 或 象征值.
數(shù)值可以用十進制指定,
八進制和十六進制(參考 --tos).
-L, --flowlabel N 配置IPv6流標(biāo)簽 (僅在 Linux 上支持)
-Z, --zerocopy 使用 "零拷貝" 方法發(fā)送數(shù)據(jù)
-O, --omit N 省略前 N 秒的測試(忽略 TCP 慢啟動)
-T, --title str 在每個輸出行前加上這個字符串
--extra-data str 包含客戶端和服務(wù)器 JSON 數(shù)據(jù)字符串
--get-server-output 從服務(wù)器獲取結(jié)果
--udp-counters-64bit 在 UDP 測試包中使用 64 位計數(shù)器(防止計數(shù)器溢出)
--repeating-payload 在有效載荷中使用重復(fù)模式,而不是隨機有效載荷(如 iperf2)
--username 認(rèn)證用戶名
--rsa-public-key-path 用于加密認(rèn)證憑證的 RSA 公鑰的路徑
用例
例: TCP 帶寬測試
服務(wù)端
iperf3 -s
客戶端
iperf3 -c 192.168.101.7
例: UDP 帶寬測試
服務(wù)端
iperf3 -s
客戶端
# UDP 模式下 -b 默認(rèn)為 1Mbps, 手動設(shè)置為 0 = 無限制.
iperf3 -c 192.168.101.7 -u -b 0
例: 測試反向 TCP 帶寬
服務(wù)端
iperf3 -s
客戶端
iperf3 -c 192.168.101.7 -R
例: 測試雙向 TCP 帶寬
服務(wù)端
iperf3 -s
客戶端
iperf3 -c 192.168.101.7 --bidir
[TX-C] 為客戶端發(fā)送數(shù)據(jù) 對應(yīng) -> [RX-S] 為服務(wù)端接收數(shù)據(jù)
[RX-C] 為客戶端接收數(shù)據(jù) 對應(yīng) <- [TX-S] 為服務(wù)端發(fā)送數(shù)據(jù)
參考
http://software.es.net/iperf
https://github.com/esnet/iperf
http://downloads.es.net/pub/iperf/
https://iperf.fr/
https://github.com/esnet/iperf.git
https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/文章來源:http://www.zghlxwxcb.cn/news/detail-448444.html
https://iperf.fr/iperf-doc.php文章來源地址http://www.zghlxwxcb.cn/news/detail-448444.html
到了這里,關(guān)于iperf3 網(wǎng)絡(luò)帶寬測試工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!