iperf 交叉编译
iperf 交叉编译
iperf 是一个开源的网络性能测试工具,用于测量网络带宽、延迟和数据包丢失等指标。它可以在客户端和服务器之间进行测试,支持 TCP 和 UDP 协议。iperf 具有丰富的参数选项,可以模拟不同的网络场景和测试需求。它被广泛用于网络工程、系统管理和网络性能优化领域。
获取源码
iperf 代码托管在 github,直接clone即可,
1
git clone https://github.com/esnet/iperf.git
也通过下面这个链接下载
1
https://downloads.es.net/pub/iperf/
交叉编译
1
2
3
4
5
6
7
cd iperf
export LD=arm-linux-gnueabihf-ld
export CC=arm-linux-gnueabihf-gcc
mkdir output
./configure --host=arm-linux-gnueabihf --prefix=./output --target=arm-linux --disable-shared
make -j$(nproc) && make install
ls ./output/bin/
使用
基础用法
服务端(接收端)
1
2
3
4
# 启动服务端(默认端口 5201)
iperf3 -s
# 指定端口(如 5001)
iperf3 -s -p 5001
客户端(发送端)
1
2
3
4
5
6
# 测试 TCP 带宽(默认)
iperf3 -c <服务器IP> -p 5001
# 测试 UDP 带宽
iperf3 -c <服务器IP> -u -p 5001
# 指定测试时间(30 秒)
iperf3 -c <服务器IP> -t 30
常用参数
1
2
3
4
5
6
7
8
9
10
11
12
参数 说明
-c <IP> 客户端模式,指定服务器 IP
-s 服务端模式
-p <端口> 指定端口(默认 5201)
-t <秒> 测试时长(默认 10 秒)
-u 使用 UDP 协议(默认 TCP)
-b <带宽> 指定 UDP 带宽(如 -b 100M,单位 K/M/G)
-i <秒> 输出间隔(如 -i 2 每 2 秒报告一次)
-P <连接数> 并行连接数(如 -P 4)
-R 反向测试(服务端发送,客户端接收)
-w <大小> 设置 TCP 窗口大小(如 -w 1M)
-f <单位> 输出格式(-f K/-f M/-f G)
典型场景示例
1、测试 TCP 带宽(默认)
1
2
3
4
# 服务端
iperf3 -s -p 5001
# 客户端(运行 30 秒,并行 4 个连接)
iperf3 -c 192.168.1.100 -p 5001 -t 30 -P 4
2、测试 UDP 带宽与丢包率
1
2
3
4
# 服务端
iperf3 -s -p 5001
# 客户端(以 1Gbps 发送 UDP 数据)
iperf3 -c 192.168.1.100 -u -b 1000M -p 5001
3、反向测试(服务端发数据到客户端)
1
2
# 客户端发起反向测试
iperf3 -c 192.168.1.100 -R
4、输出格式优化
1
2
# 以 Mbps 显示结果,每 2 秒报告一次
iperf3 -c 192.168.1.100 -i 2 -f m
高级用法
绑定网络接口
1
2
3
4
# 服务端绑定特定 IP
iperf3 -s -B 192.168.1.100
# 客户端绑定网卡
iperf3 -c 192.168.1.100 -B eth0
设置 TCP 窗口大小
1
iperf3 -c 192.168.1.100 -w 2M
守护进程模式运行服务端
1
iperf3 -s -D
结果解读
TCP 测试:关注 Bandwidth
(带宽)和 Retr
(重传次数)。
UDP 测试:关注 Jitter
(抖动)、Lost/Total Datagrams
(丢包率)。
本文由作者按照 CC BY 4.0 进行授权