拥塞控制的自适应 AQM 探索

拥塞控制面临的几类问题:

  • 网络拥塞时,大象流如何为微突发让路;
  • 网络拥塞时,如何只惩罚造成拥塞的流量;
  • 网络拥塞时,如何确保小流量不受影响。

既然不想在 host 将流按照大小分类,嫌没意义,麻烦或看不上,那其实交换机一直在做这件事,比如优先级队列,加权公平队列,加权随机早期检测等,不管是物理交换机还是虚拟交换机,这几样肯定跑不了。

但那些队列和调度策略往往配置复杂,实现太重,且无法自适应流量特征的变化。

codel 是个好东西,fq_codel 更有点意思,自适应携带负反馈环,这个我喜欢。

linux 的 fq_codel 实现中在 enqueue 位置有个针对最长队列的 fq_codel_drop 操作,只在队列满载时执行,还是太粗糙。我后来在它基础上修改了一版,改动如下:

  • enqueue 队列长度超限后,在所有长度大于某个预设值的足够 fat 的 flow 中分担删除报文,flow 长度即分担权重(后面会提到一种预防重传风暴的情况,特意在同一个队列丢包,而不是分担)。

再后来,我增加了 dequeue 逻辑,就成了一个虚拟交换机的框架,它的原理如下:
在这里插入图片描述

在 dequeue 而不在 enqueue 做的理由如下:

  • enqueue 由不同的 ingress 端口(物理 or 虚拟)执行,执行复杂逻辑涉及 lock 过久问题;
  • enqueue 逻辑对大象流丢包会导致队列中的流长度反转,误伤中等流量。
  • dequeue 位置是个一致的并行 check 点。

另一个点,在每一次 dequeue 报文时,按概率删除报文追求的不仅仅是平滑,另一种看起来更简单的方式反而会造成颠簸,误伤良性流量,与上述不在 enqueue 做此逻辑的理由 2 一样。简单分析一下 why:
在这里插入图片描述

最后,谈谈该 aqm 的算法细节。

这种自适应策略可以逐渐让各 hash list 长度趋向一致,迫使各流量收敛到公平(如果端到端算法不主动收敛,aqm 会迫使它们收敛),但如果所有 hash list 长度都快速增加,且长度趋向一致,那就是遇到 incast 了,应尽力缓存而不是丢包,因此应该夹带以下逻辑:

  • 以均匀方差做指标切换策略,方差越大,越趋向丢包,方差越小,越趋向缓存;
  • 趋向缓存,但 buffer 不足,必须丢包时,尽量在同一个队列丢,防止重传 incast。

所以,这一切能否自适应?答案是肯定的。保存一个系数 a = (max_len - min_len) * (mid_len - avg_len) * avg_len:

  • 丢包概率计算时乘以 a 即可,hash 队列越畸变,丢包率越高,反之越平坦,丢包率越低;
  • enqueue 逻辑的队列 limit 改为动态计算,a 越小,说明有 incast 微突发,limit 就要越大,limit 做成 a 的负相关函数即可;
  • limit 越大,越倾向于在一个队列丢包,计算每队列丢包数量是要乘以 a 的负相关函数,a 越小,每队列丢包数量越多。

简单数学函数的威力无穷。

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

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

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

相关文章

【B站 heima】小兔鲜Vue3 项目学习笔记Day05

Day05 文章目录 Day05登录1. 整体认识和路由设置2. 表单校验实现3. 表单-统一校验4. 基础登录业务实现5. Pinia管理用户数据6. Pinia 数据持久化7. 登录和非登录状态下的模板适配8. 请求拦截器携带Token9. 退出登录功能的实现10. Token失效401拦截处理 购物车1. 流程梳理2. 本地…

韬光养晦的超绝项目

发展方向 竞技闯关类 可以加入对战系统积累积分,竞技类的接受程度更高,小孩(我和我身边大多数人小时候)都喜欢玩王者吃鸡这种经济类游戏,开放世界探索(本项目、一梦江湖、逆水寒)的受众群体年…

一文讲清楚SpringBoot项目打包jar后运行报错template might not exist - 第514篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

定个小目标之每天刷LeetCode热题(1)

有两种解决方法&#xff1a; 第一种&#xff1a;利用哈希集合不重复的特性&#xff0c;代码展示如下 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {Set<ListNode> listNode new HashSet<ListNode>();ListNode…

搭贝低代码平台:重塑房地产行业的工作流程与效率

随着数字化转型浪潮席卷全球&#xff0c;房地产行业也开始积极探索利用科技力量提升业务效率与服务质量。搭贝低代码平台&#xff0c;作为一款强大的数字化工具&#xff0c;正逐渐成为房地产企业优化管理流程、加速决策制定的重要推手。本文将深入探讨搭贝如何在房地产行业多个…

QT使用gsoap获取手机归属地

1-环境变量 用的win32 E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\bin\win32 2-生成代码接口 自己建一个目录&#xff0c;在此打开cmd窗口&#xff0c;生成的文件都会在这个文件夹中。 这里用的手机归宿地。 wsdl2h -o GetPhoneInfo.h -s -n Phone -t ....\typemap.…

集智书童 | YOLOv10开源|清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;YOLOv10开源&#xff5c;清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9 在过去几年中&#xff0c;YOLO系列模型已成为实时目标检测领域的主导范式…

生产订单工序新增BAPI:CO_SE_PRODORD_OPR_CREATE增强

背景&#xff1a; 创建生产订单工序时需要通过BAPI来维护圈起来的字段&#xff0c;但是BAPI不包含这些字段&#xff0c;所以对BAPI进行一些增强处理。 实现过程&#xff1a; 1.拷贝标准BAPI:CO_SE_PRODORD_OPR_CREATE至ZCO_SE_PRODORD_OPR_CREATE&#xff08;最好放在新的自定…

解决:java.util.concurrent.RejectedExecutionException

一 发现RejectedExecutionException错误 今天查看服务器的时候发现了一些java.util.concurrent.RejectedExecutionException错误&#xff0c;这个是由于线程池里的线程忙不过来报出的。如下图&#xff1a; 像这种 RejectedExecutionException 错误&#xff0c;表明在Java应…

QT如何将生成的exe文件打包成安装包

一、生成exe文件 1、生成exe文件 QT编译模式选择release&#xff0c;然后点击编译&#xff1a; 2、找到exe文件 在开发文件夹下找到build-xxxxxxx-Release文件夹里面找到exe文件 3、相关依赖dll文件查找 新建个空文件夹将exe文件拷贝进去&#xff1a; 然后找到如下程序…

恒创科技:Linux 服务器和 Windows 服务器哪个更好?

选择正确的服务器系统至关重要&#xff0c;目前广泛使用的选项是 Windows 服务器 和 Linux 服务器&#xff0c;它们各有优缺点。本文将比较 Linux 与 Windows 服务器&#xff0c;让我们来看看它们的主要区别&#xff0c;然后再决定哪种操作系统适合使用。 主要区别&#xff1a;…

HTTP方法、状态码和请求过程

一、HTTP方法概念&#xff1a; HTTP客户端发出请求&#xff0c;告知服务端需要执行不同类型的请求命令&#xff0c;这些命令被称为HTTP方法。 简说:HTTP方法是告诉服务器要做什么。 1、GET方法&#xff1a;获取资源 作用&#xff1a; ①通常用于请求服务器发送某个资源&am…

Tensors张量操作

定义Tensor 下面是一个常见的tensor&#xff0c;包含了里面的数值&#xff0c;属性&#xff0c;以及存储位置 tensor([[0.3565&#xff0c;0.1826&#xff0c;0.6719],[0.6695&#xff0c;0.5364&#xff0c;0.7057]]&#xff0c;dtypetorch.float32,devicecuda:0)Tensor的属…

Bootstrap5

Bootstrap 5 是 Bootstrap 框架的最新版本&#xff0c;这是一个广受欢迎且功能强大的开源前端开发框架&#xff0c;专为快速构建响应式和移动优先的网站而设计。Bootstrap 由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 创建&#xff0c;它以 HTML、CSS 和 JavaScript 为基…

【uniapp】uniapp基本介绍

目录 介绍体验uni-app优势功能框架图 uni-app组成和跨端原理基本语言和开发规范 编译器运行时&#xff08;runtime&#xff09;uni-app runtime包括3部分&#xff1a;基础框架、组件、API基础框架&#xff1a;组件&#xff1a;组件的扩展&#xff1a; API&#xff1a; 逻辑层和…

vue2的方法与监听

vue2的方法 不可以使用箭头函数 <template> <div><div>{{sum2()}}</div><button click"add">add</button> </div></template><script> export default {data(){return{name:"张三",num:20,num2:3…

基于形态学滤波的心电信号ECG处理(MATLAB 2021B)

数学形态学简称形态学&#xff0c;在数学意义上&#xff0c;其基于集合理论、积分几何和网格代数&#xff0c;是一门严格建立在数学基础之上的学科&#xff0c;着重用来研究图像的几何结构和形状&#xff0c;因而称之为形态学。其基本思想是用结构元素对待分析图像进行“探测”…

机器人回调接口完善

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 免责声明&#xff1a;该工具仅供学习使用&#xff0c;禁止使用该工具从事违法活动&#xff0c;否则永久拉黑封禁账号&#xff01;&#xff01;&#xff01;本人不对任何工具的使用负责&am…

计算机类主题会议推荐之——ACAIB 2024

【北方民族大学40 周年校庆学术活动】 第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024) 2024年6月7-9日 中国银川 往届均已见刊检索 EI、SCOPUS双检索 基本信息 会议官网&#xff1a;www.acaib.org 最终截稿时间&#xff1a;2024年6月3日晚23&#xff1a;…

Mac 电脑给android手机传输文件提示 No android device found

在开发过程中&#xff0c;我们有时候会有在电脑和手机之间传输文件的需求。 Mac电脑给android手机传输文件并不是很方便。 Google 官方提供了一个软件叫Android File Transfer&#xff0c;这个软件免费且好用。 Android File Transfer下载地址 但是使用过程中会遇到一些问题…