《利息理论》指导 TCP 拥塞控制
欧文费雪《利息原理》第 10 章,第 11 章对利息的几何说明是普适的,任何一个负反馈系统都能引申出新结论。给出原书图示,本文依据于此,详情参考原书:
将 burst 看作借贷是合理的,它包含成本(报文),收益(传输吞吐),时间转移(burst or pacing),以及风险(丢包-耗能 or 丢包重传-耗能耗时间)。借的是时间,还的是时间,利息也是时间,它可通过费雪利息理论的时间不耐解释,于是对于收敛问题也就和平衡市场利率问题相似(相同)了。
为啥非要是 TCP,因为 TCP 是刚兑协议,若对于柔性协议,就要复杂得多。
端到端 cc 算法作为借贷实体,它有欲望和节制,希望获得更大带宽却不想消耗太多(无论是能量 or 时间),它要不断平衡自己的策略,就像个人一样,通过不断借贷来修改自己的收入川流(《利息理论》术语),以达最佳 ROI,或换个词,最佳效能 E = B / T(B 为吞吐,T 为 rtt),而这就是当一条连接在最小 rtt 下获得最大带宽时达到的最佳操作点,这是 bbr 的梦想。
以时间不耐解释,越陷入当前困境,越欲以高利率博满足,但由于总量小,风险虽大但危害却小,相反,当前越富足,越欲以放贷博收益,稍富无力放太多,大富又不屑那点利息收益了,都处在自动平衡过程的负反馈漩涡中。
对于网络传输,大意就是 “数据量少就快点发-借时间,数据量多就慢点发-贷时间”,就像贫困意欲借钱,富裕意欲放款一样。
画出 burst 率作为动力兑换带宽的不耐线几何示意图,并给出基本解释:
上图结论:
- 45 度线,借贷平衡,burst 率即为连接的 delivery rate。
- 沿 45 度线,带宽越大,“不耐线” 弧度越小,无限带宽,近乎与 45 度垂直线,表示可全部 pacing。
- 沿 45 度线,带宽越小,“不耐线” 弧度越大,小带宽,buffer 作用大,通过 burst 向 buffer 借时间。
- 同一条 “不耐线” 往东南看,坡度小于 45 度,越往东南越平缓,“放贷” 倾向越强,burst 率越低。
- 同一条 “不耐线” 往西北看,坡度大于 45 度,越往西北越陡峭。“借入” 倾向越强,burst 率越高。
- buffer 越小,风险越大,但需要一个特殊维度表示 buffer,即新的 “当前 bw - 下次 bw - buffer” 坐标。
基于该图给出算法,传输收敛过程就是所有连接对 45 度坡度利率认同的过程,不断调整 burst 率,直到 pacing rate 等于 delivery rate。
以 AIMD 为例,比如 reno/cubic,cwnd 很小时,采用高 burst 率突发,随着 cwnd 递增,burst 率递减。这种策略可在不破坏公平性的前提下提高带宽利用率。注意下列反馈:
- 当 cwnd 很大,burst 率很小,倾向于 pacing,抢占性降低,此时高 burst 率小消息很容易插队通过而不丢包。
- 当 cwnd 很小,burst 率很大,快速抢占带宽,但随着它赶上 “正常水平”,抢占性随 burst 率降低而降低。
对于 bbr,采用同样的策略依然高尚。多个 probe 周期采用与 inflight 负相关的 burst 率进行,逐渐收敛到公平。bbr probe 流程要改善,因为 deliver_rate < gain * pacing_rate 就足以说明发生了 buffer 挤占(时间借贷),需要彻底恢复,而不仅仅归还 5 / 4 * old_maxbw * min_rtt - new_maxbw * min_rtt。
无论哪种具体 cc,都不是关键问题,关键问题是 cwnd + burst 率的控制方式是自平衡的,简直就是现实借贷本身。随 cwnd 增加,burst 率降低,当 cwnd 继续增加也发不出去 “cwnd 这么多,收发不再守恒”,换句话说,有效 inflight 饱和了,开始 queuing,这就是逃逸 cwnd-limited 的平衡态(逃逸速率),即使更大 inflight 试图挤占更多带宽也徒劳,背景流的类似行为会让收益与丢包 or 时延成本抵消,即使 buffer 足够,当更多 inflight 注入,rtt 也大,且增益渐小,依然无法守恒,就是收缩之时(类比 bbr,即 deliver_rate < gain * pacing_rate 时)。
《利息理论》是本好书,费雪的这个理论是普适的,可以指导传输收敛,天然无 buffer 挤占,在一个自组织系统自适应到一个叫做 “利率” 的贴现 roi,直接修改 cubic,bbr,不断自适应 burst 率即可。一本好书,条理清晰,结论明确,给人耳目一新的感觉,整个阅读过程中思维得到了训练,印象深刻。名著的效果就是提供高强度思维训练,读懂就形成了反射,可融会贯通,相对而言,畅销书就没这效果,过程中可能觉得很哇塞,但主题还是散。最近读的另一系列,许倬云的历史书,同样深刻,虽然许倬云不如费雪贡献和名气,但也算大师。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:

《利息理论》指导 TCP 拥塞控制
欧文费雪《利息原理》第 10 章,第 11 章对利息的几何说明是普适的,任何一个负反馈系统都能引申出新结论。给出原书图示,本文依据于此,详情参考原书: 将 burst 看作借贷是合理的,它包含成本(报文)…...
Bsdiff,Bspatch 的差分增量升级(基于Win和Linux)
目录 背景 内容 准备工作 在windows平台上 在linux平台上 正式工作 生成差分文件思路 作用差分文件思路 在保持相同目录结构进行差分增量升级 服务端(生成差分文件) 客户端(作用差分文件) 背景 像常见的Android 的linux平台,游戏,系统更新都…...

【3妹教我学历史-秦朝史】2 秦穆公-韩原之战
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 3妹:2哥,今天下班这么早&#…...
车载控制器
文章目录 车载控制器电动汽车上都有什么ECU 车载控制器 智能汽车上的控制器数量因车型和制造商而异。一般来说,现代汽车可能有50到100个电子控制单元(ECU)或控制器。这些控制器负责管理各种系统,如发动机管理、刹车、转向、空调、…...

回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测
回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测 目录 回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.RIME-CNN-SVM霜冰优化算…...

使用Jaeger进行分布式跟踪:学习如何在服务网格中使用Jaeger来监控和分析请求的跟踪信息
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
添加多个单元对象
开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题:不同阶段添加多个单元对象。 定义一个点集和一个单元集合,单元的类型可以是点、三角形、矩形、多边形等基本图形。只…...

十八、模型构建器(ModelBuilder)快速提取城市建成区——批量掩膜提取夜光数据、夜光数据转面、面数据融合、要素转Excel(基于参考比较法)
一、前言 前文实现批量投影栅格、转为整型,接下来重点实现批量提取夜光数据,夜光数据转面、夜光数据面数据融合、要素转Excel。将相关结果转为Excel,接下来就是在Excel中进行阈值的确定,阈值确定无法通过批量操作,除非采用其他方式,但是那样的学习成本较高,对于参考比较…...

HarmonyOS开发:基于http开源一个网络请求库
前言 网络封装的目的,在于简洁,使用起来更加的方便,也易于我们进行相关动作的设置,如果,我们不封装,那么每次请求,就会重复大量的代码逻辑,如下代码,是官方给出的案例&am…...

【杂记】Ubuntu20.04装系统,安装CUDA等
装20.04系统 安装系统的过程中,ROG的B660G主板,即使不关掉Secure boot也是可以的,不会影响正常安装,我这边出现问题的主要原因是使用了Ventoy制作的系统安装盘,导致每次一选择使用U盘的UEFI启动,就会跳回到…...

040-第三代软件开发-全新波形抓取算法
第三代软件开发-全新波形抓取算法 文章目录 第三代软件开发-全新波形抓取算法项目介绍全新波形抓取算法代码小解 关键字: Qt、 Qml、 抓波、 截获、 波形 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object …...

分享一个基于asp.net的供销社农产品商品销售系统的设计与实现(源码调试 lw开题报告ppt)
💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…...

Java基于SpringBoot的线上考试系统
1 摘 要 基于 SpringBoot 的在线考试系统网站,功能模块具有课程管理、成绩管理、教师管理、学生管理、考试管理以及基本信息的管理等,通过将系统分为管理员、授课教师以及学生,从不同的身份角度来对用户提供便利,将科技与教学模式…...
flask socketio 实时传值至html上【需补充实例】
目前版本如下 Flask-Cors 4.0.0 Flask-SocketIO 5.3.6from flask_socketio import SocketIO, emit 跨域问题网上的普通方法无法解决。 参考这篇文章解决 Flask教程(十九)SocketIO - 迷途小书童的Note迷途小书童的Note (xugaoxiang.com) app Flask(__name__) socketio Sock…...

C# Onnx P2PNet 人群检测和计数
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…...

idea提交代码一直提示 log into gitee
解决idea提交代码一直提示 log into gitee问题 文章目录 打开setting->Version control->gitee,删除旧账号,重新配置账号,删除重新登录就好 打开setting->Version control->gitee,删除旧账号,重新配置账号,删除重新登…...

ATECLOUD如何进行电源模块各项性能指标的测试?
ATECLOUD平台进行电源模块各项性能指标的测试是通过以下步骤实现的: 连接测试设备:将测试设备与云计算服务器连接,实现数据采集和远程控制。测试设备包括示波器、电子负载、电源、万用表等,这些设备通过纳米BOX连接到云测试平台上…...
Mysql查询训练——50道题
--1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩表 SC(SId…...

学习笔记|正态分布|图形法|偏度和峰度|非参数检验法|《小白爱上SPSS》课程:SPSS第三讲 | 正态分布怎么检验?看这篇文章就够了
目录 学习目的软件版本原始文档为什么要假设它服从正态分布呢?t检验一、图形法1、频数分布直方图解读 2、正态Q-Q图操作解读 3、正态P-P图SPSS实战操作解读 二、偏度和峰度解读: 三、非参数检验法注意事项 四、规范表达五、小结划重点 学习目的 SPSS第三讲 | 正态…...

Android NDK开发详解之ndk-build 脚本
Android NDK开发详解之ndk-build 脚本 内部原理从命令行调用选项可调试 build 与发布 build要求 ndk-build 脚本使用 NDK 的基于 Make 的构建系统构建项目。我们针对 ndk-build 使用的 Android.mk 和 Application.mk 配置提供了更具体的文档。 内部原理 运行 ndk-build 脚本相…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...