BYO 对 BGP 路由的思考

网络工程 路由 bgp
2021-07-05 14:30:39

我是一家小型托管公司的 sys/net 管理员,我需要进一步了解我们的 WAN 连接(确切地说是两个)如何协同工作,为我们的托管服务器提供高可用性。

我们有两个现场路由器,每个路由器都在我们的 AS# 19772 上通告 BGP 路由。我们有一个通过 Sprint 的链接(BGP 远程作为 1239)和一个通过 AT&T 的链接(BGP 远程作为 7018)。我有两个问题——第二个比第一个更深入——我想请专家帮忙解答一下,谢谢:)


1.. 当我我们托管和广告子网之一运行 BGP 表查找(例如,Looking Glass)时/23,它显示 BGP 表为:

BGP routing table entry for 63.164.138.0/23, version 3560718486
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  1239 19772
    154.54.12.22 (metric 10186060) from 38.28.1.83 (38.28.1.83)
      Origin IGP, metric 4294967294, localpref 100, valid, internal, best
      Community: 174:10004 174:20666 174:21000 174:22013
      Originator: 154.54.66.86, Cluster list: 38.28.1.83, 38.28.1.67, 38.28.1.65, 154.54.66.49

注意路径也遍历 Sprint 的 AS 和我们的 AS。这让我相信,如果 AS1239 出现故障(或者更现实的是,如果我们的路由器失去了与它的 BGP 会话),流量仍然可以通过 AS19772(大概是通过相邻的 AT&T AS7018)到达该子网。

但是,我想知道,不知何故,如果我们失去与 AS1239 上的 BGP 对等方的会话,这种故障转移行为确实会发生。

有什么方法可以提前验证 AS7018 是否会在需要时向 AS19772 通告直接相邻路由?

编辑: 好的,我想我已经通过AT&T 的镜子从 AS7018 内部检查回答了第一个问题

rviews@route-server.ip.att.net> show route protocol bgp 63.164.138.0     

inet.0: 631792 destinations, 9475808 routes (631792 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

63.164.138.0/23    *[BGP/170] 1w6d 23:05:58, localpref 100, from 12.122.125.165
                      AS path: 7018 19772 I, validation-state: unknown
                    > to 12.0.1.1 via em0.0

请注意 AS 编号 7018 和 19772,对我来说意味着 7018 与此子网的 19772 正确相邻。耶!好的,到#2:


2.. 我们还宣传了四个/26前缀作为更大/24前缀的一部分。由于 Sprint AS1239 不会为小于 的对等节点做广告/24,因此我们的/26s 会“超网”到/12广告中:

BGP routing table entry for 63.160.0.0/12, version 3549613850
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  1239
    154.54.12.22 (metric 10186060) from 38.28.1.83 (38.28.1.83)
      Origin IGP, metric 4294967294, localpref 100, valid, internal, best
      Community: 174:10004 174:20666 174:21000 174:22013
      Originator: 154.54.66.86, Cluster list: 38.28.1.83, 38.28.1.67, 38.28.1.65, 154.54.66.49

这并不理想.. 请注意,在那条路线中根本没有提到我们的 AS19772.. 只是 .. 上的 AS1239 /12

除此之外,我被告知 AT&T AS7018 不会转发小于/24 AT ALL 的路由,因此在这种情况下,我的/26s 作为直接邻居丢失了..通过 AT&T 的窥镜证明:

rviews@route-server.ip.att.net> show route protocol bgp 63.165.22.192 

inet.0: 631773 destinations, 9475523 routes (631773 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

63.160.0.0/12      *[BGP/170] 2d 13:58:14, localpref 100, from 12.122.125.106
                      AS path: 7018 1239 I, validation-state: unknown
                    > to 12.0.1.1 via em0.0

显示 AT&T AS7018 具有通过 AS1239 的 /12 路由,但提到了通过 AS19772 的更具体的 /26 路由。

这让我相信/26s 不是正确的多宿主,如果我们的 AS1239 会话被切断,那些网络将不可用。

那么,好吧,为什么不把四个/26s宣传为一个/24呢?那么,在路由器上,我们在其中一个/26网络上有一个接口其他三个/26网络静态路由出不同的接口。我似乎记得在路由器接口开通期间我们遇到了连接问题,直到我们使 BGP 广告掩码与接口掩码匹配。

有谁知道/24来自路由器的BGP 广告是否会干扰具有/26相同子网的接口上的流量/24

编辑: 根据罗恩提供的伟大答案:

好的,所以我可能缺少的一块拼图是 BGP 的聚合广告。如果我开始通告 /24 前缀,两个相邻的 AS 都应该看到它并开始向它转发直接的邻居连接。

我最不希望看到的证据是我可以通告路由表中没有的聚合前缀。 有没有人参考一些我可以查看的材料来确认这一点?

1个回答
  1. 您的两个邻居 AS 都在为您的网络做广告。这仅取决于您在 Internet 上查看的位置,以了解哪个是您的网络的首选路由。如果您的一个邻居出现故障,另一个邻居将是唯一一个通告您的路由的邻居,因此 Internet 上的任何地方都将汇聚到该路径。
  2. 我不相信任何 ISP 会宣传前缀超过/24. 您当然可以宣传聚合前缀。如果您尝试手动将四个/26前缀组合成一个/24前缀并使用 network 语句来通告它,它将失败,因为 BGP 需要它通告的确切前缀在路由表中。有一个例外,它被称为聚合地址。您可以通告聚合地址而不是单独的前缀,并且只要任何一个前缀在路由表中,BGP 就会通告它。您也可以告诉它只通告聚合地址,或者同时通告聚合地址和单个前缀。

编辑:

请参阅 Cisco 文档“未通告 BGP 路由时的故障排除”部分,称为使用基本网络声明通告的路由另请参阅了解 BGP 中的路由聚合