解析OSPF各區域的區別和作用
在進行OSPF路由方案部署過程中,OSPF的各種區域是最難理解的。它們之間到底有什么區別和作用呢?本文將為大家一一解答。
Backbone(骨干)區域
在一個OSPF網絡中,可以包括多種區域,其中就有三種常見的特殊區域,即就是骨干區域(Backbone Area)、末梢區域(Stub Area)和非純Stub區域(No Stotal Stub area,NSSA),當然還可以包括其它標準區域。OSPF網絡中的區域是以區域ID進行標識的,區域ID為0的區域規定為骨干區域。
OSPF主要區域類型示例
一個OSPF互聯網絡,無論有沒有劃分區域,總是至少有一個骨干區域。骨干區域有一個ID 0.0.0.0,也稱之為區域0。另外,骨干區域必須是連續的(也就是中間不會越過其他區域),也要求其余區域必須與骨干區域直接相連(但事實上,有時并不一定會這樣,所以也就有了下面將要介紹的"虛擬鏈路"技術)。骨干區域一般為區域0(Area 0),其主要工作是在其余區域間傳遞路由信息。
骨干區域作為區域間傳輸通信和分布路由信息的中心。區域間的通信先要被路由到骨干區域,然后再路由到目的區域,最后被路由到目的區域中的主機。在骨干區域中的路由器通告他們區域內的匯總路由到骨干區域中的其他路由器。這些匯總通告在區域內路由器泛洪,所以在區域中的每臺路由器有一個反映在它所在區域內路由可用的路由表,這個路由與AS中其他區域的ABR匯總通告相對應。
如在本章前面的圖8-1中,R1使用一個匯總通告向所有骨干路由器(R2和R3)通告Area 0.0.0.1中的所有路由。R1從R2和R3接收匯總通告。R1配置了Area 0.0.0.0中的匯總通告信息,通過泛洪,R1把這個匯總路由信息傳播到Area 0.0.0.1內所有路由器上。在Area 0.0.0.1內的每個路由器,來自Areas 0.0.0.0、0.0.0.2和0.0.0.3區域的匯總路由信息共同完成路由表的計算。
在實際網絡中,可能會存在骨干區域不連續,或者某一個區域與骨干區域物理不相連的情況,此時系統管理員可以通過設置虛擬鏈路(Virtual Link)的方法來解決(參見圖8-4)。虛擬鏈路存在于兩個路由器之間,這兩個路由器都有一個端口與同一個非骨干區域(這個區域是處于骨干區域和某個不直接與骨干區域相連的區域之間)相連,虛擬鏈路使該區域與骨干區域間建立一個邏輯聯接點。虛擬鏈路被認為是屬于骨干區域(相當于骨干區域的延伸),在 OSPF路由協議看來,虛擬鏈路兩端的兩個路由器被一個點對點的鏈路連在一起。而且,在OSPF路由協議中,通過虛擬鏈路的路由信息是作為域內路由來看待的。該虛擬鏈路必須建立在兩個區域邊界路由器之間,并且其中一個區域邊界路由器必須屬于骨干區域。
Stub(末梢)區域
通過前面對OSPF區域概念的了解可以知道,在劃分了區域之后,OSPF網絡中的非骨干區域中的路由器對于到外部區域的路由,一定要通過ABR(區域邊界路由器)來轉發,或者說對于區域內的路由器來說,ABR是一個通往外部世界的必經之路。既然如此,對于區域內的路由器來說,就沒有必要知道通往外部區域的詳細路由了,只要由ABR向該區域發布一條默認路由來指導報文的發送路徑即可。這樣在區域內的路由器中就只需要為數不多的區域內路由和一條指向ABR的默認路由(Default-Route),使區域內的路由表簡化。而且無論區域外的路由如何變化,都不會影響到區域內路由器這個簡單的路由表。這就是OSPF 路由協議中"Stub Area"(末梢區域)的設計理念。Stub區域的ABR不允許注入Type5 LSA(有關OSPF LSA類型將在本章后面具體介紹),在這些區域中路由器的路由表規模以及路由信息傳遞的數量都會大大減少,同時也使得該區域不受外部AS路由的影響。
一個Stub區域可以包含一個入口/出口(也就是一個ABR),或者在任一ABR可以被用于到達外部路由目標時,還可包含多個ABR。對于多ABR的 Stub區域,外部路由是通過一個區域外的ASBR進行通告的。AS外部路由器不會被泛洪到,或者通過Stub區域。在一個Stub區域中的所有到達外部網絡的路由是通過一個默認路由(0.0.0.0 0.0.0.0)來實現的。這樣,在一個Stub區域中的路由器的路由表中就只有一個路由到所有AS外部位置的入口。
為了創建默認路由,Stub區域的ABR通行一個默認路由到Stub區域。默認路由被泛洪到這個Stub區域內的所有路由器上,但是不會泛洪到Stub區域外。默認路由是用于一個Stub區域中的路由器為任一不可到達AS內部的目的IP地址提供路由。在Stub區域中的所有路由器必須被配置,以便它們不在 Stub區域內導入或泛洪AS外部路由。所以,在一個Stub區域中的所有路由器接口上的所有區域配置必須配置Stub區域。例如,圖8-5中的Area 0.0.0.3被配置為一個Stub區域,因為所有外部通信必須它的單個ABR——R3。R3通告一個默認路由分布在內部區域Area 0.0.0.3,而不是在區域內泛洪AS外部網絡。
在 Stub區域中規定不接收外部AS的LSA,也不向外部AS發送區域內部LSA,即Stub區域中不注入ASE(自治系統外部)路由。Stub區域一定是非骨干區域和非轉換區域(可以配置虛連接的區域),因為它不接收也不發送LSA。并且在Stub區域中不傳遞Type 5類型(AS外部LSA)的LSA(有關LSA類型將在本節后面介紹)。本節前面的圖8-4顯示了骨干區域、Stub區域,以及其他標準區域之間的關系。 Area 0為骨干區域,area 3是Stub區域,area 2為一個標準OSPF區域。同時在這個示例中Area 2區域并沒有與骨干區域Area 0直接相連,這時就通過在兩個區域的邊界路由器之間建立的虛擬鏈路進行直接通信。Area 1是一個轉發區域。
由于Stub區域通常位于OSPF網絡末端,這些區域內的路由器通常是由一些處理能力有限的低端路由器組成,所以處于Stub區域內的這些低端設備既不需要保存龐大的路由表,也不需要經常性的進行路由計算。這樣做有利于減小Stub區域中內部路由器上的鏈路狀態數據庫的大小及存儲器的使用,提高路由器計算路由表的速度。
當一個OSPF的區域只存在一個區域出口點(只與一個其他區域連接)時,我們可以將該區域配置成一個Stub區域。這時,該區域的邊界路由器會對域內通告默認路由信息。需要注意的是,一個Stub區域中的所有路由器都必須知道自身屬于該區域,否則Stub區域的設置不會起作用。另外,針對Stub區域還有兩點需要注意:一是Stub區域中不允許存在虛擬鏈路,這樣就不會作為骨干區域的延伸;二是Stub區域中不允許存在ASBR,否則這個AS中的LSA無法傳播到另一個AS中。
Totally Stub(完全末梢)區域和NSSA(非純末梢)區域
上節介紹的Stub區域是一類特殊的OSPF區域,這類區域不接收或擴散Type-5類型LSA(AS-external-LSAs),對于產生大量 Type-5 LSA(外部AS LSA)的網絡,這種處理方式能夠有效減小Stub區域內路由器的LSDB大小,并緩解SPF運算對路由器資源的占用。通常情況下,Stub區域位于自治系統邊緣區域。為保證Stub區域去往自治系統外的報文能被正確轉發,Stub區域的ABR(區域邊界路由器)將通過Summary-LSA(匯總鏈路狀態通告)向本區域內發布一條默認路由,并且只在本區域泛洪。為了進一步減少Stub區域中路由器的路由表規模以及路由信息傳遞的數量,可以將該區域配置為 Totally Stub(完全末梢)區域,該區域的ABR不會將區域間的路由信息和外部路由信息傳遞到本區域。
1. 完全Stub區域
這里所說的完全Stub區域(Totally Stub,或者Stub no-summary)是在Stub區域的基礎上(即阻止了Type 5 LSA包的基礎上)再對其他ABR通告的網絡匯總LSA(即Type 3類型LSA)也進行了阻隔,不接收區域間路由通告。其ABR僅通過網絡匯總LSA通告一個默認路由,使用這個默認路由到達OSPF自治系統外部的目的地址。也就是說,完全Stub區域同時不允許Type 3、4或5三類LSA注入,但默認匯總路由除外。
若要將一個區域定義為Stub區域,則在區域內所有路由器中使用"area xx stub"命令;若要定義完全Stub區域,使用OSPF路由器配置命令"area xx stub no-summary"命令。
2. NSSA區域
Stub 區域雖然為合理的規劃網絡描繪了美好的前景,但在實際的組網中利用率并不高(Stub區域一般只存在于網絡邊緣),未免遺憾。但此時的OSPF協議已經基本成型,不可能再做大的修改。為了彌補缺陷,協議設計者提出了一種新的概念NSSA(not-so-Stubby area,非純末梢區域),并且作為OSPF協議的一種擴展屬性單獨在RFC 1587中描述。NSSA可以說是對原來的Stub區域要求有所放寬,使它可以在更多網絡環境中得到應用。
NSSA 區域規定,AS外的ASE路由不可以進入到NSSA區域中,但是NSSA區域內的路由器引入的ASE路由(NSSA區域中可以連接ASBR)可以在 NSSA中泛洪并發送到區域之外。這樣,在NSSA區域中取消了原來Stub區域中關于ASE的雙向傳播的限制(區域外的進不來,區域里的也出不去),改為單向限制(區域外的進不來,區域里的能出去)。若要定義NSSA區域,使用OSPF路由器配置命令"area xx nssa"命令。
為了解決ASE單向傳遞的問題,NSSA中重新定義了一種LSA——Type 7類型的LSA(NSSA外部LSA),作為區域內的路由器引入外部路由時使用。該類型的LSA除了類型標識與Type 5不相同之外,其它內容基本一樣。這樣區域內的路由器就可以通過LSA的類型來判斷是否該路由來自本區域內。但由于Type 7類的LSA是新定義的,對于不支持NSSA屬性的路由器無法識別,所以協議規定:在NSSA的ABR上將NSSA內部產生的Type 7類型的LSA轉化為Type 5類型的LSA再發布出去,并同時更改LSA的發布者為ABR自己。這樣NSSA區域外的路由器就可以完全不用支持該屬性。在NSSA區域內的所有路由器(包括NSSA的ABR)必須支持Type 7類型的LSA屬性,而自治系統中的其他路由器則不需要。
總的來說,NSSA區域不允許Type 5 LSA,但在NSSA ABR上轉換為Type 5的Type 7 LSA還是可以通過的。
NSSA所對應的區域ID為1,它與骨干區域0相連,同時它又與另兩個自治系統的路由網絡(分別是運行 IGRP和RIP路由協議的)相連。此時,外部區域和外部AS的路由信息不能通告到NSSA區域中,但NSSA中的路由信息可以向外發布。
OSPF NSSA區域示例
原文博客:http://blog.163.com/hlz_2599/blog/static/142378474201261543555605/