IBGP-邻居建立正常-学习不到IBGP路由
一、故障现象
R2、R3、R4建立IBGP邻居,但是发现R3或R4学习不到IBGP路由。
二、组网拓扑

拓扑描述:R1和R2属于不同的AS,通过物理接口的IP建立EBGP邻居。R2、R3、R4属于相同AS,通过IGP路由协议(本例中为OSPF)实现环回口的可达性后,通过环回口进行IBGP邻居的建立。
三、可能原因
1、IBGP水平分割导致学习不到路由
2、没有正确发布路由
3、BGP路由下一跳不可达
四、排查步骤
步骤一:检查是否确实没有学到相应BGP路由

通过show ip route bgp命令,查看是否存在相应的B开头的路由。如上图,R4可以学到BGP路由192.168.10.0/24。
步骤二:检查是否IBGP水平分割导致学习不到路由

为了避免IBGP邻居内部出现环路,BGP协议在设计的时候,就不允许IBGP学习到的路由再传给其他IBGP邻居。故若R2与R4都只和R3建立IBGP邻居,那么R3从R2学习到的BGP路由器,就不会再发给R3的BGP邻居R4了。这时会导致R4学习不到路由。若要解决这个情况,可以考虑“全互联方案”,同个AS内的所有路由器两两之间建立BGP邻居,即本例中R2、R3、R4两两建立IBGP邻居。除了全互联方案,还有BGP联盟、MPLS技术、RR技术等也可以解决此问题,若需详细了解,可以参考闪电兔-路由-搜索对应的关键字。
步骤三:检查是否没有正确发布路由
BGP路由需要在路由器上发布后,其他路由器才可以学习到。发布路由到BGP中有两种方式:①通过network命令通告路由表里存在的路由(除学到的BGP路由以外,所有路由表里有的本地接口、静态路由、RIP、OSPF、ISIS都可以通告),注意通告的时候需要用准确的掩码,否则会无法通告出相应路由;②重分布接口或者路由到BGP中。
如本例中,需要通告R1的环回口192.168.10.1到BGP中,需要先查看路由表

从上图输出可以发现该环回口路由是/24位的,故通告对应路由的时候,需要通告准确的24位掩码
R1#conf
R1(config)#router bgp 65001
R1(config-router)#network 192.168.10.0 mask 255.255.255.0
R1(config-router)#end
R1#wr
步骤四:检查是否BGP路由下一跳不可达
路由器学习到EBGP发来的路由,下一跳地址是EBGP邻居。但是学习到该路由后,发送给IBGP邻居,下一跳地址仍然是EBGP邻居。对于IBGP邻居并无对应下一跳的路由,导致IBGP邻居认为该路由不可达,此时不会加入到路由表之中。本例中,R2上学习到的R1的192.168.10.0/24的路由,下一跳地址是10.0.12.1(R1和R2的互联地址),可达

R2将该BGP路由传递给R3后,因为R3没有去往路由下一跳地址10.0.12.1的路由,导致BGP路由非最优,则不会加表。

此时,可以通过在R2上将从EBGP学习到的路由传递给IBGP路由器的时候,下一跳地址改为R2自己
R2#conf
R2(config)#router bgp 65002
R2(config-router)#neighbor 3.3.3.3 next-hop-self
R2(config-router)#end
R2#wr
此时R3可以正常学习到路由,且加入路由表


五、信息收集
信息收集命令参考
ter len 0
show version
show slot
show version slot
show run
show log
show cpu
show memory
show ip interface brief
show interface
show ip fpm count
show ip fpm st
show ip route
show ip ref route
show ip ref adj
show ip route summary
show arp
show ip int brief
show ip protocol
show ip bgp neighbors
show ip bgp summary
show ip bgp
show ip f f | in 179
ter no len
六、总结与建议
IBGP-邻居建立正常-学习不到IBGP路由时,需注意以下几点:
1、IBGP水平分割导致学习不到路由
2、没有正确发布路由
3、BGP路由下一跳不可达
阅读剩余
版权声明:
作者:SE_You
链接:https://www.cnesa.cn/9439.html
文章版权归作者所有,未经允许请勿转载。
THE END