OSPF工作原理鄰接-數據庫
OSPF在不同的路由器之間,通過互相傳遞各自的路由條目,以
保證全網的所有的設備,具備相同的路由信息。
運行 OSPF 的路由器,會以組播的方式周期性的發送 OSPF Hello 報文,
用於 OSPF 鄰居關系的建立。
-周期時間 : 10s
-組播地址 : 224.0.0.5 ->表示的是所有的 OSPF 路由器。
- OSPF 屬於 OSI 模型第 3 層 ;
- 在 IP 頭部中使用的協議號 是: 89
網絡類型
1.broadcast
2.NBMA
3.p2p
OSPF工作過程:
1、建立鄰居表 :考慮鄰居的建立過程以及影響因素
2、同步數據庫 :考慮數據庫同步的過程以及穩定性
3、計算路由表 :每一個路由器都會基於“自己的”數據庫信息,
獨立的進行路由的計算。(路由器使用的 SPF)
OSPF 的報文類型:
1、hello -- 用於 OSPF 鄰居的建立、維護 以及 拆除
2、DBD(DD) -- database description ,數據庫描述報文
3、LSR -- link state request , 鏈路狀態 請求 報文--數據庫條目
4、LSU -- link state update , 鏈路狀態 更新 報文--數據庫條目
DBD 關鍵字段 描述:
I - init ,該標記如果為1,表示的是該 DBD 報文是 “第一個DBD”。
通過第一個 DBD 報文的比較,用來確定 主從關系;
M - more , 該標記如果為1,表示後面還有更多的 DBD報文,也就是
該 DBD 報文不是最後一個 DBD ,那麽此時不應該進行
後續的 Loading,此時是在exchange 階段.
MS- master/slve,該標記如果為1,表示該路由器是 主路由,如果是0
表示該路由器是從路由。
一旦主從關系確定以後,那麽從路由器發送的 DBD 報文的
序列號要跟著主路由器的 DBD 序列號進行變化,從而實現
DBD Sequence , DBD報文序列號。每個路由器發送的第一個 DBD 的序列號
是隨機的。一旦確定主從關系,那麽從路由器的 DBD 的序列號
要隨著主路由器的變化。從而實現 DBD 報文的“可靠”傳輸。
OSPF 數據庫 :
-
OSPF 的數據庫是通過“區域”進行隔離和組織的。
- 不同 的區域,數據庫內容是不同的。
-
不同 的區域,數據庫的內容是完全隔離的。
- 不同 的區域中的鏈路的變化,所造成的影響,僅僅在一個區域內部
不會影響到其他區域。 -
劃分區域以後,每個區域中的路由器的數據庫就會大大的減小,從而
節省每個路由器的內存占用率。 - 同一個區域的路由器的數據庫,必須是完全一致的。
OSPF 數據庫中包含的內容,稱之為 LSA (link-state advertisement)
即,鏈路狀態通告。
OSPF 就是通過各種類型的 LSA 將路由器計算出來的。
使用的 LSA 的類型不同,那麽計算出來的 路由的類型,也就不同。
LSA 條目結構:
type : 表示的是 LSA 的類型 (1/2/3/4/5/7)
link-id:表示的是 LSA 的名字 ,並且不同類型的LSA的名字的表示是不同。
advrouter:表示的是 advertise router ,即通告路由器,也就是產生該LSA
的路由器的名字
age:表示的 LSA 的存活時間,以秒為單位,並且正計時。最大值為 3600s。
如果存活時間變成了3600s,表示該 LSA 不可用,就必須在數據庫中刪除。
為了保證 LSA 不會因為時間的正常計時導致誤刪,
所以,我們需要在 LSA 達到 最大 age 之前,發送一個“新的” LSA。
該新的 LSA,每1800s產生並發送一次;
該新的 LSA,只能由 LSA 的 advrouter 產生。
當其他路由器收到這個“新的LSA”以後,就會將自己的 age 計時器清0,
重新計時。
【OSPF數據庫刷新機制:1800s】
lenght:表示的是該 LSA 的報文長度。
sequence:序列號。表示的是 LSA 的新舊程度。 LSA 每變化一次,序列號都會
加1,即序列號越大,表示越新。
觀察比較同一個區域中的所有的 LSA 的序列號,不同的序列號
之間的差異,應該是越小越好。
metric:度量值,表示的是該 LSA 的產生路由器到達該 LSA 表示的網段
的距離。
1類LSA - router LSA ,
任何一個 OSPF 路由器,都會在任何一個自己連接的區域,
產生一個 router lsa 。相當於每一個路由器在每一個區域
自我介紹
2類LSA - network LSA
只能由 DR 產生
# 用來對同一個“網段”中的路由器,宣告 DR 的管理範圍的。
3類LSA - summary abr
只能由 ABR 產生
# 用來表示不同區域之間的路由信息的。
4類LSA - summary asbr
由與 ASBR 在同一個區域的 ABR 產生的。
#用來在不同的區域之間傳輸“ASBR的router-id”。
5類LSA - exteral LSA
只能由 ASBR 來產生
# 用來表示 OSPF 的外部路由;
OSPF 鄰居建立影響因素:(本質上是在分析 hello 中的參數)
1.router-id 不能相同。
2.area-id 必須相同。
3.認證必須相同(類型以及密碼都得相同)
4.子網掩碼必須相同(特殊情況下)
5.hello-timer 必須相同
6.dead-timer 必須相同
7.特殊標記位,必須相同(option-代表的是OSPF路由器的能力)
8.端口優先級不能全為0(特殊情況下)
--- 特殊情況下 ----
OSPF 網絡中需要選舉 DR/BDR 的情況下,就是這裏所謂的“特殊情況”下
DR:指定路由器
BDR:備份的指定路由器
OSPF 鄰接關系的建立過程:
0、down - 該狀態下,down 沒有啟用 OSPF 協議。
1、init - 初始化狀態。表示的是本地路由器接收到了對方發送
過來的 hello報文;
2、two-way - 雙向通信狀態。表示的是本地路由器接收到了對方發送
過來的 hello 報文,並且在該報文中發現了自己的RID;
如果該網絡類型中需要選舉DR/BDR,則在該階段進行。
3、exstart - 交換初始化狀態。在該狀態下,雙方路由器都會發送第一個
DBD報文,為的就是選舉一個主/從關系,主要目的就是為了
實現 “數據庫同步”的可靠性和高效性。
[DBD報文中包含的是數據庫中的條目的基本信息]
4、exchange - 交換狀態。在該階段,主從路由器會進行 DBD 報文的
互相傳輸,最終實現兩邊數據庫的比對工作。
5、loading - 加載狀態。在該狀態下,主從路由器就會通過 LSR和LSU
進行 “數據庫條目”的請求和發送,並通過 LSAck 報文
對該過程進行確認。
6、full - 完全鄰接。即此時鄰居路由器之間的數據庫完全一致。
OSFP 的基本配置命令:
[R1]ospf 1 router-id 1.1.1.1
【該路由器的ID】
[R1-ospf-1]area 0
【區域0--主幹區域】
[R1-ospf-1-0.0.0.0]network 192.168.1.0 0.0.0.255
【進行宣告網段】
[R1]display ospf peer brief
【查看OSPF的鄰居表】
[R1]reset ospf process
【重啟OSPF進程】
[R1-GigabitEthernet0/0/2]ospf dr-priority 10
【修改OSPF的優先級--默認是1】
[R1-GigabitEthernet0/0/2]ospf network-type p2p
【修改網絡類型】
OSPF工作原理鄰接-數據庫