目录

一、Tcp拥塞控制算法的发展历程及种类

二、Reno算法

三、bic算法、Cubic算法

3.1bic算法

3.2Cubic算法

四、vegas算法

五、Bbr算法


本文介绍了一些基础的拥塞控制算法,欲了解更多,请查看新的博客:

(11条消息) 拥塞控制算法总结_爱嘤嘤嘤斯坦i的博客-CSDN博客

一、Tcp拥塞控制算法的发展历程及种类

有以下几种类型的分类:

  1. 基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减少,如Tahoe、Reno、BIC-TCP、Cubic等;
  2. 基于时延的拥塞控制:将时延增长视为出现拥塞,延时增长时增大拥塞窗口,延时减少时减少拥塞窗口,如Vegas、Westwood等;
  3. 基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞,如BBR;
  4. 基于学习的拥塞控制:没有特定的拥塞信号,而是借助评价函数,基于训练数据,使用机器学习的方法造成一个控制策略,如Remy。

二、Reno算法

课本上的四个阶段:慢启动阶段、拥塞避免阶段、快重传阶段、快速恢复阶段。就是reno算法

下面这个链接详细介绍了这四个过程

https://www.cnblogs.com/MnHoy/p/16369215.html

基础核心概念:

补充:补充一些核心概念,参考自如下文章

https://blog.csdn.net/dog250/article/details/51439747#comments_20896403

先介绍了一下慢启动,ssthresh,拥塞避免。Ack确认,拥塞是怎么搞的,以及为什么每次拥塞之后窗口要设为一半。

然后介绍了一下慢启动的hystatr优化

ssthresh的快速穿越问题

AIMD的公平性收敛:降窗比率和RTT,两个因素会主要影响两个共享链路的tcp的带宽。

三、bic算法Cubic算法

BIC和CUBIC的慢启动、快速重传恢复阶段与Reno相同。不同在于拥塞避免阶段。Reno是线性的(每个rtt增加1),bic是二分,cubic是三次函数

3.1bic算法

二分查找的思想

https://www.likecs.com/show-305496303.html

稳定拥塞避免阶段(Steady State)和空闲资源探测阶段(Max Probing)

3.2Cubic算法

锯齿状?

其窗口增长仅取决于两个连续拥塞事件之间的时间。窗口增长与RTT无关。

四、vegas算法

时延增加:说明路由器交换机开始排队了,此时降窗,保证了公平性

时延降低:说明路由器交换机的排队正在缓解,可以适当增窗,保证带宽满负荷

出现丢包:重传丢包,不调整窗口,因为算法过程完全接管窗口调整,丢包与窗口无关

会监控 RTT

会尝试增加发送速率来探测链路带宽

如果丢包或者 RTT 增⼤就降低发送速率

缺点:

CWND 增⻓是线性的,不能很好利⽤⽹络传输速率

不能跟基于丢包的算法共存

五、Bbr算法

QUIC也使用了BBR作为拥塞控制算法。

因为最优带宽和延迟无法同时测量(btlBw的测量会造成存在网络缓存增加RTT,而RTprop的测量要求网络缓存为空),所以分别估计带宽(btlBw)和延迟(RTprop),最后计算出cwnd。同时增加变量pacing rate(btlBw * 增益系数),用于控制发送端的发送速率,以解决发送端突发造成的网络排队问题。

四个状态:

Startup:类似于慢启动,发送大量包

Drain

ProbeBW:探测带宽

ProbeRTT:探测延迟

补充:inflight是指在途数据包数目,即发送方暂时未确认的

了解更多,请查看新的博客:

(11条消息) 拥塞控制算法总结_爱嘤嘤嘤斯坦i的博客-CSDN博客

Tcp拥塞控制算法入门:分类及介绍( Reno bic Cubic vegas Bbr)相关推荐

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

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

  2. TCP拥塞控制算法BBR源码分析

      BBR是谷歌与2016年提出的TCP拥塞控制算法,在Linux4.9的patch中正式加入.该算法一出,瞬间引起了极大的轰动.在CSDN上也有众多大佬对此进行分析讨论,褒贬不一.   本文首先对源 ...

  3. TCP拥塞控制算法纵横谈-Illinois和YeAH

    周五晚上,终于下了雨,所以也终于可以乱七八糟多写点松散的东西了... 方法论问题. 这个题目太大以至于内容和题目的关联看起来有失偏颇,不过也无所谓,既然被人以为"没有方法论"而鄙视 ...

  4. 让人很容易误解的TCP拥塞控制算法

    正文 很多人会认为一个好的TCP拥塞控制算法会让连接加速,这种观点是错误的,恰恰相反,所有的拥塞控制算法都是为了TCP可以在贪婪的时候悬崖勒马,大多数时候,拥塞控制是降低了数据发送的速度. 我在本文中 ...

  5. TCP拥塞控制算法的演进

    TCP拥塞控制算法的演进 TCP协议仅定义框架,也就是发送端和接收端需要遵循的"规则".TCP协议的实现经过多年的改进,有了多个不同的版本.比较重要的有Tahoe.Reno.New ...

  6. Google's BBR TCP拥塞控制算法的四个变速引擎

    台风海马来临前的两个几乎通宵的夜晚,我用一篇关于BBR算法的文章的迎接海马!公司在昨晚响应深圳市停工,停课号召,发布了在家办公(请注意,不是放假...)通知...其实吧,我觉得停电才是王道,你觉得呢? ...

  7. Linux TCP拥塞控制算法原理解析

    这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...

  8. Linux网络协议栈:用eBPF写TCP拥塞控制算法

    其实不想用这个题目的,只因为TCP相关的东西比较吸引人的眼球,这篇文章的主题还是eBPF,而不是TCP. 用eBPF写TCP拥塞控制算法只是本文所讲内容的一个再平凡不过的例子. 先看两个问题,或者说是 ...

  9. 【转载】TCP拥塞控制算法 优缺点 适用环境 性能分析

    [摘要]对多种TCP拥塞控制算法进行简要说明,指出它们的优缺点.以及它们的适用环境. [关键字]TCP拥塞控制算法 优点    缺点   适用环境公平性 公平性 公平性是在发生拥塞时各源端(或同一源端 ...

最新文章

  1. appium-DesiredCapability详解与实战
  2. visual studio 2019配置OnnxRuntime+推理+vgg16
  3. WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
  4. 为什么我的理论和实践之间的差距相对较大
  5. 独立式键盘的编程方法 按键的去抖动原理和基本方法
  6. 三万字的java I/O流基础总结看完肯定能把女朋友教会
  7. Java8 Stream详解~Stream 创建
  8. awd赛题的flag是什么意思_记一次AWD自动获取flag并提交
  9. 小学计算机兴趣小组计划书,兴趣小组计划
  10. Red Giant红巨人特效插件助力制作影视大片特效
  11. 网站后台测试软件,WebCrack:网站后台弱口令批量检测工具
  12. 隧道人员定位管理系统
  13. echarts 实现自定义tooltip提示框浮层内容显示
  14. Ink脚本语言学习笔记(三)
  15. 你写的api接口代码真是_有哪些好玩的免费的API接口?
  16. 社交规则:饭后抢着买单到底是客气还是客套?大多并不是真心的
  17. jq 下拉列表选中事件_JQuery select各种事件
  18. Win32_SoundDevice 声卡 的参数说明
  19. 安卓开发 投屏安卓设备到电脑端 scrcpy
  20. OLED QLED LED等发光器件, IVL测试软件

热门文章

  1. FinalShell个人认为最牛逼的SSH工具
  2. java type int argb,TYPE_INT_RGB和TYPE_INT_ARGB的格式
  3. Xilinx FPGA SelectIO串并转换IP核使用笔记
  4. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页(一)...
  5. 分享iOS社区app创业经历
  6. css选择器优先级顺序是什么?css基本选择器优先级的介绍-前端教程
  7. Pytorch 训练技巧
  8. matlab 点符号,matlab 中在运算符号前加一点是什么意思?
  9. 枯燥的程序员生活——自己编写的一首歌曲
  10. OpenAI最强多模态语言模型来了:GPT-4发布