1 OSPF術語
OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用於在單一自治系統(autonomous system,AS)內決策路由。是對鏈路狀態路由協議的一種實現,故運作於自治系統內部。著名的迪克斯加算法被用來計算最短路徑樹。與RIP相比,OSPF是鏈路狀態協議,而RIP是距離矢量協議。不同廠商管理距離不同,思科OSPF的協議管理距離(AD)是110,華為OSPF的協議管理距離是150。
鏈路是路由器接口的另一種說法,因此OSPF也稱為接口狀態路由協議。OSPF通過路由器之間通告網絡接口的狀態來建立鏈路狀態數據庫,生成最短路徑樹,每個OSPF路由器使用這些最短路徑構造路由表。
1、在OSPF的區域內,使用SPF算法計算路由,利用lsa報文收集鏈路狀態,然后計算出無環路的域內路由。
2、而OSPF多個area間的路由是通過DV算法計算的,通過LSA的第3類報文來匯總域間路由。而DV算法是有缺陷的,無法保證學到最優路由,因此如RIP之類的協議只適合小型網絡。
為了保證DV算法學到最優的OSPF路由,就需要對OSPF進行一定的優化,既然不能從SPF算法上進行改變,那么只能從網絡結構上進行修改了。於是,OSPF設立了骨干區域:AREA 0,並規定,所有非骨干區域間通信必須通過區域0進行,形成了hub-spoken結構的OSPF網絡。這樣,所有非骨干區域沒有了直連,不具備形成環路的條件,而骨干區域內SPF保證了沒有環路。於是,一個完美的OSPF網絡形成了。
1.1 Router-ID
如果路由器之間分不清誰是誰,沒有辦法確定各自的身份,那么通告的鏈路狀態就是毫無意義的,所以必須給每一個OSPF路由器定義一個身份,就相當於人的名字,這就是Router-ID,並且Router-ID在網絡中絕對不可以有重名,否則路由器收到的鏈路狀態,就無法確定發起者的身份,也就無法通過鏈路狀態信息確定網絡位置,OSPF路由器發出的鏈路狀態都會寫上自己的Router-ID,可以理解為該鏈路狀態的簽名,不同路由器產生的鏈路狀態,簽名絕不會相同。
每一台OSPF路由器只有一個Router-ID,Router-ID使用IP地址的形式來表示,確定Router-ID的方法為:
1. 手工指定Router-ID。
下例是某路由器的一段配置,可以看出該路由器的router-id為手工指定。
#
ospf 1 router-id 10.10.190.255
import-route static
area 0.0.0.0
network 10.10.168.12 0.0.0.3
#
2. 路由器上活動Loopback接口中IP地址最大的,也就是數字最大的,如C類地址優先於B類地址,一個非活動的接口的IP地址是不能被選為Router-ID的。
3. 如果沒有活動的Loopback接口,則選擇活動物理接口IP地址最大的。
Router-ID只在OSPF啟動時計算,或者重置OSPF進程后計算。
1.2 COST
cost指接口上運行ospf協議所需的開銷。ospf路由條目存在cost值,當數據包到達路由器后,如果存在多條到達同一目的段的ospf路由條目,路由表中出現的將是cost值最小的路由條目。如果這些條目的cost值一樣,則多條路徑可實現數據包的負載均衡。
OSPF使用接口的帶寬來計算cost。例如一個10 Mbit/s的接口,計算Cost的方法為:100M/10M = 10(其中100M為參考帶寬,這個可以修改,但一般不推薦,因為參考帶寬是一個全局性指標),所以一個10 Mbit/s的接口,OSPF認為該接口的Metric值為10,需要注意的是,計算中,帶寬的單位取bit/s,而不是Kbit/s。如果路由器要經過兩個接口才能到達目標網絡,那么很顯然,兩個接口的Cost值要累加起來,才算是到達目標網絡的Cost值,所以OSPF路由器計算到達目標網絡的Cost值,必須將沿途中所有接口的Cost值累加起來,在累加時,同EIGRP一樣,只計算出接口,不計算進接口。
以下是實例說明(附:ospf cost.topo):
OSPF會自動計算接口上的Cost值,但也可以通過手工指定該接口的Cost值,手工指定的優先於自動計算的值。OSPF計算的Cost,同樣是和接口帶寬成反比,帶寬越高,Cost值越小。到達目標相同Cost值的路徑,可以執行負載均衡,最多6條鏈路同時執行負載均衡。
#
interface Vlanif2
ip address 192.168.1.1 255.255.255.0
ospf cost 2 //手工指定接口的cost值
1.3 鏈路(Link)
就是路由器上的接口,在這里,應該指運行在OSPF進程下的接口。
1.4 鏈路狀態(Link-State)
鏈路狀態(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子網掩碼,網絡類型,Cost值等等。
OSPF路由器之間交換的並不是路由表,而是鏈路狀態(LSA),OSPF通過獲得網絡中所有的鏈路狀態信息,從而計算出到達每個目標精確的網絡路徑。OSPF路由器會將自己所有的鏈路狀態毫不保留地全部發給鄰居,鄰居將收到的鏈路狀態全部放入鏈路狀態數據庫(Link-State Database),鄰居再發給自己的所有鄰居,並且在傳遞過程種,絕對不會有任何更改。通過這樣的過程,最終,網絡中所有的OSPF路由器都擁有網絡中所有的鏈路狀態,並且所有路由器的鏈路狀態應該能描繪出相同的網絡拓朴。
比如如今要計算一條地鐵線路圖,如上海地鐵二號線某段的圖,如果不直接將該圖給別人看,圖好比是路由表,如今只是報給別人各個站的信息,該信息好比是鏈路狀態,通過告訴別人各個站左邊一站是什么,右邊一站是什么,別人也能通過該信息(鏈路狀態),畫出完整的線路圖(路由表),如得到如下各站信息(鏈路狀態):
★ 南京東路-站 (左邊一站是人民廣場,右邊一站是陸家嘴)
★ 南京西路-站 (左邊一站是靜安寺,右邊一站是人民廣場)
★ 靜安寺-站 (右邊一站是南京西路)
★ 人民廣場-站 (左邊一站是南京西路,右邊一站是南京東路)
★ 陸家嘴-站 (左邊一站是南京東路)
還原線路圖(路由表)如下:
靜安寺 — 南京西路 — 人民廣場 —南京東路 — 陸家嘴
從以上計算過程可以知道,因為得到各站的信息,就能畫出整條線路圖,而OSPF也同樣根據路由器各接口的信息(鏈路狀態),計算出網絡拓朴圖,OSPF之間交換鏈路狀態,就像上面交換各站信息,而不像RIP和EIGRP直接交換路由表,交換路由表,就等於直接給人看線路圖,可見OSPF的智能算法,比距離矢量協議對網絡有更精確的認知。
1.5 OSPF區域
因為OSPF路由器之間會將所有的鏈路狀態(LSA)相互交換,毫不保留,當網絡規模達到一定程度時,LSA將形成一個龐大的數據庫,勢必會給OSPF計算帶來巨大的壓力;為了能夠降低OSPF計算的復雜程度,緩存計算壓力,OSPF采用分區域計算,將網絡中所有OSPF路由器划分成不同的區域,每個區域負責各自區域精確的LSA傳遞與路由計算,然后再將一個區域的LSA簡化和匯總之后轉發到另外一個區域,這樣一來,在區域內部,擁有網絡精確的LSA,而在不同區域,則傳遞簡化的LSA。在一個區域內的路由器將不需要了解它們所在區域外部的拓撲細節。在這種環境下:路由器僅僅需要和它所在區域的其他路由器具有相同的鏈路狀態數據庫,鏈路狀態數據庫的減小也就意味着處理較少的LSA通告,大量的LSA泛洪被限制在一個區域里面。
區域的划分為了能夠盡量設計成無環網絡,所以采用了Hub-Spoke的拓朴架構,也就是采用核心與分支的拓朴,如下圖:
區域的命名可以采用整數數字,如1、2、3、4,也可以采用IP地址的形式,0.0.0.1、0.0.0.2,因為采用了Hub-Spoke的架構,所以必須定義出一個核心,然后其它部分都與核心相連,OSPF的區域0就是所有區域的核心,稱為BackBone 區域(骨干區域),而其它區域稱為Normal 區域(常規區域),在理論上,所有的常規區域應該直接和骨干區域相連,常規區域只能和骨干區域交換LSA,常規區域與常規區域之間即使直連也無法互換LSA,如上圖中Area 1、Area 2、Area 3、Area 4只能和Area 0互換LSA,然后再由Area 0轉發,Area 0就像是一個中轉站,兩個常規區域需要交換LSA,只能先交給Area 0,再由Area 0轉發,而常規區域之間無法互相轉發。
OSPF區域是基於路由器的接口划分的,而不是基於整台路由器划分的,一台路由器可以屬於單個區域,也可以屬於多個區域,如下圖:
如果一台OSPF路由器屬於單個區域,即該路由器所有接口都屬於同一個區域,那么這台路由器稱為Internal Router(IR),如上圖中的R2,R3和R4;
如果一台OSPF路由器屬於多個區域,即該路由器的接口不都屬於一個區域,那么這台路由器稱為Area Border Router (ABR),如上圖中的R1,ABR可以將一個區域的LSA匯總后轉發至另一個區域;
如果一台OSPF路由器將外部路由協議重分布進OSPF,那么這台路由器稱為Autonomous System Boundary Router (ASBR),如上圖中,R5將EIGRP重分進OSPF,那么R5就是ASBR,但是如果只是將OSPF重分布進其它路由協議,則不能稱為ASBR。
下例是某台路由器的一段配置,可以看出該路由器充當ASBR的角色,因為它引入了靜態路由。
#
ospf 1 router-id 10.10.190.255
import-route static
area 0.0.0.0
network 10.10.168.12 0.0.0.3
#
從它的鄰居路由器上也可以看出它是一台ASBR路由器:
可以配置任何OSPF路由器成為ABR或ASBR。
由於OSPF有着多種區域,所以OSPF的路由在路由表中也以多種形式存在,共分以下幾種:
- 如果是同區域的路由,叫做Intra-Area Route,在路由表中使用O來表示;
- 如果是不同區域的路由,叫做Inter-Area Route或Summary Route,在路由表中使用O IA來表示;
- 如果並非OSPF的路由,或者是不同OSPF進程的路由,只是被重分布到OSPF的,叫做External Route,在路由表中使用O E2或OE 1來表示。
- 當存在多種路由可以到達同一目的地時,OSPF將根據先后順序來選擇要使用的路由,所有路由的先后順序為:
Intra-Area — Inter-Area — External E1 — External E2,即 O — O IA — O E1 — O E2。
1.6 鄰居(Neighbor)
路由器會將鏈路狀態數據庫中所有的內容毫不保留地發給所有鄰居,要想在OSPF路由器之間交換LSA,必須先形成OSPF鄰居,OSPF鄰居靠發送Hello包來建立和維護,Hello包會在啟動了OSPF的接口上周期性發送,在不同的網絡中,發送Hello包的間隔也會不同,當超過4倍的Hello時間,也就是Dead時間過后還沒有收到鄰居的Hello包,鄰居關系將被斷開。
下圖是hello和dead時間:
兩台OSPF路由器必須滿足4個條件,才能形成OSPF鄰居,4個必備條件如下:
- Area-id(區域號碼)即路由器之間必須配置在相同的OSPF區域,否則無法形成鄰居。
- Hello and Dead Interval(Hello時間與Dead時間)即路由器之間的Hello時間和Dead時間必須一致,否則無法形成鄰居。
- Authentication(認證)路由器之間必須配置相同的認證密碼,如果密碼不同,則無法形成鄰居。
- Stub Area Flag(末節標簽)路由器之間的末節標簽必須一致,即處在相同的末節區域內,否則無法形成鄰居。
1.7 鄰接(Adjacency)
兩台OSPF路由器能夠形成鄰居,但並不一定能相互交換LSA,只要能交換LSA,關系則稱為鄰接(Adjacency)。鄰居之間只交換Hello包,而鄰接(Adjacency)之間不僅交換Hello包,還要交換LSA。
1.8 DR/BDR
當多台OSPF路由器連到同一個多路訪問網段時,如果每兩台路由器之間都相互交換LSA,那么該網段將充滿着眾多LSA條目,為了能夠盡量減少LSA的傳播數量,通過在多路訪問網段中選擇出一個核心路由器,稱為DR(Designated Router),網段中所有的OSPF路由器都和DR互換LSA,這樣一來,DR就會擁有所有的LSA,並且將所有的LSA轉發給每一台路由器;DR就像是該網段的LSA中轉站,所有的路由器都與該中轉站互換LSA,如果DR失效后,那么就會造成LSA的丟失與不完整,所以在多路訪問網絡中除了選舉出DR之外,還會選舉出一台路由器作為DR的備份,稱為BDR(Backup Designated Router),BDR在DR不可用時,代替DR的工作,而既不是DR,也不是BDR的路由器稱為Drother,事實上,Dother除了和DR互換LSA之外,同時還會和BDR互換LSA。
其實,DR與BDR並沒有任何本質與功能的區別,只有在多路訪問的網絡環境,才需要DR和BDR,DR與BDR的選舉是在一個二層網段內選舉的,即在多個路由器互連的接口范圍內,與OSPF區域沒有任何關系,一個區域可能有多個多路訪問網段,那么就會存在多個DR和BDR,但一個多路訪問網段,只能有一個DR和BDR。
選舉DR和BDR的規則為:
★比較接口優先級
選舉優先級最高的成為DR,優先級數字越大,表示優先級越高,被選為DR的幾率就越大,次優先級的為BDR,優先級范圍是0-255,默認為1,優先級為0表示沒有資格選舉DR和BDR。
★Route-Id大小
如果在優先級都相同的情況下,Route-Id 最大的成為DR,其次是BDR,數字越大,被選為DR的幾率就越大。
因為所有路由器都能與DR和BDR互換LSA,所以所有路由器都與DR和BDR是鄰接(Adjacency)關系,而Drother與Drother之間無法互換LSA,所以Drother與Drother之間只是鄰居關系。
在一個多路訪問網絡中,選舉DR和BDR是有時間限制的,該時間為Wait時間,默認為4倍的Hello時間,即與Dead時間相同,如果OSPF路由器在超過Wait時間后也沒有其它路由器與自己競爭DR與BDR的選舉,那么就選自己為DR;當一個多路訪問網絡中選舉出DR與BDR之后,在DR與BDR沒有失效的情況下,不會進行重新選舉,也就是在選舉出DR與BDR之后,即使有更高優先級的路由器加入網絡,也不會影響DR與BDR的角色,在越出選舉時間(Wait時間)后,只有DR與BDR失效后,才會重新選舉。DR失效后,會同時重新選舉DR與BDR,而在BDR失效后,只會重新選舉BDR。
DR和BDR與Drother的數據包處理會有所不同,所有OSPF路由器,包括DR與BDR,都能夠接收和傳遞目標地址為224.0.0.5的數據包。
只有DR和BDR才能接收和傳遞目標地址為224.0.0.6的數據包。
由此可見,Drother路由器將數據包發向目標地址224.0.0.6,只能被DR和BDR接收,其它Drother不能接收;而DR和BDR將數據包發向目標地址224.0.0.5,可以被所有路由器接收。
2 OSPF基礎
2.1 OSPF的特點
- OSPF把自治系統划分成邏輯意義上的一個或多個區域;
- OSPF通過LSA(Link State Advertisement)的形式發布路由;
- OSPF依靠在OSPF區域內各設備間交互OSPF報文來達到路由信息的統一;
- OSPF報文封裝在IP報文內,可以采用單播或組播的形式發送。
2.2 報文類型
2.3 LSA類型
由於OSPF協議定義了多種路由器的類型,因而定義多種LSA通告的類型也是必要的。
LSA報文主要分LSA頭部和LSA信息字段。所有類型的LSA報文,其LSA頭部包含的字段都是一樣的,唯一不同的是Link state ID字段含義。在LSA頭部中,我們主要關心以下三個字段:
- Link-State Advertisement Type:LSA類型
- Link state ID:鏈路狀態ID。
在Router-LSA中,Link-State ID字段代表始發該LSA的設備的Router ID
在Network-LSA中,Link-State ID字段的含義是DR接口上的IP地址
在Network-summary-LSA中,Link-State ID字段代表該LSA所描述的網絡的網絡地址
在ASBR-summary-LSA中,Link State ID表示該LSA所描述的ASBR的Router ID
在AS-external-LSA中,Link State ID代表外部網絡目的IP地址
- Advertising Router:通告路由器
NSSA LSA所有的字段與AS-external-LSA字段均相同,只是泛洪的區域不同,AS-external-LSA是在整個AS泛洪,而NSSA LSA僅僅是在NSSA區域中泛洪。
NSSA區域允許引入外部路由,但外部路由信息的NSSA LSA只能在本區域泛洪,那外部路由如何能傳遞給整個自治域呢?Type7 LSA在ABR(R3)上轉換成Type5 LSA,並且泛洪到骨干區直至整個自治域中。這樣就將外部路由引入到了除NSSA區域的其他區域。
1、Router-LSA:區域內的路由器交流完這類lsa后,都知道本區域有哪些路由器(圖這種數據結構中的“頂點”的概念形成了)
2、Network-LSA:區域內的路由器交流完這類lsa后,都知道本區域路由器之間的關聯情況(圖這種數據結構中的“邊”的概念形成了,有了1,2類lsa的交互,拓撲就形成了)
3、Network-summary-LSA:ABR將所涉區域內的網絡段(由lsa頭部中的Link state ID + lsa信息字段中的Netmask構成)通告給其他區域。
4、ASBR-summary-LSA:ABR將ASBR的位置告訴ASBR所在區域外的其他區域中的路由器。於是大家都知道ASBR在哪。
5、AS-external-LSA:有了ASBR-summary-LSA,ASBR就可以將去AS外部的路由(由lsa頭部中的Link state ID + lsa信息字段中的Netmask構成)在整個AS區域內泛洪了。
2.4 路由器類型
2.5 路由類型
AS區域內和區域間路由描述的是AS內部的網絡結構,AS外部路由則描述了應該如何選擇到AS以外目的地址的路由。OSPF將引入的AS外部路由分為Type1和Type2兩類。下表中按優先級從高到低順序列出了路由類型。
有實例更有說服力!見下圖:
去掉type 1的配置后,默認就是type 2類型了,如下圖示:
2.6 區域類型
2.6.1 Stub區域和Totally Stub區域的由來
Stub區域:為保證到自治系統外的路由依舊可達,Stub區域的ABR將生成一條缺省路由,並發布給Stub區域中的其他非ABR路由器。一般情況下,Stub區域位於自治系統的邊界,是只有一個ABR的非骨干區域。
Totally Stub區域:Stub區域能夠起到減少區域內路由表項規模的作用,但是這似乎還不夠徹底,實際上也可以不關心區域間的路由細節,而僅預留一個到達其他區域的出口即可。這種情況下可以將這個區域配置成Totally Stub區域。
2.6.1 NSSA(Not So Stubby Area)區域和Totally NSSA區域的由來
NSSA區域:在Stub區域特性基礎上,NSSA區域允許本區域ASBR引入的外部路由在該區域內傳播。
Totally NSSA區域:在Totally Stub區域特性基礎上,Totally NSSA區域允許本區域ASBR引入的外部路由在該區域內傳播。
所以此倆區域中的NS倆字母要表達的意思是,本區域可以引入外部路由,出現了ASBR路由器。存在7類的缺省LSA,由ABR產生,在本區域傳播;ASBR可手動配置產生7類缺省LSA,也只在本區域傳播。ASBR產生的7類LSA經過ABR時轉成5類LSA並傳播給AS中的其他區域。
而此四種區域中的Totally一詞要表達的意思是,這類區域不需要知道去AS中其他區域該怎么走,也即不存在3類非缺省的LSA,只存在3類的缺省LSA,由ABR產生。
LSA在各區域的管理規則如下:
圖1 Stub區域的LSA管理規則
圖2 Totally Stub區域的LSA管理規則
圖3 NSSA區域的LSA管理規則
圖4 Totally NSSA區域的LSA管理規則
OSPF各種特殊區域允許出現的LSA總結如下表所示
骨干區域 |
Type1、Type2、Type3、Type4、Type5 |
標准區域 |
Type1、Type2、Type3、Type4、Type5 |
Stub區域 |
Type1、Type2、Type3、Type3缺省路由 |
Totally Stub區域 |
Type1、Type2、Type3缺省路由 |
NSSA區域 |
Type1、Type2、Type3、Type7、Type7缺省路由 |
Totally NSSA區域 |
Type1、Type2、Type7、Type3缺省路由、Type7缺省路由 |
2.7 OSPF支持的網絡類型
OSPF根據鏈路層協議類型,將網絡分為如下四種類型:
實例如下圖所示:
2.8 STUB區域
STUB區域是一些特定的區域,STUB區域的ABR不傳播它們接收到的自治系統外部路由,在這些區域中路由器的路由表規模以及路由信息傳遞的數量都會大大減少。
STUB區域是一種可選的配置屬性,但並不是每個區域都符合配置的條件。通常來說,STUB區域位於自治系統的邊界,是那些只有一個ABR的非骨干區域。
為保證到自治系統外的路由依舊可達,該區域的ABR將生成一條缺省路由,並發布給STUB區域中的其他非ABR路由器。
配置STUB區域時需要注意下列幾點:
- 骨干區域不能配置成STUB區域。
- 如果要將一個區域配置成STUB區域,則該區域中的所有路由器都要配置STUB區域屬性。
- STUB區域內不能存在ASBR,即自治系統外部的路由不能在本區域內傳播。
- 虛連接不能穿過STUB區域。
2.9 NSSA區域
OSPF NSSA(Not-So-Stubby Area)區域是OSPF特殊的區域類型。NSSA區域與STUB區域有許多相似的地方,兩者都不傳播來自OSPF網絡其它區域的外部路由。差別在於STUB區域是不能引入外部路由,NSSA區域能夠將自治域外部路由引入並傳播到整個OSPF自治域中。
當區域配置為NSSA區域后,為保證到自治系統外的路由可達,NSSA區域的ABR將生成一條缺省路由,並發布給NSSA區域中的其他路由器。
配置NSSA區域時需要注意下列幾點:
- 骨干區域不能配置成NSSA區域。
- 如果要將一個區域配置成NSSA區域,則該區域中的所有路由器都要配置NSSA區域屬性。
- 虛連接不能穿過NSSA區域。
2.10 鄰居狀態機
OSPF共有8種狀態機,分別是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
- Down:鄰居會話的初始階段,表明沒有在鄰居失效時間間隔內收到來自鄰居路由器的Hello數據包。
- Attempt:該狀態僅發生在NBMA網絡中,表明對端在鄰居失效時間間隔(dead interval)超時后仍然沒有回復Hello報文。此時路由器依然每發送輪詢Hello報文的時間間隔(poll interval)向對端發送Hello報文。
- Init:收到Hello報文后狀態為Init。
- 2-way:收到的Hello報文中包含有自己的Router ID,則狀態為2-way;如果不形成鄰接關系則鄰居狀態機就停留在此狀態,否則進入Exstart狀態。
- Exstart:如果形成鄰居關系,則從Init狀態轉到Exstart狀態,開始協商主從關系,並確定DD的序列號。
- Exchange:主從關系協商完畢后開始交換DD報文,此時狀態為Exchange。
- Loading:DD報文交換完成即Exchange done,此時狀態為Loading。
- Full:LSR重傳列表為空,此時狀態為Full。
2.11 OSPF報文認證
OSPF支持報文驗證功能,只有通過驗證的OSPF報文才能接收,否則將不能正常建立鄰居。
路由器支持兩種驗證方式:
- 區域驗證方式
- 接口驗證方式
當兩種驗證方式都存在時,優先使用接口驗證方式。
2.12 OSPF路由聚合
路由聚合是指ABR可以將具有相同前綴的路由信息聚合到一起,只發布一條路由到其它區域。
區域間通過路由聚合,可以減少路由信息,從而減小路由表的規模,提高設備的性能。
OSPF有兩種路由聚合方式:
- ABR聚合
ABR向其它區域發送路由信息時,以網段為單位生成Type3 LSA。如果該區域中存在一些連續的網段,則可以通過命令將這些連續的網段聚合成一個網段。這樣ABR只發送一條聚合后的LSA,所有屬於命令指定的聚合網段范圍的LSA將不會再被單獨發送出去。
- ASBR聚合
配置路由聚合后,如果本地設備是自治系統邊界路由器ASBR,將對引入的聚合地址范圍內的Type5 LSA進行聚合。當配置了NSSA區域時,還要對引入的聚合地址范圍內的Type7 LSA進行聚合。
如果本地設備既是ASBR又是ABR,則對由Type7 LSA轉化成的Type5 LSA進行聚合處理。
2.13 OSPF缺省路由
缺省路由是指目的地址和掩碼都是0的路由。當設備無精確匹配的路由時,就可以通過缺省路由進行報文轉發。由於OSPF路由的分級管理,Type3缺省路由的優先級高於Type5或Type7路由。
OSPF缺省路由通常應用於下面兩種情況:
- 由區域邊界路由器(ABR)發布Type3缺省Summary LSA,用來指導區域內設備進行區域之間報文的轉發。
- 由自治系統邊界路由器(ASBR)發布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用來指導自治系統(AS)內設備進行自治系統外報文的轉發。
OSPF缺省路由的發布原則如下:
- OSPF路由器只有具有對外的出口時,才能夠發布缺省路由LSA。
- 如果OSPF路由器已經發布了缺省路由LSA,那么不再學習其它路由器發布的相同類型缺省路由。即路由計算時不再計算其它路由器發布的相同類型的缺省路由LSA,但數據庫中存有對應LSA。
- 外部缺省路由的發布如果要依賴於其它路由,那么被依賴的路由不能是本OSPF路由域內的路由,即不是本進程OSPF學習到的路由。因為外部缺省路由的作用是用於指導報文的域外轉發,而本OSPF路由域的路由的下一跳都指向了域內,不能滿足指導報文域外轉發的要求。
不同區域缺省路由發布原則如下表所示:
2.14 OSPF路由過濾
OSPF支持使用路由策略對路由信息進行過濾。缺省情況下,OSPF不進行路由過濾。
OSPF可以使用的路由策略包括route-policy,訪問控制列表(access-list),地址前綴列表(prefix-list)。
OSPF路由過濾可以應用於以下幾個方面:
- 路由引入
OSPF可以引入其它路由協議學習到的路由。在引入時可以通過配置路由策略來過濾路由,只引入滿足條件的路由。
- 引入路由發布
OSPF引入了路由后會向其它鄰居發布引入的路由信息。
可以通過配置過濾規則來過濾向鄰居發布的路由信息。該過濾規則只在ASBR上配置才有效。
- 路由學習
通過配置過濾規則,可以設置OSPF對接收到的區域內、區域間和自治系統外部的路由進行過濾。
該過濾只作用於路由表項的添加與否,即只有通過過濾的路由才被添加到本地路由表中,但所有的路由仍可以在OSPF路由表中被發布出去。
- 區域間LSA學習
通過命令可以在ABR上配置對進入本區域的Summary LSA進行過濾。該配置只在ABR上有效(只有ABR才能發布Summary LSA)。
- 區域間LSA發布
通過命令可以在ABR上配置對本區域出方向的Summary LSA進行過濾。該配置只在ABR上配置有效。
3 OSPF配置任務
無論是哪種類型的路由器,都必須先使能OSPF,否則OSPF協議將無法正常運行。在進行各項配置的時候應該先做好網絡規划,錯誤的配置可能會導致相鄰路由器之間無法相互傳遞信息,甚至導致路由信息的阻塞或者產生路由環路。
6 OSPF疑問
1、一個運行ospf協議的自治系統中,能包括兩個骨干區域(也即區域0)嗎?
2、區域0的完整性和不完整性是個什么概念?用圖說明下?
3、虛連接上面除了兩端外允許存在其他路由器嗎?如下圖中紅色箭頭所指
【參考】
2、http://baike.baidu.com/view/6234950.htm?fromId=64365
6、路由重分布route redistribution(紅茶三杯ccie)