如果我的系统中有两个 NIC 并且都连接到具有不同 IP 地址的不同 ISP,我可以在它们上分配我的网络流量以增加我的带宽。我已经看过像 net-bonding 这样的解决方案,我们创建了一个呈现给应用程序的逻辑接口,并且两个 NIC 被绑定在一起。
我还看到了使用 SCTP 或 SCPS-TP 协议而不是 TCP 的解决方案。
我的困境是我必须使用应用程序域中存在的解决方案。假设我正在为多个客户端系统编写软件,我不希望他们使用 sctp 更改其 tcp 或使用绑定太深(也使用 netbonding,它仅在 IP 来自同一网络时才有效)。
设计这种解决方案的关键问题是什么?
由于它们位于不同的网络上,因此无法将两个连接聚合或绑定在一起,但是您可以对传出连接进行负载平衡,以便第一个 TCP/IP 请求从接口 a 发出,第二个从接口 B 发出,第三个...等等。
不幸的是,您没有说明您正在使用什么操作系统,因为我不知道如何在 Windows / MacOS / Solaris / 等中执行此操作,我只会链接到 linux 解决方案。
这是在 linux 上设置路由的指南
您应该能够在出站设置路由时执行类似操作,无论它是什么操作系统。
另一方面,如果您需要对传入连接进行负载平衡,则建议使用循环 DNS 是 Adam Davis 建议的正确解决方案。
关于循环 DNS 的维基百科
可能最便宜的方法是以循环方式使用 DNS。
不要绑定两个接口 - 让它们具有不同的 IP 地址,并设置 DNS 服务器以在两个 IP 地址之间交替。
它不在您要求的应用程序域中,但实际上可能更容易做到。
-亚当
在软件中,您可以尝试使用路由做一些事情,我不完全确定任何操作系统将如何处理具有相同度量(成本)的两条路由。假设您的系统设置了默认网关
192.168.0.1
,以下命令 (Windows) 将配置第二个默认网关192.168.0.2
硬件将是更可靠的解决方案,因为无需重新配置单个系统。基本上,您需要一个具有负载平衡功能的双 WAN 路由器。
您的问题不是很清楚这是针对传入流量(服务器)还是传出流量(应用程序)。如果您正在处理传入流量,那么正如亚当建议的那样,循环 DNS是最简单的解决方案。
尽管这可能比您寻找的时间/金钱更多,但核心解决方案是使用 BGP。通过 BGP 对等互连,您可以申请并接收自己的 IP 地址范围。然后,此 IP 范围仅适用于您,与您的 ISP 无关。然后,您的两个 ISP 可以同时将流量引导到您,因为他们都知道您的 IP 范围。
http://en.wikipedia.org/wiki/Border_Gateway_Protocol
我一直很幸运地通过双 WAN 路由器运行它,就像许多 DrayTek 设备之一。这些对于典型的网上冲浪工作正常,但您必须担心更高级的会话感知或检查引用 IP 地址的应用程序。在某些情况下,例如 VPN 连接或 voip/视频会议,您可能会遇到连接问题,从而抵消增加带宽的好处。通常,您可以通过将端口静态分配给单个连接来解决此问题。