在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。