| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP Illinois 与 TCP Highspeed -> 正文阅读 |
|
[网络协议]TCP Illinois 与 TCP Highspeed |
TCP Illinois (TCP 伊利诺斯)是一个自适应 AIMD 算法: http://tamerbasar.csl.illinois.edu/LiuBasarSrikantPerfEvalArtJun2008.pdf 其典型特征:
设 Davg 为 RTT 均值,Illinois 实现非常简单:
因此 Illinois 的 cwnd 曲线总体上是上凹的。 接下来看 cwnd(后面记为 W)具体的上凹形态。 需判定 α 变化率的走向,即其导数,有三种:
考虑到三种变化规律单调均匀,可排除匀速。随着 Delay 的增加,拥塞程度增加,加速比降低,选择第一种是高尚的,可保证在拥塞严重到即将丢包的后期,AI 增窗既小又平稳。 α 函数选择双曲线下凸的一支,而不是上凸的那一支,也不是直线,无疑是高尚的。至于 α 的函数表达式,根据双曲线上两点 P 1 ( d 1 , α m a x ) P1(d_1,α_{max}) P1(d1?,αmax?) , P 2 ( d m , α m i n ) P2(d_m,α_{min}) P2(dm?,αmin?) ,有一蔟曲线满足,选一条即可。 大致如下图: Wiki 主页上的一幅图展示了 Illinois 高效。
我本想将 TCP Illinois 改为 delivery rate based,没动手的原因在于改了之后就和漕河泾算法一致了。漕河泾算法也有一版 cwnd-based,也是 AIMD。 再说一个算法,TCP highspeed,去年过年时写过一个分析:漫谈TCP High Speed与TCP Africa(TCP China),它大致的想法也是简单:
本质上也是可变 AIMD 参数, AI 参数渐增,MD 参数渐减,但它们不是 Delay 的函数,而是 cwnd 的函数:
不同点在于,W 和 Loss 并非正交,而是相关的:
so,在随机或连续丢包的场景下,highspeed 的带宽利用率不如 Illinois。但若 highspeed 不引入 Delay 探测,仅凭 ACK 到达无法区分拥塞丢包和噪声丢包,说到底还是信息不足,可如果加入了 Delay 探测,就和 Illinois 一样了,说到底 AIMD 最终都是一回事,输入信息量不同而已。 关于拥塞控制算法的分类,长久以来按照 Loss-based,Delay-based 维度分类,Illinois 算是二者的混合。 曾经做过一个 cugas(或叫 vebic) 的算法,即 cubic + vegas 的混合,但在细节中两个算法是独立起作用并辅助另一个,二者交替作为 primary,secondary control,类似 bloom 多个 filter 共同确认的机制来判断拥塞。 Illinois 和 cugas 不同点在于,Loss 和 Delay 交融起作用,一起完成 AIMD。用 Delay 度量 AIMD,粒度更细,和传统 Loss-based AIMD 相比,Delay 作为新输入,增加了信息量,提高了决策精度。 虽然 TCP Illinois 已经出来很久了,但这无疑是一种新样式儿。 直到现在,BBR 仍被很多人认为是真正 Delay-based 算法,即便它自称 model-based 也没用,似乎人们只认 Loss-based 和 Delay-based。BBRv2 加强了对丢包的反应,它是不是能被归到 compound 一类呢? 真实情况是,不要轻易分类,分类出了禁锢思想告诉你不能怎样之外,没什么好处,正如文科生也可以解微分方程,理科生也能写散文一样。
浙江温州皮鞋湿,下雨进水不会胖。 |
|
网络协议 最新文章 |
使用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年11日历 | -2024/11/25 20:43:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |