一、源码下载及交叉编译:

下载:https://pan.baidu.com/s/1i6NYDF3   //包含linux和windows上的可执行文件

1. 解压后获得perf-2.0.4源码。
2. cd iperf-2.0.4
3. ./configure --host=arm-linux CXX=arm-linux-androideabi-g++ CC=arm-linux-androideabi-gcc CFLAGS="-static -fPIE -fPIC" LDFLAGS="-static -fPIE -fPIC"   //静态编译
4. make   // 如果make报错:undefined reference to `rpl_malloc'   则到 config.h 中把 #define malloc rpl_malloc 注释掉。
5. src目录会生成一个iperf可执行文件,copy到目标板上执行。

 

二、iperf的使用:

Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。 参数说明 -s 以server模式启动,eg:iperf -s -c 以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23

通用参数 -f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K

例如,测试下载速率和吞吐量:

主机端输入 iperf -i 1 -c 192.168.2.5 -w 1M -t 1000
客户端输入 iperf -s -w 1M -i 1 -t 1000

-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2

iperf是client端向server端发送数据

server端显示的是接收速率,最好加i参数,进行速率跟踪

client 显示的是发送速率

server 显示接收速率

-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16

可以使用不同的包长,进行测试

-m 显示tcp最大mtu值 -o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999

 

-u 使用udp协议

测试htb的时候最好用udp,udp通信开销小,测试的带宽更准确

 

-w 指定TCP窗口大小,默认是8KB

如果窗口太小,有可能丢包

-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数) -C 兼容旧版本(当server端和client端版本不一样时使用) -M 设定TCP数据包的最大mtu值 -N 设定TCP不延时 -V 传输ipv6数据包

 

server专用参数 -D 以服务方式运行ipserf,eg:iperf -s -D -R 停止iperf服务,针对-D,eg:iperf -s -R

client端专用参数 -d 同时进行双向传输测试 -n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000 -r 单独进行双向传输测试

 

-b 指定发送带宽,默认是1Mbit/s

在测试qos的时候,这是最有用的参数。

-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5

默认是10s

 

-F 指定需要传输的文件 -T 指定ttl值