路由優先級缺省:算法
OSPF內部:10數據庫
靜態:60安全
OSPF外部(O_ASE):150網絡
BGP:255ide
Open Shortest Path First,基於SPF算法的鏈路狀態的內部網關協議oop
適應範圍廣:支持各類規模的網絡,最多可支持幾百臺路由器。性能
快速收斂:在網絡的拓撲結構發生變化後當即發送更新報文,使這一變化在自治系統中同步。學習
無自環:因爲OSPF根據收集到的鏈路狀態用最短路徑樹算法計算路由,從算法自己保證了不會生成自環路由。spa
區域劃分:容許自治系統的網絡被劃分紅區域來管理。路由器鏈路狀態數據庫的減少下降了內存的消耗和CPU的負擔;區域間傳送路由信息的減小下降了網絡帶寬的佔用。操作系統
路由分級:使用4類不一樣的路由,按優先順序來講分別是:區域內路由、區域間路由、第一類外部路由、第二類外部路由。
支持驗證:支持基於區域和接口的報文驗證,以保證報文交互和路由計算的安全性。
組播發送:在某些類型的鏈路上以組播地址發送協議報文,減小對其餘設備的干擾。
OSPF報文頭部信息,全部的OSPF報文使用相同的OSPF報文頭部。
Version :OSPF協議號,應當被設置成2。
Type:OSPF報文類型,OSPF共有五種報文。
Packet length:OSPF報文總長度,包括報文頭部。單位是字節。
Router ID:生成此報文的路由器的Router ID。
Area ID:此報文須要被通告到的區域。
Checksum:是指一個對整個數據包(包括包頭)的標準IP校驗和。
AuType:驗證此報文所應當使用的驗證方法。
Authentication:驗證此報文時所須要的密碼等信息。
週期性發送,用來發現和維持OSPF鄰居關係,以及進行DR(Designated Router,指定路由器)/BDR(Backup Designated Router,備份指定路由器)的選舉。
² Network Mask:發送Hello報文的接口的網絡掩碼。
² HelloInterval:發送Hello報文的時間間隔。單位爲秒(缺省P2P、Broadcast類型接口發送Hello報文的時間間隔爲10秒,P2MP、NBMA類型接口發送Hello報文的時間間隔爲30秒)。
² Options:標識發送此報文的OSPF路由器所支持的可選功能。主要爲E位,是否洪泛AS-external-LSA,N/P位,處理7類LSA(詳見RFC 2382附錄A.2)
² Rtr Pri:發送Hello報文的接口的Router Priority,用於選舉DR和BDR。
² RouterDeadInterval:宣告鄰居路由器不繼續在該網段上運行OSPF的時間間隔,單位爲秒,一般爲四倍HelloInterval。
² Designated Router:發送Hello報文的路由器所選舉出的DR的IP地址。若是設置爲0.0.0.0,表示未選舉DR
² Backup Designated Router:發送Hello報文的路由器所選舉出的BDR的IP地址。若是設置爲0.0.0.0,表示未選舉BDR路由器。
² Neighbor:鄰居路由器的Router ID列表。表示本路由器已經從該鄰居收到合法的Hello報文。
NBMA或廣播網絡纔有DR/BDR字段,其他類型該字段值爲0
描述了本地LSDB(Link State DataBase,鏈路狀態數據庫)中每一條LSA(Link State Advertisement,鏈路狀態通告)的摘要信息,用於兩臺路由器進行數據庫同步。
² 接口MTU:是指在數據包不分段的狀況下,始發路由器接口能夠發送的最大IP數據包大小。當在虛鏈接時,該在段爲0x0000。
² Option:同hello報文。
² I位:當發送的是一系列DD報文中的第一個數據包時,該爲置位爲1。後續的DD報文將該位置位0。
² M位:當發送的數據包還不是一個系列DD報文中的最後一個數據包時,該爲置爲1。若是是最後一個DD報文,則將該爲置爲0。
² MS位:在數據庫同步中,主要用來確認協商過程當中的序列號。
² DD Sequence Number:DD的序列號報文。
² LSA頭部信息。
DD初始交互時(exstart)沒有攜帶LSA頭部信息
向對方請求所需的LSA。兩臺路由器互相交換DD報文以後,得知對端的路由器有哪些LSA是本地的LSDB所缺乏的,這時須要發送LSR報文向對方請求所需的LSA。
² Link State Type:用來指明LSA標識是一個路由器LSA、一個網絡LSA仍是其餘類型的LSA。
² Link State ID:不一樣類型LSA該字段意義不一樣。
² Advertising Router:始發LSA通告的路由器的路由器ID。
請求的LSA由LSA類型、鏈路狀態標識和通告路由器組成。
LSR的目的IP:P2P類型爲224.0.0.5,廣播網絡/NBMA類型是單播IP。
此時,OSPF剛創建,只請求DD階段交互的LSA,OSPF FULL後還會update路由信息,但不會有新的LSR。
向對方發送其所須要的LSA。LSU必須被LSAck確認,能夠一個ack包確認多個或者隱式確認(發送相同的LSU,如廣播鏈路DRother發送LSU給DR,DR須要把這個洪泛給其餘DRother,該DRother收到LSU後即算確認)
² Number of LSA:指出這個數據包中包含的LSA的數量。
² LSA:明細LSA信息
用來對收到的LSA進行確認。
² Header of LSA:LSA頭部信息。
LSAck包可能發送到多播地址AllSPFRouters或AllDRouters或者使用單播
LSA頭部信息,除Hello報文外,其它的OSPF報文都攜帶LSA信息。(DD 初始報文(exstart主從協商)也沒有攜帶)
l LS age:此字段表示LSA已經生存的時間,單位是秒。
l Option:該字段指出了部分OSPF域中LSA可以支持的可選性能
l LS type:此字段標識了LSA的格式和功能。經常使用的LSA類型有五種。
l Link State ID:根據LSA的不一樣而不一樣。
l Advertising Router:始發LSA的路由器的ID。
l Sequence Number:當LSA每次新的實例產生時,這個序列號就會增長。這個更新能夠幫助其餘路由器識別最新的LSA實例。
l Checksum:關於LSA的所有信息的校驗和。由於Age字段,因此校驗和會隨着老化時間的增大而每次都須要從新進行計算。
l Length:是一個包含LSA頭部在內的LSA的長度。
DD報文只有LSA頭部(除初始報文外(exstart主從協商),初始報文沒有LSA信息)
路由器產生,描述了路由器的鏈路狀態和開銷,本區域內傳播,Router-LSA必須描述始發路由器全部接口或鏈路。
l Link State ID:是指始發路由器的路由器ID。
l V:設置爲1時,說明始發路由器是一條或者多條具備徹底鄰接關係的虛鏈路的一個端點。
l E:當始發路由器是一個ASBR路由器時,該爲置爲1。
l B:當始發路由器是一個ABR路由器時,該爲置爲1。
l Number of links:代表一個LSA所描述的路由器鏈路數量。
l Link Type:置爲1表示點到點鏈接一臺設備;置爲2表示鏈接一個transit網絡,能夠理解爲廣播網絡;置爲3表示鏈接subnet網絡,通常該地址爲環回口地址;置爲4表示虛鏈路。
l Link ID:Link Type置爲1表示鄰居路由器的路由器ID;Link Type置爲2表示DR路由器的接口的IP地址;Link Type置爲3表示IP網絡或子網地址;Link Type置爲4鄰居路由器的路由器ID。
l Link Data:Link Type置爲1表示和網絡相連的始發路由器接口的IP地址;Link Type置爲2表示和網絡相連的始發路由器接口的IP地址;Link Type置爲3網絡的IP地址或子網掩碼。
l ToS,暫不支持。
l Metric:是指一條鏈路或接口的代價。
DR產生,描述本網段的鏈路狀態,本區域內傳播
l Link State ID:是指DR路由器接口上的地址。(LSA頭部)
l Network Mask:指定這個網絡上使用的地址或者子網的掩碼。
l Attached router:列出該多路訪問網絡上與DR造成徹底鄰接關係且包括DR自己的全部路由器的路由器ID。
ABR產生,描述區域內某個網段的路由,區域間傳播(除特殊區域)
l Link State ID:對於3類LSA來講,表示所通告的網絡或子網的IP地址。對於4類LSA來講表示所通告的ASBR路由器的路由器ID。(LSA頭部)
l Network Mask:對於3類LSA來講,表示所通告的網絡的子網掩碼或者地址。對於4類LSA來講,該字段沒有實際意義,通常置爲0.0.0.0。
l Metric:直到目的地址的路由的代價。
ABR產生,描述到ASBR的路由,OSPF域內傳播(除特殊區域)
l Link State ID:對於3類LSA來講,表示所通告的網絡或子網的IP地址。對於4類LSA來講表示所通告的ASBR路由器的路由器ID。
l Network Mask:對於3類LSA來講,表示所通告的網絡的子網掩碼或者地址。對於4類LSA來講,該字段沒有實際意義,通常置爲0.0.0.0。
l Metric:直到目的地址的路由的代價。
ASBR產生,描述到AS外部的路由,OSPF域內傳播(除特殊區域)
l Link State ID:目的地的IP地址。
l Network Mask:指所通告的目的地的子網掩碼或地址。
l E:用來指定這條路由使用的外部度量的類型。若是該E bit設置爲1,那麼度量類型就是E2;若是該E bit設置爲0,那麼度量類型就是E1。
l Metric:指路由的代價。由ASBR設定。
l Forwarding Address:是指到達所通告的目的地的數據包應該被轉發到的地址。若是轉發地址是0.0.0.0,那麼數據包將被轉發到始發ASBR上。
l External Route Tag:標記外部路由。
根據RFC2382,須要在區域內或區域間有下一跳的路由!
由ASBR產生,描述到AS外部的路由,僅在NSSA區域內傳播。
Forwarding Address:若是網絡一臺NSSA ASBR路由器和鄰接的自治系統之間是做爲一條內部路由通告的,那麼這個FA就是這個網絡的下一跳地址。若是網絡不是做爲一個條內部路由通告的,那麼這個FA地址將是NSSA ASBR路由器的路由器ID。
l 7類LSA是爲了支持NSSA區域而新增的一種LSA類型,用於描述引入的外部路由信息。
l 7類LSA由NSSA區域的自治域邊界路由器(ASBR)產生,其擴散範圍僅限於邊界路由器所在的NSSA區域。
l NSSA區域的區域邊界路由器(ABR)收到7類LSA時,會有選擇地將其轉化爲5類LSA,以便將外部路由信息通告到OSPF網絡的其它區域。
l 缺省路由也能夠經過7類LSA來表示,用於指導流量流向其它自治域。
Opaque LSA提供用於OSPF的擴展的通用機制。其中:
l Type9 LSA 僅在接口所在網段範圍內傳播。用於支持 GR 的Grace LSA 就是 Type9 LSA 的一種。
l Type10 LSA 在區域內傳播。用於支持 TE 的 LSA 就是 Type10LSA 的一種。
l Type11 LSA 在自治域內傳播,目前尚未實際應用的例子
全部其餘區域必須與區域0相連
拓撲所體現的IS-IS與OSPF不一樣點:
l 在OSPF中,每一個鏈路只屬於一個區域;而在IS-IS中,每一個鏈路能夠屬於不一樣的區域;
l 在IS-IS中,單個區域沒有骨幹與非骨幹區域的概念;而在OSPF中,Area0被定義爲骨幹區域;
l 在IS-IS中,Level-1和Level-2級別的路由都採用SPF算法,分別生成最短路徑樹SPT而在OSPF中,只有在同一個區域內才使用SPF算法,區域之間的路由須要經過骨幹區域來轉發。
缺省狀況下, OSPF區域被定義爲普通區域。普通區域包括標準區域和骨幹區域。
l 標準區域是最通用的區域,它傳輸區域內路由,區域間路由和外部路由。
l 骨幹區域是鏈接全部其餘 OSPF 區域的中央區域。骨幹區域一般用Area 0 表示。
不容許發佈自治系統外部路由,只容許發佈區域內路由和區域間的路由。在STUB區域中,路由器的路由表規模和路由信息傳遞的數量都會大大減小。爲了保證到自治系統外的路由可達,由該區域的ABR發佈Type3缺省路由傳播到區域內,全部到自治系統外部的路由都必須經過ABR才能發佈。
l 骨幹區域不能配置成Stub區域。
l 若是要將一個區域配置成Stub區域,則該區域中的全部路由器都要配置Stub區域屬性。
l Stub區域內不能存在ASBR,即自治系統外部的路由不能在本區域內傳播。
l 虛鏈接不能穿過Stub區域。
l Stub區域不容許自治系統外部的路由(Type5 LSA)在區域內傳播。
l 區域內的路由器必須經過ABR學到自治系統外部的路由。實現方法是ABR會自動產生一條缺省的Summary LSA(Type3 LSA)通告到整個Stub區域內。這樣,到達自治系統的外部路由就能夠經過ABR到達。
不容許發佈自治系統外部路由和區域間的路由,只容許發佈區域內路由。在Totally STUB區域中,路由器的路由表規模和路由信息傳遞的數量都會大大減小。爲了保證到自治系統外的路由可達,由該區域的ABR發佈Type3缺省路由傳播到區域內,全部到自治系統外部的路由都必須經過ABR才能發佈。
l Totally Stub區域既不容許自治系統外部的路由(Type5 LSA)在區域內傳播,也不容許區域間路由(Type3 LSA)在區域內傳播。
l 區域內的路由器必須經過ABR學到自治系統外部和其餘區域的路由。
l ABR會自動產生一條缺省的Summary LSA(Type3 LSA)通告到整個Stub區域內。
NSSA區域容許引入自治系統外部路由,由ASBR發佈Type7 LSA通告給本區域,這些Type7 LSA在ABR上轉換成Type5 LSA,而且泛洪到整個OSPF域中NSSA區域同時保留自治系統內的STUB區域的特徵。該區域的ABR發佈Type3缺省路由傳播到區域內,全部域間路由都必須經過ABR才能發佈。
爲了將NSSA區域引入的外部路由發佈到其它區域,須要把Type-7 LSA轉化爲Type-5 LSA以便在整個OSPF網絡中通告。
l option字段P用於告知轉化路由器該條7類LSA是否須要轉化。
l 進行轉化的是NSSA區域中Router ID最大的區域邊界路由器(ABR)。
l 只有P置位而且Forwarding Address不爲0的Type-7 LSA才能轉化爲Type-5 LSA。Forwarding Address用來表示發送的某個目的地址的報文將被轉發到Forwarding Address所指定的地址。
l 知足以上條件的缺省7類LSA也能夠被轉化。
l 區域邊界路由器產生的7類LSA不會置位P-bit。
注意事項
Ø 在NSSA區域中,可能同時存在多個邊界路由器。爲了防止路由環路產生,邊界路由器之間不計算對方發佈的缺省路由。
Totally NSSA區域容許引入自治系統外部路由,由ASBR發佈Type7 LSA通告給本區域,這些Type7 LSA在ABR上轉換成Type5 LSA,而且泛洪到整個OSPF域中。Totally NSSA區域同時保留自治系統內的Totally STUB Area區域的特徵。該區域的ABR發佈Type3缺省路由傳播到區域內,全部域間路由都必須經過ABR才能發佈。
NSSA和Totally NSSA
l NSSA區域容許引入少許經過本區域的ASBR到達的外部路由,但不容許其餘區域的外部路由ASE LSA(Type5 LSA)在區域內傳播。即到達自治系統外部的路由只能經過本區域的ASBR到達。
l Totally NSSA區域既不容許其餘區域的外部路由ASE LSA(Type5 LSA)在區域內傳播,也不容許區域間路由(Type3 LSA)在區域內傳播。
NSSA區域內存在兩種缺省路由,由ASBR產生的第七類缺省路由和ABR產生的第三類缺省路由(徹底NSSA區域)。
1. 區域內路由器(Internal Router):該類設備的全部接口都屬於同一個OSPF區域。
2. 區域邊界路由器ABR(Area Border Router):該類路由器能夠同時屬於兩個以上的區域,但其中一個接口必須在骨幹區域。ABR用來鏈接骨幹區域和非骨幹區域,它與骨幹區域之間既能夠是物理鏈接,也能夠是邏輯上的鏈接。
3. 骨幹路由器(Backbone Router):該類路由器至少有一個接口屬於骨幹區域。全部的ABR和位於Area0的內部路由器都是骨幹路由器。
4. 自治系統邊界路由器ASBR(AS Boundary Router):與其餘AS交換路由信息的路由器稱爲ASBR。ASBR並不必定位於AS的邊界,它多是區域內路由器,也多是ABR。只要一臺OSPF路由器引入了外部路由的信息,它就成爲ASBR(外部路由只能由ASBR彙總)
當鏈路層協議是Ethernet、 FDDI時,缺省狀況下, OSPF認爲網絡類型是Broadcast。
在該類型的網絡中:
l 一般以組播形式發送 Hello 報文、LSU 報文和 LSAck 報文。其中,224.0.0.5 的組播地址爲 OSPF 設備的預留 IP 組播地址; 224.0.0.6的組播地址爲 OSPF DR/BDR 的預留 IP 組播地址。
l 以單播形式發送 DD 報文和 LSR 報文。
當鏈路層協議是幀中繼、 X.25時,缺省狀況下, OSPF認爲網絡類型是NBMA。在該類型的網絡中,以單播形式發送協議報文( Hello報文、 DD報文、LSR報文、 LSU報文、 LSAck報文)。
沒有一種鏈路層協議會被缺省的認爲是Point-to-Multipoint類型。點到多點必須是由其餘的網絡類型強制更改的。經常使用作法是將非全連通的NBMA改成點到多點的網絡。
在該類型的網絡中:
l 以組播形式( 224.0.0.5)發送 Hello 報文。
l 以單播形式發送其餘協議報文( DD 報文、 LSR 報文、 LSU 報文、LSAck 報文)。
當鏈路層協議是PPP、 HDLC和LAPB時,缺省狀況下, OSPF認爲網絡類型是P2P。
在該類型的網絡中,以組播形式( 224.0.0.5)發送協議報文( Hello報文、 DD報文、 LSR報文、 LSU報文、 LSAck報文)。
l 減小鄰居關係的數量,從而減小鏈路狀態信息和路由信息的次數。Drother只與DR/BDR創建徹底鄰接關係。DR與BDR之間創建徹底鄰接關係。
l DR產生網絡LSA來描述NBMA網段或者廣播網段信息。
DR/BDR選舉規則
DR/BDR由OSPF的Hello協議選舉,選舉是根據端口的路由器優先級(Router Priority)進行的。
1. 若是Router Priority被設置爲0,那麼該路由器將不容許被選舉成DR或者BDR。
2. Router Priority越大越優先。若是相同,Router ID大者優先。
3. DR/BDR不能搶佔。
4. 若是當前DR故障,當前BDR自動成爲新的DR,網絡中從新選舉BDR;若是當前BDR故障,則DR不變,從新選舉BDR。
區域內路由
區域間路由
這類路由的可信程度高一些,因此計算出的外部路由的開銷與自治系統內部的路由開銷是至關的,而且和OSPF自身路由的開銷具備可比性。
到第一類外部路由的開銷=本設備到相應的ASBR的開銷+ASBR到該路由目的地址的開銷。
這類路由的可信度比較低,因此OSPF協議認爲從ASBR到自治系統以外的開銷遠遠大於在自治系統以內到達ASBR的開銷。因此, OSPF計算路由開銷時只考慮ASBR到自治系統以外的開銷,即到第二類外部路由的開銷=ASBR到該路由目的地址的開銷。
l Option可選字段出如今每個Hello數據包、DD和每一個LSA中的。
l Option字段容許路由器和其餘路由器進行一些可選性能的通訊。
Option字段包含信息
Option字段解釋:
l DN:用來避免在MPLS ×××中出現環路。當3類、5類和7類LSA中設置了DN位以後,接收路由器就不可以在它的OSPF路由計算中使用該LSA。
l O:該字段指出始發路由器支持Opaque LSA(類型9、類型10和類型11)。
l DC位:當始發路由器支持按需鏈路上的OSPF的能力時,該位將被設置。
l EA:當始發路由器具備接收和轉發外部屬性LSA的能力時,該位被置位。
l N位:只在Hello數據包中。N=1代表路由器支持7類LSA。N=0代表該路由器將不接收和發送NSSA LSA。
l P位:只用在NSSA LSA。該位將告訴一個非純末節區域中的ABR路由器將7類LSA轉換爲5類LSA。
l MC位:支持MOSPF。
l E位:當始發路由器具備接收OSPF域外部LSA的能力時,該位置位。在全部5類LSA和始發於骨幹區域以及非末節區域的LSA中,該位置爲1。而始發與末節區域的LSA中,該位置爲0。若是Hello報文中該位代表一個接口具備接收和發送5類LSA的能力。
l MT位:表示始發路由器支持多拓撲OSPF。
R2路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_ASE2 150 1 23.1.1.3 GE0/1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 0.0.0.0 6.6.6.6 106 36 80000001 1
R4路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 3 34.1.1.3 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 474 60 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 502 28 80000001 1
R3上路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 2.2.2.2 272 36 80000001 1
R3上路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 34.1.1.4 GE0/1
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 4.4.4.4 57 36 80000002 1
R3路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 23.1.1.2 GE0/0
34.1.1.4 GE0/1
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 2.2.2.2 137 36 80000001 1
NSSA 0.0.0.0 4.4.4.4 319 36 80000002 1
R3路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 2 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 0.0.0.0 2.2.2.2 160 28 80000001 1
若是在ABR上配置了nssa default-route-advertise ,將會同時產生一條第七類缺省路由LSA和一條第三類缺省路由LSA。對於NSSA中的其餘路由器來講,將會優選第三類的缺省路由。
R3路由與LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 2 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 0.0.0.0 2.2.2.2 24 28 80000001 1
NSSA 0.0.0.0 2.2.2.2 14 36 80000001 1
若是在徹底NSSA區域的ASBR配置了nssa default-route-advertise,將有可能引發NSSA區域內路由環路,R3的缺省路由指向R2,R2的缺省路由指向R3
對於R2,它會同時收到ABR發佈的第三類缺省路由和ASBR發佈的第七類缺省路由,所以它會選擇第三類缺省路由加入它的路由表,因此RTB的路由表中缺省路由0.0.0.0的下一跳指向ABR
對於ABR來講,因爲ABR會接收ASBR發佈的第七類缺省路由,因此它會把第七類的缺省路由加入本身的路由表中,ABR到ASBR的下一跳是R3,所以ABR的路由表中缺省路由0.0.0.0的下一跳指向RTB;
這樣在ABR和RTB之間就存在一條由缺省路由0.0.0.0產生的環路,致使ABR和RTB到外部區域的數據均不能正確轉發。
l 在普通區域ASBR上配置產生的是第五類缺省路由,傳播的區域是整個的ospf域;
l 在NSSA區域配置產生的是第七類或第三類缺省路由,傳播的區域是整個NSSA區域。
l 普通區域:不管是在ABR或是ASBR上配置default-route-advertise命令時,都須要在本路由器上已存在一條其餘路由協議產生或靜態配置的缺省路由時,纔會發佈第五類缺省路由。若是使用always關鍵字,則不管ABR、ASBR上是否有缺省路由都會向整個ospf域發佈缺省路由。
l Stub區域與徹底stub區域,該區域的ABR生成一條缺省路由0.0.0.0 傳播到區域內(3類)。
l NSSA區域:若是在ASBR上使用nssa default-route-advertise命令,則一樣須要在本路由器上已存在一條其餘路由協議產生或靜態配置的缺省路由時,纔會發佈第七類缺省路由;若是在ABR上使用nssa default-route-advertise命令,則不管是否存在其餘路由協議產生或靜態配置的缺省路由,都會發布第七類缺省路由。
l 徹底NSSA區域的ABR要發佈第三類缺省路由,首先必須存在至少一個骨幹區域的full鄰居。知足存在骨幹區域full鄰居的條件以後,徹底NSSA區域的ABR會自動產生一條第三類的缺省路由。
l 普通區域:若是ABR或ASBR本身發佈了第五類缺省路由,則它就不會再接受別的路由器發佈的第五類缺省路由。在區域的lsdb中,能夠存在多個第五類缺省路由LSA。若是普通區域中的路由器本身沒有發佈第五類缺省路由,則它會從其餘路由器發佈的多個第五類缺省路由中選擇一個最優的加入路由表。
l NSSA區域:在NSSA區域中的普通路由器(非ABR或ASBR)若是同時收到第三類缺省路由和第七類缺省路由,將會優選第三類缺省路由加入路由表。
l NSSA區域:當ABR發佈第三類缺省路由,同時ASBR發佈第七類缺省路由時,ABR也會學習ASBR發佈的缺省路由。這種狀況下NSSA區域有可能出現路由環路。
l 另外若是NSSA區域中多臺非ABR的ASBR同時配置nssa default-route-advertise,它們是否會發布第七類缺省路由則依賴於原來路由表中其餘路由協議或靜態配置的缺省路由的preference值。若是全部ASBR的路由表中缺省路由的preference值都大於150,這時只會有一個ASBR會發布第七類缺省路由,其它的ASBR都學習該ASBR發佈的第七類缺省路由,區域的lsdb中只會有一條七類缺省路由的LSA;若是有一部分ASBR的路由表中preference值小於150,那麼這些ASBR都會發布第七類缺省路由,而且本身的路由表中的缺省路由不會被其餘的ASBR發佈的第七類缺省路由更新(路由表優選preference值小的路由加入),其它那些路由表中原來缺省路由preference值大於150的ASBR都不會發布第七類缺省路由,它們只接受其它ASBR發佈的缺省路由,而且將該路由加入路由表,此時區域的lsdb中能夠有多條七類缺省路由的LSA。
若是在徹底NSSA區域的ASBR配置了nssa default-route-advertise,將有可能引發NSSA區域內路由環路,區域內的路由器會選擇ABR的三類缺省路由,ABR會選擇ASBR的7類缺省路由,致使ABR與區域內路由器環路。
ASBR以5了或7類LSA引入外部路由時,設定FA來標明正確的AS出口位置。
RFC規定的操做:
l 若是LSA描述的目標網絡爲N。N的地址經過LSA中LS ID和LSA體中的網絡掩碼計算而來。在路由表中查找生成該LSA的ASBR。若是不存在該ASBR的表項(好比ASBR不可達),那麼對該LSA不作操做。
l 不然,該LSA就描述了到達AS外部網絡N的路徑。檢查AS-external-LSA中的‘轉發地址’,這個地址就是發往該目標網絡N的數據包應該被送達的地址。
l 若是轉發地址被設爲0.0.0.0,包應當被轉發到ASBR。……..
l 若是轉發地址不是零,那麼在路由表中查找FA。匹配FA的路由表項必須是區域內或區域間路徑,若是沒有符合條件的表項存在,那麼對該LSA不作操做。
l 在RFC中規定,當收到5類LSA並作路由計算時,要求首先看引入該5類LSA的ASBR是否路由可達,不然就不對該LSA作處理。當FA非0時,存在相似的問題,須要查找覆蓋FA的區域內或者區域間路由,若是存在才進行處理。
CMW是H3C網絡產品使用的操做系統,CMW對FA的填寫做了以下規定:
l OSPF在ASBR的下一跳接口啓用;
l ASBR的下一跳接口沒有被設置爲被動接口;
l ASBR的下一跳接口不是OSPF P2P或P2MP類型的;
l ASBR的下一跳接口地址是落在OSPF協議中發佈的網絡範圍以內;
l 除此以外,其它狀況FA都填爲0.0.0.0。
思科參考The Effects of the FOrwarding Address on Type 5 LSA Path Selection(轉發地址對類型 5 LSA 路徑選擇的影響)及Common ROuting Problem with OSPF Forwarding Address(與 OSPF 轉發地址有關的常見路由問題).
l 若是 ASBR 重分配路由且在這些路由的下一跳接口上未啓用 OSPF,則轉發地址設置爲 0.0.0.0。
l 在下列條件下,轉發地址字段將設置爲非零地址:
n 在 ASBR 的下一跳接口上啓用了 OSPF,而且
n ASBR 的下一跳接口在 OSPF 下是非被動的,而且
n ASBR 的下一跳接口並不是 是點對點的,而且
n ASBR 的下一跳接口並不是 是點到多點的,而且
n ASBR 的下一跳接口地址屬於在 router ospf 命令中指定的網絡範圍。
n 在除以上條件以外的任何其餘條件下,轉發地址均設置爲 0.0.0.0
1. 若是有Loopback接口配置了,就選IP地址數值最大的Loopback地址;
2. 若是沒有配置Loopback接口地址,就選IP地址數值最大的物理接口地址.
3. 若是當前OSPF進程正在運行,Router ID即便是從新手工配置或計算都不會立刻生效,而須要OSPF進程從新啓動纔會生效
4. 爲何新路由器啓動後我不能配置OSPF? 由於OSPF運行是須要一個肯定的Router ID做爲路由器標誌的,這個東西對於OSPF來講很是重要,在OSPF的各種協議報文中都要用到.因此,要麼你在OSPF中明確指定Router ID
外部 OSPF 路由只能由 ASBR 進行彙總
OSPF路由的優先級從高到低的次序是:Intra-Area>Inter-Area>Type 5 AS-External>Type 7 AS-External.在這種狀況下,應該優先的是Type 5路由.注意,對錶明同一子網的路由來講,首先比較的是路由優先級纔是總的cost.
RFC2328在選路時,不是最優先考慮COST的,是要考慮路由的類型及區域的類型的,好比它認爲通過通過普通區域的路由好於通過骨幹區域的路由。
(1)當RFC 2328兼容RFC 1583時,全部到達ASBR的路由優先級相同(引入的路由按開銷大小比較)。當RFC 2328不兼容RFC 1583時,非骨幹區的區域內路由優先級最高,區域間路由與骨幹區區域內路由優先級相同,優選非骨幹區的區域內路由,儘可能減小骨幹區的負擔;
(2)若存在多條優先級相同的路由時,按開銷值優選,優選開銷值小的路由;
(3)若存在多條開銷值相同路由時,按路由來源區域的區域ID選擇,優選區域ID大的路由。
OSPF 共有 8 種狀態機,分別是: Down、 Attempt、 Init、 2-way、 Exstart、 Exchange、 Loading、 Full。
l Down:鄰居會話的初始階段,代表沒有在鄰居失效時間間隔內收到來自鄰居路由器的 Hello數據包。
l Attempt:該狀態僅發生在 NBMA 網絡中,代表對端在鄰居失效時間間隔( dead interval)超時後仍然沒有回覆 Hello 報文。此時路由器依然每發送輪詢 Hello 報文的時間間隔( poll interval)向對端發送 Hello 報文。
l Init:收到 Hello 報文後狀態爲 Init。
l 2-way:收到的 Hello 報文中包含有本身的 Router ID,則狀態爲 2-way;若是不造成鄰接關係則鄰居狀態機就停留在此狀態,不然進入 Exstart 狀態。
l Exstart:若是造成鄰居關係,則從 Init 狀態轉到 Exstart 狀態,開始協商主從關係,並肯定 DD的序列號。
l Exchange:主從關係協商完畢後開始交換 DD 報文,此時狀態爲 Exchange。
l Loading: DD 報文交換完成即 Exchange done,此時狀態爲 Loading。
l Full: LSR 重傳列表爲空,此時狀態爲 Full。
l Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。
l Init:在此狀態下,路由器已經從鄰居收到了Hello報文,可是本身不在所收到的Hello報文的鄰居列表中,表示還沒有與鄰居創建雙向通訊關係。在此狀態下的鄰居要被包含在本身所發送的Hello報文的鄰居列表中。
l 2-Way:在此狀態下,雙向通訊已經創建,可是沒有與鄰居創建鄰接關係。這是創建鄰接關係之前的最高級狀態。若是網絡爲廣播網絡或者NBMA網絡則選舉DR/BDR。
在造成鄰居關係過程當中,須要對Hello報文攜帶的參數進行協商:
l 若是接收端口的網絡類型是廣播型,點到多點或者NBMA,所接收的Hello報文中Network Mask字段必須和接收端口的網絡掩碼一致,若是接收端口的網絡類型爲點到點類型或者是虛鏈接,則不檢查Network Mask字段;
l 所接收的Hello報文中的Hello和Dead字段必須和接收端口的配置保持一致;
l 所接收的Hello報文中的認證字段須要一致;
l 所接收的Hello報文中的Options字段中的E-bit(表示是否接收外部路由信息)必須和相關區域的配置保持一致。
l 所接收的Hello報文中的區域字段必須一致。
1. 鄰居狀態機變爲ExStart之後,R1向R2發送第一個DD報文,在這個報文中,DD序列號被設置爲552A(假設),Initial比特爲1表示這是第一個DD報文,More比特爲1表示後續還有DD報文要發送,Master比特爲1表示R1宣告本身爲主路由器。
2. 鄰居狀態機變爲ExStart之後,R2向R1發送第一個DD報文,在這個報文中,DD序列號被設置爲5528(假設)。因爲R2的Router ID比R1的大,因此R2應當爲主路由器,Router ID的比較結束後,R1會產生一個NegotiationDone的事件,因此R1將狀態機從ExStart改變爲Exchange。
3. 鄰居狀態機變爲Exchange之後,R1發送一個新的DD報文,在這個新的報文中包含LSDB的摘要信息,序列號設置爲R2在第二步裏使用的序列號,More比特爲0表示不須要另外的DD報文描述LSDB,Master比特爲0表示R1宣告本身爲從路由器。收到這樣一個報文之後,R2會產生一個NegotiationDone的事件,所以R2將鄰居狀態改變爲Exchange。
4. 鄰居狀態變爲Exchange之後,R2發送一個新的DD報文,該報文中包含LSDB的描述信息,DD序列號設爲5529(上次使用的序列號加1)。
5. 即便R1不須要新的DD報文描述本身的LSDB,可是作爲從路由器,R1須要對主路由器R2發送的每個DD報文進行確認。因此,R1向R2發送一個新的DD報文,序列號爲5529,該報文內容爲空。
6. 鄰居狀態變爲Loading以後,R1開始向R2發送LS request報文,請求那些在Exchange狀態下經過DD報文發現的,並且在本地LSDB中沒有的鏈路狀態信息。
7. R2收到LS Request報文以後,向R1發送LS Update報文,在LS Update報文中,包含了那些被請求的鏈路狀態的詳細信息。R1收到LS Update報文以後,將鄰居狀態從Loading改變成Full。
8. R1向R2發送LS Ack報文,確保信息傳輸的可靠性。LS Ack報文用於泛洪對已接收LSA的確認。
l 只對受影響的節點進行路由計算
l 只第一次計算所有節點
I-SPF改進了這個算法,除了第一次計算時須要計算所有節點外,每次只計算受到影響的節點,而最後生成的最短路徑樹SPT與原來的算法所計算的結果相同,大大下降了CPU的佔用率,提升了網絡收斂速度。
l 只對發生變化的路由進行從新計算
l 根據I-SPF 算出來的SPT 來更新路由
PRC的原理與I-SPF相同,都是隻對發生變化的路由進行從新計算。不一樣的是,PRC不須要計算節點路徑,而是根據I-SPF算出來的SPT來更新路由。在路由計算中,葉子表明路由,節點則表明路由器。SPT變化和葉子變化都會引發路由信息的變化,但二者不存在依賴關係,PRC根據SPT或葉子的不一樣狀況進行相應的處理:
Ø SPT變化,PRC處理變化節點上的全部葉子的路由信息。
Ø SPT沒有變化,PRC不會處理節點的路由信息。
Ø 葉子變化,PRC處理變化的葉子的路由信息。
Ø 葉子沒有變化,PRC不會處理葉子的路由信息。
l 對接口翻動等緣由帶來的網絡不穩定,進行智能控制,減小LSA洪泛
l 其餘做用略
智能定時器,OSPF智能定時器分別對路由計算、LSA的產生、LSA的接收進行控制,加速網絡收斂。OSPF智能定時器能夠經過如下兩種方式來加速網絡收斂:
Ø 在頻繁進行路由計算的網絡中,OSPF智能定時器根據用戶的配置和指數衰減技術動態調整兩次路由計算的時間間隔,減小路由計算的次數,從而減小CPU的消耗,待網絡拓撲穩定後再進行路由計算。
Ø 在不穩定網絡中,當路由器因爲拓撲的頻繁變化須要產生或接收LSA時,OSPF智能定時器能夠動態調整時間間隔,在時間間隔以內不產生LSA或對接受到的LSA不進行處理,從而減小整個網絡無效LSA的產生和傳播。
智能定時器對路徑計算的做用:
Ø 根據本地維護的鏈路狀態數據庫LSDB,運行OSPF協議的路由器經過SPF算法計算出以本身爲根的最短路徑樹,並根據這一最短路徑樹決定到目的網絡的下一跳。經過調節SPF的計算間隔,能夠抑制網絡頻繁變化可能致使的佔用過多帶寬資源和路由器資源。
Ø 在必定組網環境下(例如對路由收斂時間要求較高的環境),能夠指定以毫秒爲單位的時間間隔,用來增長路由計算的頻度,從而加快路由的收斂。
Ø 當OSPF的鏈路狀態數據庫(LSDB)發生改變時,須要從新計算最短路徑。若是網絡頻繁變化,因爲不斷的計算最短路徑,會佔用大量系統資源,影響路由器的效率。經過配置智能定時器,設置合理的SPF計算的間隔時間,能夠避免佔用過多的路由器內存和帶寬資源。
Ø 使能智能定時器後:
n 初次計算SPF的間隔時間由start-interval參數指定。
n 第n(n≥2)次計算SPF的間隔時間爲hold-interval×2(n-1)。
n 當hold-interval×2(n-1)達到指定的最長間隔時間max-interval時,OSPF連續三次計算SPF的時間間隔都是最長間隔時間,以後,再次返回步驟1,按照初始間隔時間start-interval計算SPF。
l 可以讓某些特定的路由優先收斂的一種技術
能夠經過IP前列表等將特定路由過濾出來,經過對不一樣的路由配置不一樣的收斂優先級,達到重要的路由先收斂的目的,提升網絡的可靠性。
經過設置路由器上非缺省外部路由數量的上限,來避免數據庫超限。OSPF網絡中全部路由器都必須配置相同的上限值。這樣,只要路由器上外部路由的數量達到該上限,路由器就進入Overflow狀態,並同時啓動超限狀態定時器(默認超時時間爲5秒),路由器在定時器超過5秒後自動退出超限狀態。
OSPF Database Overflow過程
l 進入Overflow狀態時,路由器刪除全部本身產生的非缺省外部路由。
l 處於Overflow狀態中,路由器不產生非缺省外部路由,丟棄新收到的非缺省外部路由且不回覆確認報文,當超限狀態定時器超時,檢查外部路由數量是否仍然超過上限,若是超限則重啓定時器,若是沒有則退出超限狀態。
l 退出Overflow狀態時,刪除超限狀態定時器,產生非缺省外部路由,接收新收到的非缺省外部路由,回覆確認報文,準備下一次進入超限狀態。
l 是指在兩臺ABR之間經過一個非骨幹區域創建的一條邏輯上的鏈接通道,修復被分割的區域0
l 虛鏈接必須在兩端同時配置方可生效
l 爲虛鏈接兩端提供一條非骨幹區域內部路由的區域稱爲傳輸區域
l 傳輸區域不能是末節
Ø 在部署OSPF時,要求全部的非骨幹區域與骨幹區域相連。不然會出現有的區域不可達的問題。
Ø 經過虛鏈接,兩臺ABR之間直接傳遞OSPF報文信息,他們之間的OSPF路由器只是起到一個轉發報文的做用。因爲OSPF協議報文的目的地址不是這些路由器,因此這些報文對於他們而言是透明的,只是看成普通的IP報文來轉發。
Ø 虛鏈接部署不當時有可能產生環路。
l 接口認證
l 區域認證
l Null
l Simple
l MD5
l HMAC-MD5
當兩種驗證方式都存在時,優先使用接口驗證方式。