1. 故事
按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。
序幕:溫習一下
第 1 步/共 11 步
Static Route 的煩惱
上次,網絡管理員人手在我的地圖加了一條 Static Route(靜態路由),我就知道工作室怎樣去。可是網線一斷,Static Route 不會自己更新,小比就被送進死胡同。
動畫文字版(全部步驟)
- 序幕:溫習一下
- Static Route 的煩惱 路路:上次,網絡管理員人手在我的地圖加了一條 Static Route(靜態路由),我就知道工作室怎樣去。可是網線一斷,Static Route 不會自己更新,小比就被送進死胡同。
- 第一幕:三部 Router 的三角形
- 多了店舖 Router 路路:網線修好了。隔壁的店舖也有一部 Router,我們三部兩兩相連,成為一個三角形。這樣去工作室就有兩條路:直接去,或者經店舖繞過去。
- 每條連線都有一個 Cost(成本):代表「距離」,通常線越快,Cost 越低
- 這個故事中,三條線的 Cost 都設為 10
- 阿帕教授:兩種交換情報的方法 阿帕教授:在很久很久以前……Router 之間已經懂得自動交換情報,這叫 Dynamic Routing(動態路由)。早期的 RIP 只告訴鄰居「我去那裡要經過多少部 Router」;1989 年出現的 OSPF 更聰明:讓每部 Router 都擁有整張地圖。
- Distance Vector(距離向量):只聽鄰居說「還有幾遠」,例如 RIP
- Link State(鏈路狀態):每部 Router 都有完整地圖,自己計算,例如 OSPF
- OSPF 全名:Open Shortest Path First(開放最短路徑優先)
- 第一步:Hello,鄰居! 路路:開機後,我們每部 Router 定時向鄰居發出 Hello 訊息:「我在這裡!」互相收到 Hello,就成為鄰居。之後大約每 10 秒再打一次招呼,確認大家還在。
- Dead Interval(失效時間):40 秒收不到 Hello,就當鄰居已經失去聯絡
- 第二步:交換情報 LSA 小比:接著,每部 Router 把自己的情況寫成 LSA(鏈路狀態通告):「我連著哪些網絡、哪些鄰居,每條線 Cost 多少。」LSA 會傳遍所有 Router。
- 家中路路的 LSA:「我連著
192.168.1.0/24;鄰居:工作室(Cost 10)、店舖(Cost 10)」
- 家中路路的 LSA:「我連著
- 第三步:同一張地圖 路路:所有 LSA 拼起來,就是一張完整的地圖,叫 LSDB(鏈路狀態資料庫)。我們三部 Router 手上的 LSDB 一模一樣。
- 第四步:計算最短的路 路路:每部 Router 用 SPF(最短路徑優先) 演算法計算。我去工作室:直接去 Cost 10;經店舖 Cost 20。直接去較近,於是寫進我的 Routing Table(路由表)。
- 家中 → 工作室:10 ← 最低
- 家中 → 店舖 → 工作室:10 + 10 = 20
- SPF 又叫 Dijkstra 演算法,1956 年由 Edsger Dijkstra 想出
- 第二幕:網線又斷了
- 發現問題 路路:家中和工作室之間的網線又斷了!我和工作室 Router 立即發現 Port 失去訊號。如果是對方靜靜當機,我們就要等 40 秒收不到 Hello 才會知道。
- 發出新的 LSA 小比:路路立即發出新的 LSA:「我和工作室之間的連線沒有了!」工作室 Router 也一樣。店舖 Router 收到後,大家更新 LSDB,重新計算 SPF。
- 自動改道 路路:新的計算結果:去工作室要經店舖,Cost 20。我自動更新 Routing Table,小比改走新路線。整個過程,沒有人需要動手!
- 新路線:家中 → 店舖 → 工作室(Cost 20)
- 網線修好後,又會自動改回 Cost 10 的直接路線
- 總結:路路們的情報網 阿帕教授:OSPF 四部曲:Hello 認識鄰居、LSA 交換情報、拼出同一個 LSDB、用 SPF 各自計算最短路線。公司內部多用 OSPF;互聯網上不同 ISP 之間,則用另一套叫 BGP(邊界閘道協定)的協定。
2. 問題在哪裡
上一個故事,網絡管理員在路路這部 Router(路由器)的 Routing Table(路由表)人手加了一條 Static Route(靜態路由),小比才去得到工作室。
可是 Static Route 有兩個大問題:
- 網線斷了,不會自己改道。 就算還有另一條路,路路也不知道要改走那條,小比只會被送進死胡同。
- 網絡一大,人手寫不完。 三部 Router 還可以應付;如果有一百部 Router、幾百個網絡,每加一個網絡,就要登入很多部 Router 逐條修改,很容易出錯。
3. 網絡怎樣解決
與其每張地圖都由人手畫,不如讓 Router 們自己交換情報,再各自畫出地圖。
Router 之間自動交換路線資料、自動更新 Routing Table,叫 Dynamic Routing(動態路由)。
OSPF(開放最短路徑優先)是最常用的一種。它好像一班郵差:先互相打招呼,再把「我身邊有什麼路」寫成情報傳給所有同伴。每位郵差收齊情報,就擁有同一張完整地圖,然後自己計算最短的路。
4. 看深一點
兩種交換情報的方法
| 方法 | 做法 | 例子 |
|---|---|---|
| Distance Vector(距離向量) | 只聽鄰居說「我去那裡要經過多少站、有幾遠」,不知道整張地圖 | RIP(路由資訊協定) |
| Link State(鏈路狀態) | 每部 Router 都有完整地圖,自己計算最短路線 | OSPF |
RIP 只數經過多少部 Router,最多 15 部,而且改道較慢。OSPF 在 1989 年出現,全名是 Open Shortest Path First。「Open」表示它是公開標準,任何廠商都可以使用。
Cost(成本):每條路的「距離」
OSPF 為每條連線設定一個 Cost。Cost 代表「距離」,通常線越快,Cost 越低。有些設備預設用「參考頻寬 ÷ 線路頻寬」自動計算,網絡管理員也可以人手設定。
這個故事有三部 Router,兩兩相連成一個三角形,三條線的 Cost 都設為 10。
OSPF 四部曲
第一步:Hello,認識鄰居
每部 Router 定時向直接相連的 Router 發出 Hello 訊息:「我在這裡!」互相收到 Hello,而且雙方的基本設定一致,就成為 Neighbor(鄰居)。
之後大約每 10 秒打一次招呼。如果 40 秒收不到 Hello,就當鄰居已經失去聯絡,這段時間叫 Dead Interval(失效時間)。
第二步:交換 LSA(鏈路狀態通告)
每部 Router 把自己的情況寫成 LSA,例如家中路路的 LSA:
我是:家中路路
我連著:192.168.1.0/24
鄰居:工作室 Router(Cost 10)、店舖 Router(Cost 10)
LSA 會一站一站轉交,傳遍所有 Router。
第三步:拼出 LSDB(鏈路狀態資料庫)
所有 LSA 拼起來,就是一張完整的地圖,叫 LSDB。三部 Router 手上的 LSDB 一模一樣。
第四步:用 SPF(最短路徑優先)計算最短路線
每部 Router 以自己為起點,用 SPF 演算法計算去每個網絡的總 Cost。SPF 又叫 Dijkstra 演算法,由電腦科學家 Edsger Dijkstra 在 1956 年想出。
家中路路去工作室的計算:
| 路線 | 總 Cost |
|---|---|
| 家中 → 工作室 | 10 ← 最低,勝出 |
| 家中 → 店舖 → 工作室 | 10 + 10 = 20 |
計算結果寫進 Routing Table。在 Routing Table 上,這類 Route 的代號是 O,表示由 OSPF 學回來。
網線斷了,會發生什麼事?
- 發現問題:家中和工作室之間的網線斷了。兩部 Router 的 Port(連接埠)立即失去訊號,馬上知道;如果是對方靜靜當機、Port 仍然亮燈,就要等 Dead Interval(40 秒)過去才會發現。
- 發出新的 LSA:兩部 Router 各自發出新的 LSA:「我們之間的連線沒有了!」店舖 Router 收到後繼續轉交。
- 重新計算:大家更新 LSDB,重新計算 SPF。
- 自動改道:家中去工作室的新路線是經店舖,Cost 20。路路自動更新 Routing Table,小比改走新路線。
所有 Router 重新得出一致、正確的路線,這個過程叫 Convergence(收斂)。網線修好後,Router 會再交換 LSA,自動改回 Cost 10 的直接路線。
平時網絡沒有變化,Router 之間只靠 Hello 保持聯絡;有變化時才發出新的 LSA(另外每 30 分鐘會重新整理一次),所以不會佔用太多頻寬。
OSPF 用在哪裡?
公司、學校和 ISP(互聯網服務供應商)的內部網絡,多用 OSPF。互聯網上不同 ISP、不同機構之間,則用另一套協定,叫 BGP(邊界閘道協定)。
5. 動手試試
任務:動手計算 SPF
- 在紙上畫出三部 Router 的三角形:家中、工作室、店舖。
- 把「家中—工作室」的 Cost 改成 30,另外兩條保持 10。
- 計算家中去工作室的兩條路線的總 Cost。這次路路會選哪一條?(答案:經店舖,總 Cost 20,比直接去的 30 低。)
小互動
OSPF 的正確次序
三部 Router 剛剛開機。把 OSPF 的五個步驟排好次序。
- 所有 LSA 拼成一模一樣的 LSDB
- 把計算結果寫進 Routing Table
- 發送 Hello,認識鄰居
- 用 SPF 計算總 Cost 最低的路線
- 交換 LSA,說明自己的連線和 Cost
6. 比喻的極限
- Router 不會真的「寫信」。 Hello 和 LSA 都是 Router 之間傳送的小封包,由軟件自動處理,速度以毫秒計算。
- 地圖不一定包括全世界。 大型網絡會把 Router 分成幾個 Area(區域),每個 Area 內的 LSDB 一樣,Area 之間只交換摘要,令地圖不會太大。
- Cost 不是真正的距離。 Cost 是網絡管理員可以更改的數字,通常反映線路速度,和兩部 Router 相隔幾遠沒有直接關係。
- 自動不等於不用設定。 網絡管理員仍然要決定在哪些 Port 啟用 OSPF、每條線的 Cost 等等;只是之後的變化由 Router 自動處理。
- 改道不是瞬間完成。 由發現問題到所有 Router 收斂,需要一點時間;在這段時間內,少量小比仍可能被送錯或丟失。
7. 小測驗
8. 重點筆記
- Dynamic Routing(動態路由)讓 Router 自動交換情報、自動更新 Routing Table,網線斷了也會自己改道。
- OSPF 是 Link State(鏈路狀態)協定:每部 Router 都擁有同一張完整地圖,再各自計算。
- OSPF 四部曲:Hello 認識鄰居 → 交換 LSA → 拼出同一個 LSDB → 用 SPF 計算總 Cost 最低的路線。
- Hello 大約每 10 秒一次;40 秒(Dead Interval)收不到,就當鄰居失去聯絡。
- 公司內部多用 OSPF;互聯網上不同 ISP 之間用 BGP(邊界閘道協定)。
延伸閱讀
現在路路們懂得自動找路,家中、工作室和店舖都連起來了。可是家中裝置用的是 Private IP(私人位址),出了互聯網就沒有人認得。下一個故事,路路變身大廈管理處,介紹 NAT(網絡位址轉換)與 Port Forwarding(連接埠轉發)。