从 Reno TCP 到 Scalable TCP,HighSpeed TCP

news2024/10/10 20:34:15

前文 Scalable TCP 如何优化长肥管道 介绍了 Scalable TCP,但联系另一个类似的算法 HighSpeed TCP(简称 HSTCP),就会看到一个类似从 Reno TCP 经 BIC 到 CUBIC 的路线,但采用了不同的策略。

Reno TCP 经 BIC 到 CUBIC 路线的核心在于 “在长肥管道中快速逼近管道容量”,采用二分法或三次曲线除了属于不同实现方式,二者也有承接。

而从 Reno TCP 分化而来的 Scalable TCP,HSTCP 这条路线的核心在于 “在长肥管道容忍更高的丢包率”,前文已经说过 Scalable TCP,本文简述 HSTCP,来自 Sally Floyd,参见 HighSpeed TCP (HSTCP)。

我在 2021 年已经写过一篇关于 HSTCP 的详细推导 漫谈 HSTCP,本文为其缩略版,侧重核心的推导。

常规 Reno TCP 的问题在于对大容量管道没有扩展性,一方面 cwnd 打开速度太慢,另一方面对丢包容忍度太低,二者相互加深纠缠:在高速网络缓慢的 cwnd 打开过程中,只要遭遇丢包,窗口就会减半,而这个过程越久,丢包概率就越大。这个丢包容忍度甚至已经低于世界上最好的介质误码率。

该问题产生的根源在于,设计单纯的端到端拥塞控制算法时只考虑了拥塞丢包(buffer 溢出)的因素,并未考虑底层介质误码造成的随机丢包。这个因素一直影响着几乎所有拥塞控制算法的设计,直到今日。

HSTCP 对 Reno TCP 的优化全在 response curve 上进行。首先给出标准 Reno 的 response function:

W = a ⋅ ( 2 − b ) 2 b ⋅ p W=\sqrt{\dfrac{a\cdot(2-b)}{2b\cdot p}} W=2bpa(2b) 【这个式子我就不推导了,详见之前的文章】

将 a = 1,b = 0.5 带入,得到现行 Reno TCP 的 response function:

W = 1.22 ⋅ 1 p W=1.22\cdot\sqrt{\dfrac{1}{p}} W=1.22p1

双对数坐标系里绘图:
在这里插入图片描述

如红色标注所示,支撑 100 的 cwnd 就需要 10^{-4} 丢包率,可见条件之苛刻。需要让这条线陡峭起来。

不能指望调整 a,b 达到目标,因为 p 的指数不变,线条只能平行移动,而不能改变斜率。前文所述 Scalable TCP 采用改变 per-ack 行为,将与 RTT 相关的 “Per-RTT- Additive Increase” 变换为 RTT 无关的 “Per-ACK- Additive Increase”,做到了 “使斜率变为 -1,直线变陡”,得到了新的 response function:

W = a b ⋅ p W=\dfrac{a}{b\cdot p } W=bpa

HSTCP 则采用了另一种方法,直接从 response curve 上入手,求直线方程:
在这里插入图片描述

很容易求出直线的斜率,即 response function 中 p 的指数:

S = ln ⁡ w 1 − ln ⁡ w 0 ln ⁡ p 1 − ln ⁡ p 0 S=\dfrac{\ln w_1-\ln w_0}{\ln p_1 -\ln p_0} S=lnp1lnp0lnw1lnw0

按照 paper 建议将 p0(0.0015, 31) 和 p1(10^{-7}, 83000) 代入,可求得 S = -0.82,再代入一点坐标,得 HSTCP 的 response function:

W = 0.15 p 0.82 W=\dfrac{0.15}{p^{0.82}} W=p0.820.15

这就是 HSTCP 算法完整描述。但考虑到实际部署实施,还要考虑如何实现算法。

本质上,HSTCP 仍然是一个 AIMD 算法,但显然无法套入 W = a ⋅ ( 2 − b ) 2 b ⋅ p W=\sqrt{\dfrac{a\cdot(2-b)}{2b\cdot p}} W=2bpa(2b) 公式去求 a,b,同时也不能像 Scalable TCP 那样改变 ACK 时钟处理的行为,否则那就是 Scalable TCP 了。HSTCP 的路子是分段拟合不同 a,b 的 response curve: W = a ⋅ ( 2 − b ) 2 b ⋅ p W=\sqrt{\dfrac{a\cdot(2-b)}{2b\cdot p}} W=2bpa(2b) ,具体来讲看下图:
在这里插入图片描述

注意与标准 Reno TCP 的 response curve 黄色线平行的不同 a,b 参数线,图例上都有,它们与 HSTCP 的 response curve 蓝色粗线均有交点,选择几个典型的 a,b 参数,获得各交点的 w 坐标,以这些坐标为界,当 cwnd 达到某个 w 界标后,采用该界标的 a,b 参数直到 cwnd 到达下一个界标 w。

可从 RFC3649 了解整个待定系数的过程:
在这里插入图片描述

Linux kernel 的 HSTCP 实现 中有一张大表,数据均来自该 RFC 建议。

来,看一个不同网络容量下 HSTCP 锯齿的观感:
在这里插入图片描述
看,是不是管道容量越大,锯齿越细,这就是 “可扩展性”!

最后,我们发现 HSTCP 与 Scalable TCP 很像,均做到了 “在大容量网络对 p 的容忍”,即让 response curve 更陡峭,为了做出比较,我将 Scalable TCP 的 curve 也一并画入:
在这里插入图片描述

可见 HSTCP 与 Scalable TCP 何其相似,和 Scalable TCP 固定 AIMD 步频不同,HSTCP 也具有 “可扩展性”,但它体现在 “当前探测的管道容量越大,Additive Increase 就越快,Multiplicative Decrease 比例就越低”,容量越大,就要 capacity-seeking 追得越快,而出现拥塞后的 robustness 容忍度也越大,相对也就不需要过激 md。

这就是 Scalable TCP,HSTCP 的路线,与 BIC,CUBIC 不同,但相似,它们旨在解决类似的问题,提供了不同的方案和迭代路线,《TCP/IP 详解》中提到的 “长肥管道” 问题在不断求解的过程中被解决,但总留下一些尾巴供给下一个挑战者。

浙江温州皮鞋湿,下雨进水不会胖。

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

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

相关文章

2024年最新(AI绘画)Stable Diffusion4.9下载及安装教程.

软件介绍 Stable Diffusion 是一款在图像生成领域具有重大影响力的软件。 从工作原理上看,它利用深度学习的先进算法,构建起复杂且强大的神经网络架构。其核心在于能够解读用户输入的文本信息,并将这些信息转化为图像的特征与细节。 在使用…

游戏出海:跨境卖家入驻G2A详细操作指南

《黑悟空神话》在海外爆火,游戏出海也成为了众多游戏开发商的热门选择。在这个趋势之下,G2A,这个专注于游戏出海的电商平台,凭借庞大的用户群体,为游戏卖家提供了一个触达全球玩家的绝佳平台。 对于想要拓展海外市场的…

【HTML】制作一个简易图片轮播器

1. 轮播器效果图 1. 正常状态下每 1.5秒 自动轮播下张图片&#xff0c;轮播结束从头开始重复 2. 鼠标悬停时停止轮播&#xff0c;可以选择左右图片切换 2. HTML 结构 文档类型声明&#xff1a;<!DOCTYPE html> 声明文档类型为HTML5。HTML标签&#xff1a;<html lang…

2024 闽盾杯-黑盾赛道WP

CRYPTO 签到题-学会SM https://www.json.cn/encrypt/sm3 题目要求小写所以需要转换一下 或者脚本&#xff1a; import hashlib message "heidun2024" hash_object hashlib.new(sm3) hash_object.update(message.encode(utf-8)) hash_value hash_object.hexdigest(…

【STM32单片机_(HAL库)】4-5-3【定时器TIM】【感应开关盖垃圾桶项目】项目实现

1.项目需求 以下几个事件触发时&#xff0c;垃圾桶自动开盖&#xff0c;并伴随蜂鸣器短响一声&#xff0c;同时 LED 灯闪烁一下&#xff0c;2秒后自动关盖&#xff1a; 检测到有人靠近检测到有震动按下按键 KEY1 2.硬件 STM32单片机最小系统震动传感器模块蜂鸣器模块&#…

对象比较工具类:实现对业务的修改记录保存(对象字段差异对比)

测试 1&#xff1a;User类 Data NoArgsConstructor AllArgsConstructor public class User {FieldLabel("姓名")private String name;FieldLabel("年龄")private Integer age;FieldLabel("手机")private String phone;FieldLabel("手机号…

宠物空气净化器哪个牌子吸毛好?希喂、IAM、352真实测评

前段时间忙活了个大工程——热门宠物空气净化器大横评&#xff0c;通过多方位的测试&#xff0c;帮助不少朋友解决了宠物空气净化器的选购难题。 但我们还不局限于此&#xff0c;在从事家电行业这些年间&#xff0c;我们还花费大价钱购置一堆产品实测体验过各类大小家电产品&a…

Spring Boot教学资源库:从入门到精通

1绪 论 1.1研究背景 目前&#xff0c;在网络大环境下&#xff0c;越来越多高校开始实行网络教学&#xff0c;利用网络教学方式有利于学生更好的学习。 网络教学是指以计算机及网络为基础&#xff0c;来实现教学资源的上传、存储、传播和共享的教学手段。它是一种教学活动&#…

PyQt5 基于paho-mqtt库 实现MQTT通信

PyQt5 基于paho-mqtt库 实现MQTT通信 paho-mqtt安装paho-mqtt库综合示例错误处理 paho-mqtt paho-mqtt官网文档 安装paho-mqtt库 pip install paho-mqtt 综合示例 封装MQTT类订阅消息发布消息信号方式接收处理MQTT消息 import paho.mqtt.client as mqtt import sys import …

在线绘图工具drawio,visio的平替

Draw.io&#xff1a;灵活高效的在线绘图工具推荐 在工作和项目管理中&#xff0c;流程图、架构图和思维导图等可视化图表是非常重要的沟通工具。Draw.io&#xff08;现更名为diagrams.net&#xff09;是一个强大且免费的在线绘图工具&#xff0c;适用于创建各种类型的图表。它功…

YOLOv11训练自己的数据集,YOLOv11网络解析

1 训练自己的数据集 在github搜索ultralytics并下载。 GitHub - ultralytics/ultralytics: Ultralytics YOLO11 &#x1f680; 环境配置不再赘述&#xff0c;本地配置自行搜索教程&#xff0c;若使用云服务器配置更为简单。 数据标注 pip install labelimg启动标注工具 la…

【PGCCC】在 Postgres 上构建图像搜索引擎

我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如&#xff0c;我可以拍一双鞋或其他产品的照片&#xff0c;然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目&#xff0c;只要有合适的工具。如果我们可以将问题定义为…

Pycharm设置相同变量的背景颜色

在 PyCharm 中设置鼠标点击某个变量时&#xff0c;代码其他地方相同变量的背景颜色&#xff0c;可以通过调整颜色方案中的相关设置来实现。以下是详细步骤&#xff1a; 打开 PyCharm&#xff0c;选择 File -> Settings&#xff08;在 Windows/Linux 上&#xff09;或 PyChar…

基于 CSS Grid 的简易拖拉拽 Vue3 组件,从代码到NPM发布(1)- 拖拉拽交互

基于特定的应用场景&#xff0c;需要在页面中以网格的方式&#xff0c;实现目标组件在网格中可以进行拖拉拽、修改大小等交互。本章开始分享如何一步步从代码设计&#xff0c;最后到如何在 NPM 上发布。 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug…

全网最详细k8s搭建部署

目录 Kubernetes的功能&#xff1a; Kubernetes的特点&#xff1a; 1. 安装要求 2. 部署内容 1、系统环境准备 2、所有禁用swap和本地解析 3、仓库配置&#xff0c;所有安装docker 4、所有节点设定docker的资源管理模式为systemd 5、所有阶段复制harbor仓库中的证书并…

一款电子产品图册转换器

​随着科技的不断发展&#xff0c;电子产品已经成为我们生活中不可或缺的一部分。无论是手机、平板电脑还是智能家居&#xff0c;它们都离不开电子图册的支撑。一款优秀的电子产品图册转换器&#xff0c;可以帮助我们轻松实现电子图册的转换&#xff0c;为我们的生活和工作带来…

AlphaFold加冕诺奖,DeepMind CEO获奖感言:最优秀的科学家与AI配合,将完成令人难以置信的工作

继「AI 教父」摘冠 2024 年诺贝尔物理学奖后&#xff0c;AI 再下一城&#xff0c;获得了今年的诺贝尔化学奖。 北京时间 10 月 9 日&#xff0c;瑞典皇家科学院宣布了 2024 年诺贝尔化学奖的归属&#xff0c;一半授予 David Baker&#xff0c; 以表彰其在计算蛋白设计方面的贡…

python实现音频文件mp3/m4a转.wav + windows安装ffmpeg

近期在尝试使用大模型进行音频降噪、人声分离。抱脸上的模型几乎统一输入需求都是.wav&#xff0c;直接贴代码吧 ps:使用这段代码需要提前安装好ffmpeg(安装教程请往下拉) from pydub import AudioSegment# 加载.m4a文件 audio AudioSegment.from_file(r"你文件的路径&…

Pycharm使用CV2

1、windows下已经安装好python3以及opencv2 2、安装并打开pycharm 环境中装好的包就能显示出来了&#xff0c;就可以去调用cv2的接口了

TCP/IP相关

1、关于三次握手、四次挥手和TCP的11种状态&#xff1a; 记住这张图就行了&#xff1a; 2、关于慢启动、拥塞避免、超时重传、快速重传、快速恢复 记住这张图就行了&#xff1a; 一些名词解释&#xff1a; MSS&#xff1a;Maximum Segment Size&#xff0c;最大报文长度 RT…