TCP 与 CPU 架构发展史

周五下班前跟同事聊了几句,还是关于 TCP 协议的。

诞生于 1970s 的 TCP 协议,在 1981 年作为 TCP/IPv4 被标准化,其实质直到今天都没有发生改变,按序,可靠,其间有过一些涉及效率的修补。

另一方面,CPU 架构从 1970s 到今天不知迭代了多少代。这是一个有趣的类比。

把一个程序看作一条指令流是合适的,CPU 按序执行指令。CPU 架构的历史演进大家都知道,加入了超标量,流水线,多核。为了避免流水线停顿(HoL),引入了乱序执行,将指令分成不相干的部分,乱序执行,最后再 reorder。

日光之下无新事。TCP 按照 CPU 架构的历史走一遍就是了。

程序视角看起来还是按序执行的,可 CPU 确实乱序执行微指令,TCP 应用看起来还是按照到达的一条流,但网络却可以乱序传输。

同一条 TCP 流无法利用 ECMP,不过目前的 Multi-Path TCP 似乎有这个方向了,但粒度还是太粗。TCP 的停顿来自于保序引入的 HoL,学 CPU 乱序执行的样子引入乱序传输就行了。一旦支持乱序传输,包粒度 ECMP 即自然而然。

可直到今天,TCP over IP 依然是最短路径优先逐跳路由,同流同路径,这就好比古老的指令流跑在现代 CPU 上,造成资源大量闲置。无论是端资源,还是网络转发资源。

TCP over IP 按照 CPU 架构发展史的路线再来一遍,没有空闲资源,最小化等待,就是高尚的,当然,名字可以不叫 TCP。

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

你可能感兴趣的:(tcp/ip,架构,网络)