iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
自我挑戰組

日誌檢查學習自我挑戰系列 第 17

DAY17:OSPF (Open Shortest Path First) 運作原理

  • 分享至 

  • xImage
  •  

動態路由核心:OSPF (Open Shortest Path First) 運作原理
OSPF 是一種應用最廣泛的 內部閘道協定 (IGP),屬於 鏈路狀態 (Link-State) 路由協定。與傳統的距離向量協定(如 RIP)不同,OSPF 路由器會建立整個網路的完整地圖,從而計算出最短、最優的路徑。
OSPF 的核心概念:地圖繪製者
想像 OSPF 路由器是一群地圖繪製者。每臺路由器不只是告訴鄰居「我能去哪裡」(像距離向量協定),而是告訴所有人「我的周邊是什麼樣的」(鏈路狀態)。

  1. 鄰居關係建立 (Neighbor Adjacency)
    OSPF 運作的第一步是找到並確認鄰居路由器,並與之建立穩定的關係。

A. Hello 協定

用途: OSPF 路由器使用 Hello 封包 來發現鄰居並維持鄰居關係。Hello 封包週期性地在 OSPF 介面上發送(預設 10 秒)。
關鍵匹配項: 兩臺路由器必須在以下項目上達成一致,才能建立鄰居關係:
Hello/Dead Intervals: 兩端的計時器必須匹配。
Area ID: 兩端必須屬於同一個 OSPF 區域。
Authentication: 認證方式和密碼必須匹配。
Subnet Mask: 在廣播 (Broadcast) 和非廣播多點存取 (NBMA) 網路上必須匹配。
狀態機: OSPF 鄰居關係會經歷多個狀態(Down → Init → Two-Way → ExStart → Exchange → Loading → Full)。只有達到 Full (完全) 狀態,它們才開始交換路由資訊。

B. DR/BDR 選舉 (在多點存取網路上)

在乙太網路(多點存取網路)上,為了減少訊務量,OSPF 會選出兩臺特殊的路由器:
DR (Designated Router, 指定路由器): 負責收集網路上所有路由器的鏈路狀態資訊,並分發給所有其他路由器。

  1. BDR (Backup Designated Router, 備份指定路由器): DR 的備份,一旦 DR 故障,BDR 會立即接替其工作。

  2. 其他人 (DROther): 只與 DR/BDR 建立鄰居關係。

  3. 這樣做的好處是:鏈路狀態資訊只需發送給 DR/BDR,而不是發送給網路上所有路由器,從而大幅減少 LSA 的泛洪 (Flooding) 流量。

  4. 鏈路狀態通告 (LSA) 與資料庫同步
    一旦鄰居關係達到 Full 狀態,路由器就會開始交換網路拓撲資訊。

A. LSA (Link-State Advertisement)

定義: LSA 是 OSPF 用來描述網路拓撲片段的資料結構。每臺路由器發送的 LSA 描述了它自己的鏈路狀態、成本(Metric)以及它連線的網路類型。
LSA 泛洪 (Flooding): 路由器將 LSA 封裝在 LSU (Link-State Update) 封包中,可靠地傳送給所有鄰居。鄰居收到後會回覆 LSAck (Link-State Acknowledgement),並將 LSA 轉發給它們的其他鄰居,直到整個區域 (Area) 內的所有路由器都收到。

B. LSDB (Link-State Database)

定義: 每臺 OSPF 路由器都會儲存所有收到的 LSA 副本,這個資料庫被稱為 鏈路狀態資料庫 (LSDB)。
同步性: 在一個 OSPF 區域內,所有路由器的 LSDB 必須是完全同步的,因為這個資料庫構成了整個區域的拓撲圖。

  1. 最短路徑優先演算法 (SPF)
    當 LSDB 同步完成後,路由器就擁有了完整的網路地圖。接下來,它使用 Dijkstra 演算法(也稱為 SPF 演算法)來計算到達每個目的地的最短路徑。
    計算過程:
    每臺路由器將自己設定為樹的「根」。
    它根據 LSDB 中的資訊和鏈路成本(通常基於頻寬計算),計算出從自己到網路上所有其他目的地的最短路徑。
    這個計算結果形成一棵 SPF 樹。
    路由表生成: 最終,根據 SPF 樹計算出的最短路徑及其成本,被安裝到路由器的 IP 路由表 中,用來進行實際的封包轉發。

總結來說:
發現 (Discovery): 使用 Hello 協定建立鄰居關係。
學習 (Learning): 透過 LSA 泛洪建立和同步 LSDB (網路地圖)。
計算 (Calculation): 使用 SPF 演算法 計算出最短路徑樹。
轉發 (Forwarding): 將最佳路徑安裝到路由表,用於轉發數據封包。


上一篇
Day15:DHCP 與 DNS的日誌檢查
下一篇
Day18:One-Arm vs. Two-Arm
系列文
日誌檢查學習自我挑戰18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言