如何防止多个 eBGP 路由器的非对称路由?

And*_*inn 6 routing bgp ip-routing quagga

我有 2 个路由器向不同的提供商宣布一个 /22 子网(一个提供商连接到 2 个路由器中的每一个)。我已将 /22 分成两个 /23,以在每个路由器上宣布一个 /23 加上 /22(提供商将采用更具体的路线)。这允许我进行故障转移并将流量保持在 /23 内进出同一提供商。

有什么其他方法可以让我只用两个路由器宣布 /22 并且让来自路由器后面网络上服务器的数据包从它们进来的同一路由器返回?

编辑:

我遇到的主要问题是最终用户和客户抱怨最多的问题,即最少跳数路由有时不是“最佳”路由。就我而言,我知道提供商 B 可能对 X 国家有更好的延迟。但是当数据包从提供者 B 进来时,它们可能会从提供者 A 或提供者 B 出去。反过来也是如此。如果我从提供商 A 向 X 个国家发送数据包,即使它可能有更多的回跳,该数据包也可能来自提供商 B(该国家/地区可能具有更高的延迟、数据包丢失等)

Thi*_*his 8

严格来说,当您向多个提供商宣布您的前缀时,您会失去对入站路由路径的完全控制,因为下游会为返回流量做出独立的路由决策。此外,您的公告甚至可以在您发送后被下游提供商修改。

例子

这是可能发生的事情的一个例子。假设您有 AS 777,它拥有 2.2.0.0/22。您拥有拥有路由器 A 的公司需要访问的服务……我们还假设 AS 100 没有与您建立良好的链接(可能由于您无法修复的物理层问题,它间歇性地破坏了流量)。所以你对自己想,“我会用大量的 ASN 将我所有的公告放在 AS100 之前,这样在我解决这个问题之前,没有人会喜欢 AS100 链接”

bgp 不对称

问题是您只能完全控制出站路由决策。您无法完全控制入站...所以假设路由器 A 的管理员不知道您与 AS100 的链接是坏的。它们是双宿主到 AS200 和 AS100,但 AS100 提供更便宜的传输,每 Mbps;所以Router A的工程师从AS100取全路由,只用AS200做备份(只取默认)。

作为 AS 777 的管理员,您可以强制流量通过 AS 200 到达路由器 A,但从路由器 A 到 2.2.0.0/22 的流量仍将使用 AS 100(因为最佳路由是通过路由器 A 上的 AS 100)。

可能的解决方案

通常,非对称路径很重要,因为接收流量的负载平衡器或防火墙。一些可能的解决方案:

  • 对于其他 ASN 中提供的服务,您可以将 NAT 的所有出站流量都发送到一个地址,该地址是指向特定 AS 的链接的本地地址(但这对服务提供商来说效果不佳)
  • 对于ASN 中提供的服务,您可以将所有入站流量的NAT 源发送到相关 BGP 对等路由器上子网的本地地址(但这对服务提供商来说效果不佳)
  • 您可以设置一个 DMZ 来接收来自所有不同 ASN 的流量,并为来自上游的流量提供一个入口/出口点。在某些情况下,您甚至可以同步 DMZ 设备上的状态表。(虽然这对服务提供商来说效果不佳)
  • 如果您愿意使用BGP Conditional Advertisement 之类的功能,您有时可以解决这些问题,代价是不使用其他运营商来处理 2.2.0.0/22 的入站流量。

如果您提供有关服务性质和问题的更多详细信息,我们可能会提供更具体的建议。