iperf测试案例介绍
  4.    iperf主要参数
  iperf中的可选参数比较多,具体可以参见其用户手册。
  http://webfolder.wirelessleiden.nl/iperf/
  一般来说,我们在做性能测试的时候需要指定包长,不同的包长会得到不同的吞吐量,通过-l指定,而使用-b指定带宽。
  5.    测试吞吐量,抖动和丢包率
  如何需要同时测试以上三个参数,那么只能通过UDP获得。使用-u参数进行UDP测试(iperf默认为TCP)。
  在测试的后server端会给出一个报告。
[ 3] local 192.168.1.1 port 2152 connected with 192.168.101.2 port 56768
[ ID] Interval      Transfer    Bandwidth       Jitter  Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 1.40 MBytes 11.7 Mbits/sec  0.069 ms   0/14671 (0%)
[ 3] 1.0- 2.0 sec 1.40 MBytes 11.8 Mbits/sec  0.050 ms   0/14703 (0%)
[ 3] 2.0- 3.0 sec 1.40 MBytes 11.8 Mbits/sec  0.052 ms   0/14708 (0%)
[ 3] 3.0- 4.0 sec 1.40 MBytes 11.8 Mbits/sec  0.057 ms   0/14704 (0%)
[ 3] 4.0- 5.0 sec 1.40 MBytes 11.8 Mbits/sec  0.072 ms   0/14706 (0%)
[ 3] 5.0- 6.0 sec 1.40 MBytes 11.8 Mbits/sec  0.075 ms   0/14705 (0%)
[ 3] 6.0- 7.0 sec 1.40 MBytes 11.8 Mbits/sec  0.060 ms   0/14707 (0%)
[ 3] 7.0- 8.0 sec 1.40 MBytes 11.8 Mbits/sec  0.073 ms   0/14703 (0%)
[ 3] 8.0- 9.0 sec 1.40 MBytes 11.8 Mbits/sec  0.073 ms   0/14706 (0%)
[ 3] 0.0-10.0 sec 14.0 MBytes 11.8 Mbits/sec  0.064 ms   0/147020 (0%)
  要获得带宽数据,需要不断在client端增加带宽值,直到server端出现轻微的丢包为止,此时server端显示的带宽是被测系统的吞吐量。
  6.    测试时延
  那么有朋友会问,iperf不能用来测试时延,而时延又是比较重要的QOS参数,有什么办法吗?
  其实简单的办法是使用Ping程序。我们经常用它来测试特定主机能否通过IP到达,
  程序会按时间和反应成功的次数,估计丢包率和分组来回时间(即网络时延)。
  当然,如果我们能成功构造一个回环测试路径,那么测试时延轻而易举了,我们可以使用iperf发送数据,同时结合tcpdump抓包工具,经过wireshark分析.cap文件可以得出包来回时间,也是往返时延。
  7.    使用TCP测试带宽应注意的问题
  有时候,我们需要使用TCP来测试网络带宽。这里有一个参数需要特别注意,那是TCP窗口大小,可以使用-w参数指定。
  网络通道的容量capacity = bandwidth * round-trip time
  而理论TCP窗口的大小是网络通道的容量。
  比如,网络带宽为40Mbit/s,回环路径消耗时间是2ms,那么TCP的窗口大小不小于40Mbit/s×2ms = 80kbit = 10Kbytes
  此时我们可以查询iperf默认的TCP窗口大小来决定是否需要设置此参数,在此例中,窗口大小应设计大于10Kbytes,当然,这仅仅是理论值,在实际测试中可能需要作出调整。
  参数说明
  -s 以server模式启动,eg:iperf -s
  -c 以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23
  通用参数
  -f [k|m|K|M] 分别表示以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
  iperf是client端向server端发送数据
  server端显示的是接收速率,好加i参数,进行速率跟踪
  client 显示的是发送速率
  server 显示接收速率
  -l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16
  可以使用不同的包长,进行测试
  -m 显示tcp大mtu值
  -o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:iperflog.txt
  -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
  -u 使用udp协议
  测试htb的时候好用udp,udp通信开销小,测试的带宽更准确
  -w 指定TCP窗口大小,默认是8KB
  如果窗口太小,有可能丢包
  -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
  -C 兼容旧版本(当server端和client端版本不一样时使用)
  -M 设定TCP数据包的大mtu值
  -N 设定TCP不延时
  -V 传输ipv6数据包
  server专用参数
  -D 以服务方式运行ipserf,eg:iperf -s -D
  -R 停止iperf服务,针对-D,eg:iperf -s -R
  client端专用参数
  -d 同时进行双向传输测试
  -n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
  -r 单独进行双向传输测试
  -b 指定发送带宽,默认是1Mbit/s
  在测试qos的时候,这是有用的参数。
  -t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
  默认是10s
  -F 指定需要传输的文件
  -T 指定ttl值