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?
我目前會先這樣理解:
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 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 需要共同維護哪一張詳細地圖?
假設公司有很多 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 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 裡。
這時就輪到:
ABR
全名:
Area Border Router
假設 R2 同時有介面屬於 Area 1 和 Area 0。
那 R2 就扮演 ABR。
它站的位置很特別:
Area 1
↓
[R2]
↑
Area 0
所以我現在會把 ABR 想成:
站在兩個 OSPF Area 邊界上的 Router。
它不只是幫忙轉封包,也負責處理不同 Area 之間需要交換的 Routing Information。
這裡是我覺得最重要的地方。
如果最後 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
又叫:
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,而是 OSPF Interface 被設定在哪一個 Area。
例如:
R2 G0/0 → Area 1
R2 G0/1 → Area 0
所以同一台 Router 可以:
一邊面對 Area 1
一邊面對 Area 0
這也正是它能成為 ABR 的原因。
今天可以做一個非常小的 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 設定:
router ospf 1
network 10.1.12.0 0.0.0.3 area 1
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
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 的實際輸出。
不是。
VLAN 比較接近 Layer 2 Broadcast Domain 的切分。
而 OSPF Area 是 Link-State Routing Protocol 的階層化設計。
VLAN
≠
OSPF Area
雖然實際網路規劃時,它們可能會一起出現在同一份架構圖裡,但處理的是不同問題。
也不是。
一個 Area 裡可以有很多 Subnet。
Area 是把一群 OSPF Network 與 Router 組成一個 Link-State 範圍。
不是:
一個 Area = 一個 Subnet
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 越來越多時,怎麼還能有效率地共享路由資訊這件事。
不是。
Area 會影響 Link-State 資訊與 LSDB 的範圍,是 OSPF Scalability 的重要設計。
不需要。
Router 需要掌握自己 Area 的詳細 Link-State Topology;跨 Area 則透過 ABR 學習 Inter-Area Routing Information。
不是。
ABR 就是一台 OSPF Router,只是它有介面連接不同 Area。
正常的 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。