文章目录
- 简介
- 1.下载
- 2. 使用
- 测试实例:
- 案例一 TCP通信测试
- 案例二:UDP测试
- 案例三 传输东西进行测试
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
- 其他下载地址:iPerf - 下载 iPerf3 和原始 iPerf 预编译二进制文件
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