通过高速,高延迟的WAN链接传输单个大文件的最佳方法是什么?


21

这看起来与这一个,但它是有所不同的。

两个公司站点之间存在此WAN链接,我们需要传输一个非常大的文件(Oracle转储,约160 GB)。

我们已经拥有完整的100 Mbps带宽(经过测试),但是由于TCP的工作方式(ACK等),看起来单个TCP连接无法使其达到最大。我们使用iperf测试了该链接,当增加TCP窗口大小时,结果发生了巨大变化:使用基本设置,我们可以达到〜5 Mbps的吞吐量,而使用更大的WS则可以达到〜45 Mbps,但仅此而已。网络延迟约为10毫秒。

出于好奇,我们使用多个连接运行了iperf,我们发现,当运行其中四个连接时,它们确实可以达到〜25 Mbps的速度,从而填满了所有可用带宽;因此,关键在于执行多个同时传输。

使用FTP,情况变得更糟:即使使用优化的TCP设置(高窗口大小,最大MTU等),单次传输也无法获得超过20 Mbps的速度。我们尝试同时通过FTP传输一些大文件,的确比传输单个文件好很多。但是罪魁祸首变成了磁盘I / O,因为很快就会从同一磁盘瓶颈中读取和写入四个大文件;同样,我们似乎无法将单个大文件拆分为较小的文件,然后将其合并,至少在可接受的时间内(显然,我们不能花时间将文件拼接/合并回去)。转移)。

理想的解决方案是使用多线程工具,该工具可以同时传输文件的各个块。像eMule或BitTorrent这样的点对点程序已经可以执行,但是从单个源到单个目标。理想情况下,该工具将允许我们选择要使用的并行连接数,并且当然可以优化磁盘I / O,以免在文件的各个部分之间疯狂地跳转。

有人知道这样的工具吗?

或者,有人可以提出更好的解决方案和/或我们没有尝试过的东西吗?

PS我们已经考虑过将其备份到磁带/磁盘上并以物理方式将其发送到目的地。如果WAN不削减它,这将是我们的极端措施,但正如Tanenbaum所说,“永远不要低估充满胶带的旅行车的带宽。”


1
出于好奇,花时间真的那么重要吗?另外,在160Gb传输期间使链接饱和不会对网络的其余部分产生影响吗?
布赖恩

6
我记得在99年代曾向客户交付过一些DLT自动装带器和几百个墨盒。我们计算了装有200个DLT IV盒式磁带的汽车的原始容量(每个原始容量35GB)约为6.3TB。我开车约55分钟从我们的办公室开车到客户所在地,为“疯狂的州际公路上的地铁驾驶埃文”提供了大约118GB / min的有效吞吐量。吞吐量不错,但是延迟却是致命的...>微笑<
Evan Anderson

布莱恩(Bryan):是的,时间很关键(使用标准FTP和标准网络设置大约需要20小时),并且不会,饱和连接不会有问题,因为传输将安排在下班时间进行。
Massimo 2010年

埃文(Evan):这正是我的意思;-)
马西莫(Massimo)2010年

我一直在处理类似的情况,使用〜200GB的SQL .bak,唯一能使WAN链接饱和的方法是使用FTP。我最终使用零压缩的7-zip将其分成512MB的块。“压缩”和“减压”的时间合宜地短;总的来说比在全国范围内推广物理媒体要好得多。(这些站点位于美国的对岸)
Adrien

Answers:


15

搜索“高延迟文件传输”会带来很多有趣的结果。显然,这是CompSci社区和商业社区都深思熟虑的问题。

一些符合要求的商业产品:

  • FileCatalyst的产品可以使用UDP或多个TCP流通过高延迟网络传输数据。他们还具有许多其他功能(动态压缩,增量传输等)。

  • Aspera 的fasp文件传输“技术”似乎也很符合您的需求。

在开源世界中,uftp项目看起来很有希望。您并不是特别需要它的多播功能,但是其基本思想是向接收方发送文件,在传输结束时接收丢失块的NAK,然后发送NAK块(起泡,冲洗,重复)。听起来这将满足您的需求,因为直到文件传输完成一次之后,接收方才发出ACK(或NAK)信号。假设网络只是潜在的,而不是有损的,这也可以满足您的需求。


uftp看起来确实很有前途,我能够在两台台式计算机之间实现30 Mbps的速度(在磁盘性能方面绝对不那么出色);我将很快在“真实”服务器上对其进行测试。由于注册表格中的某些错误,我无法获得FileCatalyst演示许可证(它一直在说请求编号已被使用),而fasp只是不提供它们。
Massimo '02

两台具有适当磁盘和较大接收缓冲区的计算机之间的60 Mbps。大!
Massimo 2010年

我喜欢免费/开源软件!>微笑<我肯定会尝试一些我正在做的事情给uftp。我想知道在几年前我使用“ udpcast”组合而成的基于Linux的多播磁盘映像解决方案中该怎么做。
埃文·安德森

不久前,我问serverfault.com/questions/173358/multicast-file-transfers最终我得出的结论是,uftp和mrsync是首选工具。如果您对uftp进行任何有用的操作,请在此处发表评论,因为我今年将再次使用其中的一个(会议准备)。
杰德·丹尼尔斯

2
当我使用UFTP,UDT和Tsunami UDP时,UFTP在这三个方面的性能最差。当然,它可能是最成熟的协议。UDT仅提供一个简单的传输协议,并且被设计为充当开发定制软件的库,而Tsunami的作者实际上将我们指向UDT,因为最近由于时间紧迫,Tsunami尚未得到积极开发。
Thomas Owens

9

真的很奇怪。建议设置一个简单的Web服务器在网络上托管文件(顺便建议我建议使用nginx),然后在另一端安装一台装有Firefox的PC,然后安装DownThemAll扩展名。

这是一个下载加速器,支持分块和重新组装。
您可以将每次下载分成10个块进行重新组装,这实际上可以使事情变得更快!

(注意:我从未尝试过在最大160GB的容量上使用它,但在20GB的ISO文件上确实能很好地工作)


同一台计算机之间的40 Mbps。看起来也很好。
Massimo 2010年

1
axel.alioth.debian.org替换firefox,这不是一个坏建议。
贾斯汀2010年

7

UDT运输可能是高延迟通信中最流行的交通工具。这导致了他们称为Sector / Sphere的其他软件上的“高性能分布式文件系统和并行数据处理引擎”的出现,值得一看。


1
我与UDT进行了一些合作,以通过高延迟和高分组丢失率在网络上进行传输。与基于TCP的协议相比,UDT在延迟和数据包丢失方面具有更大的弹性,尤其是在您更改拥塞控制算法以适合您的网络拓扑时。
Thomas Owens

甚至还内置了带有UDT的rsync版本,称为“ UDR”。github.com/LabAdvComp/UDR
马克斯

5

我的回答有点晚了,但是我在寻找fasp时才发现了这个问题。在搜索过程中,我还发现了以下内容:http : //tsunami-udp.sourceforge.net/,即“海啸UDP协议”。

从他们的网站:

一种快速的用户空间文件传输协议,使用TCP控制和UDP数据在超高速长距离网络(≥1 Gbps甚至10 GE)上进行传输,旨在提供比同一网络上的TCP更大的吞吐量。网络。

就速度而言,该页面提到了此结果(通过1GBit链接使用了芬兰赫尔辛基和德国波恩之间的链接:

图1-互联网上的国际传输,平均速度为800 Mbit /秒

如果要使用下载加速器,请看lftp,据我所知,这是唯一可以进行递归镜像的下载加速器。


1
在我之前在Steve-o的回答中评论的项目中,我们对UDT,海啸UDP和UFTP进行了基准测试。我们发现延迟对性能有很大影响,而数据包丢失却没有(与Tsunami文档相反)。向测试网络增加100ms的延迟会将Tsunami的性能从大约250Mbits /秒降低到大约50Mbits /秒(我相信我的数字和单位是正确的-已经有一段时间了,但这是一个巨大的下降)。另一方面,没有最小延迟网络的情况下,增加10%的数据包丢失,只会将性能从250Mbits /秒降低到大约90Mbits /秒。
Thomas Owens

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.