第24章 TCP的未来和性能
24.8 TCP的性能
在8 0年代中期出版的数值显示出 T C P在一个以太网上的吞吐量在每秒 100 000~200 000字节之间([Stevens 1990]的1 7 . 5节给出了参考文献)。从那时起事情已经发生了许多改变。现在通常使用的硬件(工作站和更快的个人电脑)每秒可以传输 800 000 字节或者更快。
在10 Mb/s的以太网上计算我们能够观察到的理论上的T C P最大吞吐量是一件值得做的练习[ Wa r n o c k 1 9 9 1 ]。我们可以在图2 4 - 9中看到这个计算的基础。这个图显示了满长度的数据报文段和一个A C K交换的全部的字节。
我们必须计及所有的开销:前同步码、加到确认上的填充字节、循环冗余检验 C R C以及分组之间的最小间隔(9 . 6 m s,相当在10 Mb/s速率下的1 2个字节)。
首先假定发送方传输两个背对背、满长度的数据报文段,然后接收方为这两个报文段发送一个A C K。于是最大的吞吐量(用户数据)为:
如果T C P窗口开到它的最大值( 6 5 5 3 5,不使用窗口扩大选项),这就允许一个窗口容纳 4 4个 1 4 6 0字节的报文段。如果接收方每个报文段发送一个 A C K,则计算变为:
这就是理论上的限制,并做出某些假定:接收方发送的一个 A C K没有和发送方的报文段之一在以太网上发生冲突;发送方可按以太网的最小间隔时间来发送两个报文段;接收方可以在最小的以太网间隔时间内产生一个 A C K。不论在这些数字上多么乐观, [ Warnock 1991]在一个以太网上使用标准的多用户工作站(即使是快的工作站)测量到了一个连续的 1 075 000字 节/秒的速率,这个值在理论值的 9 0%之内。
当移到更快的网络上时,如 F D D I(100 Mb/s),[Schryver 1993]指出三个商业厂家已经演示了在F D D I上的T C P在80 Mb/s~90 Mb/s之间。即使在有更多带宽的环境下, [Borman 1992]报告说两个Gray Y- M P计算机在一个800 Mb/s的H I P P I通道上最大值为781 Mb/s,而运行在一个Gray Y- M P上的使用环回接口的两个进程间的速率为 907 Mb/s。
下面这些实际限制适用于任何的实际情况 [Borman 1991]。
- 不能比最慢的链路运行得更快。
- 不能比最慢的机器的内存运行得更快。这假定实现是只使用一遍数据。如果不是这样(也就是说,实现使用一遍数据是将它从用户空间复制到内核中,而使用另一遍数据是计算T C P的检验和),那么将运行得更慢。[Dalton et al. 1993]描述了将数据复制数目减少从而使一个标准伯克利源程序的性能得到改进。 [Partridge and Pink 1993]将类似的“复制与检验和”的改变与其他性能改进措施一道应用于 U D P,从而将U D P的性能提高了约3 0%。
- 不能够比由接收方提供的窗口大小除以往返时间所得结果运行得更快(这就是带宽时延乘积公式,使用窗口大小作为带宽时延乘积,并解出带宽)。如果使用2 4 . 4节的最大窗口扩大因子1 4,则窗口大小为1.073 千兆字节,所以这除以RT T的结果就是带宽的极限。
所有这些数字的重要意义就是 T C P的最高运行速率的真正上限是由 T C P的窗口大小和光速决定的。正如[Partridge and Pink 1993]中计算的那样,许多协议性能问题在于实现中的缺陷而不是协议所固有的一些限制。