学习到的 eBGP 路由没有分发到 iBGP 邻居

网络工程 思科 路由 路由器 bgp
2021-07-23 20:23:07

我有(在 GNS3 中)三个运行 12.4(23) 的 Cisco 3640 串联连接(R1 -> R2 -> R3)。R1和R2是eBGP对等体,R2和R3是iBGP对等体。R1 通告网络 192.168.1.0/24。R2 收到此路由,但不会将其通告给 R3。

从 eBGP 学到的路由不应该通告给 iBGP 吗?

这是输入的完整配置:

loop0(R1)s0/0 <--> s0/0(R2)s0/1 <--> s0/1(R3)

R1:
configure terminal
interface s0/0
ip address 172.16.1.1 255.255.255.252
no shutdown
interface loopback0
ip address  192.168.1.1 255.255.255.0
router bgp 1
neighbor 172.16.1.2 remote-as 2
network 192.168.1.0 mask 255.255.255.0

R2:
configure terminal
interface s0/0
ip address 172.16.1.2 255.255.255.252
no shutdown
interface s0/1
ip address 172.16.1.5 255.255.255.252
no shutdown
router bgp 2
neighbor 172.16.1.1 remote-as 1
neighbor 172.16.1.6 remote-as 2

R3:
configure terminal
interface s0/1
ip address 172.16.1.6  255.255.255.252
no shutdown
router bgp 2
neighbor 172.16.1.5 remote-as 2
2个回答

假设您没有配置 IGP(例如 EIGRP/OSPF/ISIS/RIP),那么最简单的解释是当 iBGP 更新到达 R3 时,R3 没有到 192.168.1.0/24 的下一跳的路由。

loop0(R1)s0/0 <-----------> s0/0(R2)s0/1 <-------------> s0/1(R3)
    AS 1                       AS 2                        AS 2

              --------->                  ----------->
              Prefix: 192.168.1.0/24      Prefix: 192.168.1.0/24
              AS-path: 1                  AS-path: 1
              Next-hop: 172.16.1.1        Next-hop: 172.16.1.1
              *via eBGP*                  *via iBGP*

由于 iBGP 在收到来自 R1 的更新时不会重置下一跳,因此 192.168.1.0/24 的下一跳 (172.16.1.1) 必须可达(有关详细信息,请参阅为什么路由器忽略 BGP 路径)。

测试这个最基本的方法是在 R3 上配置一个静态:

ip route 172.16.1.0 0.0.0.3 172.16.1.5 name BAD_HACK_FOR_IBGP

这显然是错误的解决方案,但它是一个非常简单的测试来说明为什么会出现问题(请记住,在安装 192.168.1.0/24 的路由之前,您可能需要等待 BGP 下一跳扫描器运行一段时间) .

我想到了两种可能的解决方案,但在大多数网络中只有一种真正有意义......

  • 最佳解决方案:配置 IGP...选择您喜欢的任何 IGP,并在该 IGP 中在整个 AS 2 中通告 172.16.1.0/30
  • 可选解决方案:配置 R2 和 R3 之间的对等会话以设置next-hop-self

下一跳可达性是理解BGP时最基本的问题之一;几乎每个人在试验协议时都会遇到这个问题。

您应该必须在 R2 上宣布您连接的接口。因为唯一的网络 192.168.1.0 现在不知道下一跳是什么。您可以在 R3 上使用“show ip bgp”进行检查

正如您在 R3 bgp 表中看到的 192.168.1.0,但没有插入到路由表中。因为它不知道下一跳是什么

解决方案:

  1. 在 R2 上重新分配连接的接口
  2. 将下一跳的 EBGP 邻居称为R1上的邻居 172.16.1.2 next-hop-self