路由反射器不反映 BGP-LU(标记单播)前缀
为了简化解释,让我们假设只有 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。