你的水管是不是太大了?

长胖网络的问题

几年前,我参与了一家医疗保健行业的大公司的咨询项目,该公司正在进行数据中心迁移。雷竞技电脑网站当网络和服务器在新的位置建立起来后,他们需要大量迁移数据,所以公司确保了一对OC192电路,在每个电路上提供近10Gbps的吞吐量。

一切似乎都井然有序,于是他们开始传送数据。令他们惊讶的是,即使是通过千兆以太网交换机连接到网络的服务器,其吞吐量也只有每秒几十兆。在耗尽了所有正常的故障排除步骤之后,他们决定引入新的视角。我们的发现可能与我们的直觉相悖:这家公司的管道实在太大了。该公司正遭受着长胖网络(LFN)的困扰。

+也在网络世界有个足球雷竞技app拔掉数据中心的插头雷竞技电脑网站+

这里处理的LFN问题与OSI模型的一个层中的一个协议的一个功能有关:传输控制协议,或TCP。第4层是传输层,提供多种功能,包括:

  • 分割的数据。如果应用程序发送的数据量超过了网络或发送方或接收方缓冲区的能力,传输层可以将数据分割成段并分别发送。
  • 分段订单交付。如果一块数据被分成多个段并分别发送,就不能保证这些段将以正确的顺序到达目的地。传输层负责接收所有的段,如果有必要,将数据流按正确的顺序放回一起。
  • 多路复用。如果一台计算机运行多个应用程序,传输层将它们区分开来,并确保到达网络的数据被发送到正确的应用程序。

此外,传输层传统上负责数据的可靠性,或保证数据的交付。并不是所有的传输层协议都提供可靠性机制,给定应用程序使用哪个传输层协议取决于许多考虑因素。然而,目前大多数数据遍历网络都使用TCP,它确实提供了一种可靠的机制。TCP的可靠性机制是LFN问题的核心。

当数据准备发送TCP执行以下事件序列:

1.启动计算机上的TCP与远程计算机上的TCP建立连接。

2.每台计算机公布其窗口大小,窗口大小是另一台计算机在暂停等待应答之前应发送的最大数据量。所显示的窗口大小通常与计算机接收缓冲区的大小有关。

3.TCP开始以等于最大段大小或MSS(也由主机协商)的间隔传输数据。一旦传输的数据量等于窗口大小,TCP将暂停并等待确认。在收到确认信息之前,TCP不会再发送任何数据。

4.如果没有及时接收到确认,TCP将重新传输数据并再次暂停等待确认。

这种“发送并等待”的可靠性方法确保了数据已经被交付,并将应用程序及其开发人员从每次想要增加其应用程序的可靠性时不得不重复工作中解放出来。然而,这种方法由于两个因素导致效率低下:1)计算机在暂停前发送多少数据,和2)计算机需要等待多长时间来接收一个确认。这两个因素对于理解并最终克服LFN问题至关重要。

我们现在有足够的信息来理解LFN问题。TCP在短瘦网络上有效,但在长胖网络上无效。网络越长(即延迟越高),TCP在发送更多数据之前就必须等待确认的时间就越长。而且网络越胖(也就是说,发送者将数据序列化到网络上的速度越快),TCP闲置的时间百分比就越大。当您将这两者结合在一起时——长和胖,或者高延迟和高带宽——TCP会变得非常低效。

这里有一个类比。假设你有一位同事话很多,并不是他有很多话要说,他只是说得很慢。当你们面对面交谈时,他会不停地说啊说啊说。他会马上承认你听到了他说的话,所以他可以继续说下去。几乎没有死空气。这相当于一个短瘦网络。

现在让我们假设你的同事成为一名宇航员,飞往火星。他打电话给你,告诉你他的宇航员电话旅行,他真的很兴奋,所以他说得很快。但是延迟真的很长。因为他看不见你,所以他决定每隔25个词就暂停一下,等你回答后再继续说。

既然你的朋友说话真的很快,让我们假设他只需要5秒钟就能吐出25个单词,然后停下来等待回应。如果地球和火星之间的往返延迟是10秒,他只能说33%的时间。剩下的67%的时间,你和火星人之间的线是闲置的。

如果他说话不那么快,也没什么大不了的。如果他花两分钟说出同样的25个单词,而不是在五秒钟内脱口而出,那么他说话的时间大约是92%。同样地,如果您之间的往返延迟更低,比方说两秒,线路的利用率也会上升。在这种情况下,他会说5秒钟,然后停顿2秒钟,达到大约71%的利用率。

让我们看一个真实的网络场景。两台计算机,计算机A和计算机B,位于通过T-3链路连接的两个不同的位置。计算机连接到千兆以太网交换机。单向延迟为70毫秒。计算机A使用FTP PUT操作启动到计算机B的数据传输。以下事件发生的顺序(为了简单起见,我将省略一些可能发生在现实世界中的TCP优化):

1.计算机A启动到计算机B的TCP连接以进行数据传输。

2.每台计算机公布的窗口大小为16,384字节,协商的MSS为1,460字节。

3.计算机A开始向计算机B发送数据,其MSS为1,460字节,窗口大小为16,384字节,在暂停等待计算机B的确认之前,计算机A可以发送11段数据。

那么我们的样本网络有多高效呢?为了解决这个问题,我们需要计算两个数字:

1.在任何给定时间点上可能在线路上运行的最大数据量。这叫做带宽延迟积。把它想象成一条输油管道:如果石油以每小时10英里的速度流动,而你每分钟抽10加仑的油,那么一英里长的管道中有多少油呢?(答案:60加仑)。在我们的示例中,T-3的带宽为44.736Mbps(或5.592兆字节每秒),延迟为70毫秒。因此带宽延迟的乘积是5.592 x .07,或者大约0.39MB (399.36KB)。这意味着在任何给定的时间点,如果T-3链路完全饱和,那么在每个方向上都有0.39MB的数据在运行。

2.在计算机A暂停等待确认之前实际传输的数据量。在我们的示例中,计算机A发送了11个段,每个段是1460字节。因此,计算机A只能发送1460 x 11 = 16,060字节(15.68KB),然后必须暂停并等待计算机B的确认。

因此,如果网络连接可以支持399.36KB在任何给定的点,但计算机A只能把15.6KB在线上,然后暂停等待确认,效率只有3.9%。这意味着链接有96.1%的时间是空闲的!

相关:
12 第1页
第1页共2页
工资调查:结果在