在两个 Linux 服务器之间进行基本 WAN 优化的方法,将单个连接拆分为多个并行连接?

在两个 Linux 服务器之间进行基本 WAN 优化的方法,将单个连接拆分为多个并行连接?

Linux 上有一些实用程序可让您解决导致您无法利用全部带宽的 WAN 条件。它们通过并行执行多个请求来实现这一点(例如,lftp 及其 pget 命令)。

是否有一些适用于 Linux(特别是 CentOS)的基本 WAN 优化方法/工具,可使两台服务器之间的所有流量(可能只在一个端口上就足够了)并行拆分到多个同时连接上(当然对应用程序是透明的),以便无法进行并行连接的程序/实用程序仍可实现最大吞吐量。我知道某些实用程序可以使用 xargs 的一些技巧进行并行化,但对于不支持这一点的实用程序来说,这是相关的,而且最好让它透明以保持简单。

我尝试在 Google 和 serverfault 上搜索,但没有什么收获。任何帮助都将不胜感激。谢谢!

答案1

如果并行使用多个连接比使用单个连接能帮助您使用更多带宽,那么原因就在于 TCP 窗口。如果传输两端之间的带宽延迟乘积很大,则最佳 TCP 窗口大小可能大于一端或两端的 TCP 堆栈愿意使用的最大大小。使用多个 TCP 连接可让您将有效窗口大小增加一倍。

由此可见,无论在第 3 层或以下层建立多少隧道都无法达到同样的效果。无论你建立哪种隧道,隧道的有效负载仍然是 TCP 连接,如果只有一个连接,它将使窗口达到最大。

你唯一的选择是:

  • 增加传输两端的内核最大 TCP 窗口大小。

  • 在您的应用程序中使用多个 TCP 连接。

  • 在第 4 层或以上构建隧道。这可以是代理服务器(如 HTTP 或 socks 代理),也可以是简单的 TCP 连接转发器,您可从该转发器连接到本地主机,然后该转发器将连接转发到其他地方。隧道软件可以承载在多个底层 TCP 连接上平衡的流量负载(或者它可以完全执行其他操作)。

    我不知道有任何软件可以做到这一点。

相关内容