谭 焜
大约在2003年左右,IT业正逐渐从网络泡沫崩裂中恢复过来。为了连接各地的大型数据中心,新建了许多新型高速主干网络。这些网络连接的速度高达几千兆比特/秒,而TCP的性能表现在这样的高速网络上却不尽如人意。
当时流行的高速TCP设计主要有两个流派:基于网络丢包的设计和基于网络延时的设计。前者会抢得大量的网络资源,而使得普通TCP的性能极度下降;而后者却恰恰相反,在和大量TCP竞争的情况下,却往往使得自己的性能极大地降低。这两个流派相互争执,各不相让。但我认为这两种设计思想是可以互补的,例如利用前者可以保持和普通TCP竞争网络资源的力度,而后者正好用来弥补普通TCP利用高速网络资源不足的缺陷。
考虑了几天之后,我简单地写了一个备忘录阐述了我的想法:“新算法应该包含两种控制方式:一种标准的基于网络丢包的控制;另一种更激进的,但是基于网络延时的控制。”我命名这个新的协议为复合TCP(Compound TCP,CTCP)。
CTCP可以说是Windows十年以来对TCP协议最大的一次改动。
2007年1月发布的Windows Vista首次包含了CTCP功能。2月初,在微软召开的高速TCP峰会上,网络学术界和工业界的诸位知名专家一起讨论高速TCP的现状,并对微软的CTCP给出反馈意见。随后,核心网络部决定将CTCP作为一项因特网标准,提交给IRTF和IETF讨论,并由资深软件架构师大卫•赛勒博士挂帅。2008年,经过漫长的讨论,IRTF终于完成了CTCP的评审,同意CTCP可以安全地在因特网上部署和运行。在此期间,微软发布的每一款Windows产品中都包含了CTCP,包括最新发布的Windows7。
记得Vista刚发布不久,一个朋友打电话问我使用Vista中的CTCP会有什么不同。当我听说他家里使用的还是1Mbps的ADSL连接时,我笑了。“很遗憾,”我说,“你不会感觉到什么不同。但也许几年后,当家里直接接入光纤,你就会感到很不一样了。”但我知道,在越来越多的数据中心之间的高速链路上,将会有更多的CTCP流在奔驰,高效地传输着数据。而广大终端用户,也最终会因此得到更好的网络体验。