H-TCP 的效率和公平性
昨晚带安孩楼下玩耍,用手机 desmos 作了一组 response curve 置于双对数坐标系:

长肥管道的优化思路都很类似,cwnd 增长快一点:
- BIC TCP:二分查找逼近 capacity;
- CUBIC TCP:上凸曲线逼近 capacity;
- Scalable TCP:确定时间逼近 capacity;
- HSTCP:自适应 low,high 逼近 capacity;
- …
在 Loss rate/cwnd 双对数坐标系中,用二次曲线替代直线从右下角与 Reno 相切逐渐向左上角弯折上去,就统一了 Reno,Scalable 和 HSTCP:
y = 1 0 ( 0.09 − 0.25 ln x + 0.00105 ( ln x ) 2 ) y=10^{\left(0.09-0.25\ln x+0.00105\left(\ln x\right)^{2}\right)} y=10(0.09−0.25lnx+0.00105(lnx)2)
如此也就不再需要手工分段函数,确保 TCP 友好了。现实中,H-TCP 就是这思想:
- 距周期开始越远,AIMD 参数 α 越大,快速逼近;
- 带宽抖动越大,AIMD 参数 β 越大,快速收敛。
因此无论在什么场景下,H-TCP 都能用统一机制自适应,在低速网络它更像 Reno,在长肥管道它又与 HSTCP 类似。
本质上 HSTCP 和 H-TCP 都是根据实际场景不断调整 α,β,不同点在于 HSTCP 采用了分段拟合 Reno 的方式,而 H-TCP 则采用了连续函数,具体如下:
α = { 1 , Δ < Δ L 1 + 10 ( Δ − Δ L ) + ( Δ − Δ L 2 ) 2 , Δ ≥ Δ L \alpha=\begin{cases}1,&\Delta<\Delta^L\\1+10(\Delta-\Delta^L)+(\dfrac{\Delta-\Delta^L}{2})^2,&\Delta\ge \Delta^L \end{cases} α=⎩ ⎨ ⎧1,1+10(Δ−ΔL)+(2Δ−ΔL)2,Δ<ΔLΔ≥ΔL
β = { 0.5 , ∣ B n − B n − 1 B n − 1 ∣ > 0.2 R m i n R m a x , o t h e r w i s e \beta=\begin{cases}0.5,& \left\lvert \dfrac{B_{n}-B_{n-1}}{B_{n-1}}\right\lvert>0.2\\\dfrac{R_{min}}{R_{max}},& otherwise\end{cases} β=⎩ ⎨ ⎧0.5,RmaxRmin, Bn−1Bn−Bn−1 >0.2otherwise
β 比较有意思。MD 收缩越激烈,收敛越快,但可能收缩到 BDP 之下造成带宽利用率不足,因此 β 要适中。H-TCP 的效果是,它实时监控带宽的变化,根据这个变化率设置 β 的值。
与 Reno TCP 无条件收敛到 0.5cwnd 不同,Westwood TCP 增加了测量效果,让 cwnd 收敛到 maxbwminrtt,即 BDP,使带宽不至于因过度收敛而浪费,这就是信息注入的作用,H-TCP 思路类似,但采用了更为巧妙的做法,直接使用 minrtt / maxrtt 作为 β,更加直观,maxrtt - minrtt 就是最大排队时延,它的占比恰好就是要 drain 掉的部分。
简单模拟一下 β 的效果。先看标准 Reno TCP 的收敛:

再看 β 恒等于 minrtt / maxrtt 时的效果:

带宽利用率确实提高了。再看 H-TCP 的效果:

至于 α,看公式,不多说,一样的套路。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
H-TCP 的效率和公平性
昨晚带安孩楼下玩耍,用手机 desmos 作了一组 response curve 置于双对数坐标系: 长肥管道的优化思路都很类似,cwnd 增长快一点: BIC TCP:二分查找逼近 capacity;CUBIC TCP:上凸曲线逼近 capa…...
集群与分布式
Cluster(集群)概述 当单独一台主机无法承载现有的用户请求量;或者一台主机因为单一故障导致业务中断的时候,就可以增加服务主机数,这些主机在一起提供服务,就叫集群,而用户所看到的依然是单个的主机,用户并…...
git rebase的常用场景: 交互式变基, 变基和本地分支基于远端分支的变基
文章目录 作用应用场景场景一:交互式变基(合并同一条线上的提交记录) —— git rebase -i HEAD~2场景二:变基(合并分支) —— git rebase [其他分支名称]场景三:本地分支与远端分支的变基 作用 使git的提交记录变得更加简洁 应用场景 场景…...
HttpURLConnection构造请求体传文件
HttpURLConnection构造请求体传文件 在Java中,使用HttpURLConnection构造请求体传输文件,你需要做以下几步: 1、创建URL对象指向你想要请求的资源。 2、通过URL打开连接,转换为HttpURLConnection实例。 3、设置请求方法为POST。 …...
STM32传感器模块编程实践(九) VL53L0X激光红外测距传感器简介及驱动源码
文章目录 一.概要二.VL53L0X测距原理三.VL53L0X主要特性四.VL53L0X硬件参考设计五.模块接线说明六.模块通讯协议介绍七.光学盖玻片介绍八.STM32单片机与VL53L0模块实现距离测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.小结 一.概要 VL53L0X是一款由ST࿰…...
fastjson注解说明,fastjson注解有那些?fastjson是java的json序列化和反序列化工具包
fastjson注解说明,fastjson注解有那些?fastjson是java的json序列化和反序列化工具包 包版本说明 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞。 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞。 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞…...
VIT:论文关键点解读与常见疑问
VIT贡献点: 1. 首次将 Transformer 应用于图像识别任务 核心贡献:ViT 论文的最大贡献是提出将原本用于自然语言处理(NLP)的 Transformer 架构成功应用于图像任务。传统的计算机视觉模型主要依赖卷积神经网络(CNN&…...
ArcGIS无插件加载(无偏移)在线天地图高清影像与街道地图指南
在地理信息系统(GIS)的应用中,加载高清影像与街道地图对于地图制图、影像查阅、空间数据分析等工作至关重要。天地图作为官方出品的地图服务,以其标准的数据、较快的影像更新速度等特点受到广泛欢迎。以下是如何在ArcGIS中无插件加…...
工业相机选型(自用笔记)
可参考链接: 相机和镜头选型需要注意哪些问题_靶面尺寸-CSDN博客 工业相机选型方法_ccd工业相机选型步骤-CSDN博客 1、相机 1.1 传感器类型(CCD/CMOS) CCD相机: 1)目标是运动的则优先考虑。 2)需要高质量图像,如进行…...
【网安笔记】4种拒绝服务攻击
目录 一、SYN Flood 攻击 二、UDP Flood 攻击 三、ICMP Flood 攻击 四、HTTP Flood 攻击 拒绝服务攻击(Denial of Service attack,简称 DoS 攻击)是指攻击者通过向目标服务器或网络发送大量的请求,使其资源耗尽,无…...
WPF 的组件数据绑定详解
Windows Presentation Foundation(WPF)是微软推出的一种用于构建 Windows 应用程序的 UI 框架。WPF 提供了强大的数据绑定功能,能够轻松地将 UI 控件与数据源连接,从而实现富用户体验,分离前端设计和业务逻辑。本文将详…...
房子,它或许是沃土
刚成家,来客时,它是客房 成家后,没小孩,它是书房 有小孩,未分房,它暂且是书房 孩子大些,它是孩子们埋下梦想种子,生根发芽的地方...
【Golang】Go语言http编程底层逻辑实现原理与实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
SOLIDWORKS参数化软件
在产品设计和工程领域,参数化设计是一种革命性的方法,它允许设计者通过定义一系列规则和关系来创建和修改模型。参数化设计的核心在于将设计过程分解为一系列可调整的参数,如尺寸、形状、材料属性等,这些参数之间通过数学关系相互…...
上位机开发常用技术 C# Task 线程 开始,暂停,继续,停止
上位机开发中一定会用到的技术就是 设备的线程开始运行执行生产流程,在生产过程中会有要打开安全门或暂停设备动作,人为去排除设备小问题的时就要用到暂停功能,问题排除后设备继续运行,生产完成后设备停止。 这些操作是上位机开发…...
MySQL 密码忘记了怎么办?
在使用 MySQL 的过程中,有时候我们可能会忘记密码。别担心,本文将详细介绍在 Windows 系统下如何重新设置 MySQL 密码。 一、停止 MySQL 服务 打开“服务”窗口,可以通过在 Windows 搜索栏中输入“服务”来找到并打开它。在服务列表中找到“…...
Java中常见的自带数据结构类
目录 一、ArrayList(动态数组) 特性 常用方法 二、LinkedList(双向链表) 特性 常用方法 三、ArrayDeque(双端队列) 特性 常用方法 四、HashMap(哈希表) 特性 常用方法 五、TreeMap&…...
数据结构——链表,哈希表
文章目录 链表python实现双向链表复杂度分析 哈希表(散列表)python实现哈希表哈希表的应用 链表 python实现 class Node:def __init__(self, item):self.item itemself.next Nonedef head_create_linklist(li):head Node(li[0])for element in li[1…...
如何使用Python对Excel、CSV文件完成数据清洗与预处理?
在数据分析和机器学习项目中,数据清洗与预处理是不可或缺的重要环节。 现实世界中的数据往往是不完整、不一致且含有噪声的,这些问题会严重影响数据分析的质量和机器学习模型的性能。 Python作为一门强大的编程语言,提供了多种库和工具来帮…...
第8篇:网络安全基础
目录 引言 8.1 网络安全的基本概念 8.2 网络威胁与攻击类型 8.3 密码学的基本思想与加密算法 8.4 消息认证与数字签名 8.5 网络安全技术与协议 8.6 总结 第8篇:网络安全基础 引言 在现代信息社会中,计算机网络无处不在,从互联网到局…...
OpenClaw异常处理设计:Qwen3.5-9B图片任务失败自动恢复方案
OpenClaw异常处理设计:Qwen3.5-9B图片任务失败自动恢复方案 1. 为什么需要异常处理机制? 上周我尝试用OpenClawQwen3.5-9B实现证件照自动裁剪时,遇到了典型的"三连击"问题:网络波动导致图片上传中断、模型响应超时、输…...
KART-RERANK模型实战:构建个人知识库的智能搜索引擎
KART-RERANK模型实战:构建个人知识库的智能搜索引擎 你有没有过这样的经历?想找一篇之前看过的技术文章,隐约记得在某个PDF里,或者在某个收藏夹里,但就是死活想不起来具体在哪。于是,你开始在电脑里翻找&a…...
HunyuanVideo-Foley部署教程:NVIDIA Container Toolkit集成最佳实践
HunyuanVideo-Foley部署教程:NVIDIA Container Toolkit集成最佳实践 1. 环境准备与快速部署 在开始部署HunyuanVideo-Foley之前,我们需要确保硬件和软件环境满足要求。本教程将指导您完成从零开始的完整部署流程。 1.1 硬件要求检查 显卡:…...
SNMP V3安全配置实战:从零到企业级运维的完整指南(附华为/Cisco/Linux命令)
SNMP V3安全配置实战:从零到企业级运维的完整指南 金融行业的运维总监张伟最近遇到个头疼事:审计报告指出他们使用的SNMP V2c存在严重安全隐患。在连夜召开的紧急会议上,安全团队展示了用Wireshark抓取的明文社区字符串——攻击者完全可以利用…...
SOONet企业私有化部署:Kubernetes Helm Chart编排+PV持久化模型存储
SOONet企业私有化部署:Kubernetes Helm Chart编排PV持久化模型存储 1. 项目概述 SOONet(Scanning Only Once Network)是一款基于自然语言输入的长视频时序片段定位系统,能够通过单次网络前向计算精确定位视频中的相关片段。对于…...
Ostrakon-VL像素特工部署实战:Python入门者的3步环境搭建指南
Ostrakon-VL像素特工部署实战:Python入门者的3步环境搭建指南 1. 为什么选择Ostrakon-VL 如果你刚接触Python又想尝试AI图像处理,Ostrakon-VL是个不错的起点。这个模型特别适合处理图像扫描和基础视觉任务,对硬件要求不高,部署过…...
别再只跑Demo了!手把手教你用YOLOv5/v8训练自己的钢材缺陷数据集并部署成Web服务
从零构建工业级钢材缺陷检测系统:YOLOv5/v8实战全流程指南 在工业质检领域,深度学习技术正在掀起一场革命。想象一下,当传统质检员需要花费数小时仔细检查钢材表面的每一寸区域时,一个训练有素的AI系统可以在几毫秒内完成同样的工…...
Mathfs源码深度剖析:从多项式求解到几何代数的高级数学实现 [特殊字符]
Mathfs源码深度剖析:从多项式求解到几何代数的高级数学实现 🚀 【免费下载链接】Mathfs Expanded Math Functionality for Unity 项目地址: https://gitcode.com/gh_mirrors/ma/Mathfs Mathfs 是一个专为Unity游戏引擎设计的扩展数学功能库&#…...
从零开始:Snap 官方指南与实战技巧
1. 认识Snap:新一代Linux软件包管理工具 第一次接触Snap是在2016年,当时我正在为团队寻找跨Linux发行版的软件部署方案。传统deb/rpm包在不同系统上的依赖问题让人头疼,直到发现Snap这个"自带运行环境"的解决方案。简单来说&#x…...
基于SpringBoot + Vue的鲜花销售系统(角色:用户、商家、管理员)
文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...
