OSPF的防環機制

(一)OSPF計算區域內路由---區域內防環

SPF算法 –OSPF防環機制

                 1、在同一個區域每臺路由具有一致的LSDB

                 2、每臺路由器以自己爲根計算到達每個目標的最短路徑(最小cost值)

                 3、必須區域劃分--域間彙總減少路由條目數量;彙總路由是在所有明細路由均消失後才刪除,網絡更穩定;區域劃分後,不同類別的LSA傳播範圍不同,控制更新量

OPSF在同一區域內所有路由器都會產生倆類LSA:Router LSA (一類),Network LSA(二類)

路由器以自己爲樹根構建最短路徑樹 ,這裏的最短路徑樹按兩步形成,第一步,僅考慮路由器和傳輸網絡之間的連接。通過 Dijkstra 算法,根據鏈路狀態數據庫的子集形成樹。第二步,考慮末節網絡連接, 作爲葉子加入樹。

區域內部OSPF對網絡是通過Router LSA ,Network LSA來描述網絡的,最終路由器收到LSA構建出LSDB。

LSDB通過描述一個有向線段圖來描述網絡拓撲結構,該有向圖的端點有三種類型:路由器節點,Stub網段和Transit網段

Router LSA使用Link ID,Data,Type和Metric描述一條鏈路

(1)Stub網段表示該網段只有數據入口,例如一個Loopback接口就是一個Stub網段。             

 

此圖片描述了路由器節點和Stub網段的表示方式。

Cost表示從一個端點到另一個端點的開銷,該參數可以在OSPF接口上配置,表示數據離開該接口(出接口)的開銷


(2)Transit網段有能力轉發既不是本網段產生的,也不以本網段做爲目的地的數據。

有至少兩臺路由器的廣播型網段或NBMA網段就是一種Transit網段。從路由器到所連Transit網段的開銷值就是連接到這個網段的接口所配置的開銷值。

從一個Transit網段到連接到這個網段的路由器的開銷爲0。(稱爲僞節點)                       


(3)在描述點到點接口的Router-LSA中:

        1.通告一個到鄰居路由器的點到點鏈接,Link ID設置爲對端的Router ID,Data設置爲本地接口的IP地址;

        2.通告一個到該點到點網段的Stub連接,Link ID設置爲該點到點網段的網絡號,Data設置爲該點到點網段的網絡掩碼;

        3.上述兩個連接的Cost值均爲該點到點接口上的Cost值。                                        

     LSDB描述兩接口處於不同網段的點到點網段的規則如下: 兩臺路由器經由兩條有向線段直接相連,每個方向一條。兩個接口的網段被表示成Stub網段。每個路由器通告一個Stub連接到該路由器所連的網段。                                

 

LSDB描述兩接口處於同一網段的點到點網段的規則如下: 兩臺路由器經由兩條有向線段直接相連,每個方向一條。連接兩個接口的網段被表示成Stub網段。兩個路由器同時通告Stub連接到該PPP網段。                                                 


(4)在描述廣播型或NBMA型接口的Router-LSA中:

如果接口狀態是Waiting,或者該網段上只有一個運行OSPF的路由器,或者該網段上沒有DR,則通告一個通往該網段的Stub鏈接,Link  ID設置爲該網段的IP網絡號,Link Data設置爲該網段的網絡掩碼; 其他情況下,通告一個通往該網段的Transit連接,Link ID設置爲DR的

接口IP地址,Link Data設置爲本地接口的IP地址。

連接的開銷值爲接口的開銷。                                                    

                                             

在描述廣播型網段或者NBMA網段的Network-LSA中:

Link State ID設置爲DR的接口IP地址。

Net mask設置爲該網段的網絡掩碼。

Link State ID和Net mask做與運算,即可得出該網段的IP網絡號。

在該LSA中,還包含一個連接到該網段的路由器列表。從一個Transit網段到所連接的路由器的連接沒有開銷。                     

計算過程:                           

根據上文描述上圖拓撲在LSA傳遞完畢後生成有向圖                                       

接下來計算分爲倆個階段:

第一階段

計算Transit節點,忽略Stub節點,生成一個最短路徑樹

第二階段

只計算Stub節點,將Stub網段掛到最短路徑樹上去

計算過程中首先初始化最短路徑樹,RTA將自己做爲根節點添加到最短路徑樹上                                 

RTA將自己添加到最短路徑樹上之後,檢查自己生成的Router-LSA,對 於該LSA中所描述的每一個連接,如果不是一個Stub連接,就把該連接 添加到候選列表中,端點ID爲Link ID,到根端點的開銷爲LSA中描述的Metric值。本例中,添加端點4.4.4.4和2.2.2.2。 

                        

將候選列表中到根端點開銷最小的端點移到最短路徑樹上

                                   

  

                                    

當有新節點添加到最短路徑樹上的時候,則檢查LS ID爲新節點的link-id ID的LSA,本例中檢查LS ID爲2.2.2.2的LSA。

如果LSA中所描述的連接的Link ID在最短路徑樹上已經存在,則忽略該連接。本例中,Link ID爲1.1.1.1的連接被忽略,只有10.3.1.1的連接被添加到候選列表中。到根端點的開銷設置爲此連接的Metric值(本例中此連接的Metric值爲1)與父端點(本例中此連接的父端點爲2.2.2.2)到根端點的開銷(本例中此開銷值爲48)之和。

                                 

將候選列表中到根端點的開銷最小的端點移動到最短路徑樹上,本例中,將10.3.1.1移到最短路徑樹上。

                                    

                                        

檢查LS ID爲最新添加節點的端點ID的LSA,本例中檢查LS ID爲10.3.1.1的LSA。

在所描述的連接中,忽略2.2.2.2,將3.3.3.3和4.4.4.4添加到候選列表中。從Transit網段到所連路由器的開銷爲0。

如果在候選列表中出現兩個端點ID一樣但是到根端點的開銷不一樣的端點,則刪除到根端點的開銷大的端點。

                             


將候選列表中到根端點的開銷最小的端點移動到最短路徑樹上,本例中,將3.3.3.3移到最短路徑樹上。

                                       

                                            

       

 

檢查LS ID爲最新添加節點的端點ID的LSA,本例中檢查LS ID爲3.3.3.3 的LSA。

本例中,沒有新端點被添加到候選列表中。 

                                         

  將候選列表中到根端點的開銷最小的端點移動到最短路徑樹上,本例中,將4.4.4.4移到最短路徑樹上。         

                                           

                                             

檢查LS ID爲最新添加節點的端點ID的LSA,本例中檢查LS ID爲4.4.4.4 的LSA。

本例中,沒有新端點被添加到候選列表中。

如果在此時候選列表爲空,則計算最短路徑樹的第一階段結束。

                                           

 

檢查每個路由器端點的Router-LSA,計算Stub網段。

本例中,首先檢查RTA的Router-LSA,共有三個Stub網段。

                                             

                                                     

                                              

                                                

 

(二)OSPF區域間防環

Type-3 LSA及Type-4 LSA的防環

(1)OSPF要求所有的非0區域必須與骨幹區域直接相連,區域間路由需經由骨幹區域中轉。

OSPF要求所有的非0區域必須與骨幹區域直接相連,區域間(Inter-Area Route)路由需經由骨幹區域中轉。這個要求使得區域間的路由傳遞不能發生在兩個非0的區域之間,這在很大程度上規避了區域間路由環路的發生,也使得OSPF的區域架構在邏輯上形成了一個類似  星型的拓撲,如下圖所示。

                                                            

(2)ABR只能夠將其所連接的區域的區域內部路由注入到Area0,但是也可以將區域內部路由及區域間的路由注入到非0常規區域。ABR從非骨幹區域收到的Type-3  LSA不能用於區域間路由的計算。

OSPF對ABR有着嚴苛的要求,區域間的路由傳遞的關鍵點在於ABR對Summary LSA的處理。

                                                            

 

在上圖中,如果R3是一臺普通的OSPF路由器(不是ABR),例如當它與R2沒有OSPF鄰居關係 時,它會根據R4在Area2中泛洪的Type-3  LSA計算出1.1.1.0/24路由並將路由加載進路由表中。但是當R3與R2建立起OSPF鄰接關係後,R3在Area0中就有了一個活躍的全毗鄰連接,此 時如果它把描述1.1.1.0/24路由的Type-3 LSA再注入回Area0,那麼就會帶來潛在環路的風險;如下圖所示        

因此當一臺ABR在非Area0的區域中收到Type-3 LSA時,雖然它會將其裝載進LSDB,但是該路由器不會使用這些Type-3 LSA進行路由計算,當然它更不會將這些Type-3 LSA再注入回Area0中。

這裏有一個有意思的細節,就是如果R3連接R2的接口雖然激活了OSPF(而且屬於Area0),但是不與R2形成鄰接關係(例如R2連接R3的接口不激活OSPF),那麼此時R3其實並不算是 嚴格意義上的ABR(雖然它產生的Type-1 LSA中B-bit會被置位,但是它在Area0中並沒有全毗鄰的鄰居),因此它會將Area2內收到的Type-3 LSA用於區域間路由的計算,所以在R3的路由表中能看到1.1.1.0/24的區域間路由(下一跳爲R4),但是一旦R2-R3之間的鄰接關係 建立起來,R3將不能再使用R4下發的Type-3 LSA計算路由,而僅能使用從Area0中收到的、R2下發的Type-3 LSA進行區域間路由計算,所以此時R3路由表中1.1.1.0/ 24路由的下一跳爲R2,而且即使這條路徑的Cost要比從R4走更大(例如將R3連接R2的接口Cost調大),R3也始終不會走R4到達1.1.1.0/24,除非R2掛掉,或者R2-R3丟失鄰接關係。這個現象在思科、華爲的真機上驗證過了,兩者均是如此實現。

(3)ABR不會將描述一個Area內部的路由信息的Type-3 LSA再注入回該區域中。

實際上,OSPF區域間路由的傳遞行爲,很有點距離矢量路由協議的味道。以下圖爲例,在Area1中,R1及R2都會泛洪Type-1 LSA、Type-2 LSA,兩臺路由器都能夠根據這些LSA計算區域內路由,而R2作爲ABR還擔負着另一個責任,就是向Area0通告區域間的路由,實際上  它是向Area0中注入用於描述Area1內路由的Type-3 LSA,而這些Type-3 LSA是不會發回Area1的——是的,類似水平分割行爲對吧?接下來R3利用這些Type-3 LSA計算出了區域間的路由,並且爲Area2注入新的Type-3 LSA用於描述區域間的路由,而這些Type-3  LSA同樣的不會被注入回Area0。

R2在向Area0通告Type-3 LSA,爲每條區域間路由攜帶上Cost值,這個值就是它自己到達各個目標網段的Cost,而R3收到這些Type-3  LSA並計算路由時,路由的Cost就是在R2所通告的Cost值的基礎上,加上R3自己到R2的Cost值,然後,R3向R4通告這些區域間的路由時也攜帶者自己到達目標網段的Cost,而R4到達目標網段的Cost則是在R3的通告值基礎上累加自己到R3的Cost——典型的距離矢量行爲。                                           

Type-4 LSA實際上與Type-3 LSA都是Summary LSA,只不過一個是Network Summary LSA——用於描述網段路由,另一個則是ASBR Summary  LSA——用於描述ASBR,他們使用的防環機制是一致的。

(三)OSPF域外防環

      利用type-4 LSA防環

當一臺OSPF路由器將外部路由引入OSPF域後,它就成爲了一臺ASBR,被引入的外部路由以Type-5  LSA在整個OSPF域內洪。一臺路由器使用Type-5 LSA計算出路由的前提是兩個,其一是要收到Type-5 LSA,其二是要知道產生這個Type-5 LSA的ASBR在哪裏。與ASBR接入同一個區域的路由器能夠根據該區域內泛洪的Type-1 LSA 及Type-2 LSA計算出到達該ASBR的最短路徑,從而計算出外部路由。而其他區域的路由器就沒有這麼幸運了,因爲ASBR產生的Type-1 LSA只能在其所在的區域內泛洪,所以才需要Type-4 LSA。因此其他區域的路由器在獲取Type-4 LSA後便能計算出到達ASBR的最短路徑,進而利用該ASBR產生的Type-5 LSA計算出外部路由。Type-5 LSA將會被泛洪到整個OSPF域,表面上看,它本身並不具有什麼防環的能力,但是實際上,它並不需要,因爲它可以依賴Type-1 LSA及Type-4 LSA來實現防環。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章