• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
84
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學

碩 士 論 文

題目:基於 NS2 網路模擬器之隨意任意網路 資料傳輸模組之開發

The design and implementation of data transmission module for NS2 simulator

系 所 別:資訊管理學系碩士班

學號姓名:M09610009 郭澄宇

指導教授:李之中 博士

中 華 民 國 九十九 年 二 月

(2)

摘要

近年來,隨著無線網路的蓬勃發展,相關的研究議題也相對的如雨後春筍般 出現,包括行動隨意網路(Mobile Ad Hoc Networks)、無線射頻辨識(Radio Frequency Identification)、無線感測網路(Wireless Sensor Network)等。

在進行上述議題的研究時,學者常需使用網路模擬工具進行所設計方法的效 能評估。在這些工具中,NS2 為最常為學界所使用的軟體。傳統上,多數網路社 群學者的討論議題集中於網路堆疊傳輸層以下的議題,因此 NS2 中的模擬也多 以模擬網路堆疊傳輸層以下的運作為主。但是,隨著網路技術的成熟,愈多的應 用需要透過網路進行,因此,如何對這些網路應用進行模擬,是學界在進行網路 創新應用時需要關注的事情。目前在 NS2 中,有關網路應用的模擬,都是以產 生封包流量的方式進行,而不模擬網路應用中傳輸資料的內容,也就是說,模擬 過程只專注於封包產生的數量與大小,而不關心封包的內容。然而,這種僅使用 封包流量進行模擬的方式,在面對網路的創新應用時(例如,隨意任意網路中的 資料管理議題),即明顯不足以應付這些創新應用模擬所需。因此本論文在 NS2 的應用層上製作一個資料傳輸模組,使得我們在進行網路創新應用研究時,能夠 對網路創新應用有一個更完整貼切的模擬。

關鍵詞:NS2、網路模擬、資料傳輸。

       

(3)

ABSTRACT

With the advance of the wireless network technology, many scholars conduct researches in this field. In these researches, NS2 is one of the most important simulation tools, most scholars are used it to evaluate the performance of their proposed methods. In past years most scholars paid attention on the issues on the transport, routing and data-link layer of the network stack and, therefore, the transmission data between two nodes are simulated by packet size and packet number parameters on NS2. It is not necessary to transmit data content between two nodes in the simulation of these studies. When scholars paid attention on the issues on the application layer of the wireless network, the transmission of data content between two nodes is necessary in the simulation of proposed methods to evaluate performance on NS2. Unfortunately, no modules are implemented to support the simulation of the data content transmission on NS2. In this study, the module used to simulate the transmission of data content on NS2 is implemented. The testing of the module had been done and the testing result shows that the module works correctly.

Keywords:NS2、Network Simulation、Data Transfer  

     

 

(4)

誌 謝

在就讀研究所的這一段日子裡,雖然辛苦但也收獲良多。本論文的完成,首 先要感謝的是我的指導教授李之中博士,在這段時間內,不論是課業或是生活上 都給予我許多的幫助與指導,使我受益良多。此外,要特別感謝口試委員洪振洲 博士和吳美玉博士,給予我不少論文上的指導與建議,使得我的論文能夠更加地 完善。

在研究所的日子中,很感謝同為商業智慧實驗的學長姐政傑、莉婷及學弟妹 學駿、峻維、佩玲、昇岳、遜彰、永昊的陪伴,與你們的相處在平時給予我許多 的歡笑,在課業上亦有互相討論、相互督促的正面能量。此外,也要感謝分散式 企業資訊系統實驗的學長姐登傑、盈君與同學彥睿在平時給予我適時的幫助。對 於所有幫助過我的人,在此獻上我最深的祝福與感謝,謝謝你們。

最後要感謝我的雙親,謝謝你們的鼓勵跟體諒與辛苦的付出,讓我能夠專心 致力於我的研究,有你們的支持我才能順利完成碩士學業。感激之情溢於言表,

僅以本文獻給我最親愛的家人。

 

郭澄宇 謹識于中華大學資管所 中華民國 九十九年 二月

(5)

目錄

摘要... I  ABSTRACT ... II  誌 謝... II  目錄... IV  圖目錄...V  表目錄... VII 

第一章  緒論... 1 

第一節  研究動機... 4 

第二節  論文架構... 5 

第二章  文獻探討... 6 

第一節  行動隨意網路... 6 

第二節  NS2 的簡介 ... 21 

第三章  NS2 資料傳輸模組的設計 ... 29 

第一節  過往研究的討論... 29 

第二節  資料傳輸 TCL 命令 ... 36 

第三節  資料傳輸模組應用層的設計... 38 

第四節  資料傳輸模組代理層的設計... 40 

第四章  NS2 資料傳輸模組的製作 ... 46 

第一節  資料傳輸模組應用層的製作... 46 

第二節  資料傳輸模組代理層的製作... 51 

第三節        模擬實驗... 60 

第五章  結論... 70 

參考文獻... 72 

(6)

圖目錄 

圖 1-1 INFRASTRUCTURE NETWORKS ... 2

圖 1-2 AD HOC NETWORK ... 3

圖 2-1 行動節點的網路拓樸... 14

圖 2-2 DSR路徑探索 ... 17

圖 2-3 NS2 的基本架構 ... 21

圖 2-4 簡易網路拓樸... 22

圖 2-5 NS2 中以TCP為代理層之封包傳輸 ... 23

圖 2-6 行動節點的架構圖... 26

圖 3-1 EXAGENT所需封包格式 ... 30

圖 3-2 繼承AGENT類別 ... 31

圖 3-3 自訂封包表頭命名... 32

圖 3-4 傳送封包... 33

圖 3-5 接收封包(1) ... 34

圖 3-6 接收封包(2) ... 35

圖 3-7 APPLICATION繼承 ... 38

圖 3-8 ECAPP CLASS ... 39

圖 3-9 應用層與代理層連結... 40

圖 3-10 FULLTCP網路拓樸(1) ... 42

圖 3-11 FULLTCP網路拓樸(2) ... 43

圖 3-12 行動節點上的TCP代理層 ... 44

圖 4-1 ECAPP主要類別 ... 46

圖 4-2 類別ECAPP的成員函式COMMAND()(1/3) ... 48

圖 4-3 類別ECAPP的成員函式COMMAND()(2/3) ... 49

(7)

圖 4-4 類別ECAPP的成員函式COMMAND()(3/3) ... 50

圖 4-5 類別ECAPP的成員函式SENDTO()與SEND() ... 51

圖 4-6 類別TCPAGENT的成員資料 ... 52

圖 4-7 類別TCPAGENT的成員函式SENDTO() ... 53

圖 4-8 類別TCPAGENT的成員函式SEND_MUCH() ... 54

圖 4-9 類別TCPAGENT的成員函式OUTPUT() ... 55

圖 4-10 類別TCPSINK中的ACKER類別 ... 57

圖 4-11 類別TCPSINK ... 58

圖 4-12 類別TCPSINK的成員函式RECV() ... 59

圖 4-13 TCL中行動節點的設定 ... 62

圖 4-14 TCL中應用層的設定 ... 63

圖 4-15 TCL中代理層的設定 ... 63

圖 4-16 類別ECAPP的成員函式SENDTO() ... 65

圖 4-17 PACKETDATA結構... 66

圖 4-18 資料封包結構... 67 

(8)

表目錄

表 1-1 INFRASTRUCTURE 模式與AD-HOC 模式之比較 ... 3

表 2-1 行動隨意網路相關研究... 7

表 2-2 行動節點 1 的路由表格... 15

表 2-3 行動隨意網路的路由協定的主要特性與優缺點... 18

表 4-1 參數設定... 61 

(9)

第一章  緒論 

隨著科技的日新月異,無線網路科技之蓬勃發展與快速進步,行動計算 (Mobile computing)技術日漸成熟,利用各種的可攜帶式無線網路個人行動運算設 備,像是筆記型電腦(Notebook)、個人數位助理(Personal Digital Assistant,PDA)、

甚至是智慧型行動電話(Smart Phone)等,讓使用者隨時隨地都能用更便捷的方式 利用網路以及與其他使用者交流,和有線網路相比,無線網路不僅能節省維護線 路及基礎設施的人力與花費,在架設的機動性、便利性亦較有線網路來得更有優 勢。

IEEE 802.11 定義兩種無線網路架構:中控型網路(Infrastructure network)和隨 意網路(Ad hoc network)。中控型網路也可以稱作基礎建設網路或主從式網路,

它的特點就是有基地台的參與,基地台具備無線到有線的橋接功能,並且負責網 路內所有的傳輸,包括同一個基本服務區域(basic service area)中所有行動節點之 間的通訊,這表示所有的通訊都必須透過基地台(Access Point,AP),雖然這種 作法比直接傳送耗費更多資源,但是它還是有兩個主要的優點:1.基本服務區域被 界定於基地台的傳輸範圍、2.可協助行動節點節省電力。基本服務組合(Basic Service Set,簡稱 BSS)是 802.11 網路的基本元件,它是由一組可彼此通訊的工 作站所構成,只要位於基本服務區域內,工作站就可以跟同一個 BSS 中的其他 成員通訊,但也因為通訊都必須透過 AP 來完成,所以當 AP 發生故障時將影響 整個通訊。圖 1-1 說明一個中控型網路的架構。

(10)

圖 1-1 infrastructure networks

而 Ad hoc 網路[24]是由一群希望相互通訊卻沒有固定基礎架構可用的通訊裝 置所集合而成的網路,亦無事先已決定的可用路徑之組織。每一個行動節點動態 地找尋鄰近可以直接通信的其他行動節點,倘若假定並非所有的行動節點都可以 直接的與其他行動節點通訊時,則其它的行動節點必須扮演著中繼轉送(relay)的 角色在網路之間傳遞資料封包。在 Ad hoc 網路中重要特徵是行動節點的移動造 成網路拓撲的快速變化。最早的發展主要是應用於戰爭或重大災害發生時的連絡 通訊,不需要基地台管理而能在有限的範圍內實現行動節點之間的相互通訊,彈 性的通訊方式得以應付任何突發性的狀況。如圖 1-2 所示,行動節點透過無線電 波與鄰近且可通訊的行動節點交換路由訊息,透過這樣的方式將整個網路拓撲建 立起來,例如行動節點 A 要傳送資料給行動節點 E 時需透過行動節點 C 與 D 的 中繼轉送後來到達目的地行動節點 E,每一個行動節點扮演著類似路由器(Router) 的角色,所以多點跳躍(Multi-hop)的路由機制將被運用在兩個無法直接到達的行 動節點間之訊息交換。

(11)

圖 1-2 ad hoc network

我們將 Infrastructure 模式與 Ad hoc 模式差異進行比較整理之後,可以透過 表 1-1 得知。

表 1-1 infrastructure 模式與 ad-hoc 模式之比較

無線網路架構 Infrastructure Ad hoc

基礎設施 需基地台設備接上固定網 路

不需基地台設備

單點/多點跳躍 single-hop 無線連結 multi-hop 無線連結 路由管理 中央統一控管路由資訊 分散式路由資訊

建置成本 成本高 成本低

時間耗費 設置較為費時 設置較為快速

(12)

由於 Ad hoc 具備快速建置、成本經濟與不須基地台等特性,使得 Ad hoc 延 伸出許多的應用。例如在軍事上,戰爭前線並無法設置基地台時,透過 Ad hoc 依然可以進行通訊;或火災地震等緊急狀況下的搜尋救援;或者在深山偏遠地區 需要架設網路時,鋪設實體網路線路於高山深谷間成本過於龐大,則可於各個山 頭設置通訊設備,以 Ad hoc 模式串接起來,即可大量節省建置成本等。而在 Ad hoc 中,最普遍的應用就是針對行動式的 Ad hoc 網路(Mobile Ad hoc Network,

簡稱 MANET)。也因此 MANET 網路在 Ad hoc 網路的研究中,一直是屬於相當 重要的一個部份。在本章後續小節中,將依序介紹研究動機與本論文的架構。

第一節 研究動機

在我們能力之內所調查的研究中,發現大部份使用 Network Simulator 2[17],簡稱 NS2,來做為行動隨意網路模擬工具的部份研究中,並沒有非常詳 細的將所應用的完整的行動節點的網路架構清楚表示出來。在此我們所謂的在 NS2 上完整的行動節點網路架構為包含:應用層、代理層、節點連結層這三個部 份。這是因為在 NS2 的應用層中,只有提供一個固定的封包流量,如果只是針 對觀察各種不同流量封包對於網路狀態影響的變化是足夠的,但是對於行動隨意 網路中針對每一個行動節點上所擁有的資料去做交換這方面的研究就略顯不 足。行動節點需要去對本身所擁有或需要的資料做交換的動作是因為每一個行動 節點本身的電力、記憶體都是有限制的情況下,但行動節點會因為不同的位置與 不同的時間點,所需要的資料都是可能會不斷的變動。所以如何儘量降低所消耗 的電力與最有效率的使用行動節點的記憶體,從而使每一個行動節點都能儘量得 到所最需要的資訊,藉此延長每一個行動節點的存活時間,或是提高行動隨意網 路的服務品質,使所需的資料能夠更快速的被需要的行動節點獲取。此類行動隨 意網路的研究就必須要有真實的資料在行動節點間傳遞,才能得到較符合現實的 結果,但因為我們上述所提到 NS2 本身在設計上,應用層只有提供流量封包,

(13)

而非是真實資料的傳送,使得要在 NS2 現有的架構下,利用完整的應用層、代 理層及節點連節層這三個分層來傳送真實資料是有其困難存在。因此,針對此方 面本論文的研究重點為在 NS2 上建立一個完整的行動節點網路架構,以期能夠 更符合現實的狀況,減少在實際應用上時所可能產生的一些非預期上的問題。

第二節 論文架構

本論文後續章節架構如下所述。在第二章的部份,我們針對行動隨意網路的 特性、應用、路由且將使用 NS2 模擬的相關研究中針對行動隨意網路中的合作 快取的部份做一簡介並將我們所認為有疑問之處進行討論,最後會對 NS2 網路 模擬軟體做一系列完整的介紹。在第三章為 NS2 資料傳輸模組的設計的部份首 先說明過往研究的探討,再來針對現行已存在 NS2 的代理層去進行改進,使其 能夠完整的表現出我們想要使用完整的行動節點網路架構,去傳送真實資料的情 形,並不是只是單純的傳送空有流量的封包,從而更能看到基於此架構上之後所 衍生出來的反應時間與能源消耗的研究議題以期能更精確表現出現實狀況。第四 章是呈現 NS2 資料傳輸模組的製作與使用 NS2 中 TCL(Tool Command Language) 的腳本來描述實驗的過程。最後第五章的部份為結論。

(14)

第二章 文獻探討

第一節 行動隨意網路

在網路越來越普及化的現代,行動計算(Mobile computing)技術的日漸成 熟[1],無線網路在生活上的應用亦是隨處可見,使用者可利用各種新穎的可攜 式無線通訊設備透過無線網路,獲得所需要的資訊,使得生活能更加的便利,而 跟其他使用者之間交換資訊更是能不受限於時間、地點。且由於無線網路不需要 網路線的佈置及一些基礎設施[13,19,24],能有效的節省過往為了維護線路與基 礎設施所耗費的人力、時間與成本,並可將上述這些資源投入在無線網路的機動 性與便利性等服務品質上,使其有更佳的服務水準。無線網路的技術水準也因時 代的進步,將朝通訊受限更少的條件之下為目標邁進,而這樣的演進與技術水準 的革新,也使得許多學術界與業界對無線網路相關領域的研究投入更多的心力。

在無線網路中,相對於需要基地台或是 AP 等相關基礎設施的蜂巢式(Cellular Network)網路,無線網路中的行動隨意網路(Mobile Ad hoc Network,MANET) 基於本身無需任務的基礎設施的特性下[1,24],經常被使用在不易建立網路基礎 建設的情況之下。

行動隨意網路是由許多像是 PDA 或是智慧型手機等許多的無線通訊設備所 組成的行動節點網路,在網路中隨意兩個在通訊範圍內的行動節點能夠不需要透 過基地台或是 AP 就能直接相互通訊。且由於不需要基礎設施,因此能不做任何 的事前佈置就能快速的利用,讓行動節點能即時的形成一個網路並且做通訊工 作,因此從這點我們可以了解到,行動隨意網路的機動性與便利性都是十分好 的,而在佈建成本上也反應出跟其它需要基礎設施的無線網路相比,有更好的效 益[1]。由於行動隨意網路極佳的機動性與便利性,因此相對於其他的網路類型,

行動隨意網路的優點延伸出相當多的應用。早期雖然研究都是偏重於軍事領域,

(15)

然而近幾年來商業界與學術界對於行動隨意網路越來越感興趣。隨著藍芽 (Bluetooth)、IEEE 802.11 與 IEEE 802.16 等技術的出現[1,24],使得行動隨意網路 研究更是蓬勃發展,並延伸出許多應用。以下我們將從行動隨意網路的相關研究 開始對其特性、應用與路由來做更進一步的介紹,最後會從合作快取的角度帶入 本篇論文的主題,說明為什麼需要在 NS2 上建構一個行動隨意網路的資料傳輸 模組

行動隨意網路相關研究

關於行動隨意網路領域的研究,在我們能力所及的範圍內所蒐集的研究資 料,我們根據行動隨意網路的不同特性,將眾多學者相關研究與主要著重解決的 問題,區分為幾大類型的研究方向。

表 2-1 行動隨意網路相關研究

行動隨意網路特性 相關的研究 主要解決的問題

行動性(Mobility)  預測網路節點的移動

 區隔網路節點的動作

 控制網路節點

著 重 在 行 動 手 機 , PDA、及筆記型電腦等 經 常 移 動 的 行 動 通 訊 設備之行動通訊研究。

網路拓撲(Topology)  區隔網路

 有效的拓撲機制

 繞徑問題

 繞徑演算法問題

研 究 如 何 運 用 隨 意 式 網 路 在 初 始 建 置 網 路 基 本 元 素 與 封 包 傳 送、連線建立的拓撲與 繞徑問題。

容錯性(Fault Tolerably)  通訊節點隱藏

 通訊節點暴露

研 究 如 何 容 許 網 路 中 的 通 訊 節 點 可 在 合 理

(16)

 波頻干擾

 封包碰撞

範圍中,允許建構網路 的 基 本 通 訊 節 點 消 失、損壞、干擾、及防 止網路廣播風暴。

擴展性(Scalability)  適用不同的網路環境

 適應不同的網路封包

 適應不同的網路協定

研 究 如 何 讓 隨 意 式 網 路 能 適 應 各 種 不 同 的 協 定 、 格 式 與 網 路 環 境。

電力問題(Power-aware)  省電模式

 消耗資源的問題

減 少 無 線 網 路 資 源 浪 費的各式協定。

頻寬(Low Bandwidth)  限制的頻寬

 減少廣播封包問題

 多點廣播問題

探 討 如 何 壓 縮 網 路 封 包與減少網路廣播、傳 輸的問題。

資訊安全性(Security)  封包傳送的安全性

 網路節點的安全性

 資訊加密

 資訊隱藏

 通訊節點是否正確

隨 意 式 網 路 是 一 個 處 於 暴 露 的 無 線 環 境 中 , 易 遭 到 破 壞 、 仿 冒、竊取、及盜用資訊 等,有安全領域上也有 許多相關的研究。

不一致性(Asymmetric)  網路節點連結不一致 性

 網路連結不同步性

 網路延遲

研 究 在 頻 寬 不 穩 定 的 隨意式網路環境中,進 行 平 行 建 立 通 訊 連 線 的領域中。

從上列的表 2-1 中我們可以簡略的了解到行動隨意網路的大略研究方向,而本研 究主要的目的是針對行動隨意網路上應用層的資料交換為前提之下,對於行動隨

(17)

意網路上有關行動節點間合作快取的研究需要真實資料來傳遞的條件下,去使用 NS2 來模擬,以達到貼近現實的結果。首先,對於合作暫存方法中的相關議題進 行探討,包含暫存資料的許可控制(Caching admission control)[10,21,25,26,30]、暫 存資料的置換策略(Caching replacement policy)[20,22,28,29]、暫存資料的一致性 控制(Caching data consistency control)[11,12,15,16,23]、反應時間(Timing)、能源 消耗(Power consumption)等。真實資料在這些相關的研究議題中,扮演著相當重 要的關鍵角色,因為當有了真實資料的傳輸,模擬的結果才有可能是更加與真實 結果相符合。因此,本篇論文提出一個基於 NS2 網路模擬器的資料傳輸模組,

冀望能提升研究結果上的真確性。接下來我們會對行動網路的特性、應用、路由 與合作快取上的應用來做更深入的介紹。

行動隨意網路之特性介紹

因為沒有無線網路的固定基礎設施,所以在行動隨意網路中的所有行動節 點,都必須具備路由器(Router)使資料能夠中繼轉送(rely)的基本功能[1,2,13,27]。

並由於行動隨意網路缺少基礎設施的特點,使得行動隨意網路中的繞徑與拓樸管 理都必須要透過分散式的方法去進行。以下我們將行動隨意網路的特性做簡介 [1,2,13,24]:

(1) 移動性:

行動隨意網路中的每一個行動節點都能夠隨時的移動,且行動隨意網路通常 是個需要快速並暫時形成的網路[24],網路中的每一個行動節點皆有機率會 在整個區域中移動。

(2) 多點跳躍:

在多點跳躍的網路中,資料封包從來源端(Source)到目的端(Destination)的路 徑中[24],會需要一個或以上的中繼節點,來擔任中繼轉送的動作。而行動 隨意網路會因為目的端不在同一個通訊範圍、有障礙物阻隔及電力等因素,

(18)

需要以多點跳躍做為傳送資料封包的方式。

(3) 有限的能源:

因行動隨意網路中所有的行動節點的能源都是由電池所提供,所以行動節點 的能源不像有線網路或無線網路中的基地台可以無限的供給[13,24],在加上 於有限的能源之中,要處理使用者的需求,還要負擔路由器的中繼轉送功 能,因此在有限的能源中,讓行動節點做最有效的應用,是一個重要的議題 之一。

(4) 自我組態:

行動隨意網路中的每一個節點,都可在任何環境、任何時刻、任何地點,自 動決定自己的網路參數,包括 IP、Routing table 等[1,2,24],而不需要任何現 有的基礎網路建設。

(5) 動態的網路拓樸:

行動隨意網路中,所有節點都可以任意的移動,加上無線發送裝置功率 的變化、訊號相互干擾、地形等等各式各樣的影響,使得網路拓樸隨時都會 發生變化。這會造成行動隨意網路中繞徑的困難[14]。

(6) 安全性:

由於行動隨意網路是使用無線的方式所佈建,且具有公開廣播的性質,與使 用多個中繼節點傳送資料的多點跳躍機制[2],來達成建立彼此連線。因此,

當資料封包在進行傳遞時,有可能在遞送的途中,被有心人士從中擷取、破 壞、或是偽造,或遭受到惡性的堵塞(Jam)與欺騙(Spoof)、入侵及 DoS(Denial of Service)的攻擊。因此,行動隨意網路也必須考量安全性方面的問題。

(19)

行動隨意網路之應用說明

由於行動網路有很好的機動性與便利性,因此常用於不易建立基礎網路設施 的環境之下,以下我們將介紹兩個最常應用行動隨意網路的領域,包含軍事戰爭 及災難救援行動[1,2,13]:

(1) 軍事戰爭:

在戰場中的戰況都是隨時隨地在改變而且是具有相當的危險性,但是若為了 使軍隊士兵都能夠收到正確的作戰指令而架設基地台,不僅會減少軍隊的機 動性,也會因為所架設的基地台目標過於明顯,而容易成為敵方的攻擊目 標,增加我方軍隊的危險性。然而行動隨意無線網路能夠幫助軍隊士兵們之 間快速的通訊、傳送即時的軍事資訊並傳送給其他我方軍隊的士兵,使士兵 所接收的到資訊更能夠迎合軍事行動上的需求[1,2]。

(2) 緊急環境、災難救助:

當發生火災、颱風或地震等緊急狀況下時,受難者也許可能因為某些因素無 法離開災害現場,亦或是受制於災害的情況之下不能使用現有的電源,在現 有基礎網路建設都遭到破壞時,行動隨意網路可以作為進行搜尋或營救行動 中的替代網路。此時災難受害者可以使用行動隨意網路就近發出求救訊息給 附近的救難人員,而救難人員在救援的過程中也可以利用行動隨意網路即時 的相互提醒與注意災害情形或依照受難者所發出訊息往受難者的位置前 進,使整個災害的救援行動能夠在更安全、更順利的情況下進行[2,13]。

(20)

行動隨意網路之路由探討

在此小節中,我們將對行動隨意網路的路由協定作探討,分別對主動式路由 (Proactive routing)與回應式路由(Reactive routing)[1,4,13,14,18,27]作描述,並且會 提出這兩個路由協定當中較具代表性之一的來說明。最後依據行動隨意網路的兩 類路由協定,將過去學者所研究的網路拓撲協定作有系統的整理,分述兩類路由 協定中最具代表性的協定、基本的環境假設及優缺點:

1.

主動式路由:

主動式路由(Proactive routing,或稱為 Table-driven routing)會需要預先為行 動隨意網路中任意兩個行動節點建立路由資訊[14],不論使兩個行動節點是否真 正的有封包需要傳送。因此當有新的連線需要被建立時(即來源端想送封包給目 的端),都能立刻獲得有效的路由資訊,即時的把封包往目的端傳送[1]。

主動式路由是從網際網路(Internet)的路由協定變化而來。但是一般的有線網 路路由協定並不能直接應用到行動隨意網路中,原因為在前面的我們所提到的行 動隨意網路的特性:頻寬有限、能源有限、動態的網路拓樸等等[2,24]。因此必須 作某些程度上的最佳化與變形來適用於行動隨意網路。

目前針對行動隨意網路所設計出來的主動式路由協定,大致上區分為兩種:距離 向量法(Distance vector)和鏈結狀態(Link state)兩種主動式路由方式[1,14,27]。距 離向量法依靠相鄰的行動節點互相交換彼此的距離向量,這個向量值所紀錄的是 本身到網路中所有行動節點的距離,透過將此距離資訊傳送到整個網路中,藉此 計算出本身到網路中各行動節點的最佳路由。而鏈結狀態法則是把每一個行動節 點本身能與其它哪些行動節點連結的鏈結狀態散播到整個行動網路中,當每一個 行動節點得到整個網路的鏈結狀態後,就能計算出到各行動節點的最佳路由。

下面我們會對距離向量法舉出最具代表性的協定 DSDV 說明其特點[14,24]:

(21)

Destination-Sequenced Distance-Vector(DSDV)[14]是行動隨意無線網路中最 早被提出來的路由協定的其中之一。使用 DSDV 的每一個行動節點,除了為自 己紀錄一個遞增的序列編號外,還會為行動隨意網路中每一個已知的行動節點紀 錄其目的地序列編號(Destination sequence number)[1]。鄰近節點交換的路由更新 中,除了含有距離向量外,亦都會有附帶相對的目的地序列編號,利用此序列編 號,便能確定此距離資訊是否為最新的資訊,越大的序列編號則代表此資訊越新。

DSDV 的路由封包分為累加式(Incremental routing update)和完整式(Full routing update)路由更新兩種[14]。完整式路由更新為每隔一段固定的時間便會自 動執行一次,使用此更新需要將本身的全部路由表格資訊廣播出去;但如果只有 少量的路由資訊變動,則會執行累加式路由更新的方式,以減少廣播路由更新時 所浪費的網路頻寬、行動節點能源等。

下面圖 2-1 與表 2-2 將用來說明 DSDV 路由協定的運作方式,圖 2-1 為一行 動隨意網路之任意散佈的網路拓樸,每一個圓點都是代表一個行動節點,當使用 DSDV 路由協定相互交換路由資訊後,行動節點 1 能夠建立表 2-2 的路由表。當 行動節點 1 想送封包給行動節點 9 時,行動節點 1 透過查詢自己的路由表便能得 知要透過行動節點 2 轉送才能送達行動節點 9,便會將封包往行動節點 2 傳送。

(22)

1

2

3 4

5

6

7

8

9 來源地 

目的地 

圖  2-1  行動節點的網路拓樸 

(23)

表 2-2 行動節點 1 的路由表格

目的地 下一個行動節點 跳躍數(hop) 序列編號

2 2 1 65 3 3 1 80 4 3 2 72 5 2 2 87 6 3 2 99 7 3 3 101 8 3 3 112 9 3 4 118

2.

回應式路由:

在回應式路由(Reactive routing,或稱為 On-demand routing)協定中,每一個 行動節點只會尋找和維護「有需要」,所謂有需要是指有送封包需求或當中繼節 點功能。回應式路由的優點在於能節省沒有被使用之路由的維護成本[1]。但在 第一次作路徑尋找時須耗費較多的時間。

以下我們會對最具代表性的回應式路由協定 DSR[14,18,27]作說明:

Dynamic Source Routing(DSR)的基本精神為:(1)每一個封包的完整路由在來 源節點時便已經決定好,並存放在該來源節點的路由快取(Route cache)中,(2)路 徑資訊是附在資料封包的表頭(Header)中,中繼節點能按照表頭上的路由資訊,

將封包送往目的地節點[1,14,18,27]。另外,若有需要,中繼節點也能快取其它資 料封包表頭中的路由資訊做為己用。

當一個行動節點打算送出一個資料封包,但其本身的路由表格中並沒有該目 的節點的資訊時,該行動節點便會啟動路由探索(Route discovery)[14,18]來找尋 到達目的地節點的路徑。路由探索會由行動節點送出路由請求(Route request,

(24)

RREQ)[14,18]封包來啟動,當某一個中繼節點收到 RREQ 封包時,會有兩種情形 產生:a.接收並廣播過此 RREQ 封包,則會將此一封包丟棄,b.若無接收與廣播過 此 RREQ,則更新 RREQ 封包內部資訊,例如把跳躍數(hop)累加,並且繼續廣 播此 RREQ 封包。當 RREQ 被轉送到目的地節點或是某一個中繼節點的路由快 取中包含有此目的地節點的資訊時,該行動節點會回覆一個路由回應(Route Reply, RREP)[14,18]封包並傳送回原本來的來源節點,而 RREP 封包會利用來源 路由的策略來傳送,簡單來說,即 RREP 中包含回送路徑中各個中繼節點資訊被 記錄在封包的表頭中,RREP 就按照此路由資訊回送至來源節點,當來源節點收 到 RREP 時,會將表頭中的路由資訊存入路由快取,之後便利用此路徑來做資料 的傳送。在 DSR 路由協定中,當路徑發生斷裂時,即傳送封包給下一個行動節 點遇到失敗時,則該行動節點會自動產生路由錯誤(Route Error, RERR)[1,14,18]

封包,送回並告知來源節點,而沿途經過行動節點也會把該已經發生錯誤的路徑 資訊,從路由快取中清除,以避免同樣的錯誤再次產生,當來源節點收到 ERR 後,會先尋找本身的路由快取是否有替代路徑,若無,則再次的重新啟動路由探 究尋找新的替代路徑。

DSR 使用來源路由和路由快取因此能有下列幾項優點:

(1) 因 RREQ 和 RREP 皆使用來源路由傳送,故除了來源節點和目的地節點外,

中間所有的中繼節點皆能得知完整路徑的路由,如有需要,亦能順便記錄到 它們的路由快取中利用[1,18]。

(2) 藉由竊聽附近經過的封包表頭資訊[18],不需要額外的自行去探索新的路 由,便能取得更多和更新的路由資訊。

(3) 來源節點可以在路由快取中收集多條到達同一個目的地節點的路徑[1,18],

一但原本的路徑發生錯誤時,也能夠快速地使用其他路徑取代,不用再重新 執行路由探索的動作。

圖 2-2 為 DSR 的路徑探索舉例,行動節點 1 共找到 3 條不同的路徑來到達目

(25)

的地節點 15,分別為 1-2-5-9-13-15、1-4-8-12-15、1-3-6-10-14-15。

1 2

3 4 5

6

7

8

9

10

11 12

13

14

15

來源地 

目的地 

RREQ

RREP

路徑 1:1-2-5-9-13-15 路徑 2:1-4-8-12-15 路徑 3:1-3-6-10-14-15

圖  2-2  dsr 路徑探索 

(26)

路由協定特性與優缺點整理

表 2-3 為兩種路由協定的主要特性與優缺點,主動式路由,必需花費較多的 網路資源以維持隨意式網路的最新狀況[14];回應式路由,則必需耗費許多的時 間去建立網路拓撲[14]。所以必需依據不同的行動網路所組成環境,去選擇最適 合的路由協定,才能發揮行動隨意網路本身強大的無線通訊能力,協助網路提供 更優質與穩定的通訊環境。

表 2-3 行動隨意網路的路由協定的主要特性與優缺點

路由特性 主動式路由 回應式路由

代表性的路由協定 DSDV、OLSR。 AODV、DSR、TORA。

基本的環境假設 在行動隨意網路中的每

個行動節點,都需要一個 記錄網路連線資料的路 由資訊表。

在行動隨意網路中,只有 在 需 要 進 行 傳 遞 資 訊 時,才必須建立連線,尋 找可用路徑。

優點 一、行動隨意網路在進行

資訊傳送時,不需要重新 建置連線,可直接傳送資 料;

二、透過路由表導向的維 護機制,可以更容易控管 網路中的行動節點;

三、較有效率的路由演算 法。

一、行動節點能任意移出 網路所能通訊的範圍,不 受任何傳輸範圍限制;

二、只在需求時,才會建 立連線,有效減少不必要 的網路封包傳送。

缺點 一、行動隨意網路初始建

設時,需要龐大的通訊與 運算資源,加以計算出行

一、需要傳遞資封包時,

才會建立通訊連線,可能 會因為網路頻寬不穩定

(27)

動網路的連線;

二、在行動隨意網路運作 時,會因為行動節點經常 任意移動的影響,而造更 新路由表不易與龐大成 本;

三、行動節點的消失或損 壞,也非常容易造成網路 癱瘓;

四、當執行廣播時,易造 成網路傳輸封包的廣播 風暴,影響網路整體效 能。

而延遲連線的速度;

二、網路中的行動節點維 護不易;

三、在建立連線前,會需 要使用廣播通訊機制,易 干擾其他的傳送封包。

行動隨意網路中的合作快取

在行動隨意網路的研究中,有一方向的研究是為了減少行動隨意網路中行動 節點擷取資料的反應時間,學界提出將查詢所需的資料暫存於各行動節點的暫存 記憶體中[6,7,8,9],以減短行動節點執行查詢的反應時間。但是直接暫存資料存 放於行動節點的記憶體內,雖然能快速反應查詢以及減短節點擷取資料項的存取 時間,可是因為我們在前面所提到行動節點的暫存記憶體空間是有限的,很難將 所需要的全部資料都暫存於每一個行動節點本身的暫存記憶體中。為了解決此一 問題,行動節點可將查詢需要但是無法暫存於行動節點區域暫存記憶體的資料暫 存於鄰近行動節點的暫存記憶體中,在需要資料項時,行動節點可向鄰近的行動 節點要求資料項[6,7],如此不僅能夠節省直接向資料來源要求資料項的時間,也 可解決自身空間不足的問題。因此,行動節點的暫存記憶體可分為兩個部分,第

(28)

一個部分為區域暫存記憶體,用來滿足自己資料需求的區域暫存資料(Local caching data);第二部分為合作暫存記憶體,用來服務其它行動節點的合作快取 資料(Cooperative caching data)[25,31],這便是我們此小節所要說明的合作快取。

從上述所說明的行動隨意網路中的合作快取,我們可以知道此類的研究所著 重的目標便是在於「資料」對於每一個行動節點的重要性,因為行動隨意網路上 的合作快取的研究便是針對我們所熟知的應用層上的資料去做分配、處理的工 作,進而能找到更好的資料合作快取方式,使行動節點的耗電減少、存活時間更 長以維持網路品質。因此真實的資料在行動節點之間的傳送就成為了合作快取的 研究中最基本亦是最重要的一個部份,因為如果資料項不能符合真實的情形,而 只是單純的封包流量,那麼所得到的實驗結果是否能貼近現實便令人存疑。而在 我們有限的能力所調查與行動隨意網路中合作快取相關的研究,發現此類研究的 實驗可以粗分為兩大類,一類是不使用 NS2 做為模擬工具,另一類則是使用 NS2 做為模擬工具,但是並非是按照 NS2 所訂定的網路架構去使用。第一類不使用 NS2 做為模擬工具,而是所有行動節點的架構、行為、移動樣形等都由自己所訂 定,此類的結果很難使所有學者都信服。而本論文是針對第二類去做改進,所謂 並非是按照 NS2 所訂定的網路架構去使用就是指在 NS2 最基本的概念便是分為 應用層、代理層、節點連節層,而第二類的實驗通常都是忽略代理層,直接將代 理層和應用層合併為一層,雖然是使用 NS2 所得到的實驗結果,但是因為直接 將代理層與應用層合併為一層,可能在某些應用層或是代理層需要獨自去處理的 地方會出現問題,這便是我們有疑問的地方。因此我們的研究目的便是針對 NS2 中的應用層,去實現以完整的 NS2 架構能夠傳遞真實資料為目標,冀望能夠使 合作快取上的研究能夠更加的與現實相符。

(29)

第二節 NS2 的簡介

NS2 是一個離散事件的網路模擬器[17,19],它源自於美國 DARPA (Defense Advanced Research Projects Agency)所主導的 VINT(Virtual InterNetwork Testbed) 專案,此專案由 USC/ISI、Xerox PARC、LBNL、UCB、CMU 和 Sun Microsystems 聯合開發,主要用來模擬實體網路系統的架構與特性。為了兼顧執行的效能與使 用的彈性,NS2 軟體架構上同時採用速度快的 C++與易配置的 OTcl(Object TCL),圖 2-3[17]為 NS2 的基本架構示意。

而 NS2 網路模擬器中的無線網路模型最初是由 CMU’s Monarch group 所研 究發展而來,提供模擬無線網路的情形[17]。無線模型本質上是由行動節點構成 [17],以使用多點跳躍的隨意網路和無線區域網路等能進行模擬。一個行動節點 是一個基本節點附加了無線的功能後的節點,且行動節點能在一個我們假設的拓 樸區域中任意移動,並使用所設定的無線頻到接收和發送信號。

在 NS2 的設計概念中,主要是將我們我熟知的 OSI 七層網路架構簡略的分 成應用層、代理層與節點連節層三個分層,圖 2-4[17]所表示為 NS2 中一個簡易 的網路拓樸,圖中的 Application、Transport agent 與 node 便是我們下述所要介紹 NS2 的應用層、代理層與節點連節層,下面我們會就這三個分層做一個基本的介

紹 。

圖 2-3 ns2 的基本架構

(30)

圖 2-4 簡易網路拓樸

應用層 

在 NS2 中既有的應用層,主要分為兩大類:1.Traffic Generators、2.Simulated Application 兩類。

(1) Traffic Generators:

此類的應用層是在間隔一定的時間,便會送出一個固定大小的封包流量 [16],在 NS2 中已建立的有 Constant Bit Rate(CBR):送在固定的間隔內時間 送出相同大小的封包給另外一個行動節點、Exponential:在隨機的間隔時間 內,傳送固定的封包予其它行動節點、Traffic Trace:透過已經給定的 trace file,去產生流量,且這些 trace file 通常都包含一系列的傳輸量和封包大小,

此方式通常用在影像處理的問題方面較多。

(2) Simulated Application:

和上述的 Traffic Generators 不同的是,Simulated Application 沒有預先決定好

(31)

在間隔時間內要傳輸固定的封包流量[17],而是當真的需要傳輸的時候,才 會去執行傳送的動作,而且封包的大小並不固定。在 NS2 中主要透過 FTP 去實行這樣的概念。File Transfer Protocol(FTP):在 NS2 中的 FTP 傳輸並不像 我們所熟知的 FTP 需要去傳輸一個檔案,而是只有傳輸封包流量,但與 Traffic Generators 不同的是,我們可以決定在什麼時間,傳送多大的封包,

給另外的行動節點。

代理層

NS2 中的代理層為 TCP、UDP 等通訊架構的實現,透過圖 2-5[17]可以觀察 到 TCP 是連結應用層和節點連節層的一個橋樑,當應用層想要傳輸資料時,只 要通知代理層想要傳送什麼類型的資料,代理層便會負責將所想要傳送的資料經 過其所定義的通訊協定放入封包中,再由節點連節層送出。

圖 2-5 ns2 中以 tcp 為代理層之封包傳輸

(32)

所以如果我們想對傳送真實資料這個議題去做研究,就必須要先了解 TCP 代理層的基本運作方式,而 FullTCP 是 TCP 的雙工延伸,透過圖 2-5 我們可以 了解,在 NS2 中一般的 TCP 只有單一的傳輸或接受能力,不具有主動回應的功 能[17],而 NS2 的 FullTCP 則是針對此點去做改進,使其有回應的能力,故我們 在此就不多做說明,而在下面的章節中我們會說明對 TCP 與 FullTCP 去研究真 實資料傳遞的過程與差異。

下述我們會對 TCP 做個簡介,包含封包遺失檢測機制與擁塞控制機制,做 為我們下一章如何使 NS2 傳輸真實資料的前導介紹。

TCP 本 身 的 目 的 是 在 網 路 上 提 供 一 種 可 靠 點 對 點 的 資 料 傳 輸 方 式 [3,19,17],通過重傳計時器[3]是否超時和是否收到重複確認資訊(duplicate ack)[3]

這兩種遺失封包監測機制來判斷是否發生封包遺失,以啟動壅塞控制機制;在壅 塞控制的情況下,採用慢速啟動(Slow Start)演算法和快速重傳(Fast Retransmit) 演算法來控制傳輸速率。

1. 封包遺失檢測機制 (a) 重複 ACK 封包

重複 ACK 有兩個作用,第一,發送端可以確定該 ACK 編號之前的 TCP 封 包都已經被接收端成功接收;第二,發送端可以據此判斷出接收端接收到的 TCP 封包發生了亂序的情況和接收端當前期待的 TCP 封包編號(sequence number),從而觸發其壅塞控制策略[3,17]。

(b) 超時重傳

發送端發出封包後,在規定的時間內沒有能夠收到接收端返回的 ACK 封 包,從而使得發送端認為該封包遺失,觸發其擁塞控制策略。在這裡面主要 涉及到重傳計時器(retransmission timer)[3],它是 TCP 協定中最重要的計時 器。當封包發出後,重傳計時器立即啟動,如果發送端在計時器超時之前得 到 ACK,則計時器停止;如果計時器超時後仍然沒有收到 ACK,那麼封包

(33)

就得重傳,並且計時器重新啟動。

2. TCP 擁塞控制機制簡介 (a) 慢速啟動演算法[3] :

壅塞控制主要是通過調整發送端的發送速率,而這主要是通過三個變數實現 的:擁塞視窗(Congestion Window)、接收端視窗(Receiver’s Window)和慢速 啟動臨界值(Slow Start Threshold)。發送端一旦監測到封包遺失,其原因可 能是重傳計時器(RTO)超時,也有可能是收到重複的 ACK。發送端就會開始 調整發送速率。這其中包括,慢速啟動臨界值調整為當前壅塞視窗的一半,

同時壅塞視窗的值將降低到 1。然後,才會再開始傳送封包,讓壅塞視窗持 續增長。在壅塞視窗大小沒達到慢速啟動臨界值之前,會以指數速度增加;

在到達慢速啟動臨界值之後則開始以線性增長。

(b) 快速重傳演算法[3]:

當發送端連續收到 3 個對應於同一個編號的 ACK 封包時,便會觸發快速重 傳演算法,即發送端不等重傳計時器超時,立即向接收端發送指定的封包。

節點連節層

在 NS2 的模擬中,無線網路是由數個可互相通訊的工作站所組成[5],此類 工作站稱為行動節點(mobile node),每一個行動節點(mobile node)由許多的網路 元件(network component)堆疊而成,其架構如圖 2-6[17]所示,以下我們將分別介 紹每個節點連節層中網路元件的功能及與其相鄰元件的關係。

(34)

圖 2-6 行動節點的架構圖

 

(1) entry_:entry_是網路上傳遞的封包進入行動節點所接觸的第一個元件,它單 純只作為一個進入點標示並無其他用途,由於 entry_直接指向 addr demux 元 件,因此封包經過 entry_後會直接進入 addr demux。

(2) Src/Sink agent:每一個行動節點可以連接多個 agent,例如我們所熟知的 TCP、UDP 等,每個 agent 皆被指定一個埠號(port number),Src agent 所產 生的封包會直接交給下一個元件 entry_;而 Sink agent 則接收 port demux 所 交送的封包。

(3) addr demux:addr demux 可視為一個地址解多工器(de-multiplexer),即進入 addr demux 的封包,解多工器會分析其目的地地址欄位(destination address field),若目的地地址欄位即為本身 mobile node 時,則將封包交給下一個元 件 port demux,若否,則將封包交給另一個元件 defaul ttarget_(即 RTagent),

由所選定的 RTagent 去尋找目的地的地址欄位。

(35)

(4) port demux:port demux 擁有多個指標,每個指標分別指向不同的 agent,port demux 也是解多工器,不同於 addr demux 的是 port demux 會分析其封包目 的地埠號欄位(destination port field),並將封包交給對應相同埠號的 agent。

若找不到相對應的 agent,則將封包交給對應埠號 255 的 RTagent,由 RTagent 去決定。

(5) RTagent:RTagent 是一個具有 routing 功能的 agent,透過 routing table 的查 詢,設定封包下一個傳送地址(next hop),並將封包交給下一個元件 LL,若 在 routing table 中找不到下一個應傳送的地址時即沒有任何一條(route)可供 封包傳送時,則先將封包暫存於佇列(queue)中,待之後 routing table 獲得更 新並找到適合的傳送路徑時,再將佇列中的封包執行傳送動作。routing table 更新的時機有二種情形,一種為固定週期廣播,告知相鄰的節點有更新的路 徑,另一種為不定時由相鄰的節點觸發路徑的更新,在下一節我們會深入介 紹上述兩種類型的 RTagent。

(6) LL:LL(Link Layer)包含附屬元件 ARP (Address Resolution Protocol),其主要 提供 IP address 轉換成 MAC address 的功能,LL 在接收 RTagent 所送來的 封包後,將封包交給下一個元件 IFQ(Interface Queue)。LL 還會負責另一項 任務就是將 MAC 層所送上來封包交送給 entry_。

(7) ARP:ARP(Address Resolution Protocol)主要接收 LL(Link Layer)元件的查 詢,如果 ARP 知道封包目的地的地址為 MAC address 時,則將 MAC address 寫入封包所對應的欄位,若無法得知,則廣播 ARP query 封包並將待傳封包 暫存,一但收到其他節點所發送的 ARP reply 時, 則將之前暫存的封包送出 並交給 IFQ (Interface Queue)元件。

(8) IFQ:IFQ(Interface Queue)提供一般佇列 (queue) 的功能,主要功能為將由 LL(Link Layer)元件所送來的封包暫存於 queue 中,比較特別的是它提供特 定 routing protocol 類型的封包有較高優先權得以先交給 MAC 元件來處

(36)

理,如 DSR、TORA、AODV 等類型的封包,這些封包是由 RTagent 所產生。

在 IFQ 元件中等待的封包由 MAC 元件決定何時由 IFQ 元件中取出並傳送 至 MAC 元件。

(9) MAC:MAC layer 主 要 接 收 來 自 IFQ 元 件 的 封 包 , 將 封 包 交 給 NetIF (Network Interface)元件處理,同樣也接收來自 NetIF(Network Interface)元件 的封包,並將封包傳送至 LL(Link Layer)元件。

(10) NetIF:NetIF(Network Interface)主要作為行動節點存取 channel 的硬體介面,

著重在接收經由其他行動節點的 NetIF 所傳送的封包有可能發生的碰撞及 無線電波訊號強弱等議題,當封包要送出 NetIF 時,NetIF 會在封包中記錄 有關 interface 的特性(meta-data),如電力、波長等,接收端 NetIF 在收到封 包時,會解讀 meta-data 的內容,判斷其是否有足夠的電力來接受、偵測封 包或丟棄。

(11) Channel:主要接收來自 NetIF(Network Interface)的封包,並將封包轉向往上 傳送至接收端行動節點的 NetIF(Network Interface)元件。

(12) Radio Propagation Model:主要的功用是用來計算接收行動節點時的信號強 弱,當接收到的信號強度小於門檻值時,會被標記為 error 並被 MAC 層丟 棄。

(37)

第三章 NS2 資料傳輸模組的設計

由於本研究是針對 NS2 的應用層上傳送真實資料為目的,故在我們能力所 及的範圍中,蒐集觀察的研究文獻裡,僅針對 NS2 上的應用層及代理層提出討 論,下面我們會先將認為過往研究所不足與缺少的部份提出,然後提出改進的方 式去彌補我們認為過往研究所缺乏的部份。

第一節  過往研究的討論 

關於針對 NS2 應用層上的研究,我們在前面的章節有提過,因為 NS2 的應 用層只有單純的提供一個固定的封包流量,例如 512KB、1024KB 的封包,讓研 究人員透過這些流量去觀測網路的變化情形,從而能發展出更多有效益的網路協 定與功能。但是時至今日,隨著網路的發展,各種的應用議題也越來越被重視。

舉例來說,在行動隨意網路中,有部份的研究是針對在每一個行動節點上所擁有 的資料去做交換,因為我們在前面有提過,每一個行動節點本身的電力、記憶體 都是有限的,而行動節點所需要的資訊則是會不停的變動。所以如何在有限制的 情況下使每一個行動節點儘量得到所需要的資訊,並且儘量降低所消耗的電力,

藉此增加每一個行動節點的壽命,或是提高行動隨意網路的服務品質。而此類的 研究就必須要有真實的資料在行動節點間傳遞,才能得到較符合現實的結果,但 因為 NS2 本身設計上的限制,使得要在現有的架構下,使用完整的應用層、代 理層及節點連節層這三層來傳送真實資料是有困難的,因此過往的研究大部份都 是捨棄掉應用層這一部份的分層,只使用代理層與節點連結層,並直接在代理層 上面建立一個符合自己研究需求的代理層與封包結構,且將所需要傳遞的資料放 入自訂的封包中,來執行研究者本身想達成的模擬方式,下面我們會介紹是如何 在 NS2 上自訂代理層與封包格式的過程,在下文我們稱一個新的自訂代理層為 ExAgent。

(38)

建立 ExAgent 協定:

(1) 自訂 ExAgent 之封包結構

圖 3-1 exagent 所需封包格式

由於此範例之目的,希望得到節點之間的回應時間,並傳送資料。因此在自 訂的封包格式中,需紀錄時間、行動節點狀態的資訊與所想要傳送的資料。圖 3-1 中,我們將 ExAgent 的封包結構較重要的部份提出來介紹,可以看見 Send_time 為紀錄發送端傳送要求回應的時間,State 則為紀錄封包狀態的資訊,

為 0 或 1 的判斷值;Data 是紀錄欲傳送的資料;系統時間則可由 NS2 中的 Scheduler::instance().clock()函式取得,若 state 為 0 時,則表示該封包為要求回應 之封包,而 state 為 1 時,則表示該封包為目的端回應封包。而且由於此封包為 自訂封包,在 NS2 中無法直接使用;因此為了提供 NS2 其他內建元件可以使用 此 自 訂 封 包 格 式 , 因 此 必 須 給 予 一 個 可 供 NS2 專 門 做 封 包 管 理 的 類 別 PacketManager 存取的地方。故必須於自訂封包內加入 offset_參數,並經由 Packet::access()函式取得自訂封包內的資料,包含封包大小、IP 位置等。

  Send_time State Data   ………….. 

(39)

(2) 繼承 Agent 建立 ExAgent 類別

圖 3-2 繼承 agent 類別

在 class Agent 的類別圖中,我們舉例了幾個成員函數例如像 send()、

sendto()、sendmsg()、command()等,Agent 為建立代理層協定的父類別,因此當 想要建立新的代理層協定時,必須繼承該物件,才能夠順利運作,如圖 3-2 所示,

其中 command()是最重要的部份,用來撰寫此 Agent 會透過 TCL 下達的指令執 行什麼樣的動作,例如傳送一個封包。

send() sendto() sendmsg() command()

send() sendto() sendmsg() command()

<<Inherits>>

Agent

ExAgent

(40)

(3) 自訂封包表頭命名

圖 3-3 自訂封包表頭命名

圖 3-3 中 PacketHeaderClass 為 NS2 中管理封包表頭的一個類別,因此我們 必須給予該封包表頭一個名稱 PacketHeader/EX,並標明其繼承類別,才能使用 自訂的封包表頭去存取封包內的資訊。

init()  alloc()  allocdata()  free() 

init() alloc() allocdata() free()

PacketHeader/EX

<<Inherits>>

PacketHeaderClass

ExHeaderClass

(41)

(4) 使用 ExAgent 中傳送封包

圖 3-4 為接收並執行由 TCL 中下達之命令。當我們對 TCL 物件下達 send() 指令時,該 send()指令會送到物件的 command()此函式中進行處理。當接收到 send()指令時,會先配置記憶體位置給封包,並將各種所需資訊寫入自訂的封包 格式中,在此我們將先前建立的自訂封包的三個主要數值提出說明,首先 Send_time 使用 NS2 中的 Scheduler::instance().clock()取得目前系統時間,我們假 設系統時間為 1,其次因為這是一個要求回應的封包,因此 State 的值為 0,最後 將我們想要傳送的資料 realdata 存入 Data 中並一併寫入封包中,完成上述封包建 立動作後,最後將封包再透過 ExAgent 中的 send()傳送出去;若以上動作皆成功 時,則回傳一個 TCL_OK 訊息。

TCL

ExAgent send

command()

Send_time=1 State=0 Data=realdata   ………….. 

send()

圖 3-4  傳送封包 

(42)

(5) ExAgent 中接收封包

在代理層 ExAgent 中,另一個重要的成員函數為 recv(),我們在此函式中處 理接收到封包的動作。首先我們先擷取出所需的封包中的資料進行判斷。我們先 判斷接收到的封包為何種型態,此自訂封包的狀態有兩種,一是要求回應,一是 接收回應。圖 3-5 為當接收端收到 state = 0 的封包時,它就會將封包內的時間紀 錄下來,且將來源端所傳送的資料紀錄下來,並將此時間紀錄寫入一個新的封包 中,而 state 也改寫成 1,再利用 send()傳回來源端。

Send_time=1 State=0 Data=realdata   ………….. 

ExAgent

command()

recv()

Data=realdata Time=1

  Send_time=Time State=1 Data   ………….. 

send()

圖  3-5  接收封包(1)

(43)

圖 3-6 為當來源端收到封包時,同樣也去檢查 state 的狀態,當它發現 state 為 1 時,則可以得知該封包為目的端處理過後的封包;recv()在詢問系統時間後,

在此我們假設系統時間為 2,將其減去由自訂封包內所取得的時間紀錄,即可得 到目的端的回應時間為 1。

ExAgent

command

recv()

Send_time=1 State=1 Data   ………….. 

System time=2

Response time

=System time-Send_time

=1

圖 3-6  接收封包(2)

(44)

經由上述的描述,我們可以得知新增一個新的代理層是要經過相當多的步 驟,而且上述僅僅只有一個簡單的傳送真實資料與計算回應時間,如果是要實現 研究人員所想要的更精細的想法,勢必要增加更多的程式才能達成。而且每一個 代理層都是只針對研究人員的一個想法來執行,如果需要其它的方法來進行 NS2 的實驗,則又必須重新再新增一個代理層。這樣在我們看來是非常沒有效率的一 件事,因為針對一個議題就必須建立一個新的代理層,且還必須對新增的代理層 再建立想要的新的封包格式,重點是這些新增的物件並不是 NS2 本身所已經根 據現有的代理層,如 TCP、UDP 等去建立,而且也將應用層與代理層直接合併 為同一層,在 NS2 的模擬中,只剩下代理層與節點連結層此兩個分層,因此一 些細節的設定,舉例來說:行動節點的電力消耗、代理層的通訊的認定等,所以 透過自訂代理層所表現出來的實現結果是不是真的貼近現實,是讓我們存有疑問 的地方。

因此,在下面我們會先介紹資料傳輸的基本 TCL 命令,再針對上述的問題,

在 NS2 現在有的架構下,以完整的三層架構,包含應用層、代理層與節點連節 層去做真實資料的傳送,並且使用在 NS2 中已經定義的 TCP、FullTCP 為代理層,

以期能夠達到更貼近現實的結果。

第二節  資料傳輸 TCL 命令 

在這個部份我們會解說五個主要的 TCL 命令在資料傳輸上的實現。

(1) $application attach-agent $agent:此 TCL 命令主要的作用是在於將應用層與代 理層兩方面透連結起來,以便應用層傳輸資料時能順利的將所想要傳送的資 料給予代理層去執行處理。如果沒有此 TCL 命令,那麼應用層便無法透過 代理層將資訊傳送出去,進而造成錯誤。

(2) $application start:透過應用層所下達的 start 是一會直傳送相同大小的封包流

(45)

量,直到系統模擬的時間結束或是下達 stop 指令時才會停止傳輸資料封包。

(3) $application stop:在資料傳輸中,用來停止上述 start 所不斷產生的流量,因 為 start 只有在系統模擬時間結束時才會停止傳輸流量。因此若要在系統模 擬時間結束前預先停止透過 start 所產生的流量,就並需使用 stop。

(4) $application send $size:這個 TCL 命令亦是傳輸資料封包流量的一個 TCL 命 令語法,但與 start 不同的是,此 TCL 用於資料傳輸上只會傳輸一次的資料 封包流量,比如說我們想要傳輸一個 100KB 大小的封包,就只需要將 size 的地方設定成 100 便能達成。

(5) $application sendto $size $data $node:此 TCL 命令在資料傳輸上是一個我們 所建立的全新的命令,除了保有 start 與 send 的傳輸資料封包流量的功能外,

在前面的章節有提過,NS2 的只能傳輸空有流量的封包。因此此 TCL 命令 還能指定所要傳送的對象行動節點與傳送真實資料,達成所想要傳送真實資 料的概念。

在下面兩個小節,我們會針對 NS2 中現有應用層與代理層去做描述,並且 說明我們是如何新增應用層。同時結合 NS2 現有的代理層,TCP 與 FullTCP 去 達成真實資料的傳送。新增應用層並不會對我們所想得知的行動節點資訊,如電 力消耗有所影響,因為這些數據都是透過代理層中的協定與節點連結層去做計 算,因此之後如果欲使用我們所新增的應用層來研究如合作快取、資料重置等等 的議題,只需要在針對 TCL 上對該應用層下達所設計之想要嘗試的方法,便能 達成,而不需要在像上一小節那樣新增一連串的自訂協定。

(46)

第三節  資料傳輸模組應用層的設計 

在 NS2 中既有的應用層,我們在第二章介紹 NS2 時已經提過主要分為:Traffic Generators、Simulated Application 兩大類。不論是 Traffic Generators 或是 Simulated Application,都僅是傳送只有流量的封包,而並非傳送真實的資料,因此下面會 闡述我們如何在新增應用層,以下稱為 ecapp,來達成傳送真實資料的概念。

NS2 中不論是應用層或是代理層都有一個父類別,此類別包含了一些基本的 成員函數,任何繼承它的子類別都能直接去使用,而我們所建構的 eacpp 類別就 是從應用層父類別中去衍生出來,如圖 3-7 所示。

舉例來說,我們的 ecapp 繼承了父類別中的幾 send、start、stop 幾個函式,send圖  3-7  application 繼承 

應用層 

ecappClass

send()  start()  stop() 

Agent *agent  send() 

start()  stop() 

Agent *agent 

<<Inherits>>

ApplicationClass

(47)

例如說我們想在 1.0 秒時送出一個 512kb 的封包就能使用 send()這個成員函式,

而 start()則是當想要不停的傳送封包,用以測試類似網擁塞程度控制時,可以使 用 start()並輸入參數-1,那麼 NS2 就會從開始執行 start()的時間傳送封包流量,

直到模擬結束;stop 則是能停止所有流量的傳輸。Agent *agent 則是連結應用層 和代理層的一個重要成員資料,我們在下一節提到代理層時會解說。

由於一開始的 Application 只有單純的提供 send()此成員函數功能,所以我們 只能傳送一個單純的封包流量,而不能指定要傳什麼樣的資料內容及傳送給那一 個行動節點。圖 3-8 為我們所新增的 ecapp 及其成員函數與成員資料。

圖  3-8  ecapp class 

sendto(nbytes,data,dst)

send()

recv() command() start() stop()

Agent *agent

ecappClass

(48)

在 ecapp 中會新增一個成員函數稱為 sendto()來達成我們上面所想要的功 能,此 sendto()成員函數包含下列了幾個部份:

a. nbytes:這個成員資料是表示我們想要傳送的封包流量大小。

b. data:此成員資料能讓我們自己輸入想要傳送的真實資料,也是最重要的一個 部份。

c. dst:這個成員資料則是能決定我們要傳送給那一個行動節點,在此我們能執 行廣播和點對點傳輸等兩個基本的動作,當需要廣播時,我們輸入的參數為 -1;其它數字則為行動節點的位置編號。

第四節  資料傳輸模組代理層的設計 

在解說此章節前,我們先對應用層與代理層之間如何做連結提出解說,在圖 3-9 中,我們可以看到在應用層中有我們上一個小節所提到的重要成員資料 Agent

*agent,透過 TCL 所下的一個指令$application attach-agent $agent,NS2 會將應用 層與代理層透過 Agent *agent 連結起來。

應用層   

agent

代理層   

Application

Agents

send recv

圖  3-9  應用層與代理層連結 

(49)

接下來會對我們在此研究中所使用的兩個代理層來解說,分別是 FullTCP 與 TCP 這兩個代理層,會選擇以此兩個代理層來使用的原因是因為它提供了可靠的 點對點連線、完整的回應機制、錯誤控制、擁塞機制控制等。

(1) FullTCP:

一開始我們是選擇 FullTCP 來做為實驗的代理層,因為 FullTCP 本身支援雙 工的傳輸,所謂雙工傳輸就是一個 FullTCP 的代理層可以同時的接收從其它 行動節點傳送過來的封包,也能夠有回應的能力。且 FullTCP 也保有 TCP 的特性,透過三次交握的特性來達成可靠的點對對傳輸。且在 NS2 中,本 身有提供針對 FullTCP 而建立的一個應用層,能傳送我們所想要的真實資 料,名為 tcpapp,但是經過我們的試驗,發現此應用層只適用在有線的環境 底下,並不適合用在我們所需要的行動隨意網路的環境之下,因此我們改用 上面所自行建立的一個應用層 ecapp。在一開始點對點的情境之下,兩個行 動節點能順利的達成我們所想要的結果,但是當我們將行動節點的數目增加 時,發現 FullTCP 不能正確的將所需要傳送的資訊傳送到正確的行動節點,

舉例來說:我們有五個行動節點,行動節點 1 至行動節點 5,當行動節點 1 與行動節點 2 達成三次交握之後便會開始傳送資料,如圖 3-10 所示。

(50)

但是當我們想要再使用行動節點 1 傳送其他資料給另外一個行動節點時,卻 產生了無法傳送的情況,經過研究及蒐集資料,發現這是 FullTCP 設計上的缺 陷,許多研究人員也碰到此一問題。解決的方式為當需要再利用同一個行動節點 傳送資料給不同的行動節點時,必須要先將上一次兩個行動節點之間的 connect 連線關閉,再讓欲送資料的行動節點跟接收的行動節點重新建立三次交握,才能 順利的達行使用同一個行動節點傳送資料給不同行動節點的此一目的。延續上述 行動點節 1 傳送資料給行動節點 2 的問題,當行動節點 1 完成傳送資料給行動節 點 2 的傳輸動作後,想再傳送另外一個資料給行動節點 5,就必須利用我們上面 所敘述的方式才能順利的傳送給行動節點 5,如圖 3-11 表示。

1

2

5

4 3

Realdata

 

圖  3-10  fulltcp 網路拓樸(1)

(51)

由於行動隨意網路的特性之一,網路拓樸變化快速,所以上述 FullTCP 每次 需要傳送資料給不同的行動節點,就必須重新再建立一次 connect 並不適合用在 行動隨意網上,因為當一個行動節點在傳送資料給另外一個行動節點時,就已經 知道下一個資料是要傳給另外一個行動節點,但是還是必須等待此次的傳輸完成 後再中斷連線,然後再跟下一個需要傳送資料的行動節點進行連線,再傳送資 料,這中間的時間可能行動節點已經離開通訊範圍或是所需的資料已經不是新鮮 的。因此在下面我們會介紹 TCP 來解決 FullTCP 上的此一問題。

(2) TCP:

為了處理上述 FullTCP 的問題,因此我們改用 TCP 做為代理層,和 FullTCP 不同的是,TCP 並非支援雙工,意思是在 TCP 中分為發送端與接收端兩種 的 TCP,發送端稱為 TCP,而接收端稱為 TCPSink,也就是說一個行動節點 上面必須同時具備 TCP 與 TCPSink 才能有接收和傳送的能力。舉例來說,

有兩個行動節點 A 與 B,當 A 與 B 使用 TCP 為代理層時,此兩個行動節點 1

2

5

4 3

中 斷 行 動 節 點

間的 connect

建立新的 connect 並

傳送 Realdata

  圖  3-11  fulltcp 網路拓樸(2) 

(52)

都必須各自具備發送端 TCP 與接收端 TCPSink,且行動節點 A 的發送端 TCP 必要與行動節點 B 的接收端 TCPSink 連結,而行動節點 B 的發送端 TCP 亦 必需要跟行動節點 A 的接收端 TCP 連結,如此這兩個行動節點才能夠達成 雙工的功能,彼此接收與傳送資料封包,如圖 3-12 所示。

但 FullTCP 卻只需要一個單純的代理層就能達成,可是也因為 TCP 分 為發送端和接收端,因此我們能克服 FullTCP 上的缺點-當同一個行動節點 上想要傳送資料給不同的行動節點,就並需要中斷與一個行動節點的連線,

並與另一個行動節點再建立一個新的連線。TCP 在 NS2 中也有設計上的問 題,便是 TCP 發送端只會具備傳送的能力,TCPSink 接收端則只具有接收 能力,因此在想要達成我們想要利用 TCP 與 TCPSink 的情況之下,並需要 讓 TCP 端與 TCPSink 端都具備回應能力,我們是透過 TCP 協定中的三次交 握的 ACK 封包來達成使 TCP 與 TCPSink 具有回應的能力,詳細的過程說

A B

TCP TCPSink TCPSink TCP

圖  3-12  行動節點上的 tcp 代理層 

(53)

明如下,當兩個行動節點 A 與 B 時,行動節點 A 欲傳送一個資料給行動節 點 B,此時行動節點 A 會先尋找路由表是否有路由到達行動節點 B,在此我 們假設路由已知且是可用的,此時行動節點 A 會發出一個 SYN 的訊息封包 給行動節點 B,而當行動節 B 收到後,便會回傳一個 SYN+ACK 的訊息封 包給行動節點 A,接下來行動節點 A 便會回送一個 ACK 封包給予行動節點 B,並且開始傳輸我們想要傳送給行動節點 B 的資料封包,一但完成傳輸後,

行動節點 A 會傳送中止傳輸的訊息封包,而當行動節點 B 收到此訊息封包 時,我們便將剛剛從行動節點 A 所傳送過來的資料,放入行動節點 B 要回 傳給行動節點 A 的訊息封包中,當行動節點 A 收到此訊息封包時,會查看 收到的資料是否和欲傳送的資料相同,藉此來賦予 TCP 發送端與 TCPSink 接收端具有我們想要的回應能力。

在第四章中,我們先對所設計的模組做介紹,再來介紹實驗的參數,再 來說明 TCL 腳本的架構,最後使用一個 TCL 上的命令,詳細的說明從 TCL 指令下達之後,NS2 是如何經由應用層、代理層去達到我們所想要的透過完 整現有的 NS2 架構,去傳送真實的資料,而不是透過自訂代理層與自訂封 包協定的方式。

(54)

第四章 NS2 資料傳輸模組的製作

在此章節中我們會詳細的說明如何在 NS2 中新增一個應用層(ecapp),並在 現有的代理層(tcp)中,在不影響代理層本身的前提之下,使其能達成我們想要傳 送真實資料的目的,不影響代理層這個議題在本論文中是非常重要的一件事,因 為在前面所提到過我們對部份使用 NS2 模擬程式的研究之實驗結果存有疑問便 是因為代理層是自訂且與應用層合併為一層。以下我們會分為應用層及代理層來 介紹:

第一節  資料傳輸模組應用層的製作 

圖 4-1 ecapp 主要類別

參考文獻

相關文件

[23] Tiantong You, Hossam Hassanein and Chi-Hsiang Yeh, “PIDC - Towards an Ideal MAC Protocol for Multi-hop Wireless LANs,” Proceedings of the IEEE International Conference

Kyunghwi Kim and Wonjun Lee, “MBAL: A Mobile Beacon-Assisted Localization Scheme for Wireless Sensor Networks,” The 16th IEEE International Conference on Computer Communications

Godsill, “Detection of abrupt spectral changes using support vector machines: an application to audio signal segmentation,” Proceedings of the IEEE International Conference

D.Wilcox, “A hidden Markov model framework for video segmentation using audio and image features,” in Proceedings of the 1998 IEEE Internation Conference on Acoustics, Speech,

[16] Goto, M., “A Robust Predominant-F0 Estimation Method for Real-time Detection of Melody and Bass Lines in CD Recordings,” Proceedings of the 2000 IEEE International Conference

Harma, “Automatic identification of bird species based on sinusoidal modeling of syllables,” in Proceedings of IEEE International Conference on Acoustics, Speech,

Kyunghwi Kim and Wonjun Lee, “MBAL: A Mobile Beacon-Assisted Localization Scheme for Wireless Sensor Networks”, the 16th IEEE International Conference on Computer Communications

Li, The application of Bayesian optimization and classifier systems in nurse scheduling, in: Proceedings of the 8th International Conference on Parallel Problem Solving