| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP Westwood 更新(性能牛逼 ) -> 正文阅读 |
|
[网络协议]TCP Westwood 更新(性能牛逼 ) |
我很喜欢 AIMD,神奇的自然收敛。可它总被诟病性能低。
不过上周,有网友评论说 “拥塞控制乃社会学问题,关键在资源分配与竞争。但是现在的 paper 很多都在死磕端到端的吞吐量,路子越走越歪”。我觉得说到点子上了,但凡社会博弈问题就需要一种收敛到公平的内在机制,不然最终鸡飞蛋打,都没得玩了。对于拥塞控制,就是拥塞崩溃,所以范雅各布森才引入 AIMD。 我每周都重复上面这种观点,需写些实际代码自洽。这周我更新下 westwood,加入鲁棒性,不求超高吞吐,比 CUBIC 稍好,但吞吐的提升并不以损害公平性或增加重传率为代价,也算对得起本文。 BBR 的鲁棒性由 10 rounds window 的 max-filtered bandwidth 保证。引用 Neal 的原话:
简言之就是 BBR 可以抵抗背景流的突发行为。 这种鲁棒性本质上是 “坚持一段时间”,不像 CUBIC 一碰即退,鲁棒性源自摊平的时间。但坚持的代价是丢包,BBR 高重传率来源于此。 此外,BBR MIMD 也是高重传率的原因,我有种有效的方法上周已展出:TCP BBR 降本增效,但这并不改变 BBR 测不准的本质。 依赖 ACK 的带宽采集的信息分辨率存在上限,既然怎么都不准,又何必去挣扎细节。所以我并不认同 BBR 那些 1,or 2,or 4 segs 之类的细致纠结,我甚至认为这种纠结是不正确的。统计量是精确不起来的。 既然测不准又何必假设理想化,还是那句话,不确定的且不能确定的,要统计,别假设别猜。 BBR 发布之前,我一直围绕 westwood 修改,它不精确,但它能相对公平地收敛。它的一个简单变体(我仍叫它 westwood),既公平,也简单高效,体现在下图: 然而 Linux tcp_westwood 并没能完整实现它,原因大致有二:
BBR 引入 Linux TCP 之后,上面两个问题均已解决,但 westwood 算法却没有更新。但现在可以尝试更新一下,很简单,实现上图即可。 为了给 westwood 增加一些鲁棒性,我并没用丢包时的即时带宽作收敛带宽,而采用 “一段时间内的最大带宽” 作收敛带宽,这是关键,即 “将鲁棒性交给时间”。 代码修改自多年前职业做 CDN 传输优化时的 westwood++ 版本,加入鲁棒性后,命名为 westwood-: https://github.com/marywangran/westwood-sub (暂发布 prr 版本,为了收敛,大家都好。) 这个 westwood- 实际上是借用了 BBR 里测量带宽的那套代码,加了个 windowed max-filter,以修正老式 westwood 里 “理是那个理,但实现不理想“。按照之前老式儿的实现,基于 una 数 ACK 数量估算低通滤波带宽,是大大不准的,比 BBR 还不准。 丢包 8%,延时 20ms。下面是不使用 prr(Proportional Rate Reduction,也就是 Linux 内核 tcp_cwnd_reduction 函数) 算法的: 如果单纯追求高带宽,那简单。固定 cwnd 硬怼就是,参考:最快的 TCP 拥塞控制算法,又何必如此周折,但这是最低级的,这不高尚。 拥塞控制的目标是保障网络可用性,避免拥塞崩溃,提高带宽利用率并不是拥塞控制的本职。另外,端系统听不听话,带宽利用率的高低,如果不听话,限速,整形,pacing 都是 QoS 的事,中间网络 AQM 该丢就丢。
浙江温州皮鞋湿,下雨进水不会胖。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/28 20:25:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |