作为应用于AS间的路由协议,IBGP经常被应用于大规模的网络中,而这些大规模的网络中往往由于设备众多、配置繁琐,维护管理难度大、路由复杂等而存在各种各样的问题。而网络管理员们一般可以通过增强配置来解决在大规模网络中遇到的BGP对等体众多、BGP路由表庞大、IBGP全连接以及路由表震荡等问题。
图1 网络拓扑示意图
单位网络由H3CMSR5660路由器组网,H3CH3C-MSR5660 A和H3C-MSR5660 B、H3CMSR5660 C之间建立OSPF连接,而H3C-MSR5660 B和H3C-MSR5660 C之间建立IBGP邻居,H3CMSR5660分 别向H3CMSR5660 B和H3CMSR5660 C发布了网段10.211.4.0/14,结果,H3CMSR5660 B的OSPF路由表中可以看到,但在H3CMSR5660 C的OSPF路由表中没有该路由(如图1)。
我们通过下面的策略来进行分析。
首 先,检 查H3CMSR5660 C的OSPF LSDB,在出现故障的时候,可以看到LSDB中有该14位网段的信息,但是没有生成OSPF路由,把10.211.4.0/14分为两个19位掩码的网段发布,在H3C-MSR5660 B和H3CMSR5660 C上都可以看到此网段OSPF路由信息。
接着,在H3C-MSR5660 C上,执 行display ip routing-table命令查看全局路由表信息,发现其14位掩码的该网段路由是通过BGP的方式,从H3C-MSR5660 B中学习得到的,而且优先级为中高。
最后,我们通过在H3CMSR5660 C上执行display current-configuration检查路由器当前的配置,发现在BGP IPv4单播地址簇视图下,配置了 preference 20 100 200,这条命令导致IBGP路由优先级为中高,高于OFPF的路由优先级,所以当网段掩码为14位的时候,选择了优先级更高的IBGP路由,导致OSPF LSDB不能生成OSPF路由。
从上面的检查结果看,我们可以从优先级这个概念进行处理,在H3C-MSR5660 C上分别执行以下操作:
执行system-view,进入到系统视图,接着执行bgp进入BGP视图,执行undo preference,取消之前的优先级设置,执行preference20 180 200命令重新设置路由器优先级,将IBGP路由优先级从原来的100设置为当前的180。
经过上面简单的设置后,可以发现整个网络可以正常运行了。
从本次故障看,我们需要清楚地知道H3C-MSR5660 C从H3C-MSR5660 B学习的IBGP路由优先级虽然高于150,但是掩码位为14位时,自然本地的LSDB就可以计算出15位掩码的路由了,但是本案例中,问题的根本原因还在于各协议路由优先级的设置,这是我们在设置路由器时需要特别注意的。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
利用反射路由可以解决这一问题。在一个AS内,其中一台路由器作为路由反射RR,其他路由器作为客户机与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递路由信息,而客户机之间不需要建立BGP连接。
IBGP必须保持全连接的原因如下:
1.防止在AS内部形成BGP路由环路。
2.确保BGP路由路径上的所有路由器都知道如何将数据包转发到目的地。
IBGP路由器必须以全网状结构相连,以防止路由环回。如果使用了路由反射器或路由联盟,那么IBGP网状结构可能遭遇收敛问题,而导致路由黑洞。