有趣的 TCP 抢带宽行为

news2025/1/16 4:03:25

昨天发了一篇 非技术文章,很多人找我讨论,浓缩成一句话,就是 “死道友而不死贫道”,我的简历上写着这些把戏能带来什么,我的 blog 上写着这么做是多么无耻,哈哈。
看看共享链路上如何挤占带宽:
在这里插入图片描述

如果 B 倔强地也要保住自己在 start 点的 bw 怎么办?假设 B 确实通过 inflate inflight 保住了自己原来的 bw,A 又不服又要抢回来怎么办?来看看这个过程:
在这里插入图片描述

多流均保带宽的代价是高昂的。丢包导致每一个脉冲的能耗白白浪费,而排队延时则意味着存储器的能耗。保带宽的结果,损人不利己,这里就解释了。
看个有趣的:Relentless Congestion Control
如果放宽算法的公平性约束,抢带宽,让带宽就自然多了,非常像高速公路的场景了,你想快就快,不太过分且我也没啥急事就让让你,当然,我也一样。算法的核心是:
instead of applying a multiplicative reduction to cwnd after a loss, cwnd is reduced by the number of lost segments.
完全基于范雅各布森报文守恒,精确填充管道:发出去 a,丢了 b,cwnd = a - b。relentless cc 承认自己非标:
Relentless Congestion Control conforms to neither the details nor the philosophy of current congestion control standards.
与其它 draft 几乎无例外想转正不同,relentless cc 甚至不以标准化为目标,只记录一种可能性:
We are not even planning to standardize it at this time. The goal of the document is to illustrate what new protocol features and properties might be possible if we relax the “TCP-friendly” mandate.
看一下 relentless cc 的工作图示:
在这里插入图片描述

这方式是不是更温柔呢。
如前述,执意保固定带宽有大代价,只要别硬杠,一般不会有大冲突。流多了就都慢点,自己有需要,随时 probe,如果大家没有特别要紧的事非要给你挤回去,一般都会默认的。relentless cc 只是在不停地执行 cwnd = cwnd - losses。
非要硬来的话,说说 arq 和 fec,二者结合效果更好,比方说尾部 fec,重传 fec。fec 就是提前重传。既然预测到丢包率,重传就是必然的,等到后面实际丢包(这是必然的)再重传,不如提前重传,用 fec 的话讲就是发送冗余。但由于拥塞丢包本身就是发送行为的函数,拥塞 fec 效果未必好(大概率很差),无论任何时候拥塞都要谨慎对待。
总有人说不受控的 udp 要比 tcp 快,其实一个优秀的 udp-based 协议并不比 tcp 快,它至少把 tcp 那些东西重新在 udp 上实现了一遍,比如 quic,最后就成了 yat-yet another tcp 了。但凡为 udp 做加法,只能让它更慢,但慢并不意味着不好,端到端传输协议要全局看。

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

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

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

相关文章

Mysql数据库 13.SQL语言 触发器

一、触发器&#xff08;操作日志表&#xff09; 1.介绍 不需要主动调用的一种储存过程&#xff0c;是一个能够完成特定过程&#xff0c;存储在数据库服务器上的SQL片段。 对当前表中数据增删改查的一种记录<日志表>&#xff0c;根据触发器自动执行&#xff0c;记录当前…

html+css+javascript打造网页内容浮动导航菜单

1需求分析 前段时间把“圳品”信息发布到网站上了&#xff0c;内容包括四大块&#xff1a; 按分布区域统计分析按产品类别统计分析按认定时间统计分析河池市“圳品”清单 导致网页很长&#xff0c;有同事反映说查看起来不是很方便&#xff0c;于是决定加上一个网页内容浮动导…

x3daudio1_7.dll怎么解决?x3daudio1_7.dll丢失的5个详细处理方法

首先&#xff0c;让我们来了解一下X3DAudio1_7.dll丢失的原因。X3DAudio1_7.dll是一个非常重要的动态链接库文件&#xff0c;它负责处理计算机中的音频输出。然而&#xff0c;由于各种原因&#xff0c;例如软件安装错误、病毒感染、系统升级等&#xff0c;我们可能会遇到X3DAud…

C语言--从键盘输入当月利润I,求应发奖金总数。

题目描述&#xff1a; 企业发放的奖金根据利润提成。利润I低于或等于100000元的&#xff0c;奖金可提成10%; 利润高于100000 元&#xff0c;低于200000元(1000001000000时&#xff0c;超过1000000元的部分按 1%提成。从键盘输入当月利润I,求应发奖金总数。 int main() {int m…

自动驾驶学习笔记(八)——路线规划

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 路线规划 路由元素 路径搜索 最优…

【C++】函数指针 ① ( 函数三要素 | 函数类型 | 函数指针类型 | 函数类型重命名 )

文章目录 一、函数类型 和 函数指针类型1、函数三要素2、函数类型3、函数指针类型4、函数类型重命名 二、代码示例 - 函数类型重命名1、代码分析2、完整代码示例 一、函数类型 和 函数指针类型 1、函数三要素 函数原型有三个重要要素 : 函数名称 : 使用 标识符 为函数命名 ; 用…

Fortran 中的指针

Fortran 中的指针 指针可以看作一种数据类型 指针存储与之关联的数据的内存地址变量指针&#xff1a;指向变量数组指针&#xff1a;指向数组过程指针&#xff1a;指向函数或子程序指针状态 未定义未关联 integer, pointer::p1>null() !或者 nullify(p1) 已关联 指针操作 指…

SpringBoot项目调用openCV报错:nested exception is java.lang.UnsatisfiedLinkError

今天在通过web项目调用openCV的时候提示如下错误&#xff1a; nested exception is java.lang.UnsatisfiedLinkError:org.opencv.imgcodecs.Imgcodecs.imread_0(Ljava/la如下图所示&#xff1a; 但是通过直接启动java main函数确正常&#xff0c;初步诊断和SpringBoot热加载…

文件管理技巧:按文件容量大小分类,自动移动至目标文件夹的方法

按文件容量大小分类可以帮助快速识别和筛选出不同大小的文件。这样做有很多好处。首先&#xff0c;可以轻松地查找和访问特定大小的文件&#xff0c;提高工作效率。其次&#xff0c;通过将不同大小的文件分类&#xff0c;可以更好地了解和掌控文件的使用情况&#xff0c;避免存…

leetcode刷题日记:110. Balanced Binary Tree(平衡二叉树)

题目给了我们一个二叉树要让我们来判断这一个二叉树是不是平衡二叉树。 要想判断一棵树是不是平衡二叉树&#xff0c;我们得首先知道平衡二叉树的定义是什么&#xff0c;平衡二叉树指的是这样的树它的左子树的高度与右子树高度的差的绝对值不能超过1&#xff0c;而且它的左子树…

MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

使用 ORDER BY 进行排序 使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 关键字默认按升序排序。要按降序排序结果&#xff0c;使用 DESC 关键字。 示例按名称按字母顺序排序结果&#xff1a; import mysql.connectormydb mysql.connector.connect(host"l…

gorm之项目实战-使用gen以及定义表间关系

gorm之项目实战 ER图 关系整理 一对一关系&#xff1a; User 和 UserLog&#xff1a; 一个用户对应一个用户日志&#xff0c;通过 User 模型的主键与 UserLog 模型的外键建立一对一关系。 一对多关系&#xff1a; User 和 Teacher&#xff1a; 一个用户可以对应多个老师&…

电路中模拟地和数字地的分割方法

电路中只要是地&#xff0c;最终都要接到一起&#xff0c;然后入大地。如果不接在一起就是“浮地”&#xff0c;存在压差&#xff0c;容易积累电荷&#xff0c;造成静电。 地是参考0电位&#xff0c;所有电压都是参考地得出的&#xff0c;地的标准一致&#xff0c;故各种地应短…

rasa train nlu详解:1.1-train_nlu()函数

本文使用《使用ResponseSelector实现校园招聘FAQ机器人》中的例子&#xff0c;主要详解介绍train_nlu()函数中变量的具体值。 一.rasa/model_training.py/train_nlu()函数   train_nlu()函数实现&#xff0c;如下所示&#xff1a; def train_nlu(config: Text,nlu_data: Op…

transformers安装避坑

1.4 下载rust编辑器 看到这里你肯定会疑惑了&#xff0c;我们不是要用python的吗&#xff1f; 这个我也不知道&#xff0c;你下了就对了&#xff0c;不然后面的transformers无法安装 因为是windows到官网选择推荐的下载方式https://www.rust-lang.org/tools/install。 执行文…

使用ResponseSelector实现校园招聘FAQ机器人

本文主要介绍使用ResponseSelector实现校园招聘FAQ机器人&#xff0c;回答面试流程和面试结果查询的FAQ问题。FAQ机器人功能分为业务无关的功能和业务相关的功能2类。 一.data/nlu.yml文件   与普通意图相比&#xff0c;ResponseSelector训练数据中的意图采用group/intent格…

【Armstrong公理】【求闭包和候选码】【判断范式】

1. Armstrong公理 2.求闭包和候选码 3.判断范式

WebSphere Liberty 8.5.5.9 (二)

WebSphere Liberty 8.5.5.9 &#xff08;二&#xff09; encode and decode Pre WebSphere Liberty 8.5.5.9 xor and AES 提取 D:\wlp-webProfile7-java8-8.5.5.9\wlp\lib 下必要加解密包 com.ibm.ws.crypto.certificateutil_1.0.12.jar com.ibm.ws.crypto.passwordutil_1…

2023 年合成数据的用例和应用

合成数据&#xff0c;也称为人工生成的数据&#xff0c;为数据科学应用中经常遇到的问题&#xff08;例如数据隐私和小数据量&#xff09;提供了解决方案。我们列出了不同行业和部门/业务单位中合成数据的功能和最常见的用例。 合成数据支持哪些与行业无关的用例/功能&#xf…

浅谈高并发以及三大利器:缓存、限流和降级

引言 高并发背景 互联网行业迅速发展&#xff0c;用户量剧增&#xff0c;系统面临巨大的并发请求压力。 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;全面讨论需要三天三夜&#…