動態路由核心:OSPF (Open Shortest Path First) 運作原理
OSPF 是一種應用最廣泛的 內部閘道協定 (IGP),屬於 鏈路狀態 (Link-State) 路由協定。與傳統的距離向量協定(如 RIP)不同,OSPF 路由器會建立整個網路的完整地圖,從而計算出最短、最優的路徑。
OSPF 的核心概念:地圖繪製者
想像 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, 指定路由器): 負責收集網路上所有路由器的鏈路狀態資訊,並分發給所有其他路由器。
BDR (Backup Designated Router, 備份指定路由器): DR 的備份,一旦 DR 故障,BDR 會立即接替其工作。
其他人 (DROther): 只與 DR/BDR 建立鄰居關係。
這樣做的好處是:鏈路狀態資訊只需發送給 DR/BDR,而不是發送給網路上所有路由器,從而大幅減少 LSA 的泛洪 (Flooding) 流量。
鏈路狀態通告 (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 必須是完全同步的,因為這個資料庫構成了整個區域的拓撲圖。
總結來說:
發現 (Discovery): 使用 Hello 協定建立鄰居關係。
學習 (Learning): 透過 LSA 泛洪建立和同步 LSDB (網路地圖)。
計算 (Calculation): 使用 SPF 演算法 計算出最短路徑樹。
轉發 (Forwarding): 將最佳路徑安裝到路由表,用於轉發數據封包。