如图所示,AS内部路由器没有跑BGP,边缘路由器跑BGP。
R1,R5通告环回接口。
当R1的1.1.1.1 ping R5的 5.5.5.5 的环回口,会发现不通。
产生这个原因是什么呢?
由于R3只运行了OSPF协议,没有运行BGP协议,只保证了区域内的底层通信,与外部是无法通信的,所以R3并没有学习到R1,R5的路由条目,所以R3此处产生了路由黑洞。
啦啦啦,那我们该如何解决路由黑洞这个问题呢?
下面列了四种方法,第四种方法才是今天的重点呀。
1.我们可以在AS 234 内实现IBGP全互联,但是要 注意 在路由器配置 下一跳自我 ,否则IBGP学到的路由也是不可达的。当然感觉这是比较繁琐的方法,因为路由器多了,配命令配到手都要断呀。
2.我们也可以在 R2与R3建立 IBGP ,R3与R4建立IBGP, 在AS 234内部建立部分互联, 然后关键用R3做路由反射器。因为默认IBGP PEER 之间学到的路由 不能传给另一对 IBGP PEER,所以我们只能通过路由反射器。
3.在R2,R4进行路由重分布,把BGP路由重分布进OSPF中,但是要注意 BGP重分布进IGP路由时,默认只会重分布BGP通告的本地路由和从EBGP-PEER学来的路由,从IBGP-PEER学来的路由不予重分布。若想重分布IBGP-PEER学来的路由,也很简单,只需进入BGP进程,输入bgp redistribute-internal。
4.第四种方法是我今天想到的,感觉方便的很啊,duang,duang
想想看,R3为什么会产生路由黑洞呀? 不就是因为去不了1.1.1.1和5.5.5.5么,可是我隔壁的弟兄R2,R4知道呀,有没有一种办法可以让我直接把包丢给我隔壁的路由器?
那就是MPLS啦!!!MPLS 的标签属于2.5层,我们可以只通过查标签,不用查路由,这样就不会丢包了。我们只要在R2,R4之间的接口都开启 mpls ip ,就会开启mpls功能啦。这样1.1.1.1 ping 5.5.5.5 时,R1发现数据往R2丢,R2收到则发现要往R4丢(因为是R4把5.5.5.5的条目传给R2的),但是发现4.4.4.4又要往R3丢,打上标签(igp学到的路由+LDP交互信息),包进入R3时,发现数据包携带标签,则会查询MPLS转发表,则会通过转发表传递给R4啦。R4当然知道R5怎么走。所以包就可以抵达啦。回来也一样。
但是记住,R1ping5.5.5.5的时候,一定要带源呀!今天犯了2B的错,搞了好久都发现没通。
当然,第四种方法涉及到MPLS,改天再把MPLS知识再整理出来咯。
转载于:https://blog.51cto.com/xiaochibobo/1621830