结论:只要带宽足够大,应用程序的行为将越来越多从 Capacity-Seeking 收敛到 Application-Limited,从而不再需要 AIMD,BBR 这种 Capacity-Seeking 算法,Capacity-Seeking 导致的经典锯齿也将消失。
下面是对结论的解释。
我曾悟到一个结论,带宽越小,下载需求越高,带宽越大,下载需求越小,在互联网的使用方式上,传输带宽和存储带宽此消彼长。
小带宽支撑不起在线看视频,要先下载,保存在硬盘,那时常需配置大硬盘,但现在带宽丰富且廉价,在线看视频体验极佳,反而不再需要大硬盘。
这个有趣的结论背后有个更有趣的关系,带宽和拥塞控制方式的关系。
假设带宽无限,传输限制就只剩下不可逾越的光速。当一切都可在线操作,下载到本地就没了必要,此时互联网上就只剩 “交互类消息”。
交互类消息存在的基础是极低的传输时延,而传输时延包括三部分,除去光速传播时延,剩下的处理时延和排队时延均要压缩到极低。反之,带宽越小,排队越剧烈,排队时延越抖动,交互效率越低。
与交互类消息相对应,在低带宽下,下载类传输关注的不是低时延,而是下载总时间。要压缩下载完成总时间,对带宽的贪婪抢占不可避免,“Capacity-Seeking” 行为是引发拥塞的根因,因此要部署 AIMD 做拥塞避免。
你会发现 AIMD 是下载的产物,而这恰是带宽不丰盈时所需,带宽丰盈时,下载不再需要,各自交互类消息都 “自限吞吐”,比如一个视频码率是 1000Mbps,所需吞吐就那么多,不会贪婪 AI,就不会 MD,换句话说,此时的传输协议不再 “Capacity-Seeking”,而是 “Application-Limited”,它是稳的。
与直觉相反,带宽越大,越不需要 AIMD 拥塞控制,带宽越小,AIMD 越必要。AIMD 似乎是在无法满足各取所需要求时,作为一种复用共享资源的调度方式在起作用。
AIMD 给了人思维定势,以为拥塞控制只能依赖反馈环,对反馈不足够的那种 “一个来回的交互” 束手无策,即使降低 cwnd,流已经结束。因此人们更难理解 Homa 协议的 unscheduled packet,当我说 “如果发送 short message,就直接吐出去” 时,大家都觉得我多少有点信口开河。
当 AIMD 已深入人心,人们倾向于确保可靠,确保僵住的吞吐一定要保持,相信总有一个拥塞控制算法能同时确保吞吐和公平,10 条流僵住 1000Mbps 码率一起通过 5000Mbps 共享链路时,不断丢包重传,体验卡顿,然后有人跳出来建议部署 BBR,优化 BBR… 正确的解法是每条流将自身码率降到 500Mbps。
对 Capacity-Seeking protocol,当有一笔数据要发送,无论 AIMD 还是 BBR 都倾向于尽力并确保发送。这是问题本身,而不是解决问题的方法,这是 Capacity-Seeking protocol 的内在属性,倾向于 “用尽一切带宽”,而 Application-Limited 传输则是 “够就好,不够就降级”,它本身就收敛,自带柔性,否则 QoE 下降,自讨没趣。
随带宽越发丰盈,即使是 TCP,拥塞控制(特别是 AIMD-Based cc)也将越来越少起作用,我们常用的 SSH 远程登录几乎用不到任何拥塞控制,普通手机 5G 网络刷新闻,看图片,小视频,大多数也不需要拥塞控制,在网络带宽遇到瓶颈前,所需带宽已经满足。剩余的排队延时大多由于残留的下载业务 AIMD 导致,而这部分业务也越来越少。
随带宽越发丰盈,有迹象表面,Capacity-Seeking protocol 的 AIMD 行为将越来越少,Application-Limited 将越来越多。
就像空气和水一样,因为丰富,所以节制。否则就有人大口喝到水中毒,然后三天没水喝。
…
归根结底,有水之源,如何提高带宽,让网络带宽变得丰盈?
多亏端到端的 “胖端瘦网” 理念让提高网络带宽变得可行。如果网络是胖的,比如已经接入 N 个终端的电话网,每接入 1 个新终端,需在网络中配置 N 条交换链路,网络复杂度随节点指数级增长,经不住扩展。现如今 TCP/IP 网络是瘦网,只执行无状态逐跳路由,接入 1 个新的终端对网络是无感知的,这使互联网得以快速扩大。
但即使端到端理念也没让提高网络带宽变得简单。这受限于摩尔定律。
虽不用为新节点进行复杂的配置,但需为其在统计意义上预留带宽,而网络带宽需求随网络规模也是指数增长,与配置交换链路复杂度相当。网络核心的转发节点遵循的也是摩尔定律,导致其发展速率远跟不上互联网扩展的速度,两者之间有个倍数 N。
若不突破摩尔定律,“端均带宽” 会越来越小,最终互联网将崩溃。这就是 2000 年左右的互联网崩溃论,人们认为互联网会越来越拥挤。当时我读高中,我记得在订阅的《科学美国人》杂志读到过一篇专栏文章。
这很好理解,端设备和网络核心同属集成电路,同受限于摩尔定律,带宽受芯片驱动,网络核心收敛比与接入节点数量正相关,网络规模越大,收敛比越大,端均带宽越小。Metcalfe 定律也能印证这一点。
当网络转发节点处理率小于到达率,将发生流量收敛而导致拥塞,拥塞的强度与网络规模正相关,这与胖端瘦网的理念相违背,理想情况下,网络核心的处理强度应与网络规模无关。但凡不可扩展的机制,都应该远离网络核心。
将拥塞本身也往端侧压,应是个趋势。网络核心通路应完全透明,数据来去匆匆,不做任何停留,数据在端侧被筛选。举个极端的例子,假设网络核心拥有无限制带宽,同时每一个端拥有无限制处理能力,整个网络是一个广播网络,任意端发送的任意数据都可到达任意其它端,自身判断是否发给自己,是接收还是丢弃。这是以太网的回归,简单且正确。以太网在共享同轴上运行时,受限于冲突,可用 DWDM 做介质,问题就解决了。
上周 Ousterhout 分享 Homa 时,提问环节有人问 Receiver-Driven cc 有什么优势,Ousterhout 说 Receiver 最了解拥塞,Receiver 就是拥塞点。这解释背后的假设是网络核心不会发生拥塞。确实,即使在公网,骨干拥塞非常罕见,拥塞几乎都发生在 lastmile,而我们互联网的 lastmile 接入技术,20 多年并没有发生质变,这才是 QoE 差的根因。
回正题,到底什么技术可引发网络核心以及 lastmile 带宽的质变,不再受摩尔定律约束。全光网络理论上可以吗?光网应该和摩尔定律是独立的,光/电,电/光转换仅发生在端到网的接口处,就是网卡那里。
假设有那么一天,就像高速公路上不再有红绿灯一样,带宽足够丰盈,各 Application 自限 Limit,不再 Capacity-Seeking,靠 QoE-Driven 柔性收敛,AIMD 仅兜底,不知将砸了多少搞传输优化的工人们的饭碗。
不过,现如今仅短视频,直播的圈钱能力不足以触发彻底带宽革命的扳机,如果仅对着一个屏幕做文章,一切投资很快就像 20 多年前那次光纤通信革命一样再而衰三而竭。但没有带宽,就别谈元宇宙,智能驾驶,虚拟现实,人工智能,由于光速限制,现实中的缺陷就是距离,因此边缘计算要先行,幸好,早在从 10 几年前开始,CDN 就开始在边缘部署足够的支撑边缘计算的基础设施,这个过程还在继续。
当带宽成了所有前进的障碍时,当它成了众矢之的时,动机就来了。
《通信革命》副标题-无限带宽如何改变我们的世界,如果波长真的像 IPv6 地址一样充盈,整个路由交换系统全要被改变,所有为节约带宽而设定的规则(比如拥塞控制,AQM,优先级队列,限速)将全部变得没必要而失效,正如我们现在不会因囤积空气而受罚一样。
以上形而上迷思非工程实践,不涉及 “没有 AIMD 无法保证公平性” 以及 “BBR 就是最好的” 这种争论,如果有,谁说什么都对。
这篇文字来自三个方面,一个是去年的一个感悟,带宽和存储的矛盾,一个是《通信革命》的读后感,还有一个是北方,特别是东北地区秋天时储存白菜,大葱过冬。由于北方在冬季蔬菜资源紧缺,所以在过冬前需要储存大量蔬菜,在整个冬天就吃这些蔬菜,这就好比是下载,其过程非常贪婪,大多数人家整个屋子里堆满了大白菜,大葱,土豆,如果不精打细算,相当大一部分要损耗掉,很像 Capacity-Seeking 行为,但南方人没有储存蔬菜的习惯,因为每天都可以买到新鲜蔬菜,因此每天只买够吃的,这非常类似 Application-Limited。
浙江温州皮鞋湿,下雨进水不会胖。