我在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


#1 楼

假设您没有配置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


obviously这显然是错误的解决方案,但这是一个简单的测试,以说明发生问题的原因(请记住,在192.168.1.0/24的路由通过之前,您可能需要稍等片刻才能运行BGP下一跳扫描程序。已安装)。

有两种可能的解决方案,但在大多数网络中只有一种确实有意义...



最佳解决方案:配置一个IGP ...选择您喜欢的任何IGP,然后在整个AS 2中通告172.16.1.0/30 hat IGP

可选解决方案:配置R2和R3之间的对等会话以设置next-hop-self


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

评论


很好的解释。我没有意识到iBGP传递了未经修改的下一跳。

–user1038451
2014年1月8日14:41

迈克(Mike),您能否提供一个示例,说明您何时不想使用next-hop-self(除了已经有一个IGP通告eBGP对等体的下一跳地址之外)?我最初打算对此提出另一个问题,但认为这将是对您的答案的轻松补充。最近一直在研究BGP,而我一直在研究它,这使我好奇为何下一跳自我不是默认行为。

–艾迪
2014年12月29日下午16:40

我可以添加有关此信息,但是可能要花几天时间。简而言之:BGP下一跳的IGP开销是默认eBGP路径选择算法的一部分

–迈克·彭宁顿
2014年12月29日下午16:43

#2 楼

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

您可以在R3 bgp表中看到192.168.1.0,但未将其插入路由表。因为它不知道下一跳是什么

解决方案:


在R2上重新分配连接的接口
说是下一跳的EBGP邻居作为R1上的“邻居172.16.1.2 next-hop-self”。