IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP 漕河泾算法(tcp_caohejing) -> 正文阅读

[网络协议]TCP 漕河泾算法(tcp_caohejing)

题目没意义,要说意义,大致类似于 Vegas,Reno,Tahoe,Westwood,地名。

周三傍晚发一则朋友圈:
在这里插入图片描述
总之,名字就是个名字,跟 tcp_vegas,tcp_reno,tcp_tahoe 学的。

模拟高速公路开车,见机行事。总体设计很简单,传输系统在 up 和 down 两个 state 间转换:

  • 如果 up 状态测得实际 delivery rate 增益小于 a%,转为 down,gain < 1。
  • 如果 down 状态测得实际 delivery rate 损失大于 b%,转为 up,gain > 1。

例如,125% 增益下,delivery rate 增量小于 5% 就以 75% 降速(也可连续 2 次,3 次小于 5% 再降速增加鲁棒性),一旦降速,delivery rate 肯定降低,降低率大于一定阈值,再改为 125% 增益加速。简单讲就是漫踱步。

Caohejing 算法把 BBR 的固定状态机改成视测量增益而动。 同样挤占力度,带宽越大,加速比越小,因此大流总会降速,小流正好向上,直到变成大流,算法在异步状态下轮作属大概率事件。此即 “微收敛”, 预期公平性非常棒,事实也确实很棒。

也可使用 AIMD,加速用加法,减速用乘法,取消固定收敛时刻,在 up 态,pacing 加法递增,down 态乘法递减,同样观测 delivery rate 增量,也属高尚。

先放一个表达大意的代码:GitHub - marywangran/tcp-caohejing: TCP 漕河泾算法

基本就是 Vegas 的变体,在丢包前开始收敛。但还是有大不同。

Vegas 根据 RTT 信号收敛,而 Caohejing 根据实测带宽收敛,哪个更靠谱?

Vegas 比 Caohejing 更复杂,但不能说 Vegas 一定比 Caohejing 先进。各种测量,计算的背后是各种不切实际的假设,把理想假设去掉后,就只剩 delivery rate 了。

事情总向着简单,如手动挡和自动挡汽车,讲速率的时候,谁还提什么操控。

谈谈丢包和重传。

对 Caohejing 算法,拥塞丢包可以自动被发现,因为采集带宽肯定低了,速率也就降下来了,但这里问题来了,是保持简单方式统一处理,还是单独用数据包守恒处理丢包?若后者,显然不美,又回老路,但选择前者,又会被诟病重传率高。

或许高重传率就是高带宽利用率必须付出的代价。高重传率最终会落实到碳排放,但由于传输效率低导致信息延时到达,消耗的成本将造成同等量级碳排放,一切皆守恒。

端到端协议,获取链路信息需要代价,换句话说,带宽探测就需要多发数据,采集反馈,而此行为的风险就是丢包。

so what?

本来我忍不住在 tcp_caohejing_cong_control 函数里加上 if (rs->losses > 0) 判断的,然后按照数据包守恒原则处理丢包,但放弃了。

我特意在代码里加了 conservation 参数,可通过下面命令关闭:

echo 0 >/sys/module/tcp_caohejing/parameters/conservation

关闭后意味着让算法根据 delivery rate 自适应收敛,这是高尚的。

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

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:52:32  更:2022-09-13 11:55:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:37:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码