可恶的 TCP 加速

news2024/12/23 14:17:08

中午有朋友给我发来一个图片,早期 TCP 规范起草人,david reed 老爷子气坏了:
在这里插入图片描述

互联网本是一个以合作而共赢的网络,结果被一群损人不利己的自私的家伙以无知的方式将这基本原则破坏掉了。
我没有能力如此言简意赅且优雅地喷(jerks,stupid super typical 在我老家就是实傻逼的意思),但我确实早有此意,不过遗憾的是,我自己就是干这个的。
我不准备详细谈这个项目本身以免跑题,而这个跑题的代价显然是巨大的。我只谈技术本身而不染技术之于。
我在 歇斯底里 的中文文档中找一个形而上,但理性针对保持带宽行为的辩护。用以丢包率为公比的等比数列求出在丢包场景下的可靠传输一共需要发生多少数据:
在这里插入图片描述

1 / (1 - r) 是弥补丢包的固有损耗比,标称 rate 乘以损耗比就是保住带宽所需要的实际发送速率:
rate = rate * 1 / (1 - r)
最终 cwnd 就是根据这个算出来的:
cwnd = rate * rtt * gain
好家伙,还乘了一个 > 1 的 gain。
有了这个依据,作者给了一个形而上解释,看起来还很合理:
在这里插入图片描述

典型的加塞有理,嫌路不够宽。
总之,一切责任在运营商,特别最后一段,我和运营商的合同里签约了一个速率,但运营商没有兑现,我自己有办法,我没错。貌似是这个理,有点儿意思。
有趣的是,上面的截图只在中文文档里有,英文文档里没这部分(不需要?遗漏了?怕争议?),朋友想让我翻译一下发给 david reed 老爷子,我还真有这想法,但老爷子毕竟年纪大了,生气不好。
先摆立场,讨论才有意义,站在私人立场,截图里说的全对,但作者为啥还要解释,解释给谁听呢?两类受众,一类是全局视角的徘徊者,一类是受害者,我抢你也抢,大家一起把互联网堵死就完了。我当然不希望互联网堵死,虽然我也知道竞速抢带宽也不会堵死互联网(这种把戏我也经常用),但我仍站全局立场,否则就不用写这篇了,直接点个赞,加个五角星多好。
开车的都特别烦在高速上乱窜的傻逼,虽然 3 车道甚至 5 车道上多你一辆车不多,少你一辆车不少,但你乱窜万一怼死活该跟别人也没关系,堵了路就是你的错了。你还把你作死的经验一本正经布道,把不懂的当傻逼,这就是实傻逼了。
一开始的等比数列就错了,网络不是一根老化的漏水管,固定漏定量的水,相反,它是一根豪华崭新容量有限但绝对不漏的好水管。高速公路事故 99.9% 不是路面不整引发的,网络丢包超大概率是由拥塞引起。
和信道 “漏水” 丢包不同,拥塞丢包是正反馈,参考 codel 算法,拥塞时,发送越快,丢包越多,分分钟教你做人,立正挨打。如果你发现真能从等比数列受益,感谢统计复用吧,突发缓解,解放的是你,人人为你,你却咋就光想着自己呢。
稍微符合的模型是个类调和数列,总发送量比等比数列大很多,这意味着巨大的代价,所以还是要感谢突发。
要问这个 tcp-brutal 到底是个啥,简单一句话,它是个 “对抗丢包保带宽,不做拥塞控制的拥塞控制算法”。上面公式,rate 是你和运营商的签约带宽,r 是你用错误方式探测到实时丢包率,你要用 rate * 1 / (1 - r) 的速率发送而保住带宽。就像你在限速 120 的高速上,无论车多车少都要跑 120 一样,只是报文可以重传,人可不会。
好家伙,我曾说过,最快的方式就是不做拥塞控制,显然,保带宽的 tcp-brutal 就是一例,如果没效果纯属有 bug。
拜托!请了解一下什么叫统计复用,统计复用本身就包含了弹性超卖,运营商给你签约的是统计速率,但绝不是实时速率。但总有大部分人想不通这个底层逻辑。
交换机出口物理带宽 10Gbps,运营商服务签约带宽 1Gbps,这个交换机出口就只能服务 10 个人,每个用户在任何时刻均可保证使用 1Gbps,不多也不少,是这样吗?如果不是,某用户某时刻突发 5Gbps,其它 9 个用户还能兑现每人 1Gbps 吗?显然不能,但如果他们非要兑现,会发生什么?自己想。
遭遇突发,最佳博弈均衡就是集体慢,寡而均。骨干网看流数量,边缘网看单流量,多了才有统计意义,没有统计意义只能自损八百搏一千,上面看着呢,结果还是不患寡而患不均。
你又要说了,网络就是慢,我有办法为啥还不能用了。确实是运营商的问题,你应该花更多钱买更高质量的服务,这样对谁都好,你花钱买服务是交易,不必以损害全局公平性为代价。你想更快到深圳,坐飞机,坐高铁啊,开着你那破宝马奥迪特斯拉作死就不对了,你快了,别人躲着你就慢了,别人不躲着你,你俩都死了。
多说多少该不懂的还是要一意孤行,上有国内各互联网大厂 CDN 加速传输优化团队 KPI,下有个人小作坊魔改,各种一键加速满天飞,虽然这里面大多数人我都认识,关系也还不错,但背地里该喷他们还得喷。
浙江温州皮鞋湿,下雨进水不会胖。

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

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

相关文章

muduo源码剖析之TcpClient客户端类

简介 muduo用TcpClient发起连接,TcpClient有一个Connector连接器,TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction,连接建立成功后设置相应的回调函数…

MongoDB副本集特点验证

MongoDB副本集特点验证 mogodb副本集概述副本集搭建副本集结构验证结果源码地址 mogodb副本集概述 MongoDB副本集是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证…

第一章:IDEA使用介绍

系列文章目录 文章目录 系列文章目录前言一、IDEA 的使用1.1 IDEA 工作界面1.2 IDEA 的基本介绍和使用1.3 IDEA 使用技巧和经验1.4 IDEA编译与源文件1.5 IDEA 常用快捷键1.6 IDEA模板/自定义模板 总结 前言 IDEA 全称 IntelliJ IDEA,在业界被公认为最好的 Java 开发…

经验模态分解(Empirical Mode Decomposition,EMD)(附代码)

代码原理 EMD(Empirical Mode Decomposition),也称为经验模态分解,是一种将非线性和非平稳信号分解成多个本征模态函数(Intrinsic Mode Functions,简称IMF)的方法。 EMD的基本原理是通过一系列…

算法进阶指南图论 道路与航线

其实再次看这题的时候。想法就是和强连通分量有关,我们很容易发现,题目中所说的双向边,就构成了一个强连通分量,而所谓的单向边,则相当于把强连通分量进行缩点,然后整个图成为了一个DAG,众所周知…

把自己本地项目发布到Gitee

目录 1.准备工作 ​2.gitee创建仓库 3.本地上传代码 4.验证​ 1.准备工作 本地安装了git,公钥私钥都配置好了 2.gitee创建仓库 创建仓库,没有仓库放不了代码 只需要选择分支类型,和带星号的 进入下一页 点这个 3.本地上传代码 新建一…

vivado时序分析-1

AMD Vivado ™ 集成设计环境 (IDE) 提供了多项报告命令 , 用于验证设计是否满足所有时序约束 , 以及是否准备好加载到应用开发板上。“Report Timing Summary ” ( 时序汇总报告 ) 属于时序验收报告 , 等同于 ISE De…

链表OJ题(1)

今天讲解两道链表OJ题目。 1.链表的中间节点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个…

1214. 波动数列

题目&#xff1a; 1214. 波动数列 - AcWing题库 思路&#xff1a;dp dp划分递归 转自&#xff1a; AcWing 1214. 波动数列&#xff08;有公式详细推导&#xff09; - AcWing 代码&#xff1a; #include <iostream> #include <cstring> #include <algori…

Java学习 8.Java-递归

一、递归的概念 引例&#xff1a; 一个方法在执行过程中调用自身&#xff0c;就称为递归&#xff08;函数自己调用自己&#xff09; 递归相当于数学的数学归纳法&#xff0c;有一个起始条件&#xff0c;有一个递推公式 递归的必要条件 1.将原问题划分为子问题&#xff0c;…

介绍两个好用又好玩的大模型工具

先让数字人跟大家打个招呼吧。 我的AI数字人会手语了 发现没&#xff0c;我的数字人本周又学了一个新技能&#xff1a;手语。 这些数字人都是通过AI生成的。 但数字人不是今天的主题&#xff0c;今天要跟大家聊聊大模型。 自从大模型出现后&#xff0c;很多人&#xff08;包…

2022年接口测试总结【温故知新系列】

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

Centos批量删除系统重复进程

原创作者&#xff1a;运维工程师 谢晋 Centos批量删除系统重复进程 客户一台CENTOS 7系统负载高&#xff0c;top查看有很多sh的进程&#xff0c;输入命令top -c查看可以看到对应的进程命令是/bin/bash     经分析后发现是因为该脚本执行时间太长&#xff0c;导致后续执…

机器学习——奇异值分解案例(图片压缩未开始)

本想大迈步进入前馈神经网络 但是…唉…瞅了几眼&#xff0c;头晕 然后想到之前梳理的奇异值分解、主成分分析、CBOW都没有实战 如果没有实际操作&#xff0c;会有一种浮在云端的虚无感 但是如果要实际操作&#xff0c;我又不想直接调用库包 可是…如果不直接调包&#xff0c;感…

【深度学习】可交互讲解图神经网络GNN

在正式开始前&#xff0c;先找准图神经网络GNN(Graph Neural Network)的位置。 图神经网络GNN是深度学习的一个分支。 深度学习的四个分支对应了四种常见的数据格式&#xff0c;前馈神经网络FNN处理表格数据&#xff0c;表格数据可以是特征向量&#xff0c;卷积神经网络CNN处理…

基于SSM的楼房销售系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

腾讯蒋杰:坚持用技术服务应用,腾讯混元大模型已接入180多个业务

“腾讯正在持续探索大模型应用场景&#xff0c;目前内部超180项业务已经接入腾讯混元大模型进行内测”&#xff0c;11月9日&#xff0c;腾讯集团副总裁蒋杰在2023年世界互联网大会乌镇峰会上表示。 腾讯集团副总裁 蒋杰 作为腾讯全链路自研的实用级大模型&#xff0c;自2023年…

软件测试工程师的分支有哪些?

各行各业都有很多分支&#xff0c;软件测试的细分领域又有哪些呢&#xff1f; 拆解来说&#xff1a; 功能测试的渠道有&#xff0c;app&#xff0c;小程序&#xff0c;web/h5。其中app和web要考虑兼容性。app需要考虑安卓&#xff0c;鸿蒙&#xff0c;ios这三个系统&#xff0…

使用xlwings获取excel表的行和列以及指定单元格的值

import xlwings as xw app xw.App(visibleFalse) # 隐藏Excel wb app.books.open(文档1.xlsx) # 打开工作簿sht wb.sheets[Sheet1] # 实例化工作表1#获取行数和列数 rows_countsht.range(1, 1).expand().shape[0] cols_countsht.range(1, 1).expand().shape[1] print(row…

设计模式JAVA

1 创建型 如何合理的创建对象&#xff1f; 1.1 单例模式 字面意思就是只能创建一个对象实例时使用。 例如&#xff0c;Windows中只能打开一个任务管理器&#xff0c;这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费&#xff0c;或出现各个窗口显示内容的不一致等…