来自同一 ISP 路由器的入站 BGP 负载平衡

网络工程 思科 路由 bgp
2021-07-22 18:36:37

我有两个用于 DIA 的 BGP 路由器,其中一个提供商存在问题,因为到该提供商的两条链路位于同一个SP 路由器上。我代表我的主要提供商通过来自另一家提供商的两个单独的 MetroE 链路进行以太网切换,因为该提供商已经拥有到大楼的光纤。 当一个提供商为另一个提供商传输服务时,如果有人也能澄清 ISP 术语,我将不胜感激。 两条电路使用相同的 SP 路由器终止 L3,因此我的两个路由器都与相同的提供商路由器对等。我从这个 SP 分配了 PA 空间。

我对出站负载平衡(或我认为在技术上更准确的负载共享)没有任何问题。出站,我在防火墙上执行 ECLB,它根据srcip/dstip哈希选择两个边缘路由器之一

这个特定的运营商——忘记只提供传输的运营商——不是负载平衡从他们的一个路由器穿过两条链路到我的两个路由器的入站流量,这是我们可以使用我们拥有的组合 5x50Mb BW 的方向签约。 对于相同的广告网络,SP 看到了与我们相同的路径,并且本质上只是他们学习的第一条路径成为最佳路径。

我在下面列出了我正在考虑的选项,以便在两条线路上获得流量,并且想知道这里的专家认为什么是最好的,特别是如果您熟悉典型的 SP SOP由于我有合同,因此此时更改合同不是以其他方式重建的选项。

maximum-paths 2在 SP 网络中允许解决了这个问题,但这适用于我认为他们不会允许的同一路由器上的所有 BGP 客户。至少一个可行的选择涉及静态路由,但这不是我想要的。

以下是我按照我的偏好顺序考虑的选项。

  1. 允许maximum-paths 2在 SP 路由器上使用BGP(影响驻留在那里的所有 BGP 客户),因此在两条线路上通告时使用 /24

  2. 将我的 /24 一分为二,并在每个链接上与 /24 一起宣传单独的 /25SP 最近表示,他们可以使用未记录的社区来接受 > /24 前缀。这需要在我的防火墙上操纵 NAT 以在两个 /25 的全局地址中使用全局地址,因为现在大多数流量只在较低的 /25 中的几个地址上返回给我们。

  3. SP 静态路由到 /24以强制使用 BGP /24(浮动路由)进行负载平衡。

  4. SP 静态路由到 /25s以强制 ECLB w/BGP /24 前缀(在 RIB 中,但除非 /25s 失败,否则不使用)。

我认为在 BGP 中宣传 /25s 是最好的选择,我最近才发现在 SP 无证社区中是可能的,但是还有其他我没有考虑过的选择或对其中一些选择的乱序数据包的担忧吗? ?

这是大多数人对 BGP 提出的反向负载平衡问题。

3个回答

我会要求“最大路径”(它通常在标准和文档中称为 ECMP,而不是 ECLB)。如果 ECMP 不是初学者,则回退到您的 /25 计划。

我无法立即弄清楚的其他首字母缩略词是 DIA(专用互联网访问?)和 SOP(标准操作程序?)。我不确定这些是否真的是通用的首字母缩略词,以至于它们应该在 stackexchange 中使用而没有至少使用 hovertext 来解决它们。

谈到术语,您确实已经说过传输,我认为这是最常提到的那种类型的服务。有时人们也会将其称为“系绳”。

您还有另一种选择,将您一侧的接口移动到同一路由器,然后在您和您的提供商之间设置 eBGP 多跳***。是的,你在你这边失去了冗余,但在另一边它无论如何都会去同一个路由器,所以这是一个有争议的问题。这也消除了提供商执行 eBGP 多路径的需要,以防他们不愿意与您一起这样做(但我发现通常大多数提供商都可以打开它,如果它尚未打开) .

如果这看起来不合理,那么宣布两个 /25 可能是您最好的选择,除非您的提供商当然愿意开启maximum-paths(同样,假设他们还没有这样做)。

***在您的场景中使用 eBGP 多跳进行负载平衡将涉及以下内容:

  1. 将第二个 ISP 连接移动到您身边的一个路由器。
  2. 您和提供商update-source Loopback0都在您的每个会话上进行配置- 如果您不想,您不必使用 Lo0,只要你们同意静态路由到哪个地址即可。
  3. 通过连接的接口(或下一跳 IP)配置到彼此环回的 2x /32 静态路由 - 这就是负载平衡的工作原理,因为它实际上只是 ECMP。
  4. 配置ebgp-multihop 2彼此的会话(您希望将此数字保持得尽可能小以避免 TCP 会话劫持)。

瞧,负载均衡。这也会按接口进行缩放,因为添加新端口将涉及添加另一个接口和静态路由。

这里的最佳解决方案是通过 BGP ECMP maximum-paths 2- 但是,我会说需要社区标签的“接受路由> / 24”听起来像是史诗般的愚蠢 - 假设你是他们的客户,他们应该接受你给他们的任何东西最大数量的前缀,并根据他们与其他对等方的任何协议简单地过滤出站。关于不执行 ECMP,我的上游之一让我陷入了类似的困境,我总是希望被允许向传输提供商宣布我想要的任何前缀大小并让他们使用它。

因此,考虑到它们听起来不是很称职,为了平衡流量,不要撤回您的 /24 前缀 - 相反,保留它确保您的 /25 路由标记为 NO_EXPORT 以及您的提供商声称的任何内容需要这样您的 /25 就不会意外地从它们的 AS 中泄漏出来(如果这样做的话,它可能会走得很远)。

最后一点 - 确保这个“无证社区”实际上不是一个黑洞社区,因为那会......你知道,糟糕