BGP同步规则:开启同步下,从IBGP收到一条路由不会传给任何EBGP邻居(实验效果IBGP邻居和EBGP邻居都不传),除非从自身的IGP中也学到这条路由。目的是防止AS内部出现路由黑洞,向外部通告了一个本AS不可达的虚假的路由。
同步规则只影响从IBGP邻居收到的路由,不影响从EBGP邻居收到的路由。在开启同步的情况下,从IGP中没有收到这条路由,在自身BGP表中不是best的路由,也不会装进自己的路由表。即使配置为路由反射器后,也不会反射给任何客户端(反射器只反射最优路由)
实验场景说明:R1,R2,R3,R4属于同一个AS10,R5属于AS20,R3分别和R1,R4建立IBGP邻居,并且R3是路由反射器。R3和R5建立EBGP邻居。R2不运行BGP。
R1上发布一条1.1.1.1/32的路由进BGP中 ,在R3的BGP进程中开启同步, R3收到的1.1.1.1/32这条路由不是best路由,也不会装进R3的路由表中,不会传给R4和R5。如果关闭同步后,R3传递给R5,在R5上数据包访问1.1.1.1的方向: R5给R3,R3给R2,R2收到数据包,由于目的地址不可达丢弃数据包。此现象称为路由黑洞。
假设从R5发布一条5.5.5.5/32进BGP中,由于R3和R5之间是EBGP邻居,所以R3收到后不会被同步规则影响
1.1.1.1/32由于没有满足同步规则,没有打>号,而5.5.5.5/32仍然是best的路由,R3会把5.5.5.5/32正常传递给R4和R1。但是,BGP路由主要来自于互联网,IGP不能承受几十万条的外部路由,所以我们一般不建议将BGP路由注入IGP中。
bgp同步的解决方案
1.full mesh ibgp解决方案
AS内部的所有路由器都运行full mesh ibgp,就可以关闭所有路由器的同步而不影响路由的通告和连通性。
不足:当as内部路由器数量很多时,需要建立N*(N-1)/2个ibgp会话,带来过度的系统开销,扩展性不好。
2.路由反射器解决方案
AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke的ibgp(会话数为N-1), 然后关闭所有bgp路由器的同步。
3.bgp联盟解决方案:
联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID。