宋尚

摘要:OSPF是目前網絡中使用很頻繁的IGP協議之一,是一種基于SPF算法的鏈路狀態路由協議,由于OSPF采用的是分區域設計,所以除了在區域間能夠形成環路外,外部路由被引入后,也會在區域間形成環路,最典型的就是引入外部路由后在NSSA區域形成的7類LSA,經過ABR完成7類LSA轉換成5類LSA后,由于cost值的問題形成的區域間環路問題,所以最終可以通過7類或者5類LSA中的FA地址字段來進行解決次優路徑或者環路問題。
關鍵詞:OSPF;7類LSA;5類LSA;FA地址;外部路由
OSPF的路由可以分為兩種,一種是內部路由,由1類,2類,3類LSA形成的路由都是內部路由,即network產生的路由。另外一種是外部路由,由5類,7類LSA形成的稱為外部路由,即import產生的路由。內部路由的環路問題可以通過OSPF自身設置的骨干區域和非骨干區域間的規則來進行解決,那外部路由進入OSPF區域后形成的環路是如何產生的以及如何解決這環路呢?我們在充分認識OSPF區域外部路由引起的環路問題時,先了解一下OSPF的一些相關知識點:
1.特殊區域:OSPF為了能適應各種環境及路由器的組網,開發了特殊區域這一概念,OSPF的特殊區域可分為兩種類型:
A、STUB區域:STUB區域又叫末梢區域,它拒絕5類LSA進入,即拒絕外部路由進入本區域,也不能在本區域下面引入外部路由,區域內的路由器通過ABR下發的默認路由來訪問外部網絡。
B、NSSA區域:這是一種特殊的STUB區域,它保持了STUB區域拒絕5類LSA的特點,但是它能允許在該區域引入外部路由,外部路由以7類LSA的形式存在于本區域中,NSSA區域的ABR會向其它區域把此7類LSA翻譯(轉換)成5類LSA(俗稱7轉5),使其它區域的路由器可以訪問此外部路由。
2.外部路由類型:OSPF外部路由有兩種類型
A、Type 1:也稱為E1。路由器在計算type1路由的Cost時,會把此路由的外部cost(ASBR到達目標網段的cost)與內部cost(本路由器到達ASBR的cost)相加。
B、Type 2:也稱為E2,引入路由時默認為此類型,路由器在計算type2路由的cost時,只計算外部cost,而忽略內部cost。但當一臺路由器收到兩條相同的type2路由時,首先會對比外部cost的值,如果一樣再對比內部cost值。
3.FA地址:FA的全稱為forwarding address,是5類LSA與7類LSA中的一個字段。在OSPF引入外部路由時,若產生的五類LSA的FA地址為0.0.0.0,則其他路由器在計算到達該外部網絡時,將考慮如何到達ASBR來計算出外部路由的下一跳地址。若產生的五類LSA的FA地址不為0.0.0.0,則其他路由器在計算到達該外部網絡時,將考慮如何到達該FA地址來計算出外部路由的下一跳地址。所以它的作用是用于解決次優路徑與環路問題。
4.FA地址不為0的三個條件:
(1)引入的這條外部路由,其對應的出接口啟用了OSPF
(2)引入的這條外部路由,其對應的出接口未設置為被動接口
(3)引入的這條外部路由,其對應的出接口的OSPF網絡類型為MA網絡
5.外部路由的選路問題:大致可分為兩種情況
情況一:外部路由中未包含FA地址:此時路由器計算去往ASBR的路徑。
情況二:外部路由中包含FA地址:此時路由器直接計算去往FA的路徑。
理解了以上知識點后,我們來看這樣一張拓撲圖:
如圖1所示:區域1為NSSA區域,各鏈路的cost如圖所示:
1.在R1上把10.1.1.1引入OSPF,此時R1會產生關于10.1.1.1網段的7類LSA。
2.R2與R3作為Area1的ABR,都會進行7類LSA到5類LSA的轉換,但OSPF規定默認情況下只有routerid大的才能進行7轉5,R2與R3的R-ID如圖所示,即R3會進行7轉5的動作,由R3產生關于10.1.1.1的5類LSA,并在Area0中泛洪。
3.R4從Area 0中收到此5類LSA,并泛洪給R2。
4.我們來分析R4如何去往10.1.1.1,此時會有兩種情況:
情況一:R4收到的這條5類LSA中FA地址為0.0.0.0
根據OSPF外部路由的選路規則,當5類LSA中FA地址為0時,則計算去往ASBR的路徑。
1.此時產生此條5類LSA的是R3,所以R3為ASBR,R4可直接通過Area 0到達ASBR(R3)。
2.R3是通過Area 1學習到的10.1.1.1網段,所以R3可通過Area1去往10.1.1.1,即把數據包發送給R2。
3.此時R2可通過兩條LSA學習到10.1.1.1的路由
第一條:R1產生的7類LSA。類型為Type2,外部Cost為1(外部cost默認都為1),內部cost為10(內部cost,本路由器到ASBR的cost)
第二條:R3產生的5類LSA,由R4泛洪給R2(參考上面第二步),類型為Type2,外部Cost為1,內部Cost為2(R2-R4-R3的cost)
4.R2執行選路規則,兩條LSA同為Type2類型,先對比外部cost值,都為1,然后對比內部cost值,第一條為10,第二條為2,所以R2會優選第二條(R3產生的5類LSA),即會把數據包轉發給R4。
5.環路形成:R4-R3-R2-R4
情況二:R4收到的這條5類LSA中FA地址為10.1.12.1(R1與R2的互聯接口)
根據OSPF外部路由的選路規則,當5類LSA中FA地址為非0時,直接計算去往FA地址的路徑。
1.在此圖中R4收到的5類LSA中FA地址為10.1.12.1,關于10.1.12.1這個地址,R4是通過3類LSA學習到的(10.1.12.1位于Area 1中,R2與R3都為ABR,都會產生關于10.1.12.0網段的3類LSA),R4此時其實可以收到兩條10.1.12.0的3類LSA,一條R2產生,一條R3產生,通過計算cost后發現,選擇R2去往10.1.12.1更近,所以R4會把數據包轉發給R2。
2.R2同樣執行選路計算,計算去往FA地址10.1.12.1的路徑,此地址是R2的一個直連路由,所以R2會把數據包轉發給R1。
3.此時全程的路徑為:R4-R2-R1,解決了環路問題。
總結:OSPF的外部路由進入OSPF區域后在一些特殊情況下是有可能形成環路的,OSPF針對外部路由可以通過FA地址來防環,7類LSA中一般情況下都會攜帶FA地址字段,在執行7類LSA轉5類LSA后FA地址字段會默認保留,所以在默認情況下不會出現環路問題。
參考文獻:
[1]華為技術有限公司.HCNP路由交換實驗指南[M].北京:人民郵電出版社,2014:82-89.
[2]泰克教育集團.HCIE路由交換學習指南[M].北京:人民郵電出版社,2017:142-144.