章节1. 延时与带宽

速度是一种功能

在过去的几年中,Web性能优化领域(WPO)的出现及快速成长无疑透露了一个讯息,即对于用户来说,速度及用户体验的重要性和需求也在不断增长。而且对于我们所处的互联网而言,这并非简单的技术上对速度的需求,而是由互联网企业业绩考核所得出的经验结果所驱动的需求:

  • 更快的网站导致更好的用户参与度
  • 更快的网站导致更好的用户保留率
  • 更快的网站导致更高的转化率

简单的来说,速度是一种功能。展开来说,我们需要理解实际中的许多因素和基本的限制。在这张中,我们将会关注决定所有网络流量性能的这两个关键部分:延时和带宽(图 1-1)。

延时

从发包的源头到收包的终点所花的时间

带宽

一个逻辑或物理通道的最大吞吐量

理解了带宽和延时之间的相互关系后,我们将尝试用一些工具来深入研究TCP,UDP及所有应用协议的内部原理及性能特征。

利用Hibernia Express减少传输延时

在金融市场,延时对于许多高频交易算法而言是一个非常重要的指标。因为几毫秒的误差可以转化为数百万的盈亏。 早在2011年,华为和Hibernia Atlantic就开始新铺3000英里的光纤链路(“Hibernia Express”)。这条光线跨越了太平洋,从伦敦延伸到纽约。它的主要目标就是通过一条比所有其他现有的传输链路更短的路径,以减少5毫秒的延时。 一旦投入使用,该电缆将仅用于金融机构,其费用将超过4亿美元,同时节省8000万美元每毫秒!延时是昂贵的——字面和比喻地。

延时的诸多原因

延时是指一条消息或一个包从起点到终点的这个过程所花费的时间。这是一个简单且有用的定义,但是通常遗漏了许多有用的信息——每个系统都包含多个影响其发送消息总体时间的因素或组成,而且弄清楚这些组成究竟是什么以及什么决定它们的性能,也是非常重要的。

让我们来仔细看看一些常见的成因组成,以网络上的一个典型路由器为例,它负责转发客户端和服务器之间的消息:

传播延迟

一条消息从发送方到接收方所花的时间,这可以用一个距离除以信号传播速度的公式来估算。

传输延迟

所有包的比特被推到链路上所花的时间,这可以用包长除以链路的数据传送速率来估算。

处理延迟

处理包头,检查位级错误及决定包的终点所花的时间。

排队延迟

接收到的包在队列等待被处理所花的时间。

客户端和服务端之间的延时是上述所有延迟的总和。传播延时是由距离和信号传波的介质所决定的——正如我们所看到的,传播速度总是比光的速度要小。另外,传输传输延时是由传输层的实际速率决定的,而与客户端和服务端之间的距离毫无关联。譬如,假设我们想分别在1Mbps和10Mpbs的链路上传输一个10Mb大小的文件,那么在1Mbps链路上将花费10秒,而在100Mbps的链路上则只需0.1秒。

一旦一个包达到路由器,这个路由器将检查其包头,从而决定其去向,同时也可能会对其中数据进行其他检查——当然,这会影响效率。通常来说,大多数逻辑会在硬件中完成,因此处理延时是很小的,但仍然不可忽略。最后,如果包的速率超过了路由器的最大处理能力,那么这些包将在入队列中缓存。而消耗在等待队列中的时间,便成为排队延时。

每个包在网络中传输将发生多次类似上述的延时。源地址与目的地址越远,那么传播所需要的时间就越长。整个过程中路由的次数越多,每个包的处理和传输时间就越长。最后,链路的流量负载越高,包在入队列中的延时可能性就越大。