文章

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 进行授权

© xiongyi. 保留部分权利。

|

岂堪久蔽苍苍色,须放三光照九州