是否存在一种方法来分割三个路由上的TCP / IPstream量,并使用第一个数据包到达目的地?
我想象的是多宿主,但要求每次都在三条链路上发送stream量。
我们有三条路由(通过到不同ISP的不同物理接口)到一个IP地址,并希望通过冗余/故障切换实现最小的延迟。 我们希望应用层能够看到一个IP地址,但是stream量最好利用这三个连接。
延迟/可用性可以在所有三个连接上改变,所以我想知道是否有可能将数据包发送到所有路由,并且获得的数据包是被使用的数据包。
你提出的方法在我看来是完全错误的。
它浪费资源,就像“安全通过默默无闻”修补一个问题,而不是直接修复,而且这会造成复杂性,通过一个更好的devise解决scheme可以避免(通过三个环节一次解决networking问题,我不不喜欢那个!)
正如你所说,每个链路的延迟将会波动。 我在这里看到了一些方法,无论哪种方式,解决scheme都需要为这种情况devise(解决延迟和RTT问题)。 看看这个解决scheme,你的实际问题,而不是“如何一次使用所有三个链接?”的元问题。
首先,如果您有三个链接,请将其中的1个或2个链接起来,然后将这笔钱重新投入到有保证的延迟时间内。 互联网服务供应商(ISP)会在延迟的情况下销售点到点链接(所以要到达目的地),然后在那里获得赢家。 如果你喜欢,你可以保留第三个链接作为备份。
第二个select使用思科的OER(最佳边缘路由)。 其他厂商也有类似的技术,或者如果你有一个* nix防火墙/路由器/网关,你也可以为你自己编写一个类似的解决scheme。 以Cisco OER为例,它允许您设置testing(即ping)到目的地,测量质量,如果降级到某个点,stream量以另一种方式重新路由。 因此,您可以设置延迟testing,并始终使用最低延迟路由。
MPLS TE – 多协议标签交换 – stream量工程。 我知道这有点儿不合时宜,但MPLS-TE允许您在两个端点之间build立隧道,并再次将stream量路由到最低延迟path。 这虽然有点专业, 你需要一个好的ISP来为你做这件事,或者你需要投资一些体面的路由器,并为你自己设置。 您可以在MPLS之间运行MPLS到远程路由并进行设置。
一个可能的想法是,您可以在networking两端之间使用多个VPN或隧道,并在所有三个链路之间引入每个数据包的负载均衡(round robbining)。 例如,您可以使用思科和瞻博networking路由器,或者如果您使用Linux,可以使用像teql这样的teql ,或者购买像teql这样的硬件设备。 如果所有的链接都有类似的延迟(所以你不混合ADSL,3G和光纤),这将工作。 一般不build议这样做,因为乱序数据包可能会导致应用程序出现问题,所以不会像前面提到的那样混合延迟样式链接。 但是,现在我已经在几个链接上启用了它,并且在我的最后一个地方完成了,而且它们没有问题。 我确信一个包可能会一次又一次地出现,但是它一定是非常罕见的,因为我从来没有注意到任何问题。
你提到了与你的应用程序相关的延迟。 由于我不知道你的应用程序是什么,或者它是如何工作的,所以我总是会有一些理智的外部机会,build议你在应用程序层做些什么。 我的意思是,重新编写应用程序来处理更高延迟的链接。 即使你实现了一个神奇的低延迟networking解决scheme,也会发生这种情况,等待时间会延长,计划更糟,将其编码到应用程序中,以便在最坏的情况发生时处理这些不良情况(错误的计划和所有的FMEA等)。
这实际上可能是一个非常糟糕的方法来做到这一点,因为你只是饱和stream量的链接。 如果我正确地理解了这一点,那么VPN /隧道软件并不是你想要的,因为这更像是一种保护进入内部networking或远程访问的stream量的方法。
这听起来像你需要购买一个硬件设备,允许链接聚合,它会巧妙地决定你的出站stream量需要路由的端口。 许多当前的防火墙可以做到这一点,或者你可以使用思科设备,并使用BGP。
没有任何方法可以按照您的build议“组播”单播数据包。 这里有一些select:
尝试运行OLSRD的最新版本,例如在每个WAN接口上构buildOpenWRT OLSRd,在多宿主主机的接口上构buildDebian或Ubuntu OLSRd。 configuration了LinkQualityLevel设置为2的OLSRD应该导致使用最低延迟ISP链路,尽pipe不是到ISP的下一跳之外的任何特定Internet目的地的最低延迟。
如果提前知道目的地,或者您有一组有代表性的目标,则可以使用Python或Perl编写一个守护程序,定期testing每个目标的ping时间。 您可以在每个WAN接口(可能意味着每个路由器都面向ISP)上运行守护程序,并使用客户端程序从多宿主主机查询ping数据,该程序根据最佳ping时间更改多宿主主机上的默认路由。 这可能会花费你五十到一百个小时的编程来编写和debugging。
如果你使用BGP,那么你将需要注册一个ASN,并要求你的ISPconfiguration他们的路由器与你的BGP通话。 除非您注册大量的IP地址,否则这对您来说可能是不可行的。
你正在尝试做的路由types一般称为优化链路状态路由 。