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