buffer 的意义在用带宽平滑统计突发:
流量波动越大,统计复用能效越高。假设没有 buffer,将大量溢出和空载并存。但如果流量是可预期的,也可以转向相反的方向,比如虚电路。
数据中心与 Internet 不同,流量类型相对固定,典型的如 mapreduce,rpc,rdma,及各类存储。进一步归纳,可分为两类:
- 短突发消息:分组交换。
- 持续块数据:电路交换。
在逻辑上(也可在物理上)将两类流量区分开,就无需考虑二者共存时的拥塞控制了。
对分组交换域,采用合适大小 buffer 及流控算法即可保证低时延,对电路交换域,与针对长流的传统端到端拥塞控制不同,资源预留更高尚,可节省更多主机资源。
资源明确不能满足时,网络给出一个明确的等待时间,在这段时间内不必重试,主机可调度其它任务。换句话说,如果信息量足够,就不用 “试”,无用功少,总效能就高。
任意一次丢包重传都伴随无用功,如果事前知道这次丢包,就没必要发它,Internet 端到端方法因为哑铃模型无法给出拥塞信息,或获取这信息时间成本很高,只能 “猜,试”,但这信息在数据中心内部非常易得,最多一个 RTT 的资源预留一定在应用容忍范围:这么想,端到端方案一定会遭遇丢包重传而浪费至少一个 RTT,如果应用不能容忍一个 RTT,就别用了。
…
分组域和电路域分离后就不再需要无损网络,无损网络虽然保主机,但主机等待时间不确定,因为无损要以盲时间为代价,如 PFC,无法相对精确预测一次传输多久完成。而电路域时间很明确,明确的时间可让主机制定非常精确的调度时间表而解除对随时中断的过度依赖。
必须明确,时间总要付出,在拥塞排队或丢包重传的盲时间和资源预留不能满足时的确定等待时间之间做选择而已。但凡统计复用,由于无法预测拥塞,都要消耗盲时间,如果盲时间变得明确,这部分时间便可用来做吞吐。
以上言论可看作蜂窝移动网络的倒行逆施,3G 明确区分了 CS (电路交换域)和 PS (分组交换域),4G 就被 LTE 融合到 PS 了,历史似乎告诉人们分组交换是一个绝对的方向。但这种 “随时间进步” 的历史观在局部看未必正确,电路交换被取代,可能只是彼时场景,分组交换更适合。
阳了 3 天,躺床上看书,翻了翻 2G 到 5G 的发展和技术概论,为数据中心没有电信因素渗入而遗憾,现如今数据中心连同虚拟网络的名词一点不比电信名词少,实际效果远不如电信技术好,都在搞 ECN,INT,可短消息 incast 不会给你任何反应时间,于是还有 Homa… 说到底数据中心一直没突破 “TCP/IP + 以太网” 那哑铃模型的假设。但端到端原则已被质疑和重估。在质疑和重估的锤子尚未砸到工程实践上时,人们一边尽力抵制这重锤,一边又为性能问题苦恼,但只要拥抱它,问题就解决了,它们本就一道:1980 年代的 “TCP/IP + 以太网” 模型里强调的是功能和部署,性能并未加入其中,是时候加粗那哑铃的手柄了。
浙江温州皮鞋湿,下雨进水不会胖。