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 Illinois 与 TCP Highspeed -> 正文阅读

[网络协议]TCP Illinois 与 TCP Highspeed

TCP Illinois (TCP 伊利诺斯)是一个自适应 AIMD 算法:

http://tamerbasar.csl.illinois.edu/LiuBasarSrikantPerfEvalArtJun2008.pdf

其典型特征:

  • Loss 作为 primary signal 控制 AIMD 方向,Delay 作为 secondary signal 控制 AIMD 程度。
  • Delay 越大,AI 参数 α 越小。
  • Delay 越大,MD 参数 β 越大。

设 Davg 为 RTT 均值,Illinois 实现非常简单:

  • α = f 1 ( D a v g ) α=f1(D_{avg}) α=f1(Davg?) D a v g D_{avg} Davg? 的减函数。
  • β = f 2 ( D a v g ) β=f2(D_{avg}) β=f2(Davg?) D a v g D_{avg} Davg? 的增函数。

因此 Illinois 的 cwnd 曲线总体上是上凹的。

接下来看 cwnd(后面记为 W)具体的上凹形态。

需判定 α 变化率的走向,即其导数,有三种:

  • 随 Delay 增加, α 降速先快后慢。
  • 随 Delay 增加, α 匀速降低。
  • 随 Delay 增加, α 降速先慢后快。

考虑到三种变化规律单调均匀,可排除匀速。随着 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 高效。
?在这里插入图片描述
漕河泾算法和 Illinois 类似,不同在于漕河泾算法以 delivery rate 而非 Delay 为 singal,因为 delivery rate 更准确,甚至不用设计 f1 和 f2 ,直接利用下列推论即可:

  • 拥塞程度越高,delivery rate 加速比越小,直至转为 decreasing。
  • 拥塞程度越低,delivery rate 加速比越大,保持 increasing 或转为 increasing。

我本想将 TCP Illinois 改为 delivery rate based,没动手的原因在于改了之后就和漕河泾算法一致了。漕河泾算法也有一版 cwnd-based,也是 AIMD。

再说一个算法,TCP highspeed,去年过年时写过一个分析:漫谈TCP High Speed与TCP Africa(TCP China),它大致的想法也是简单:

  • 带宽越高,W 越大,AI 越大,MD 越小。

本质上也是可变 AIMD 参数, AI 参数渐增,MD 参数渐减,但它们不是 Delay 的函数,而是 cwnd 的函数:

  • α = f 1 ( W ) α=f1(W) α=f1(W) 为窗口 W 的减函数。
  • β = f 2 ( W ) β=f2(W) β=f2(W) 为窗口 W 的增函数。

不同点在于,W 和 Loss 并非正交,而是相关的:

  • W 是连续递增的,若要更高的 W,必须持续足够久的时间不丢包从而有足够高的 W 作为基础。

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 一类呢?

真实情况是,不要轻易分类,分类出了禁锢思想告诉你不能怎样之外,没什么好处,正如文科生也可以解微分方程,理科生也能写散文一样。

端到端传输协议的拥塞控制,用得最多的就是 AIMD,万变不离其宗的 AIMD,它和 Loss-based 基本相一致。细分常见的拥塞控制算法,BIC/CUBIC 几乎就是 Reno,HSTCP,HTCP,TCP Illinois,TCP Westwood 无非是细化了 AIMD 的细致行为,或者粒度更细致,或者控制信息更充足,最为典型的就是 TCP Illinois 和 TCP HighSpeed 了,前者是启发式,后者是查表,值得揣摩。因此写一篇文字。

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

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:21:54  更:2022-09-30 01:22:13 
 
开发: 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-

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