1、首先我们要了解一下BGP的通告原则之四:BGP与IGP同步
(从IBGP邻居学习到的路由,在IGP中也要学习到,否则路由无效)
2、路由黑洞的产生是因为BGP与IGP同步检查默认是不开启而导致的
3、这里以下图解释一下
R1与R2建立EBGP邻居
R2与R4建立非直连IBGP邻居
R3不建邻居
R4与R5建EBGP邻居
AS200底层的IGP协议为OSPF
然后再R1宣告一条BGP路由192.168.1.1,此时R1会将该路由传递给邻居R2,然后R4再从IGBP邻居收到该BGP路由,,下一跳为2.2.2.2(R2)如图。
然后由于同步没有开启,R4直接将该路由传给R5,如图。
当R5去访问该BGP路由192.168.1.1时,下一跳为R4,便传给R4,在R4的BGP路由表里192.168.1.1 的下一跳为2.2.2.2,但R4与R2并没有真实的直连链路,所以得通过R3,但在R3路由器的路由表里并没有该路由,因此该往哪里走便将该数据包丢弃,导致R5无法访问192.168.1.1,这便是黑洞路由。
4、解决方法
-
在数据包所经过的路径上开启BGP
-
将部分的BGP路由引入到IGP
-
使用MPLS,即使中间路由器没有路由,数据包也根据标签转发。
需要配置命令 Route recursive-lookup tunnel 下一跳迭代进隧道