当前位置:   article > 正文

快速上手:iperf网络性能测试工具

iperf

474776767ce69ea665a02f5a5d73942f.gif

5e6cd6d7d712e12b61cb397ef3b1ae16.png

iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具。

fa7548b23da4c72d9d48bd28e0488c7a.png

目录

iperf安装

带宽测试(TCP、UDP分开测试)

网络收发包性能测试

c202dad924cdf632813abdc60d594748.png

outside_default.png

iperf安装

可以直接通过官网下载对应系统版本进行安装(https://iperf.fr/iperf-download.php)

1.对于windows版的iPerf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可

2.对于linux版的iPerf,请使用如下命令安装

yum -y install iperf

outside_default.png

带宽测试

1、针对TCP进行带宽性能测试

服务端命令:iperf -s -i 1 -p 3389

客户端命令:iperf -c 172.19.16.97 -p 3389 -i 1

当然也可以不指定端口号和报告间隔:

服务端:iperf -s

客户端:iperf -c 172.19.16.97

我们看个例子:

启动服务端:

  1. [root@m01 ~]# iperf -s
  2. ------------------------------------------------------------
  3. Server listening on TCP port 5001
  4. TCP window size: 85.3 KByte (default)
  5. ------------------------------------------------------------

客户端发起测试:

  1. # 仅进行客户端到服务端的单项测试
  2. iperf -c 10.0.0.12 -t 30 -i 5
  3. # 同时进行上传、下载测试(双向测试)
  4. iperf -c 10.0.0.12 -t 30 -i 5 -d -L 8083
  5.  
  6. # 自动的先进行上传测试;再进行下载测试
  7. iperf -c 10.0.0.12 -t 30 -i 5 -r -L 8083

上面的命令含义:

服务端是10.0.0.12,测试持续30s,每5秒报告一次测试结果。

-d    参数是同时指定上下行带宽测试,

-r     是往返测试模式。当完成客户端到服务端的带宽测试时,服务器使用-L指定的端口,反向连接到客户端,进行服务端到客户端的带宽测试。

-L   客户端同时作为服务端的时候,为对端提供的测试端口。

参数小结:

-s        以服务端的模式启动iperf

-c        以客户端的的形式启动iperf

-t        指定测试时长,后面的数字代表秒数,上面的例子是持续测试30s

-i        指定报告的间隔时间,上例是每5秒输出一次测试结果

-d        同时进行上下行带宽测试。

-L        用来指定服务端反向连接客户端的端口(即客户端同时作为服务端,提供的可连接端口)

-w        指定窗口大小进行测试

输出结果如下:

9e3e8696e48fb795a22d50cf9b535535.png

我们10.0.0.14是服务端,10.0.0.3是作为客户端。上面截图我们做的是同时进行上下行测试,所以红色框里的[ 3]代表是客户端到服务端的带宽,[ 5]代表的是服务端到客户端的下行带宽。

2、针对UDP进行带宽性能测试

带宽性能压测通常采用udp模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

服务端命令:

iperf -u -s

客户端命令:

iperf -u -c 10.0.0.14 -b 1000M -i 3

输出结果:

20e33d4a77250a73f3adec1930116327.png

上面测试用服务器是千兆网卡,我们发现,当以2000M的速率去发包的时候,会有丢包的现象。

参数小结:

-b:设置UDP的发送带宽,单位bit/s

outside_default.png

网络收发包性能测试

通过UDP发包测试不仅可以通过-b xxxM的形式测试带宽性能情况,还可以通过-b xxxpps测试收发包性能。

网络收发包量的测试同时还会受到缓冲区大小的影响,默认的缓冲区比较小的话,会造成服务器到达高pps丢包的现象,这里建议在测试前调整下缓冲区大小;同时由于UDP默认发包大小为1470字节,在发包量很高的情况会超出服务器的带宽限制,所以这里需-l 指定发包大小,本次测试采用-l 100bit

1、调整UDP缓冲区大小

vi /etc/sysctl.conf

添加

  1. net.core.wmem_default = 8388608
  2. net.core.rmem_default = 8388608
  3. net.core.rmem_max = 16777216
  4. net.core.wmem_max = 16777216

然后执行sysctl -p 使得参数生效

sysctl -p

2、进行测试

服务端命令

iperf -u -s -i 1 -p 3389

客户端命令

iperf -u -c 172.19.16.97 -b 300000pps -l 100bit  -i 1 -p 3389

acc955ea62d0f08ea700bae29941ba51.png

944b38c6d1bddfde048da1c000b26680.png

通过测试可以发现,30Wpps进行收发包测试的时候是没有丢包现象的,当测试收发包到达32Wpps的时候已经开始出现丢包现象了,可以断定当前网络的pps就是30W。

参数汇总:

-s        以服务端的模式启动iperf

-c        以客户端的的形式启动iperf

-t        指定测试时长,后面的数字代表秒数,上面的例子是持续测试30s

-i        指定报告的间隔时间,上例是每5秒输出一次测试结果

-d        同时进行上下行带宽测试。

-L        用来指定服务端反向连接客户端的端口(即客户端同时作为服务端,提供的可连接端口)

-w        指定窗口大小进行测试

-b        设置UDP的发送带宽,单位bit/s

-l         指定包大小,TCP默认8k,UDP默认1470字节

 
 

02dc4a1ce4f82894647822ea6932a490.gif

 
 

10T 技术资源大放送!包括但不限于:Linux、网络、云计算、Python、Go、C/C++ 等。在 开源Linux 公众号内回复 10T,即可免费获取!

  1. Linux学习指南
  2. 有收获,点个在看
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/856522
推荐阅读
相关标签
  

闽ICP备14008679号