公司最近测试一个产品, 是linux的***服务器,需要测试该***服务器的吞吐量性能,由于Avalanche与我们的***服务器不能完全兼容,又不允许我们对***服务器进行改动,所以只能借助其他的工具。找来找去,发现Iperf是个既简单又有点知名度的的工具,决定就用它了。Iperf是一个网络性能测试工具,主要应用于LINUX服务器下面。可以测量最大TCP和UDP带宽,具有多种参数和特性,可以记录带宽,延迟抖动和数据包丢失,最大组和MTU等统计信息,通过这些信息可以发现网络问题,检查网络质量,定位网络瓶颈。Iperf在linux和windows平台均有二进制版本供自由使用。

1.下载 (可以到这里下载:)

http://downloads.sourceforge.net/

2.安装

    [root@localhost]#tar zxvf iperf-2.5.0.tar.gz
    [root@localhost]#cd iperf-2.5.0
    [root@localhost]#./configure
    [root@localhost]#make
    [root@localhost]#make install

3.Iperf服务器端选项和启动

       由于Iperf工具是基于服务器和客户端的工作模式,所以在进行测试之前应先在目标计算机上启动服务器端程序,Iperf客户端和服务器端程序其实都是同一个程序,只是使用了不

同的命令选项而已。

-s 以server模式启动,eg:iperf –s 。Server端为数据的接收端。
-D 以服务方式运行ipserf,eg:iperf -s -D
-R 停止iperf服务,针对-D,eg:iperf -s -R
-o <filename> 重定向输出到指定文件。
-c,--client <hostname/IP> 如果Iperf运行为服务器模式,则可利用-c参数指定一个客户端,本机将接受指定客户端的连接,但不支持UDP协议。
-P,--parallel #  设置Iperf服务模式下的最大连接数,默认值为0,表示不限制连接数量。


3.Iperf客户端选项

-b,--bandwidth 指定客户端通过UDP协议发送信息的带宽,默认值为1Mbit/s
-c,--client <hostname/IP> 指定Iperf服务器的主机名和IP地址  
-d,--dualtest 同时进行双向传输测试
-n,--num 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
-r,--tradeoff 单独进行双向传输测试
-t,--time 指定Iperf测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
-L,--listenport 指定一个端口,服务器将利用这个端口与客户机连接
-P, --parallel 设置Iperf客户端至Iperf服务器的连接数,默认值为1
-S, --tos  设置发出包的类型,具体类型请参阅man文档
-F 指定需要传输的文件
-T 指定ttl值  

4.通用参数

-f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16
-m 显示tcp最大mtu
-o 将报告和错误信息输出到文件eg:iperf -c 222.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数据包


5.应用实例

1)使用 iperf -s 命令将 Iperf 启动为 server 模式:
iperf –s
————————————————————
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
2)启动客户端,向IP为10.230.48.65的主机发出TCP测试,并每2秒返回一次测试结果:
iperf -c 10.230.48.65 -i 2

3)以Mbytes/sec为单位显示测试结果:
iperf -c 10.230.48.65 -f M -i 2

4)设置TCP传输窗口大小为300K
iperf -s -w 300K
————————————————————
Server listening on TCP port 5001
TCP window size: 300 KByte
———————————————————

5)测试传输约1MB数据
iperf -c 59.125.103.56 -f K -i 2 -w 300K –n 1000000

6)测试持续36秒
iperf -c 59.125.103.56 -f K -i 2 -w 300K –t 36

7)测试双向传输
iperf -c 220.112.45.87 -f K -i 2 -w 300k -n 1000000 -d

8)UDP测试
iperf -c 59.125.103.56 -f K -i 2 -w 300K –u