iperf使用方法

勿忘初心2018-08-23 14:08

iperf

iperf是一个网络性能测试工具,能够测量TCP和UDP的带宽。iperf具有LINUX和WINDOWS两种版本,本文主要介绍linux环境下iperf的安装和使用。

iperf安装
iperf有两种安装方法:
  •  先在http://iperf.fr/下载,然后进行安装:
    tar zxvf iperf.tar.gz
    cd iperf
    ./configure
    make
    make install
  • 通过apt直接安装(推荐此方法)
    apt install iperf
安装完成后,可通过命令
iperf -v
查看是否安装成功。如果成功,则会显示Iperf的版本信息
iperf version 2.0.5 (08 Jul 2010) pthreads

iperf常用参数
在使用iperf过程中,通过指定不同的参数来调整iperf的工作模式,达到想要的效果。常用的配置参数如下:
  • -i  设置iperf输出结果的时间间隔
  • -m  在结果中显示TCP的MSS大小
  • -u  使用UDP协议
  • -M  设置TCP的MSS大小
  • -s  以server模式运行
  • -c  以client模式运行
  • -t  设置iperf测试时间
  • -n  设置iperf测试时发送的数据量,与‘-t’参数二选一
  • -P  并行运行的线程数,默认为1
  • -b  设置UDP测试时的发送带宽
  • -w  TCP协议时设置TCP window的大小,UDP协议时设置接收缓冲大小

iperf功能
iperf可分别对tcp或udp进行带宽测试。
TCP
  • 测最大带宽
  • 调整MSS/MTU大小
  • 更改TCP window size
  • 可在客户端和服务器保持多条同步连接
UDP
  • 在指定发送速率下测UDP带宽
  • 丢包率
  • 延时抖动
  • 可在客户端和服务器保持多条同步连接

iperf测试TCP协议
iperf在测TCP协议时,可以通过‘-w’参数设置TCP window size,通过增到或者减小TCP窗口大小,测得的带宽结果可能会有所不同。官网给出了一个计算窗口大小的公式:
TCP window size=bottleneck bandwidth*round trip time
但在实际情况下,TCP window size使用默认值即可。
在使用Iperf时,需要分别在client和server端运行iperf。
server端运行命令如下:
iperf -s -i $interval
客户端运行命令如下:
iperf -c $server_ip -t $testtime
其中:
-s参数指定当前主机工作在server模式,interval为server显示测试结果的时间间隔,testtime为测试时间。
测试结束后,client端测试结果如下:
server端测试结果:

iperf测试UDP协议
iperf在测试UDP协议时可通过‘-l’参数设置datagram的大小,默认为1470bytes。
通常情况下,一个UDP数据包会被拆分成若干个IP packets,如果有一个IP packets在传输过程中丢失,那整个数据包都会被丢弃。因此如果要用iperf测丢包率的话,就需要将数据包设置的足够小。
udp测试时,server端命令:
iperf -s -u -i $interval
client端命令:
iperf -c $server_ip -u -t $testtime -b send_bandwidth
其中:
-u指定为udp协议,-b指定发送带宽(TCP协议不需要指定此参数)
client端的测试结果:
server端测试结果:
其中:
Jitter为延时抖动,Lost/Total为丢包率。
总结:
iperf可以有效地测得TCP/UDP的带宽,并能测试UDP传输的延时抖动、丢包率等性能指标。
通常情况下,iperf默认的参数设置即可满足用户需求。但在使用过程中,指定不同的TCP window size、MSS、发送带宽以及datagram大小等参数都会对测试结果造成影响,因此需要根据实际场景合理选择这些参数。如:测试网络的pps时,通常需要将MSS改到最小值。

网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者季涛授权发布。