Delay-Based 拥塞控制算法

上班七天了,有点崩溃,看一篇论文提神:A Delay-Based Approach for Congestion Avoidance in Interconnected Heterogeneous Computer networks,来自 Raj Jain,1989 年。这篇论文基于下图展开:
在这里插入图片描述

是不是很熟悉,该图的结论也是 bbr 的基础假设(参见 bbr 论文第一个图)。

我的 更合理的 bbr 也基于该图,目标是寻找最佳效能作为最优操作点。早在 1989 年,Raj Jain 就对 bbr 的基础假设做了性能与公平性方面的论证。

这篇论文有 3 点值得思考:

  • 个体最优与全局最优相克不相容。
  • 全局最优依赖于节点间信息交互。
  • 统计复用网络固有测量精度上限。

首先看个体与全局的最优效能,论文里给出了分别的表达式:
在这里插入图片描述

两个表达式以算法无关的方式推导出来,这是个普遍结论:
在这里插入图片描述

全局最优要以自身节制收缩抵抗他人的贪婪,保持整体收敛,但个体最优就很容易多,不言他,保持自私,显然这样不可收敛,但这就是现实世界,也是拥塞的根源。

最近看欧文费雪的《繁荣与萧条》,映射流量对稀缺带宽资源的抢占造成拥塞,和自私的人越在大萧条时越囤钱囤货一样。所谓痛则不通,通则不痛,流水不腐,户枢不蠹。

囤积居奇和抢占 buffer 都不高尚,可每个个体都在做,这是典型系统中的典型行为,引出第二点,全局最优需要如何做。

注意公式 2 的最右边项,当个体期望全局最优时,需获得全局信息,换句话说,全局最优要个体间互通有无,对比自私的个体最优,全局最优要额外做功,并不符合自然界最小作用量原则,这或许定性解释了为什么自私策略更普遍,因为它更简单。

另一方面,个体在没有全局信息的情况下无法收敛到全局最优,这对于包括 bbr 在内的任何算法都适用。

这意味着,要收敛到全局最优,一定要合作策略,并 “浪费” 一些带宽来做信息沟通,互通有无,这种 “浪费” 是固有的。这也是我一直强调的 “信息的上限约束了性能的上限” 理由之其一。

最后,“信息的上限约束了性能的上限” 理由之其二即上面总结的第 3 点,统计复用网络中测量精度有上限,随机变量必以统计分布衡量,统计分布量与期望必有误差,这误差导致的信息缺失是第二类无法彻底补足只能越发精确的信息。我经常说除了并不精确的 rtt 以及传输数据量再无其它反馈,性能上限就在那里,再好的算法,也只是拆东墙补西墙而已,无论你服不服你都得服。

论文的其余部分给出标题中的该 A Delay-Based Approach,给出了详细的算法以及分析,但这些并不重要,因为后面的 vegas,bbr 可能更加实用。不过在 1989 年,没有什么比单纯的 loss-based aimd 更加简单且高效了,主要还是简单,loss-based 胜出,成了标准,delay-based 作为补充。

总之,这篇老论文里能找到一些被人遗忘的点,当前工作大多集中在拥塞识别和传输加速,像 bbr 这种新算法也在这两个 “传统” 方向发力,但再往前看 1989 年更 “传统” 的东西,竟然有 “新东西”,它们也许可以作为拥塞控制算法领域未来发展方向上的路标,也算是 “回归传统” 了。
比如,下面的这个(?):
在这里插入图片描述

皮鞋没有蹬上,露着白袜子。

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

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

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

相关文章

SiC外延片测试方案

外延材料是实现器件制造的关键,主要技术指标有外延层厚度、晶格布局,材料结构,形貌以及物理性质,表面粗糙度和掺杂浓度等。下面阐述SiC外延表面常见的测试手段: 1. 外延层厚度(傅里叶变换红外FT-IR&#xf…

SpringBoot通过配置切换注册中心(多注册中心nacos和eureka)

场景: 因项目需要,一个springcloud微服务工程需要同时部署到A,B两个项目使用,但A项目使用Eureka注册中心,B项目使用Nacos注册中心,现在需要通过部署时修改配置来实现多注册中心的切换。 解决思路: 如果同时…

Eslint配置 Must use import to load ES Module(已解决)

最近在配置前端项目时,eslint经常会碰到各种报错(灰常头疼~) Syntax Error Error No ESLint configuration found.Syntax Error: Error: D:\dmq\dmq-ui.eslintrc.js: Environment key “es2021” is unknown at Array.forEach ()error in ./…

UE4 快速入门 1

安装 https://www.unrealengine.com/zh-CN/download Launcher ue4.23 editor visual studio 2019 社区版 文档学习

IO流:java中解码和编码出现乱码说明及代码实现

IO流:java中解码和编码的代码实现 一、UTF-8和GBK编码方式二、idea和eclipse的默认编码方式三、解码和编码方法四、代码实现编码解码 五、额外知识扩展 一、UTF-8和GBK编码方式 如果采用的是UTF-8的编码方式,那么1个英文字母 占 1个字节,1个…

Qt QMultiMap

QMultiMap 文章目录 QMultiMap摘要QMultiMapQMultiMap 特点代码示例 关键字: Qt、 QMultiMap、 容器、 键值、 键值重复 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QMultiMap自己使用Qt开发这么就,竟然都不知道,所以趁没…

git cherry-pick命令

问题场景: 需要把dev分支的代码,合并到master分支中,但是又不能根据整个分支合并,所有使用cherry-pick命令,根据提交的commit号来合并 问题描述: 原因分析: 解决方案: 1.在dev分支…

【Python】Python语言基础(上)

第一章 前言 1. Python简介 Python语言并不是新的语言,它早于HTTP 1.0协议5年,早于Java语言 4年。 ​ Python是由荷兰人Guido van Rossum(吉多范罗苏姆)于1989年圣诞节期间在阿姆斯特丹休假时为了打发无聊的假期而编写的一个脚本…

车载电子电器架构 —— 国产基础软件现在与未来

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

idea自动封装方法

例如 package com.utils;import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle;/*** author hrui* date 2023/10/13 13:49*/ public class DBUtils {private static ResourceBundle bund…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例docker部署及应用(七)

八、华为云耀云服务器L实例docker、docker-compose安装及部署MySQL、Redis应用: 随着云原生、容器化、微服务、K8S等技术的发展,容器 docker 也逐渐在企业团队实践中大量的使用。它可以提供了一套标准化的解决方案,极大地提升了部署、发布、运…

2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]

随着移动通信的发展和视频内容产业供给端的繁荣,流媒体视频平台已经成为互联网用户上网时长最长的应用之一。在线视频行业经历了十几年的规范发展阶段,在各大头部平台百花齐放的现状下,难以实现一家独大,但部分平台有领先优势&…

软考高级架构师下篇-18大数据架构理论设计与实践

目录 1. 引言2. 传统数据处理系统的问题1.传统数据库的数据过载问题2.大数据的特点3.大数据利用过程4.大数据处理系统架构分析3.典型的大数据架构1. Lambda架构2.Kappa架构3. Lambda架构与Kappa架构的对比4.大数据架构的实践1.大规模视频网络2.广告平台3.公司智能决策大数据系统…

数字孪生技术:新零售的未来之路

随着科技的不断进步,新零售产业正经历着巨大的变革。数字孪生作为一种新兴技术正在加速这一变革的进程。它不仅为新零售企业带来了更高效的运营方式,还为消费者提供了更个性化、便捷的购物体验。那么,数字孪生技术究竟如何在新零售产业中发挥…

JAVA之多线程

文章目录 进程与线程多线程的生命周期多线程的实现方式 进程与线程 进程是指运行中的应用程序,每一个进程都有自己独立的内存空间;线程是指进程中的一个执行流程,有时也称为执行情景;一个进程可以由多个线程组成,即在…

Web应用-Thinkphp框架-开发指南

Thinkphp框架 二级导航分类,模板继承,内置标签Public 修改MVC模块化 ——访问机制传参加载模版模版引入 分离Runtime 缓存文件管理员添加数据验证及验证场景 控制器 validate 在sql执行(敏感操作)之前验证数据模板 分页数据表连接…

[MoeCTF 2023] web题解

文章目录 webhttpcookie彼岸的flagmoe图床大海捞针夺命十三枪 web http 连接到本地后,题目给了我们任务 第一个是要求我们GET传参UwUu第二个是要求我们POST传参Luvu第三个是要求我们cookie值为admin第四个是要求我们来自127.0.0.1第五个是要求我们用MoeBrowser浏…

C语言-程序环境和预处理(1)编译、连接介绍以及预处理函数,预处理符号详解及使用说明。

前言 本篇文章讲述了程序的翻译环境和执行环境,编译、连接,预定义符号,#define,#符号和##符号的相关知识。 文章目录 前言1.程序的翻译环境和执行环境2.编译链接2.1 翻译环境2.2 运行环境 3.预处理详解(各预处理符号使…

基于微服务+Java+Spring Cloud开发的建筑工地智慧平台源码 云平台多端项目源码

建筑工地智慧平台源码,施工管理端、项目监管端、数据大屏端、移动APP端全套源码 技术架构:微服务JavaSpring Cloud VueUniApp MySql自主版权实际应用案例演示 建筑工地智慧平台已应用于线上巡查、质量管理、实名制管理、危大工程管理、运渣车管理、绿色…

创建一个react项目 create-next-app

之前是用的creact-react-app来创建的:npx create-react-app my-app 现在官网却推荐使用creact-next-app: npx create-next-app 我们把他所有的选项都选上 这里的css使用了tailwind 项目结构很奇怪啊,没找到.html文件,只在src/app/layout.t…