“对待端到端传输,信息不足就要少干预,越干预越糟糕”,这是我的信条,这次再来说说 MPTCP。

Linux 内核 MPTCP 最好的调度算法就是 default 算法,没有之一,因为它以代价最小,最自然的方式做到了保序和聚合:

  • 按最小 rtt 调度 next,确保多条 subflow 按序到达;
  • 最小 rtt subflow 不断填充至非最小 rtt,回到 1,开始 roundrobin 聚合;
  • 始终保持最小 rtt 的 subflow 将自然放弃聚合 subflow,说明数据量不足;
  • 最小 rtt 调度,只要时间足够久,一定能稳定到最优状态,其它任何算法都能归结为最小 rtt 调度的

不同场景,只是为照顾某些特征,使用一些额外推算的信息优化局部指标,但在本质上,rtt 是唯一的输入信息,即便如此,仍需要对其平滑,以 srtt 算。

其它任何信息,注入实时吞吐的计算,rtt 梯度等均是二手信息,且属于高阶二手信息,而信息只有单方向作用力,一旦误判将会加倍抵消已获得的微弱收益。例如,本身 srtt 即加工信息,使用它做输入获得的任何新信息均属于高阶二手信息,风险极大。

大量论文上展示的花哨算法之所以中看不中用,恰在于它们假设高阶二手信息均是可信的,而在特定的仿真环境,它们确实可信,因为环境是可控的,而非实际现网随机的复杂自适应环境,甚至不携带最简单的统计复用特征。

我也玩过花活,提出笨鸟先飞的策略,先发送缓冲区后半部到 rtt 最大的 subflow,实属与最小 rtt 调度反着来,但多笨的鸟先飞多久马上浮现,循着这思路,同时坚守 “不使用高阶二手信息” 的原则,最终就走向了分 block,彻底解耦各 subflow 序列关联,最后把问题推给 buffer 管理,buffer 属空间维度,与最小 rtt 正交,看起来相互不犯也和谐。

空间策略与时间策略不同的是 buffer 管理得先有足够数据才能被调度,不是所有流都能随时产生足够多的数据,而时间流逝却不止,遵循文初描述的三点即可,这么看来,我的花活的适应性还是不如最小 rtt 调度。

在更一般的范畴,时间一直均匀流逝,时间维度的策略比空间维度的策略更加能适应几乎所有场景,而空间维度的策略更适用于单独追求高性能的场景,而性能等效于时间的倒数,用空间换时间自然而然,但空间策略的适应性更弱,统观全局,若要生存,若要展开,适应性要比高性能更重要,这又是一个辩证。

续喷 MPTCP,在于我要澄清另一个原则,“非技术经理不要追求技术指标,而要追求体验,QoE”。
一个商务经理(很多商务经理总强调自己以前搞过技术,估计是怕被忽悠,商务就商务,装什么懂技术)整天追 “MPTCP 的聚合效率” 是一种什么体验,比如他非要将 1Mpbs 和 100Mbps 聚合成 101Mbps,结果聚合结果只有 50Mbps,比不聚合还要差,到底谁错了?在我看来,我得告诉他正确结果不是 101Mbps,而是 100.373Mbps,我还要强调我是算出来的,真 TM 想扇他。

谁也没错,边界乱了。从一开始就不该让经理知道 “带宽”,“带宽聚合” 等名词,他们应该知道的是 “卡顿”。否则很容易陷入 “为聚合而聚合” 的陷阱,最终工人们会想花活来应对技术指标要求,弄巧成拙,比如要聚合 rtt = 1ms,300ms 路径,为 rtt = 1ms 的那条主动增加 300ms,结果却严重损害了体验。

做 TCP 优化时曾遇到过一位经理,嫌 srtt 抖动,要我们周内消除 srtt 抖动,经理以为这是个很难的工作,但对我们太简单了,把 srtt 历史权重提高到 0.95,经理的问题就解决了。如果经理不知道 rtt 这个概念,我们本想利用那周剩下的几天挑选长尾噪点做针对性优化。第二周经理发现 srtt 抖动降低了,吞吐还是不行,我怕他是不是又要折腾幺蛾子,果断请假,利用休假完成了我那经典的 1000 个 if 分支。

经理不应该学习技术,技术因果和管理因果完全不同,后者的对象是不讲内禀的。坚信 rtt 抖动消除了性能就提升比坚信加班就能完成工作更天真,因为 rtt 抖动是内禀的,而加班或许真的能完成工作,虽然大多数情况下不能。

说回 MPTCP。MPTCP 聚合路由器的意义是聚合不同运营商不同代系的带宽,平滑波动,使得在各种代系以及运营商覆盖率的场景下都能提供稳定高速的带宽,其中高速并非重点,由于各运营商地域覆盖率并不重叠,聚合路由器平滑差异,稳定少断网才是关键。

在技术层面,多路径是多路径,聚合是聚合,二者没什么太值得一提的关联,多路径算是未来传输技术的趋势,特别是未来摩尔定律失效后的高速传输领域,而聚合只是过渡技术,要聚合说明不够,够了就不需要聚合了。

喷 TCP,喷 BBR,喷 MPTCP,根本上还是看不惯有人不懂,怒其不争。

最后,做道题目:

一根长度为 L,截面积为 S 的厚橡皮水管,两个端点分别为 A,B,从 A 端注水,B 端出水时可充满截面积 S,假设在距离 A 端 x 处的水管上开一个面积为 y 的口漏水,若此时仍要 B 端出水时可充满截面积 S,对 A 端注水应该有何要求,从检测到漏口,A 端需要执行该要求多久,B 端才能重新充满截面积 S,与 x,y 的关系是什么?

然后用它来对带宽聚合建模。

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

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

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

相关文章

“开源AI智能名片链动2+1模式S2B2C商城小程序”在直播公屏引流中的应用与效果

摘要:本文聚焦于直播公屏引流场景,探讨“开源AI智能名片链动21模式S2B2C商城小程序”如何通过技术赋能与模式创新,重构直播电商的流量获取与转化路径。研究结合案例分析与实证数据,揭示该方案在提升用户互动、优化供应链管理、降低…

基于大数据挖掘的药品不良反应知识整合与利用研究

标题:基于大数据挖掘的药品不良反应知识整合与利用研究内容:1.摘要 随着医疗数据的爆炸式增长,大数据挖掘技术在医疗领域的应用日益广泛。本研究旨在利用大数据挖掘技术对药品不良反应知识进行整合与利用,以提高药品安全性监测和管理水平。通过收集多源异…

国产时序数据库选型指南-从大数据视角看透的价值

摘要:大数据时代时序数据库崛起,工业物联网场景下每秒百万级数据点写入成为常态。Apache IoTDB凭借单节点1000万点/秒的写入性能、毫秒级查询响应和20:1超高压缩比脱颖而出,其树形数据模型完美适配工业设备层级结构。相比传统数据库&#xff…

教你使用服务器如何搭建数据库

数据库是存储和管理数据的核心组件,无论是网站、应用还是企业系统,都离不开数据库的支持。本文将以 莱卡云服务器 为例,教你如何快速搭建常用数据库服务。一、准备工作服务器环境推荐操作系统:Ubuntu 20.04 / Debian 11 / CentOS …

西门子 S7-200 SMART PLC 核心指令详解:从移位、上升沿和比较指令到流水灯控制程序实战

对于 PLC 初学者来说,“流水灯” 是绕不开的经典入门案例 —— 它看似简单,却浓缩了 PLC 编程的核心逻辑:初始化、时序控制、指令应用与状态判断。今天我们就以 S7-200 SMART 为例,逐行拆解一段 8 位流水灯控制程序,带…

P4342 [IOI 1998] Polygon -普及+/提高

P4342 [IOI 1998] Polygon 题目描述 题目可能有些许修改,但大意一致。 Polygon 是一个玩家在一个有 nnn 个顶点的多边形上玩的游戏,如图所示,其中 n4n 4n4。每个顶点用整数标记,每个边用符号 (加)或符号 *…

枚举算法和排序算法能力测试

枚举算法题目 1&#xff1a;找出 1-20 中既是偶数又是 3 的倍数的数题目描述&#xff1a;小明想找出 1 到 20 中既能被 2 整除又能被 3 整除的数字&#xff0c;帮他列出来吧。 代码&#xff1a;cpp运行#include <iostream> using namespace std; int main() {int a;for (…

大数据电商流量分析项目实战:Hadoop初认识+ HA环境搭建(二)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/…

【Linux】Linux进程概念(上)

一、冯诺依曼体系结构我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器。它们大部分都遵守冯诺依曼体系。截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一个个硬件组件组成。输入单元&#xff1a;键盘、鼠标、扫描仪、写板等中央处…

GESP C++ 一~二级拓展课(一)

课题及解析建议用时60分钟&#xff0c;作业及讲解建议用时50分钟。 课题及解析&#xff1a; 4003&#xff1a;【GESP2303二级】画三角形 【题目描述】 输入一个正整数 n&#xff0c;请使用大写字母拼成一个这样的三角形图案&#xff08;参考样例输入输出&#xff09;&#xff…

Kubernetes Ingress:使用 Apache APISIX 进行外部流量路由

什么是 Ingress&#xff1f; 在 Kubernetes 中&#xff0c;随着微服务架构的广泛应用&#xff0c;集群中的服务需要暴露到外部&#xff0c;以便供用户或其他服务访问。如何高效、安全地管理这些流量&#xff0c;成为了一个重要的议题。Ingress 作为 Kubernetes 提供的一种资源&…

Elasticsearch的理解与使用

在大数据与云计算时代&#xff0c;“高效检索” 与 “实时分析” 成为业务突破的关键能力。Elasticsearch&#xff08;简称 ES&#xff09;作为一款开源分布式搜索与分析引擎&#xff0c;凭借其低延迟、高可扩、强灵活的特性&#xff0c;已成为日志分析、全文检索、业务监控等场…

利用FFmpeg自动批量处理m4s文件

缓存了一些视频m4s文件&#xff0c;只能用指定的软件打开&#xff0c;网上查了一下&#xff0c;需要去掉m4s文件开头的9个0&#xff0c;还要用FFmpeg将两个文件合并成一个文件。 经仔细研究缓存目录和其中文件&#xff0c;发现以下特点&#xff1a;“缓存目录”中有很多“数字文…

MLLM学习~M3-Agent Prompt学习

Prompt “输入→处理→输出→评估” 全流程 Prompt 并非孤立存在&#xff0c;形成了完整的视频理解链路&#xff1a; 视频原始数据&#xff08;语音 / 图像&#xff09;→ 模块 1&#xff08;提取语音 绑定人物 ID&#xff09;→ 模块 2&#xff08;生成情景记忆描述&#xff…

Ubuntu 20.04安装显卡驱动、CUDA、Miniconda和Pytorch(2025.06最新)-Ubuntu从零搭建深度学习环境

文章目录一、安装显卡驱动1.1 查看显卡型号1.2 根据显卡型号选择驱动1.3 获取下载链接1.4 查看下载的显卡驱动安装文件1.5 更新软件列表和安装必要软件、依赖1.6 卸载原有驱动1.7 禁用默认驱动1.8 安装lightdm显示管理器1.9 停止显示服务器1.10 在文本界面中&#xff0c;禁用X-…

PyCharm 连接 AutoDL 远程服务器

实验室的电脑性能不行了&#xff0c;所以想着租一台服务器&#xff0c;然后还想使用PyCharm在本地编程&#xff0c;因此就查找相关资料&#xff0c;这里记录一下配置过程&#xff0c;方便以后查阅。 PyCharm 连接 AutoDL 远程服务器PyCharm 连接服务器上传数据集到服务器运行代…

Spark广播变量HttpBroadcast和TorrentBroadcast对比

HttpBroadcast会在driver端的BlockManager里面存储广播变量对象&#xff0c;并且将该广播变量序列化写入文件中去。所有获取广播数据请求都在driver端&#xff0c;所以存在单点故障和网络IO性能问题。 TorrentBroadcast会在driver端的BlockManager里面存储广播变量对象&#xf…

新手向:C语言、Java、Python 的选择与未来指南

语言即工具&#xff0c;选对方向比埋头苦学更重要你好&#xff0c;编程世界的新朋友&#xff01;当你第一次踏入代码的宇宙&#xff0c;面对形形色色的编程语言&#xff0c;是否感到眼花缭乱&#xff1f;今天我们就来聊聊最主流的三种编程语言——C语言、Java 和 Python——它们…

收集飞花令碎片——C语言关键字typedef

在C语言的指针章节中&#xff0c;我们讲到函数指针模块 在函数指针中&#xff0c;有一个重要的关键字&#xff1a;typedef typedef关键字作用基本语法重难点&#xff1a;对数组指针与函数指针的重命名数组指针重命名一维数组指针重命名遍历二维数组函数指针重命名作用 typedef是…

基于Spring Boot的家政服务管理系统+论文示例参考

1.项目介绍 系统角色&#xff1a;管理员、家政服务、服务人员功能模块&#xff1a;用户管理、服务人员、服务类型、家政服务、服务预约、接单信息、服务记录、评价信息、反馈投诉等技术选型&#xff1a;SpringBoot&#xff0c;Vue等测试环境&#xff1a;idea2024&#xff0c;jd…