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

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在不同传输阶段能有效适应网络变化,提高传输的可靠性和效率。

相关文章:

QUIC的loss detection学习

PTO backoff backoff 补偿 /ˈbkɒf/PTO backoff 是QUIC(Quick UDP Internet Connections)协议中的一种机制,用于处理探测超时(Probe Timeout, PTO)重传策略 它逐步增加探测超时的等待时间,以避免网络拥塞…...

【QT】使用QOpenGLWidget后,窗口全屏之后右键菜单出不来的问题

问题 QMainWindow全屏之后,发现右键菜单出不来了,后来排查到问题是和窗口中使用了QOpenGLWidget控件有关系。 解决方案 在QMainWindow构造函数末尾,添加这句话(作用是给窗口周围增加1像素线,实现伪全屏)…...

MySQL 8.0授权语法变更及解决方案‌

MySQL 8.0授权语法变更及解决方案‌ 授权语法变更‌:‌MySQL 8.0更改了授权语法,‌无法直接在授权语句中使用IDENTIFIED BY来创建用户并设置密码。‌需要先创建用户,‌再单独授权。‌ 创建用户并授权‌:‌ 使用CREATE USER语句创…...

2024 VMpro 虚拟机中如何给Ubuntu Linux操作系统配置联网

现在这是一个联网的状态 可以在商店里面下载东西 也能ping成功 打开虚拟网络编辑器 放管理员权限 进行设置的更改 选择DNS设置 按提示修改即可 注意的是首选的DNS服务器必须是114.114.114.114 原因 这边刚刚去查了一下 114.114.114.114 是国内的IP地址 8.8.8.8 是国外的I…...

详解Diffusion扩散模型:理论、架构与实现

本文深入探讨了Diffusion扩散模型的概念、架构设计与算法实现,详细解析了模型的前向与逆向过程、编码器与解码器的设计、网络结构与训练过程,结合PyTorch代码示例,提供全面的技术指导。 关注TechLead,复旦AI博士,分享A…...

坐牢第三十八天(Qt)

1、使用Qt绘画事件处理画一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QPaintEvent>//画画处理事件 #include <QPainter>//画画 #include <QTime> //时间类 #include <QTimer>…...

(十五)、把自己的镜像推送到 DockerHub

文章目录 1、登录Docker Hub2、标记&#xff08;Tag&#xff09;镜像3、推送&#xff08;Push&#xff09;镜像4、查看镜像5、下载镜像6、设置镜像为公开或者私有 1、登录Docker Hub 需要科学上网 https://hub.docker.com/ 如果没有账户&#xff0c;需要先注册一个。登录命令如…...

【云岚到家-即刻体检】-day07-2-项目介绍及准备

【云岚到家-即刻体检】-day07-2-项目介绍及准备 1 项目介绍1&#xff09;项目简介2&#xff09;界面原型3&#xff09;实战目标 2 搭建实战环境1&#xff09;服务端2&#xff09;管理端前端工程3&#xff09;用户端前端工程4&#xff09;测试 3 熟悉项目代码1&#xff09;接口文…...

SpringCloud Alibaba之Nacos服务注册和配置中心

&#xff08;学习笔记&#xff09;nacos-server版本&#xff1a;2.2.3 总体介绍&#xff1a; 1、Nacos介绍 官网&#xff1a;Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字…...

面试官:讲一讲Spring MVC源码解析

好看的皮囊千篇一律、有趣的灵魂万里挑一 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】获取福利&#xff0c;回复【项目】获取项目源码&#xff0c;回复【简历模板】获取简历模板&#xff0c;回复【学习路线图】获取学习路线图。…...

815. 公交路线(24.9.17)

题目 给你一个数组 routes&#xff0c;表示一系列公交线路。其中每个 routes[i] 表示一条公交线路&#xff0c;第 i 辆公交车将会在上面循环行驶。例如&#xff0c;路线 routes[0][1,5,7] 表示第 0 辆公交车会一直按序列 1->5->7->1->5->7->1->... 这样的…...

Rust: Warp RESTful API 如何得到客户端IP?

在使用 Rust 的 Warp 框架来创建 RESTful API 时&#xff0c;如果你想要获取客户端的 IP 地址&#xff0c;通常需要在处理 HTTP 请求的函数中查看请求的头部或者底层连接的信息。不过&#xff0c;Warp 本身并不直接提供一个简便的 API 来直接获取客户端的 IP 地址&#xff0c;因…...

添加选择登录ssh终端

吼吼,这次成了一个小的瑞士军刀了 … … 一次性功能齐全,虽然只支持win10及以上...

【基于 Delphi 的人才管理系统】

基于 Delphi 的人才管理系统可以帮助企业或组织管理员工的信息&#xff0c;包括招聘、培训、绩效评估等方面。这种系统通常包括员工档案管理、职位发布、应聘者跟踪、培训计划安排等功能。下面是一个简化的人才管理系统设计方案及其代码示例。 系统设计概览 员工档案管理&…...

GetMaterialApp组件的用法

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容&#xff0c;本章回中将介绍GetMaterialApp组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…...

ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码

1、停止mysql服务 $ service mysql stop 2、修改my.cnf文件 # 修改my.cnf文件&#xff0c;在文件新增 skip-grant-tables&#xff0c;在启动mysql时不启动grant-tables&#xff0c;授权表 $ sudo vim /etc/mysql/my.cnf [mysqld] skip-grant-tables 3、启动mysql服务 servic…...

Vue3项目开发——新闻发布管理系统(七)

文章目录 九、新闻分类管理模块设计开发1、新闻分类主页面设计2、封装页面组件3、改造页面4、新闻分类表格渲染4.1封装API,获取新闻分类数据4.2 表格动态渲染4.3表格增加 loading 效果5、实现新闻分类添加和编辑功能5.1 点击显示弹层5.2封装弹层组件 CateEdit5.3 准备弹层表单…...

ICMP

目录 1. 帧格式2. ICMPv4消息类型(Type = 0,Code = 0)回送应答 /(Type = 8,Code = 0)回送请求(Type = 3)目标不可达(Type = 5,Code = 1)重定向(Type = 11)ICMP超时(Type = 12)参数3. ICMPv6消息类型回见TCP/IP 对ICMP协议作介绍 ICMP(Internet Control Messag…...

Unity-Transform类-旋转

角度度相关 相对世界坐标角度 print(this.transform.eulerAngles); 相对父对象角度 print(this.transform.localEulerAngles); 注意&#xff1a;设置角度和设置位置一样 不能单独设置xyz 要一起设置 如果我们希望改变的 角度 是面板上显示的内容 那是改…...

如何使用 Vue 3 的 Composition API

Vue 3 引入了 Composition API&#xff0c;它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比&#xff0c;Composition API 允许你将组件的逻辑按功能组织到函数中&#xff0c;而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Compositio…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...