在MPLS ×××中,CE-PE之間使用ospf協議的時候,若是在CE之間還有backdoor鏈路的時候,那麼CE之間在選擇路由的時候老是優先選擇backdoor鏈路,而不會選擇穿越MPLS ×××網絡的鏈路,主要是由於:redis
在MPLS ×××配置的時候,OSPF常常用來做爲PE-CE中間的路由協議,以經過MPLS骨幹網絡鏈接×××內的各站點。雖然OSPF PE-CE之間的鏈接保證了×××站點間的連通性,但×××站點間的backdoor後門鏈路也應該考慮。若是兩個站點屬於同一個site,那麼通過後門鏈路的路徑老是會被優先選擇,由於按OSFP協議規定,intra-area的路徑老是優於inter-area路徑。所以,必須考慮存在後門鏈路時,能經過策略來控制路由。 ( K5 R% b0 G8 m8 w6 V
若是後門鏈路只是用來做爲備份使用而不參與×××業務提供服務,缺省的處理流程將不可接受。爲了從新經過MPLS ×××骨幹區創建站點間的鏈接,必須在相關PE路由器的入口和出口VRF間創建邏輯的intra-area鏈路。本特性提供一種解決方案,在兩個站點間創建一個假OSPF鏈路:sham-link,做爲intra-area通道,以使得兩個站點間的之間的通信經過MPLS骨幹區域,然後門鏈路做爲備份使用。若是兩個站點間不存在後門鏈路,沒有必要使用sham-link。網絡
在MPLS-×××網絡中,當PE和CE使用OSPF時,PE從CE學到路由後,都放在相應VRF中,而後傳遞給對端PE,再由PE轉發到遠程CE。若是兩端CE之間存在backdoor link,×××流量老是經過backdoor link轉發,而放棄從MPLS骨幹傳輸。
如圖,假設CE1經過OSPF從CE2學到一條路由4.4.4.4/32,CE1一定會優先選擇從後門鏈路到達4.4.4.4。不只如此,PE路由器也一樣會選擇從後門鏈路到達4.4.4.4而放棄從MPLS ×××骨幹網絡中傳輸。
下面經過實驗來驗證
實驗拓撲如上圖,PE1、PE2之間運行MP-BGP。PE與CE之間運行OSPF, CE1和CE2之間也創建OSPF鄰接關係,且均屬於area 0。在兩個PE上一個×××實例。在CE2上建立一個loopback0,4.4.4.4/32,並將其宣告進OSPF。
實驗配置
PE1的OSPF和BGP配置:
router ospf 100 vrf ×××A
router-id 1.1.1.1
log-adjacency-changes
redistribute bgp 100 subnets
network 192.168.13.1 0.0.0.0 area 0
!!
router bgp 100
bgp router-id 1.1.1.1
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0!
address-family ***v4
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-community extended
exit-address-family
address-family ipv4 vrf ×××A
redistribute ospf 100
PE2的OSPF和BGP配置:
router ospf 100 vrf ×××A
router-id 2.2.2.2
log-adjacency-changes
redistribute bgp 100 subnets
network 192.168.24.2 0.0.0.0 area 0
!!
router bgp 100
bgp router-id 2.2.2.2
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0!
address-family ***v4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
exit-address-family
address-family ipv4 vrf ×××A
redistribute ospf 100
CE1的OSPF配置:
router ospf 100
router-id 3.3.3.3
log-adjacency-changes
network 192.168.13.3 0.0.0.0 area 0
CE2的OSPF配置:
router ospf 100
router-id 4.4.4.4
log-adjacency-changes
network 192.168.24.4 0.0.0.0 area 0
network 4.4.4.4 0.0.0.0 area 0
實驗結果
CE1路由表
PE1路由表和BGP路由表
從CE1和PE1路由能夠看出,PE1和CE1都優先選擇backdoor link到達4.4.4.4/32
分析:
(1)CE1從CE2學到的關於4.4.4.4/32的路由爲o的路由,即intra-area路由,從MPLS ×××骨幹網絡到達遠程網絡是inter-area路由,而inter-area路由是不可能優先於intra-area路由的。
(2)PE1從CE1學到的關於4.4.4.4/32的OSPF路由AD爲110,而從PE2學到的關於4.4.4.4/32的IBGP路由AD爲200,因此選擇從CE1走。
結論:若是CE之間的後門鏈路僅僅是做爲備份使用,那麼將其做主用鏈路,是不理智的。
爲了不這一問題,能夠在PE 路由器之間創建OSPF 僞鏈接(sham link),使通過MPLS ××× 骨幹網的路由也成爲OSPF 區域內路由。
sham link 做爲區域內的一條點到點鏈路,包含在Type1 LSA 中發佈。用戶能夠經過調整度量值在sham link 和backdoor 之間進行選路。
配置OSPF sham-link
PE1
(1)在PE1路由器上建立/32位loopback地址
PE1(config)#int loopback 100
PE2(config-if)#ip vrf forwarding ×××A
PE2(config-if)#ip add 100.1.1.1 255.255.255.255
(2)將/32位地址在MP-BGP裏發佈
PE1(config)#router bg 100
PE2(config-router)#address-family ipv4 vrf ×××A
PE3(config-router-af)#network 100.1.1.1 mask 255.255.255.255
(3) 建立Sham-Link
PE1(config)#router ospf 2 vrf ×××A
PE2(config-router)#area 0 sham-link 100.1.1.1 100.1.1.2 cost 1
PE2
(1)在PE2路由器上建立/32位loopback地址
PE1(config)#int loopback 100
PE2(config-if)#ip vrf forwarding ×××A
PE2(config-if)#ip add 100.1.1.2 255.255.255.255
(2)將/32位地址在MP-BGP裏發佈
PE1(config)#router bg 100
PE2(config-router)#address-family ipv4 vrf ×××A
PE3(config-router-af)#network 100.1.1.2 mask 255.255.255.255
(3) 建立Sham-Link
PE1(config)#router ospf 2 vrf ×××A
PE2(config-router)#area 0 sham-link 100.1.1.2 100.1.1.1 cost 1
實驗結果
PE1和PE2經過sham-link創建了OSPF鄰接關係
再看CE1和PE1的路由表
結論:
從路由表中能夠看出,PE1和CE1均經過sham-link學到了關於4.4.4.4/32的OSPF intra-area路由,能夠調整sham-link和backdoor的cost來進行路由選擇
配置sham-link時須要知足的條件
(1)在PE上單首創建32位loopback地址,在PE之間使用這個地址來創建Sham-Link。
(2)這個32位loopback地址的接口必須放入相應的VRF。
(3)這個32位loopback地址必須在BGP裏發佈,而不能在OSPF裏發佈。
(4)同一個OSPF 進程的多條sham link 能夠共用端點地址,但不一樣OSPF 進程不能擁有兩條端點地址徹底相同的sham link。
(5)sham link 的端點地址被BGP 做爲×××-IPv4 地址發佈。若是路由通過了sham link,它就不能再以×××-IPv4 路由的形式被引入到BGP。