与两个“好”提供商的多宿主 - 负载共享策略?

网络工程 路由 路由器 bgp 非对称路由
2021-07-16 08:14:01

我们得到两条 100G 链路,每个供应商提供一条,我们的总流量低于 100G。基本原理是一个提供者可能会失败,而另一个提供者将以零降级弥补不足。我们的流量模式是相当对称的(即 50G 上行将 50G 下行)

我正在使用 JunOS 平台并希望让社区考虑负载平衡策略。目前,我们只是从 ISP 获取完整的表并在没有额外配置的情况下公布我们的前缀。我有两个问题

入口

我怀疑由于我们没有预先考虑入口流量应该是大部分对称的。这些都是 T1 提供商,几乎所有“重要”的东西都在 1 个 AS 跳之外。你会认为带宽会平衡,但在大多数情况下它是相当不平衡的。为什么会这样?

出口

我查看路由表(即显示路由 8.8.8.8,显示路由 1.1.1.1)并注意到所有 tee 目的地主要是一个 AS 跃点,但流量似乎仍然相当不平衡。

inet.0: 823020 destinations, 1641766 routes (823020 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1.1.1.0/24         *[BGP/170] 04:36:45, MED 0, localpref 100, from 4.53.154.145
                      AS path: 3356 13335 I, validation-state: unverified
                    >  to ISPA via et-0/0/1.0
                       to ISPB via et-0/0/3.0
                    [BGP/170] 6d 06:39:30, localpref 100
                      AS path: 1299 13335 I, validation-state: unverified
                    >  to ISPA via et-0/0/1.0

我可能可以通过打开来平衡出口

bgp {
    group isp {
    /* peering info */
    multipath {
        multiple-as
    }
}

policy-options {
    policy-statement LB {
            then {
                load-balance destination-ip-only;
            }
    }
}
routing-options {
    forwarding-table {
        export LB;
    }
}

我担心这会使故障排除“缓慢”变得困难,因为事情更难追查并且真的不会对称。这是一件坏事还是这是一个常见的地方?

问题和解决方案

入口\出口流量的不匹配导致我在两个 ISP 与 1 上突然爆发(ISP A 可能有高入口但低出口,ISP B 可能有高出口但低入口)。解决上述问题的社区策略是什么?我的建议

  • 执行上述建议并启用 ISP 之间的负载共享
  • 做一个主动\被动设置,我使用 ISP B 并预先\取消它。我担心这会导致不必要的延迟,因为我人为地偏爱 ISP A。我得到了满桌。不过,这是两个不错的 1 级 ISP,对于大多数情况,延迟都很好。
  • 分解我的块,并以某种方式用 ISP A 首选和 ISP 首选宣传一半。我不得不以某种方式在单个路由表上对各个组进行本地偏好。

还有为什么 ISP A 在我上面的“显示路线”中显示两次

3个回答

尝试与不同的提供者实现真正的负载平衡是一项艰巨的任务。你可以用你余下的职业生涯致力于它,但永远不会做对。

这些都是 T1 提供商,几乎所有“重要”的东西都在 1 个 AS 跳之外。你会认为带宽会平衡,但在大多数情况下它是相当不平衡的。为什么会这样?

BGP 始终选择一条路由作为“最佳”路由。该过程旨在选择一条路径,即使一切看起来都一样。以下是瞻博网络的路由选择过程

当一切都很好匹配(相同的路径长度)时,选择标准可能会归结为简单(和任意)的东西,如对等方的 BGP 路由器 ID。对此你无能为力。

我担心这会使故障排除“缓慢”变得困难,因为事情更难追查并且真的不会对称。这是一件坏事还是这是一个常见的地方?

这肯定会使故障排除更加困难,因为很难确定使用了特定流的哪条路径。

虽然真正平衡的负载似乎是一个很好的理想,但实现它所需的努力和配置可能并不值得,尤其是因为您有足够的带宽。我相信你有更重要的事情要做:)

我从 90 年代就开始这样做了。我能给的最好的建议是:

  • 使用as-path-groups减少你想避免路径的本地偏好。
  • 增加本地优先路由时要小心例如,不要预先设置,3356 174 .*因为那样你会选择像3356 174 65000 65000 65000 65000网络 65000 试图通过该路径减少进入的路径
  • 记录您的更改;junos 使这变得微不足道

我喜欢有几个 as-path-groups 来组织我的 BGP TE,例如:

  • as3356-prefup2 路径我绝对想去 as3356
  • as3356-prefup4 以防需要临时覆盖另一个 prefup2
  • 由于 TE 原因要避免的 as3356-prefdn2 路径
  • 由于性能原因/投诉而避免使用 as3356-prefdn4 路径
  • as3356-prefdn8 临时覆盖

另一种选择是停止接收完整的表,只获取默认路由。然后您可以使用 BGP 多路径并平衡出站流量。由于您无法控制 Internet,因此很难对入站执行相同的操作。