MPLS使用LSP解决路由黑洞
在之前我们学习到的BGP路由协议当中,我们了解到中间设备如果没有运行BGP协议或没有BGP路由就会导致路由黑洞,造成数据中断,我们之前的解决办法是全互联和RR联盟。
在这张拓扑当中,我们的site1通过BGP协议将192.168.1.0网段的路由信息传递给site2,当然site2同样会传递路由给site1,AR3不运行BGP,但内部运行IS-IS协议,所以正常情况下AR2与AR4是可以学习到双方的路由信息的,路由的传递没有毛病
数据平面就会存在问题,当AR5去访问192.168.1.0/24网段时,查看路由表发现这条路由是AR4这台ASBR设备引入进来的,所以AR5会把路由发给AR4,AR4收到这个报文后查看目的IP为192.168.1.0查看路由表发现这条路由是由BGP学习来的,BGP路由表当中的下一跳为AR2的接口IP地址,由于下一跳不是直连网段,所以AR4进行路由迭代后,发现下一跳为AR3,将报文转发给AR3,但AR3在收到该报文后就懵逼了,自己并没有运行BGP协议,所以AR3并没有192.168.1.0网段的路由信息,AR3就直接丢包了。导致数据中断。
那怎么使用LSP来解决的呢?
我们通过之前的学习知道了,LSP会根据上下游来分配标签,假设分配后的标签为下图
同样的传递流程,报文从AR5转发给了AR4,AR4收到该报文后查看FIB表发现tunnel参数并非0,就查LIB表打上相应标签,使该报文变成携带标签的报文。AR3在收到该报文后,进行拆包发现该报文是携带标签的,那么AR3就不会去查路由表了,而是查标签转发表LIB,通过标签转发表得知了来自1028标签的报文应该封装1027的标签从G0/0/0口转发出去,那么报文就顺利的到达了AR2,到达了AR2之后,由于AR2是MPLS域边界路由器,所以AR2会直接将标签弹出变成IP报文正常查路由表转发。
由此就解决了路由黑洞的问题。