文章目錄
- OSPF知識點彙總
-
- OSPF特性以及相關術語
-
- RID生成方式以及DR/BDR選舉規則
- OSPF四種網絡類型
- OSPF六種LSA類型介紹
- OSPF特殊區域
- OSPF五種封包分析
-
- OSPF封包結構
- OSPF工作原理
-
- OSPF八種狀态機
- OSPF原理詳細過程
OSPF知識點彙總
主要内容包括:OSPF相關術語、OSPF網絡類型、常見LSA介紹、OSPF特殊區域、OSPF封包介紹和封包結構、OSPF狀态機以及狀态機遷移、OSPF工作原理。
OSPF特性以及相關術語
OSPF(Open Shorts Path Frist,開放式最短路徑優先):是一種内部動态路由協定,用于解決RIP不能是用于大型網絡,存在環路的問題;
OSPF的特性:
- 使用SPF算法、支援彙總和認證、支援CIDR和VLSM、是無類路由協定;
- 協定号89、管理距離(華為10,思科110)、觸發更新、增量更新、周期更新群組播更新,絕對無環路;
OSPF常見術語:
- IR(Internal Routers,區域内路由器):裝置所有接口都在同一個區内;
- ABR(Area Border Routers,邊界區域路由器):裝置的接口屬于兩個或兩個以上的區域,其中必有骨幹區域。ABR用于連接配接普通區域和骨幹區域,與骨幹區域的連接配接,可以是實體上的連接配接,也可以是邏輯上的連接配接(虛鍊路);
ASBR(AS Boundary Routers,自制系統邊界路由器):裝置接口至少一個接收了其他AS系統的路由資訊。ASBR通常是在AS系統邊界,但也可以在區域間,隻要引進了外部路由(直連路由、靜态路由、RIP路由、BGP路由等)就是ASBR;
注:ABR和ASBR與實體位址無關,隻要能實作相關功能就是ABR或ASBR;
- BR(Backbone Routers,骨幹路由器):裝置接口至少有一個連接配接骨幹區域。ABR和骨幹區域内的路由器均是BR;
- 第一類外部路由(Type1 External):經過ASBR引進的内部路由,計算方式為:開銷=本裝置到達ASBR的開銷+ASBR到達目的路由的開銷(OSPF區域内部的路由器到ASBR的開銷+ASBR達到其他AS系統目的路由的開銷);
- 第二類外部路由(Type2 External):經過ASBR引進的内部路由,計算方式為:開銷=ASBR到達目的路由的開銷(隻計算其他AS區域内路由的開銷,不計算OSPF區域内到達ASBR的開銷);
RID生成方式以及DR/BDR選舉規則
RID(Router ID,路由ID):用于唯一辨別OSPF内的路由器;
RID的生成方式(生成方式按照優先級依次往下):
- 手動配置;
- 如果沒有手動配置,就使用路由器環回口的最大IP位址;
- 如果沒有配置環回口,就使用路由器實體接口的最大IP位址;
DR/BDR(Designated Router/Back-up Designated Router,指定路由器/指定備份路由器):在廣播網絡和NBMA網絡環境中的角色,用于減少封包在環境中的傳輸,收集網絡環境中的拓撲情況,發送給非DR/BDR,進行路由條目同步;
DR/BDR的選舉:
- 比較路由器的接口優先級,優先級最高的為DR,次之為BDR,預設優先級為1;
- 如果優先級相同,就比較RID,最大的為DR,次之為BDR;
注:在廣播網絡和NBMA網絡中,每個網段都會選舉出DR/BDR;優先級為0表示不參與選舉;DR與BDR為鄰接關系,DR/BDR與Dother為鄰接關系,Dother與Dother為鄰居關系;
OSPF四種網絡類型
OSPF協定定義了四種網絡環境:廣播網絡、NBMA(非廣播網絡)、P2P(點到點網絡)和P2MP(點到多點網絡);
- 廣播網絡:選舉DR/BDR,接口優先級預設為1,hello時間10s,自動發現鄰居;多點傳播發送hello、LSU和LSAck封包,單點傳播發送DD和LSR封包;
- NBMA:選舉DR/BDR,接口優先級預設為1,hello時間30s,手動設定鄰居;單點傳播發送Hello、DD、LSR、LSU和LSAck封包;
- P2P:不選舉DR/BDR,接口優先級預設為1,hello時間10s,自動發現鄰居;多點傳播發送Hello、DD、LSR、LSU和LSAck封包;
- P2MP:不選舉DR/BDR,幾口優先級預設為1,hello時間30s,自動發現鄰居,多點傳播發送Hello封包,單點傳播發送DD、LSR、LSU和LSAck封包;
注:預設下,Dead Time(Hello死亡時間)是Hello時間的四倍;在鄰接關系建立過程中兩端的Hello時間不一緻會造成鄰居關系建立不成功;
OSPF六種LSA類型介紹
**LSA(Link State Advertisement,鍊路狀态通告)**用于交換和儲存整個網絡的鍊路狀态資訊,進而掌握整個網絡的拓撲結構,獨立計算路由。
LSA常見的類型有6類:1類、2類、3類、5類、4類和7類;
- Type1 LSA(Router LSA,路由LSA):
- 描述對應裝置的實體接口所連接配接的鍊路或接口(宣告裝置存在),指明本裝置接口資訊(IP、子網路遮罩、MTU等資訊);向鄰居發送本裝置的鍊路狀态資訊;
- 傳播範圍:本地OSPf區域,不穿透ABR;
- 發送者:所有路由器;
- Type2 LSA(Network LSA,網絡LSA):
- 描述DR/BDR所在的網絡拓撲結構;
- 傳播範圍:本地OSPf區域,不穿透ABR;
- 發送者:DR/BDR路由器;
- Type3 LSA(Network Summary LSA,網絡彙聚LSA):
- 描述所連接配接區域的整個區域拓撲結構,用于告知同AS内其他OSPf區域,本區域的拓撲結構和鍊路資訊;
- 傳播範圍:所有OSPF區域(Totally stub和Totally NSSA區域除外);
- 發送者:ABR;
- Type5 LSA(AS External LSA,自治系統外部LSA):
- 描述AS外部路由進入OSPF區域的路由(即向所有OSPF區域描述到達非OSPF區域内裝置的狀态資訊);
- 傳播範圍:所有OSPF區域(NSSA/Totally NSSA特殊區域除外);
- 發送者:ASBR;
- Type4 LSA(ASBR Summary LSA,ASBR聚合LSA):
- 描述其他OSPF區域到達該ASBR的路徑,由于第五類LSA在OSPF區域傳播時不會修改下一跳,是以需要第四類LSA指明到達ASBR的路徑;
- 傳播範圍:所有OSPF區域(NSSA/Totally NSSA特殊區域除外);
- 發送者:ABR; 注:ASBR所在的區域内路由器都知道通往ASBR所在的外部路由器,是以該區域不會存在去往本ASBR的第四類LSA,會存在去往其他區域ASBR的第四類LSA;
- Type7 LSA(NSSA External LSA,NSSA外部LSA):
- NSSA/Totally NSSA特殊區域記憶體在的路由,内容與第5類LSA基本相同;
- 傳播範圍:NSSA區域;
- 發送者:ASBR;
OSPF特殊區域
OSPF為了使某些性能較低的路由器也能夠劃入OSPF并減小這些路由的負擔,劃分了四種特殊區域:stub、Totally stub、NSSA和Totally NSSA區域;
- 末節區域(Stub Area):為某些性能較低并處于AS邊界的路由器設定的優化政策;
- 前提條件:
- 位于AS邊界并且隻有一個ABR;
- 沒有ASBR;
- 無虛鍊路穿越的非骨幹區域;
- 特殊區域内的路由器都需要配置(區域内路由器均知道);
- 存在的LSA:将Type4 LSA和Type5 LSA過濾,并由ABR生成一條Type3 LSA預設路由并通告給本區域内的所有路由器,使得本區域能夠通過預設路由通路其他其餘的路由器;
- 前提條件:
- 完全末節區域(Totally Stub Area):stub區域的優化版,過濾的更加徹底,有效的減少路由數量;
- 前提條件:
- 位于AS邊界并且隻有一個ABR;
- 沒有ASBR;
- 無虛鍊路穿越的非骨幹區域;
- 特殊區域内的路由器都需要配置(區域内路由器均知道);
- 存在的LSA:将Type3、Type4 LSA和Type5 LSA過濾,并由ABR生成一條Type3 LSA預設路由并通告給本區域内的所有路由器,使得本區域能夠通過預設路由通路其他其餘的路由器;
- 前提條件:
- NSSA區域:上述兩種區域的更新版,降低了特殊區域所需的前提條件;
- 前提條件:
- 可以位于非AS邊界區域,允許多個ABR和多個ASBR;
- 無虛鍊路穿越的非骨幹區域;
- 特殊區域内的路由器都需要配置(區域内路由器均知道);
- 存在的LSA:将Type4 LSA和外部Type5 LSA過濾并在ASBR上将本區域的Type5 LSA轉化為Type7 LSA,然後在ABR上将本區域Type7 LSA轉化為Type 5 LSA發送給其他區域,并由ABR生成一條Type7 LSA預設路由并通告給本區域内的所有路由器,使得本區域能夠通過預設路由通路其他區域的AS路由;
- 前提條件:
- 完全NSSA區域(Totally NSSA Area):NSSA區域的優化版
- 前提條件:
- 可以位于非AS邊界區域,允許多個ABR和多個ASBR;
- 無虛鍊路穿越的非骨幹區域;
- 特殊區域内的路由器都需要配置(區域内路由器均知道);
- 存在的LSA:将Type3 LSA、Type4 LSA和外部Type5 LSA過濾并在ASBR上将本區域的Type5 LSA轉化為Type7 LSA,然後在ABR上将本區域Type7 LSA轉化為Type 5 LSA發送給其他區域,并由ABR生成一條Type7 LSA預設路由和一條Type3 LSA預設路由并通告給本區域内的所有路由器,使得本區域能夠通過預設路由通路其他區域的AS路由和其他區域的路由器;
- 前提條件:
注:OSPF骨幹區域也是一種特殊區域,OSPF骨幹區域是Area ID為0,不同區域之間的封包交換都必須經過骨幹區域,并且其他非骨幹區域必須直接或間接與骨幹區域相連,是以OSPF網絡必須要有骨幹區域。
OSPF五種封包分析
OSPF五種封包包括:Hello封包、DD封包、LSR封包、LSU封包和LSAck封包;
五種封包的作用如下:
- Hello封包:建立和維護路由器之間的鄰接關系,用于向鄰居證明自己的存在;
- DD封包(Database Description,資料庫描述):包含有LSDB(鍊路狀态資料庫)資訊的LSA摘要,用于比對LSDB(鍊路狀态資料庫)是否存在缺少的LSA;
- LSR封包(Link State Request,鍊路狀态請求):向鄰居請求本裝置缺少的LSA資訊;
- LSU封包(Link State Update,鍊路狀态更新):按照LSR發送對方缺少的LSA詳細資訊;
- LSAck封包(Link State Acknowledge,鍊路狀态應答):表明收到了本裝置所缺少的LSA詳細資訊;
OSPF封包結構
OSPF的五種封包(hello、DD、LSR、LSU和LSAck)采用的都是相同的OSPF報頭;
注:OSPF封包解析在沒有特殊說明的情況下,預設為廣播網絡環境=
OSPF報頭格式:
封包字段 | 說明 |
---|---|
Version | 版本字段,指定目前OSPF協定使用的版本号,OSPFv2版本值為2; |
Packet Type | 封包類型字段,辨別封包類型,數值為1-5,分别對應五種封包; |
Packet Length | 包長度字段,辨別整個封包的位元組長度(OSPF報頭和各封包内容); |
Router ID | 路由器ID字段,指定發送者的源路由器ID; |
Area ID | 區域ID字段,指定發送封包的路由器接口所在的OPSF區域ID |
Checksum | 校驗和字段,對整個封包(不包含驗證字段)的校驗和,用于對端路由器确定封包的完整性和正确性; |
Auth Type | 驗證類型字段,0為不認證、1為簡單認證、2為MD5認證 |
Authentication | 驗證字段,不認證時沒有該字段無資料;簡單認證時此字段為驗證密碼;MD5認證時此字段為MD5摘要資訊; |
Hello封包結構:
封包字段 | 說明 |
---|---|
Network Mask | 子網路遮罩字段,指定發送封包的路由器接口的子網路遮罩 |
Hello Interval | Hello發送時間間隔字段,指定路由器發送封包的時間間隔,預設為10s; |
Options | 可選項字段,置“0”代表沒有相應特性,置“1”代表具有相應特性,特性包括:E 是否允許泛洪AS-external-LSA;MC 是否允許轉發IP多點傳播封包;N 是否允許處理Type7 LSA;DC 是否允許處理按需鍊路; |
Rtr Pri | 優先級值字段,指定本路由器的DR優先級值,預設為1; |
Router DeadInterval | Hello死亡時間間隔字段,指定本地路由器失效時間,預設為40s;如果在該時間内沒有收到Hello封包,就表明鄰居失效; |
Designated Router | DR路由器IP位址字段,指明本路由器的DR接口的IP位址; |
Backup Designated Router | BDR路由器IP位址字段,指明本路由器的BDR接口的IP位址; |
Neighbor | 鄰居路由ID字段,指明鄰居路由器的RID,可以有多個鄰居; |
DD封包結構:
封包字段 | 說明 |
---|---|
Interface MTU | 接口MTU字段,指明發送封包的接口在不分段的情況下,可發送的最大值 |
Options | 可選項字段,置“0”代表沒有相應特性,置“1”代表具有相應特性,特性包括:E 是否允許泛洪AS-external-LSA;MC 是否允許轉發IP多點傳播封包;N 是否允許處理Type7 LSA;DC 是否允許處理按需鍊路; |
I | 指定連續發送多個DD封包所處的位置,置“1”代表第一個封包,置“0”代表其他封包; |
M | 指定連續發送多個DD封包所處的位置,置“0”代表最後一個封包,置“1”代表其他封包; |
M/S | 主從關系字段,本端為Master裝置就置為“1”,為Salve就置為“0”; |
DD Sequence Number | 序列号字段,指定發送封包使用的序列号,保證封包的正确性和可靠性; |
LSA Header | 摘要字段,指定封包中包含的LSA頭部,可以同時包含多個LSA摘要; |
注:MTU值不一緻會導緻狀态機一直停留在Exstart狀态
LSR博文結構:
封包字段 | 說明 |
---|---|
LSA Type | LSA類型字段,指明請求的LSA類型,取值為1-5,對應相應類型; |
Link State ID | 指定OSPF所描述的部分區域,該字段根據LSA類型不同而不同,Type1 LSA時,該字段為産生該LSA的路由器ID;Type2 LSA時,該字段為DR;Type3 LSA時,該字段為目的網絡位址;Type4 LSA時,該字段為ASBR的RID;Type5 LSA和Type7 LSA時,該字段為目的IP位址; |
Advertising Router | 通告路由類型,指定發送LSR封包的路由器ID; |
LSU 封包結構:
封包字段 | 說明 |
---|---|
Number of LSA | 指定封包中LSA的數量 |
LSAs | 包含完整詳細的LSA資訊,同一個封包可以有多條詳細LSA |
LSAck封包結構:
封包字段 | 說明 |
---|---|
LSA Age | LSA時間字段,指明LSA産生後經過的時間,機關為秒。LSA在本地LSDB會随時間老化,當泛洪擴散時,路由器會将LSA的老化增加一個Trans-delay時間; |
Options | 可選項字段,置“0”代表具有相應特性,置“1”代表具有相應特性,特性包括:E 是否允許泛洪AS-external-LSA;MC 是否允許轉發IP多點傳播封包;N 是否允許處理Type7 LSA;DC 是否允許處理按需鍊路; |
LSA Type | LSA類型字段,指明應答的LSA類型,取值為1-5,對應相應類型; |
Link State ID | 指定OSPF所描述的部分區域,該字段根據LSA類型不同而不同,Type1 LSA時,該字段為産生該LSA的路由器ID;Type2 LSA時,該字段為DR;Type3 LSA時,該字段為目的網絡位址;Type4 LSA時,該字段為ASBR的RID;Type5 LSA和Type7 LSA時,該字段為目的IP位址; |
Advertising Router | 通告路由字段,指定發送LSAck封包的RID; |
LSA Sequence Number | LSA序列号字段,指定發送封包使用的序列号,保證封包的正确性和可靠性; |
LSA Checksum | 校驗和字段,對LSAck封包進行校驗,確定接收方收到該封包是可靠的,安全的; |
Length | 長度字段,辨別LSAck的位元組大小; |
OSPF工作原理
介紹各個狀态機的作用以及遷移過程。
OSPF八種狀态機
- Down:所有OSPF裝置的初始狀态,發送包含有自己RID等資訊的Hello請求封包;
- Attempt:在NBMA網絡中,鄰居失效時間逾時後,仍沒收到hello應答封包,然後不斷輪詢發送hello封包;
- Init:收到不包含有自己DR的hello封包就跳轉到Init;
- 2-way:收到包含有自己DR的hello封包就跳轉到2-way;
- Exstart:進行DR/BDR選舉,建立鄰居關系。發送空的DD封包,用于選舉Master/Salve裝置,并确定序列号;
- Exchange:發送帶有LSA摘要的DD封包并接收鄰居發送的DD封包,用于比較本裝置LSDB(鍊路狀态資料庫)裡所缺失的LSA;
- Loading:向其他裝置發送LSR封包請求缺少的LSA,其他裝置按照LSR封包回複LSU封包;
- Full:兩端裝置的LSDB同步完成後,互相發送LSAck封包;
注:狀态機的切換不一定要依次切換,隻要符合某個狀态機的工作情況就會切換到該狀态;
OSPF原理詳細過程
在初始階段,兩端裝置都處于Down狀态,假定在廣播網絡且R1首先發送隻包含有自己DR的Hello請求封包,R2收到對端發送hello封包時,發現該封包不包含有自己的RID,就從Down切換到Init狀态,然後發送包含有自己和鄰居RID的hello應答封包;
R1收到對端發送hello應答封包後,發現該封包中包含有自己的RID,就會從Down切換到2-way狀态,然後将對端的RID加入到本地的鄰居表裡,再次發送包含有自己和R2路由器ID的hello應答封包,當R2收到包含有自己RID的hello封包,就會從Init切換到2-way狀态;
R1和R2都進入2-way狀态後,根據先前互動的Hello封包資訊,共同進入Exstart狀态。在Exstart狀态下,R1和R2會選舉出DR/BDR(比較優先級和RID),DR/BDR選舉完成後,就會發送不含有LSA摘要的DD封包,用于選舉出主裝置和從裝置(RID大的為主裝置),并以主裝置DD封包的序列号為基礎(R1為主裝置),主從确定後,從裝置R2以主裝置的序列号向主裝置R1發送LSA Header字段為空,M/S為0(表明自己為從裝置)的DD封包并切換至Exchange狀态,主裝置R1收到R1發送的空DD封包,也從Exstart切換至Exchange狀态;
主裝置R1開始不斷的向從裝置R2發送LSA Header不為空的DD封包(LSDB包含有很多的LSA,是以會拆分發送),從裝置R2依次收到R1發送的DD封包後,都會按照主裝置DD封包的序列号進行響應,當R1發送送完所有的不為空的DD封包就會從Exchange切換到Loading狀态,當R2發送完LSA Header為空的DD響應封包後,也會從Exchange切換到Loading;
主裝置發送完LSA摘要後,從裝置R2根據這些LSA摘要資訊檢視本地LSDB發現有部分主裝置的LSA沒有包含,就會向R1發送LSR封包請求自己缺少的LSA,主裝置R1收到LSR就會按照要求發送LSU封包(包含有LSR請求的LSA詳細資訊),R2收到LSU封包後,會将LSU封包包含的LSA詳細資訊添加進本地LSDB,然後回複LSAck封包,表明自己收到了LSU封包,如果從裝置R2發現自己的部分LSA資訊主裝置R1沒有,R2就會變為主裝置向R1發送LSA Header不為空的DD封包,R1再發送LSA Header為空的DD應答封包(全部發送完畢),R1就會向R2發送LSR封包,R2收到LSR封包後發送相應的LSU封包,R1回複LSAck封包,至此R1和R2的LSDB同步完成,就切換進Full狀态;
注:兩端路由的MTU值不同就會一直處于Exstart狀态;由于雙發都有可能沒有對方的LSA,故在DD封包互動的過程中主從關系不是固定的;
上述過程,如下圖:
注:“進行DR/BDR選舉”、“互動空的DD封包,确定主從裝置關系”和"互相進行LSDB同步直至LSA重傳清單為空(建立鄰接關系)"均為雙向互動的過程