Download presentation
Presentation is loading. Please wait.
1
第 10 章 IP 路由
2
本章重點 10-1 什麼是 IP 路由? 10-2 路由表簡介 10-3 靜態與動態路由
3
IP 路由 我們在先前的章節中, 多次說明 IP 最主要的功能便是負責在網際網路上傳遞IP 封包。為了達成傳遞封包的目的, IP 必須涵蓋以下兩類規格: 靜態規格:包含 IP 封包的格式、IP 位址的規劃等等。我們在第 8 章已經詳細介紹了這些主題。 動態規格:包含 IP 封包在網路之間傳送的方式。這部份統稱為 IP 路由 (IP Routing)。 本章首先說明 IP 路由的基本觀念, 接著介紹路由器的原理, 以及路由器的運作核心―路由表, 最後介紹路由表建立的方式。
4
10-1 什麼是 IP 路由? 簡單地說, 在網路之間將 IP 封包傳送到目的節點的過程, 即稱為 IP 路由。換言之, 除非是在同一個網路內的兩個節點互傳 IP 封包, 否則在傳送 IP 封包時, 必然會歷經 IP 路由的過程。
5
什麼是 IP 路由?
6
什麼是 IP 路由? 在 IP 路由的過程中, 網路之間的連結扮演了重要的角色。因此, 要了解 IP 路由, 首先必須了解連結網路的裝置―路由器。我們在第 3 章網路裝置中曾介紹過路由器, 以下則是將重點放在 IP 路由中路由器運作的方式。
7
節點、主機與路由器 為了方便說明, 本章所用節點、主機、路由器等名詞定義如下:
節點 (Node):使用 TCP/IP 協定組合的網路裝置, 包含主機和路由器。 主機 (Host):無路由功能的節點, 一般配備網路卡的個人電腦, 皆可視為主機。 路由器 (Router):具有路由功能的節點。
8
路由器的特性 路由器為連結網路的重要裝置, 不僅在實體上可連結多個網路, 還必須具有轉送 IP 封包的能力。在整個 IP 封包的傳送過程中, 通常必須經由多部路由器的合作, 才能將 IP 封包送達目的節點。 路由器作為 IP 封包的轉送裝置, 具有以下特性: 具有兩個 (含) 以上的網路介面, 可連接多個網路, 或是直接連接到其他路由器。所謂網路介面, 泛指所有可連接網路的裝置, 例如:個人電腦上的網路卡。
9
路由器的特性 至少能解讀封包在 OSI 模型第 3 層 (網路層) 的資訊。這是因為路由器必須知道封包的目的網路位址, 才能進一步地執行路由工作。 具有路由表 (Routing Table)。路由表記載了有關路由的重要資訊, 路由器必須根據路由表, 才能判斷要將 IP 封包轉送到哪一個網路, 為 IP 封包選擇最佳的路徑。
10
路由器的特性 目前在網路層最常用的協定是 IP 和 IPX, 因此我們通常將路由器區分為 IP 路由器和IPX 路由器(較高級的路由器則可以同時支援兩種協定)。由於本書係討論 TCP/IP 網路環境的 IP 路由, 所以後文所指的路由器都假設是 IP 路由器。 除了廠商製造、販售的路由器外, 一般個人電腦只要符合上述特性, 亦可視為路由器。因此, 只要您的電腦插了兩張網路卡並安裝合適的軟體, 也可扮演一部路由器。
11
路由器的功能 路由器最主要的功能就是轉送 IP 封包。為了能正確地轉送 IP 封包, 路由器必須根據封包的目的 IP 位址, 為它選擇一條最佳路徑。所謂的路徑, 主要是指下列兩種資訊: 要經過路由器的哪個網路介面。 要再送到另一部路由器或是直接送到目的節點。如果目的節點位於與路由器直接連接的網路上, 則不必再轉送給其他路由器, 直接將 IP 封包送至目的節點即可。
12
路由器的功能 以下圖為例, 假設現在 A1 主機要傳送 IP 封包給 F1 主機:
13
路由器的功能 當 R1 路由器收到 A1 送來的 IP 封包時, 必須根據封包的目的 IP 位址(也就是 F1 主機的 IP 位址), 對照 R1 本身的路由表來決定其路徑。 從上圖的網路組態來看, 要將 IP 封包送至 F1 主機, R1 只有一條路徑可選擇, 便是將封包轉送給R2 路由器。決定路徑後, R1 便可將封包從連接 B 網路的介面送出, 轉交給 R2 路由器繼續下一步動作。
14
路由器的功能 本例中 R1 有「連接 A 網路」、「連接 B 網路」和「連接 C 網路」 3 個網路介面;R2 有「連接 B 網路」、「連接 D 網路」和「連接 E 網路」 3 個網路介面;R3 有「連接 E 網路」和「連接 F 網路」兩個網路介面。
15
路由器的功能 在上圖中 R1 與 R2 之間是透過 B 網路相連, 理論上是沒有問題的, 但萬一 B 網路發生問題時, 可能會影響 R1 與 R2 之間的連通。 因此在實務上, 會考慮直接讓路由器與路由器相連, 中間不要再經過一個區域網路。同理, R2 與 R3 路由器也會直接相連, 不會透過 E 網路。
16
IP 路由的過程 承上例, 假設 A 網路的 A1 主機, 要傳送 IP 封包給 F 網路的 F1 主機。我們將逐一檢視傳送過程中, 每部主機與路由器的動作, 藉此說明 IP 封包在路由器之間轉送的過程。
17
A1 主機 A1 主機在送出 IP 封包前, 必須先執行以下動作:
若 F1 位於 A1 主機所在的區域網路 (亦即 A 網路), A1 首先利用 ARP 取得 F1 的 MAC 位址, 然後以該 MAC 位址作為鏈結(Data Link)層的目的位址, 將封包直接送給 F1。
18
A1 主機 若 F1 不在 A1 主機所在的區域網路, 則 A1 根據路由表, 判斷出應將 IP 封包送至哪一部路由器。區域網路通常只有一部路由器, 亦即預設閘道, 在本例中, 即是 R1 路由器。A1 決定將 IP 封包送至 R1 後, 先利用 ARP 取得 R1 連接 A 網路的網路介面 MAC 位址, 然後直接將 IP 封包傳送給 R1。
19
R1 路由器 R1 路由器收到 IP 封包時, 會執行以下的動作:
解讀 IP 封包表頭的資訊。若存活時間等於 1 , 即停止轉送此 IP 封包, 並發出ICMP 的錯誤訊息給 A1 (請參考 節);若存活時間大於 1, 則將存活時間減 1 後, 繼續以下步驟。
20
R1 路由器 讀取 IP 封包的目的位址。以此例而言, 即是 F1 主機的 IP 位址。根據 IP 封包的目的位址, 以及 R1 路由器本身所擁有的路由表, 為 IP 封包選擇一條路徑。 若 F1 主機位於 R1 所連接的網路中 (例如:A、B、C 網路), 則直接以 ARP 取得 F1 的 MAC 位址, 然後將 IP 封包傳送給 F1。
21
R1 路由器 若 F1 主機位於遠端的網路 (未與 R1 連接的網路, 例如:D 、E 、F 網路), 則必須從路由表判斷應該將 IP 封包轉送給哪一部路由器處理。以此例而言, 便是將 IP 封包轉送至 R2 路由器。決定將封包轉送給 R2 路由器後, R1 便利用 ARP 取得 R2 路由器連接 B 網路的網路介面 MAC 位址, 然後直接將 IP 封包傳送給 R2。
22
R2 路由器 R2 路由器收到R1 送來的 IP 封包時, 所執行的動作與 R1 路由器相似, 以下僅扼要敘述:
讀取 IP 封包的目的位址, 根據路由表得知應將封包送給 R3 路由器, 再利用 ARP 取得 R3 的 MAC 位址。 將 IP 封包轉送至 R3 路由器。
23
R3 路由器 R3 路由器收到 IP 封包時, 所執行的動作如下: 判斷 IP 封包表頭的存活時間。
因為 F1 位於 R3 所連接的網路中 (F 網路), 因此 R3 直接以 ARP 取得 F1 的 MAC 位址, 然後將 IP 封包傳送給 F1。
24
R3 路由器 從上述過程中我們可以得知, 在 IP 封包傳送的過程中, 沿途所經每部路由器必須能替 IP 封包選擇正確的路徑, 才能讓 IP 封包順利到達目的地。 在網際網路上的 IP 路由, 當然複雜了許多, 但是基本的原理卻是相同。如果網際網路上每部路由器都能克盡其職, 任兩部主機便可透過 IP 路由的機制, 互相傳送 IP 封包。
25
10-1-4 直接與間接傳遞 在整個 IP 路由的過程中, IP 封包的傳遞大致可分為『直接』與『間接』兩種形式。 直接傳遞
26
直接與間接傳遞 前述的 A1 主機傳送 IP 封包至 F1 主機的過程中, 屬於間接傳遞的部份為: 屬於直接傳遞的部份則為:
A1 → R1 R1 → R2 R2 → R3 屬於直接傳遞的部份則為: R3 → F1 如果 A1 主機傳送封包給同樣位於 A 網路的 A2 主機, 則只須用到直接傳遞, 不會產生間接傳遞。
27
10-2 路由表簡介 路由表其實是一個小型的資料庫, 其中的每一筆路由紀錄, 記載了通往每個節點或網路的路徑。
當路由器收到 IP 封包時, 必須根據 IP 封包的目的位址, 更精確地說, 是 IP 位址中的網路位址(Network ID), 選擇一筆合適的路由紀錄, 然後將封包透過此紀錄所指定的網路介面轉送出去。 本節首先介紹路由表的各個欄位, 然後再說明路由器如何為 IP 封包選擇最佳路徑。
28
10-2-1 路由表的欄位 路由表的欄位會因製造廠商及規格而有差異, 不過基本上會有以下欄位:
網路位址 (Network Destination) 網路遮罩 (Netmask) 介面 (Interface) 閘道 (Gateway) 成本 (Metric) 為了方便說明, 首先我們模擬一個簡化的網路環境。
29
路由表的欄位
30
路由表的欄位 在上圖的環境中, 總共有 A、B、C、D等 4 個網路, 以及 R1 、R2 等兩部路由器。
31
網路位址與網路遮罩 由於這兩個欄位的資訊必須合起來解讀才有意義, 因此將之合併說明。
路由紀錄利用網路位址與網路遮罩兩個欄位來代表的目的地 IP 位址的範圍, 也就是用來定義目的網路。 有關網路位址與網路遮罩的說明請參閱第 8 章。
32
網路位址與網路遮罩 以 R1 路由器而言, 通往 A、B、C、D 等網路的路由記錄, 其網路位址與網路遮罩兩個欄位值如下 (其它欄位暫時省略):
33
網路位址與網路遮罩 請注意, 路由紀錄也可用來代表通往某個主機的路徑。當路由紀錄代表單一主機時, 網路位址欄位必須填入主機的 IP 位址, 網路遮罩欄位則是 。 假設 R1 路由器中有一筆 A1 主機的路由記錄, 則網路位址與網路遮罩兩個欄位值如下。
34
網路位址與網路遮罩 為了節省空間, 路由表中的紀錄一般代表一個網路;代表單一主機的紀錄則較為罕見。
35
介面 此欄位記錄路由器本身網路介面的 IP 位址。由於路由器具有多個網路介面, 而每個網路介面都會對應一個 IP 位址, 當路由器決定以某筆路由紀錄來轉送 IP 封包時, 便會將 IP 封包從該紀錄指定的介面轉送出去。
36
介面
37
閘道 記錄要將 IP 封包轉送至哪一部路由器。若目的網路已直接連接在此一路由器, 代表毋須再將 IP 封包轉送給其他路由器, 因此閘道欄位填入網路介面的 IP 位址即可。 以 R1 路由器為例, 通往 A、B、C 網路的路由紀錄, 由於這 3 個網路直接與 R1 連接, 不必再轉送給其他路由器, 因此閘道欄位填入網路介面的 IP 位址。 至於 D 網路, 因為必須將封包轉送給 R2 路由器, 因此閘道欄位填入 R2 路由器連接B 網路的網路介面位址。
38
閘道
39
成本 用來表示路徑的成本。如果有兩筆路由紀錄的網路位址與網路遮罩相同, 則路由器會挑選成本最小的路徑來使用。成本通常設為到達目的網路所須經過的躍程(Hop) 數目。 什麼是躍程數目呢?IP 封包從來源端傳送到目的端, 途中所經過的路由器數目即是躍程數目。
40
成本 請參考圖 10-03, 以 R1 路由器為例, 到 A、B、C 網路的路徑為 1 個躍程;到 D 網路為 2 個躍程:
41
成本 但是, 成本欄位並不必然就是代表躍程數目, 在不同的路由協定, 可能會有不同的意義。例如, OSPF (一種動態路由協定) 會根據頻寬、延遲等等因素來計算成本欄位值。 因此成本欄位可說是對於每條路徑的『加權』 (Weighting) 值 , 而路由器會優先選擇成本最小的路徑!
42
決定路徑的步驟 當路由器收到 IP 封包時, 會為它選擇一條最佳路徑, 其實就是選擇一筆最合適的路由紀錄。以下為路由器選擇路徑的步驟: 將 IP 封包的目的 IP 位址與路由紀錄的網路遮罩做位元 AND 運算。例如:目的 IP 位址若為 , 路由紀錄的網路遮罩為 , 則運算結果為 。
43
決定路徑的步驟
44
決定路徑的步驟 將上述結果與路由紀錄的網路位址比較。若二者相同, 代表適合用這筆路由紀錄來轉送此 IP 封包。
對每一筆路由紀錄重複第 1 、2 步驟。若找不到任何適用的紀錄, 則使用預設路由, 亦即將封包轉送給預設的路由器來處理。
45
決定路徑的步驟 若有多筆符合的紀錄, 則從中找出網路遮罩欄位中最多 1 的紀錄。這是因為網路遮罩欄位的 1 愈多, 代表目的網路的規模愈小, 因此路徑較為精確。假設符合步驟 1 、2 有以下兩筆紀錄。 則路由器會優先使用第 1 筆紀錄。
46
決定路徑的步驟 找出成本最小的紀錄。成本欄位代表路徑的成本, 因此路由器會優先選擇成本較低的路徑。
47
10-3 靜態與動態路由 前幾節介紹了 IP 路由的原理, 接下來我們將說明如何建立路由表。路由表的建立方式有以下兩種:
靜態方式 (Static):由網管人員手動將路由紀錄逐一加入路由表。 動態方式 (Dynamic):由路由協定自動建立與維護路由表, 毋須人為輸入。
48
靜態路由 由於靜態路由的路由表, 必須以人工的方式來建立, 因此適用於小型且穩定的網路環境。本節將示範如何在小型網路環境中使用靜態路由。
49
範例 1:1 部路由器的環境 首先假設一個最簡單的路由環境 ― 1部連接兩個網路的路由器。
50
範例 1:1 部路由器的環境 LAN 1 與 LAN 2 的網路位址與網路遮罩如下表所示:
51
範例 1:1 部路由器的環境 R1 路由器的介面如下所示:
52
範例 1:1 部路由器的環境 若要讓 LAN 1 與 LAN 2 能夠互傳封包, 必須在 R1 加入以下兩筆路由紀錄:
第 1 筆紀錄可轉送目的地為 LAN 1 的 IP 封包;第 2 筆紀錄可轉送目的地為LAN 2 的 IP 封包。
53
如何在路由表中新增路由紀錄? 如果您用的是硬體路由器, 例如:思科 (Cisco) 的路由器, 通常可用 telnet 命令連上路由器, 然後以 ip route 命令來新增路由紀錄。 如果是以個人電腦作為路由器, 則作業系統或軟體會提供相關的工具程式。以 Windows 2000 Server 為例, 可在路由及遠端存取中設定路由紀錄, 也可從命令提示字元執行 route 命令, 新增、修改或刪除路由表中的路由紀錄。
54
範例 2:2 部路由器的環境 接著我們以 2 部路由器連接 3 個網路為例。
55
範例 2:2 部路由器的環境 LAN 1、LAN 2 與 LAN 3 的網路位址與網路遮罩如下表所示:
56
範例 2:2 部路由器的環境 R1 路由器的介面如下所示: R2 路由器的介面如下所示:
57
範例 2:2 部路由器的環境 假使要讓 3 個網路能正常運作, 則必須分別在 R1 與 R2 加入適當的路由紀錄。
58
範例 2:2 部路由器的環境 前兩筆紀錄與範例 1 相同, 用來轉送 LAN 1 與 LAN 2 的封包。第 3 筆紀錄可將目的地為 LAN 3 的 IP 封包轉送給 R2, 因此, 閘道欄位必須填入 R2 連接 LAN 2 的介面 IP 位址。 R2 必須加入以下 3 筆路由紀錄。
59
範例 2:2 部路由器的環境
60
範例 2:2 部路由器的環境 第 1 筆紀錄可將目的地為 LAN 1 的 IP 封包轉送給 R1, 因此, 閘道欄位必須填入 R1 連接 LAN 2 的介面 IP 位址。後兩筆紀錄用來轉送 LAN 2 與 LAN 3 的封包。
61
範例 3:2 部路由器 + 預設路由 延續先前的網路架構, 我們再加上一部 R3 路由器, 對外連接至網際網路。
62
範例 3:2 部路由器 + 預設路由 LAN 1、LAN 2、LAN 3 以及 R1 、R2 的設定與範例 2 相同。R3 路由器的介面如下所示:
63
範例 3:2 部路由器 + 預設路由 R1 與 R2 路由器除了必須加入範例 2 的路由紀錄外, 還要再建立『預設路由』。當 R1 與 R2 收到的 IP 封包與所有的路由紀錄都不相符時, 便會使用預設路由將之傳送給 R3 。 例如:R1 若收到目的位址為 的 IP 封包, 因為與3 個 LAN 的路由紀錄都不相符, 因此便轉送給 R3, 再送到網際網路上。
64
範例 3:2 部路由器 + 預設路由 R1 必須建立以下的路由紀錄作為預設路由:
路由紀錄的網路位址為 , 且網路遮罩為 時, 代表此為預設路由。
65
範例 3:2 部路由器 + 預設路由 R2 必須建立以下的路由紀錄作為預設路由:
R3 可說是 LAN 1、LAN 2、LAN 3 等網路聯外的閘道, 因此必須有這 3 個網路的路由紀錄。
66
範例 3:2 部路由器 + 預設路由
67
範例 3:2 部路由器 + 預設路由 這 3 筆紀錄分別負責轉送目的地為 LAN 1、LAN 2 與 LAN 3 的封包。
此外, R3 也必須設定預設路由, 將封包轉送到網際網路。R3 的預設路由通常是指向與 ISP 連接的路由器。
68
動態路由 當網路規模不大時, 採用靜態方式建立路由表的確是個可行的方式。但是當網路不斷擴大時, 路由表的資料將會以等比級數暴增。此時若再使用靜態方式, 則在設定和維護路由表時, 會變得複雜且困難重重。 為了解決這個問題, 有人提出了利用動態方式建立路由表的觀念, 讓路由器能透過某些機制, 自動地建立與維護路由表。並在有多重路徑可供選擇時, 自動計算出最佳的路徑來傳送封包。
69
動態路由 採用動態方式建立路由表的網路就是動態路由網路 (Dynamic Routing Network);而負責建立、維護動態路由表, 並計算最佳路徑的機制就是動態路由協定 (Dynamic Routing Protocol)。 目前在企業網路中, 使用最普遍的動態路由協定當屬 RIP (Routing Information Protocol , 路由資訊協定)。RIP 所使用的路由演算法是距離向量演算法(Distance Vector Algorithm)。 由於路由協定是較為深入的主題, 限於篇幅將不逐一介紹, 以下僅簡介距離向量演算法的原理。
70
動態路由 動態路由協定種類繁多, 但大體上可區分為適用於中、大型網路 (例如:網際網路) 和適用於小型網路 (例如:企業網路) 等兩大類。OSPF、BGP、IGMP 等路由協定屬於前者, RIP 則是屬於後者。
71
距離向量演算法 簡言之, 距離向量演算法 (Distance Vector Algorithm) 就是讓每部路由器都和鄰接的路由器交換路由表, 藉以得知網路狀態, 判斷封包傳送的最佳路徑。 更精確地說, 應該是每一部路由器都會將自己的路由表廣播到網路上, 藉以建立動態路由表。
72
距離向量演算法
73
距離向量演算法 當每一部路由器收到此廣播封包時, 便會核對自己的路由表, 進行以下步驟:
收到的路由紀錄中, 是否有我沒有記錄到的資料?若然, 則新增此筆紀錄, 反之則繼續下一個步驟。 此筆紀錄是不是由同一部路由器所發出?若然, 則更新路由紀錄, 反之則進入下一個步驟。 比對路徑成本。若該筆路由紀錄的成本較小, 則更新路由紀錄, 反之, 則不予理會。
74
距離向量演算法 最後每部路由器都會擁有一份完整的動態路由表, 裡面則記錄了所有網路的路由資訊。
除此之外, 距離向量演算法還能計算出最小成本的路徑, 當做封包傳遞的最佳路徑, 例如:
75
距離向量演算法 在上圖的網路架構中, 若 LAN1 要送封包到 LAN2, 實際可走的路徑有 2 條:
LAN1 → A 路由器 → B 路由器 → LAN2 LAN1 → A 路由器 → C 路由器 → D 路由器 → LAN2
76
距離向量演算法 由於在交換路由表時, 每部路由器都會把自己路由表中每筆紀錄的成本加 1, 然後廣播到網路上。
因此, A 路由器透過距離向量演算法便可得知第 1 條路徑的成本為 1 (經過一部路由器), 而第 2 條路徑成本為 2 (經過兩部路由器), 從而選擇第 1 條路徑, 將封包傳送出去。
Similar presentations