iperf安装
现在Linux Ubuntu库中基本上都有自带的iperf,直接使用sudo apt-get install iperf命令安装即可,也可以在以下网址去下载 :http://xiazai.zol.com.cn/detail/33/329375.shtml
以下是安装过程:
# tar -xvf iperf.tar.gz
# cd iperf
# ./configure
# make
# make install
安装成功
iperf使用实例
UDP 设置测试环境
iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,
并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。
通过iperf的“-u”参数即可测试UDP应用的传输性能,图2-20测试的是在iperf客户端传输100MB的UDP数据包的输出结果。
服务端ip地址192.168.0.102
设置服务端:./iperf -u -c
客户端:
# iperf -u -c 192.168.0.102 -b 100M -f M -i 3
------------------------------------------------------------
Client connecting to 192.168.0.102, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 0.16 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.105 port 52406 connected with 192.168.0.102 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 3.0 sec 0.49 MBytes 0.16 MBytes/sec
[ 3] 3.0- 6.0 sec 0.35 MBytes 0.12 MBytes/sec
[ 3] 6.0- 9.0 sec 0.07 MBytes 0.02 MBytes/sec
[ 3] 0.0-10.5 sec 0.91 MBytes 0.09 MBytes/sec
[ 3] Sent 648 datagrams
[ 3] Server Report:
[ 3] 0.0-11.0 sec 0.76 MBytes 0.07 MBytes/sec 227.075 ms 73/ 9761 (0.75%)
[ 3] 0.0-11.0 sec 1 datagrams received out-of-order
正常的情况下,UDP的丢包率在1%以内才算是符合要求,上述中红色标记就是丢包比率0.74%
73/9761 73丢包数量 9761发包总数 227.075 ms 表示抖动时间。前面三个参数:分别是传输时间,
传输大小,传输带宽
这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在iperf服务端查看,因为在客户端
执行传输测试的同时,服务器端也会同时显示传输状态
实例2 TCP
测试TCP吞吐量
为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能
快地向服务器端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。图2-14展示了通过
一个最简单的带宽测试命令的输出结果
从图2-14可以看出,iperf默认的运行时间是10s,每隔1s输出一次传输状态,同时还可以看到每秒传输的数据量在112MB左右,
刚好与“Bandwidth”列的值对应起来,网卡的带宽速率维持在941Mbits/sec左右,而测试的服务器是千兆网卡,这个测试值也基本合理。
在输出的最后,iperf还给出了总的数据发送、接收量,以及带宽速率平均值,通过这些值,基本可以判断网络带宽是否正常,网络传输
状态是否稳定。
iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变iperf运行的时间和输出频率,
可以通过“-t”和“-i”参数来实现,如图2-15所示。
从图2-15可以看出,输出状态的间隔变为每5s一次,总共执行测试时间为20s,测试的带宽速率仍然保持在941Mbits/sec左右,
唯一变化的是失败重传次数增加了。
为了模拟大量的数据传输,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,
iperf在传输完毕指定大小的数据包后,自动结束,如图2-16所示。
图2-16的例子是指定发送一个5GB左右的数据包,并且每隔10s输出一次传输状态,从这个输出可以看出,当失败重传次数较多时,
传输速率急速下降。有时候,为了模拟更真实的TCP应用,iperf客户端允许从一个特定的文件发送数据,
这可以通过“-F”参数实现,如图2-17所示。
在图2-17的例子中,通过“-F”参数指定了一个webdata.tar.gz文件作为iperf要传输的数据。在使用此参数时,
需要同时指定一个“-t”参数来设置要测试传输的时间,这个时间尽量设置长一些,因为在默认传输时间10s内,
这个文件可能还没有传完。在使用iperf进行网络带宽测试时,如果没有指定发送方式,iperf客户端只会使用单一的线程,
而iperf是支持多线程的,可以使用iperf提供的“-P”参数来设置多线程的数目,通过使用多线程,可以在一定程度上增加网络的吞吐量。
下面通过两个例子进行简单对比,图2-18是iperf使用单线程传输1.86GB数据所消耗的时间和带宽使用情况。
为了速率单位统一,这里使用“-f”参数将输出结果都通过MBytes/sec来显示。
部分参考:http://book.51cto.com/art/201409/452441.htm