iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。iperf是开源的,源代码可以从http://sourceforge.net/projects/iperf/下载。
1. iperf能够做什么
提起iperf,想必大家都知道它是用了测试网络性能的。具体说来,Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测试工具。可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括带宽、抖动以及丢包率,其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
这里需要特别提出的是,iperf不能够用来测试时延,想一想这是为什么。
2. 网络性能参数
以上提到了网络的主要性能参数包括带宽,时延,抖动和丢包率,这些用一个名词代替,就是QOS(服务质量)。
对于时延和抖动,见如下图
图中D1,D2分别表示包A和包B的时延。
抖动=|D2-D1|
对于时延,iperf无能为力。但是iperf能够计算抖动,想想这又是为什么。
我们知道,在iperf中,我们测试时需要发送大量的包,因此计算出来的抖动值就是连续发送时延差值的平均值。
3. 安装iperf
在Unix系统下,安装iperf最方便的方法是直接下载rpm包,使用rpm指定安装即可。
当然也可以直接去sourceforge上下载源代码,使用如下命令安装即可。
#./configure
#make
#make install
前提是该机器上已经有C++编译器和make等程序。安装完成之后,可以进行一个简单的回环测试iperf是否安装成功。
$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 35589 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 26.3 GBytes 22.6 Gbits/sec $ iperf -c 127.0.0.1 ------------------------------------------------------------ Client connecting to 127.0.0.1, TCP port 5001 TCP window size: 49.5 KByte (default) ------------------------------------------------------------ [ 3] local 127.0.0.1 port 35589 connected with 127.0.0.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 26.3 GBytes 22.6 Gbits/sec |