具回授修復能力之路由器設計與實作 南華大學資訊工程學系學生 : 陳融漢 歐冠杰 陳泓佑指導教授 : 吳建民教授 摘要 由於近年來, 網路技術的提升, 加上各人們的需求也增加 高樓大廈 辦公大樓逐漸增多, 都已網路形成到一個密不可分的時代了 這些大樓通常會有一個網路機房, 管理著該大樓裡所有線路 但是問題來了, 在無數的線路裡, 其中一層對外連接的線路中斷了, 就造成該樓層的人無法使用 這時我們就要使用緊急措施, 讓線路學習新路徑, 期間再找出問題所在 一般而言, 在較小型的網路區域裡,RIP 是我們所會使用的協定, 因為他所連線的範圍並不大, 單單幾十個節點即可完成一個迴路 反之, 在較大型的網路區域裡就不一樣了, 節點數幾百條, 就單靠 RIP 協定的運算往往會浪費許多時間 OSPF 協定就能解決這個問題, 它會在路由表中預先設置多條路徑 尤其是在網路中有一條線路出現問題時, 它便能比 RIP 協定更快的找到路徑 一 簡介 為了達到網路點相互溝通的目的, 節點間必須藉由路由尋徑協定執行尋徑的工作 網路層路由協定主要在於傳送端與接收端間找尋一條或多條的傳送路徑, 以至傳送端可以利用該路徑來傳遞資料到目的地, 在有線的網路中, 主要由路由器來提供找尋路徑的功能, 路由器會透過路由協定來獲得新路由資訊更去新路由表中的資訊, 路由器將找尋到的路徑紀錄置於本身的路由表 (Routing Table) 中, 等到要傳遞封包時, 路由器會先對本身的路由表進行查詢 (Look-up), 根據路由表上對應的欄位將封包傳遞出去 至於在無線網路的環境中, 節點間所根據尋徑協定的運作方式也與有線網路環境類似, 以下就針對這兩類系統的尋徑協定架構進行簡要的 介紹 二 背景 在網路世界中, 封包再如此大型的網路路系統中, 如果沒有尋徑協定的協助, 一般而言, 封包不知該往何處去? 因此必須藉由尋徑協定的協助, 以便找尋封包傳送到目的 路由訊息依運作方式的不同區分成兩種型態分別為靜態 (Static) 路由和動態 (Dynamic) 路由 靜態路由機制比動態路由機制簡單, 以手動方式對每一筆路徑資料進行輸入, 路徑資料輸入之後一般很少變動, 封包依這些設定的路徑資料進行傳送 ; 有別於手動設定路徑資訊的靜態尋徑方式, 動態尋徑架構在路由器之間進行路由資訊交換動作, 同時讓多部路由器自動交換彼此的路徑資訊, 達到即時路徑資訊更新, 並尋找到理想封包的遞送路徑到目的端 其中動態尋徑方式的主要優勢在於當原先的路徑不通時, 動態尋徑方式可以有效再去尋找出備援路徑傳遞封包, 然而使用靜態尋徑機制所不能及 動態尋徑方式依機制交換訊息時機不同, 分為距離向量法 (Distance Vector;DV) 連線狀態法 (Link State;LS) 以及混合式 (Hybird) 距離向量法週期性地與相鄰路由器交換路徑資訊, 雖然可以隨時對內部路徑資料更新, 但卻也佔據了許多網路頻寬 ; 連線狀態方式透過廣播的方式對區域資訊進行傳達, 各路由器可以掌握網路拓樸的完整資訊, 只有在路徑連線狀態有所變更時, 才會進行路由更新的動作 ; 至於混合式結合距離向量與連線狀態這二種協定架構的優點進行設計, 提供更有彈性 更有效率, 本計劃就是採用此路由方式進行設計 RIP 和 OSPF 在網際網路中常常被網管人員選用的兩動態路由協定 目前這兩種協定是被標準化和廣
泛的使用中, 以下將介紹這二種廣為使用的動態路 由協定 2.1 尋徑資訊協定 (RIP) 網路中,HELLO 封包協定選舉出指定路由器和備份的指定路由器, 指定路由器負責產生 LSA, 它描述了整個多重存取的網路中的連接狀態, 使得網路訊息量方面和在拓樸資料庫大小的削減 尋徑訊息協定 (Routing Information Protocol;RIP) [2] 是運用距離向量法則進行尋徑, 路由器會週期性地廣播它自己擁有的路由表在交換訊息封包中並計算出一條最短路徑,RIP 是一種簡單的尋徑協定, 不能被使用於一個大型的網路, 因為它有太多控制的訊息且浪費太多網路的頻寬, 另外當網路上一發生變動時,RIP 會將新的變動訊息告知相鄰的有支援 RIP 協定的路由器 三 系統架構 2.2 開放式最短路徑優先 (OSPF) 開放式最短路徑優先 (Open Shortest Path First;OSPF) [3] 是從 IETF 發展出來在 IP 層網路上的一種路由協定, 它從 80 年代中期發展至今已有 20 多年的歷史,RIP 已經不能勝任大型網路和異質網路的服務,OSPF 是一個連線狀態的路由協定, 這個協定是靠連線狀態宣傳 (LSA) 去告知其它在相同層級區域內的路由器, 路由器中所有包括界面和其它的訊息變量被歸入 OSPF LSA 中 當一個 OSPF 的路由器累計連線狀態的資訊之後, 再使用 SPF 演算法去計算出所有節點中的最短路徑 另外路由器使用距離向量的演算法像是 RIP 路由協定, 再傳送所有或是一部分自身的路由表資料, 在更新路由訊息中到其它的路由的鄰居 這二種方式相比之下,OSPF 只須要對在路由表上不斷改進的那個變動的部分, 而不會傳送整個路由表 OSPF 使用邏輯分割的減少路由表的大小的領域和網路, 路由表的大小可能被更進一步透過使用路由摘要而降低 SPF 演算法是 OSPF 的設計準則, 當一台路由器使用 OSPF 起動時, 它初始化路由協定和路由表的, 再來使用 OSPF 的 HELLO 協定去獲得相鄰的路由器 路由器會傳送 HELLO 封包它的鄰居和接受鄰居傳送的 HELLO 封包 OSPF 使用的 HELLO 封包不僅作為傳送相鄰的節點的訊息, 而且擔任保持通訊讓路由器知道那些其它路由器仍然啟動和運作 在上多重存取的 圖一 : 系統架構圖本論文之系統架構以 IPLFRR 機制為基礎, 並且設計一簡單 IP 網路拓樸作為實驗環境, 系統架構如圖一所示, 分為 PC 與 PC-Router 所組成的 IP 網路 系統中我們使用八台 PC 搭載 Linux 作業系統並且各別運行 Quagga Open Source 軟體來實現 Routing Protocols, 以擬真一小型 IP 網路 在使用者應用程式部份, 由四個 PC 端進行通連, 而 IP 網路中的四台 PC-Router 則扮演傳送與建立四端連線的路由節點 在此環境下, 我們可以觀察線路中斷與網路回復的時間 3.1 Quagga 控制平面 Quagga 為一套提供許多路由軟體套件的集合, 支援以 TCP/IP 為基礎的路由軟體, 目前支援多數常見的路由協定 除了傳統的 IPv4 的路由協定 Quagga 亦支援 IPv6 的路由協定 傳統的路由軟體是以單一程式去提供所有路由協定的功能 Quagga 則採取不同的方法, 它集合不同的路由協定, 共同去建構核心路由表 在 Quagga 的軟體架構下, 可擁有不只一個路由軟體,Zebra 角色則為核心路由的
管理者 OSPF6d 為處理 OSPFv3 協定的常駐程式, 依此類推 Zebra 常駐程式則負責寫入核心的路由表, 以及在不同路由協定之間交換路由資訊 Quagga 系統架構可以輕易加入新的路由常駐程式, 且不會影響其他的路由協定 Quagga 軟體架構中, 將不同的路由軟件模組化 具備延展性特性 可維護性, 此外亦提供可攜性的系統架構 像 Quagga 這樣一個多程式架構, 每一個路由常駐程式擁有自己的設定檔與終端介面 (Terminial Interface), 網路管理者可透過該路由協定的終端介面與設定檔設定相對應的路由協定, 但這對於管理者來說不是很方便 為了解決這一問題,Quagga 更近ㄧ步提供一個整合的使用者介面 shell 稱為 Vtysh 網路管理者可透過 Vtysh 切換至任何一個路由常駐程式, 針對相 對應的路由協定作設定 3.2 元件介紹 本論文所設計之系統架構, 著重於路由節點 PC-Router 的元件設計, 並在 PC 與 PC 間進行傳送測詴, 以呈現 PC-Router 在 IP 網路中實現保護機制之效益 3.3 PC-Router 並重新計算新的路徑, 來解決網路中斷的狀況 但是 IP Restoration 在網路資訊同步與重新計算路徑時, 需要花費幾十秒的收斂時間, 而且隨著網路拓樸越大, 收斂時間越長, 並且將導致更多資料封包遺失, 甚至造成應用服務暫停或中斷 傳統 IP 網路所使用的 Routing Protocol 都是屬於 IP Restoration 方式, 例如 :RIP OSPF (2)IP Protection 在網路發生錯誤前, 針對下一節點或線路可能發生的錯誤, 事前做好應變措施 ; 一旦網路中斷便立即採取保護機制, 避免等待網路資訊同步與計算新路徑的收斂時間, 進而達到減少網路傳輸中斷與封包遺失的狀況 五 實驗環境 本實驗環境 ( 圖二 ), 使用了八台電腦, 皆為 ubuntu 9.10 作業系統 將四台電腦當作路由 (Router) 端, 再將另外四台作為連接路由器的 PC 端 每台電腦主機上都有三張網路卡, 將每一個網路孔皆使用跳線 (cross-over) 連接起來 接孔方式, 由一台 PC 端開始對一台路由器 (Router) 端相接, 然而相接後路由器端所剩下的兩個孔, 將連接到其它兩個路由器端, 將此環境設置成為一個可以互相連結的迴路 本論文設計的 PC-Router 是使用 Ubuntu 9.10 版本 Linux, 在 Linux 上運行 Quagga Open Source, 並且修改 RIP 與 OSPF 路由協定軟體與 Linux Kernel 以支援 IPLFRR 機制, 來實現本論文提出具區域線路保護能力之 IP 路由器 六 實驗步驟 Part 1. - 進入 superuser, 才有權限操作. 四 網路路由協定的回覆與保護 IP 網路對於設備損壞或連線中斷的問題, 處理方式可分為兩類 :(1)IP 回復 (IP Restoration) 與 (2)IP 保護 (IP Protection), 這兩種方式的詳細描述如下 : (1)IP Restoration 在網路發生錯誤後, 由路由協定交換資訊 Part2. - 架設 Network Topology 圖. 1. 先確定 PCs 和 PC Routers 的分配, 再把所有網路線接上 2. 先把所有 PCs 和 PC Routers 的全部網路介面關閉 3. 依照 Topology 圖設定電腦網路介面的 IP Address 和 default-gateway
圖二 實驗環境圖 Part3. - 在 PC Routers 上使用 quagga 軟體模擬 Dynamic routing 功能 1. 在所有 PC Router 安裝 quagga 2. 複製 RIP 和 OSPF 的設定黨範例到 quagga, 並改變其附檔名為.conf 3. 啟動所有 PC Routers 傳送功能 Part4. - 使用 RIP Routing 此為測詴 RIP Routing Network 的運作和學習路徑的時間反應 1. 啟動每台 PC Routers 的 RIP Routing 並觀看其 Routing Table (1). 修改 daemons.conf ( 開啟想要的功能,yes = 開啟 no = 關閉 ) (2). 重新啟動 quagga, 以執行修改過的設定 (3). 觀看各 PC Router 的 Routing Table Part5. 是否有刮到各個 Network 2. 當 R1 和 R2 間的連線中斷之後多久時間能學到新的路徑 (Ping from PC1 to PC3) (1). 中斷 R1 和 R2 間的連線 (2). 找出中斷後學習的新路徑 (3). 計算出 RIP 學習新路徑的時間 (4). 找出當 R1 和 R2 間的連線恢復後多久時間能回復到原先的路徑 - 使用 OSPF Routing 此為測詴 RIP Routing Network 的運作和學習路徑的時間反應 1. 啟動每台 PC Routers 的 OSPF Routing 並觀看其 Routing Table (1). 修改 daemons.conf ( 開啟想要的功能,yes = 開啟 no = 關閉 ) (2). 重新啟動 quagga, 以執行修改過的
設定 (3). 觀看各 PC Router 的 Routing Table 是否有刮到各個 Network 2. 當 R1 和 R2 間的連線中斷之後多久時間能學到新的路徑 (Ping from PC1 to PC3) (1). 中斷 R1 和 R2 間的連線 (2). 找出中斷後學習的新路徑 (3). 計算出 OSPF 學習新路徑的時間 (4). 找出當 R1 和 R2 間的連線恢復後多久時間能回復到原先的路徑 圖三 R3(RIP) 七 實驗結果 圖四 RN(RIP) 首先, 我們第一次所做的實驗, 是先將 PcN 先中止做第一次的時結果, 從圖一至圖四可以看我們設定 RIP 協定的 RoutingTable 的資料 以圖一來解釋,Destination 為此 RIP Router 這個迴路裡的所有 IP, 在 192.168.7.0 這個網域裡, 將由這個 192.168.8.2 這個閘道做通道, 將資料透過這個閘道傳送到 R1 在 192.168.6.0 這個網域, 由 192.168.5.1 做通道傳至 R1 在 192.168108.0 這個網域, 由 192.168.8.2 做通道傳至 R1 在 192.168.107.0 這個網域, 一樣由 192.168.8.2 做通道傳至 R1 圖一 R1(RIP) 從圖五 圖六中, 可以看到 RIP 協定所測詴路徑的時間 圖五的預先路徑 PC1 -> R1 -> R3 -> PC3, 則圖六是將原先的路徑中斷, 協定開始找尋新路徑 PC1 -> R1 -> RN -> R2 ->R3 -> PC3 以圖五來說, 對照實驗環境圖來看, 它所走的路徑是由 192.168.8.2 傳送資料, 圖五中的標號 1 代表它由 192.168.106.1 等待 192.168.106.254 所花的時間,0.25ms 表示它以連通的時間, 然後 2 是它所傳送資料通過 192.168.8.2 所需的時間, 接下來標號 3 是目的地 192.168.108.1 所等待的時間 以圖六來說, 我們將實驗環境圖中的 192.168.8.2 原先路徑終止, 將由協定自己搜尋新路徑, 圖六結果顯示, 它的新路徑是由 192.168.5.1 傳送資料, 然後再通過 192.168.7.1 傳到到目的地 192.168.108.1 圖二 R2(RIP) 圖五 RIP Tracepath
圖六 RIP Tracepath 中斷原本路徑, 尋找新路徑 圖十 RN(OSPF) 接下來圖七至圖十, 則是更改了協定裝置, 使用 Ospf 所產生出來的 RoutingTable 以圖七來解釋,Destination 為此 OSPF Router 這個迴路裡的所有 IP, 在 192.168.7.0 這個網域裡, 將由這個 192.168.8.2 這個閘道做通道, 將資料透過這個閘道傳送到 R1 在 192.168.6.0 這個網域, 由 192.168.5.1 做通道傳至 R1 在 192.168.108.0 這個網域, 由 192.168.8.2 做通道傳至 R1 在 192.168.107.0 這個網域, 一樣由 192.168.8.2 做通道傳至 R1 從圖十一 圖十二中, 可以看到 RIP 協定所測詴路徑的時間 圖十一的預先路徑 PC1 -> R1 -> R3 -> PC3 則圖十二是將原先的路徑中斷, 協定開始找尋新路徑 PC1 -> R1 -> RN -> R2 -> R3 -> PC3 以圖十一來說, 對照實驗環境圖來看, 它所走的路徑是由 192.168.8.2 傳送資料, 圖十一中的標號 1 代表它由 192.168.106.1 等待 192.168.106.254 所花的時間,0.252ms 表示它以連通的時間, 然後 2 是它所傳送資料通過 8.2 所需的時間, 接下來 3 是目的地 192.168.108.1 所等待的時間 以圖十二來說, 我們將實驗環境圖中的 192.168.8.2 原先路徑終止, 將由協定自己搜尋新路徑, 圖十二結果顯示, 它的新路徑是由 192.168.5.1 傳送資料, 再來 192.168.6.2, 然後再通過 192.168.7.1 傳到到目的地 192.168.108.1 圖七 R1(OSPF) 圖八 R2(OSPF) 圖十一 OSPF Tracepath 圖九 R3(OSPF) 圖十二 OSPF Tracepath 中斷原本路徑, 尋找新路徑
八 結論 圖十三 路線圖 圖十四 結果表 由整個實驗結果得知,RIP 與 OSPF 的機制裡的不同, 用在各個網路區域裡都有不同效果 例如, RIP 機制用在較小型的網路區域裡, 它的速度不會差過於 OSPF 的處理速度 相反地, 在較大型的網路區域裡,OSPF 的規劃機制裡, 往往比 RIP 要多出許多路徑, 在 RIP 等待的途中,OSPF 機制裡已經有了多條的預備路徑 九 參考文獻 IEEE, March 2004. [3] R. Lin and S. W. Lin, A Wireless Ad Hoc Routing Protocol Based on Physical Layer Characteristics, Department of Computer Science and Engineering NSYSU, 2003. [4] Routing Software Suite, Quagga-0.99.2, http://www.quagga.net/,web [5] 林慶德, 陳宇芬, CCNA_ 認證教戰手冊第六版, 旗標出版股份有限公司, 2008. [6] 施威銘, Networking Essentials, 旗標出版股 [1] 佘伊弘, 無線網狀網路路由效能提升之分析與研究, 逢甲大學資訊工程學系碩士論文, 2007 年 6 月. [2] S. Lee, S. Banerjee, and B. Bhattacharjee, The case for a multi-hop wireless local area network, in Infocom 2004. Hong Kong:
份有限公司, 2009.