iPerf 3 测试UDP和TCP方法详解

文章目录

  • 前言
  • 一、What is iPerf / iPerf3 ?
  • 二、功能
    • 1. TCP and SCTP
    • 2. UDP
    • 3. 其他
  • 三、 Iperf的使用
    • 1.Iperf的工作模式
    • 2. 通用指令
    • 3. 服务端特有选项
    • 4. 客户端特有选项
    • 5. -t -n参数联系
  • 四、Iperf使用实例
    • 1. 调整 TCP 连接
      • 1. 1TCP 窗口大小调节
      • 1. 2 最大传输单元 (MTU)调整
    • 2. 调整 UDP 连接
    • 3. 测试TCP吞吐量
    • 4. 测试UDP吞吐量

前言

工具安装、说明等详细信息可参考官方文档ipef user doc

一、What is iPerf / iPerf3 ?

Perf3 是一款用于主动测量 IP 网络最大带宽的工具。它支持调整与定时、缓冲区和协议(TCP、UDP、SCTP 与 IPv4 和 IPv6)相关的各种参数。每次测试都会报告带宽、损耗和其他参数。

二、功能

1. TCP and SCTP

  • 测量带宽
  • 报告 MSS/MTU 大小和观察到的读取大小
  • 通过套接字缓冲区支持 TCP 窗口大小。

2. UDP

  • 客户端可创建指定带宽的 UDP 数据流
  • 测量数据包丢失
  • 测量延迟抖动
  • 支持组播

3. 其他

  • 客户端和服务器可同时进行多个连接(-P 选项)。
  • 服务器处理多个连接,而不是在一次测试后退出。
  • 可在指定时间(-t 选项)内运行,而不是在设定的数据传输量(-n 或 -k 选项)内运行。
  • 以指定时间间隔打印定期的中间带宽、抖动和损耗报告(-i 选项)。
  • 将服务器作为守护进程运行(-D 选项)
  • 使用代表性数据流测试链路层压缩对可实现带宽的影响(-F 选项)。
  • 服务器同时接受单个客户端(iPerf3)或多个客户端(iPerf2)
  • 新功能:忽略 TCP 慢启动(-O 选项)。
  • 新功能:为 UDP 和(新)TCP 设置目标带宽(-b 选项)。
  • 新功能:设置 IPv6 流量标签(-L 选项)
  • 新功能:设置拥塞控制算法(-C 选项)
  • 新功能: 使用 SCTP 而非 TCP(–sctp 选项)
  • 新功能: 以 JSON 格式输出(-J 选项)。
  • 新功能: 磁盘读取测试(服务器:iperf3 -s / 客户端:iperf3 -c testhost -i1 -F 文件名)
  • 新功能: 磁盘写入测试(服务器:iperf3 -s -F 文件名/客户端:iperf3 -c testhost -i1)

三、 Iperf的使用

1.Iperf的工作模式

Iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起测试连接会话,因此要使用iperf至少需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。

2. 通用指令

在这里插入图片描述

3. 服务端特有选项

在这里插入图片描述

4. 客户端特有选项

在这里插入图片描述

5. -t -n参数联系

-t 参数说明如下:
在这里插入图片描述

-n 参数说明如下:
在这里插入图片描述
-n会重写-t参数,-n参数会使-t参数失效。
-n 30M 意思表明,传输完30M便停止,-t失效。
在这里插入图片描述

四、Iperf使用实例

1. 调整 TCP 连接

1. 1TCP 窗口大小调节

iPerf 的主要目标是帮助调整特定路径上的 TCP 连接。TCP 最基本的调整问题是 TCP 窗口大小,它控制着网络中任何一点的数据量。如果窗口大小太小,发送方有时就会处于空闲状态,从而导致性能低下。
窗口大小的理论值为:
                   ~~~~~~~~~~~~~~~~~~                   瓶颈带宽*往返时间
若瓶颈链路是 45 Mbit/sec 链路,用 ping 测量的往返时间是 42 ms。带宽延迟乘积为:
45 Mbit/sec * 42 ms
= (45e6) * (42e-3)
= 1890000 bits
= 230 KByte
这是计算最佳窗口大小的一个起点;将其设置得更高或更低可能会产生更好的结果。
请注意,许多操作系统和主机都有 TCP 窗口大小的上限。iPerf 会尝试检测这些限制,并在实际窗口大小与请求的窗口大小不相等时发出警告。
另一个测试方法是运行并行 TCP 流。如果总带宽大于单个数据流的带宽,就说明出了问题。要么是 TCP 窗口大小太小,要么是操作系统的 TCP 实现有问题,要么是网络本身有缺陷。

测试示例:

  • 启动服务端
    在这里插入图片描述
  • 启动客户端
  1. 单线程测试,TCP窗口大小1000字节。(非常小,所以性能不能达到网卡瓶颈1Gbit)
    在这里插入图片描述

  2. 单线程测试,TCP窗口大小16K。速度有所提升
    在这里插入图片描述

  3. 单线程测试,窗口调整为420K时,基本达到了1Gbit的极限。
    在这里插入图片描述

  4. 最后测试一下多线程,使用190k的窗口,同样可以把网卡极限跑满:
    在这里插入图片描述
    所以如果我们使用单线程传输,tcp窗口的大小很关键。

1. 2 最大传输单元 (MTU)调整

为了达到最佳效果,两台主机都应支持路径 MTU 发现。不支持路径 MTU 发现的主机通常使用 536 作为 MSS,这会浪费带宽和处理时间。使用 -m 选项可显示正在使用的 MSS,并查看是否与预期相符。以太网的 MSS 通常在 1460 字节左右。

2. 调整 UDP 连接

iPerf 创建了一个恒定比特率的 UDP 数据流。没有其他功能。
需要将数据报大小 (-l) 调整为您的应用程序所使用的大小。
服务器通过数据报中的 ID 号来检测 UDP 数据段是否丢失。通常,一个 UDP 数据段会变成多个 IP 数据包。丢失一个 IP 数据包就会丢失整个数据段。要测量数据包丢失而不是数据段丢失,可使用 -l 选项使数据段小到足以容纳进一个数据包。默认的 1470 字节大小适用于以太网。还能检测出乱序数据包。由于 TCP 不会向用户报告数据包丢失情况,UDP 测试有助于查看路径上的数据包丢失情况。

根据 RFC 1889 中 RTP 的规定,抖动计算由服务器持续计算。客户端在数据包中记录 64 位秒/微秒时间戳。服务器计算的相对传输时间为(服务器接收时间-客户端发送时间)。客户端和服务器的时钟无需同步;抖动计算中会减去任何差异。抖动是连续传输时间差的平滑平均值。

测试示例:

  • 服务端启动
    在这里插入图片描述
  • 启动客户端
    在这里插入图片描述
    请注意,在使用较大的 50 KB 数据报(每个数据报分成 23 个 1500 字节的数据包)时,数据报重组导致的抖动较高。这里看到的数据报丢包率较高,可能是由于流量的突发性,即 23 个背靠背的数据包,然后是长时间的停顿,而不是均匀分布的单个数据包。
    在这里插入图片描述

3. 测试TCP吞吐量

  • Server端开启iperf的服务器模式:
    在这里插入图片描述
  • Client端启动iperf的客户端模式
    在这里插入图片描述
  • Server端监听结果
    在这里插入图片描述
    ① Interval表示时间间隔。
    ② Transfer表示时间间隔里面转输的数据量。
    ③ Bandwidth是时间间隔里的传输速率 (千兆以太网 104Mb/s对的)。

4. 测试UDP吞吐量

带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

  • Server端开启iperf的服务器模式
    在这里插入图片描述
  • Client端启动iperf的客户端模式,连接服务端
    在这里插入图片描述
  • Server端监听结果
    在这里插入图片描述
    ① Jitter为抖动,在连续传输中的平滑平均值差。
    ② Lost为丢包数量。
    ③ Total Datagrams为包数量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为P系列“砍了”,三角美学系列全新登场

2021 年 10 月,Intel 正式带来了颠覆以往的第 12 代酷睿「混合架构」 CPU。 不知道是良心发现还是为了弥补 11 代酷睿过于拉胯表现,Intel 终于把狠活儿都用在了这代。 全新 Intel 7 工艺、全新架构、单核与多核性能大幅提升,让大家十分默契…

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强,制造印刷电路板(PCB)行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题: PCB生产过程对洁净度要求高,传统打印的纸张会有粉尘,纸屑&am…

怎么通过Javascript脚本实现远程控制一路开关

怎么通过Javascript脚本实现远程控制一路开关呢? 本文描述了使用Javascript脚本调用HTTP接口,实现控制一路开关。一路开关可控制一路照明、排风扇等电器。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称1智能WiFi…

腾讯云轻量应用服务器和CVM S5服务器有什么区别?

腾讯云轻量应用服务器和CVM云服务器S5有什么不同?性能哪个更好一些?CVM S5云服务器CPU采用2.5GHz主频的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,轻量不支持指定CPU,从功能、内网连通性、集群及公网带宽等方面对…

React 19 带来了 JSX 运行时的重要更新

在 React 的发展历程中,JSX 运行时一直扮演着重要的角色。在以前的的版本,JSX 运行时会克隆传入的 props 对象,这背后有着两大原因。 历史原因 React 保留了一些特殊的 prop 名称,如 key 和在 React 19 之前的 ref。这些 prop 并…

公钥密码学Public-Key Cryptography

公钥或非对称密码学的发展是整个密码学历史上最伟大的,也许是唯一真正的革命。The development of public-key, or asymmetric, cryptography is the greatest and perhaps the only true revolution in the entire history of cryptography. 公钥算法基于数学函数…

14.接口自动化测试-造数据

1.测试造数据 工作场景: 需要造一批测试数据 解决方案: (1)使用字符串拼接 135XXXXX (2)使用第三方库去做 faker 安装: pip install Faker 若安装不成功,可能是需要清下缓存&a…

使用Azure AI Search和LlamaIndex构建高级RAG应用

RAG 是一种将公司信息合并到基于大型语言模型 (LLM) 的应用程序中的常用方法。借助 RAG,AI 应用程序可以近乎实时地访问最新信息,团队可以保持对其数据的控制。 在 RAG 中,您可以评估和修改各个阶段以改进结果&#x…

ExcelVBA把当前工作表导出为PDF文档

我们先问问Kimi Excel导出为PDF的方法有多种,以下是一些常见的方法: 1 使用Excel软件的内置功能: 打开Excel文件,点击“文件”菜单。选择“另存为”,在“保存类型”中选择“PDF”。设置保存路径和文件名,点…

Node.js -- path模块

path.resolve(常用) // 导入fs const fs require(fs); // 写入文件 fs.writeFileSync(_dirname /index.html,love); console.log(_dirname /index.html);// D:\nodeJS\13-path\代码/index.html 我们之前使用的__dirname 路径 输出的结果前面是正斜杠/ ,后面部分是…

Jenkins CI/CD 持续集成专题二 Jenkins 相关问题汇总

一 问题一 pod [!] Unknown command: package 1.1 如果没有安装过cocoapods-packager,安装cocoapods-packager,sudo gem install cocoapods-packager 1.2 如果已经安装cocoapods-packager,还是出现上面的错误,有可能是pod的安…

文件摆渡:安全、高效的摆渡系统助力提升效率

很多组织和企业都会通过网络隔离的方式来保护内部的数据,网络隔离可以是物理隔离,也可以是逻辑隔离,如使用防火墙、VPN、DMZ等技术手段来实现,隔离之后还会去寻找文件摆渡方式,来保障日常的业务和经营需求。 进行网络隔…

Python 网络与并发编程(一)

文章目录 并发编程介绍串行、并行与并发的区别进程、线程、协程的区别进程线程协程 并发编程解决方案同步和异步介绍 并发编程介绍 串行、并行与并发的区别 有任务A、B、C,一个CPU去执行他们,有几种方式 1、一个cpu按顺序执行ABC,这就是串行…

apache和IIS区别?内网本地服务器项目怎么让外网访问?

Apache和IIS是比较常用的搭建服务器的中间件,它们之间还是有一些区别差异的,下面就详细说说 Apache和IIS有哪些区别,以及如何利用快解析实现内网主机应用让外网访问。 首先说说apache和IIS最基本的区别。Apache运行的操作系统通常为Unix或Lin…

Mac和VScode配置fortran

最近更换了mac电脑,其中需要重新配置各类软件平台和运行环境,最近把matlab、gmt、VScode、Endnote等软件全部进行了安装和配置。但是不得不说,mac系统对于经常编程的人来说还是非常友好的! 由于需要对地震位错的程序进行编译运行…

53、图论-课程表

思路: 其实就是图的拓扑排序,我们可以构建一个图形结构,比如[0,1]表示1->0,对于0来说入度为1。 遍历结束后,从入度为0的开始遍历。引文只有入度为0的节点没有先决条件。然后依次减少1。直到所有节点入度都为0.然后…

如何判断一个服务是否适合于公司项目使用

判断一个服务是否适合公司项目使用是一个涉及多方面因素的决策过程。这个过程通常包括对服务的全面评估,确保它能够满足项目的需求、与公司的技术栈兼容,并且从长远来看是经济效益和安全性的最佳选择。以下是一些主要的考虑因素和评估步骤: …

【Python-Spark(大规模数据)】

Python-Spark(大规模数据) ■ Spark■ PySparl编程模型■ 基础准备■ 数据输入■ RDD的map成员方法的使用■ RDD的flatMap成员方法的使用■ RDD的reduceByKey成员方法的使用■ 单词计数统计■ RDD的filter成员方法的使用■ RDD的distinct成员方法的使用■…

微信小程序:基于MySQL+Nodejs的汽车品牌管理系统

各位好,接上期,今天分享一个通过本地MySQLNodejs服务器实现CRUD功能的微信小程序,一起来看看吧~ 干货!微信小程序通过NodeJs连接MySQL数据库https://jslhyh32.blog.csdn.net/article/details/137890154?spm1001.2014.3001.5502 …

详解Qt中实现树状结构图

在Qt中,实现树状结构图通常采用QTreeWidget或QTreeView组件。这两个组件都允许我们创建具有层次结构的列表,但它们之间存在一些差异。QTreeWidget提供了更简单的API,适用于轻量级、快速开发的需求;而QTreeView则更为灵活和可定制&…