BGP(边界网关协议)是互联网的核心协议之一,负责路由数据包在不同自治系统(AS)之间的转发。然而,BGP 也存在一些潜在的问题,例如路由环的形成。路由环是指两个或多个 AS 之间形成的环路,使得数据包在这些 AS 之间不断循环,导致网络拥塞和数据包丢失。在本文中,我们将探讨如何通过组合 BGP 联邦和 AS 覆盖来创建一个 BGP 路由环,导致 AS-PATH 无限扩张。
BGP 联邦和 AS 覆盖
BGP 联邦是一种技术,用于减少内部 BGP(iBGP)会话的数量,并提高大型自治系统的可扩展性。它将一个 AS 分成多个子 AS。除了 next-hop、Multi-Exit Discriminator(MED)和本地首选项保持不变外,大多数外部(eBGP)规则在子 AS 之间适用。AS-PATH 长度忽略了联邦子 AS 的贡献。BGP 联邦很少使用,BGP 路由反射通常是首选的可扩展性解决方案。AS 覆盖是一种功能,允许路由器在出站 BGP 路由的 AS-PATH 中用其自己的 ASN 替换邻居的 ASN。它在两个不同的 AS 共享同一个 ASN 时很有用。然而,它干扰了 BGP 的环路防止机制,应该谨慎使用。
路由环的形成
在图 1 中,我们有四个路由器在一个联邦中,每个路由器在其自己的子 AS 中。R0 起源 2001:db8::1/128 前缀。R1、R2 和 R3 将此前缀转发到环路中的下一个路由器。R2 使用以下配置为 BGP:`router bgp 64502`、`bgp confederation peers 64500 64501 64503`、`bgp confederation identifier 64496`、`bgp router-id 1.0.0.2`、`address-family ipv6 unicast`、`neighbor 2001:db8::2:0 remote-as 64501`、`description R1`、`address-family ipv6 unicast`、`neighbor 2001:db8::3:1 remote-as 64503`、`advertisement-interval 0`、`description R3`、`address-family ipv6 unicast`、`next-hop-self`、`as-override`。会话与 R3 使用 both as-override 和 next-hop-self 指令。后者仅用于使宣告的前缀有效,因为在此示例中没有 IGP。当一个 AS-PATH 段由联邦中的 ASN 组成时,它将在括号中显示。R0 将前缀发送到 R1,AS-PATH 为(64500)。R1 选择它作为最佳路径,将其转发到 R2,AS-PATH 为(64501 64500)。R2 选择它作为最佳路径,将其转发到 R3,AS-PATH 为(64500 64501 64502)。R3 选择它作为最佳路径。它将转发到 R1,AS-PATH 为(64503 64502 64501 64500),但由于 AS 覆盖,它用自己的 ASN 替换 R1 的 ASN。
结论
使用 BGP 联邦已经是不推荐的。如果您不为所有子 AS 使用相同的 IGP,您将遇到麻烦!然而,所描述的场景也可以使用 IGP 来实现。为了避免路由环的形成,应谨慎使用 AS 覆盖,并确保所有子 AS 使用相同的 IGP。
对于运维和网络工程师来说,理解 BGP 路由环的形成机制和如何避免它至关重要。通过正确配置 BGP 和使用合适的技术,例如 BGP 路由反射,可以提高网络的稳定性和可靠性。同时,应注意 AS 覆盖的使用,并确保所有子 AS 使用相同的 IGP,以避免路由环的形成。
原文: APNIC Blog(2024-09-02)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog