MPLS VPN環境下雙PE存在的問題及解析(OSPF篇)
本文檔主要探討的是,在MPLS環境中,如果某個VPN站點存在雙PE,那么有可能存在的問題,諸如路由環路、次優路徑等等。做個分析,同時結合OSPF在MPLS VPN環境中的相關細節問題做個介紹。
一、實驗描述
左右兩個Site,PE-CE都是跑OSPF。
左右兩個Site都將客戶路由放給PE,最終要實現Site之間能夠互訪,重點觀察左側Site的路由。
我們重點關注兩個站點內,OSPF網絡設計的不同,從而對網絡的影響,以及Site1內雙PE在各種環境下產生的問題和解決辦法。
二、設備配置
CE1、CE2、CE3的配置就不說了。
PE1的配置如下:
ip vrf cisco
rd 1:1
route-target export 3456:12
route-target import 3456:3
route-target import 3456:12
!
ip cef
mpls label range 300 399
mpls ldp router-id Loopback0
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
interface Ethernet0/0
ip vrf forwarding cisco
ip address 10.1.13.3 255.255.255.0
interface Ethernet0/1
ip address 10.1.35.3 255.255.255.0
mpls ip
!
router ospf 1 vrf cisco
redistribute bgp 3456 subnets
network 10.1.13.3 0.0.0.0 area 0
!
router ospf 100
router-id 3.3.3.3
network 3.3.3.3 0.0.0.0 area 0
network 10.1.35.3 0.0.0.0 area 0
!
router bgp 3456
no bgp default ipv4-unicast
neighbor 5.5.5.5 remote-as 3456
neighbor 5.5.5.5 update-source Loopback0
address-family vpnv4
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community extended
exit-address-family
address-family ipv4 vrf cisco
no synchronization
redistribute ospf 1 vrf cisco match internal external 1 external 2
exit-address-family
PE2、PE3的配置大同小異,這里不在贅述
PE2的VRF配置:
ip vrf cisco
rd 1:2
route-target export 3456:12
route-target import 3456:3
route-target import 3456:12
PE3的VRF配置:
ip vrf cisco
rd 1:3
route-target export 3456:3
route-target import 3456:12
ip vrf forwarding cisco
三、實驗現象
1.兩邊站點PE上的VRF OSPF進程號相同,且Site1內是OSPF單區域
首先考慮下Site2到Site1的路由傳遞過程
我們假設先配置的是PE1,后配置PE2,來看看路由的傳遞過程。關鍵看VPNv4路由從R5傳遞給PE1后,PE1將路由注入到OSPF,形成3類 LSA,這些3類 LSA的DownBit都置位了,因此,即使再經過Site1內的OSPF網絡被傳到PE2,PE2也不會用這些LSA3參與路由的計算,因為他們 DownBit都置位了。竟然忽略了這些3類LSA,自然就不會加載進路由表,更不會在PE2上經過OSPF到BGP的重發布倒灌回BGP注意,此刻 PE2是恒定忽略這些Downbit置位的3類LSA的,即使shutdown掉PE2的e0/1口,也是一樣。
因此在這個環境下,得益于OSPF Downbit的設計,網絡顯得很可靠。
再考慮下Site1到Site2的路由傳遞過程
假設PE1先配置的OSPF到BGP的重發布,那么site1內的客戶路由,被PE1注入到MP-BGP形成了VPNv4的前綴,經由RR反射給了PE2,這時候,對于PE2來說,一邊是從VRF 的OSPF路由進程學習到Site1內的路由,另一邊,從MP-iBGP也學習到這些路由,由于OSPF的AD110小于IBGP的200,因此PE2優選OSPF路由,從而不會造成次優路徑的問題。
2.兩邊站點PE上的VRF OSPF進程號相同,但Site1是多區域
注意,在這個測試中,我們的環境變了,變化的地方在site1,從OSPF單區域,變成了多區域,R1屬于area0,R2是ABR,跟PE2直連的網段,以及自身的loopback 2.2.2.2屬于area1。我們來網絡會有什么影響。
首先考慮下Site2到Site1的路由傳遞過程
首先看PE1上發生什么事情,PE1上首先是通過BGP學習到了7.7.7.7也就是Site2內的路由,然后將路由重發布到OSPF,形成LSA3,這些LSA3 Downbit置位。那么CE1就能學習到關于7.7.7.7的OIA路由,并且繼續將LSA3傳遞給CE2,CE2也收下了,由于它是ABR,從 area0收到LSA3,于是將LSA3又注入常規區域area1,但是,這條LSA3就發生變化了,DOWNbit位被清除。當然,這還不是最糟糕的,更糟糕的是,3類LSA被傳遞給PE2后,我們前面分析過了,對于OSPF來說MPLS VPN Backbone就是一個super backbone area超級骨干區域,那么此刻PE2即是一臺ASBR又是一臺ABR,我是一臺ABR,但是我卻從area1收到3類LSA,這是違反OSPF關于“3 類LSA必須經過area0中轉”這一原則的,因此PE2忽略在area1上手收到的來自CE2的任何3類LSA,當然,產生自CE2的area1內的區域內部1類LSA還是會收的。
正是由于PE2的ABR屬性,造成的另一個問題是,來自Site1內area0的路由,經由CE2以LSA3的形式通告給PE2,PE2在路由計算的時候也照樣忽略它們。這將直接導致接下去發生的問題:次優路徑。怎么造成的呢,我們知道PE1上已經學習到了Site1內的OSPF路由,它將這些OSPF重發布到BGP,并經RR反射給了PE2,于是,PE2從BGP學習到了這些Site1內的路由,另一方面,它又忽略了CE2更新過來的關于Site1內的 3類LSA,因此PE2的路由表里裝載的Site1里area0的路由全是BGP的,這就是次優路徑了,此時此刻PE2的路由表是這樣的:
B 1.1.1.1 [200/11] via 3.3.3.3, 01:27:08
O 2.2.2.2 [110/11] via 10.1.24.2, 00:00:04, Ethernet0/0
B 7.7.7.7 [200/11] via 6.6.6.6, 01:27:08
B 10.1.12.0/24 [200/20] via 3.3.3.3, 01:27:08
B 10.1.13.0/24 [200/0] via 3.3.3.3, 01:27:08
C 10.1.24.0/24 is directly connected, Ethernet0/0
B 10.1.67.0/24 [200/0] via 6.6.6.6, 01:27:08
剛才描述的過程,可以用上面的圖來概述。哥們實驗的時候,做了個測試,將PE2上連接RR的接口shutdown了。于是PE2的VRF路由表變成了:
O 2.2.2.2 [110/11] via 10.1.24.2, 00:10:48, Ethernet0/0
只有一條area1內的路由,但是查看PE2的OSPF database,發現還是有許多CE2發過來的LSA3的,很明顯這就驗證了我們前面的說法,PE2這哥們認為爺爺我是個ABR,直接忽略你。
這個事情還沒完,由于PE2路由表里的這個問題,加上PE2又做了OSPF 和BGP的雙向重發布,那么,PE2上,這些從PE1倒灌過來的關于Site1內的路由,由于此刻在PE2的路由表里是BGP路由,那么在BGP到OSPF的重發布動作后,這些路由又被坑爹的倒灌回了Site1:
這樣一來,就得看CE2的了。
對于Site1內area0里的路由,從area0學到的是LSA1及LSA2,而從PE2倒灌回來的是LSA3,CE2當然優選LSA1及LSA2計算得出的區域內部路由,所以這里天然防環。
對于Site2的路由,CE2同時學到PE1及PE2更新過來的LSA3,因此比metric,最后優選PE2作為下一跳。
關鍵點,注意,這里有個細節,R2,是一臺ABR啊各位親戚朋友。既然是一臺ABR,那么當它收到PE2重發布進來的OSPF LSA3,即使放進了LSDB本該是忽略的,因為它是從常規區域area1收到這些LSA3的,違反OSPF的法則吧?但是實際上,在這個環境中,CE2 不但將LSA裝載進了LSDB,而且,這些LSA還參與路由計算。但是這些LSA3,CE2自己是手下了,卻不會將他們泛洪到area0中,也就是說,只影響了CE2自己。
綜上所述,當Site1內規劃成多區域時,有可能引發一系列的潛在問題。所以:
MPLS VPN環境中,OSPF網絡的設計要非常謹慎
上面的問題,可以考慮在CE2和PE2之間,建立一個virtual-link
再有就是可以利用一些策略工作過濾掉路由
3.兩邊站點PE上的VRF OSPF進程號不相同,且Site1內是OSPF單區域
兩邊的VRF OSPF進程號不一樣,大家都知道會發生什么了,Site2的路由被PE1注入進OSPF后,會以LSA5的形式注入,那么接下去:
得益于Domain-Tag的設計,我們的網絡還是比較健壯的。
同樣,也不同擔心Site1內的路由被PE1注入到BGP然后反射回PE2的問題,這里直接比AD值然后BGP光榮落敗,沒什么難度。
原文博客:http://blog.sina.com.cn/s/blog_5ec353710101eg0h.html