iperf3带宽压测工具使用

iperf3带宽压测工具使用

  • 安装
    • 下载地址:[下载入口](https://iperf.fr/iperf-download.php)
      • 测试结果:
      • 时长测试(压测使用):
      • 并行测试
      • 反向测试
      • UDP 带宽测试

iPerf3 是用于主动测试 IP 网络上最大可用带宽的工具

安装

下载地址:下载入口

在这里插入图片描述
windows安装:
在这里插入图片描述
linux安装:

install -y iperf3

默认端口号5201
在这里插入图片描述
测试:
服务端(linux):iperf3 -s
客户端(windows):移动到iperf3.exe所在位置,执行iperf3 -c 目的IP
在这里插入图片描述
进阶:
如果需要指定端口运行,使用 -p 参数带上端口号,在这种情况下客户端也必须指定相同端口:

iperf3 -s -p 8801    # server
iperf3 -c 192.168.200.138 -p 8801 # client

测试结果:

[ 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 数据包

时长测试(压测使用):

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

iperf3 -c 192.168.200.138 -t 60

-c 客户端运行并指定服务端的 IP 地址
-t 以秒为单位的传输时间(默认 10 秒)

并行测试

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

iperf3 -c 192.168.200.138 -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] 体现。并行测试时总带宽并不会发生改变,速率与非并行测试的结果一致

反向测试

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

iperf3 -c 192.168.200.138 -R

-R, --reverse 大写的 R,以反向模式运行(服务器发送,客户端接收)
这个测试有意思的地方在于,上下行的速率并不总是一致的,以我们的服务器与客户端的测试为例:
客户端往服务器发送的速率是 3.17 Gbits/sec
而服务器往客户端发送速率是 1.27 Gbits/sec
速率差异与网络配置有关

UDP 带宽测试

使用 UDP 协议进行测试

iperf3 -c 192.168.200.138 -u

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

iperf3 -c 192.168.200.138 -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.200.138 -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

反向测试,从服务端往客户端发送,同时忽略掉前 10 秒的测试

iperf3 -c 192.168.200.138 -u -b 200M -t 60 -R -O 10

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

iPerf3 命令说明
用法:
Client 端参数
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 以 Client 模式运行,并指定 Server 端的地址
–sctp使用 SCTP 协议进行测试3.7 版本+
-X, --xbind 将 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 指定 Client 端运行所使用的 TCP 或 UDP 端口,默认为临时端口
-P, --parallel #测试数据流并发数量
-R, --reverse反向模式运行(Server 端发送,Client 端接收)
–bidir以双向模式运行。客户端和服务器发送和接收数据。3.7 版本+
-w, --window #[KMG]设置套接字缓冲区大小,TCP 模式下为窗口大小
-C, --congestion 设置 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.mzph.cn/news/845702.shtml

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

相关文章

大话C语言:第21篇 数组

1 数组概述 数组是若干个相同类型的变量在内存中有序存储的集合。 数组是 C 语言中的一种数据结构,用于存储一组具有相同数据类型的数据。 数组在内存中会开辟一块连续的空间 数组中的每个元素可以通过一个索引(下标)来访问,索…

【Python Cookbook】S1E08 在两个字典中寻找相同点

目录 问题解决方案讨论 问题 在两个字典中,如果我们想要找到其中相同的地方,比如相同的键、相同的值等。 解决方案 考虑以下两个字典以及其中内容: a {x: 1,y: 2,z: 3 }b {w: 10,x: 11,y: 2 }要找出这两个字典中的相同之处,…

Java学习19-List、set容器

目录 一.List: 1.List基本介绍: 2.List接口方法: 3.List的三种遍历方式: 4.ArrayList: (1)ArrayLis的基本介绍: (2)ArrayList底层结构和源码分析&…

考研回顾纪录--科软考研失败并调剂兰州大学软件工程专业复试经历

1.背景 本人工作一年后决定考研,遂于2023年4月底离职。5月到家后开始学习。本科东北大学软件工程专业,绩点3.2/5,按照百分制计算是82分。本科纯属混子,只有一个四级551,一个数学竞赛省二等奖,大创学校立项…

算法刷题笔记 最长连续不重复子序列(C++实现)

文章目录 题目描述解题思路实现代码 题目描述 给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数n。第二行包含n个整数(均在 0∼10^5范围内),表示整数序列。…

vue打包时报错文件包过大

1.问题:npm run build 之后出现 2. 翻译之后意思就是某块过大 3. 解决办法:在vite.config.ts文件上添加 build: { chunkSizeWarningLimit: 1600, }, 4.最终打包

UnityLeapMotion流程记录

突然接到一个LeapMotion的项目,回想起上次做LeapMotion还是在几年前,但是当时没有去记录,所以这次就相当于是重新走了一遍流程。很苦恼,赶紧记录下来。防止之后忘记。这次的需求还是比较简单的,用手滑动控制图片序列播…

在Visual Studio2022中同一个项目里写作业,有多个cpp文件会报错

为了省事,在同一个项目里写很多个题目,结果只有一个cpp文件时没出错,写了2个cpp文件再想运行时就出错了; 将不相关的cpp文件移出去 在源文件中对其点击右键,找到“从项目中排除”; 结果如图,剩…

【Android】 怎么设置蓝牙等待设备连接和接收数据

项目需求 1.打开蓝牙之后等待别的蓝牙设备进行连接。 2.连接之后等待别的设备发送数据,然后接收数据。 3.跟别的蓝牙设备断开连接值进入到等待状态,等待别的蓝牙设备连接。 解决方式 //非手机终端的UUID public static final UUID SPP_UUID UUID.fro…

深度学习21天 —— 卷积神经网络(CNN):识别验证码( 第12天)

目录 一、前期准备 1.1 标签数字化 1.2 加载数据 1.3 配置数据 二、其他 2.1 损失函数 categorical_crossentropy 2.2 plt.legend(loc ) 2.3 history.history 活动地址:CSDN21天学习挑战赛 学习:深度学习100例-卷积神经网络(CNN&…

通过 SFP 接口实现千兆光纤以太网通信2

Tri Mode Ethernet MAC IP 核结构 时钟网络 IP 核内部时钟网络结构如下图所示。其中,tx_mac_aclk 为 AXI-Stream 发送接口的同步时钟, rx_mac_aclk 为 AXI-Stream 接收接口的同步时钟。由于在设计中没有使用 MDIO 接口,所以不存在时钟信号 …

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代,一个创新的商业模式总能引起广泛关注。其中,“二人订单共享结束制”以其独特的魅力,吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠,更为创业者提供了一个全新的平台。 只需购买一…

Android的刷机模式

高通为例子。不看不知道,一看原来这么多。想以前做博通方案,就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄?!。。。 基本参考这篇:https://www.cnblogs.com/bluestorm/p/18129830 常用的应该就是OTA&…

OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置

目录 一.前置知识 二.具体实现 一.前置知识 对应的OpenHarmony版本:V3.2 查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求…

C/C++中的 extern 和extern“C“关键字详解(通俗易懂)

前言 1、C/C extern关键字用法 2、extern "C"用法 正文 1、extern关键字 extern其实就是一个声明,明确指出一个语句是声明,比如extern int i ;这是声明变量i,而不是定义i,定义i则是int i(声明不开辟内存空…

网络数据库后端框架相关面试题

面试是工作的第一步,面试中面试官所提出的问题千奇百怪,其中关于网络数据库后端框架面试题汇总如下: 1,关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源码编译安装

本人使用的服务器是2G2核 ubuntu22.04 前置工作 muduo库源码github仓库地址: muduo WIndows和Linux平台的boost源码包下载(zip是Windows版,tar.gz是Linux版,你也可以去boost官网下载最新版本) Boost C Libraries 由于muduo网络库是基于boo…

C语言| 输出*三角形

分析: ① 输入三角形主要分为两部分, 即输出空格和输出星号,要将它们分开,不用考虑空格数和星号个数之间的关系。 ② 从每行输出的空格个数来看,若总共输出n行,则第i行首先要输出n - i个空格,然…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…