路由反射器不反映 BGP-LU(标记单播)前缀

网络工程 bgp mpls-vpn 路线
2021-07-17 03:05:34

我正在阅读“SDN 时代的 MPLS”一书中关于跨域 MPLS VPN 选项 C 的内容。其中,作者只在PE和ASBR之间建立BGP-LU对等,只在RR和ASBR之间建立BGP-LU对等,PE和RR之间没有BGP-LU对等。

PE和RR之间只有VPNv4 BGP Peering。

作者在要点中提到这一点的原因如下(复制自《SDN 时代的 MPLS》一书):

RR 不反映 BGP-LU 前缀。他们协商 IPv4-LU 地址族的唯一原因是为了 AS 间 RR 的可达性。

有人可以解释为什么 RR 不反映 BGP-LU 前缀吗?非常感谢

在此处输入图片说明

2个回答

为了简化解释,让我们假设只有 RR1 和 RR3 存在(让我们暂时忘记 RR2 和 RR4)。

同样,假设 ASBR1 和 ASBR3 是唯一的 ASBR(让我们暂时忘记 ASBR2 和 ASBR4)。

RR1 和 RR3 之间存在 EBGP 会话,用于交换两个 AS 之间的 IP VPN 路由。

这意味着 RR1 和 RR3 之间存在 TCP 连接。

这意味着 RR1 和 RR3 之间需要有 IP 可达性:RR1 需要有一条 IP 路由到 RR3 的环回,它在不同的 AS 中。反之亦然。

AS 65100 和 AS 65101 之间只是交换带标签的单播路由。

这意味着 ASBR1 必须将 RR1 的标记单播路由通告给 ASBR3。

同样,ASBR3 必须将 RR3 的标记单播路由通告给 ASBR1。

实现这一目标的最简洁方法是,如果 RR1 为自己到 ASBR1 的环回通告一条带标签的单播路由,并且如果 RR3 为它自己到 ASBR3 的环回通告一条带标签的单播路由。

这样,我们就有了一条从 RR1 到 RR3 的标记单播路由,反之亦然。

我还没有建立实验室来验证这一点,但我认为从 RR1 到 ASBR1 以及从 RR3 到 ASBR3 的标记单播会话并不是绝对必要的。它只是让事情更加一致和干净。

如果您在 RR1 和 ASBR1(以及 RR3 和 ASBR3)之间只有正常的 IP 单播会话,我强烈怀疑事情仍然可以正常工作。在这种情况下,我们只会对 BGP TCP 会话的数据包进行标签交换,直到 ASBR,然后从那里进行正常转发。ASBR 可以从 RR 接收正常的 IP 单播路由,绑定一个 in-label(可能是 PHP 隐式空标签)并将该路由作为标签单播向上游进一步传播。

但是,正如我所说,我已经创建了一个测试实验室来验证这种怀疑。

让我试着回答这个问题。我猜作者为什么只在RR <---> ASBR 和PE <---> ASBR 之间配置BGP-LU 会话是有原因的。我认为的原因是AS内已经运行了IGP和一些标签分发协议。所以我们也可以像普通路由反射器一样在 RR 和 AS 中的所有其他路由器之间建立 BGP-LU 会话。

现在 RR 将与 PE 和 ASBR 进行 BGP-LU 会话。RR 也将具有与 PE 对等的 IPv4 和 VPNv4。我们可以将 PE 配置为将其环回 IP 作为 BGP-LU 路由(BGP + 标签)通告给 RR,以便它将此路由反映到同一 AS 中的其他路由器。

在这种情况下,RR 不会将 PE 环回 IP 反映为 BGP-LU 路由,因为最佳路由是通过 IS-IS 而不是通过 BGP,因为路由优先。因此,为了避免 PE 和 RR 之间的额外对等 (BGP-LU),只有 PE 和 RR 需要与 ASBR 进行 BGP-LU 对等,因为 ASBR 会将 BGP-LU 路由作为 BGP-LU 路由通告给 ASBR 并在其中创建 MPLS 标签CEF/FIB 中的 /out 条目。可以在 RR 和 PE 之间建立 BGP-LU 对等互连(没有问题),但使用的 LSP 将来自依赖于 IGP 而不是 BGP 的 LDP/RSVP。

由于选项 C 中 ASBR 之间只有 BGP-LU 对等,一个 AS 中的 RR 将拥有到另一个 AS 中的另一个 RR 的 LSP。

但是,如果 RR 与 AS 中的其他 PE 和 ASBR 具有 BGP-LU 会话,RR 仍会通告它从 ASBR 收到的 BGP-LU 路由(该路由本身属于另一个 AS),因为在这种情况下,RR 将拥有它的路由表中只有一个条目,它将反映到其 AS 中的所有 PE。