iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
IT Operation

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

Day 11|同一個網段很多台 OSPF Router,為什麼需要 DR / BDR?

  • 分享至 

  • xImage
  •  

Day 10 我把 OSPF 的主線先串成:

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

到這裡,我腦袋裡的拓撲一直很單純。

不是:

R1 ---- R2

就是:

R1 ---- R2 ---- R3

兩台 Router 之間一條線,看起來很乾淨。

但真實網路很常不是這樣。

假設一個 Ethernet LAN 上,同時接了四台 OSPF Router:

        R1
         |
R2 --- Switch --- R3
         |
        R4

四台 Router 明明都在同一個網段,也都能直接收到彼此送出的 OSPF Hello。

那新的問題就來了:

難道每一台 Router 都要跟其他每一台 Router 建立完整的 OSPF Adjacency,再彼此同步一次 LSDB 嗎?

如果 Router 越來越多,這件事看起來很快就會變得很吵。

這就是 DR / BDR 出場的地方。


先不要背 DR,先看「全部互連」會發生什麼

先假裝沒有 DR / BDR。

如果同一個 LAN 裡只有兩台 Router:

R1 ---- R2

完整鄰接關係只有一組:

R1 ↔ R2

沒什麼問題。

如果變成四台:

R1
R2
R3
R4

每一台都跟其他每一台建立完整 Adjacency,會變成:

R1 ↔ R2
R1 ↔ R3
R1 ↔ R4

R2 ↔ R3
R2 ↔ R4

R3 ↔ R4

總共六組。

如果是十台呢?

兩兩配對會變成:

10 × 9 ÷ 2 = 45

Router 數量一增加,完整鄰接關係不是只多一點點。

它會越長越快。

而 OSPF 建立 Adjacency 之後,不只是「知道你在這裡」而已,還要處理資料庫同步與 Link-State 資訊交換。

所以真正的問題不是:

Router 看不看得到彼此?

而是:

這麼多 Router 都在同一個共享網段時,有沒有必要每一對都建立完整同步關係?


DR:這個網段的主要協調者

在 Ethernet 這種 Broadcast Multi-Access Network 上,OSPF 會選出一台:

DR

全名:

Designated Router

我一開始看到 Designated Router,很容易想成:

它是不是整個 OSPF 網路的老大?

其實不是。

比較好的理解是:

DR 是針對這一個 multi-access network segment 選出來的協調角色。

例如:

        R1
       (DR)
      / | \
     /  |  \
   R2   R3  R4

R2、R3、R4 都會和 DR 建立完整鄰接關係。

這樣 Link-State 資訊的交換,就不用變成每一對 Router 都重複做一次完整同步。


那 BDR 又是什麼?

如果只有 DR,新的問題馬上出現:

DR 掛掉怎麼辦?

所以同一個網段還會再選一台:

BDR

全名:

Backup Designated Router

也就是 DR 的備援角色。

如果 DR 失效,BDR 可以接手 DR 的角色,接著網路再選出新的 BDR。

所以可以先把它想成:

DR
↓
目前主要協調者

BDR
↓
已經在旁邊準備好的備援協調者

這比「DR 是主 Router、BDR 是副 Router」更精確一點,因為它們的角色只是在這個 OSPF multi-access segment 上成立。


其他 Router 叫 DROTHER

沒有被選成 DR 或 BDR 的 Router,常會看到一個名稱:

DROTHER

例如:

R1 = DR
R2 = BDR
R3 = DROTHER
R4 = DROTHER

這裡最容易產生一個誤解:

DROTHER 之間是不是完全不認識彼此?

不是。

它們仍然可以透過 Hello 發現彼此,成為 Neighbor。

只是 DROTHER 和 DROTHER 之間通常不會建立到 FULL adjacency,常見狀態會停在:

2-WAY

而它們跟 DR / BDR 則可以建立:

FULL

所以:

Neighbor
≠
一定會變成 FULL Adjacency

這件事剛好把 Day 09 的觀念再補得更精確。


為什麼不是每一台都 FULL?

假設:

R1 = DR
R2 = BDR
R3 = DROTHER
R4 = DROTHER

R3 和 R4 都已經能透過 DR / BDR 參與這個 multi-access segment 的 OSPF 資訊交換。

因此不需要:

R3 ↔ R4 = FULL

也不需要每一台 Router 都對所有其他 Router 做一份完整 adjacency。

我現在會把 DR / BDR 的目的先記成:

在共享的 multi-access 網段中,降低完整鄰接與 Link-State 同步的複雜度。

不是因為其他 Router 不重要,而是因為沒有必要大家全部兩兩 FULL。


DR / BDR 是怎麼選的?

這裡開始出現考試很愛問的規則。

OSPF 在符合條件的 multi-access network 上選 DR / BDR 時,會先看:

OSPF interface priority

數字越高,越有機會被選。

如果 priority 一樣,再比較:

Router ID

Router ID 較高者勝出。

所以可以先記:

先比 Priority
↓
再比 Router ID

另外有一個很實用的規則:

Priority = 0

代表這個 interface 不參加 DR / BDR 選舉。


但 DR 選舉不是「看到更強的人就立刻換」

假設原本:

R1 priority 100 → DR
R2 priority 50  → BDR

後來才加入:

R3 priority 200

直覺會想:

200 最大,R3 應該馬上把 R1 擠掉吧?

OSPF 的 DR / BDR 選舉不是一直重新排名的設計。

已經選出的 DR / BDR 不會只因為後來加入一台 priority 更高的 Router,就立刻被搶走角色。

也就是常看到的:

DR / BDR election is non-preemptive

這很像會議主持人已經選好了,不會因為更資深的人晚到,就當場把主持人換掉。


DR / BDR 是整個 OSPF Domain 共用一組嗎?

不是。

這也是名稱很容易帶來的錯覺。

假設 R1 有兩個不同的 Ethernet segment:

LAN A
  |
 R1
  |
LAN B

R1 在 LAN A 上可能是 DR,但到了 LAN B,可能只是 DROTHER。

因為 DR / BDR 的角色是針對:

特定 multi-access network segment

來選的。

不是整個 OSPF Area 只有一台 DR,也不是整個公司只能有一台 DR。


Point-to-Point 為什麼不需要 DR / BDR?

再回到最簡單的拓撲:

R1 -------- R2

一條 Point-to-Point Link 上就兩台 Router。

這時根本沒有:

十台 Router 全部掛在同一個 LAN

這種「大家要不要兩兩 FULL」的問題。

所以 Point-to-Point Network 不需要靠 DR / BDR 來解決 multi-access adjacency 的複雜度。

這也幫我建立一個比較重要的判斷方式:

不要看到 OSPF 就立刻想到 DR / BDR;先看這個介面的 network type。


224.0.0.5 和 224.0.0.6 又是誰?

讀 OSPF 時常會看到兩個 Multicast Address:

224.0.0.5
224.0.0.6

先不用把所有封包類型背完,只抓角色。

224.0.0.5

AllSPFRouters

代表這個 link 上的所有 OSPF Router。

224.0.0.6

AllDRouters

主要對 DR / BDR 使用。

所以我現在先記:

.5 → 所有 OSPF Router
.6 → DR / BDR

它們不是隨機出現的兩個 Multicast IP。


可以用哪些 Cisco 指令看?

這篇目前先整理理論,Packet Tracer 實作我會標成待驗證。

看 Neighbor 與角色

show ip ospf neighbor

可以看到鄰居狀態,常會出現:

FULL/DR
FULL/BDR
2WAY/DROTHER

看介面的 OSPF 狀態

show ip ospf interface

可以觀察 Network Type、State、Designated Router、Backup Designated Router 和 Router Priority。

改 OSPF Priority

在介面設定:

ip ospf priority 0

可以讓該介面不參與 DR / BDR 選舉。

待驗證: 後續可在 Packet Tracer 建四台 Router 接同一台 Switch,比較不同 priority 下的 DR / BDR 選舉,以及 DROTHER 彼此停在 2-WAY 的狀態。


把 Day 09、10、11 接起來

現在 OSPF 的故事又完整一點:

Hello
  ↓
發現 Neighbor
  ↓
判斷是否建立完整 Adjacency
  ↓
如果是 Broadcast Multi-Access Network
  ↓
選 DR / BDR
  ↓
DROTHER 與 DR / BDR 建立 FULL Adjacency
  ↓
交換 Link-State 資訊
  ↓
LSA
  ↓
LSDB
  ↓
SPF
  ↓
Routing Table

所以 Day 09 的:

Neighbor → Adjacency

其實中間還有條件。

不是看到 Neighbor 就一定 FULL,而是 OSPF 會依網路類型與角色,決定哪些鄰居需要建立完整 adjacency。


最容易搞錯的幾件事

誤解 1:DR 是整個 OSPF 網路的老大

不是。

DR / BDR 是在特定 multi-access segment 上的角色。

同一台 Router 在不同介面上,可以有不同角色。

誤解 2:DROTHER 彼此完全不認識

不是。

它們仍然可以是 Neighbor,只是彼此通常停在 2-WAY,不需要建立 FULL adjacency。

誤解 3:Priority 最大的人永遠會立刻變 DR

不是。

DR / BDR 選舉是 non-preemptive。

後來才加入的高 priority Router,不會自動把現任 DR 擠掉。

誤解 4:所有 OSPF Link 都需要 DR / BDR

不是。

DR / BDR 是為 multi-access network 的問題而存在。

Point-to-Point Link 沒有這個需求。


Day 11 我真正要記住的

如果今天只留一句話:

DR / BDR 是 OSPF 在共享 Ethernet 網段上,用來避免所有 Router 都彼此建立完整 adjacency 的協調機制。

我現在會把四個角色這樣記:

DR
↓
這個 segment 的主要協調者

BDR
↓
DR 的備援

DROTHER
↓
仍然是 OSPF Router,也會成為 Neighbor
但不需要彼此全部 FULL

Priority / Router ID
↓
決定 DR / BDR 選舉的重要條件

而最重要的不是把三個縮寫背起來,而是知道它們為什麼會出現:

共享 LAN 上 Router 越來越多
↓
全部兩兩 FULL 太複雜
↓
OSPF 選出 DR / BDR
↓
把完整 adjacency 的結構收斂

Day 11 過關標準

為什麼 Broadcast Multi-Access Network 需要 DR / BDR?

因為同一個共享網段可能有很多 OSPF Router;如果所有 Router 都彼此建立完整 adjacency,鄰接與資料庫同步的複雜度會快速增加。

DROTHER 彼此是不是完全沒有 Neighbor Relationship?

不是。

它們仍然可以是 Neighbor,只是通常不會彼此建立 FULL adjacency。

DR / BDR 怎麼選?

先看 OSPF interface priority;相同時再比較 Router ID。

Priority 0 不參與 DR / BDR 選舉。

後加入一台更高 Priority 的 Router,會立刻搶走 DR 嗎?

不會。

DR / BDR 選舉是 non-preemptive。

Point-to-Point Link 需要 DR / BDR 嗎?

不需要。

因為它沒有多台 Router 共用同一個 multi-access segment 的問題。


今天的一句話

DR / BDR 不是 OSPF 的「總隊長」,而是某個共享網段裡,專門把鄰接與 Link-State 交換整理得不要那麼亂的角色。

下一個問題也很自然。

現在我們已經知道 OSPF 可以讓 Router 拼出拓撲。

但如果企業網路越來越大:

幾十台 Router
↓
幾百條 Link
↓
LSDB 越來越大
↓
SPF 計算也越來越複雜

難道所有 Router 都要知道整個 OSPF Domain 的每一個細節嗎?

接下來就會碰到:

Area
Area 0
ABR

也就是:

OSPF 為什麼還要切 Area?


上一篇
Day 10|OSPF 到底交換了什麼?LSA、LSDB、SPF 怎麼把整張網路拼起來?
下一篇
Day 12|OSPF 為什麼還要切 Area?Area 0、ABR 到底在做什麼?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言