BGP的通告原则
1、BGP通过network、.import-route、aggregate
聚合方式生成BGP路由后,通过Update?报文将BGP路由传递给对等体。
2、BGP通告遵循以下原则:
- 只发布最优且有效路由。
- 从EBGP对等体获取的路由,会发布给所有对等体。
- IBGP水平分割:从BGP对等体获取的路由,不会发送给BGP对等体。
- BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为BGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求BGP路由与1GP路由同步。同步规则主要用于规避BGP路由黑洞问题。
只发布最优且有效路由
通过display bgp routing-table命令可以查看BGP路由表。
在BGP路由表中同时存在以下两个标志的路由为最优、有效:
*:星号代表有效 #只要下一跳可达,则有效,但有效不代表最优
>:大于号代表最优
从EBGP对等体获取的路由,会发布给所有对等体。
只要是从EBGP学到的,无论是EBGP或者IBGP都会发。
但是从IBGP学到的就不会发
第三条:从BGP对等体获取的路由,不会发送给BGP对等体。IBGP水平分割
第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。该条原则也被称为“IBGP水平分割”。如图所示,如果BGP对等体学习到的路由会继续传递给其他的IBGP对等体:
- R2将一条路由传递给了IBGP对等体R3
- R3收到路由之后传递给BGP对等体R1
- R1继续传递给IBGP对等体R2
这样就可能会形成路由环路。
解决方法:IBGP全互联、路由反射器
IBGP全互联
- 物理全连接:如上图,把R2和R3网线连起来,这个方案的弊端在于物理线路的铺设非常麻烦。
- 逻辑全连接:我们知道BGP可以和相隔的设备建立邻居,如下图做逻辑全连接,这个方案的弊端在于如果设备数量非常多,大量IBGP的连接难于管理。
如何解决呢?上面我们不是提到还有另一种方法吗?路由反射器,我们下一篇单独说。
第四条原则BGP的同步规则
第四条原则:当一台路由器从自己的1BGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如oSPF等,此处也包含静态路由)学习到这条路由,该条规侧也被称为BGP同步原则。
如图所示:
- 1.BGP路由器R4上存在一条路由10.0.4.0/24,R4将其传递给了R2。
- 2.R2将路由传递给非直连IBGP对等体R3。
- 3.R3将路由传递给R5。
- 4.之后R5向10.0.4.4发起访问。
R5访问10.0.4.4:
- 1.R5查找路由表,将报文发送给R3。
- 2.R3收到报文后查找路由表,匹配到一条BGP路由,其下一跳为R2,但是R2为非直连下一跳,需要进行路由迭代,通过1GP学习到的路由迭代出下一跳为R1。R3将报文发送给R1。
- 3.R1收到报文后查找路由表,因为R1并非BGP路由器未与R2建立IBGP对等体关系,因此R1上并无BGP路由10.0.4.0/24,路由查找失败,R1将报文丢弃。
这就叫“路由黑洞”