iPerf3 使用指南

news2024/9/21 16:41:07

文章目录

  • iPerf3 使用指南
    • 1 iPerf3 简介
    • 2 安装指令
      • 2.1 Windows
      • 2.2 Linux
    • 3 入门用法
    • 4 进阶用法
      • 4.1 启动服务端
      • 4.2 TCP 带宽测试
      • 4.3 UDP 带宽测试
    • 5 iPerf3 命令说明

iPerf3 使用指南

1 iPerf3 简介

iPerf3 是用于主动测试 IP 网络上最大可用带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCTP 与 IPv4 和IPv6)有关的各种参数。对于每次测试,它都会详细的带宽报告,延迟抖动和数据包丢失。
它与原始 iPerf 不共享任何代码,也不向后兼容。
它是一个 C/S 架构的测试工具,需要在同时运行在服务器端和客户端。
支持的平台:Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, iPhone/iPad 等。

2 安装指令

2.1 Windows

下载链接:https://iperf.fr/iperf-download.php

官网直接下载安装包,下载完成后解压,使用时进入 cmd 终端,cd 到解压路径,可以找到 iperf3.exe 程序即可正常使用。

iperf3

2.2 Linux

在 Ubuntu 系统中可以直接使用以下命令进行安装:

sudo apt install -y iperf3 

如果需要在开发板上运行,需要交叉编译 iperf3 源码到目标板,欲知后事如何,敬请关注。

3 入门用法

  • 在服务端(192.168.9.10)运行 iperf3,默认端口为 5201

    iperf3 -s
    
  • 在客户端运行 iperf3,填写服务端的地址:

    iperf3 -c 192.168.9.10
    

默认选项是使用 TCP 进行测试,测试时间 10 秒,报告间隔为 1 秒。

如果只是需要确认网络带宽,那么以上的方法即可满足需求。服务端与客户端运行截图如下:

iperf3 server

从客户端结果可知服务端与客户端的网络带宽为 940 Mbits/sec。

4 进阶用法

接下来,我们对 iperf3 提供的参数进行一些讲解同时进行一些更加深入的测试验证。

在测试过程中随时可以通过 iperf3 的帮助系统查看 iperf3 的命令的使用说明(参考 5 iPerf3 命令说明):

iperf3 -h

4.1 启动服务端

iperf3 -s
  • -s 以服务器模式运行

如果需要指定端口运行,使用 -p 参数带上端口号,在这种情况下客户端也必须指定相同端口:

iperf3 -s -p 8801    # server
iperf3 -c 192.168.9.10 -p 8801 # client
  • -s 以服务器模式运行
  • -c 客户端运行并指定服务端的 IP 地址
  • -p 要侦听/连接的服务器端口

在同一时刻只允许有一个客户端进行测试,如果有多个客户端同时发起测试请求,则后面连接的客户端会收到提示:

iperf3: error - the server is busy running a test. try again later

4.2 TCP 带宽测试

  1. 通用测试

iperf3 general test

iperf3 -c 192.168.9.10
  • -c 客户端运行并指定服务端的 IP 地址

测试结果:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.09 GBytes   937 Mbits/sec                  receiver
  • Interval: 程序的运行时间
  • Transferf: 传输的数据总量
  • Bitrate: 测试出的带宽比特率(在 3.1.3 版本中称之为 Bandwidth
  • Retr: 重新传输的 TCP 数据包
  1. 时长测试(压测使用)

默认情况下 iPerf3 只进行 10 秒的测试,如果需要进行长时间的运行可以通过 -t 参数指定测试时长,单位为秒。

iperf3 -c 192.168.9.10 -t 60
  • -c 客户端运行并指定服务端的 IP 地址
  • -t 以秒为单位的传输时间(默认 10 秒)
  1. 并行测试

iperf3 para test

可以在客户端设置多个并行数据流进行测试,验证多个数据流同时发送的性能,并计算总带宽。

iperf3 -c 192.168.9.10 -P 3
  • -P, --parallel 大写的 P,要运行的并行客户端流的数量

测试结果:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   371 MBytes   311 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   366 MBytes   307 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   373 MBytes   313 Mbits/sec    0             sender
[  7]   0.00-10.00  sec   366 MBytes   307 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   373 MBytes   313 Mbits/sec    0             sender
[  9]   0.00-10.00  sec   366 MBytes   307 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  1.09 GBytes   937 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  1.07 GBytes   922 Mbits/sec                  receiver

通过 ID 区分不同的客户端流,最后结果在 [SUM] 体现。并行测试时总带宽并不会发生改变,速率与非并行测试的结果一致。

  1. 反向测试

iperf3 reverse test

反向测试可以理解为是在做「下行带宽」测试,由服务端发送数据,客户端接收,测试服务端到客户端的网络带宽与性能。

iperf3 -c 192.168.9.10 -R
  • -R, --reverse 大写的 R,以反向模式运行(服务器发送,客户端接收)

这个测试有意思的地方在于,上下行的速率并不总是一致的,以我们的服务器与客户端的测试为例:

  • 客户端往服务器发送的速率是 50.0 Mbits/sec
  • 而服务器往客户端发送速率是 92.0 Mbits/sec
  • 速率差异与网络配置有关

iperf3 reverse2 test

4.3 UDP 带宽测试

  1. 使用 UDP 协议进行测试
iperf3 -c 192.168.9.10 -u
  1. 使用 UDP 协议进行测试,同时设置测试带宽,因为 UDP 默认使用 1Mbits/sec,可以根据需要设置测试带宽,比如 1000M,同时使用 -t 参数配置测试时间为 60 秒。
iperf3 -c 192.168.9.10 -u -b 1000M -t 60

测试结果:

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-60.00  sec  6.68 GBytes   956 Mbits/sec  0.000 ms  0/4949773 (0%)  sender
[  5]   0.00-60.00  sec  1.72 GBytes   246 Mbits/sec  0.047 ms  4285962/4946689 (87%)  receiver
  • Interval: 程序的运行时间
  • Transferf: 传输的数据总量
  • Bitrate: 测试出的带宽比特率(在 3.1.3 版本中称之为 Bandwidth
  • Jitter: 抖动
  • Lost/Total Datagrams: 丢包率

使用大包进行测试时,客户端往服务器发送的速率为 956 Mbits/sec,无延时抖动,无丢包;A客户端数据接收的速率为 246 Mbits/sec,抖动 0.047 ms,丢包 13%。

需要下调测试带宽,比如 200M。

iperf3 -c 192.168.9.10 -u -b 200M -t 60

测试结果:

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-60.00  sec  1.40 GBytes   200 Mbits/sec  0.000 ms  0/1035910 (0%)  sender
[  5]   0.00-60.00  sec  1.40 GBytes   200 Mbits/sec  0.005 ms  0/1035910 (0%)  receiver
  1. 反向测试,从服务端往客户端发送,同时忽略掉前 10 秒的测试
iperf3 -c 192.168.9.10 -u -b 200M -t 60 -R -O 10

UDP 的测试有点神奇,当完成了上一个的测试之后再开始新的 UDP 测试时,前段部分的数据可信度不高,建议使用 -O 参数忽略掉。

5 iPerf3 命令说明

用法:

iperf3 [-s|-c host] [options]
参数说明备注
-p, --port #要侦听/连接的服务器端口
-f, --format [kmgtKMGT]报告格式:Kbits, Mbits, Gbits, Tbits
-i, --interval #每次报告的间隔,单位为秒
-F, --file name测试所用文件的文件名。如果在 Client 端使用,发送该文件用作测试;如果使用在 Server 端,则是将数据写入该文件
-A, --affinity n/n,m设置 CPU 亲和力
-B, --bind绑定指定的网卡接口
-V, --verbosevebose 模式,运行时输出最详细的日志信息
-J, --json运行时以 JSON 格式输出结果
--logfile f输出到文件
--forceflush强制刷新每次间隔的日志信息3.7 版本+
-d, --debug以 debug 模式输出结果
-v, --version显示版本信息并退出
-h, --help显示帮助信息并退出
Server 端参数
-s, --server以 Server 模式运行
-D, --daemon在后台以守护进程运行
-I, --pidfile file指定 pid 文件
-1, --one-off只接受 1 次来自 Client 端的测试,然后退出
--rsa-private-key-path用于解密身份验证凭据的RSA私钥的路径3.7 版本+
--authorized-users-path包含用户凭据的配置文件的路径3.7 版本+
Client 端参数
-c, --client <host>以 Client 模式运行,并指定 Server 端的地址
--sctp使用 SCTP 协议进行测试3.7 版本+
-X, --xbind <name>将 SCTP 关联绑定到链接3.7 版本+
--nstreams #SCTP流的数量3.7 版本+
-u, --udp以 UDP 协议进行测试
--connect-timeout #控制连接设置超时(毫秒)3.7 版本+
-b, --bitrate #[KMG][/#]限制测试带宽。UDP 默认为 1Mbit/秒,TCP 默认无限制
--pacing-timer #[KMG]设置起搏时间,单位为微秒(默认值为1000)3.7 版本+
--fq-rate #[KMG]以位/秒为单位启用基于公平排队的套接字调步(仅限Linux)3.7 版本+
-t, --time #以时间为测试结束条件进行测试,默认为 10 秒
-n, --bytes #[KMG]以数据传输大小为测试结束条件进行测试(代替-t)
-k, --blockcount #[KMG]以传输数据包数量为测试结束条件进行测试(代替-n或-t)
-l, --length #[KMG]读写缓冲区的长度,TCP 默认为 128K;UDP 默认为 8K,在 3.7 版本之后,UDP 默认使用动态分配或 1460 字节。
--cport <port>指定 Client 端运行所使用的 TCP 或 UDP 端口,默认为临时端口
-P, --parallel #测试数据流并发数量
-R, --reverse反向模式运行(Server 端发送,Client 端接收)
--bidir以双向模式运行。客户端和服务器发送和接收数据。3.7 版本+
-w, --window #[KMG]设置套接字缓冲区大小,TCP 模式下为窗口大小
-C, --congestion <algo>设置 TCP 拥塞控制算法(仅支持 Linux 和 FreeBSD )
-M, --set-mss #设置 TCP/SCTP 最大分段长度(MSS,MTU - 40 字节)
-N, --no-delay设置 TCP/SCTP no delay,屏蔽 Nagle 算法
-4, --version4仅使用 IPv4
-6, --version6仅使用 IPv6
-S, --tos N设置 IP 服务类型(TOS,Type Of Service),0-255。可以使用八进制和十六进制的常用前缀,即 52,064 和 0x34 都指定相同的值。
--dscp N or --dscp val设置 IP dscp 值,0-63 或符号。数值可以用十进制、八进制和十六进制指定(请参阅上面的–tos)。3.7 版本+
-L, --flowlabel N设置 IPv6 流标签(仅支持 Linux)
-Z, --zerocopy使用「zero copy」(零拷贝)方法发送数据
-O, --omit N忽略前 n 秒的测试
-T, --title str设置每行测试结果的前缀
--extra-data str要包含在客户端和服务器 JSON 中的数据字符串3.7 版本+
--get-server-output从 Server 端获取测试结果
--udp-counters-64bit在 UDP 测试包中使用 64 位计数器(防止计数器溢出)
--repeating-payload在有效载荷中使用重复模式,而不是随机化的有效载荷(如iperf2)3.7 版本+
--username身份验证用户名3.7 版本+
--rsa-public-key-path用于加密身份验证凭据的 RSA 公钥的路径3.7 版本+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux编写简易shell

思路&#xff1a;​ ​ ​ 所以要写一个shell&#xff0c;需要循环以下过程:​ 获取命令行解析命令行建立一个子进程&#xff08;fork&#xff09;替换子进程&#xff08;execvp&#xff09;父进程等待子进程退出&#xff08;wait&#xff09; 实现代码&#xff1a;​ #inc…

AI量化交易案例

量化交易 案例介绍 1.1 案例说明 机器学习与人工智能在金融领域已有成熟的应用。用统计模型来预测股票等金融产品的价格并自动交易&#xff0c;这是其中的经典问题。价格预测的模型是这个应用场景中的核心问题&#xff0c;在预测价格变化的基础上&#xff0c;通过一定的交易规则…

给视频添加srt字幕,为你的创作加上心声

无论你是分享生活点滴、教学知识&#xff0c;还是传递某种情感&#xff0c;总会有那么一刹那&#xff0c;言语显得如此苍白无力。而srt字幕就像是一位翻译官&#xff0c;用最恰当、最直接的文字&#xff0c;把你所要表达的意思准确的传递给观众。 所需工具&#xff1a; 一个【…

[C#]winform部署openvino调用padleocr模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR 【算法介绍】 OpenVINO和PaddleOCR都是用于计算机视觉应用的工具&#xff0c;但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件&#xff0c;主要用于加速深度学习推理&#xff0c;而PaddleOC…

MySQL---视图索引

表定义&#xff1a; 学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;S…

DolphinDB学习(0):DolphinDB基本概述

DolphinDB的学习难度不小&#xff0c;主要是写法比较多&#xff0c;官方示例是一次性给一大堆代码&#xff0c;在没有成体系的学习基础的前提下&#xff0c;总有种力不从心的感觉&#xff0c;所以博主汇总这一个系列的文章&#xff0c;尝试从最简单的基础常规操作开始&#xff…

css绘制下拉框头部三角(分实心/空心)

1:需求图: 手绘下拉框 带三角 2:网上查了一些例子,但都是实心的, 可参考,如图: (原链接: https://blog.csdn.net/qq_33463449/article/details/113375804) 3:简洁版的: a: 实心: <view class"angle"/>.angle{width:0;height:0;border-left: 10px solid t…

安全基础~攻防特性3

文章目录 SSTI(模板注入)1. 简介2. 成因3. 常见框架存在注入4. 判断存在SSTI SSTI(模板注入) 1. 简介 (Server-Side Template Injection) 服务端模板注入 1、使用框架&#xff08;MVC的模式&#xff09;&#xff0c;如python的flask&#xff0c;php的tp&#xff0c;java的sp…

Flask 3.x log全域配置(包含pytest)

最近使用到flask3.x&#xff0c;配置了全域的log&#xff0c;这边记录下 首先需要创建logging的配置文件&#xff0c;我是放在项目根目录的&#xff0c; Logging 配置 logging.json {"version": 1, # 配置文件版本号"formatters": {"default&qu…

目标检测难题 | 小目标检测策略汇总

大家好&#xff0c;在计算机视觉中&#xff0c;检测小目标是最有挑战的问题之一&#xff0c;本文给出了一些有效的策略。 从无人机上看到的小目标 为了提高模型在小目标上的性能&#xff0c;本文推荐以下技术&#xff1a; 提高图像采集的分辨率 增加模型的输入分辨率 tile你…

C++PythonC# 三语言OpenCV从零开发(3):图像读取和显示

文章目录 相关链接前言Mat是什么读取图片CC#Python 灰度处理CCSharpPython 打印图像信息CCsharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程&#xff08;附带课程课件资料课件笔记&#xff09; …

项目上线存在的缓存问题以及存在的debugger和console.log等问题

下载uglifyjs-webpack-plugin插件 在vue.config文件中进行配置 publicPath: process.env.NODE_ENV production ? ./ : /,outputDir: n-sim-ipc-manage-build,productionSourceMap: false,configureWebpack: config > {//打包文件增加hashconfig.output.filename js/[nam…

微电网优化MATLAB:基于麻雀搜索算法SSA的微电网优化调度(提供MATLAB代码)

一、微网系统运行优化模型 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、麻雀搜索算法简介 麻雀搜索算法 (Sparrow Search Algorithm, SSA) 是一种新型的群智能优化算法&#xff0c;于2020…

博达V900远程透传模块与台达PLC远程上下载程序,远程在线调试程序

准备工作 一台可联网操作的电脑一台单网口的远程透传网关及博达远程透传配置工具网线一条&#xff0c;用于实现网络连接和连接PLC一台台达PLC及其编程软件WPLSoft一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡&#xff0c;WIFI联网则将WIFI天线插入USB口&#xff09; …

利用Pytest插件pytest-asyncio实现异步代码测试

在现代异步编程的时代,Python中的 pytest-asyncio 插件为我们提供了在异步代码中进行测试的强大工具。本文将深入介绍 `pytest-asyncio` 插件的基本用法和实际案例,助你更好地理解和运用异步测试。 什么是pytest-asyncio? pytest-asyncio 是Pytest的一个插件,它为异步代码…

免费的几个站群更新软件【2024】

在网站运营的过程中&#xff0c;及时更新和维护是保持网站活力和吸引用户的关键。站群更新软件成为了许多站长的首选&#xff0c;能够帮助批量管理网站、自动更新原创文章&#xff0c;并通过主动推送服务向各大搜索引擎提交信息。本文将专心分享四款卓越的站群更新软件&#xf…

上门按摩系统的开发对于按摩行业有哪些意义

随着科技的迅猛发展&#xff0c;人们的生活水平逐渐提高&#xff0c;对健康与舒适的需求也日益增强。作为古老而又充满现代感的保健方式&#xff0c;按摩已受到广大民众的喜爱与接纳。然而&#xff0c;传统的按摩店往往需要顾客亲自上门&#xff0c;这对于忙碌的上班族或行动不…

按照要求完成如下DQL语句编写

题目来源于黑马MySQL 创建表格&#xff1a; CREATE TABLE TB_EMPLOYEE(ID INT COMMENT 编号,WORK_NO VARCHAR(10) COMMENT 工号,NAME VARCHAR(10) COMMENT 姓名,GENDER CHAR COMMENT 性别,AGE TINYINT UNSIGNED COMMENT 年龄,ID_CARD CHAR(18) COMMENT 身…

前端基础知识:html表格

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> html表格</title> </head> <style&…

第五篇:其他窗口部件 QAbstractButton

QAbstractButton QAbstractButton 类是按钮部件的抽象基类&#xff0c;提供了按钮的通用功能。它的子类包括标准按钮 QPushButton、工具按钮 QToolButton、复选框 QCheckBox和单选按钮 QRadioButton 等。 QPushButton QPushButton 提供了创建交互按钮的基本功能。它可以包含…