iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
IT Operation

網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來系列 第 12 篇

Day 12|OSPF 為什麼還要切 Area?Area 0、ABR 到底在做什麼?

  • 分享至 

  • xImage
  •  

Day 11 最後留了一個問題。

前面一路學 OSPF,我腦袋裡大概已經可以跑出這條流程:

Hello
↓
Neighbor
↓
Adjacency
↓
LSA
↓
LSDB
↓
SPF
↓
Routing Table

如果同一個 Ethernet 網段裡 Router 很多,還有 DR / BDR 幫忙,不需要大家全部兩兩建立 FULL Adjacency。

看起來好像很完整了。

但我突然發現一件事。

假設公司只有幾台 Router:

R1 --- R2 --- R3

每台 Router 都知道整張網路長什麼樣,好像沒什麼。

可是如果今天不是三台,而是:

50 台 Router
200 個 Network
一大堆 Link

甚至是一間有總公司、工廠、分公司的企業。

如果全部都塞在同一個 OSPF 世界裡:

每一台 Router 都真的需要知道整個公司的每一條 Link 嗎?

而且只要其中一條 Link 發生變化,LSA 又要 Flood、LSDB 又要更新、SPF 又可能要重新計算。

這樣規模一直長下去,好像哪裡怪怪的。

這就是今天要搞懂的東西:

OSPF 為什麼需要 Area?


先給 30 秒版本

我目前會先這樣理解:

Area 是把一個很大的 OSPF 網路拆成數個較小的 Link-State 世界。

同一個 Area 裡的 Router,會掌握這個 Area 的詳細拓撲。

不同 Area 之間,則透過:

ABR

也就是:

Area Border Router

互相交換路由資訊。

而:

Area 0

是 OSPF 的 Backbone Area。

正常的 Multi-Area OSPF 設計會變成:

Area 1
   |
  ABR
   |
Area 0
   |
  ABR
   |
Area 2

所以不是:

所有 Router
全部知道所有地方的所有細節

而比較像:

自己的 Area
→ 我很熟

其他 Area
→ 我知道怎麼去

這個差別就是 OSPF 從小型網路走向比較大型網路的重要一步。


我原本以為 Area 只是「分組」

第一次看到:

area 0
area 1
area 2

我其實會把它想得很像 VLAN 10、VLAN 20、VLAN 30,反正就是給不同東西編一個號碼。

甚至會覺得:

Area 0、Area 1 不就是分類而已嗎?

但這樣理解太淺了。

OSPF Area 真正處理的是:

Link-State 資訊要散播到多大的範圍。

這就會直接影響:

LSA Flooding
LSDB 大小
SPF 計算

所以它不是單純把 Router 貼不同顏色的標籤。

它是在決定:

哪些 Router 需要共同維護哪一張詳細地圖?


先假設完全不切 Area

假設公司有很多 Router,而且全部都放在 Area 0。

概念上,所有 Router 都活在同一個 Link-State Domain 裡。

例如其中一條 Link 發生變化:

Link Down
↓
產生新的 Link-State 資訊
↓
在 Area 裡 Flood
↓
Router 更新 LSDB
↓
必要時重新執行 SPF

如果網路很小,沒什麼。

可是規模越來越大時:

更多 Router
+
更多 Link
+
更多拓撲變化
=
更多需要處理的 Link-State 資訊

所以 OSPF 才需要一個階層化的方法。

也就是:

Multi-Area OSPF

Area 到底切開了什麼?

假設我們把網路改成:

       Area 1
     R1 --- R2
            |
           ABR
            |
       ========
        Area 0
       ========
            |
           ABR
            |
     R5 --- R6
       Area 2

現在 Area 1 裡面發生一個拓撲變化。

Area 1 裡面的 Router 需要知道詳細變化,因為它們要共同建立這個 Area 的 Link-State Database。

但是 Area 2 裡面的 Router,不一定需要知道 Area 1 裡面每一條 Link 到底怎麼接。

它真正需要的是:

如果我要去 Area 1 的某個 Network,路要往哪裡走?

突然就出現兩種不同層級的資訊:

Area 內
↓
詳細拓撲

Area 外
↓
到那個 Area/Network 的路由資訊

這就是我以前一直沒有建立起來的畫面。

OSPF 並不是要求每台 Router 都拿到整個 OSPF Domain 的完整詳細地圖。

它可以把詳細拓撲控制在 Area 裡。


那誰負責接 Area?

這時就輪到:

ABR

全名:

Area Border Router

假設 R2 同時有介面屬於 Area 1 和 Area 0。

那 R2 就扮演 ABR。

它站的位置很特別:

Area 1
  ↓
 [R2]
  ↑
Area 0

所以我現在會把 ABR 想成:

站在兩個 OSPF Area 邊界上的 Router。

它不只是幫忙轉封包,也負責處理不同 Area 之間需要交換的 Routing Information。


ABR 不是把整份 LSDB 複製給隔壁 Area

這裡是我覺得最重要的地方。

如果最後 ABR 做的只是:

Area 1 的完整 LSDB
↓
全部複製
↓
Area 0
↓
全部再複製
↓
Area 2

那 Area 根本沒有解決問題。

所以 Multi-Area 的核心不是把 LSDB 分幾次傳,而是:

每個 Area 維持自己的詳細 Link-State 資訊,再由 ABR 處理 Area 之間的 Routing Information。

例如 Area 2 的 Router 想去 10.1.0.0/16,它真正需要知道的是怎麼到那個 Network。

至於 Area 1 裡每條 Link 的所有內部細節,不需要全部塞進 Area 2 每一台 Router 的腦袋。

這樣一來:

Area
↓
限制詳細 Link-State 資訊的範圍
↓
ABR
↓
負責 Area 之間的 Routing Information

OSPF 才真的開始有階層。


Area 0 為什麼這麼特別?

接著出現一個以前只會背的名詞:

Area 0

又叫:

Backbone Area

我以前的記憶大概只有:

OSPF 一定要有 Area 0。

但「為什麼」完全沒畫面。

如果讓很多 Area 任意互接,Area 越多,Area 之間的關係也會越複雜。

所以 OSPF 採用一個 Backbone 的設計。

正常情況會像:

Area 1
   |
  ABR
   |
Area 0
   |
  ABR
   |
Area 2

Area 0 變成各個 Area 交換 Inter-Area Routing Information 的核心。

所以:

Area 0 不是因為數字 0 比較厲害,而是它被 OSPF 定義成 Backbone Area。


一台 Router 可以同時待在兩個 Area 嗎?

更精確地說,不是整台 Router 只能屬於某一個 Area,而是 OSPF Interface 被設定在哪一個 Area。

例如:

R2 G0/0 → Area 1
R2 G0/1 → Area 0

所以同一台 Router 可以:

一邊面對 Area 1
一邊面對 Area 0

這也正是它能成為 ABR 的原因。


做一個最小 Packet Tracer 實驗

今天可以做一個非常小的 Multi-Area OSPF:

R1 -------- R2 -------- R3

   Area 1        Area 0

其中:

R1 ↔ R2
Area 1

R2 ↔ R3
Area 0

R2 就會是 ABR。

例如網段:

R1 --- 10.1.12.0/30 --- R2

R2 --- 10.0.23.0/30 --- R3

概念上的 OSPF 設定:

R1

router ospf 1
 network 10.1.12.0 0.0.0.3 area 1

R2

router ospf 1
 network 10.1.12.0 0.0.0.3 area 1
 network 10.0.23.0 0.0.0.3 area 0

R3

router ospf 1
 network 10.0.23.0 0.0.0.3 area 0

可以觀察:

show ip ospf
show ip ospf neighbor
show ip ospf database
show ip route ospf

我特別想觀察 Routing Table 裡 O 和 O IA 到底有什麼差別。

待驗證: 上面的 Multi-Area 拓撲後續實際在 Packet Tracer 跑一次,再記錄 show ip route ospf 與 show ip ospf database 的實際輸出。


Area 和 VLAN 是同一件事嗎?

不是。

VLAN 比較接近 Layer 2 Broadcast Domain 的切分。

而 OSPF Area 是 Link-State Routing Protocol 的階層化設計。

VLAN
≠
OSPF Area

雖然實際網路規劃時,它們可能會一起出現在同一份架構圖裡,但處理的是不同問題。


Area 和 Subnet 也是同一件事嗎?

也不是。

一個 Area 裡可以有很多 Subnet。

Area 是把一群 OSPF Network 與 Router 組成一個 Link-State 範圍。

不是:

一個 Area = 一個 Subnet

把 Day 08 到 Day 12 串起來

Day 08
Static Route 太多
↓
需要 Dynamic Routing
↓
OSPF

Day 09
Router 怎麼互相認識?
↓
Hello
Neighbor
Adjacency

Day 10
認識之後交換什麼?
↓
LSA
LSDB
SPF
Routing Table

Day 11
共享 Ethernet 上 Router 太多怎麼辦?
↓
DR
BDR
DROTHER

Day 12
整個 OSPF 網路太大怎麼辦?
↓
Area
Area 0
ABR

以前我會把 OSPF、DR、BDR、LSA、Area 0、ABR 背成不同考點。

現在比較像同一個故事:

OSPF 一直在處理 Router 越來越多時,怎麼還能有效率地共享路由資訊這件事。


最容易搞錯的地方

誤解 1:Area 只是幫 Router 分類

不是。

Area 會影響 Link-State 資訊與 LSDB 的範圍,是 OSPF Scalability 的重要設計。

誤解 2:所有 Router 都必須知道整個 OSPF Domain 的完整拓撲

不需要。

Router 需要掌握自己 Area 的詳細 Link-State Topology;跨 Area 則透過 ABR 學習 Inter-Area Routing Information。

誤解 3:ABR 是一種特殊硬體

不是。

ABR 就是一台 OSPF Router,只是它有介面連接不同 Area。

誤解 4:Area 1 可以隨便接 Area 2 就好

正常的 Multi-Area OSPF 架構會以 Area 0 作為 Backbone。


如果今天只記得一件事

OSPF Area 是把一個大型 Link-State 網路拆成較小的拓撲範圍;Area 內保留詳細地圖,ABR 負責 Area 之間的 Routing Information,而 Area 0 是 Multi-Area OSPF 的 Backbone。


下一個「為什麼」

但現在又出現一個新問題。

我剛剛一直說:

ABR 不會單純把另一個 Area 的整份 LSDB 搬過來。

那它到底怎麼告訴 Area 0:

Area 1 裡有這些 Network

又怎麼讓另一個 Area 知道:

去 Area 1 的路在這邊

這時候又會遇到:

LSA Type 1
LSA Type 2
LSA Type 3

所以下一篇真正想問的是:

LSA 明明都是 Link-State Advertisement,為什麼還要分 Type 1、2、3?哪些可以跨 Area,哪些不能?

看來 LSA 這個洞還沒有挖完 XD。



上一篇
Day 11|同一個網段很多台 OSPF Router,為什麼需要 DR / BDR?
下一篇
Day 13|LSA 都叫 LSA,為什麼還要分 Type 1、2、3?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言