QUIC的loss detection学习

PTO backoff

backoff 补偿

/ˈbækɒf/

PTO backoff 是QUIC(Quick UDP Internet Connections)协议中的一种机制,用于处理探测超时(Probe Timeout, PTO)重传策略
它逐步增加探测超时的等待时间,以避免网络拥塞并减少不必要的重传

什么是PTO Backoff

PTO backoff 是一种延时策略,用于在多个 PTO 事件发生后逐渐增加超时等待时间,以减少网络负载和拥塞风险
即,每次当数据包重传仍然未得到 ACK 确认时,QUIC 协议会延长下一次 PTO 计算的等待时间

PTO Backoff的工作原理

初始 PTO 计算:
初始 PTO 通常基于平滑后的 RTT(Round-Trip Time,往返时间)
在这里插入图片描述
第一次 PTO 触发:
当超过初始 PTO 时间仍未收到数据包的 ACK 确认,触发第一次重传

应用 PTO Backoff:
每次 PTO 后,若仍未收到 ACK 确认,下一次 PTO 值会增加。增加的方式通常是指数增长。

例如,PTO backoff 因子可能是 2,那么第二次 PTO 等待时间将是初始 PTO 的两倍,第三次为初始 PTO 的四倍,依此类推。
假设 backoff_factor = 2, 且初始 PTO 为 100ms

那么:
第一次PTO:100ms
第二次PTO:100ms × 2 = 200ms
第三次PTO:200ms × 2 = 400ms

减少网络拥塞:

通过逐步增加超时时间,PTO backoff 避免了在拥塞的网络中过于频繁的重传请求,从而减轻网络负载。

PTO Backoff的优点

防止网络拥塞:
逐步增加超时等待时间,减少过频的重传,防止因重传过多而加剧网络拥塞

提高重传效率:
通过合理的延迟策略,重传可以在网络状况有所恢复时进行,提高重传成功率

动态适应网络:
根据实际的网络反馈,动态调整PTO等待时间,有助于在不同网络状况下保持良好的传输性能

示例

假设初始 PTO 为 100ms,backoff 因子为 2

以下是一次重传过程的模拟:
发送了包X,并启动初始PTO 100ms
经过 100ms 仍未收到包 X 的 ACK,触发第一重传
设置下一次 PTO 为 200ms
经过 200ms 仍未收到 ACK,触发第二次重传
设置下一次 PTO 为 400ms
经过 400ms 仍未收到 ACK,触发第三次重传
设置下一次 PTO 为 800ms
依此类推,直到网络恢复或所有重传尝试结束

总结

通过动态增加探测超时的等待时间,减少了在网络状况不佳时过于频繁的重传请求,防止网络进一步拥塞
通过合理的延迟策略,PTO backoff 提升了重传效率,并动态适应了不同的网络环境,从而确保数据传输的稳定性和可靠性

PTO 是跨多个编号空间的吗?

探测超时(Probe Timeout, PTO)机制的设计和应用确实是跨越多个编号空间的。

编号空间

QUIC引入编号空间(Packet Number Spaces)的概念,以支持不同类型的包和它们各自的状态管理。

初始编号空间(Initial Packet Number Space):用于初始连接握手的包
0-RTT编号空间(0-RTT Packet Number Space):用于在连接握手完成前发送的数据包
握手编号空间(Handshake Packet Number Space):用于连接握手完成前的后续包
1-RTT编号空间(1-RTT Packet Number Space):用于连接握手完成后的正常数据传输

PTO跨编号空间的工作原理

在计算PTO时,QUIC需要跨多个编号空间来确定最佳的探测超时值。

具体步骤如下:
初始化和计算独立PTO:
对每个编号空间独立计算初始PTO。每个编号空间有自己的RTT估计和相关的变量。

选择最小PTO:
最终的PTO值是所有编号空间中最小的那个。这样可以确保最早探测到潜在丢包并进行重传。
例如,如果在初始编号空间的PTO是300ms,握手编号空间的PTO是200ms,那么,最终使用的PTO值是200ms。

跨编号空间的探测包:
当PTO触发时,可能需要在不同的编号空间内发送探测包。探测包可以是用于确认连接状态的控制信息,也可以是需要重传的数据包。

动态调整PTO:
根据接收到的ACK确认情况和网络状况,动态调整各个编号空间的PTO值。这有助于在不断变化的网络条件下维持传输稳定性和有效性。

示例

假设存在三个编号空间:
初始编号空间(Initial)、握手编号空间(Handshake)、1-RTT编号空间(1-RTT)

每个编号空间的初始PTO计算如下:
在这里插入图片描述
最终,跨编号空间的PTO值为
在这里插入图片描述

触发探测超时的操作:
在 200ms 后,如果握手编号空间尚未收到 ACK 确认,就会在此编号空间内发送探测包(如握手信息的重传)
如果在接下来的探测包发送后,仍未确认其它编号空间的数据包,可以逐步触发这些编号空间的重传

优点

确保可靠性:通过跨越多个编号空间的PTO机制,可以更早地探测到连接中的任何问题(如数据包丢失),并及时进行重传。
降低延迟:PTO计算采用最小值策略,使得在最短时间内就能发现问题,并采取修复措施。
动态调整:根据实际网络状况,动态调整各个编号空间的PTO值,有助于优化网络性能。

总结

探测超时(PTO)在QUIC协议中确实是跨多个编号空间进行管理和计算的。
通过在多个编号空间内计算独立的PTO值并选择最小的一个进行实际操作,QUIC能够更加灵敏和高效地处理潜在的丢包和延迟问题。
这有助于提高数据传输的可靠性和效率,尤其是在不同类型数据包和不同网络条件下。

PTO是跨编号空间的,为啥每个编号空间还要单独计算PTO

不同的编号空间在处理和传输不同类型的数据包时,往返时延(RTT)和丢包情况可能各有不同。

QUIC协议中的每个编号空间(如Initial、Handshake、1-RTT等)都有其独特的用途和重要性:
Initial编号空间:用于初始连接握手
Handshake编号空间:用于交换握手数据,完成密钥协商
1-RTT编号空间:用于传输正式数据(连接握手完成后的常规数据传输)
每个编号空间中的数据包类型、大小、传输频率和期望的RTT可能都有所不同,因此需要独立管理和监测其状况。

不同编号空间的数据包在网络传输中的RTT可能不同,比如:
握手包(Handshake Packets)通常需要经过更多的处理步骤,因此其RTT可能会略高
初始包(Initial Packets)可能较少受网络拥塞的影响,因为它们通常是在连接初始化时发送的
由于这种差异,独立计算各编号空间的PTO值能使QUIC更精细地反映实时网络状况,并基于精确的信息做出决策。

丢包检测和处理的精确性
单独计算每个编号空间的PTO可以使丢包检测和处理更加精确:
如果一个特定编号空间的PTO较短,说明这个编号空间中的数据更容易丢包,需要更迅速的重传。
独立计算的PTO值帮助快速发现网络瓶颈或传输异常,对应采取措施以减少整体传输延迟。

灵活的重传策略
独立计算PTO还支持更灵活的重传策略:
在某一个编号空间中探测到丢包,可以对该编号空间进行更快的重传,而不影响其他编号空间的数据传输。
这个独立性允许QUIC在网络状况异常时,能够专注于最急需修复的问题,不浪费资源在相对稳定的编号空间。

应用

假设存在三个编号空间(Initial、Handshake、1-RTT),每个编号空间的都有各自的PTO
然后,跨编号空间的PTO选择最小值

当触发PTO时
如果Initial编号空间中的包超时未被确认,需要重传Initial编号空间的包,同时调增PTO值
其他编号空间如没有超时,不需要立即重传,保持当前PTO,直到实际触发

总结

尽管QUIC协议对PTO进行跨编号空间管理,但为了确保每个编号空间的独立性和灵敏度,每个编号空间内仍需单独计算PTO值。
这种策略提供了更精细和精准的丢包检测和重传管理,使得QUIC在不同传输阶段能有效适应网络变化,提高传输的可靠性和效率。

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

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

相关文章

Web开发:使用C#创建、安装、调试和卸载服务

目录 一、创建服务 1.创建项目(.NET Framework) 2.重命名 3.编写逻辑代码 二、安装服务 1.方案一:利用VS2022安装文件的配置 选择添加安装程序 安装文件的介绍及配置 ​编辑​ 重新编译 工具安装 2.方案二:编写bat脚本安…

【嘉立创EDA】画PCB板中为什么要两面铺铜为GND,不能一面GND一面VCC吗?

在新手画板子铺铜时,经常会铺一面GND一面VCC。但一般情况下我们不会这样铺铜。下面将详细分析为什么要两面铺铜为GND,而不是一面GND一面VCC的原因: 提高散热能力 金属导热性:金属具有良好的导热性,铺铜可以有效分散PCB…

Oracle 19c异常恢复—ORA-01209/ORA-65088---惜分飞

由于raid卡bug故障,导致文件系统异常,从而使得数据库无法正常启动,客户找到我之前已经让多人分析,均未恢复成功,查看alert日志,发现他们恢复的时候尝试resetlogs库,然后报ORA-600 kcbzib_kcrsds_1错误 2024-09-15T17:07:32.55321508:00 alter database open resetlogs 2024-09-…

Debian11之DolphinScheduler使用

登录 默认用户名和密码 admin/dolphinscheduler123 http://192.168.111.180:12345/dolphinscheduler/ui基础配置 1、创建Worker【admin用户下】 创建项目的时候会指定Worker,这个配置决定了项目中的任务在哪个服务器执行 2、创建环境【admin用户下】 - 如果涉…

Linux搭建邮箱服务器(简易版)

本章是上一文档的简易版本搭建方式更为快速简洁(只需要两条命令即可搭建),如果想了解更详细一些可以看我上一文档 Linux接发邮件mailx_linux mailx o365-CSDN博客文章浏览阅读857次,点赞25次,收藏19次。本文详细描述了…

spring security OAuth2 搭建资源服务器以及授权服务器/jdbc/jwt两种方案

一、认证服务器基于jdbc方式 如果不懂请移步上一篇文章:Spring security OAuth2 授权服务器搭建-CSDN博客 在上一篇文章中,TokenStore的默认实现为 InHenoryTokenStore 即内存存储,对于 CLient 信息,userDetaitsServce 接负责从存…

mqtt整体了解

整个系统的分布及功能 参考太极创客视频 整体分为三部分: 发布:实时发送到云平台;实现主体是传感器或被控对象 订阅:得到能够访问发布信息;主体是有查看和控制权限的对象 云平台:可以理解为有控制订阅者权…

Python 爬虫入门 - Request 静态页面数据获取

在现代 Web 开发中,HTTP 请求(Request)是与服务器进行通信的核心操作。无论是在前端还是后端开发中,数据的获取、传递以及处理都离不开请求的应用。特别是在静态页面的数据获取中,使用请求可以将页面变得更加动态和互动,从而大大提升用户体验,使得页面内容更加丰富和灵活…

MySQL_SQLYog简介、下载及安装(超详细)

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

行人动作行为识别系统源码分享

行人动作行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

Halo 开发者指南——项目运行、构建

准备工作 环境要求 OpenJDK 17 LTSNode.js 20 LTSpnpm 9IntelliJ IDEAGitDocker(可选) 名词解释 工作目录 指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/ha…

网络高级项目( 基于webserver的工业数据采集和控制项目)

目录 一、项目要求: 二、演示效果: 设备端: Modbus用户控制端: 服务器端: 网页端: 三、 项目代码: Modbus用户控制端代码: 服务器端代码: 网页端代码&#xff1…

VirtualBox Install MacOS

环境搭建 git clone https://github.com/myspaghetti/macos-virtualbox 脚本配置 修改macos-guest-virtualbox.sh部分内容为 vm_name"macOS" # name of the VirtualBox virtual machine macOS_release_name"Catalina" # install &quo…

股指期货的详细玩法功能与应用解析

股指期货作为一种重要的金融衍生工具,为投资者提供了多样化的投资和风险管理手段。本文将详细探讨股指期货的三大主要功能:风险规避、价格发现和资产配置。 第一,风险规避功能 1.套期保值:股指期货的风险规避功能主要通过套期保值…

外观模式详解:如何为复杂系统构建简洁的接口

🎯 设计模式专栏,持续更新中 欢迎订阅:JAVA实现设计模式 🛠️ 希望小伙伴们一键三连,有问题私信都会回复,或者在评论区直接发言 外观模式 外观模式(Facade Pattern)为子系统中的一组…

智能 Uber 发票 PDF 合并工具

在现代商务出行中,尤其是在跨国出差中,处理和整合大量 Uber 发票已成为一项不小的挑战。手动整理和合并这些发票不仅耗时,还容易出错。作为开发者,为什么不开发一个自动化工具,将这些任务交给代码来完成呢?…

成型的程序

加一个提示信息 加上python 常用的包 整个程序打包完 250M 安装 960MB matplot numpy pandas scapy pysearial 常用的包 (pyvisa)… … 啥都有 Python 解释器组件构建 要比 lua 容易的多 (C/Rust 的组件库)

钢材表面缺陷数据集以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面

钢材表面缺陷数据集 以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面。 钢材表面缺陷检测数据集营销介绍 项目背景: 钢材作为工业生产的重要原材料之一,其表面质量直接影响到成品的性…

MySQL之安装与基础知识

目录 一:在centos7上安装MySQL数据库 1.卸载默认存在的环境 2.配置mysql的yum源 3. 安装MySQL 4.登录mysql 5.设置MySQL的配置文件 二:MySQL基础知识 1.什么是数据库 2.主流数据库 3.服务器,数据库,表关系及使用案例 4…

预训练发展

预训练发展 1.ELMo2.GPT3.Bert3.1Ernie-baidu3.2Ernie- Tsinghua 4.GPT25.UNILM6.Transformer-XL & XLNet6.1方案一6.2方案三 7.Roberta8.SpanBert8.1SBO简介: 9.ALBERT9.1方案一9.2方案二9.3方案三 10.T511.GPT312.从"续写"到"回答"12.1SF…