iperf3使用
一、iperf3介绍
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
Iperf是基于Server-Client模式实现的。在测量网络参数时,Iperf区分听者(Audience)和说者(Speaker)两种角色。说者向听着发送一定量的数据,由听者统计并记录带宽、时延抖动等参数。说者的数据全部发送完成后,听者通过向说者回送一个数据包,将测量数据告知说者。这样,在听者和说者两边都可以显示记录的数据。如果网络过于拥塞或误码率较高,当听者回送的数据包无法被说者收到时,说者就无法显示完整的测量数据,而只能报告本地记录的部分网络参数,发送的数据量、发送时间、发送带宽等,像延时抖动等参数在说者一侧则无法获得(因此在报告时,服务器和客户端所得到的信息是不同的)。
iperf的带宽测试分为tcp模式和udp模式,这两种模式中又分为上行链路测试和下行链路测试。
TCP模式:测量网络带宽、报告MSS/MTU值的大小和观测值、支持TCP窗口值通过套接字缓冲、当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接
UDP模式:客户端可以创建指定带宽的UDP流、测量丢包、测量抖动、支持多播、当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows)
上行链路:客户端发送数据,服务端接受数据
下行链路:服务端发送数据,客户端接受数据
二、iperf3安装
iper3下载地址:https://iperf.fr/iperf-download.php
2.1 windows下安装iperf3
windows下安装iperf3很简单,执行要下载可执行文件即可,如下 所示:
选择一个版本下载,下载后有一个dll库和一个exe可执行文件,打开windows cmd命令窗口,进入到改可执行文件目录,运行 iperf3 --version,就可以打印版本信息。
2.2 ubuntu下安装iperf3
sudo apt-get install iperf3
2.3 板端安装iperf3
官网上已经找不到iperf3源码下载位置,可以从以下链接下载源码:
https://downloads.es.net/pub/iperf/?spm=a2c6h.12873639.article-detail.7.23f0292a78egbq
选择一个版本下载,解压出来,这里选择下载的版本是3.17.1。
1、在源码包目录下新建安装目录iperf-v3.17.1-install
2、进入源码包,执行配置命令./configure --host=aarch64-linux-gnu --prefix=$(pwd)/../iperf-v3.17.1-install --enable-shared=no //这里示例选择gnu的编译器,实际根据板端平台芯片选择
3、make
4、make install
5、将iperf-v3.17.1-install/bin/iperf3 复制到板端即可
三、网络性能测试
有一台设备A和一台服务器B,A的ip为192.168.2.35,B的ip为192.168.2.31。现在要测试一下A和B之间的网络性能。在设备A上用客户端模式,在服务器B上用服务端模式。
3.1 udp上行链路测试
udp上下链路是iperf3客户端发送数据,iperf3服务器接收。
1、服务器B:iperf3 -s -i 1 //-s表示作为服务端, -i 1表示每隔一秒报告一次测试结果
2、设备A: iperf3 -u -c 192.168.2.31 -b 100M -i 1 -t 100 //-u表示使用udp模式;-c表作为客户端;-b表示使用100Mb带宽测试,-b参数要设置的比实际带宽高,比如实际带宽是20Mb,则-b可以设置成50Mb;-t是测试总时间,这里设置100s,默认10s
测试结果如下所示
网络性能的四大指标:带宽、时延、抖动、丢包
Interval:总共用时10s
Transfer: 总共传输的数据量1.08GB
Bandwidth: 平均带宽930Mb
Jitter:抖动0.035ms
Lost/Total Datagrams:丢包的个数22/总共传输包141915个 丢包率0.016%,
3.2 udp下行链路测试
udp上行链路是iperf3服务端发送数据,iperf3客户端接收。
1、服务器B:iperf3 -s -i 1 //-s表示作为服务端, -i 1表示每隔一秒报告测试结果
2、设备A: iperf3 -u -c 192.168.2.31 -b 100M -i 1 -t 100 -R //-R 切换数据发送接收模式,例如默认客户端发送,服务器端接收,设置此参数后,数据流向变为客户端接收,服务器端发送
3.3 tcp上行链路
1、服务器B:iperf3 -s -i 1 //-s表示作为服务端, -i 1表示每隔一秒报告测试结果
2、设备A: iperf3 -c 192.168.2.31 -i 1 -t 100
tcp模式给出的测试报告比较简单,没有udp模式的抖动和丢包数据
3.4 tcp下行链路
1、服务器B:iperf3 -s -i 1 //-s表示作为服务端, -i 1表示每隔一秒报告测试结果
2、设备A: iperf3 -c 192.168.2.31 -i 1 -t 100 -R
四、参考资料
1、https://blog.csdn.net/qingzhuyuxian/article/details/124380769
2、https://blog.csdn.net/u011198687/article/details/123778274