网络带宽和拥堵

——应用性能在网络中意味着什么?

在谈到网络应用性能时,我们可能都认为是带宽太小了和网络拥堵造成的。我们可能都认为更高的速度和更少的流量会解决所有问题。在实践中,消除与网络有关的性能问题是数据通信中最复杂的任务之一。在这篇文章中,我们从应用性能分析的角度来研究带宽和拥堵之间的关系。

带宽

带宽是信号处理中的一个参数,它定义了传输或存储信号的主要频率成分在频谱中的区间宽度。带宽的特点是有一个下限和一个上限的临界频率。根据不同的应用,对这两个极限值有不同的定义,而且根据不同的背景,不同的带宽作为特征值存在。术语 “带宽 “被用来描述信号传输系统。

我们将带宽延迟定义为在消息(数据包)的第一个发送比特和最后接收的比特(数据包)之间发生的序列化的影响。对性能分析最重要的是我们所说的 “瓶颈带宽”。这表示连接在其最慢点的速度,是数据包到达目的地速率的主要影响因素。因此,对于每个数据包,序列化延迟是由连接速度给出的。例如,对于一个4Mbps的连接,串行化一个1500字节的数据包需要大约3毫秒。这种计算可以很容易地扩展到整个操作。我们确定连接上发送或接收的字节数,并将其乘以8位。然后我们用总和除以瓶颈连接速度。然而,我们必须考虑到非对称连接有不同的上游和下游速度。

有效带宽 = [发送/接收的字节数之和] x [8位] / [瓶颈速度]

一次操作(在2,048Kbit/s连接上发送100KB字节,接收1,024KB)的带宽影响计算如下。

上游带宽影响:[100,000 * 8] / 2,048,000] = 390毫秒
下游带宽影响:[1,024,000 * 8] / 2,048,000] = 4,000毫秒
为了达到更高的精度,应考虑到各自传输介质(以太网和广域网链接)的不同数据包头。数据包头的差异可以在每个数据包的8或10字节之间。

然而,带宽限制只影响有关操作期间的数据传输。每个传输的数据流都会因网络而经历额外的延迟。TCP流量控制和其他因素可能导致额外的延迟。随着组织的通信渠道的密集使用,其对网络延迟的敏感性也会增加。在实践中,可用的带宽减少了。然而,这一事实被延迟的增加所掩盖。

该功能是否使用了全部的可用带宽?这个问题不容易回答。最简单的方法是将每个方向的数据吞吐量绘制成图,将单向的吞吐量与相关链路的测量带宽进行比较,从而直观地了解可用带宽。如果答案是“是”,那么就必须在可用带宽中寻找运行瓶颈。如果答案是 “否”,则存在限制性能的其他限制。然而,这并不意味着带宽不是一个重要的限制。它只是意味着可能有其他因素阻止操作达到带宽的限制。

图1:FTP传输受10Mbit/s可用带宽的限制

网络资源通常在用户之间共享。如果在一条链路上传输多个连接,TCP流控制可以防止单个数据流消耗所有可用带宽。因此,可用带宽限制了吞吐量。

拥堵

当数据到达网络接口的速度超过媒介传输数据的速度时,就会出现过载。如果发生这种过载,要传输的数据包会被放在输出队列中。在这里,数据包一直保持到队列中所有先前的数据包都被发送完毕。网络中各个队列的延迟加起来就是端到端的网络延迟。这对所有的数据传输都有重大影响。数据密集型应用会受到往返延迟增加的影响,而正常应用则会受到TCP流量控制和拥堵避免算法的影响。

在数据流中,拥堵一开始会通过逐渐增加发送器的拥堵窗口(CWD)来减少TCP慢速启动算法的值。此外,增加了带宽延迟乘积(BDP)的延迟分量,这增加了接收器的TCP窗口被完全利用的概率。

如果网络拥堵加剧,队列可能会填满其中一个路由器的缓冲区。如果传入的数据包超过了队列的存储容量,额外的数据包必须被丢弃。路由器中已经实现了各种算法,确定哪些数据包应该被丢弃。这些算法可能会导致拥堵分散在几个连接上,或者只有低优先级的流量受到影响。如果TCP检测到这些丢弃的数据包,总是假设过载是可疑的原因。数据包丢失导致发送的TCP将其拥塞窗口减少50%,这时慢速启动算法在避免拥塞阶段又逐渐增加。

网络路径的延迟最小。从理论上讲,这是基于两个部分:链路的延迟(距离)和路由的处理延迟。这通常称为路径延迟。超过这个数字的任何延误都可以归因于拥堵。

测量拥塞数据包的最准确方法是在客户端和服务器站点收集数据,然后合并两个跟踪文件并生成事务跟踪。该方法确保了所传输的每个数据包的准确发送和接收时间戳。然后,我们可以分析事务的运行时。如果传输时间高于最小检测值(如果该值高于路径延迟),则可能存在交通拥塞。这是基于最小观测运行时间等于路径延迟的假设。

过载可以借助于时间图来表示。这张图显示了最小、平均和最大延迟之间的差异。你可能会发现非常短暂的拥堵,只影响一小部分数据包。你也可能发现较长时间的过载影响到数据流中的大部分数据包。下面的时序图说明了这些情况。

图2:数据包吞吐时间的表示。平均运行时间为103毫秒,仅比最小路径延迟高3毫秒。

图3:流量拥堵的表示;路径中的传输时间为5毫秒,平均传输时间为141毫秒,最大传输时间超过1000毫秒。

纠正措施:带宽和流量限制

消除纯粹的带宽限制很容易:你只需增加物理基础设施的带宽。在逻辑层面上(在应用中),提高吞吐量往往更复杂。

数据压缩是减少数据的一种方法。缓存和瘦客户端解决方案也可以提供帮助。

过载可以通过类似的方式来消除。另外,也可以使用优先权来确保某些数据流在网络中优先传输。

我们如何监测和管理网络中的拥堵?

在接下来的一篇文章中,我们将分析丢包的影响,并介绍TCP慢速启动算法和拥堵窗口。