网络拥塞控制,对越远的流量越宽容

news2024/9/29 7:22:50

考虑下面的网络传输场景:
在这里插入图片描述
S1,S2,S3,S4 向 D 方向发送,R4 发生拥塞。R4 必须丢弃一些数据进行疏导反馈拥塞信号,否则谁也过不去。
优先丢掉离得最近的 S4 的数据,其次依次丢 S3,S2,S1。依据是 S1 已经走这么远了,丢掉 S1 流量的话,R1,R2,R3 的工作就浪费了,趁着 R4 刚上路,就丢 R4,此外,S4 距离 R4 最近,丢包反馈可更快到达,更快缓解拥塞。

以上是午饭后想到的。引申一下,可以根据 IP 头的 TTL 字段指示丢包决策,TTL 越大,丢包概率越大。

每经一跳转发,即经一次收敛,“收敛” 度量和其它流量共享带宽的程度。收敛次数越多,统计平均来看,特定一条流的占比越小,虽占比小拥有更大加速比,但获得的更大加速比被逐跳稀释。同时,每一跳拥塞是 “or” 关系,经由跳数越多,经历拥塞概率越大,显然这是一个漏桶。

综上,流量源越远,转发至此成本越高,丢弃后对全链路资源越浪费,但越远的流量属强弩之末,抢占力越差,对当前节点拥塞贡献越小。
在这里插入图片描述

策略显然是:丢包越早越好,拥塞通知越远越好,通知强度越近越低,因为缓解不了还能丢包。

  • 必须丢包时,丢掉始发站至此距离最近的报文。
  • 按照始发站至此由远而近强度递减通告 ECN。

尽量让已经被转发了很远的报文安全通过,否则前面的逐跳转发能耗就浪费了。对来自越远方的流量越宽容,给它们强烈 ECN 压力但尽量不丢弃,反之,对离得越近的流量越严格,ECN 压力不大,ECN 无效后则用丢包来提示拥塞,反正丢了对整体资源浪费也不大,对于这些距离拥塞源近的不幸流量,优先丢弃刚刚上路的报文,将拥塞尽量抑制在离源头近的地方意味着及时止损,不可惜,整体上能耗有效利用率反而较好。

在具体实践上,还可以让反向流量捎带 ECN。意思是用五元组倒置查询反向队列,命中后将 ECN 打入这些报文,可以加快 sender 感知,又不增加额外源抑制流量。

回到最初的午休图,虽合理,但凭什么丢 S4 的流量,这不公道。

看起来 S1~S4 都平等地向 D 的方向发数据,且拥塞看起来是 S1~S3 的汇聚流量导致,凭什么丢无辜的 S4。

首先,从技术上讲,不能无条件按 TTL 丢包,TTL 丢包应是级联的最后一个策略,在此之前应该先按流量加权公平排队以及其它可能的更公平排队规则。

其次,假设已经完成加权公平排队,如果 S4 流量 > S1,S2,or S3 流量,那理应丢 S4 流量,而上述衰减法则使 S4 流量 < S1,S2,or S3 流量概率极低,若发生,在 TTL 丢包前应发现,TTL 丢包的意义在于,如果 S1,S2,S3,S4 流量均匀相等,丢 S4 是有意义的。

并非对 S4 不公平,只能说 S4 很不幸,拥塞在 R4 已经发生,必须取舍,只能牺牲 S4,这样对全局能效最佳。拥塞控制作为一个整体,必须看全局意义。

上周末写过一些想法。去中心分布式网络本质上是有损的,丢包必存在,除端到端算法需高效且收敛,网络对丢包的决策也要在全局上保持高效。

文初场景,你可能觉得岂不是便宜了 S1?非也!如果 S1 有意激进发送,拥塞点大概率转移到 R1,按照相同的策略,被丢弃的就是 S1 的流量了。这策略足够公平且它本身就是个紧箍咒反馈环,所以别作恶。

值得一提的是,对于 capacity-seeking protocol,单跳 buffer 场景经过了普遍的分析和论证,但对于级联 buffer,N’ = N * T / (T + N) < N 逐级衰减将损害这些 protocol 的 probe 行为的公平性,比如 AIMD 的 AI 例程和 BBR 的 probeup 例程,而 TTL -based 丢包将缓解这种不公。

本文上述 TTL 并不单指 IP 的 TTL,vxlan 内可携带,自定义协议也可携带,大致只是借用 TTL 这个概念说个意思,此外,上述 ECN 也并不单指 TCP/IP 的 ECN,大致只是借这个概念说个主动拥塞通知的意思。

总结一下本文要旨,当损失只涉及单条流时,比如拥塞排队,那就排着吧,一旦损失涉及到他者,比如其它公共设施,就要全局考虑,让损失最小化,比方说不能造成其它公共设施由于做无用功而浪费资源。

还是现实中的例子。

医院挂号看病如果能照这个策略实施就好了,如果截止最后时间还剩下几个号,优先给远路过来看病的,因为来一趟太麻烦了,如果不这么做,难免会对公共设施造成不必要的消耗,如果病人返回家,来回这一趟就白跑了,这是对能源的损耗,如果病人选择住宿,就要占位置,也是对公共资源的消耗。距离医院近的,大不了第二天再来,也方便。

超市的情况看起来和 TTL 丢包策略相反,但其实类似,超市有小件物品快捷结账通道,越是路远的买的东西越多,越要排队,但排队是有平均排队时间的,和超市关门不一样。如果超市到了关门时间,往往会关闭小件快捷通道,分流大件物品排队,还是要照顾远道而来的,至于买小件的,不想排队,出门去便利店买也一样,虽然贵,但买的不多,也贵不到哪里。

拥塞控制的目标不是为了提高效率,而是为了最小代价止损,因为拥塞本身已经是损失了。在分布式网络中,网络比端到端连接更具有全局视角,做出的决策对止损更加有益。

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

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

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

相关文章

051:cesium加载mapbox的多种Style形式地图

第051个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载mapbox的多种Style形式地图,包括dark-v11,streets-v12,navigation-night-v1,outdoors-v12,satellite-v9,satellite-streets-v12,light-v10。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实…

如何让心情保持平静?100多条禅修心法

静的层次和阶段 静首先是不要去争&#xff0c;没有任何争的心&#xff0c;没有任何杂念心。静有几个层次阶段&#xff1a; ⒈. 自己的心情相对于自己平静&#xff0c;是平静的第一个阶段。 ⒉. 第二个平静的阶段是&#xff1a;别人觉得你很静&#xff0c;自己也很静&#xf…

ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍1. 源由2. 了解&阅读2.1 ArduPilot历史2.2 关于GPLv32.3 ArduPilot系统组成2.4 ArduPilot代码结构3. 后续4. 参考资料ArduPilot是一个可信赖的自动驾驶系统&#xff0c;为人们带来便利。为此&#xff0c;提供了一套全面的工具&#xff0c;几…

人人看得懂的AI教程

人人看得懂的AI教程&#xff0c;从0开始入门AI教程&#xff0c;一步一步AI&#xff0c;人工智能学习笔记 现在写书真的方便&#xff0c;闲来无事写了本从0开始学AI的书籍&#xff0c;哈哈 一、基础知识 1.1 人工智能概览 1.2 机器学习 1.3 深度学习 1.4 数据科学 二、编程知…

Stable Diffusion - API和微服务开发

Stable Diffusion 是一种尖端的开源工具&#xff0c;用于从文本生成图像。 Stable Diffusion Web UI 通过 API 和交互式 UI 打开了许多这些功能。 我们将首先介绍如何使用此 API&#xff0c;然后设置一个示例&#xff0c;将其用作隐私保护微服务以从图像中删除人物。 推荐&…

CoreDNS 性能优化

CoreDNS 作为 Kubernetes 集群的域名解析组件&#xff0c;如果性能不够可能会影响业务&#xff0c;本文介绍几种 CoreDNS 的性能优化手段。合理控制 CoreDNS 副本数考虑以下几种方式:根据集群规模预估 coredns 需要的副本数&#xff0c;直接调整 coredns deployment 的副本数:k…

总结下Spring boot异步执行逻辑的几种方式

文章目录概念实现方式Thread说明Async注解说明线程池CompletableFuture&#xff08;Future及FutureTask&#xff09;创建CompletableFuture异步执行消息队列概念 异步执行模式&#xff1a;是指语句在异步执行模式下&#xff0c;各语句执行结束的顺序与语句执行开始的顺序并不一…

【高项】项目人力资源管理,沟通管理与干系人管理(十大管理)

【高项】项目人力资源管理&#xff0c;沟通管理与干系人管理&#xff08;十大管理&#xff09; 文章目录1、人力资源管理1.1 什么是人力资源管理&#xff1f;1.2 如何进行人力资源管理&#xff1f;&#xff08;过程&#xff09;1.3 人力资源管理工具1.4 人力资源管理文件2、沟通…

自动驾驶BEV感知系列算法整理总结

序论 之前一直做的lidar感知&#xff0c;现在感觉大趋势是多传感器融合&#xff0c;所以博主也在向BEV下的融合框架学习&#xff0c;希望大家后面可以多多交流&#xff0c;下面会分为两类进行介绍&#xff0c;后期的文章会在下面两类中以小标题的形式出现&#xff0c;BEV下的两…

《推荐PlumGPT:一款优秀的聊天机器人》

PlumGPT是一款仿照ChatGPT的聊天机器人&#xff0c;它使用了最先进的自然语言处理技术来实现人机交互。PlumGPT不仅能够进行普通的对话&#xff0c;还可以回答各种问题&#xff0c;提供各种建议和信息。它能够对不同的话题做出详细的回答&#xff0c;例如科技、健康、娱乐、新闻…

[element]element-ui框架下载

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&#xff0c;一同进步&#x1f601;…

线程同步与互斥【Linux】

文章目录1. 引入2. 前导概念2.1 同步与异步2.2 互斥与并发2.3 原子性操作2.4 临界资源和临界区临界资源临界区如何管理3. 互斥锁3.1 引入3.2 概念3.3 示例pthread_mutex函数家族用法全局锁局部锁3.4 性能损耗3.5 串行执行3.6 补充4. 互斥锁的实现原理4.1 线程的执行和阻塞4.2 自…

Java虚拟机对象

对象的创建 当虚拟机遇到一条字节码new指令时&#xff0c;首先检查指令的参数能否在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化&#xff0c;如果没有就先执行类加载过程。 在类加载检查完毕后&#xff0c;就要对这个…

常见的7种软件规模估算方法 优劣势比较

业内主要的软件规模估算方法&#xff1a;LOC估算方法、故事点估算法、FPA功能点估算方法、COSMIC功能点估算方法、快速功能点估算方法、IFPUG功能点估算方法和自动化功能点估算方法。 1、LOC估算方法 LOC是源代码的总行数。通过统计源代码中的行数&#xff0c;来估算软件规模。…

Spring项目的创建和使用

Spring&#xff1a;Spring是一个包含众多工具方法的IoC容器&#xff1b; Spring的核心功能&#xff1a; 将对象&#xff08;俗称Bean&#xff09;存储到Sping容器中从容器中取出对象目录 一&#xff0c;创建Spring项目 1&#xff0c;创建一个Maven项目 2&#xff0c;添加Spri…

[STL]string的使用+模拟实现

[STL]string的使用模拟实现 文章目录[STL]string的使用模拟实现一、STL1.什么是STL2.如何学习STL二、string1.string类的介绍2.string的常用接口string的构造string的迭代器string的容量操作string的访问string的修改string的其他接口string的非成员函数接口三、string的模拟实…

Node【七】初识Express框架

文章目录&#x1f31f;前言&#x1f31f;Express框架&#x1f31f;1.什么是框架&#x1f31f;2.express安装&#x1f31f;3.创建web服务基本遵循之前的四个步骤&#xff1a;&#x1f31f;4.路由&#x1f31f; 由 &#xff1a;请求方式请求路径&#xff08;1&#xff09;get发送…

JAVA+SQL离散数学题库管理系统的设计与开发

题库、试卷建设是教学活动的重要组成部分&#xff0c;传统手工编制的试卷经常出现内容雷同、知识点不合理以及笔误、印刷错误等情况。为了实现离散数学题库管理的信息化而开发了离散数学题库管理系统。 该系统采用C/S 模式&#xff0c;前台采用JAVA&#xff08;JBuilder2006&am…

面试官:自动化测试都没弄明白,你怎么敢来面试的?

最近看了很多简历&#xff0c;很多候选人年限不小&#xff0c;但是做的都是一些非常传统的项目&#xff0c;想着也不能通过简历就直接否定一个人&#xff0c;何况现在大环境越来 越难&#xff0c;大家找工作也不容易&#xff0c;于是就打算见一见。 在沟通中发现&#xff0c;由…

全国青少年信息素养大赛图形化编程初赛·模拟二卷,含答案解析

全国青少年电子信息智能创新大赛 图形化编程选做题模拟二卷 一、单选题 1. 下图中的程序执行一次之后,“我的变量”最终的值是?( ) A、0或者1 B、true或者false C、包含或者不包含 D、成立或者不成立