通过单个 NIC 进行负载平衡以克服每个连接的限制

通过单个 NIC 进行负载平衡以克服每个连接的限制

我有一个奇怪的设置,ISP 提供非常快的连接(10 Gbps),但将每个连接限制为 50 Mbps。这对于多线程应用程序来说没问题,因为我只需增加线程数即可。但我想为单线​​程应用程序解决此问题。我正在运行 Linux,这都是 TCP 流量(必须如此)- 我觉得使用 iptables 有一个好方法可以做到这一点,但这有点超出我的理解范围。我的设备上只能有一张 NIC 卡。有没有办法制作一个负载平衡器,只需在同一 NIC 上创建多个连接,然后循环调度数据包?(基本上,我已经在多线程应用程序的软件中这样做了……但想在操作系统级别执行此操作)。

问题解决了 发生的事情是……完全不受 ISP 的限制。我试图连接到具有固定 TCP 窗口大小的设备。将这些设备更改为动态 TCP 窗口大小可将每个连接的吞吐量提高到最大值。更多信息请见此处:

https://en.wikipedia.org/wiki/Bandwidth-delay_product

答案1

我觉得这没有意义。

当然,您可以使用多个源 IP(无论是来自多个主机、多个 NIC 还是单个 NIC),但话又说回来,您可能会将所有这些 IP NAT 到您拥有的公共 IPv4 地址 - 因此从外部来看没有区别。您也可以使用多个线程。

但显然,您可以尝试将多个源 IP 地址绑定到单个 NIC,而不需要做太多事情。

答案2

限制的方式有两种 - 基于每个虚拟机或基于每个 vNIC。如果是每个虚拟机,那么除了威胁要迁移到其他提供商或实际迁移提供商之外,您别无选择,显然前者可能行不通。如果是每个 vNIC,那么您可以自己添加更多(如果可能)或再次要求提供商添加它们,如果他们拒绝,则再次威胁离开。

最终,您有一个业务需求,但听起来您的提供商没有满足它,因此请准备好多付一点钱来获得您所需要的。

相关内容