在IBGP中跑IGP时遇到的问题:BGP只更新最优路由条目

最近在做BGP练习,在做下面的拓扑的时候遇到了一些问题,拓扑是这样的

屏幕快照 2013-08-09 上午10.07.17

我这样配置了网段:

其中

其中R1R2R3在AS1中,R4在AS4中,R5在AS5中

R5上宣告5.5.5.5和7.7.7.7所在网段,R1上宣告1.1.1.1所在网段。

在R1R2R3上跑OSPF,让AS1 full-mesh但暂时不宣告24和35这两个网段,这时候应该能在R1上看到bgp表中对于5.5.5.5和7.7.7.7各有两个路径并且都没有写入路由表

原因是没有下一跳,这一点查看R1对应路由表可知

显然,这是因为刚刚跑IGP(这里跑的是OSPF)没有宣告24和35这两个网段。现在宣告之,果然相应的路由条目已经写入,看起来运行正确:

再看看bgp表:

怎么只各剩下一条?

这里问题就出来了:冗余哪里去了。是被AD较高的IGP盖住了么?

显然不用这条命令也能看出不是这么回事。

如果这时候把IGP关掉,然后在R1上做静态路由,这里就正常;如果跑IGP,想要有下一跳路由就要宣告24和35网段,一旦宣告,冗余的路径就消失了。

事实上,这个是由于BGP的一个特性造成的:

在BGP中,发送路由更新条目并不是全部都发送,它只发送自己的最优路径给邻居。

然后,在AS1中为了形成full-mesh我们跑了BGP但同时R2也学到了35,也就是说在R2这个IBGP中到达R5的线路有两条!

这样就可以理解了,R2把自己的最优路径发给了R1,结果和R3发送的是一样的都是走拓扑图中下边的路径(最优路径)

所以,这时候R1和R3都只有各一条的7和5网段的路由。

Published by R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注