如果我的系统中有两个网卡,并且两个网卡都连接到具有不同IP地址的不同ISP,我可以将networkingstream量分配给它们以增加带宽。 我已经看到了像net-bonding这样的解决scheme,我们在这里创build一个呈现给应用程序的逻辑接口,并将两个NIC绑定在一起。
我也看到使用SCTP或SCPS-TP协议而不是TCP的解决scheme。
我的困境是我必须使用应用程序域中的解决scheme。 假设我正在为多个客户端系统编写一个软件,我不希望他们使用sctp来更改他们的tcp,或者使用绑定来进行太深入的绑定(也使用netbonding,只有在IP来自同一个networking时才能工作)。
devise这样一个解决scheme的关键问题是什么?
由于它们位于不同的networking上,因此无法将两个连接聚合或绑定在一起,但是可以对传出连接进行负载平衡,以便第一个TCP / IP请求出去,接口a,第二个接口B,第三个…等等
不幸的是,你没有说明你使用的是什么操作系统,因为我不知道如何在Windows / MacOS / Solaris /等中执行此操作,我只能链接到Linux解决scheme。
这里是一个在Linux上设置路由的指南
你应该能够做出类似的出站设置在任何操作系统上的路由。
另一方面,如果您需要负载均衡所包含的连接,则循环DNS的build议是Adam Davisbuild议的正确解决scheme。
维基百科上的循环DNS
可能最便宜的方法是以循环方式使用DNS。
不要绑定两个接口 – 让他们有不同的IP地址,并build立DNS服务器来交换这两个IP地址。
它不在您请求的应用程序域中,但实际上可能更容易。
-亚当
在软件中,你可以尝试做一些路由的东西,我不完全确定如何操作系统将处理具有相同的指标(成本)的两条路线。 假设您的系统设置了默认网关192.168.0.1 ,则以下命令(Windows)将configuration第二个默认网关192.168.0.2
ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.2 METRIC 20
硬件将是更可靠的解决scheme,因为不需要重新configuration单个系统。 基本上你会想要一个具有负载平衡function的双WAN路由器 。
你的问题是不是很清楚,如果这是传入stream量(服务器)或传出stream量(应用程序)。 如果你正在处理传入的stream量,那么正如亚当所说, 循环DNS是最简单的解决scheme。
虽然它可能比你想要的更多的时间/金钱,但核心的解决scheme是使用BGP。 使用BGP对等,您申请并接收您自己的IP地址范围。 这个IP范围只适用于你,与你的ISP无关。 然后,您的ISP可以同时将stream量引导至您,因为他们都知道您的IP范围。
我一直有最好的运气,通过像许多DrayTek设备之一的双WAN路由器运行。 这些工作对于典型的网上冲浪工作很好,但是您不得不担心更高级的会话感知应用程序或检查引用的IP地址。 在某些情况下,例如VPN连接或voip /video会议,您可能会遇到连接问题,从而否定带宽增加带来的好处。 一般来说,你可以通过静态分配端口到一个连接来解决这个问题。