iperf3使用教程


iperfs3简单使用样例

简介

iPerf3是用于主动测试IP网络上最大可用带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCTP与IPv4和IPv6)有关的各种参数。对于每次测试,它都会详细的带宽报告,延迟抖动和数据包丢失。

它与原始 iPerf 不共享任何代码,也不向后兼容。

它是一个C/S架构的测试工具,需要在同时运行在服务器端和客户端。

支持的平台:Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, iPhone/iPad等

1.下载

  • 手动下载
sudo wget -O /usr/lib/libiperf.so.0 https://iperf.fr/download/ubuntu/libiperf.so.0_3.1.3

在这里插入图片描述

[root@gaussdb01 rpm]# sudo wget -o /usr/bin/iperf3 https://iperf.fr/download/ubuntu/iperf3_3.1.3
[root@gaussdb01 rpm]# sudo chmod +x /usr/bin/iperf3
  • yum 下载

yum -y install iperf3 

2. 使用

使用时可以输iperf3 -h 查看详情
样例:
1、server端先打开服务

[root@gaussdb01 ~]# iperf3 -s -i 1 -p 5201
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
# 作为服务端运行,报告回显间隔时间1s,服务端不区分tcp或udp

-s :服务端

-i : sec 以秒为单位显示报告间隔

-p:端口

2、client端连接服务

[root@gaussdb02 ~]# iperf3 -c 192.168.0.83 -i 1 -t 5 -p 5201
Connecting to host 192.168.0.83, port 5201
[  5] local 192.168.0.84 port 59274 connected to 192.168.0.83 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  3.43 GBytes  29.5 Gbits/sec    0   3.69 MBytes       
[  5]   1.00-2.00   sec  3.61 GBytes  31.0 Gbits/sec    0   3.69 MBytes       
[  5]   2.00-3.00   sec  3.30 GBytes  28.4 Gbits/sec    0   3.69 MBytes       
[  5]   3.00-4.00   sec  3.28 GBytes  28.2 Gbits/sec    0   3.69 MBytes       
[  5]   4.00-5.00   sec  3.08 GBytes  26.5 Gbits/sec    0   3.69 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  16.7 GBytes  28.7 Gbits/sec    0             sender
[  5]   0.00-5.04   sec  16.7 GBytes  28.4 Gbits/sec                  receiver

iperf Done.

-c:客户端 host是server端地址

-i: sec 以秒为单位显示报告间隔

-t:测试时间,默认10秒

-p:端口

3、server端接受信息

[root@gaussdb01 ~]# iperf3 -s -i 1 -p 5201
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.0.84, port 59272
[  5] local 192.168.0.83 port 5201 connected to 192.168.0.84 port 59274
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  3.25 GBytes  27.9 Gbits/sec                  
[  5]   1.00-2.00   sec  3.65 GBytes  31.4 Gbits/sec                  
[  5]   2.00-3.00   sec  3.27 GBytes  28.1 Gbits/sec                  
[  5]   3.00-4.00   sec  3.29 GBytes  28.2 Gbits/sec                  
[  5]   4.00-5.00   sec  3.12 GBytes  26.8 Gbits/sec                  
[  5]   5.00-5.04   sec   112 MBytes  22.1 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-5.04   sec  16.7 GBytes  28.4 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

iperf主要参数

iperf中的可选参数比较多,具体可以参见其用户手册。

http://webfolder.wirelessleiden.nl/iperf/

一般来说,我们在做性能测试的时候需要指定包长,不同的包长会得到不同的吞吐量,通过-l指定,而使用-b指定带宽。

  • 测试吞吐量,抖动和丢包率

如何需要同时测试以上三个参数,那么只能通过UDP获得。使用-u参数进行UDP测试(iperf默认为TCP)。

在测试的最后server端会给出一个报告。

要获得带宽数据,需要不断在client端增加带宽值,直到server端出现轻微的丢包为止,此时server端显示的带宽就是被测系统的吞吐量。

使用TPC测试带宽应注意的问题

有时候,我们需要使用TCP来测试网络带宽。这里有一个参数需要特别注意,那就是TCP窗口大小,可以使用-w参数指定。

网络通道的容量capacity = bandwidth * round-trip time

而理论TCP窗口的大小就是网络通道的容量。

比如,网络带宽为40Mbit/s,回环路径消耗时间是2ms,那么TCP的窗口大小不小于40Mbit/s×2ms = 80kbit = 10Kbytes

此时我们可以查询iperf默认的TCP窗口大小来决定是否需要设置此参数,在此例中,窗口大小应设计大于10Kbytes,当然,这仅仅是理论值,在实际测试中可能需要作出调整。

测试实例:

此软件需要安装到两端需要互测的机器上,然后一段作为服务端监听,一端作为客户端连接。具体命令可以iperf -h 查看下。

服务端:
iperf -s -u
-s 标记此端为服务端
-u标记自己为UDP监听
-p 指定自己监听端口

客户端:
iperf -c 1.1.1.1 -i 1 -u -t 60 -F /root/a.zip -P 5
-c标记自己为客户端
-i 设定输出值间隔
-u使用传输协议为UDP
-t 设定测试时间为60秒
-F 指定传输文件(该项可有可无)
-P 指定进程数,如果设置为5,那么也就相当与对端建立五个连接

注意事项:
1.发包测试需要分为UDP测试与TCP测试,其中服务端需要用-u命令去区分监听协议。
2.TCP协议测试不能计算出时延与丢包率,而且还不能指定发送带宽。

案例一 TCP通信测试

服务端:

[root@gaussdb01 ~]# iperf3 -s -i 1  -p 5201 
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
# 作为服务端运行,报告回显间隔时间1s,服务端不区分tcp或udp

效果如下:

在这里插入图片描述

客户端

[root@gaussdb02 ~]# iperf3 -c 192.168.0.83 -i 1 -t 10 -b 5M
#作为客户端,连接服务端ip地址192.168.3.250,报告回显间隔1s,测试时间10s,带宽限制为5M

在这里插入图片描述

服务端:

在这里插入图片描述

我们这里测试吞吐量的结果为Bitrate 5.01M左右,是因为我们限制了测试数据的带宽就是5M,说明实际的吞吐量应该是比这个大,测试过程中,如果发现测试的带宽与限制带宽接近,说明限制设置的太小了,需要适当调整-b参数,或者参考硬件厂家给的指标测试。

那么我们调整-b参数到50M,测试结果如下

在这里插入图片描述

可以看出来我们实际TCP上行的速度测试为49.8M/sec,我们还可以增加测试时间来提高测试准确性。

这里还有一点是sender结果为0bits/sec,是因为我们只测试了上行数据,那么如何测试下行通信速度呢?

TCP下行测试:在A(客户端)设备启动shell窗口,输入指令

[root@gaussdb02 ~]# iperf3 -c 192.168.0.83 -i 1 -t 10 -b 5M -R
#作为客户端,连接服务端ip地址192.168.0.83,报告回显间隔1s,测试时间10s,带宽限制为7M,-R为反向测试,这个参数也是iperf3的主要亮点,支持直接转换数据发送方向

在这里插入图片描述

我们这里测试TCP下行吞吐量的结果为5.01M左右。

案例二:UDP测试

可以继续使用与案例一服务器,如果未打开,参考案例一的服务器打开方式,注意不要同时打开多个服务器

在B(服务端)设备启动shell窗口,输入指令

[root@gaussdb01 ~]# iperf3 -s -i 1  -p 5201 
# 作为服务端运行,报告回显间隔时间1s,服务端不区分tcp或udp

客户端

[root@gaussdb02 ~]# iperf3 -u -c 192.168.0.83 -i 1 -t 10 -b 50M -i 1 -t 10
#作为客户端运行,限制带宽50M,报告回显间隔1s,测试时间10s

在这里插入图片描述

UDP下行测试:在A(客户端)设备启动shell窗口,输入指令加-R

我们这里测试出UDP上行吞吐量的结果为50M/s,延迟抖动(Jitter)为0.000ms,丢包率为0%。

案例三 传输东西进行测试

[root@gaussdb02 ~]# du -sh a.txt 
4.0K	a.txt        
[root@gaussdb02 ~]# iperf3 -u -c 192.168.0.83 -i 1 -t 10 -b 50M -i 1 -t 10 -F /root/a.txt 

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46400195/article/details/130379876