iperf是一个开源软件,其源码在GitHub上,地址:https://github.com/esnet/iperf。
1 下载
下载最新版本源码包,下载地址:http://downloads.es.net/pub/iperf/。本文以 iperf-3.0.3.tar.gz 版本为例。
2 解压
$ mkdir ~/iperf
$cp iperf-3.0.3.tar.gz ~/iperf
$ cd ~/iperf
$ tar xzfiperf-3.0.3.tar.gz
$ cd iperf-3.0.3/
命令中的“~”表示当前用户目录,比如在Linux主机上面工作的用户是:veryarm,那么命令中的“~”就代表路径:/home/veryarm/目录
。
3 配置
$ mkdir ../install
$ export PATH=$PATH:/usr/local/arm-2010q1/bin #交叉编译工具路径加入系统环境变量!
$ ./configure--host=arm-none-linux-gnueabi --prefix=/home/veryarm/iperf/install
其中,
我们交叉编译工具路径:$exportPATH=$PATH:/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/bin
$ ./configure--host=arm-none-linux-gnueabi --prefix=/home/iperf/install
· --host:指定交叉编译工具,一般为arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具体要和目标板用的交叉编译工具对应。
· --prefix:指定安装目录,编译后的文件会全部放在安装目录中。必须是绝对路径!
4 编译
$ make # 编译,如果是多核CPU,如四核,使用make -j4可提高编译速度
$ make install # 安装
完成后,文件会自动安装到上面指定的 install 目录。
将软件安装到/home/iperf/install文件夹中了!下面有三个文件夹BIN,INCLUDE,LIB
5去除调试信息并压缩
使用交叉编译工具 strip 去除镜像的调试信息,在不影响使程序使用的情况下,程序大小一般可以减小50%左右。本程序我们仅用到其中2个文件,bin下的iperf3 和 lib下的libiperf.so.0.0.0。
$ cd ../install # 进入安装目录
$ arm-none-linux-gnueabi-strip bin/iperf3 # 去除iperf3镜像调试信息
$ arm-none-linux-gnueabi-strip lib/libiperf.so.0.0.0 # 去除共享库的调试信息
$ rm lib/libiperf.a lib/libiperf.la # 删除两个不用的库文件
$ tar jcf iperf-3.0.3.tar.bz2 bin lib # 压缩bin和lib目录
可能有一些祛除不掉,没有关系,我们空间很大。
6 复制
将打包后的 iperf-3.0.3.tar.bz2 压缩包通过U盘、FTP或者NFS等方式拷贝到目标板,并分别解压到/bin和/sbin目录。
$ cp iperf-3.0.3.tar.bz2 ~ # 将复制压缩包到目标板用户目录
$ tar jxf iperf-3.0.3.tar.bz2 bin -C /usr # 解压镜像到/usr/bin
$ tar jxf iperf-3.0.3.tar.bz2 lib -C /usr # 解压库文件到/usr/lib
安装好软件后,就可以使用了。PC端的软件安装请看另一个教程。
待PC端软件安装好后,让PC端进入host模式。就是让PC做服务器。
安装Iperf
对于windows版的Iperf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可
就是复制到C盘根目录吧!
然后再CMD中运行:iperf.exe
使用Iperf(以windows版本为例)
在命令提示符中输入iperf命令即可运行Iperf,使用命令Iperf –help可以查看iperf的帮助
下面看看这个软件的一些测试命令介绍:可以baidu就不写了!
那么怎么应用这个软件呢?举个栗子吧!
OK, 通了,可以使用iperf工具了:
1, 工作电脑(WIN7)通过putty登录11.7.16.108,
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte(default)
------------------------------------------------------------
2, 开发板
arm-linux$ iperf -c 11.7.16.108
------------------------------------------------------------
Client connecting to 11.7.16.108,TCP port 5001
TCP window size: 16.0 KByte(default)
------------------------------------------------------------
[ 3] local 192.168.1.44port 42700 connected with 11.7.16.108 port 5001
[ ID]Interval Transfer Bandwidth
[ 3] 0.0-10.1sec 10.8 MBytes 8.95 Mbits/sec
arm-linux$ iperf -c 11.7.16.108-i 2
------------------------------------------------------------
Client connecting to 11.7.16.108,TCP port 5001
TCP window size: 16.0 KByte(default)
------------------------------------------------------------
[ 3] local 192.168.1.44port 42701 connected with 11.7.16.108 port 5001
[ ID]Interval Transfer Bandwidth
[ 3] 0.0- 2.0sec 2.12 MBytes 8.91 Mbits/sec
[ 3] 2.0- 4.0sec 2.12 MBytes 8.91 Mbits/sec
[ 3] 4.0- 6.0sec 2.00 MBytes 8.39 Mbits/sec
[ 3] 6.0- 8.0sec 2.25 MBytes 9.44 Mbits/sec
[ 3] 8.0-10.0sec 2.25 MBytes 9.44 Mbits/sec
[ 3] 0.0-10.1sec 10.9 MBytes 9.08 Mbits/sec
测出来啦,带宽也就8-9M的样子。
Iperf使用方法与参数说明
参数说明
-s 以server模式启动,eg:iperf -s
-chost以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23
通用参数
-f [kmKM] 分别表示以Kbits, Mbits,KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒为单位显示报告间隔,eg:iperf -c222.35.11.23 -i 2
-l 缓冲区大小,默认是8KB,eg:iperf -c222.35.11.23 -l 16
-m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件eg:iperf -c222.35.11.23 -o ciperflog.txt
-p 指定服务器端使用的端口或客户端所连接的端口eg:iperf-s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包
server专用参数
-D 以服务方式运行iperf,eg:iperf -s -D
-R 停止iperf服务,针对-D,eg:iperf -s -R
client端专用参数
-d 同时进行双向传输测试
-n 指定传输的字节数,eg:iperf -c222.35.11.23 -n 100000
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c222.35.11.23 -t 5
-F 指定需要传输的文件
-T 指定ttl值
应用实例
使用 iperf -s 命令将 Iperf 启动为 server模式,在客户机上使用 iperf -c启动client模式。
iperf –s
————————————————————
Server listening on TCP port 5001
TCP window size: 8.00 KByte(default)
————————————————————
iperf -c 59.128.103.56
上面使用服务端和客户端的默认设置进行测试
iperf -s -w 300K
————————————————————
Server listening on TCP port 5001
TCP window size: 300 KByte
————————————————————
iperf -c 59.128.103.56 -f K -i 2-w 300K
设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB
iperf -c 59.128.103.56 -f K -i 2-w 300K –n 1000000
测试传输约1MB数据
iperf -c 59.128.103.56 -f K -i 2-w 300K –t 36
测试持续36秒
iperf -c 59.128.103.56 -f K -i 2-w 300K -n 10400000 –d
测试双向的传输
iperf -c 59.128.103.56 -f K -i 2-w 300K –u
UDP测试
其中 -i参数的含义是周期性报告的时间间隔(interval),单位为秒;在上面的例子中,表示每隔2秒报告一次带宽等信息。