布雷斯悖论和借贷式拥塞控制

news2024/11/26 22:49:35

先看布雷斯悖论,新增一条路不但没减少交通延滞,反而降低了服务水准,下面一个简单的例子:

在这里插入图片描述

关于布雷斯悖论的讨论已经太多,我给出个新解释,这和我引出 借贷式拥塞控制 (差论证和编码)有关。

看一个不严谨但更简单实际(日常生活中常见)的例子:
在这里插入图片描述

当打通一条 “近路” 后,绝大多数流量都会自动进入近路,结果:

  • 流量进入近路,近路上 A 处拥堵。
  • 2 处分流的假象,可能引导更多流量从 1 进入。
  • 偶尔进入原始路径的流量在 3 处和近路流量汇合而拥堵。
  • 如果 2 到 3 间有入口,新流量会被 2-3 间的小流量欺骗,大量涌入后在 3 处加剧拥堵。

所有这一切都因打通了 2,3 间的近路。

进一步抽象一下,将入口 1 和 4 之间的所有可能路径设想成一个纷乱如麻的黑盒子,里面塞满了所有可能的路径(这是可能的,但不容易想象):
在这里插入图片描述

所有这些路径有直达的,有中转的,总之这简直是 full-mesh,能连接的都连在一起。假设每条路径都有流量,以下结论是显然的:

  • 总存在至少 1 条路径从入口到达出口时间最短。
  • 总存在至少 1 条路径使出口满负载运转。

现在做以下操作:

  • 上述第一点的那些路径加入集合 S,排除 S 外的其它路径。
  • 看出口是否满负载,如果不满负载,在集合 S 外找最优路径,重复 1。
  • 直到出口满负载。

集合 S 让出口满负载,这就是这个盒子的最优解:最小时延,最大带宽:
在这里插入图片描述

现在将那些不属于 S 的路径逐步添加进盒子,这等价于 “修路”,它的结果是:

  • 出口负载已满,不会再增加。
  • 入口进入的流量增加。
  • 出入不守恒,盒子内部拥塞,这表示 “整个网络的服务水准下降”。

以上就是布雷斯悖论的解释。

拥塞的根本原因在于负反馈时间过久,以至入口容量的假象欺骗太久,如果盒子巨大,溢出盒子需很久,这将导入大量无效流量。容易发现,越宽的路,堵车时越壮观,无论多宽的路,似乎总是被填满。

负反馈的延迟导致正反馈:路越宽,负反馈越久,维持欺骗的时间越久,拥塞程度越剧烈。buffer 越大,拥塞越很。

若转为主观,占便宜不花代价,大家都占便宜时,自己必须趋同,整条路都被占便宜者堵着,你能怎么办,缺乏反向激励和惩罚机制。这就是我屡次强调过的,别的流通过 probe 挤兑带宽时,自己就必须用至少一样的力度挤兑,否则将一无所有。

评价车牌拍卖制度时,我们能感受到虽然本意是减缓拥塞,车牌价格相当于拥塞税,你要开车,就要花钱,因为你不花钱就没拍照,所以花钱而已,车就越来越多。这和 cubic vs. bbr 异曲同工,想获得更多带宽,只能 probe,但也就 probe 而已,buffer 越堆越满,幸好 cubic 有 aimd 约束,当然也是为了自己。

拍牌相当于提前预付拥塞税,必须交钱才能开车,既然已经交了,就随便上路了,没有 “实时的” 反向措施作为勾引或反制。比如如果不开车转而坐公共交通,会退钱。

回到上面黑盒子,如果每人进入盒子一次收 1 元,两次收 2 元,10 人合并进入一次奖励 1 元,20 人合并进入奖励 2 元,这个盒子最终会自动识别 S 集。

再回到最上面 wiki 的例子,如果近路不再 0 成本,而是第一天收 1 元,第二天收 2 元,第一天走原路奖励 1 远,第二天走原路奖励 2 元,结合时间货币成本自行考量,新路顺利提升了通行效率。

一方亏的给了另一方,让他的收益递减他才肯主动亏,因为这能换来他的收益递增。没有动机作恶才是最好的。

总之,负反馈也好,自抑制也罢,让占便宜的收益递减,不占便宜的吃亏递增,or 占便宜的惩罚递增,不占便宜的奖励递减,系统就会自动收敛到高效和公平,结合经济规律以及人口规律的周期性,这就是我那个 借贷式拥塞控制 的缘起和初衷。

aimd 和 bbr 分别处于借贷式拥塞控制的两边,aimd 预付拥塞税,却对代价零存整取,而 bbr 则试图实时跟踪并匹配资源,虽说我们不希望 cc 工作在右边的丢包点,但左边的 bltbw/proprt 最优操作点却不可达,真实情况在二者之间。

纳什均衡可能也不是最优解,但却是最平衡的。

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

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

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

相关文章

在SpringBoot 中集成Swagger

前提&#xff1a;我的SpringBoot 项目的版本是 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18-SNAPSHOT</version><relativePath /> <!-- l…

使用Bazel构建高效的Android应用程序

使用Bazel构建高效的Android应用程序 1. 引言 在现代软件开发中&#xff0c;构建工具是至关重要的一环。Bazel是一个开源的构建工具&#xff0c;由Google开发并用于其内部项目多年。它旨在提供高效、可扩展和可靠的构建解决方案。Bazel最初专注于构建大规模软件项目&#xff…

约数之和 (普通快速幂求逆元做法)

假设现在有两个自然数 A 和 B&#xff0c;S 是 AB 的所有约数之和。 请你求出 Smod9901 的值是多少。 输入格式 在一行中输入用空格隔开的两个整数 A 和 B 。 输出格式 输出一个整数&#xff0c;代表 Smod9901 的值。 数据范围 0≤A,B≤5107 输入样例&#xff1a; …

月报总结|Moonbeam 10月份大事一览

万圣节快乐&#xff01;时间一晃眼&#xff0c;10月已经迈入尾声&#xff0c;也即将迎来寒冷的冬天。但与季节相反&#xff0c;加密产业近期的发展可以说是高潮起伏&#xff0c;热度不断攀升。Moonbeam在10月中也发布了许多重大的更新&#xff0c;如Uniswap V3前段上线、众贷DO…

找人做软件,过程该怎么控制?

我们找外包公司或者程序员兼职做软件&#xff0c;我们该怎么做过程控制呢&#xff0c; 做过程控制的目的是确保最终交付的软件是我们需要的&#xff0c; 虽然在开发前我们已经敲定了功能列表和原型&#xff0c;但这两者只是一个框架&#xff0c;就好比要建一栋房子&#xff0…

前端 | (十四)canvas基本用法 | 尚硅谷前端HTML5教程(html5入门经典)

文章目录 &#x1f4da;canvas基本用法&#x1f407;什么是canvas(画布)&#x1f407;替换内容&#x1f407;canvas标签的两个属性&#x1f407;渲染上下文 &#x1f4da;绘制矩形&#x1f407;绘制矩形&#x1f407;strokeRect时&#xff0c;边框像素渲染问题&#x1f407;添加…

【Redis】String字符串类型-常用命令

文章目录 String字符串类型常用命令setgetMGETMSET 计数命令INCRINCRBYDECRDECRBYINCRBYFLOAT 其它命令APPENDGETRANGESETRANGESTRLEN 命令总结 String字符串类型 1&#xff09;⾸先Redis中所有的键的类型都是字符串类型 2&#xff09;字符串类型的值&#xff08;value&#…

鉴源实验室 | 自动驾驶传感器攻击研究

作者 | 付海涛 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 自动驾驶汽车的脆弱性 自2015年以来&#xff0c;汽车的信息安全问题受到国内外的广泛关注。而随着汽车的智能化与网联化的…

C语言scanf()函数读取包含空格的字符串

scanf()函数读取输入时&#xff0c;遇到空格或者回车结束读取&#xff1b; 所以输入的字符串中有空格&#xff0c;到空格就中断了&#xff1b; 根据资料&#xff0c;使用 "%[^\n]" 这样的格式化符遇到空格继续读取&#xff0c;直到敲了回车&#xff1b; 看一下&am…

微信小程序UI自动化测试实践:Minium+PageObject

小程序架构上分为渲染层和逻辑层&#xff0c;尽管各平台的运行环境十分相似&#xff0c;但是还是有些许的区别&#xff08;如下图&#xff09;&#xff0c;比如说JavaScript 语法和 API 支持不一致&#xff0c;WXSS 渲染表现也有不同&#xff0c;所以不论是手工测试&#xff0c…

Javaweb之HTML,CSS的详细解析

2. HTML & CSS 1). 什么是HTML ? HTML: HyperText Markup Language&#xff0c;超文本标记语言。 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等内容。 标记语言&#xff1a;由标签构成的语言…

Netty在Firbase中的使用

1.1前言 实时更新是现代应用程序中用户体验的一个组成部分。随着用户期待这样的行为&#xff0c;越来越多的应用程序都正在实时地向用户推送数据的变化。通过传统的3层架构很难实现实时的数据同步&#xff0c;其需要开发者管理他们自己的运维、服务器以及伸缩。通过维护到客户…

会声会影2024对比2023变化以及功能对比

全新会声会影2024版本现已登场&#xff0c;小伙伴们相信已经急不可待地想知道2024版到底有哪些新功能。对比2023版本&#xff0c;会声会影2024版本有没有功能的增强&#xff1f;事不宜迟&#xff0c;现在就让我们一起来看看会声会影2024对比2023的变化&#xff0c;包括功能对比…

Spring Boot整合Swagger

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

Java 为什么不推荐在 while 循环中使用 sleep() 我悟了

文章目录 前言原因是否正确方案是否合理定时轮询场景事件机制等待和唤醒 个人简介 前言 最近逛 CSDN 看到一篇文章&#xff0c;文章大意是说为什么在循环中不推荐使用 sleep 操作&#xff0c;原因在于线程挂起和唤醒会有很大的性能消耗&#xff0c;并推荐使用 Timer 及 Schedu…

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。

文章目录 2章4 章5章&#xff08;没看&#xff09;6章&#xff08;没看&#xff09; 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络&#xff0c;预先简历链路 卫星和地面终端有…

能卷死同行的收银系统源码--服装店收银系统+进销存、PHP+mysql

涉及零售服装门店收银系统源码 超市务管理系统源码 便利店收银系统源码 进销存erp/scrm的供应链订货系统源码 saas门店连锁加盟收银系统源码 走过路过不要错过。 整理采用ThinkPHPmysql&#xff0c;二开门槛低&#xff0c; 模块化设计&#xff0c;前后端分离。 前端&…

使用JMeter进行接口压力测试

1.我首先创建一个线程组 2.创建好之后如图所示 3. 进行配置 4. 然后添加一个https请求 5.创建好之后设置请求方法和对应参数 6.设置表格监听器 7.创建好之后如图所示 8.保存jmx文件后点击运行进行测试&#xff0c;结果反馈如下图

Maxwell for 3dMax渲染器的安装方法

Maxwell渲染器的安装方法 Maxwell Render是一个基于控制光传输的数学方程的渲染引擎&#xff0c;这意味着所有元素&#xff0c;如发射器材料和相机&#xff0c;都是从物理精确的模型中导出的。Maxwell Render是无偏的&#xff0c;因此不使用任何技巧来计算场景中每个像素的照明…