IBGP水平分割规则
IBGP水平分割用于在IBGP对等体之间进行路由传递时,无法像EBGP对等体那样一来AS-Path属性进行防止环路的问题,因为AS-Path属性在AS内进行传递时是不会发生改变的。
下图便是极有可能出现IBGP对等体环路的场景:
R1将10.1.1.0/24这条路由发布到BGP中,再通过EBGP对等体将该路由传递给R2,当然R1 R2 R3之间不用担心环路的产生,因为它们之间能够通过AS-Path进行防环。此时R2收到EBGP对等发送来的路由时,将该路由通过IBGP对等体传递给R3和R4,R4收到该路由后传递给R3,R3收到该路由后再次传递给R2,此时就极有可能出现环路。
IBGP水平分割规则
当一台路由器从IBGP对等体那里学习到某条路由条目时,该路由器将不能把这条路由条目传递给任何IBGP对等体,这就是IBGP水平分割规则。
如上图,R3和R4收到该IBGP对等体传递的路由条目后,则不能再将该路由条目传递给其他对等体。
IBGP水平分割带来的问题
我们根据上图再延申出一台IBGP对等体R5,由于IBGP水平分割原则,R4无法将从IBGP对等体收到的路由条目传递给R5这个IBGP对等体的。
解决方法:
建立IBGP对等体全互联
在一个AS内,每两台设备之间都建立起IBGP对等体关系,这样,当R2收到EBGP对等体传递来的路由后,就会将该路由条目传递给每个IBGP对等体,此时进行IBGP对等体全互联后,每台AS内的设备都会收到该路由条目,因此是一种常见的解决手段。
当然,建立IBGP对等体全互联的手段固然常见,但是当一个AS内拥有大量的设备时,建立IBGP对等体全互联,则会大大增加设备的负担,也降低了网络扩展性,还有更精彩的解决手段,后续再具体解析。