Iperf是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。利用Iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
Iperf有两种版本,windows版和linux版本。linux版本更新快,最新版本为iperf 3.0,下载地址为http://code.google.com/p/iperf/downloads/list ,windows版本官方更新的最新版本为1.7(打包在jperf中),下载地址为:
http://sourceforge.net/projects/iperf/files/jperf/jperf%202.0.0/
Iperf的主要功能如下:
测量网络带宽
报告MSS/MTU值的大小和观测值
支持TCP窗口值通过套接字缓冲
当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接
客户端可以创建指定带宽的UDP流
测量丢包
测量延迟
支持多播
当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows)
在适当的地方,选项中可以使用K(kilo-)和M(mega-)。例如131072字节可以用128K代替。
可以指定运行的总时间,甚至可以设置传输的数据总量。
在报告中,为数据选用最合适的单位。
服务器支持多重连接,而不是等待一个单线程测试。
在指定时间间隔重复显示网络带宽,波动和丢包情况。
服务器端可作为后台程序运行。
服务器端可作为Windows 服务运行。
使用典型数据流来测试链接层压缩对于可用带宽的影响。
支持传送指定文件,可以定性和定量测试
安装Iperf
对于windows版的Iperf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可
对于linux版的Iperf,请使用如下命令安装
gunzip -c iperf-<version>.tar.gz | tar -xvf -
cd iperf-<version>
./configure
make
make install
使用Iperf(以windows版本为例)
在命令提示符中输入iperf命令即可运行Iperf,使用命令Iperf –help可以查看iperf的帮助
测试单线程TCP
在服务端运行iperf,输入命令iperf –s –p 12345 –i 1 –M 以在本机端口12345上启用iperf
在客户端运行iperf,输入命令iperf –c server-ip –p server-port –i 1 –t 10 –w 20K,其中参数说明如下:
-c:客户端模式,后接服务器ip
-p:后接服务端监听的端口
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-w:设置tcp窗口大小,一般可以不用设置,默认即可
测试后截图如下:
客户端
服务端
其中:Interval表示时间间隔。Transfer表示时间间隔里面转输的数据量。Bandwidth是时间间隔里的传输速率。最后一行是本次测试的统计。测试可知带宽平均为89.9Mbit/s。
测试多线程TCP
在客户端添加-P参即可测试多线程的TCP性能,如下为使用两个线程的测试情况
客户端截图
服务端截图
测试单线程UDP(默认带宽)
在服务端运行iperf,输入命令iperf –s -u –p 12345 –i 1 以在本机端口12345上启用iperf,并运行于udp模式
在客户端运行iperf,输入命令iperf -c server-ip -p server-port -i 1 -t 10 -b,其中参数说明如下:
-c:客户端模式,后接服务器ip
-p:后接服务端监听的端口
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-b:设置udp的发送带宽,单位bit/s
客户端截图
服务端截图
其中,Jitter为抖动,lost/total为丢包数量,Datagrams为包数量。
测试单线程UDP(带宽为10Mbit/s)
设置客户端带宽为10M即可,使用参数-b指定
客户端截图
服务端截图
测试多线程UDP
与多线程TCP类似,只需要客户端使用-P参数指定线程个数即可
测试UDP的双向传输
客户端使用参数-d以运行双测试模式,客户端会与服务端进行udp往返测试。可以使用-L参数指定本端双测试监听的端口。
客户端截图
服务端截图
测试UDP往复传输
与双向传输类似,使用参数-r以运行交互模式,仍然可以使用-L参数指定交互的端口。
客户端截图
服务端截图