难以超越的 TCP AIMD

我不是为了评价各种 TCP 算法的好坏,只是阐述一个观点,即 "为什么在尽力而为的网络,很难有什么 TCP 算法在综合表现上比 AIMD 做得更好"。

在端到端原则之内,AIMD 保证了网络传输收敛,稳定,它是互联网可用性的基石,这是下限,另一方面,它可能同时规定了难以逾越的上限,AIMD 在多流任意共享场景收敛到了这样一种状态,在不损害任何一方利益的前提下,无法再使至少一方变得更好。AIMD 通过其独特的动态调整机制,天然实现了网络资源分配的帕累托最优,也可以说 AIMD 天然实现了最大最小公平。

尽力而为也存在相似相容,一方水土养一方人。在尽力而为的网络,"足够好" 就是 "最好","更好" 反而 "更差"。互联网不维护状态,AIMD 仅依赖端系统感知的二元信号(丢包 or no)就能完成控制,完美匹配 IP 网络的 "哑管道" 哲学。

AIMD 可能已达到最大最小公平性的理论上限,任何改进本质上都是在特定场景下的帕累托改进,如 BBR 牺牲能耗和公平性换取单流高吞吐。

尽力而为网络无法反馈任何可靠信息,只能基于可信事件做反应,BBR 和 ECN 是其在反方向努力的代表。BBR 采集的 delivery rate 仅作为最后一跳信息,无法描述网络状态,以此做 pacing rate 必不准确且没根据,因此需要更加具有启发式意义的 probe 算法,且 BBR 强烈依赖主机时钟的稳定性,进一步挑战并偏离了最佳能效点,而 ECN 则依赖路由器交换机的 feature,这完全无法保证。

问题的根源不是算法不够好,而在于网络的尽力而为内在属性,若要最优化性能,首先要改变网络的尽力而为本性,若不改变网络的本性,很难超越 AIMD。

有人曾经问我,多流共存,存在最优解吗?我说,存在,但你无法找到,全局意义上,AIMD 就是你能找到的最优解。 我举的另一个例子,猜硬币正反面,在没有任何信息输入时,随机就是最优解,你做得越多,结果越偏离期望,就像时间不会倒流弥补误判一样,熵只会叠加坍缩而不会抵消,任何无效的信息熵都会叠加到负向。

基于 AIMD 的 Reno/NewReno 属于第一代杰作,后续 Cubic 长期作为默认算法被广泛部署,AIMD 支撑了互联网发展的黄金时代,无数人论证 AIMD 的良性特征并解释为什么它如此高效且稳定。

但 BBR 背后的 Google 让标准化组织口风变得松动,Google 提出的 issue 及解决之道,大概率最终会成为新的标准,换句话说,优先部署抢占了论证,而世界的逻辑往往由木已成舟决定,我们无法假设我们的食管和气管没有交叉时鼻子会长在哪,但我们必须接受现在的安排。

但 BBR 讨论组 BBR Development 不活跃了,可能都去卷 AI 了吧。

TCP 各类问题的根源是网络不行,不是 AIMD 不行,换更好的 BBR 无法解决根本问题。TCP 本身具有很强的可扩展性,从不到 1Mbps 的带宽适应到 200Gbps,在 100Mbps 之下,TCP 表现很好,从 100Mbps 长肥管道到 25Gbps,TCP 被普遍诟病但却依然适应良好,过了 40Gbps,性能瓶颈转移到了主机,但这些都不是协议的问题,200Gbps + TCP Reno + TSO/LRO + GBN + BigTCP + ZeroCopy 或许真比 200Gbps + BBR + TSO/LRO + SACK 表现更优秀。

一个没被大多数人意识到的事实是,TCP 的复杂性几乎都在应对丢包,而丢包属于异常,人们花大量精力进一步复杂化异常处理,其努力早就超越了 T = α ⋅ p − r T=\alpha\cdot p^{-r} T=α⋅p−r 的约束范围(该公式定义了长肥管道问题本身),而在该公式约束范围以内,AIMD 各种变体早就定义了综合表现的上限,而这是 30 多年以前的事。

昨晚做梦又梦到做 TCP 优化,写篇短文。

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

相关推荐
西部森林牧歌10 小时前
Arbess零基础学习 - 使用Arbess+GitLab实现PHP项目构建/主机部署
ci/cd·gitlab·php·tiklab devops
咖啡教室10 小时前
每日一个计算机小知识:ICMP
后端·网络协议
张人玉10 小时前
网络通讯TCP和UDP的区别
网络协议·tcp/ip·udp
咖啡教室11 小时前
每日一个计算机小知识:IGMP
后端·网络协议
打不了嗝 ᥬ᭄11 小时前
数据链路层
linux·网络·网络协议·http
Q_Q51100828514 小时前
python+django/flask的校园活动中心场地预约系统
spring boot·python·django·flask·node.js·php
蒲公英源码15 小时前
基于PHP+Vue+小程序快递比价寄件系统
vue.js·小程序·php
小李独爱秋16 小时前
计算机网络经典问题透视:什么是NAPT?它有哪些特点?
网络·网络协议·计算机网络·网络安全·智能路由器
Q_Q196328847517 小时前
python+django/flask基于机器学习的就业岗位推荐系统
spring boot·python·django·flask·node.js·php
韩立学长17 小时前
【开题答辩实录分享】以《奇妙英语角小程序的设计与实现》为例进行答辩实录分享
小程序·php