上述具体的论文可以62616964757a686964616fe59b9ee7ad9431333365643662参考:CUBIC: A New TCP-Friendly High-Speed TCP Variant

1. tcp cubic数学模型

CUBIC在设计上简化了BIC-TCP的窗口调整算法,在BIC-TCP的窗口调整中会出现一个凹和凸(这里的凹和凸指的是数学意义上的凹和凸,凹函数/凸函数)的增长曲线,CUBIC使用了一个三次函数(即一个立方函数),在三次函数曲线中同样存在一个凹和凸的部分,该曲线形状和BIC-TCP的曲线图十分相似,于是该部分取代BIC-TCP的增长曲线。另外,CUBIC中最关键的点在于它的窗口增长函数仅仅取决于连续的两次拥塞事件的时间间隔值,从而窗口增长完全独立于网络的时延RTT,之前讲述过的HSTCP存在严重的RTT不公平性,而CUBIC的RTT独立性质使得CUBIC能够在多条共享瓶颈链路的TCP连接之间保持良好的RRTT公平性。

来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β,当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax,紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。

窗口的增长函数如下:

W(t) = C * (t-K)3 + Wmax, 其中C和β为常量。

t为当前时间距上一次窗口减小的时间差,而K就代表该函数从W增长到Wmax的时间周期,。

当收到ACK后,CUBIC计算利用该算法计算下一个RTT内的窗口增长速度,即计算W(t+RTT),该值将作为cwnd的目标值,根据cwnd的大小,CUBIC将进入三种不同模式,如果cwnd会小于在标准TCP下经过上次拥塞之后的时刻t窗口将会达到的值(该值是通过标准TCP的窗口增长函数计算出来的),那么CUBIC就处于标准TCP模式,如果小于Wmax,那么位于凹阶段的,如果大于Wmax,那么处于凸阶段。

tcp cubic 内核源代码调用逻辑

CUBIC整体架构调用的逻辑如下:

1. 连接每收到一个ack,则调用tcp_ack

2. tcp_ack会调用bictcp_acked,用来更新cnt和delayed_ack(用来消除delay包的影响)

3. tcp_ack会调用bictcp_cong_avoid,这是分两种情况:

(1)snd_cwnd小于慢启动阈值,处于慢启动阶段,则调用tcp_slow_start

(2)snd_cwnd大于慢启动阈值,处于拥塞避免阶段,则调用bictcp_update来更新bictcp,再调用tcp_cong_avoid_ai

4. tcp_ack中如果检测到丢包,进入拥塞处理阶段,则调用bictcp_recalc_ssthresh来更新慢启动阈值

5. tcp_ack中完成丢包重传后,退出拥塞处理阶段,则调用bictcp_undo_cwnd来更新

快速重传:tcp_ack中的丢包检测,即检测到连续3个重复ACK。

快速恢复:bictcp_undo_cwnd,直接把snd_cwnd更新为max(snd_cwnd,last_max_cwnd),和掉包前相差不大。

cubic算法优化_安卓cpu优化 tcp拥塞算法cubic和reno怎么选择相关推荐

  1. cubic算法优化_安卓cpu优化tcp拥塞算法cubic和reno怎么选择?

    上述具体的论文可以参考:CUBIC: A New TCP-Friendly High-Speed TCP Variant 1. tcp cubic数学模型 CUBIC在设计上简化了BIC-TCP的窗口 ...

  2. Scalable TCP拥塞算法

    Scalable TCP(STCP)拥塞控制算法,在每个RTT周期内,如果没有发生拥塞,将在接收到每个ACK报文后,将拥塞窗口增加0.01(a值). cwnd = cwnd + 0.01 如果在一个R ...

  3. TCP拥塞控制算法(Tahoe/Reno/Newreno)

    TCP拥塞控制算法(Tahoe/Reno/Newreno) 前言 TCP(Transmission Control Protocol),传输控制协议,是目前__Internet__上最重要的一个通信协 ...

  4. python多目标优化_多目标优化算法(四)NSGA3(NSGAIII)论文复现以及matlab和python的代码...

    前言:最近太忙,这个系列已经很久没有更新了,本次就更新一个Deb大神的NSGA2的"升级版"算法NSGA3.因为multi-objective optimization已经被做烂了 ...

  5. python实现贝叶斯优化_贝叶斯优化的并行实现

    python实现贝叶斯优化 The concept of 'optimization' is central to data science. We minimize loss by optimizi ...

  6. 增城seo搜索引擎优化_搜索引擎seo优化主要从哪里入手?

    首先我们应该了解什么是搜索引擎优化以及网站搜索引擎seo优化的价值,从基础开始逐步深入,下面拓王朝所要讲的都是一些理论知识,很好理解,有不同见解欢迎评论. SEO优化 SEO搜索引擎优化,是指通过采用 ...

  7. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  8. 数据量大的sql怎么做优化_搜索引擎关键词优化怎么做

    搜索引擎关键词优化怎么做 新媒体营销的兴起,而且是方兴未艾,因此与客户建立起良好关系,保持良好的口碑关系,让客户信任你,公司适合增值服务:或者利润多,同时能在业务管理.销售管理.人事管理等各个方面有较 ...

  9. 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误

    机器学习算法 拟合曲线 机器学习 (Machine Learning) The learning curve is very useful to determine how to improve th ...

最新文章

  1. C++Primer笔记之复制控制
  2. Windows下安装并启动mongodb
  3. Zipkin-1.19.0学习系列13: Brave-Web-Filter的filter机制分析
  4. 【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造
  5. js中for循环的优化写法
  6. Powershell-获取Hyper-V复制状态
  7. python 通信调制方式_python实现BPSK调制信号解调
  8. 大数据开发培训课程:Hive的静态分区与动态分区
  9. 汇编指令rep stosq
  10. C# 之 ZipOutPutStream 压缩文件
  11. 网易新版BLOG邀请,有需要的朋友进。
  12. 对浮点数取模(求余)
  13. eclipse复制工作空间配置
  14. ubuntu安装sdkman
  15. android 13 WMS/AMS系统开发-窗口层级相关SurfaceFlinger图层创建 第三节
  16. Java Jar包介绍
  17. python编写sql注入工具毕业设计_Python编写SQL注入工具(2)
  18. 张文宏澄清年收入传言:读书不是唯一的路,却是人生最好走的路
  19. VOS的处理逻辑测试分析
  20. debian e42 wifi

热门文章

  1. python删除excel指定行_python实现Excel删除特定行、拷贝指定行操作
  2. VMware16的安装及VMware配置Linux虚拟机(详解版)
  3. 机器学习基石-05-1-Recap and Preview
  4. HDU6069 欧拉筛法+约数定理+计算技巧。
  5. 内网渗透总结二:第二步管理员密码的明文和hash获取
  6. 小程序商品数据对象累加加入购物车缓存导致的数组嵌套在上一层数组中的问题
  7. 信息检索(IR)笔记1: 倒排索引(Inverted Index)
  8. 小米手机开机自启动软件及定时开关机
  9. 2021李宏毅老师最新40节机器学习课程!附课件+视频资料
  10. 用C语言编写PC与三菱PLC串口通讯,PC与三菱FX系列PLC通信的实现