OSPF工作原理鄰接-數據庫

OSPF 協議概述:(open shortest path first - 最短路徑優先)

 OSPF在不同的路由器之間,通過互相傳遞各自的路由條目,以
 保證全網的所有的設備,具備相同的路由信息。

 運行 OSPF 的路由器,會以組播的方式週期性的發送 OSPF Hello 報文,
 用於 OSPF 鄰居關係的建立。
    -週期時間 : 10s
    -組播地址 : 224.0.0.5 ->表示的是所有的 OSPF 路由器。
    - OSPF 屬於 OSI 模型第 3 層 ; 
    - 在 IP 頭部中使用的協議號 是: 89

網絡類型
1.broadcast
2.NBMA
3.p2p
4.p2mp

OSPF工作過程:

1、建立鄰居表 :考慮鄰居的建立過程以及影響因素

2、同步數據庫 :考慮數據庫同步的過程以及穩定性

3、計算路由表 :每一個路由器都會基於“自己的”數據庫信息,
                獨立的進行路由的計算。(路由器使用的 SPF) 

OSPF 的報文類型:
1、hello -- 用於 OSPF 鄰居的建立、維護 以及 拆除
2、DBD(DD) -- database description ,數據庫描述報文
3、LSR -- link state request , 鏈路狀態 請求 報文--數據庫條目
4、LSU -- link state update , 鏈路狀態 更新 報文--數據庫條目
5、LSAck -- link state ack ,鏈路狀態 確認 報文

DBD 關鍵字段 描述:
I - init ,該標記如果爲1,表示的是該 DBD 報文是 “第一個DBD”。
通過第一個 DBD 報文的比較,用來確定 主從關係;
M - more , 該標記如果爲1,表示後面還有更多的 DBD報文,也就是
該 DBD 報文不是最後一個 DBD ,那麼此時不應該進行
後續的 Loading,此時是在exchange 階段.
MS- master/slve,該標記如果爲1,表示該路由器是 主路由,如果是0
表示該路由器是從路由。
一旦主從關係確定以後,那麼從路由器發送的 DBD 報文的
序列號要跟着主路由器的 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
【修改網絡類型】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章