当前位置: 首页 > news >正文

iPerf3 -M参数详解,场景分析

本文目录

  • iPerf3 -M参数说明
  • 几个典型测试场景中应该如何设定合适的-M参数值
    • 理想局域网模型(无丢包,无抖动)
    • 高丢包,无抖动模型
    • 高丢包,高抖动模型(网络质量比较差,IP转发路径变化频繁)
  • 总结

从文章iperf参数(iperf3命令)详解中我们已经知道-M是用于设置TCP的MSS最大分片长度。本文假设读者应该已经理解什么是IP分片,为什么会产生IP分片,为什么要避免IP分片以及如何避免IP分片IP分片和TCP分段解析–之IP分片。那么设置适当的-M参数,有助于我们在使用iperf测试过程中得到最好的吞吐量测试结果,如果-M设置不当,就有可能引发IP分片,从而进一步引发大量重传,导致拥塞而导致吞吐量测试结果不理想。

iPerf3 -M参数说明

对-M参数的原始解释为:Attempt to set the TCP maximum segment size (MSS). The MSS is usually the MTU - 40 bytes for the TCP/IP header. For ethernet, the MSS is 1460 bytes (1500 byte MTU)。我们从参数解释中可以得知,如果设置了-M参数,那么iPerf3会尝试去设置TCP的MSS最大分片长度。MSS通常是MTU减去40字节的TCP/IP首部。对以达网来说MSS是1460(MTU是1500字节)。
通过IP分片和TCP分段解析–之IP分片这篇文章,我们已经知道了,IP分片产生的原因,了解IP分片带来的坏处,以及该如何设置合适的MSS来避免IP分片。
那么我们,只要根据测试链路中的路径MTP(PMTU),通过-M,让MSS<=PMTU-40,那么在整个网络中就不会发生分片,从而避免了IP分片给给测试结果带来的坏影响。

几个典型测试场景中应该如何设定合适的-M参数值

我们先来理解一下,通常我们用以下四个指标去衡量一个网络的质量(假设网络的转发路径是固定不变的):

  • 带宽
  • 延时
  • 丢包率
  • 抖动
    这四个指标中,带宽和延时与IP分片,TCP分段没有什么相关性,所以与-M参数的选择无关。我们只需要从丢包率与抖动二个指标去考虑-M参数应该如何设置就可以了。

理想局域网模型(无丢包,无抖动)

-M参数修改的是在无丢包,无抖动的理想模型中,IP报文是不会丢失的,IP分片不会带来网络传输效率的降低,那么是不需要设置-M参数的。

高丢包,无抖动模型

这种网络模型或者说高丢包,低抖动的网络在现实网络中是很罕见的,但可以在测试环境中我们有时会构建这样的测试模型(比如5G基站的空口丢包测试场景)。在这样的模型中,意味着IP报文会丢失,但IP报文会按发送顺序到达接收端,不会或者极少产生乱序。在这种模型中,IP某个分片的丢失,会引发属于同一个TCP报文的多个IP分片全部需要重传。我们假设TCP每次发送的报文的大小都是一样大的,每次都会在IP层刚好被分成n个IP分片。如果我们用-M把要发送的报文大小限制成<=原来的1/n,那么就可以完全避免IP分片的产生。

  • 在要发送的TCP报文的长度大于MTU的情况下
    考虑以下二个情况
    在分片的场景下:
    需要重传n个IP分片。
    在不分片的场景下:
    需要重传1个IP分片

这里重传所占用的网络带宽减少到原来的1/n,那么网络利用率就得到的有效的提升。此时我们需要设置-M参数,并使得MSS<=PMTU-40,来避免分片的发生。

  • 在要发送的TCP报文的长度小于等于MTU的情况下
    本来就不会发生分片,那么不需要设置-M参数

高丢包,高抖动模型(网络质量比较差,IP转发路径变化频繁)

这种网络模型是比较常见的,比较烂的经过多个路由路的广域网就属于这种网络。高丢包率如何影响-M的设置,我们已经在上一章中介绍了,这里主要考虑高抖动,意味着先发的IP报文可能会后到达接收端,在这种情况下其实也分二个情况:

第一个是抖动没有那么厉害,属于同一个TCP的后发的IP分片先到达,等待时间(接收方要等待属于同一个TCP的所有IP分片到达后才能完成TCP报文的重组)还没有超出TCP的超时重发定时器,没有引发TCP层重传时,延时到达的IP分片不产生坏的影响,那么不需要设置-M参数
另外一个是抖动很厉害,属于同一个TCP的后发的IP分片先到达,等待时间(接收方要等待属于同一个TCP的所有IP分片到达后才能完成TCP报文的重组)已经超出TCP的超时重发定时器,引发TCP层重传时,那么这个情况就等同于引发了所有IP分片的重传,我们需要设置-M参数,并使得MSS<=PMTU-40,来避免分片的发生。

总结

网络抖动比较严重,或者丢包会导致TCP重传发生的网络条件下,且发送的TCP测试报文长度大于MTU时,需要通过设置-M参数来避免IP分片发生。

相关文章:

iPerf3 -M参数详解,场景分析

本文目录iPerf3 -M参数说明几个典型测试场景中应该如何设定合适的-M参数值理想局域网模型&#xff08;无丢包&#xff0c;无抖动&#xff09;高丢包&#xff0c;无抖动模型高丢包&#xff0c;高抖动模型&#xff08;网络质量比较差&#xff0c;IP转发路径变化频繁&#xff09;总…...

java的基本语法以及注意事项

Java 基础语法一个 Java 程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它…...

matlab搭建IAE,ISE,ITAE性能指标

目录前言准备IAEISEITAE前言 最近在使用matlab搭建控制系统性能评价指标模型&#xff0c;记录一下 准备 MATLAB R2020 IAE IAE函数表达式如下所示&#xff1a; IAE函数模型如下所示&#xff1a; ISE ISE函数表达式如下所示&#xff1a; ISE函数模型如下所示&#xff…...

docker安装mysql

在安装Mysql之前&#xff0c;我们可以先查看一下我们的镜像&#xff0c;输入命令&#xff1a; docker images 能发现&#xff0c;镜像里面只有一个Nginx&#xff0c;并没有Mysql 然后我们可以像上一篇安装Nginx一样&#xff0c;安装Mysql镜像。 输入以下命令&#xff0c;安装…...

Leetcode 回溯详解

回溯法 回溯法有“通用解题法”之称&#xff0c;用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中&#xff0c;按照深度优先搜索(DFS)&#xff09;的策略&#xff0c;从根结点出发深度探索解空间树。当探索…...

AI_Papers:第一期

2023.02.06—2023.02.12 文摘词云 Top Papers Subjects: cs.CL 1.Multimodal Chain-of-Thought Reasoning in Language Models 标题&#xff1a;语言模型中的多模式思维链推理 作者&#xff1a;Zhuosheng Zhang, Aston Zhang, Mu Li, Hai Zhao, George Karypis, Alex Sm…...

C/C++内存管理

C/C内存管理C/C内存分布C语言中内存管理的方式&#xff1a;malloc/calloc/realloc/freeC内存管理方式内置类型自定义类型operator new 与operator deletenew和delete的实现原理内置类型自定义类型定位new表达式(placement-new)new/delete与malloc/free的区别C/C内存分布 我们先…...

【大数据hive】hive 函数使用详解

一、前言 在任何一种编程语言中&#xff0c;函数可以说是必不可少的&#xff0c;像mysql、oracle中&#xff0c;提供了很多内置函数&#xff0c;或者通过自定义函数的方式进行定制化使用&#xff0c;而hive作为一门数据分析软件&#xff0c;随着版本的不断更新迭代&#xff0c…...

彻底搞懂分布式系统服务注册与发现原理

目录 引入服务注册与发现组件的原因 单体架构 应用与数据分离...

安卓Camera2用ImageReader获取NV21源码分析

以前如何得到Camera预览流回调 可以通过如下方法&#xff0c;得到一路预览回调流 Camera#setPreviewCallbackWithBuffer(Camera.PreviewCallback)&#xff0c;可以通过如下方法&#xff0c;设置回调数据的格式&#xff0c;比如 ImageFormat.NV21 Camera.Parameters#setPreview…...

24. 两两交换链表中的节点

文章目录题目描述迭代法递归法参考文献题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&a…...

linux006之帮助命令

linux帮助命令简介&#xff1a; linux的命令是非常多的&#xff0c;光靠人是记不住的&#xff0c;在工作中一般都会去网上查&#xff0c;这是有外网的情况下&#xff0c;如果项目中不允许访问外网&#xff0c;那么linux的帮助命令就可以派上用场了&#xff0c; linux帮助命令是…...

【C++初阶】十三、模板进阶(总)|非类型模板参数|模板的特化|模板分离编译|模板总结(优缺点)

目录 一、非类型模板参数 二、模板的特化 2.1 模板特化概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 三、模板分离编译 四、模板总结&#xff08;优缺点&#xff09; 前言&#xff1a;之前模板初阶并没有把 C模板讲完&#xff0c;因为当时没有接触…...

Linux之文本搜索命令

文本搜索命令学习目标能够知道文本搜索使用的命令1. grep命令的使用命令说明grep文本搜索grep命令效果图:2. grep命令选项的使用命令选项说明-i忽略大小写-n显示匹配行号-v显示不包含匹配文本的所有行-i命令选项效果图:-n命令选项效果图:-v命令选项效果图:3. grep命令结合正则表…...

微信小程序Springboot 校园拼车自助服务系统java

系统管理员&#xff1a; 管理员账户管理&#xff1a;在线对管理员的账户信息进行管理&#xff0c;包括对管理员信息的增加修改以及密码的修改等。 站内新闻管理&#xff1a;在后台对站内新闻信息进行发布&#xff0c;并能够对站内新闻信息进行删除修改等。 论坛版块管理&#x…...

【Unity3D 常用插件】Haste插件

一&#xff0c;Haste介绍 Haste插件是一款针对 Unity 3D 的 Everthing软件&#xff0c;可以实现基于名称快速定位对象的功能。Unity 3D 编辑器也自带了搜索功能&#xff0c;但是在 project视图 和 Hierarchy视图 中的对象需要分别查找&#xff0c;不支持模糊匹配。Haste插件就…...

【c++面试问答】全局变量和局部变量的区别

问题 C中的全局变量和局部变量有什么区别&#xff1f; 注&#xff1a;内容全部参考自文末的参考资料 全局变量和局部变量的区别 可以从以下4个角度来区分&#xff1a; 区别全局变量局部变量作用域全局作用域局部作用域内存分配全局变量在静态数据区静态局部变量在静态数据区…...

Java List集合

6 List集合 List系列集合&#xff1a;添加的元素是有序&#xff0c;可重复&#xff0c;有索引 ArrayList: 添加的元素是有序&#xff0c;可重复&#xff0c;有索引LinkedList: 添加的元素是有序&#xff0c;可重复&#xff0c;有索引Vector &#xff1a;是线程安全的&#xff…...

linux服务器挂载硬盘/磁盘

1. 查看机器所挂硬盘个数及分区情况&#xff1a;fdisk -l可以看出来目前/dev/vda 目前有300G可用.内部有两个分区&#xff08;/dev/vda1,/dev/vda2&#xff09;。2. 格式化磁盘格式化磁盘命令为【mkfs.磁盘类型格式 目录路径组成】查看磁盘文件格式&#xff1a;df -T格式化磁盘…...

Java 抽象类

文章目录1、抽象方法和抽象类2、抽象类的作用当编写一个类时&#xff0c;常常会为该类定义一些方法&#xff0c;用于描述该类的行为方式&#xff0c;这些方法都有具体的方法体。但在某些情况下&#xff0c;某个基类只是知道其子类应该包含那些方法&#xff0c;但不知道子类是如…...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...

数字图像处理核心算法手撕实现 (一)

1. 数字图像处理基础概念 数字图像处理就像给照片做美容手术&#xff0c;只不过操作对象是像素矩阵。我第一次接触这个概念是在大学实验室&#xff0c;当时对着一个512x512的灰度图矩阵发呆了半小时&#xff0c;才明白那些0-255的数字代表着什么。 空间分辨率相当于照片的&qu…...

付费内容访问难题如何破解?开源工具的创新解决方案

付费内容访问难题如何破解&#xff1f;开源工具的创新解决方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容付费阅读日益普及的今天&#xff0c;如何合法合规地获取所需…...

告别云端依赖:AnythingLLM本地Whisper实现完全离线语音转文字

告别云端依赖&#xff1a;AnythingLLM本地Whisper实现完全离线语音转文字 【免费下载链接】anything-llm The all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration. 项目地址: https://gitcode.com/GitHub_Trendi…...

别再只看波形了!用Maxwell+Matlab深度分析电机空载气隙磁密的谐波极对数分布

电机电磁设计进阶&#xff1a;从Maxwell FFT到Matlab谐波极对数分析的工程实践 在电机设计领域&#xff0c;空载气隙磁密的谐波分析一直是评估电磁性能的核心手段。传统方法往往止步于波形观察和简单频谱分析&#xff0c;却忽略了谐波极对数分布这一关键维度——它直接关联着电…...

深入解析Nordic NRF52832的NFC天线与GPIO复用设计

1. NFC天线硬件设计基础 NRF52832芯片的NFC功能通过P0.09和P0.10两个专用引脚实现&#xff0c;这两个引脚在设计时需要特别注意硬件连接规范。实际项目中&#xff0c;我遇到过不少开发者直接将这两个引脚当作普通GPIO使用导致通信异常的情况——因为默认状态下它们被硬件映射为…...

如何高效使用小米手表表盘制作工具:Mi-Create完整操作指南

如何高效使用小米手表表盘制作工具&#xff1a;Mi-Create完整操作指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 想为你的小米手表或手环设计个性化表盘吗…...

Android tinyalsa深度解析之pcm_params_get_period_size_max调用流程与实战(一百七十二)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐&#xff1a;《Android系统多媒体进阶实战》&#x1f680; Android Audio工程师专栏地址&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; Android多媒体专栏地址&a…...

别再手动改配置了!用Docker Compose一键部署Pikachu靶场,5分钟搞定测试环境

5分钟极速搭建Pikachu靶场&#xff1a;Docker Compose自动化实战指南 每次准备网络安全练习环境时&#xff0c;最头疼的莫过于反复安装配置各种服务——PHP版本不兼容、MySQL连接失败、Web服务器配置错误...这些琐碎问题消耗了本应用于渗透测试学习的宝贵时间。今天要分享的这套…...

智能农业大棚设计详解

基于单片机的智能农业大棚设计温湿度二氧化碳光照&#xff08;详细设计说明 10119-基于单片机的智能农业大棚设计温湿度二氧化碳光照&#xff08;详细设计说明书proteus源代码原理图元件清单&#xff09; 功能需求&#xff1a; 智慧农业大棚的底层理念是实现智能化控制与生产&a…...