将流量从同一BGP AS路由到不同的链路


19

我在BGP AS 65000中有两个站点A和B,在AS 65001中有第三个站点C。这三个站点都通过运营商MPLS具有连通性,并且站点A和B之间存在内部连通性。我试图影响BGP因此从站点A到站点C的流量将通过站点A的MPLS链路进行路由,而从站点B到站点C的流量将通过站点B的MPLS链路进行路由。拓扑类似于此示例中描述的拓扑。

AS 65000和65001

站点A和B的边缘路由器都将自己的MPLS链路视为最佳路径,因为EBGP路由优先于IBGP路由。但是,位于AS 65000内部的路由器将更偏向于一个链接或另一个链接。我的目标是强制任一站点上的所有路由器都选择最接近的链接。(很遗憾,目前我无法将两个站点拆分为单独的AS。)

在保持站点A和B链接之间到站点C的故障转移连接的同时,是否有理智的方法来完成此任务?

编辑:我应该注意到这里没有使用IGP。实际上,每个站点的网络都存在于VRF中,是一个更大得多的网络的一部分。因此,任何解决方案都必须完全依赖BGP。


嗨,杰里米-下面对此有两个不错的解决方案,但是我不能安全地假设您对IGP具有管理控制权。你能澄清一下吗?
约翰·詹森

在这种情况下没有IGP。实际上,这仅代表更大网络中的一个VRF。为了清楚起见,我省略了这些细节。
杰里米·舒尔特

那就是我所担心的。:-)感谢您的澄清。
约翰·詹森

我认为这里缺少一些东西。因此,我们两个假设AS 65000中的A和B之间存在链接(可能由于多个内部路由器而存在很多链接)?另外,您看到的是次优的吗?一个(或多个)更接近A(在拓扑上)的路由器是否通过B发送流量以到达C?
jwbensley

@javano问题是,A和B(边缘路由器)都是同一ASN中的iBGP对等体,因此从C获悉的任何前缀都将在两个框中的RIB中具有2条路径,而eBGP路径将总是获胜,因此从AS6500到AS65001的出站流量会停留在一个链接上。
约翰·詹森

Answers:


12

在站点A和站点B之间是否有明确的定义?

如果是这样,那么我将考虑在边缘路由器上定义一个策略,以便在从运营商MPLS接收路由时注入社区。

一旦将此社区放在前缀上(对于站点A来说是100:1,对于站点B来说是100:2),则可以向站点A的每个路由器添加策略,以增加具有社区100:1的任何路由的LP。对于社区100:2的站点B同样如此。

该解决方案将符合仅使用BGP的要求,并且将具有足够的灵活性,以允许B在丢失自己的上行链路给载波的情况下仍然使用A的上行链路。


1
这可能是最好的方法,但是如果杰里米(Jeremy)从C发布单个摘要,则他必须将其拆分为大块,以使其有效地工作。
约翰·詹森

我认为这是我要走的路。明天需要对它进行实验,看看我是否在任何地方都被卡住了。
杰里米·舒尔特

@JohnJensen不需要任何此操作,因为站点A和B都将从运营商处接收相同的前缀,因此可以在不中断LP的情况下对自己的“站点”前缀进行修改。
大卫·罗瑟拉

1
作为进一步思考的进一步说明,最好使用局部重要属性(例如权重)而不是可传递属性(例如LP)。
大卫·罗瑟拉

1
@DavidRothera如果从C声明了多个前缀,那您将是正确的-可能只有一个前缀来自C,在这种情况下,我不能完全确定通过社区设置localpref会有所不同在解决杰里米(Jeremy)的问题时,因为只有一个前缀,并且可以选择两个社区和两个不同的LP值,所以较高的LP将是首选,并且流量仍将固定在一个链接上。同时也同意使用局部重要属性可能会更好。
约翰·詹森

6

在此处输入图片说明当我做类似的事情时,我没有在路由器之间使用eBGP。我让使用BGP的路由器仅通过OSPF将默认路由发送到站点A和站点B路由器,然后将OSPF路由重新分发到BGP中。在两个站点之间的链接上,我应用了OSPF成本。

这使站点A拥有到其网络,站点B网络的路由,以及从站点A离开的默认路由(如果丢失了站点A链接,OSPF开销将保留站点B的默认路由作为辅助选项)。除非站点之间存在链路故障,否则站点A将不使用MPLS直接与站点B通信。

同样,OSPF成本在重新分配期间转换为BGP MED,这使运营商MPLS网络更喜欢直接将站点A流量发送到站点A,但如果需要,也可以使用站点B到达站点A。


3

我感觉缺少一些信息。为什么边缘路由器已经不喜欢最佳路径了?

您是否在65000中拥有全网状iBGP?还是使用路由反射?

如果您具有全网状iBGP,则每个边缘路由器都会从两个[AB]处学习路由,并且将比较IGP成本与下一跳,这将转换为最接近的边缘框。

如果存在路由反射,它将仅从其自己的POV反映最佳路由,这可能会删除最佳路径转发。这也可以通过添加另一个RR来解决,该RR将选择其他路线作为最佳路线,然后边框再次可以选择最佳路线。如果无法像这样固定RR。您可以在两个边界路由回送中添加相同的IPV4地址,并且当边界路由器将前缀通告给RR时,它们会将下一跳设置为该任意播地址。然后,即使经过反射,您也将遵循IGP到最近的边界。


2

如果您可以控制IGP:

我们要做的是在iBGP网格中仅包含eBGP路由器。我们其余的内部路由器是OSPF路由器。我们在每个AS中将BGP从BGP重新分配到OSPF。我们的设置与您的设置略有不同,但是这应该允许OSPF的成本指标通过将其定向到最近的eBGP路由器来影响路径流量。

如果您无法控制IGP:

也许您可以对内部路由器应用导入策略,以使它们静态地偏向于所需出口eBGP路由器的路由公告。因此,例如,如果iBGP包含给定前缀的两个公告(来自站点A路由器的一个公告和来自站点B路由器的一个公告,但是在RIB中仅安装了一个公告),则可以在发布时本地预想所需的公告输入。我将不得不对其进行实验,但是我不明白为什么它不起作用。


是的,假设您具有使用IGP的能力,那将是我想象的最好方法。不幸的是,这不是我的情况。:(我已经更新的问题,包括这个被忽视的细节。
杰里米弹力

我喜欢David Rothera的答案,因为它和我的一样,但是他增加了使用社区的细节:)
netdad
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.