提高高延迟链路上大文件的传输速度

提高高延迟链路上大文件的传输速度

因此,我最近需要通过互联网从我们海外的一个办公室下载一个大文件。两个办公室都有双向 50Mbit 光纤链路,但往返时间非常长,在好天气下可能为 450ms,而在糟糕天气下则可能为 750ms。

最初,我尝试通过 VPN 连接提取文件,但经过几次传输失败(smb 在慢速链接上真的很糟糕)并且速度最高达到 128kBps 后,快速谷歌搜索显示我遇到了 Windows TCP 窗口缩放问题。

此后,我通过商业私有云类型的服务推送了该文件,这样可以更快地将文件传输到这里,因此以下内容更多的是出于好奇。

更有趣的是,两端的互联网访问都是通过 http 代理进行的。不过,我在两端的机器上都拥有管理员权限。

您将如何提高速度?

我尝试过的事情:

1) 两个 Linux 虚拟机之间的普通 SFTP,使用 corkscrew 通过 http 代理进行传输,并使用第三个中介将两端连接在一起。实现的速度:约 600kBps。

2) SFTP,但使用已用 HPN-SSH 修补的 OpenSSH。Corkscrew 和中间配置与 1 相同。速度几乎没有任何提升。

3) 按照 2 操作,但使用 LFTP 将pget -c -n 10传输分成多个块。这是目前为止最好的,速度达到 3.5MBps...

欢迎一切改进。

答案1

最近,我通过使用 UDP 包装 rsync 来解决长距离和高延迟链接的传输问题,使用优德作为一种交通工具。UDR 使用 UDT,其描述为:

UDT 是一种可靠的基于 UDP 的应用级数据传输协议,适用于广域高速网络上的分布式数据密集型应用。UDT 使用 UDP 传输批量数据,并具有自己的可靠性控制和拥塞控制机制。新协议的数据传输速度比 TCP 高得多。UDT 还是一个高度可配置的框架,可以适应各种拥塞控制算法。

默认情况下,这会禁用加密,这是我修补时需要的重要功能抗凝血酶,但 UDP 方法帮助很大。UDR/UDP 解决方案的主要优点是命令功能没有太大变化。您最终在 rsync 命令前面加上udr

udr rsync -avP --stats --delete --inplace /data/ mir1:/data/

另请参阅:SSH 流量的 WAN 优化可能性

答案2

我在$lastjob 也遇到了同样的问题。

纯粹在自己的基础设施内,我从未找到比 LFTP 更好的解决方案。

如果您能证明花费是合理的,您可以购买具有 WAN 加速功能的设备。基本上,它们会透明地将您的请求转换为更大的块,从而大大减少两个站点之间的通信量。Riverbed 可能是最知名的选择,但据我所知,Juniper 路由器也有一个模块可以做到这一点。目前我不知道有任何 FLOSS 选项。

我实际上发现最好的选择是 Dropbox 等,但这对您来说可能无法接受。

相关内容