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篇:网络安全基础 引言 在现代信息社会中,计算机网络无处不在,从互联网到局…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础
在构建任何动态、数据驱动的Web API时,一个稳定高效的数据存储方案是不可或缺的。对于使用Python FastAPI的开发者来说,深入理解关系型数据库的工作原理、掌握SQL这门与数据库“对话”的语言,以及学会如何在Python中操作数据库,是…...
