存在以下这样一种场景:
现存在五台路由器:R1、R2、R3、R4、R5。
R1、R2、R3、R4所在的黑色区域为OSPF的area0区域,R1和R4之间的红色区域为MPLS-BGP-VPN区域。为了简化描述,我将红色区域称为上区域,黑色区域称为下区域。
【一、情景描述】
如果要想走上区域让R1与R4互通,因为两台路由器中间运行的不是OSPF,那么按照常理LSA应该是五类的。但是结果并不是预想的那样,此时两端是以三类LSA进行“沟通”的。
具体原因是:
在此情况,即MPLS-BGP-VPN与OSPF共存的情况下,OSPF会存在域ID,这时要是MPLS-BGP-VPN与OSPF两端相交的两台路由器的域ID相同,那么将会是三类LSA(O IA)。如果想改为五类LSA(O IE),可以选择修改域ID。使得两端域ID不同即可。
在这种情况下,一端的area 0区域的路由信息经过中间的MPLS-BGP-VPN区域以三类LSA到达另一个area0区域,说明中间的区域要比两端的area0更高级,更"area 0",故中间的这种区域就被称之为“超级骨干域”。
假设就是在以上的场景下企业有这样的需求:上区域的R1与R4之间是MPLS专线,下区域的R2与R3之间是专线,让R1、R4之间互通走上区域,而不是走下区域。
这时,上区域内是三类LSA,下区域,即OSPF area 0区域内是一类LSA
根据: O>O IA>O IE
这时R1、R4之间通信只会走下区域,即OSPF区域,而不会走MPLS-BGP-VPN。
-
这时可能会有人说:那改个cost值不就行了。
但是O>O IA>O IE是雷打不动的定律,大于一切策略,修改cost值压根不会修改原来的走法。
这时,
为了满足这样的要求,OSPF就出现了shame-link这样一种解决方法:将三类LSA转变为一类LSA。
但是
三类LSA是路由,一类LSA是拓扑,怎么能将三类LSA转变为一类LSA呢?
在这里,shame-link就挺像虚链路,将两边的两台路由器进行建邻,将shame-link宣告到area 0中,这相当于将上面两边的area 0进行了“缝合”,变成了一个area 0。只是虚链路所在的区域是OSPF内,shame-link是OSPF外
这样,上区域和下区域都是area 0了,就可以通过修改cost值进行选路干涉了
【二、配置】
1.铺设MPLS-BGP-VPN,底层动态路由协议为eigrp
以R1为例:
router bgp 100
bgp router-id 1.1.1.1
no bgp default ipv4-unicast
neighbor 10.4.4.4 remote-as 100
neighbor 10.4.4.4 update-source Loopback0
address-family vpnv4
neighbor 10.4.4.4 activate
2.在R1、R4、R5所有所处在MPLS-BGP-VPN中的接口进行MPLS配置
以R1为例:
interface e0/1
mpls ip
3.R1、R4设置VRF
以R1为例:
<