OSPF路由協議在因特網的發展歷程上正起著越來越重大的作用。而NSSA則是在該協議發展過程中產生的一種新的屬性。而關于NSSA區域的理解,一直是廣大網絡愛好者的心頭之癢。這篇文章,從NSSA區域的產生、基本原理和配置實例三個方面,對這個特殊的OSPF區域做以簡要的介紹。
一:OSPF協議與區域
大家知道,路由協議推崇的鏈路狀態算法,雖然徹底的解決了路由自環問題,但這種算法本身也有很多固有的缺陷:每臺路由器都必須保存整個網絡的拓撲結構。這樣,一旦出現拓撲變化,就要進行新的SPF計算。這種復雜的SPF算法,對CPU和內存的占用是相當大的。
而且,以前流行過的大多數路由協議都存在如下缺陷:
沒有從協議本身反映出網絡的層次結構。因為實際應用中的一個網絡是由各種級別的路由器組成的,有核心層的骨干路由器、匯聚層的高端路由器、接入層的低端路由器。這些路由器承擔的任務不同,處理性能也不一樣。但在路由協議中,所有的路由器都要完成幾乎是相同的工作:發送已知的路由給鄰居路由器,根據從鄰居路由器獲得的路由信息計算本地路由表。雖然每臺路由器的接口數量不同,但最終計算得來的路由表的規?;臼且粯拥摹?/p>
為了徹底解決上述問題,OSPF提出了區域的概念(AREA),區域是將所有運行OSPF 的路由器人為的分成不同的組,以區域ID來標示。在區域內路由計算的方法不變,由于劃分區域之后,每個區域內的路由器不會很多,所有上述缺陷表現得并不嚴重,帶來的后果可以忽略不計。這樣,上述的缺點就被成功的規避了。實際上,區域概念的提出意義遠不只這些,在劃分為區域之后,網絡的拓撲結構就與路由協議之間存在了一種對應關系,核心和高端的路由器由于處理能力強,可以規劃在骨干區域之中。因為骨干區域的路由器要承擔更多的路由計算任務。
每個單獨的區域實際上就是一個獨立于網絡中其他區域的系統,可以在不同的區域中試行不同的路由策略,使組網規劃更為靈活方便。
實際上OSPF 協議在當今的網絡中廣為流行,不是因為它使用了無環路的鏈路狀態算法,而是因為它提出了區域的概念。
二:OSPF的STUB區域
STUB區域就是一個對區域概念的最典型的應用。STUB區域的設計思想在于:在劃分了區域之后,非骨干區域中的路由器對于區域外的路由,一定要通過ABR(區域邊界路由器)來轉發,或者說對于區域內的路由器來說ABR是一個通往外部世界的必經之路。既然如此,對于區域內的路由器來說,就沒有必要知道通往外部世界的詳細的路由了,代之以由ABR向該區域發布一條缺省路由來指導報文的發送。這樣在區域內的路由器中就只有為數不多的區域內路由和一條指向ABR的缺省路由。而且無論區域外的路由如何變化,都不會影響到區域內路由器的路由表。由于區域內的路由器通常是由一些處理能力有限的低端路由器組成,所以處于STUB區域內的這些低端設備既不需要保存龐大的路由表,也不需要經常性的進行路由計算。有了 STUB屬性之后,網絡的規劃更符合實際的設備特點。
以上描述的只是STUB區域的設計思想,在協議文本中,對STUB區域的精確定義是:STUB 區域一定是非骨干區域和非轉換區域(可以配置虛連接的區域),并且在該區域中不可傳遞Type 5類型的LSA。因為協議的設計者認為路由表中的絕大部分路由均是來自自治系統外部的引入的路由。(由于OSPF是鏈路狀態算法的路由協議,LSA就是用來描述網絡拓撲結構的一種數據結構。在OSPF 中將LSA分為5類:type1、2兩種用來描述區域內的路由信息;type3用來描述區域間的路由信息;type4、5用來描述自治系統外部的路由信息。)
需要注意的是定義中對于過濾TYPE5類型的LSA使用的描述語言是“不可傳遞”,這就意味著不僅區域外的ASE(自治系統外部)路由無法傳遞到STUB 區域中,同時STUB區域內部的ASE路由也無法傳遞到本區域之外。換一句更通俗的話來描述:STUB區域內的路由器都不可引入任何外部的路由(包括靜態路由)。
這樣的定義未免太過嚴厲了。因為在實際的組網中,并不是所有的設備都會運行OSPF協議。例如:用戶撥號上網時使用的接入服務器就需要連接路由器上因特網,但通常接入服務器上并不支持(也不需要)OSPF協議,而是通過配置靜態路由實現路由功能。很多時候ISP為了保密或易于管理的需要,在連接用戶側的路由器時使用靜態路由??傊涸谝粋€網絡中所有的路由器上都配置OSPF,而不使用靜態路由的情況幾乎是不存在的。——也就是說STUB區域的適用條件也是不存在的。
三:特殊的STUB-- NSSA區域
STUB區域雖然為合理的規劃網絡描繪了美好的前景,但她在實際的組網中又不具備可操作性,未免遺憾。但此時的OSPF協議已經基本成型,不可能再做大的修改。為了彌補缺陷,協議設計者提出了一種新的概念NSSA,并且作為OSPF協議的一種擴展屬性單獨在RFC 1587中描述。
NSSA需要完成如下任務:
自治系統外的ASE路由不可以進入到NSSA區域中,但是NSSA區域內的路由器引入的ASE 路由可以在NSSA中傳播并發送到區域之外。即:取消了STUB關于ASE的雙向傳播的限制(區域外的進不來,區域里的也出不去),改為單向限制(區域外的進不來,區域里的能出去)。
由于是作為OSPF標準協議的一種擴展屬性,應盡量減少與不支持該屬性的路由器協調工作時的沖突和兼容性問題。
為了解決ASE單向傳遞的問題,NSSA中重新定義了一種LSA——Type 7類型的LSA,作為區域內的路由器引入外部路由時使用,該類型的LSA除了類型標識與Type 5不相同之外,其它內容基本一樣。這樣區域內的路由器就可以通過LSA的類型來判斷是否該路由來自本區域內。但由于Type 7類的LSA是新定義的,對于不支持NSSA屬性的路由器無法識別,所以協議規定:在NSSA的ABR上將NSSA內部產生的Type 7類型的LSA轉化為Type 5類型的LSA再發布出去,并同時更改LSA的發布者為ABR自己。這樣NSSA區域外的路由器就可以完全不用支持該屬性。
從上述描述可以看出:在NSSA區域內的所有路由器必須支持該屬性(包括NSSA的ABR),而自治系統中的其他路由器則不需要。
由于NSSA是由STUB區域的概念改進得來,所以她的名字叫做: "not-so-stubby" area ,本意是:不是那么STUB的區域。
四:STUB區域的相關配置
NSSA的原理不復雜,配置更簡單,相關命令只有一條:
[Router-ospf]
area area-id nssa [ default-route-advertise ] [ no-import-route ] [ no-summary ]
area-id:是需要配置成NSSA的區域的區域號。“[]”內的參數只有在該路由器是ABR時才會生效。
關鍵字default-route-advertise用來產生缺省的Type-7 LSA,應用了該參數后,在ABR上無論路由表中是否存在缺省路由0.0.0.0,都會產生Type-7 LSA缺省路由;而在ASBR上當路由表中存在缺省路由0.0.0.0,才會產生Type-7 LSA缺省路由。
關鍵字no-import-route用在ASBR上,使得OSPF通過import-route命令引入的路由不被通告到NSSA區域。如果NSSA的路由器既是ASBR也是ABR,一般選用該參數選項。
為了進一步減少發送到NSSA區域中的鏈路狀態發布(LSA)的數量,可以在ABR上配置no -summary屬性,禁止ABR向NSSA區域內發送summary_net LSAs(Type-3 LSA)。配置該參數后,ABR會將Type3類型的LSA也過濾掉,即:NSSA區域中也不會出現區域間路由,路由表進一步精簡。既然有缺省路由,那么其他指向區域外的具體路由都是沒有必要的了。該參數推薦配置。
即:如果路由器只是一臺區域內路由器,只需配置area area-id nssa即可。如果是ABR,根據實際需要,選擇添加三個可選參數。
五:STUB區域配置實例
先看一下實驗拓撲圖:
實驗之前,先做好五個路由器的預配置,這是必不可少的。
第一步 R1的預配置
R1(config)#int lo0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#int s2/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int s2/2
R1(config-if)#ip add 15.0.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
第二步 R2的預配置
R2(config)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#int s2/1
R2(config-if)#ip add 12.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int s2/2
R2(config-if)#ip add 23.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
第三步 R3的預配置
R3(config)#int lo0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#int s2/1
R3(config-if)#ip add 23.0.0.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
第四步 R4的預配置
R4(config)#int lo0
R4(config-if)#ip add 4.4.4.4 255.255.255.0
R4(config-if)#int s2/2
R4(config-if)#ip add 45.0.0.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
第五步 R5的預配置
R5(config)#int lo0
R5(config-if)#ip add 5.5.5.5 255.255.255.0
R5(config-if)#int s2/1
R5(config-if)#ip add 15.0.0.5 255.255.255.0
R5(config-if)#no sh
R5(config-if)#int s2/2
R5(config-if)#ip add 45.0.0.5 255.255.255.0
R5(config-if)#no sh
好了,可以開始OSPF的相關配置了:
第一步 配置R1、R2、R3、R4、R5的OSPF協議
R1(config)#router ospf 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.0.0.1 0.0.0.0 area 0
R1(config-router)#network 15.0.0.1 0.0.0.0 area 0
R1(config-router)#exit
R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
R2(config-router)#network 12.0.0.2 0.0.0.0 area 0
R2(config-router)#network 23.0.0.2 0.0.0.0 area 32
R2(config-router)#exit
R3(config)#router ospf 100
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 3.3.3.3 0.0.0.0 area 32
R3(config-router)#network 23.0.0.3 0.0.0.0 area 32
R3(config-router)#exit
R4(config)#router ospf 100
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 4.4.4.4 0.0.0.0 area 54
R4(config-router)#network 45.0.0.4 0.0.0.0 area 54
R4(config-router)#exit
R5(config)#router ospf 100
R5(config-router)#network 5.5.5.5 0.0.0.0 area 0
R5(config-router)#network 15.0.0.5 0.0.0.0 area 0
R5(config-router)#network 45.0.0.5 0.0.0.0 area 54
R5(config-router)#exit
第二步 配置Area 32為NSSA區域
R2(config)#router ospf 100
R2(config-router)#area 32 nssa
R2(config-router)#exit
R3(config)#router ospf 100
R3(config-router)#area 32 nssa
R3(config-router)#exit
第三步 到R3上配置重分布直連,讓一些外部路由進入OSPF,這樣,R3就成了一個ASBR
R3(config)#int lo11
R3(config-if)#ip ad 199.172.1.1 255.255.255.0
R3(config-if)#int lo12
R3(config-if)#ip ad 199.172.2.2 255.255.255.0
R3(config-if)#int lo13
R3(config-if)#ip ad 199.172.3.3 255.255.255.0
R3(config-if)#int lo14
R3(config-if)#ip ad 199.172.4.4 255.255.255.0
R3(config-if)#int lo15
R3(config-if)#ip ad 199.172.5.5 255.255.255.0
R3(config-if)#int lo16
R3(config-if)#ip ad 199.172.6.6 255.255.255.0
R3(config-if)#int lo17
R3(config-if)#ip ad 199.172.7.7 255.255.255.0
R3(config-if)#int lo18
R3(config-if)#ip ad 199.172.8.8 255.255.255.0
R3(config-if)#int lo19
R3(config-if)#ip ad 199.172.9.9 255.255.255.0
R3(config-if)#int lo20
R3(config-if)#ip ad 199.172.10.10 255.255.255.0
R3(config-if)#int lo21
R3(config-if)#ip ad 199.172.11.11 255.255.255.0
R3(config-if)#int lo22
R3(config-if)#ip ad 199.172.12.12 255.255.255.0
R3(config-if)#int lo23
R3(config-if)#ip ad 199.172.13.13 255.255.255.0
R3(config-if)#int lo24
R3(config-if)#ip ad 199.172.14.14 255.255.255.0
R3(config-if)#int lo25
R3(config-if)#ip ad 199.172.15.15 255.255.255.0
R3(config-if)#exit
R3(config)#router ospf 100
R3(config-router)#redistribute connected subnets
R3(config-router)#^Z
第四步 查看R3的OSPF數據庫
R3#show ip ospf database
OSPF Router with ID (3.3.3.3) (Process ID 100)
Router Link States (Area 32)
Link ID ADV Router Age Seq# Checksum Link count
2.2.2.2 2.2.2.2 146 0x80000006 0x0089C0 2
3.3.3.3 3.3.3.3 31 0x80000004 0x006FBB 3
Summary Net Link States (Area 32)
Link ID ADV Router Age Seq# Checksum
1.1.1.1 2.2.2.2 162 0x80000002 0x004F99
2.2.2.2 2.2.2.2 162 0x80000002 0x009E86
4.4.4.4 2.2.2.2 162 0x80000002 0x00C992
5.5.5.5 2.2.2.2 162 0x80000002 0x00197F
12.0.0.0 2.2.2.2 162 0x80000002 0x00D60B
15.0.0.0 2.2.2.2 162 0x80000002 0x00326C
45.0.0.0 2.2.2.2 162 0x80000002 0x002D13
Type-7 AS External Link States (Area 32)
//可以看到,R3上重發布的路由成了LSA-7型
Link ID ADV Router Age Seq# Checksum Tag
199.172.1.0 3.3.3.3 30 0x80000001 0x0047C1 0
199.172.2.0 3.3.3.3 31 0x80000001 0x003CCB 0
199.172.3.0 3.3.3.3 31 0x80000001 0x0031D5 0
199.172.4.0 3.3.3.3 31 0x80000001 0x0026DF 0
199.172.5.0 3.3.3.3 31 0x80000001 0x001BE9 0
199.172.6.0 3.3.3.3 32 0x80000001 0x0010F3 0
199.172.7.0 3.3.3.3 32 0x80000001 0x0005FD 0
199.172.8.0 3.3.3.3 32 0x80000001 0x00F908 0
199.172.9.0 3.3.3.3 32 0x80000001 0x00EE12 0
199.172.10.0 3.3.3.3 32 0x80000001 0x00E31C 0
199.172.11.0 3.3.3.3 32 0x80000001 0x00D826 0
199.172.12.0 3.3.3.3 32 0x80000001 0x00CD30 0
199.172.13.0 3.3.3.3 32 0x80000001 0x00C23A 0
199.172.14.0 3.3.3.3 32 0x80000001 0x00B744 0
199.172.15.0 3.3.3.3 32 0x80000001 0x00AC4E 0
第五步 查看R2的路由表與數據庫??梢钥吹剑ㄟ^類型7的LSA算出的路由條目,是用“O N2”開頭的。
R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
O N2 199.172.11.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/65] via 12.0.0.1, 00:04:26, Serial2/1
O N2 199.172.10.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
2.0.0.0/24 is subnetted, 1 subnets
C 2.2.2.0 is directly connected, Loopback0
O N2 199.172.9.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/65] via 23.0.0.3, 00:02:15, Serial2/2
O N2 199.172.8.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
O N2 199.172.15.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
4.0.0.0/32 is subnetted, 1 subnets
O IA 4.4.4.4 [110/193] via 12.0.0.1, 00:02:15, Serial2/1
O N2 199.172.14.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/129] via 12.0.0.1, 00:04:27, Serial2/1
O N2 199.172.13.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
23.0.0.0/24 is subnetted, 1 subnets
C 23.0.0.0 is directly connected, Serial2/2
O N2 199.172.12.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.3.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.2.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.1.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.7.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
12.0.0.0/24 is subnetted, 1 subnets
C 12.0.0.0 is directly connected, Serial2/1
O N2 199.172.6.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
O N2 199.172.5.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
O N2 199.172.4.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
45.0.0.0/24 is subnetted, 1 subnets
O IA 45.0.0.0 [110/192] via 12.0.0.1, 00:02:17, Serial2/1
15.0.0.0/24 is subnetted, 1 subnets
O 15.0.0.0 [110/128] via 12.0.0.1, 00:04:28, Serial2/1
以上就是網絡協議中OSPF的NSSA區域原理與配置,謝謝閱讀,希望能幫到大家,請繼續關注武林網,我們會努力分享更多優秀的文章。
新聞熱點
疑難解答