BGP 配置帮助

网络工程 bgp 网络核心
2021-07-14 21:58:17

考虑这个网络图 BGP网络

  • 路由器A和B属于同一个AS
  • 网络 10.0.10.0/24 和 10.0.20.0/24 可通过 AS200 和 AS300 路由
  • 网络10.0.10.0/24可以通过Router A访问,通过Router C
  • 网络10.0.20.0/24可以通过Router B访问,通过Router D
  • 路由器 C 和 D 是 ISP 路由器

网络场景:

  • 当路由器 A 和 C 之间的链路断开时,流量应通过路由器 D 通过路由器 B
  • 当路由器 B 和 D 之间的链路断开时,流量应该通过路由器 A 通过 C

这是粗略的配置:

路由器A

router bgp 100
 network 10.0.10.0/24
 network 10.0.20.0/24
 neighbor 10.0.21.1 remote-as 100
 neighbor 10.0.21.1 next-hop-self
 neighbor 11.0.0.1 remote-as 200
 no synchronization

路由器B

router bgp 100
 network 10.0.10.0/24
 network 10.0.20.0/24
 neighbor 10.0.10.1 remote-as 100
 neighbor 10.0.10.1 next-hop-self
 neighbor 12.0.0.1 remote-as 300
 no synchronization

问题:

  • 我是否正确假设我必须向每个 eBGP 对等方宣布两个网络(10.0.10.0/24 和 10.0.20.0/24)?
  • 这样做的最佳方法是什么?
2个回答

您应该向每个 eBGP 对等方宣布这两个网络,并使用路由映射来预先设置您的 AS 路径,以影响两个路由器上的传入流量。(你的 EBGP 可能有一个 BGP 社区?)

A 将直接通过 eBGP 学习 C 的路由。
A 将使用 iBGP 通过 B 学习 D 的路由。
A 会更喜欢 C 的路由,因为它们是通过 eBGP 获知的。

B 将直接通过 eBGP 获知 D 的路由。
B 将使用 iBGP 通过 A 学习 C 的路由。
B 会更喜欢 D 的路由,因为它们是通过 eBGP 获知的。

为了确保回程流量按照您希望的方式进行,您需要做一些事情。

A 需要向 C 通告所有路由,B 需要向 D 通告所有路由。
您需要确保没有通过网络向 D 通告 C 的路由,反之亦然。
当 A 将 B 的路由通告给 C 时,A 需要预先添加一次或两次 AS100 以使其看起来像一条不太理想的路径。
类似地,当 B 将 A 的路由通告给 D 时,B 需要预先添加一次或两次 AS100 以使其看起来像一条不太理想的路径。

这一切都是使用路线图完成的。在 A:

ip access-list standard BRoutes
10 permit 10.0.20.0 0.0.0.255

ip access-list standard ARoutes
10 permit 10.0.10.0 0.0.0.255

route-map OutToC permit 10
match ip address BRoutes
set as-path prepend
route 100 permit OutC 20
匹配 ip 地址 ARoutes

路由器 bgp 100 邻居 11.0.0.1 route-map OutToC out

这对 C 隐藏了 D 的路由,因此您不会成为中转 AS,并使 B 的路由看起来多几个 AS 跳(即使 AS 编号相同)。您需要在 B 上进行镜像配置。

关键搜索词以供将来参考:
Route map
AS Path
BGP Metric
AS Path prepending