這只是IP的其中一塊內容,IP還有更多內容可以查看IP專欄,前一章內容為GRE和MGRE
,可通過以下路徑查看IP-------GRE和MGRE-CSDN博客,歡迎指正
注意!!!本部分內容較多所以分成了兩部分在下一章
5.動態路由OSPF
1.OSPF的優勢
1.OSPF
開放式最短路徑優先協議
2.選路
因為OSPF是鏈路狀態型協議,他是收集拓撲信息之后將圖形結構通過SPF算法轉換成為樹形結構,這樣的好處是計算出來的路徑不會有環路,并且,其是以帶寬作為開銷的評判標準。所以OSPF此項優于RIP
3.收斂
OSPF的計時器時間也短于RIP,所以收斂速度優于RIP
4.占用資源
從單個的數據包角度來說,因為RIP傳遞的是路由信息,所以,其資源占用并不大,而OSPF需要傳遞拓撲信息,則單個數據包資源占用大于RIP。但是,OSPF并沒有像RIP一樣高頻的周期更新,并且,設計者設計了很多針對資源占用的優化機制,所以從整體的角度看,OSPF資源占用略優于RIP。
2.RIPV2,OSPFV2對比
1.版本
RIP --- RIPV1,RIPV2 ---- IP RIPNG ---- IPV6
OSPF ---- OSPFV1(實驗室階段夭折),OSPFV2 ---- IPV4 OSPFV3 ---- IPV6
2.相同點(缺)
1,OSPFV2和RIPV2一樣,都是無類別的路由協議,都支持VLSM和CIDR
2,OSPFV2和RIPV2一樣,都是使用組播發送信息。 ---- 224.0.0.5和224.0.0.6 -------兩個組播地址
224.0.0.5----以組播224.0.0.5的形式發送hello包------OSPF進行監聽----所以路由設備都會接收hello包;224.0.0.6------監聽DR和BDR設備
的組播地址--------只有建立鄰接關系的路由設備才會接收。
3,OSPFV2和RIPV2一樣,都支持等開銷負載均衡
3.不同點
RIP協議只能應用在中小型網絡環境中,而OSPF可以應用在中大型網絡環境中
4.區域
區域劃分: OSPF為了適應中大型網絡的環境,需要進行結構化部署。
如果只存在一個區域,這樣子的OSPF網絡我們稱為單區域OSPF網絡。
如果存在多個區域,這樣的OSPF網絡我們稱為多區域OSPF網絡。
區域劃分的目的:區域內部傳遞拓撲信息,區域之間傳遞路由信息 --- 鏈路狀態型協議的距離矢量特征。
區域邊界設備 : ABR ----其中一個必須宣告在區域0, 同時屬于多個區域,一個接口屬于一個區域。
區域之間可以存在多個ABR設備,一個ABR設備也可以屬于多個區域
區域劃分的要求 :1,區域之間必須存在ABR設備。2,區域劃分必須按照星型拓撲結構劃分。 ---- 中間的區域稱為骨干區域,其余非骨干,area 0(骨干區域的編號)==area 0.0.0.0 area 255 =area 0.0.0.255
區域需要圍繞中間骨干區域進行劃分,如果沒有圍繞中間區域,則這個區域便沒有連接上處于隔離狀態。
區域ID:為了方便對區域進行管理,我們給每一個區域設計了一個區域ID來進行標識 --- 由32位二進制構成 ---- 該參數可以使用兩種格式
來進行表示,十進制格式和點分十進制格式。 --- 骨干區域的區域ID被定義為0。
3.OSPF的數據包類型
helllo包-------- 用周期性的發現,建立以及保活鄰居關系(確認該信息沒有失效)
hello時間 --- 10S
Dead time --- 4倍的hello時間 --- 40s-------死亡時間-------即判定是否是失效信息
RID(路由IP) --- 區分和標識OSPF網絡中不同的路由器
1,全網唯一;2,格式統一 --- 采用IP地址的格式 --- 32位二進制構成,以點分十進制來進行表示
1,手工配置:只需要滿足以上兩個條件即可
2,自動獲取:首先,如果設備上配置有環回接口,則選擇其中最大的IP地址作為自己的RID。如果沒有環回接口,則在自己
的物理接口中選擇最大的IP地址作為自己的RID。最大的IP地址是將IP從前往后進行比較,選擇大的IP-----192.168.1.1和 192.168.2.1選擇2.1的IP
DBD包--------數據庫描述報文 --- 鏈路狀態數據庫收集LSA(鏈路狀態通告) --- 數據庫描述報文=鏈路狀態數據庫中LSA的目錄-----“菜單”
隱性確認-----
LSR包----------鏈路狀態請求報文 --- 基于DBD包,請求未知的LSA信息---------“點菜”
LSU包----------鏈路狀態更新報文 --- 真正攜帶LSA的數據包------------“上菜”
LSACK包-------鏈路狀態確認報文 --- 確認包----------“確認菜是否上對”
顯性確認-------
OSPF存在每30MIN一次的周期更新
4.OSPF的狀態機
Down狀態 --- 發送hello包之后,然后就會進入到下一個狀態------Init(初始化)狀態
Init(初始化)狀態 --- 在收到hello包中存在自己本地的RID則,進入到下一個狀態-----Two-way(雙向通信)狀態
Two-way(雙向通信)狀態 --- 標志著鄰居關系的建立。(條件匹配----篩選是否符合)失敗,則停留在鄰居狀態,僅使用Hello包進行周期保活。匹配成功,則進入到下一個狀態------Exstart(預啟動)狀態
?
Exstart(預啟動)狀態 --- 通過使用未攜帶數據的DBD包來進行主從關系的選舉,比較RID,RID大的為主,為主的可以優先
獲取LSA。主從關系選舉目的是為了錯開LSA的交換過程,減少同一時間的資源占用。
Exchange(啟動進行交換)狀態 --- 通過使用攜帶數據的DBD包來交換LSDB的摘要信息
DBD包------數據庫描述報文 --- 鏈路狀態數據庫收集LSA(鏈路狀態通告) --- 數據庫描述報文=鏈路狀態數據庫中LSA的目錄
Loading(加載)狀態 --- 通過使用LSR,LSU,LSACK包來獲取未知的LSA信息
LSR包----------鏈路狀態請求報文 --- 基于DBD包,請求未知的LSA信息---------“點菜”
LSU包----------鏈路狀態更新報文 --- 真正攜帶LSA的數據包------------“上菜”
LSACK包-------鏈路狀態確認報文 --- 確認包----------“確認菜是否上對”
FULL(轉發)狀態 --- 標志著鄰接關系的建立。只有鄰接狀態,才會交換LSA信息,而鄰居狀態僅收發hello包進行周期的保活。
5.OSPF的工作過程
1.順利的過程
1.啟動配置完成后,OSPF向本地所有運行協議的接口以組播224.0.0.5的形式發送hello包。hello包中需要攜帶本地已知鄰居的RID,之后,建立鄰居關系。我們會將所有的鄰居關系收集到本地的一張表中 --- 鄰居表。
2.鄰居表建立完成之后進行條件匹配(OSPF拓展),失敗則停留在鄰居關系,僅使用hello包保活。成功則開始建立鄰接關系。
3.首先使用未攜帶數據的DBD包進行主從關系選舉。之后,使用攜帶數據的DBD包共享數據庫目錄信息,使用LSR/LSU/LSACK來獲取未知的LSA信息,完成數據庫的建立 --- LSDB --- 數據庫表(主路由器會優先進入下一個狀態,會優先發送摘要進行比對,比對之后,會請求自己本地沒有的lsa信息。對端會發送真正攜帶lsa信息的LSU包,會利用LSACK進行確認。本地的鏈路狀態數據庫建立完成,生成本地鏈路數據庫表。)。
4.最后,基于本地的鏈路狀態數據庫生成有向圖,使用SPF算法計算最短路徑樹,計算出到達未知網段的路由信息,加載路由表中。
5.收斂完成后,依然每10s使用hello包進行保活。每30min進行一次周期更新。
2.不順利過程
結構突變
1,突然新增一個網段 --- 觸發更新,第一時間將變更信息通過LSU包發布出去,需要ACK確認
2,突然斷開一個網段 --- 觸發更新,第一時間將變更信息通過LSU包發布出去,需要ACK確認
3,無法通信 ---- dead time
6.OSPF基本配置命令
1.啟動OSPF進程
啟動前路由網關IP該配置還是要配置,不能省。
[r1】ospf 1 router-id 1.1.1.1 // 手工配置RID,RID沒有過多要求,隨便配置
[r1-ospf-1]
2.創建區域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3.宣告
宣告的作用:1,激活接口;2,發布路由
中間的是需要宣告的IP網段
反掩碼(最后的是掩碼) --- 由連續的0和連續1組成。0對應為不可變位,1對應可變位-------對宣告網段進行精準變大變小
0.0.0.0代表精準宣告,不可變,可精準宣告一個接口IP(RIP的宣告是只能是一個網段)
[r1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255 --- 0對應為不可變位,1對應可變位
[r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0-----0.0.0.0代表精準宣告,不可變,可精準宣告一個接口IP
4.查看鄰居表
[r1]display ospf peer
5.查看鄰居表簡表
[r2]display ospf peer brief
6.查看數據庫表
存儲著LSA數據的數據庫=地圖
[r1]display ospf lsdb
7. 展開一條LSA
某條LSA信息相當于地圖里的某一條路徑的信息
[r1]display ospf lsdb router 2.2.2.2 //router 2.2.2.2這兩個數據分別數據庫表中的前兩豎的信息,用來鎖定是哪一條LSA信息
8.查看路由表
[r2]display ip routing-table
9.優先級
(優先級)pre: OSPF在華為體系中默認的優先級為10--------------靜態路由默認優先級為60------------優先級數值越大優先級越小
Pre --- 優先級 --- 如果到達同一個目標網段存在多條路由時,則將比較他們的優先級,僅加載優先級最大的到路由表中 --- 優先級數值越大,優先級越低 --- 0 - 255 ---- 靜態路由的默認優先級:60
10.更改帶寬
以帶寬作為開銷的評判標準
COST = 參考帶寬 / 真實帶寬 ---- 華為體系內,參考帶寬的默認值為100Mbps
有兩條路線,上面的路線3跳但是是1000M速度,下面兩跳但是是100M,如果計算出來是一個小于1的數(上面是1000Mbps,則計算的值為100/1000=0.1<1),則直接為1,如果是一個大于1的小數,則直接取整數部分,此時明明上面路線更快,但是計算出來上面路線值卻為3,下面路線卻為2,最終選擇了下面沒有這么快的類路線;所以為了可以更合理的選取,就可以通過更改默認值實現。
[r1-ospf-1]bandwidth-reference 1000 //(1000不是固定值,而是更改的默認值)
更改后上面路線的值為3,下面的為20,最終實現了選擇最有效的路線
7.OSPF的條件匹配
1.條件匹配
鄰居表建立完成之后進行條件匹配,失敗則停留在鄰居關系,僅使用hello包保活。成功則開始建立鄰接關系。
在一個廣播域中,若所有的設備均建立鄰接關系,將會出現大量的重復更新,所以需要進行DR/BDR選舉,所有DROther之間僅維持鄰居
關系即可。(為了防止設備之間過多鄰接而導致造成信息過多重復,浪費資源的結果)
2.指定路由器
DR(接口)--------在一個廣播域內,DR與其余所以設備建立鄰接關系。在這一個廣播域內其他設備之間不再建立鄰接關系。
3.備份指定路由器
BDR(備份;也是接口)-------在一個廣播域內,DR與其余所以設備建立鄰接關系。作為DR的備份,在DR不工作錯誤時,進行替代。
這個圖中r3是DR設備
4.DR,BDR的選舉
1.先比較優先級,選擇優先級大的作為DR設備。選擇完DR之后,剩余設備繼續比較,選擇優先級最大的作為BDR設備,優先級默認情況
下都為1。如果將一個接口的優先級改為0,則代表該接口放棄DR和BDR選舉
2.如果優先級相同,則比較RID,RID大的設備所對應的接口為DR。選擇完DR之后,剩余設備繼續比較,RID大的設備所對應的接口BDR
3.DR/BDR的選舉是非搶占模式的。即一旦選舉成功,則不會因為后來加入設備而重新選舉。選舉時間為死亡時間。
4.優先級默認情況下都為1。如果將一個接口的優先級改為0,則代表該接口放棄DR和BDR選舉
5.然后所有設備重啟在40s內重新選舉生效,是重啟后40s(最大時間,可能1s,2s)內重新進行選舉
5.修改優先級
優先級默認情況下都為1。如果將一個接口的優先級改為0,則代表該接口放棄DR和BDR選舉
要想沒有BDR設備,就需要將所有路由器修改優先級為0;因為將將要成為DR設備更改優先級為更大后,該設備是會成為DR設備,但是依舊不會停止選舉BDR設備,因為那些剩余路由器在優先級相同情況下會比較IP大小來選舉BDR,只有將區域內所有除DR設備的設備優先級改為0,放棄選舉才不會有BDR設備
[r1-GigabitEthernet0/0/0]ospf dr-priority ?INTEGER<0-255> Router priority value //0-255是優先級范圍選取
[r1-GigabitEthernet0/0/0]ospf dr-priority 10
6.重啟OSPF進程
然后所有設備重啟后最大時間40s內重新選舉生效
<r1>reset ospf 1 process
7.是否鄰接關系建立
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[0]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init)
?
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[1]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=2Way)
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=AdjOk?, NeighborPreviousState=2Way, NeighborCurrentState=ExStart)
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=E
xchange)
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loa
ding)
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)
NeighborCurrentState=Full--------建立成功-----建立成功會出現上面一段話
一般建立成功都會出現上面一段話
這只是IP的其中一塊內容,IP還有更多內容可以查看IP專欄,H后一章內容為OSPF續章,可通過以下路徑查看IP-----動態路由OSPF(2)-CSDN博客,歡迎指正