https://zhuanlan.zhihu.com/p/314727150
iperf3是一款带宽测试工具,它支持调节各种参数,比如通信协议,数据包个数,发送持续时间,测试完会报告网络带宽,丢包率和其他参数。
小广告:欢迎喜欢网络技术的朋友加我微信:xfiles_sky,一起学习。
一、安装
操作系统:Ubuntu20.04LTS
打开终端,直接输入
#sudo apt install iperf3
二、使用方法
环境假设:
假设两台云服务器A(内)和B(外),我们通过笔记本电脑终端分别ssh远程连接上云服务器A和B。
A(内)IP地址:10.10.0.1
B(外)IP地址:10.10.0.2
目的一:测试TCP吞吐量
1、先让B(外)做server端,开启iperf服务器模式,指定TCP端口1314:
#iperf3 -s -i 1 -p 1314
2、然后打开A(内)做client端,连接服务器端1314端口:
#iperf3 -c 10.10.0.2 -i 1 -t 60 -p 1314
经过60秒后,A(内)client端得到结果如下图:
B(外)服务器监听1314端口得到的结果如下图:
其中:
① Interval表示时间间隔。
② Transfer表示时间间隔里面转输的数据量。
③ Bandwidth是时间间隔里的传输速率。
目的二:测试UDP吞吐量
1、B(外)server端开启iperf的服务器模式:
#iperf3 -s -i 1 -p 1314
2、A(内)client端启动iperf的客户端模式,连接服务器端:
#iperf3 -u -c 10.10.0.2 -b 100m -t 60 -p 1314
A(内)客户端模式测得到数据如下:
B(外)服务器模式监听得到结果如下:
目的三:进行上下行带宽测试(TCP双向传输)
#iperf3 -c 192.168.0.120 -d -t 60
目的四:测试多线程TCP吞吐量
如果没有指定发送方式,iPerf客户端只会使用单线程。
#iperf3 -c 192.168.0.120 -P 30 -t 60
目的五:测试多线程UDP吞吐量
如果没有指定发送方式,iPerf客户端只会使用单线程。
#iperf3 -u -c 192.168.1.1 -b 5M -P 30 -t 60
目的六:测试上下行带宽(UDP双向传输)
#iperf3 -u -c 192.168.1.1 -b 100M -d -t 60
三、iperf3常用参数(测试足够了)
(1)-s,--server:iperf服务器模式,默认启动的监听端口为5201,eg:iperf -s
(2)-c,--client host:iperf客户端模式,host是server端地址,eg:iperf -c 222.35.11.23
(3)-i,--interval:指定每次报告之间的时间间隔,单位为秒,eg:iperf3 -c 192.168.12.168 -i 2
(4)-p,--port:指定服务器端监听的端口或客户端所连接的端口,默认是5001端口。
(5)-u,--udp:表示采用UDP协议发送报文,不带该参数表示采用TCP协议。
(6)-l,--len:设置读写缓冲区的长度,单位为 Byte。TCP方式默认为8KB,UDP方式默认为1470字节。通常测试 PPS 的时候该值为16,测试BPS时该值为1400。
(7)-b,--bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec。
(8)-t,--time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒。
(9)-A:CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。