本篇文章已有186人收藏 | Loading收藏
iPerf3是基于Client/Server的网络性能测试工具,通常用于测试网络上可达到的最大带宽,它能够测试TCP、UDP及SCTP的带宽质量,可以提供网络吞吐量、网络波动、网络丢包率以及最大传输单元大小等信息,能够帮助我们测试网络性能,定位网络瓶颈。可在Linux、MacOS、FreeBSD、Window、Android、iOS、Docker等平台使用,是一个简单实用的小工具。

iPerf3 安装

Ubuntu & Debian 中安装

sudo apt install iperf3

查看iperf3版本:iperf3 -v
iperf3-speed-test-tool-01.png

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
iperf3-speed-test-tool-02.png

TCP正向模式

服务端接收,客户端发送,测试上传速度

# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3
iperf3-speed-test-tool-03.png

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
iperf3-speed-test-tool-04.png

UDP正向模式

# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,共计5秒,忽略前3秒的结果,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -t 5 -O 3 -u
iperf3-speed-test-tool-05.png

指定带宽大小和传输内容大小

  • 指定带宽大小增加参数 -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
iperf3-speed-test-tool-06.png
TCP正向-上传
# 以客户端模式运行,host:port为服务端信息,输出结果以MB显示,每个1秒打印一次,带宽1000M,传输内容100MB,正向模式运行
iperf3 -c 192.168.1.106 -p 5201 -f m -i 1 -b 1000M -n 100M
iperf3-speed-test-tool-07.png

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

UPD传输,不指定缓冲区大小
iperf3-speed-test-tool-08.png UPD传输,指定缓冲区大小
iperf3-speed-test-tool-09.png

Windows 中使用方法

  • 打开程序所在文件夹,在空白处按住Shift+鼠标右键,选择“在此处打开Powershell窗口”,进入命令行窗口
    iperf3-speed-test-tool-10.png
  • 由于Windows版本不同,可能出现下图中的报错
    iperf3-speed-test-tool-11.png 可以通过在命令前添加 .\ 解决,如:

    .\iperf3 -s -i 2 -p 5201
    
  • 客户端默认只显示发送信息,接收信息需在服务端查看,为方便查看,可以使用参数 --get-server-output 同时输出服务端的信息
    iperf3-speed-test-tool-12.png
  • 其他操作如同在 Ubuntu & Debian 中使用方法一样