cc算法总结

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.mzph.cn/news/893899.shtml

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

相关文章

基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)

一、引言 1.1研究目标与内容 本研究旨在构建一个基于 PostgreSQL 的自然语义解析电子病历编程体系,实现从电子病历文本中提取结构化信息,并将其存储于 PostgreSQL 数据库中,以支持高效的查询和分析。具体研究内容包括: 电子病历的预处理与自然语言处理:对电子病历文本进…

安装 docker 详解

在平常的开发工作中&#xff0c;我们经常需要部署项目。随着 Docker 容器的出现&#xff0c;大大提高了部署效率。Docker 容器包含了应用程序运行所需的所有依赖&#xff0c;避免了换环境运行问题。可以在短时间内创建、启动和停止容器&#xff0c;大大提高了应用的部署速度&am…

运用python爬虫爬取汽车网站图片并下载,几个汽车网站的示例参考

当然&#xff0c;以下是一些常见的汽车网站及其爬虫示例代码&#xff0c;展示如何爬取汽车图片并下载。请注意&#xff0c;爬取网站内容时应遵守网站的使用协议和法律法规&#xff0c;避免对网站造成不必要的负担。 示例1&#xff1a;爬取汽车之家图片 网站地址 汽车之家 爬…

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;一般用于序列数据预测&#xff0c;这个可以很好的挖掘数据上下文信息&#xff0c;本文将使用LSTM进行糖尿病…

初阶1 入门

本章重点 C的关键字命名空间C的输入输出缺省参数函数重载引用内联函数auto关键字基于范围的for循环指针的空值nullptr 1.C的关键字 c总共有63个关键字&#xff0c;其中包含c语言的32个 这些关键字不需要特意去记&#xff0c;在我们日后写代码的过程中会慢慢用到并记住。 2.…

自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

在 TensorFlow 中实现逻辑回归、保存模型并加载模型进行预测的过程可以分为以下几个步骤&#xff1a; 准备数据&#xff1a;创建或加载你的自定义数据集。构建逻辑回归模型。训练模型。保存模型。加载模型。使用加载的模型进行预测。 import tensorflow as tf import numpy as…

蓝桥杯LQ1044 求完数

题目描述 因子&#xff1a;因子也叫因数&#xff0c;例如3515&#xff0c;那么3和5是15的因子。 同时15115&#xff0c;那么1和15也是15的因子。 1&#xff0c;3&#xff0c;5&#xff0c;15 这四个因子是15的所有因子。 完数&#xff1a;如果一个数等于不含它本身的其他因子之…

动态规划DP 数字三角形模型(模型分析+例题分析+C++代码实现)(数字三角形、摘花生、最低通行费用、方格取数、传纸条)

总体概览 数字三角形 原题链接 AcWing 898.数字三角形 题目描述 给定一个如下图所示的数字三角形&#xff0c;从顶部出发&#xff0c;在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点&#xff0c;一直走到底层&#xff0c;要求找出一条路径&#xff0c;使路…

人工智能在计算机视觉中的应用与创新发展研究

一、引言 1.1 研究背景与意义 1.1.1 研究背景 在当今数字化与智能化飞速发展的时代&#xff0c;人工智能已成为推动各领域变革的核心力量&#xff0c;而计算机视觉作为人工智能领域中极具活力与潜力的重要分支&#xff0c;正发挥着日益关键的作用。计算机视觉旨在赋予计算机…

C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…

度小满前端面试题及参考答案

<form>标签使用过哪些 tag? <form>标签中常使用的标签有很多。 <input>:这是最常用的标签之一,用于创建各种类型的输入字段,如文本框、密码框、单选按钮、复选框、文件上传框等。通过设置type属性来指定输入类型,例如type="text"创建文本输入…

力扣hot100链表总结-day0127

目录 206.反转链表&#xff08;0127&#xff09; 19.删除链表的倒数第N个节点&#xff08;0127&#xff09; 206.反转链表&#xff08;0127&#xff09; 总结&#xff1a; 1.迭代实现&#xff1a;将给出的头节点head固定&#xff0c;始终把head的下一个节点给安装成新头节点…

安宝特方案 | AR在供应链管理中的应用:提升效率与透明度

随着全球化的不断深入和市场需求的快速变化&#xff0c;企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本&#xff0c;并确保信息的透明度&#xff0c;成为了各大行业亟待解决的问题。而增强现实&#xff08;AR&#xff09;技术&#xff0c;特别…

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲望求出最短的路径&#xff0c;先可以记录一个变量minDepth&#xff0c;同时记录每次当前节点所在的层数currentDepth 2.在递的过程中&#xff0c;每次递一层&#xff0c;也即使当前又往下走…

python -m pip和pip的主要区别

python -m pip和pip的主要区别在于它们与Python环境的关联方式和安装路径。‌ ‌与Python环境的关联方式‌&#xff1a; pip 是直接使用命令行工具来安装Python包&#xff0c;不指定特定的Python解释器。如果系统中存在多个Python版本&#xff0c;可能会导致安装的包被安装到…

RHEL封闭环境部署zabbix

背景&#xff1a;client端操作系统升级.然后安装了该操作系统基础版本的zabbix-client&#xff0c;与原来的zabbix-server版本不匹配&#xff0c;需要重新部署一台zabbix-server zabbix-server GUI上该client采集不到系统数据 说明&#xff1a;下文的 x.x.x.x 代表服务端的IP…

Typesrcipt泛型约束详细解读

代码示例&#xff1a; // 如果我们直接对一个泛型参数取 length 属性, 会报错, 因为这个泛型根本就不知道它有这个属性 (() > {// 定义一个接口,用来约束将来的某个类型中必须要有length这个属性interface ILength{// 接口中有一个属性lengthlength:number}function getLen…

vim 中粘贴内容时提示: -- (insert) VISUAL --

目录 问题现象&#xff1a;解决方法&#xff1a;问题原因&#xff1a; 问题现象&#xff1a; 使用 vim 打开一个文本文件&#xff0c;切换到编辑模式后&#xff0c;复制内容进行粘贴时有以下提示&#xff1a; 解决方法&#xff1a; 在命令行模式下禁用鼠标支持 :set mouse …

数据结构与算法-要点整理

知识导图: 一、数据结构 包含:线性表(数组、队列、链表、栈)、散列表、树(二叉树、多路查找树)、图 1.线性表 数据之间就是“一对一“的逻辑关系。 线性表存储数据的实现方案有两种,分别是顺序存储结构和链式存储结构。 包含:数组、队列、链表、栈。 1.1 数组…

二级C语言题解:统计奇偶个数以及和与差、拼接字符串中数字并计算差值、提取字符串数组中单词尾部字母

目录 一、程序填空 --- 统计奇偶个数以及和与差 题目 分析 二、程序修改 --- 拼接字符串中数字并计算差值 题目 分析 三、程序设计题 --- 提取字符串数组中单词尾部字母 题目 分析 前言&#xff1a; 本节讲解C语言二级的统计奇偶个数以及和与差、拼接字符串中数字并计…