IBGP也就是内部BGP协议,它适用于很多的场合,在OSPF环境中主要是为了防止形成环路,造成网络故障,本篇就这个故障为介绍应该如何解决,这里是以H3C路由组网的环境为例。
一、H3C的组网,H3C A分别与H3C B和H3C C之间建立OSPF连接,而H3C B和H3C C之间建立IBGP邻居,H3C A分别向H3C B和H3C C发布了网段192.168.1.0/14,结果,H3C B的OSPF路由表中可以看到,但H3C C的OSPF路由表中没有该路由。
二、这是为什么呢?下面我们就来具体分析一下:
1、查看H3C C的OSPF LSDB,在出现故障的时候,可以看到LSDB中有该14位网段的信息,但是没有生成OSPF路由,把192.168.1.0/14分为两个19位掩码的网段发布,在H3C B和H3C C上都可以看到此网段OSPF路由信息。
2、在H3C C上,执行display ip routing-table查看全局路由表,发现14位掩码的此网段路由是通过BGP的方式,从H3C B学习过来,且优先级为中高。
3、在H3C C上,执行display current-configuration查看配置,发现在BGP IPv4单播地址族视图下,配置了preference 20 100 200,该命令导致IBGP路由优先级为中高,高于OSPF的路由优先级,所以当网段掩码为14位的时候,选择了优先级更高的IBGP路由,导致OSPF LSDB不能生成OSPF路由。
三、知道了原因,那我们就可以进宪必要的处理了,在H3C C上分别执行以下操作,执行system-view,进入到系统视图,接着执行bgp进入BGP视图,执行undo preference,取消之前的优先级设置,执行preference 20 180 200命令重新设置路由优先级,将IBGP路由优先级设置为180。
经过上面的设置后,可以发现整个网络正常运行了,这里需要知道H3C C从H3C B学习的的IBGP路由优先级虽然高于150,但是掩码位为14位时,自然本地的LSDB既可以计算出15位掩码的路由了,问题的根本原因还在于各协议路由优先级的设置,这是我们在设置路由器时需要注意的。