iPerf3是基于Client/Server的网络性能测试工具,通常用于测试网络上可达到的最大带宽,它能够测试TCP、UDP及SCTP的带宽质量,可以提供网络吞吐量、网络波动、网络丢包率以及最大传输单元大小等信息,能够帮助我们测试网络性能,定位网络瓶颈。可在Linux、MacOS、FreeBSD、Window、Android、iOS、Docker等平台使用,是一个简单实用的小工具。
iPerf3 安装
Ubuntu & Debian 中安装
sudo apt install iperf3
Windows 中安装
官网下载:https://iperf.fr/iperf-download.php
备用链接:https://cloud.grayzhao.com/s/8PCA
根据系统选择64bit或32bit。
下载后解压到喜欢的路径下,并将iperf3程序路径添加至系统环境变量,方便以后在控制台中使用;也可以直接在iperf3程序路径下呼出控制台使用。
iPerf3 常用参数
通用参数:
- -v # 查看版本信息
- -p # 端口
- -f # 指定带宽输出格式: Kbits、Mbits、Gbits、Tbits
- -i # 监控报告时间间隔,单位秒(s),默认为0
- -J # Json格式输出结果
- --logfile # 将结果输出到指定文件中
服务端参数:
- -s # 以服务器模式运行
- -D # 后台运行服务器模式
客户端参数:
- -c # 以客户端模式运行,连接到服务端
- -t # 传输时间,默认10秒
- -n # 传输内容大小,不能与-t同时使用
- -b # 目标比特率(0表示无限)(UDP默认1Mbit/sec,TCP不受限制)
- -l # 要读取或写入的缓冲区长度(TCP默认128 KB,UDP默认1460)
- -O # 忽略前几秒
- -R # 反向模式运行,即服务端发送,客户端接收(测试下载速度)
- -u # 使用UDP协议
- -F # 传输或接收特定的文件
- -T # 指定ttl值
- -w # 设置套接字缓冲区为指定大小
- --get-server-output # 输出服务端的结果
更多参数请通过帮助命令 iperf3 --help
查看
iPerf3 使用
Ubuntu & Debian 中使用方法
选择一台机器做为服务端,执行以下命令,默认时间1秒,默认端口5201
# iperf3版本 ≥ 3.1.7,已经不需要-u参数,-s默认启动的tcp和udp
# 以服务端模式运行,设置监控时间2秒,并指定端口为8888
iperf3 -s -i 2 -p 5201
选择另一台机器做为客户端,执行以下命令进行带宽测速
TCP反向模式
服务端发送,客户端接收,测试下载速度
- sender:发送者
- receiver:接收者
- Transfer:传输的数据大小
- Bitrate:带宽
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,反向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3 -R
TCP正向模式
服务端接收,客户端发送,测试上传速度
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3
UDP反向模式
UDP模式仅需增加参数 -u
即可
- Jitter:网络延时
- Lost/Total:丢包率
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3 -u -R
UDP正向模式
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3 -u
指定带宽大小和传输内容大小
- 指定带宽大小增加参数
-b
即可 - 指定传输内容大小增加参数
-n
即可
以1000M带宽传输100MB的内容为例子
TCP反向-下载
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,带宽1000M,传输内容100MB,反向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -b 1000M -n 100M -R
TCP正向-上传
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,带宽1000M,传输内容100MB,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -b 1000M -n 100M
P.S. UDP同理
如果发现UDP与TCP的结果差距很大,可能是缓存区buffer有限制导致的,通过增大缓冲区可以避免此情况,增加参数 -l
# 以客户端模式运行
# host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,带宽1000M,传输内容100MB,缓冲区大小15000KB,正向模式
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -b 1000M -n 100M -l 15000 -u
Comments NOTHING