cc算法总结

news/2025/1/31 15:08:11 标签: 网络协议, 网络拥塞

Vegas:基于延迟。是一种tcp拥塞避免算法,强调延迟而不是丢包来作为发送速率调整的依据。诞生于1994年。
Reno:基于丢包。
NewReno:基于丢包。
loss-based、delay-based、hybrid-based、congestion-based、learning-based。
基于丢包类型: Reno、NewReno;
问题:1、基于丢包的cc机制是被动式的,依据包丢失来判断拥塞。这样会撑满链路节点(如路由器)buffer,造成延迟升高,即buffer bloat问题。当出现拥塞丢包时,网络抖动就比较大,即加大了网络抖动性。2、在长肥网络中,rtt比较大,随机丢包比较常见,基于丢包的cc算法会造成cwnd经常折半,导致带宽利用率上不去。
基于延时类型:Vegas;
问题:Vegas出现晚于基于丢包的算法;而Vegas在带宽竞争上弱于基于丢包的cc算法,所以会出现“饿死”现象。
基于混合算法类型:Cubic;基于拥塞测量类型:BBR;基于学习类型:RemyCC(MIT AI Lab);
BBR全称是Bottleneck Bandwidth and RTT。BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种基于带宽和延迟反馈的拥塞控制算法。
特点:1、bbr之前的cc算法都是基于事件(丢包或延时)驱动的,bbr是基于反馈的自主控制算法。2、算法的核心是不排队。
实现:1、核心是找到最大带宽(max BW) 和最小延时(min RTT),最大带宽和最小延时的乘积即BDP(Bandwidth Delay Product),就是链路可以存放数据的最大容量。BDP驱动Probing State Machine得到Rate quantum和cwnd,设置给发送引擎(pacing engine)控制发送速度和数据量。
bbr的优点:1、BBR相对TCP的优点包括抗丢包能力强、延迟低、抢占能力强和平稳发送。
bbr缺点:1、算法公平性不好。与reno竞争,bbr可以占用90%的带宽;    多个bbr流竞争,rrt高的流占用带宽大。
2、抗抖动能力一般。rtt的抖动使bbr计算BDP不准,可能探测带宽低于可用带宽。
3、深队列竞争不过cubic。bbr使用cwnd=2*BDP,但如果节点buffer很大,(如远大于2*BDP?),bbr是竞争力低于cubic。
4、收敛速度慢。原始的bbr算法需要多轮才能降到实际带宽。bbr每轮只降一次,pacing gain的6个rtt保持周期影响了收敛速度。
5、高于一定丢包率,吞吐量断崖式下跌。    pacing gain的上探周期以1.25倍原速率上探,如果有25%以上的丢包率,则造成带宽反馈下降,bbr吞吐量会断崖下跌。
6、BBR的ProbeRTT阶段只发4个包,造成发送速率下降太大。
7、BBR探测带宽需要Padding,可能造成带宽浪费。
BBR算法改进:
1、改善收敛速度慢的问题。
    方法1:bbr v2提出在probe down一次性排空到位(inflight < BDP);
    方法2:随机化6个1x平稳发送周期,缩短排空需要的时间。
2、抗丢包问题。    抗20%的丢包依据满足大多数需求。但极端丢包率下,可把丢包率补偿到pacing rate,提高抗丢包能力。
3、ProbeRTT阶段码率低的问题。    bbr v2把probe RTT缩短到2.5s一次,使用0.5*BDP发送。
4、padding问题。    为了保持带宽竞争性和平稳发送,padding必须存在。
5、rrt不公平问题    在排空阶段一次性排空就可以缓解该问题。
BBR对比Cubic:1、bbr带宽利用率整体上高于Cubic。
BBR对比GCC:1、bbr比gcc的带宽估计更准确。2、去掉带宽限制后,bbr能更快恢复到最大带宽利用率。bbr只需要gcc十分之一的时间。


http://www.niftyadmin.cn/n/5838717.html

相关文章

提供算法模型管理、摄像头管理、告警管理、数据统计等功能的智慧园区开源了

智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。充分利用现有…

2.文件IO

2.文件IO **1. 文件I/O概述****2. 文件I/O函数接口****3. 文件定位****4. 文件描述符与文件流指针的转换****5. 文件I/O与标准I/O的比较****6. 练习与作业****7. 文件I/O与标准I/O的对应关系****8. 其他注意事项****9. 总结** 1. 文件I/O概述 文件I/O&#xff1a;操作系统为了…

Carla-ModuleNotFoundError: No module named ‘agents.navigation‘

解决办法&#xff1a; You need to make sure that _agents _ is in your (PYTHON)PATH variable or your working dictionary. Setting your working dictionary to <CARLA_ROOT>/PythonAPI/carla would fix it as agents is a sub dictionary. Similarly adding the c…

PPT教程:怎样在PPT中嵌入视频或音频文件?

在PPT制作技巧中&#xff0c;嵌入视频或音频文件无疑是一个能够极大增强演示文稿互动性和吸引力的高级技巧。通过巧妙地运用这一功能&#xff0c;你可以将复杂的说明过程简化为生动的视频演示&#xff0c;或者通过背景音乐为演讲增添氛围&#xff0c;从而让观众更加专注并留下深…

【C语言】static关键字的三种用法

【C语言】static关键字的三种用法 C语言中的static关键字是一个存储类说明符&#xff0c;它可以用来修饰变量和函数。static关键字的主要作用是控制变量或函数的生命周期和可见性。以下是static关键字的一些主要用法和含义&#xff1a; 局部静态变量&#xff1a; 当static修饰…

Java 性能优化与新特性

Java学习资料 Java学习资料 Java学习资料 一、引言 Java 作为一门广泛应用于企业级开发、移动应用、大数据等多个领域的编程语言&#xff0c;其性能和特性一直是开发者关注的重点。随着软件系统的规模和复杂度不断增加&#xff0c;对 Java 程序性能的要求也越来越高。同时&a…

SSM开发(八) MyBatis解决方法重载

目录 一、Mybatis能否支持方法重载? 二、解决 MyBatis 方法重载问题的几种方法 解决方法一: (注解方式) 将重载方法命名为不同的方法名 解决方法二:采用@SelectProvider注解 解决方法三:使用 MyBatis 的 标签和动态 SQL 来构建不同参数的 SQL 查询 三、总结 一、Myb…

分享几个好用的Edge扩展插件

为大家介绍几个实用的Edge扩展插件&#xff0c;它们能显著增强浏览器的功能&#xff0c;从广告拦截到视频倍速播放&#xff0c;从电子书搜索到双语翻译等&#xff0c;全方位提升使用体验。 AdGuard广告拦截器 能有效拦截网页弹窗、广告&#xff0c;提供多种自定义过滤选项&am…