速读原著-TCP/IP(成块数据的吞吐量)

第20章 TCP的成块数据流

20.7 成块数据的吞吐量

让我们看一看窗口大小、窗口流量控制以及慢启动对传输成块数据的 T C P连接的吞吐量的相互作用。

图2 0 - 9显示了左边的发送方和右边的接收方之间的一个 T C P连接上的时间系列,共显示了1 6个时间单元。为简单起见,本图只显示离散的时间单元。每个粗箭头线的上半部分显示的是从左到右的携带数据的报文段,标记为 1, 2, 3, 等等。在粗线箭头下面表示的是反向传输的A C K。我们把A C K用细箭头线表示,并标注了被确认的报文段号。
在这里插入图片描述
在时间0,发送方发送了一个报文段。由于发送方处于慢启动中(其拥塞窗口为 1个报文段),因此在继续发送以前它必须等待该数据段的确认。

在时间1, 2和3,报文段从左向右移动一个时间单元。在时间 4接收方读取这个报文段并产生确认。经过时间 5、6和7,A C K移动到左边的发送方。我们有了一个 8个时间单元的往返时间RT T(R o u n d - Trip Ti m e)。

我们有意把 A C K报文段画得比数据报文段小,这是因为它通常只有一个 I P首部和一个T C P首部。这里显示仅仅是一个单向的数据流动,并且假定 A C K的移动速率与数据报文段的移动速率相等。实际上并不总是这样。

通常发送一个分组的时间取决于两个因素:传播时延(由光的有限速率、传输设备的等待时间等引起)和一个取决于媒体速率(即媒体每秒可传输的比特数)的发送时延。对于一个给定的两个接点之间的通路,传播时延一般是固定的,而发送时延则取决于分组的大小。在速率较慢的情况下发送时延起主要作用(例如,在习题 7 . 2中我们甚至没有考虑传播时延),而在千兆比特速率下传播时延则占主要地位(见图24-6)。

当发送方收到A C K后,在时间8和9发送两个报文段(我们标记为2和3)。此时它的拥塞窗口为2个报文段。这两个报文段向右传送到接收方,在时间1 2和1 3接收方产生两个A C K。这两个返回到发送方的A C K之间的间隔与报文段之间的间隔一致,被称为 T C P的自计时( s e l f - c l o c k i n g )行为。由于接收方只有在数据到达时才产生A C K,因此发送方接收到的A C K之间的间隔与数据到达接收方的间隔是一致的(然而在实际中,返回路径上的排队会改变ACK的到达率)。 图2 0 - 1 0表示的是后面1 6个时间单位。2个A C K的到达使得拥塞窗口从 2个报文段增加为 4个,而这4个报文段在时间1 6 ~ 1 9时被发送。第1个A C K在时间2 3到达。4个A C K的到达使得拥塞窗口从4个报文段增加为8个,并在时间2 4 ~ 3 1发送8个报文段。
在这里插入图片描述
在时间3 1及其后续时间,发送方和接收方之间的管道 ( p i p e )被填满。此时不论拥塞窗口和通告窗口是多少,它都不能再容纳更多的数据。每当接收方在某一个时间单位从网络上移去一个报文段,发送方就再发送一个报文段到网络上。但是不管有多少报文段填充了这个管道,返回路径上总是具有相同数目的 A C K。这就是连接的理想稳定状态。

20.7.1 带宽时延乘积

现在来回答窗口应该设置为多大的问题。在我们的例子中,作为最大的吞吐量,发送方在任何时候有8个已发送的报文段未被确认。接收方的通告窗口必须不小于这个数目,因为通告窗口限制了发送方能够发送的段的数目。

可以计算通道的容量为:
c a p a c i t y (bit) = b a n d w i d t h (b/s) × ro u n d-trip time ( s )

一般称之为带宽时延乘积。这个值依赖于网络速度和两端的 RT T,可以有很大的变动。例如,一条穿越美国(RT T约为60 ms)的T 1的电话线路(1 544 000 b/s)的带宽时延乘积为11 580字节。对于2 0 . 4节中讨论的缓存大小而言,这个结果是合理的。但是一条穿越美国的 T 3电话线路(45 000 000 b/s)的带宽时延乘积则为337 500字节,这个数值超过了最大所允许的T C P通告窗
口的大小(6 5 5 3 5字节)。在2 4 . 4节我们将讨论能够避免当前T C P限制的新的T C P窗口大小选项。T1电话线的1 544 000 b/s是原始比特率。由于每193个bit使用1个作为帧同步,因此实际数据率为1 536 000 b/s。一个T3电话线的原始比特率实际上是44 736 000 b/s,其数据率可达到44 210 000 b/s。在讨论中我们使用1.544 Mb/s和45 Mb/s。

不论是带宽还是时延均会影响发送方和接收方之间通路的容量。在图 2 0 - 11中我们显示了一个增加了一倍的RT T会使通路容量也增加一倍。

在图2 0 - 11底下的说明部分,通过使用一个较长的 RT T,这个管道能够容纳8个报文段而不是4个。
类似地,图2 0 - 1 2表示了增加一倍的带宽也可使该管道的容量增加一倍。
在这里插入图片描述
在图2 0 - 1 2的下部,假定网络速率已经加倍,使得我们能够只使用上面一半的时间来发送4个报文段。这样,该管道的容量再次加倍(假定该图的上半部分与下半部分中的报文段具有同样大小,即具有相同的比特数)。

20.7.2 拥塞

当数据到达一个大的管道(如一个快速局域网)并向一个较小的管道(如一个较慢的广域网)发送时便会发生拥塞。当多个输入流到达一个路由器,而路由器的输出流小于这些输入流的总和时也会发生拥塞。

图2 0 - 1 3显示了一个典型的大管道向小管道发送报文的情况。之所以说它典型,是因为大多数的主机都连接在局域网上,并通过一个路由器与速率相对较低的广域网相连(我们再次假定图中上半部分的报文段( 9 ~ 2 0)都是相同的,而图中下半部分的 A C K也都是相同的)。
在这里插入图片描述
在该图中,我们已经标记路由器 R 1为“瓶颈”,因为它是拥塞发生的地方。它从左侧速率较高的局域网接收数据并向右侧速率较低的广域网发送(通常 R 1与R 3是同样的路由器,如同R 2与R 4一样。但这并不是必需的,有时也会使用不对称的路径)。当路由器R 2将所接收到的分组发送到右侧的局域网时,这些分组之间维持与其左侧广域网上同样的间隔,尽管局域网具有更高的带宽。类似地,返回的确认之间的间隔也与其在路径中最慢的链路上的间隔一致。

在图2 0 - 1 3中已经假定发送方不使用慢启动,它按照局域网的带宽尽可能快地发送编号为1 ~ 2 0的报文段(假定接收方的通告窗口至少为 2 0个报文段)。正如我们看到的那样, A C K之间的间隔与在最慢链路上的一致。假定瓶颈路由器具有足够的容纳这 2 0个分组的缓存。如果这个不能保证,就会引起路由器丢弃分组。在 2 1 . 6节讨论避免拥塞时会看到怎样避免这种情况。

发布了1536 篇原创文章 · 获赞 1473 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/104782523