TCP CUBIC 曲线对 BIC 折线的拟合

bic 旨在对 reno 改进,用二分逼近替换线性遍历逼近,时间规模从 O ( W m a x ) O(W_{max}) O(Wmax) 下降到 O ( ln ⁡ W m a x ) O(\ln {W_{max}}) O(lnWmax),这是本质,而 cubic 可以看作对 bic 的 bugfix,解除了 rtt 依赖。在实现上,cubic 用一条以绝对时间 t 为自变量的数学曲线拟合 bic 绘制的折线。

因此,这条 cubic 曲线只能在大多数情况下拟合 bic,而不是所有情况,正如泰勒级数在某个点拟合任意曲线一样。用以下代码看究竟:

for n in range(1, len(times)):if n % 1 == 0:wx[n] = wmax_x + G*(n - n_x - 1 - K_x)**3if wy[n-1] < wmax_y and wmax_y - wy[n-1] > I:wy[n] = wy[n-1] + (wmax_y - wy[n-1])/Belif wy[n-1] > wmax_y:wy[n] =  wy[n-1] + (wy[n-1] - wmax_y)/Belse:wy[n] = wy[n-1] + Ielse:wx[n] = wx[n-1]wy[n] = wy[n-1]rx = wx[n]/C1if rx < R:tmp_x = wx[n]/Relse:tmp_x = C1x[n] = (1-a)*x[n-1] + a*tmp_xry = wy[n]/C2if ry < R:tmp_y = wy[n]/Relse:tmp_y = C2y[n] = (1-a)*y[n-1] + a*tmp_ybeta = 0.7if inc1 and wx[n] > 2*C1*R:C1 *= 2inc1 = Falseelif inc1 == False and wx[n] > 2*C1*R:C1 /= 2inc1 = Trueif inc2 and wy[n] > 2*C2*R:C2 *= 2inc2 = Falseelif inc2 == False and wy[n] > 2*C2*R:C2 /= 2inc2 = Truewhile wx[n] > 2*C1*R:n_x = nwmax_x = wx[n]tmp = wmax_x*(1 - beta)/GK_x = math.pow(tmp, 1/3)wx[n] = (beta)*wx[n]while wy[n] > 2*C2*R:wmax_y = wy[n]wy[n] = (beta)*wy[n]

我用不同的 bdp 模拟不同的 Wmax,展示其对曲线拟合效果的影响,x 为 cubic,y 为 bic:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事实上,就二分逼近而言,bic 是准确的,cubic 是近似的,它只做到 “与 rtt 无关,按照上凸逼近 Wmax,按照下凸 probe”,而并未执行二分逼近。

cubic 脱离了二分逼近,但保留了上凸逼近下凸 probe 的精髓:

  • 上凸逼近保证逼近速度越来越慢,起初离 Wmax 远,快速逼近风险小,离 Wmax 越近风险越大越需要谨慎;
  • 下凸 probe 确保了得寸进尺的哲学,既然有,大概率还会有。

但这些优势需要有代价来兑换,即 cubic 对待不同 Wmax 的不可扩展性,以下是我模拟不同的 Wmax 的动图:
在这里插入图片描述

如图所示,只要 C(建议为 0.4) 确定,cubic 曲线形状就确定了,Wmax 越大,逼近的时间越久,初始力度越大,曲线越瘦高,Wmax 越小,逼近时间越短,初始力度越小,曲线越矮胖,这也正是参数 K 的几何含义。另一方面,不管 Wmax 如何,probe 的过程都是一致的。

由于 cubic 曲线形状仅和 C 相关,而曲线的位置却和 Wmax 和 K 相关,而 K 又由 Wmax 决定,因此曲线位置仅和 Wmax 相关,以上分析直接导出了 cubic 算法 tcp friendliness 问题,即,当 Wmax 小到一定程度,cubic 曲线 x = K 左边足够平坦,以至于它的增窗效果还没有 y = I*x 标准 reno 算法更强,cubic 在这种情况下是有劣势的,而这种情况仅在 Wmax 足够小即短瘦管道时发生,于是乎,在这种情况下,cubic 退回到 reno,这就是 tcp friendliness 之解法。

小经理只是小经理,饲料标准降了,啥也不是。

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

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

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

相关文章

Activity

69[toc] 1.启停活动页面 1.Activity启动和结束 从当前页面跳到新页面 startActivity(new Intent(this, ActFinishActivity.class));从当前页面返回上一个页面&#xff0c;相当于关闭当前页面 finish();2.Activity生命周期 官方描述生命周期 onCreate&#xff1a;创建活…

解决 Could not locate zlibwapi.dll. Please make sure it is in your library path

zlibwapi.dll文件是zlib库的Windows版本&#xff0c;很多Python上的库想要在Windows上执行都需要依赖这个文件。 可以通过本人上传的免费资源直接下载&#xff1a;zlibwapi 链接&#xff1a;https://pan.baidu.com/s/1u8osbt_IevO4GOkXthZ04A 提取码&#xff1a;c2mf zlibwa…

基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程

1 Jenkins是什么&#xff1f; 学习官网&#xff1a;Jenkins官网&#xff0c;Jenkins中文官网&#xff1b; Jenkins是一款开源 CI&CD 软件&#xff0c;用于自动化各种任务&#xff0c;包括构建、测试和部署软件&#xff1b; 用Java语言编写的&#xff0c;可在Tomcat、Dock…

4.2.1 通过DTS传递物理中断号给Linux

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 4.2.1 通过DTS传递物理中断号给Linux 参考《GICv3_Software_Overview_Official_Release_B》&#xff0c;下表描述了GIC V3支持的INTID(硬件中断号)的范围。 SGI (Software Generated Interrupt)&#xff1a;软…

【C/C++】 秋招常考面试题最全总结(让你有一种相见恨晚的感觉)

目录 1.C程序编译链接过程 2.浅拷贝和move有区别吗 3.深拷贝和浅拷贝的区别 4.空类的大小 5.类的继承有几种方式&#xff0c;区别是什么&#xff1f; 六、extern 关键字的作用 七、static关键字的作用 八、指针和引用的区别 九、C内存分配方式 十、结构体对齐…

33 指针与数组:数组名与指针的关系、使用指针遍历数组、数组指针、指针数组、字符指针

目录​​​​​​​ 1 数组名与指针的关系 1.1 数组名 1.2 对数组名取地址 1.3 数组名与指针的区别 1.3.1 类型不同 1.3.2 sizeof 操作符的行为不同 1.3.3 & 操作符的行为不同 1.3.4 自增自减运算的行为不同 1.3.5 可变性不同 2 使用指针遍历数组 2.1 使用 *(nu…

硬布线控制器与微程序控制器

硬布线控制器和微程序控制器都是控制单元&#xff08;CU&#xff09;的实现方式&#xff0c;用于协调和控制计算机系统的操作。它们的主要区别在于控制信号的生成方式&#xff1a; 硬布线控制器 (Hardwired Controller): 概念: 硬布线控制器使用组合逻辑电路直接生成控制信号…

自己做个国庆75周年头像生成器

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 下载相关代码&#xff1a;【免费】《自己做个国庆75周年头像生成器》代码资源-CSDN文库 又是一年国庆节&#xff0c;今年使用国旗做…

《情书》你的名字,是最美的情书

《情书》你的名字&#xff0c;是最美的情书 岩井俊二&#xff0c;日本电影导演&#xff0c;作家及记录片导演。被誉为日本最有潜质的新近“映像作家”&#xff0c;也有中国影迷称他为“日本王家卫”。影像清新独特、感情细腻丰富。&#xff08;来自豆瓣&#xff09; 穆晓芳 译 …

总结C/C++中内存区域划分

目录 1.C/C程序内存分配主要的几个区域&#xff1a; 2.内存分布图 1.C/C程序内存分配主要的几个区域&#xff1a; 1、栈区 2、堆区 3、数据段&#xff08;静态区&#xff09; 4.代码段 2.内存分布图 如图&#xff1a; static修饰静态变量成员——放在静态区 int globalVar 是…

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(2)Keras

文章目录 前言一、Keras二、使用Kears 估计回归问题的神经网络1. 载入、处理数据2. 数据预处理&#xff1a;归一化3. 设定一系列随机数种子4. 定义了一个简单的深度神经网络5. 训练模型6. 查看训练结果7. 使用最优轮数&#xff08;index1&#xff09;重新估计 此神经网络模型8.…

小程序原生-列表渲染

1. 列表渲染的基础用法 <!--渲染数组列表--> <view wx:for"{{numList}}" wx:key"*this" > 序号&#xff1a;{{index}} - 元素&#xff1a;{{item}}</view> <!--渲染对象属性--> <view wx:for"{{userInfo}}" wx:key&q…

springboot实战学习(10)(ThreadLoacl优化获取用户详细信息接口)(重写拦截器afterCompletion()方法)

接着学习。之前的博客的进度&#xff1a;完成用户模块的注册接口的开发以及注册时的参数合法性校验、也基本完成用户模块的登录接口的主逻辑的基础上、JWT令牌"的组成与使用、完成了"登录认证"&#xff08;生成与验证JWT令牌&#xff09;以及完成获取用户详细信…

Java中异常的认识和创建

文章目录 前言一、异常的概念与体系结构 1.1 异常的概念1.2 异常的体系结构1.3 异常的分类二、异常的处理 2.1.防御式编程2.2 异常的抛出2.3 异常的捕获2.4 异常的处理流程三、自定义异常类 一、异常的概念与体系结构 1.1 异常的概念 在生活中&#xff0c;一个人表情痛苦&…

51单片机的智能垃圾桶【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块超声波传感器红外传感器步进电机按键、蜂鸣器、LED等模块构成。适用于智能自动感应垃圾桶、超声波智能垃圾桶等相似项目。 可实现基本功能: 1、LCD1602实时显示桶内垃圾高度 2、超声波传感器采集桶顶到垃圾的距离…

Temporal Dynamic Quantization for Diffusion Models阅读

文章目录 AbstractIntroductionBackgrounds and Related Works2.1 扩散模型2.2 量化2.3 量化感知训练和训练后量化 TemporalDynamic Quantization3.1 量化方法3.2 扩散模型量化的挑战3.3 TDQ模块的实现3.4 工程细节时间步的频率编码TDQ模块的初始化 Experimental SetupResults5…

C99中的变长数组

在C99标准之前&#xff0c;从语言在创建数组的时候&#xff0c;指定数组的大小只能使用常量和表达式&#xff0c;或者数据初始化的时候&#xff0c;可以省略数组大小。 1.int arr[5]{1,2,3,4,4}; 2.int arr[24]{1,2,3,4,5,6}; 3.int arr[]{1,2,3,3,4,5,6}; 这样的语法限制不够灵…

使用 ModelScope Studio 实现可滚动 ChatBot

前面的文章提到过 Gradio 的 Chatbot 不能自动滚动的问题&#xff0c;最近看到了 ModelScope Studio 扩展的一些组件&#xff0c;其中 Chatbot 就完美解决了自动滚动的问题&#xff0c;同时还增加了很多更细化的功能&#xff0c;例如可以设置用户和 AI 的头像。官方文档&#x…

QCamera6.7笔记

1.QCamera​ .h文件 #include <QtWidgets/QMainWindow> #include "ui_QCamera_test1.h" #include <QCamera> #include <QtMultimedia> #include <QtMultimediaWidgets> #include<QMediaCaptureSession> #include <QMediaDevices&…

渗透测试之密码暴力破解工具medusa美杜莎

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…