数据中心的拥塞控制
前面提到,如今的高速网络方案集中在卸载主机网络能力,降低主机处理时延,甚至 PFC 用网络排队时延换主机时延,本末倒置。而在拥塞控制领域仍是传统的 AIMD 闭环反馈,ECN,QCN 那一套,但拥塞是端到端时延的大头,不可不察。
网络不好改,但总将希望寄托在利用现成以太网,再高端的网卡也成了无水之源。过多资源往端倾斜,以至甚至 TOR 交换机已经远远无法支撑主机网卡的高吞吐。
网络的核心不是数据从超猛网卡放到网线就不管了,这种假设的前提是 “网络是尽力而为的”,但数据中心网络本质上是主板的延伸。
为配合高性能网卡,交换机已经做了很多复杂的事,如 PFC,QCN,但何不增加一个控制面呢?这不就是 SDN。
但一提到 SDN 总免不了陷入 “分布式控制 vs. 集中式控制” 的争论,但世界绝非非黑即白,如果只集中控制或者说调度拥塞就很高尚,数据转发依然按照分布式路由来。
如下图所示一个简单的例子,上图是传统的带内闭环反馈,下图是一个直观的集中式拥塞控制:
聚合可以是重新选一条路绕过拥塞点,也可以是 802.3ad,随意。全局看,局部受害流在大部分情况下绕过一个拥塞点非常容易,可能只需要换个端口跨条线就行,controller 就是干这个的。
这是非常自然的拥塞控制,哪里发生拥塞,哪里负责发送源抑制,顺便疏导调度拥塞而不是前向丢包或标记,更不是向上一跳 pause。说实话,依靠确认反馈的端到端拥塞控制携带着早期 TCP 的影子,结论延续了下来,以至于所有其它方式都 “不自然”,包括名不副实的 ICMP 报文(RFC896)。
直接丢包最简单,没有 receiver 的确认,sender 早晚会发现,正如范雅各布森多年后评价道,丢包永远不会说谎,不会被误解。但这种带内控制方式并不直观,也不高效,于是后来就有了 ECN,QCN,但本质上还是前向带内反馈,到顶就是到顶了。
如果能在带外直接通知 sender 需要做收敛,就没有必要必须丢包,疏导即可,丢包不是目的,而是昂贵的手段,否则在 ECN 时代也不会用标记代替丢包了。
有趣的是,实现这一条带外控制方式只要增加一个简单的控制面,这种复杂性并不比实现并处理 PFC 更难。控制面只需要确保随时准备好一条或几条备选路径即可拯救 PFC 下的 “受害流”,既然可以用 buffer 做后备,用路径做后备则更自然,还能消除拥塞排队时延。
控制面甚至可以是另一张普通网络,意思到了就行,不用非生搬硬套概念,先搭建跑通,手顺了,慢慢就标准化了。
再说一个有趣的点,慢就是快,快就是慢。
试想存在一个控制信息比如源抑制,重选路,重聚合可以瞬间(不需要时间)到达目标主机或目标交换机,整张数据面网络将永远没有拥塞,因为拥塞可被控制面提前预见并疏导化解,核心在于拥有全局视图的控制面比数据面更快。但很遗憾,信息都是以准光速传播的,无论控制信息还是数据转发信息。
但换一个思路,数据面网络可以逐跳人为引入固定时延或人为拉长线缆提高时延,而控制面则以准光速全速传播,这样控制信息就比数据转发 “更快” 了,虽然所有的数据转发时延增加了 20us(or 其它容忍时延),但拥塞消除了,p99 还会优化,达到这种效果只需要寻找一个在出让的 20us 内收敛的算法,纯成了一个算法问题。这就是慢就是快,us 级的买卖值得做。
反过来若一味激进发送,造成同步,拥塞的后果则非常严重,在数据中心的短肥网络场景,拥塞排队(ms 量级)的端到端(us 量级)占比将巨大到业务崩溃,吞吐和时延抖动将严重影响业务稳定性,而重连需要更多的时间。这就是快就是慢,ms 级的豪赌要避开。
当代青年的误区在拿广域互联网那一套分布式自组织机制照搬到数据中心,同时还嫌弃它效率低,于是拼命给仙人掌浇水,却发现《仙人掌喝水死了》(舌头乐队),吸取了教训,于是转而给金鱼戴上了游泳圈。
数据中心的性能应该关注的是 link,它们连接着异构但确定的各种 PU,至于 TCP/IP 连接的显然不是性能攸关的主机服务,人们不肯为数据中心设计专用的连通协议,继续使用 BGP/IGP 除了兼容性更多的还是拿来主义(兼容性可以通过 Gateway 解决),因为这是现成的。但为了这种方便就不得不容忍它的不足,指望 10us 甚至 1us 级收敛是不可能的,为了表达各种不服,膏药抹了一层又一层。
TCP/IP 工作在 ms 级,这和通用操作系统的调度周期相匹配,但不足以满足数据中心的 PU 互联,虽然 PU 互联早就不使用 TCP/IP,但我的意思是,它们多多少少在学 TCP/IP,并已经携带了影子。如果希望要从一个早到 1970 年代开始讲故事的老师那里获得智慧,或许应该看看 PCI,PCIe 甚至 ISA 的早期发展。
最后,如果一个事越做越复杂,大概率就是路子错了,甚至南辕北辙了,不要在细节的突破上自我感动,及时停下。我经常跟女儿讲这个道理,用它应对问题,正确的思路一定是一气呵成且简洁的,结果,即使像考试这种我根本不在乎的事,她在没有任何补课,没有任何额外辅导(包括我自己也没有给她任何额外辅导)的情况下,排名一直稳定靠前,这是值得欣慰的,我希望做技术也是如此,正确的,简洁的,轻松的,但大部分情况下不是。
浙江温州皮鞋湿,下雨进水不会胖。