拥塞控制算法为何失效,网络为何难以测量?

news2024/9/29 20:22:27

紧接着上文 如何测量一个(传输网络)系统的容量 给出的方法,看一下如何测量网络容量,如果真的能测量网络容量,传输算法就好设计了。

先给出答案,很遗憾,根本无法测量,请阅读 why we don’t know how to simulate the internet,超级经典的一篇论文,我推荐过不止一次,因此我本文不谈异构问题,说点别的,比如拓扑。

感谢 bbr 讨论组前段时间抛出的一个问题,让我知道了一个新词,parking lot topology,真的就像停车场一样,肯定很多人都有体会。

本文我就用这个拓扑来描述,实证为什么往往在实验室仿真良好的算法一旦部署到真实的网络就拉了,这有点反其道而行之的意思,因为大多数文章甚至论文都在讲标准 dumbbell topology 下的仿真,但不妨把这看作一个新方向。

我准备分别从 bbr 和 aimd 这两个经典算法分析。先看拓扑:
在这里插入图片描述

很简单,3 条流共享 2 个 buffer,先看 bbr 的表现,设 x 为预估带宽,w 为 inflt,排除 RTT 分割因素,假设 R 非常小,建模如下:

d x 1 d t = C 1 ⋅ g ⋅ x 1 ⋅ R g ⋅ x 1 ⋅ R + w 21 − x 1 \dfrac{dx_1}{dt}=C_1\cdot\dfrac{g\cdot x_1\cdot R}{g\cdot x_1\cdot R+w_{21}}-x_1 dtdx1=C1gx1R+w21gx1Rx1

d x 21 d t = C 1 ⋅ g ⋅ x 22 ⋅ R g ⋅ x 22 ⋅ R + w 1 − x 21 \dfrac{dx_{21}}{dt}=C_1\cdot\dfrac{g\cdot x_{22}\cdot R}{g\cdot x_{22}\cdot R+w_1}-x_{21} dtdx21=C1gx22R+w1gx22Rx21

d x 3 d t = C 2 ⋅ g ⋅ x 3 ⋅ R g ⋅ x 3 ⋅ R + w 22 − x 3 \dfrac{dx_3}{dt}=C_2\cdot\dfrac{g\cdot x_3\cdot R}{g\cdot x_3\cdot R+w_{22}}-x_3 dtdx3=C2gx3R+w22gx3Rx3

x 22 = C 2 ⋅ x 21 ⋅ ( R − ϵ ) x 21 ⋅ ( R − ϵ ) + w 3 x_{22}=C_2\cdot\dfrac{x_{21}\cdot (R-\epsilon)}{x_{21}\cdot (R-\epsilon)+w_3} x22=C2x21(Rϵ)+w3x21(Rϵ)

w 22 = x 21 ⋅ ( R − ϵ ) w_{22}=x_{21}\cdot (R-\epsilon) w22=x21(Rϵ) 【这一步就是 Little 定律】

d w 1 d t = x 1 ⋅ R − w 1 \dfrac{dw_1}{dt}=x_1\cdot R-w1 dtdw1=x1Rw1

d w 21 d t = x 21 ⋅ R − w 21 \dfrac{dw_{21}}{dt}=x_{21}\cdot R-w_{21} dtdw21=x21Rw21

d w 3 d t = x 3 ⋅ R − w 3 \dfrac{dw_3}{dt}=x_3\cdot R-w3 dtdw3=x3Rw3

设定参数如下:

C1, C2, R, g = 10, 10, 2, 1.25
x1[0], x21[0], x3[0] = 1, 6, 5

看一下表现吧:
在这里插入图片描述

任何端到端算法的动力学只作用于第一跳,不同的端到端算法就是采用不同方法利用 buffer 动力学挤兑带宽,根基就是 buffer 动力学,过了第一跳所有算法都退到自然 buffer 动力学:

x k = C ⋅ w k ∑ w i x_k=C\cdot\dfrac{w_k}{\sum w_i} xk=Cwiwk

看,是不是 bbr 的 gain 效应没了,人们预期的是:

x k = C ⋅ g ⋅ x k ⋅ R ∑ w i x_k=C\cdot\dfrac{g\cdot x_k\cdot R}{\sum w_i} xk=CwigxkR

可这个只在第一跳生效,如上面模型所示。总结,上游输出不会携带算法的药效。

再来看 aimd 的表现,建模如下:

d x 1 d t = C 1 ⋅ w 1 w 1 + w 21 − x 1 \dfrac{dx_1}{dt}=C_1\cdot\dfrac{w_1}{w_1+w_{21}}-x_1 dtdx1=C1w1+w21w1x1

d x 21 d t = C 1 ⋅ w 21 w 12 + w 1 − x 21 \dfrac{dx_{21}}{dt}=C_1\cdot\dfrac{w_{21}}{w_{12}+w_1}-x_{21} dtdx21=C1w12+w1w21x21

d x 3 d t = C 2 ⋅ w 3 w 3 + w 22 − x 3 \dfrac{dx_3}{dt}=C_2\cdot\dfrac{w_3}{w_3+w_{22}}-x_3 dtdx3=C2w3+w22w3x3

x 22 = C 2 ⋅ x 21 ⋅ r 2 x 21 ⋅ r 2 + w 3 x_{22}=C_2\cdot\dfrac{x_{21}\cdot r_2}{x_{21}\cdot r_2+w_3} x22=C2x21r2+w3x21r2

w 22 = x 21 ⋅ r 2 w_{22}=x_{21}\cdot r_2 w22=x21r2 【这一步就是 Little 定律】

d w 1 d t = { 1 , D = 0 0.5 ⋅ w 1 , D = 1 \dfrac{dw_1}{dt}=\begin{cases} 1,& D=0\\0.5\cdot w_1,& D=1\end{cases} dtdw1={1,0.5w1,D=0D=1

d w 21 d t = { 1 , D = 0 0.5 ⋅ w 21 , D = 1 \dfrac{dw_{21}}{dt}=\begin{cases} 1,& D=0\\0.5\cdot w_{21},& D=1\end{cases} dtdw21={1,0.5w21,D=0D=1

d w 3 d t = { 1 , D = 0 0.5 ⋅ w 3 , D = 1 \dfrac{dw_3}{dt}=\begin{cases} 1,& D=0\\0.5\cdot w_3,& D=1\end{cases} dtdw3={1,0.5w3,D=0D=1

r 1 = w 1 + w 12 C 1 r_1=\dfrac{w_1+w_{12}}{C_1} r1=C1w1+w12

r 2 = w 2 + w 22 C 2 r_2=\dfrac{w_2+w_{22}}{C_2} r2=C2w2+w22

与 bbr 同样初始值,g = 1.25 换成 I = 1,10X bdp buffer,结局如下:
在这里插入图片描述

如果 buffer 1 输出 C1 = 10,buffer 2 输出 C2 = 20,结局如下:
在这里插入图片描述

和 bbr 的动力学一样,细节不同:

  • 上游输出带宽不会将 additive increase 传递到下游,特别瓶颈在上游时(输出固定,不足以填充下游);
  • 任意一跳丢包都会导致 multiplicative decrease。

再多的例子我就不举了,总之这只是一个简单的拓扑,但足以表示真实网络的抽象,不必引入更复杂拓扑,只需细细斟酌上面 bbr 的例子就足够。我们清楚知道这个模型中, R + ϵ R+\epsilon R+ϵ 很重要,因为 buffer 2 中计算 w22 时并不能直接用 R,那么用什么呢?如果 ϵ = − 0.5 ⋅ R \epsilon=-0.5\cdot R ϵ=0.5R,f 2 就会被压到虚无。

我到底想说什么?我想说的是端到端拥塞控制算法的不可度量性,无论是静态适配的 aimd 还是动态适配的 bbr,这就是我逼逼呵呵说了好几年的 “测不准” 的数学表达。

这和上一篇说的测量系统容量的方法并不矛盾,因为对于网络传输系统而言,系统是动态变化的,在流量部署到系统上并开始传输时,没有全局视图,就不能指望全局公平,留下的 gap 是固有的,没法靠算法弥补。

如果拥有全局视图,对于第一个例子 bbr 算法,我们只需要将 f2 的 gain 调大就可以确保公平:
在这里插入图片描述

可是谁又提前知道这个拓扑和配置呢?

所以你知道实验室仿真的宇宙第一算法为啥拉了吧,也就不用再问为什么部署了 bbr 却还不如 cubic 了吧,如果你还希望研发一个精准的,普适的端到端算法,我劝你改行去卖皮鞋,至少还有很多经理市场。

令人费解的是,我为什么要说这些,这不是砸自己饭碗吗?对,就是要砸,因为我不干了。

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

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

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

相关文章

前端-CDN的理解及CDN一些使用平台

目录 1.CDN的概念 (1) 分发服务系统 (2)均衡负荷系统 (3)运营管理系统 (4)缓存系统 (5)支撑系统 2.CDN的基本工作原理 3.CDN使用缓存资源过程 4.CDN…

CesiumJS+SuperMap3D.js混用实现天际线分析

版本简介: cesium:1.99;Supermap3D:SuperMap iClient JavaScript 11i(2023); 官方下载文档链家:SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考:support.supermap.com.cn:8090/w…

【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity)

总览 1.arduino 代码和库等… 2.Unity 的部分,创建一个 3D 工程,然后创建一个 cube,绑定一个脚本文件 3.效果预览: 【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity) 一、Arduino 部分 1.使用的…

《Exploit temporal cues in multi-camera 3D object detection》论文泛读

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4666749915775385601eId2491528568128599808 针对单帧数据含有的信息太少的问题,提出了一种新的方法,BEVDet4D,这种方法可以访问时间线索,并且取得了较好的表现&#xff…

C++类与对象深度解析(一):从抽象到实践的全面入门指南

文章目录 C 类与对象——详细入门指南前言1. 类的定义1.1 类定义的基本格式示例代码解释 1.2 访问限定符示例代码解释 1.3 类域示例代码解释 1.4 成员命名规范常见的命名约定:示例:拓展: 1.5 class与struct的默认访问权限示例: 2.…

Leetcode 每日一题:Decode String

写在前面: 最近求职季找工作忙的焦头烂额,同时这个学期的助教工作也比之前的工时多了一倍,昨天又拖更了真的对不起大家~~ 今天我们来看一道稍微轻松一点的题,这道题目来源于 Valid Parenthesis&#xff0…

房产销售系统:SpringBoot技术优化方案

第三章 系统分析 3.1 系统设计目标 房产销售系统主要是为了用户方便对房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理等信息进行查询,也是为了更好的让管理员进行更好存储所有数据信息及快速方便的检索功能,对系统的各…

ESP32聊天机器人之一

想做情感陪伴机器人,看到B站有个项目很有趣,使用一块esp32复刻了B站MeteWu的ESP32大模型聊天项目。 自己做了一些修改,加了一些简单的表情,角色扮演,切换大模型和温湿度传感器等功能。可以用于玩具,聊天机…

第307题|快速掌握 反常积分敛散性判定的方法|武忠祥老师每日一题

解题思路:先判断这个反常积分的敛散性,再讨论a的取值范围; 判断反常积分的敛散性,我们通常有三个方法: (1)根据定义,通常在原函数比较好求的情况下,可以根据定义 (2&am…

IDEA 常用配置和开发插件

件市场中搜索并安装“Git Integration”插件。 一、前言 在本篇文章中我会为大家总结一些我自己常用的配置和开发插件,此外也给大家提供一个建议,可以根据自己的项目需求和个人偏好选择适合的插件。另外,IDEA 也在不断更新,可能会…

『功能项目』战士职业平A怪物掉血【44】

我们打开上一篇43事件中心的项目, 本章要做的事情是给主角增加一个xxxCtrl.cs脚本,再创建一个xxxOpt.cs调用xxxCtrl.cs机制层利用事件中心再写一个主角战士平A对怪物的伤害 首先创建脚本:PlayerCtrl.cs using UnityEngine; public class Pla…

2024年微电子与纳米技术国际研讨会(ICMN 2024) Microelectronics and Nanotechnology

文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus大会时间:2024年9月20-22日地点:成都…

Java项目: 基于SpringBoot+mybatis+maven服装生产管理系统(含源码+数据库+任务书+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven服装生产管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简…

0基础跟德姆(dom)一起学AI 数据处理和统计分析02-Linux进阶

* vi编辑器 * 权限相关 * 进程,网络相关 * 压缩和解压缩 * 软件安装-yum方式 * 其它命令 --- 1.过滤和管道命令 shell # grep命令, 用来过滤的 # 格式 grep [-n] 关键字 文件路径 # 从文件中过滤出要查找的内容, -n:表示带行号. # | 管道符, 即: 把前边命令的执行结果,…

Ceisum(SuperMap iClient3D for Cesium)实现平面裁剪

1:参考API文档:SuperMap iClient3D for Cesium 开发指南 2:官网示例:support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/examples.html#layer 3:SuperMap iServer:欢迎使用 SuperMap iServer 11…

ArcGIS属性表汉字转拼音

直接复制粘贴现成代码: # -*- coding: utf-8 -*-import arcpyfrom arcpy import envimport osimport pypinyin import sys# 不带声调皿stylepypinyin.NORMAL)def pinyin(word): s for i in pypinyin.pinyin(word, stylepypinyin.NORMAL): s .join(…

idea中java及java web项目的常见问题

1、乱码问题,主要有几处地方,需要检查。 ①确保文件编码,其实主要就是在idea启动文件中,增加了 -Dfile.encodingUTF-8的设置 ②编辑器默认编码,都改为UTF-8 ③Tomcat的运行配置,编码也改为UTF-8,同样使用…

PHP省时省力海报在线制作系统小程序源码

省时省力海报在线制作系统:设计小白也能秒变大师 🎨 开篇:告别繁琐,拥抱高效设计 你还在为设计一张海报而熬夜加班吗?还在为找不到合适的素材而焦头烂额吗?别担心,“省时省力海报在线制作系统”…

Linux python pyinstaller 打包问题

1.环境 系统版本:Linux -4.19.91-24.8.el8.ks8.11.x86_64-x86_64-with-kylin-10-Sun python 版本 :3.11.2 pyinstaller :6.10.0 pyinstaller 安装不在说明 2.打包 [rootlocalhost pythonNacos]# /usr/local/python3.11/bin/pyinstaller --onefile…

AI+代码审核平台CodeSec获CCIA中国网络安全创新创业大赛总决赛三等奖

近日,由中央网信办指导,中国网络安全产业联盟(CCIA)主办的2024年中国网络安全创新创业大赛总决赛及颁奖典礼在国家网络安全宣传周落下帷幕。开源网安“AI代码审核平台CodeSec V4.0” 凭借在AI方向的技术创新、技术突破及功能应用创…