iperf:開源網絡性能測試工具,測試 TCP/UDP 帶寬、吞吐率、抖動、丟包率、MSS/MTU 等統計信息。
限制:不能直接測試時延,抖動基於連續發包的時延差值平均值計算。

| 參數 | 模式 | 說明 |
|---|---|---|
-s | Server | 以服務端模式啟動 |
-c <host> | Client | 以客戶端模式連接指定服務端 |
-u | Both | 使用 UDP 協議(默認 TCP) |
-p <port> | Both | 指定端口(默認 5001) |
-f [k|m|K|M] | Both | 報告單位:Kbits/Mbits/KBytes/MBytes |
-i <sec> | Both | 報告輸出間隔秒數 |
-t <sec> | Client | 測試持續時間(默認 10s) |
-b <bw> | Client(UDP) | 目標帶寬(如 2M) |
-w <size> | Client(TCP) | TCP 窗口大小(默認 8KB) |
-M <MTU> | Client(TCP) | 最大傳輸單元 |
-n <bytes> | Client | 指定傳輸總字節數 |
-D | Server | 守護進程模式運行 |
-R | Server | 停止守護進程 |
-d | Client | 雙向同時傳輸測試 |
-r | Client | 順序雙向傳輸測試 |
# 1. 交叉編譯配置
./configure --host=arm-none-linux-gnueabi \
CC=~/toolchain/arm-none-linux-gnueabi-gcc \
CXX=~/toolchain/arm-none-linux-gnueabi-g++
# 2. 修改 config.h
# 註釋掉 #define malloc rpl_malloc
# 3. 編譯安裝
make
make install
# 4. 裁剪體積
arm-none-linux-gnueabi-strip iperf
# 5. 部署到目標板
cp /usr/local/bin/iperf /bin/
src/ 目錄RANLIB、STRIP 為交叉工具鏈iperf3# Ubuntu
sudo apt-get install iperf
# Fedora
rpm -ivh iperf-xxx.rpm
# 服務端
iperf -s # TCP
iperf -s -u # UDP
# 客戶端
iperf -c 192.168.22.66
iperf -c 192.168.22.66 -u -b 10M # UDP 指定帶寬
iperf.exe(CSDN/官網)iperf -s 或 iperf -c <ip>

# 客戶端:指定 2M 帶寬,每秒報告,持續 10 秒
iperf -c 192.168.1.100 -u -i 1 -t 10 -b 2M
# 服務端
iperf -s -u
輸出關鍵字段解讀:
| 字段 | 含義 |
|---|---|
Interval | 報告時間區間 |
Transfer | 該區間傳輸總字節 |
Bandwidth | 該區間平均速率 |
Jitter | 抖動(ms) |
Lost/Total Datagrams | 丟包數/總包數 (丟包率%) |
out-of-order | 亂序包數 |
帶寬延遲積 (BDP):
Capacity = Bandwidth × RTT
理想 TCP 窗口 ≥ Capacity
例:40Mbit/s 帶寬,RTT 2ms → 窗口 ≥ 10KB。iperf 默認 8KB 可能成為瓶頸,使用 -w 64K 增大窗口。
本文整理自「嵌入式開發樂園」博客,原文地址:https://tigerjibo.blog.51cto.com/7718010/1297332