在MPLS/VPN环境中,如果PE-CE之间使用OSPF交换路由信息,OSPF route将作为VPNv4 route(携带OSPF domain ID,OSPF Router ID,OSPF Route Type等BGP extended communities)通过MP-BGP在PE Routers之间传播。当PE Router收到VPNv4 Route时,若其所携带的Domain ID与OSPF process的Domain ID相一致,则作为OSPF inter-area Routes(type1, 2 and 3 LSA)或OSPF external Routes(type 5, 7 LSA)通告给CE Router;若Domain ID不一致,则作为OSPF external Routes通告给CE Router。
在如下拓扑示例中,若在CE之间建立一条直连链路(OSPF backdoor link),CE将优先选择通过该链路学到的路由信息,因为通过该链路学习到路由信息为OSPF intra-area routes,而PE通告给CE的则是inter-area routes。
若我们期望将MPLS/VPN backbone作为主链路,则需要将经由MPLS/VPN backbone传播的OSPF routes作为intra-area routes通告给CE,且其metric要小于OSPF backdoor link。为此,我们需要在PE Routers之间建立一条intra-area链路,这条链路也就是所谓的OSPF Sham-link。
对每个与对端PE建立sham link连接的VRF OSPF instance都需要有一个sham link endpoint address与之相关联。
Sham link endpoint address是一个位于VRF地址空间的/32 IPv4地址,该地址不能被OSPF通告,必须作为VPNv4地址由BGP通告。有关OSPF sham link的更多信息可以参见RFC 4577。
在Cisco IOS上使用area sham-link [cost]命令创建sham-link链路,下面是San Jose PE的配置示例片段。
!
hostname SanJose-PE
!
ip vrf GalaxyTech
rd 1:50
route-target export 1:50
route-target import 1:50
!
router ospf 100 vrf GalaxyTech
log-adjacency-changes
area 0 sham-link 1.1.1.1 2.2.2.2
redistribute bgp 1 subnets
network 192.168.1.0 0.0.0.3 area 0
!
router bgp 100
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 194.22.15.3 remote-as 1
neighbor 194.22.15.3 update-source Loopback0
!
address-family vpnv4
neighbor 194.22.15.3 activate
neighbor 194.22.15.3 next-hop-self
neighbor 194.22.15.3 send-community extended
exit-address-family
!
address-family ipv4 vrf GalaxyTech
redistribute ospf 100 match internal external 1 external 2
no auto-summary
no synchronization
network 1.1.1.1 mask 255.255.255.255
exit-address-family
!
使用show ip ospf sham-links命令检查sham link链路状态:
从上面的输出可以看到sham link链路已经建立且被视为demand circuit。通过show ip route vrf GalaxyTech命令查看San Jose PE的VRF table:
可以看到经由MP-BGP传播的子网172.16.1.0/24已作为intra-area route被安装到VRF table中了。
在将OSPF路由信息重分发到MP-BGP时,VPNv4路由所携带的MED为OSPF路由的度量值;当把VPNv4路由重分发到OSPF中时,VPNv4所携带的MED将被还原为OSPF路由的cost。在我们的示例中所有串行链路均为T1线路的速率(1.544Mbps),所以New York PE到New York CE的OSPF cost为108/1.544 = 64,New York CE与子网172.16.1.0/24相连的接口的OSPF cost为1,而子网172.16.1.0/24在New York PE中的度量值为65。因为sham link的默认cost为1,所以其路由度量值在San Jose PE上为66。
再来看San Jose CE的路由表:
可以看到子网172.16.1.0/24的next-hop已经指向了San Jose PE。
最后来看下San Jose PE的OSPF database。
从上面的输出可以看到San Jose PE通告了两条type 5 LSA。在MPLS/VPN环境中,PE Router同时扮演着OSPF ABR及ASBR的角色,当BGP路由(非OSPF VPNv4路由)重分发到OSPF中时,将成为OSPF external route。