• 沒有找到結果。

車載隨意網路中以Google Android平台實現以代數網路編碼為基礎的行動同儕檔案分享Mobile P2P File Distribution with Algebraic Network Coding over Google Android Platform in VAnet

N/A
N/A
Protected

Academic year: 2021

Share "車載隨意網路中以Google Android平台實現以代數網路編碼為基礎的行動同儕檔案分享Mobile P2P File Distribution with Algebraic Network Coding over Google Android Platform in VAnet"

Copied!
42
0
0

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

全文

(1)

車載隨意網路中以 Google Android 平台實現以代數網路編

碼為基礎的行動同儕檔案分享

研究成果報告(精簡版)

計 畫 類 別 : 個別型 計 畫 編 號 : NSC 97-2218-E-110-013- 執 行 期 間 : 97 年 10 月 01 日至 98 年 07 月 31 日 執 行 單 位 : 國立中山大學資訊工程學系(所) 計 畫 主 持 人 : 高榮鴻 計畫參與人員: 此計畫無其他參與人員 處 理 方 式 : 本計畫可公開查詢

中 華 民 國 98 年 10 月 05 日

(2)

車載隨意網路中以 Google Android 平台實現

以代數網路編碼為基礎的行動同儕檔案分享

Mobile P2P File Distribution

with Algebraic Network Coding

over Google Android platform in VANET

NSC 97-2218-E-110-013

主持人: 高榮鴻(國立中山大學資訊工程學系)

參與學生: 江俊豪、林甯晏、蔡銘家(國立中山大學資訊工

程學系)

(3)

目錄 (Contents)

Chapter 1

研究背景………...2

Chapter 2

文獻探討...3

2.1 P2P file distribution...3

2.2 Google Android 平台...4

Chapter 3

系統架構………...….

.

.

.

.

.

.

6

3.1 Client端(CPS)...7

3.2 Server端(MPS)...12

3.3 Network Coding 子系統(NCS)...16

Chapter 4

系統環境...20

4.1 Hardware Specification...20

4.2 Software Specification...20

4.3 Test Data Sources...21

Chapter 5

計劃成果...22

5.1 程式運作畫面...22

5.2 程式操作流程...24

5.3 結論...36

Attachment 1: Glossary...37

Attachment 2: References...39

(4)

Chapter 1

研究背景

P2P(Peer-to-Peer)應用目前是相當熱門的研究領域。端對端的網路為一個自 行組織的分散式系統。在 P2P 應用中不需一個中央集權的節點來控制整個網 路,每一個端點都可以同時扮演伺服器與客戶端的角色。每一個端點可以提供服 務或資源。所有的資源儲存且分散於網路中。過去 P2P 應用多用於有線的 Internet 網路中,其中以資料分享的應用最熱門。近幾年無線行動裝置功能越來越強大, 且使用的人數亦日趨增加。於是開興起關於將 P2P 檔案分享應用於無線行動網 路中的研究。

車輛隨意網路(Vehicular Ad Hoc Networks, VANET)可以視為行動隨意網路 (Mobile Ad-Hoc Network, MANET)的一個特例。一個車載隨意網路基本上是由車 輛與智慧型道路旁的基地台所組成。為了利用無線通訊技術來增加行車安全性, 國際上有 DSRC (Dedicated Short Range Communications)標準的制定;而且許多 國家在未來也有可能立法強制未來新車輛必須配備 DSRC 裝置。DSRC 同時支 援車輛對車輛及車輛對智慧型道路之間的無線通訊。因此,車載隨意網路極可能 成為第一個大規模的行動隨意網路(MANET)。由於 DSRC 的最大資料傳輸率高 達 27Mbps,所以車載隨意網路也具備執行現有網際網路應用的潛力。 在這個計畫,考量車載隨意網路中檔案傳輸情形,車輛行經路徑未必能長時 間連接網際網路,能連上網路的時間有限的情況下,必須有效利用頻寬以及車輛 間的檔案片段交換,我們準備設計並實作應用於車載隨意網路(vehicular ad-hoc network)中以網路編碼(network coding)為基礎的行動同儕檔案分享服 務(mobile peer-to-peer file distribution service)。目的為使鄰近的車輛 或其他無線網路主機,能夠利用有限的頻寬有效完成檔案的下載,如:旅遊景點 的介紹、道路交通資訊、天氣預報,同時也可互相交換文字訊息。

因相關技術尚於發展當中,因此在本計劃採用 Google Android 為開發平台, Google Android 是以 Linux、C++及 Java 等 Open source 資源為基礎的手機作 業系統與應用程式開發平台,其最主要優點為開放性,開發的平臺允許任何移動 終端廠商加入到 Android 聯盟中來。並且使用 Android 能更方便使用各種 google 的服務,如 google map 即對車輛行駛很有幫助。

本計畫也為開放性軟體,日後他人也可更進一步藉由本計畫的 P2P 傳輸來傳 送 Google Map 訊息,做到導航或跟隨其他人車輛的功能。行動同儕檔案分享系 統(以下簡稱本系統)在軟體實作上主要依據系統的特性來建立模組功能,以進行 系統的開發。因此我們以 Java 在 Google Android 上實作系統。

(5)

Chapter 2 文獻探討

2.1 P2P file distribution

在現今的網際網路上,P2P 已經是一個主流的應用(特別是從網路流量的角 度來看)。因此,P2P 是否能在車載隨意網路中也像在網際網路中一樣地成功就 是一個很有趣也很實用的問題。在這個計畫中,我們將著重在如BitTorrent 一般 的行動同儕檔案分享服務。

我們的設計與實作採用在美國UCLA 資工系Professor Gerla 的研究團隊所 提出的CodeTorrent [10]系統中所使用的一些創新方法。其中包含代數網路編碼 (algebraic network coding) 與依賴移動性做輔助的資料分發(mobility-assisted data dissemination)[19] 。CodeTorrent 首先利用網路編碼(Network Coding)將一個節點 所擁有的多個檔案片段做random coding 計算後得到一個coded 檔案片段。之後 每個節點只散佈coded 檔案片段給one-hop 的鄰居。再由其鄰居重複上述步驟後 散佈新的coded 檔案片段給one-hop 的鄰居,以此類推將分享的檔案傳遞至網路 中需要的端點。由於在VANET 中每一個網路節點都會移動,原本不是鄰居的兩 個節點極有可能在移動的旅程中遇見同一個第三節點。因此,原本不是鄰居的兩 個節點也可藉著移動性而間接地交換檔案片段資訊。

與 BitTorrent 一樣,CodeTorrent 假設每一個 peer 有興趣下載的檔案都會 有一個惟一的辨別數字,而一個檔案 F 會被分成 n 個固定長度的片段 p1 , p2, ..., pn ,每一個片段以一個足夠大的 Galois Field (denoted by GF(q)) 中 的元素表示。CodeTorrent 與過去 P2P 研究一個重大不同點在於每一個願意分享 的 peer 會周期性的廣播 coded frame 給其 one-hop 的鄰居。因此,在 CodeTorrent 中無尋找路徑的問題(不需要 explicit routing protocols)。一個 coded frame,是由 peer 所擁有的所有檔案片段經過 linear random coding 後所得的結果:

k n k ik i e p C

1  ;其中 ek 為 GF(q)中隨機選取的元素,所有的代數計算都在 GF(q)中進行。每個封包由 coded frame ci 與[ei1ei2…ein] 組成。欲收到完整檔案 的 peer 需要收集至少 n 個封包(ci 與[ei1ei2…ein] )後,再解矩陣方程式,以得到 p1, p2, ..., pn。最後再把所有的片段組合成一個完整檔案。

文獻[10]中可以找到CodeTorrent 與使用AODV 的CarTorrent[13]的效能比 較。於下圖中,我們可發現CodeTorrent 在前200 單位時間內平均可完成下載的 peers 數較CarTorrent 多。這表示CodeTorrent 可於較短的時間內完成下載完整

(6)

Figure 6: Histogram of download delays [10]

在CodeTorrent 中僅使用關於one-hop neighbors 的資訊;在我們的系統中則會利 用關於two-hop neighbors 的資訊以改進系統效能。

2.2 Google Android 平台

Android 一字的原意是「機器人」。Android 平台以最進步、方便開發者使 用的開放原始碼授權形式推出,給予行動網路業者和裝置製造商極大的自由度和 靈活彈性,設計各式各樣的產品。

Google Android 平台的目的是為了提供mobile devices 完整的軟體環境,並 建立全面整合的行動涵蓋操作系統,另外,希冀以最低硬體使用量、最開放標準 的軟體架構及平台、及讓手機內各項基礎軟體的總花費成本能降至最低。Android 之軟體堆疊(software stack)或稱為軟體疊層架構主要分成三層:作業系統 (Linux)、中介軟體(middleware)與主要的關鍵應用程式(如Figure 2)。其中凡 是介於作業系統與應用程式間,稱為中介軟體。Android 的中介軟體可再細分出 兩層,底層為函式庫(Library)及虛擬機器(Virtual Machine, VM),上層為應用程式 框架(Application Framework)。 Android 有以下的特點:

(7)

中介軟體層方面,即是應用程式框架、函式庫、應用程式執行環境等。 B. Dalvik 虛擬機器-Android 內不是使用標準的Java 虛擬機器(Java

Virtual Machine;JVM),而是使用獨特的Dalvik 虛擬機器。

C. 整合(網頁)瀏覽器-網頁瀏覽器就是所謂的主要且常用的應用程式, Android 內建的瀏覽器是用WebKit 的瀏覽引擎為基礎所開發成的, WebKit是一個開放原碼專案,許多瀏覽器也都是用WebKit 引擎所開發 成,如Apple 的Safari、Nokia S60 手機內的瀏覽器(Web Browser for S60) 等。在桌面領域,基於WebKit 的Safari 現在擁有3%至5%的瀏覽器市場 佔有率,使它成為除微軟IE,Mozilla 的Firefox 之外的第三大瀏覽器。事 實上還有其他瀏覽器適用於移動平台,但是WebKit 體積更小,這也意味 著它有更少的內存和CPU 需求,對於移動環境,這才是理想的應用程序。 D. 最佳化的繪圖能力-繪圖分為2D 與3D,2D 方面Android 是用一套特有

的函式庫,而3D 則是使用OpenGL ES 1.0(OpenGL for Embedded Systems) 規範的函式庫。

E. SQLite 資料庫-SQLite 是一套開放原碼的關連式資料庫,其特點在於輕 量性(僅500KB 左右的容量),適合手持式裝置運用,此外桌上型運算的 應用程式也有使用,如OpenOffice.org 2.0 版之後就有內建SQLite。 F. Eclipse IDE 的外掛程式(Plug-in)。

G. 媒體支援能力-Android 支援多種音訊、靜態視訊、動態視訊格式,如 MPEG-4、H.264、MP3、AAC、AMR、JPG、PNG、GIF 等。 H. GSM 通話能力-GSM 手機的通話能力其實必須在硬體電路層次實現, 軟體層次無法實現,只是Android 平台要求必須要有GSM 通話能力,此 項功效特點與其說是特點,不如說是訂立出最低的硬體要求規範。 I. 藍牙(Bluetooth)、EDGE、3G、以及Wi-Fi-這些通訊能力一樣屬於硬體層 次的功效要求。 J. 攝影機(Camera)、GPS 定位、羅盤、加速度感測器-這些同樣屬於硬體 層次的功效,Android 主要是在軟體層面提供支援,如硬體抽象層、應用 程式介面等。 K. 豐富的開發環境-Android 平台強調已備有完善的程式開發環境,其開發 環境包括裝置模擬器(Emulator)、除錯工具、程式執行所耗用記憶體、效 能等評估功能。

(8)

Chapter 3

系統架構

主要分為三個子系統分別為:

 用戶端程式子系統 Client Program Subsystem (CPS):

CPS存在於用戶端無線裝置,負責建立跟伺服器以及其他用戶端的 連線,經由網頁下載種子檔後,會開始由伺服器跟其他用戶端接收 檔案,同時也將接收到的檔案片段分享給其他用戶端,另外也可以 跟其他用戶端交換意見訊息。

 管理程式子系統 Management Program Subsystem (MPS):

MPS為伺服器端系統,負責處理用戶端的連線請求,並且可由管理 者來新增檔案供用戶端下載,新增檔案後會產生種子檔,並將連結 放在網頁上,管理者之後也可取消該檔案的分享。

 網路編碼子系統 Network Coding Subsystem (NCS):

NCS同時存在用戶端跟伺服器,負責處理Network Coding增加傳輸 效能以及用戶端完整下載檔案的機會,伺服器端會由NCS產生編碼 過的片段傳給用戶端,用戶端則由NCS來判斷是否已經有足夠可供 解碼的片段,若是則通知其他人該用戶停止接收檔案,但仍持續上 傳至使用者中止以增加其他人下載的速度。然後開始解碼,將編碼 的片段還原成原始檔案。 要求下載 交換檔案片段 取得檔案片段 下載種子檔 切割檔案並編碼 傳送檔案片段

(9)

3.1 Client端(CPS):

客戶端的GUI介面主要用來處理網路連線、資料存取,與Google Android之 間的介面顯示。

其主要的function如下:

public void onCreate() :android UI的初始化,包含設定按下種子檔之對應動作 public boolean onCreateOptionsMenu() :初始化menu選單

public boolean onOptionsItemSelected() :設定選單對應的選項動作 public static byte[] OpenFile() :讀入片段檔案

public static int SaveFile() :儲存片段檔案

private OnClickListener lsendmsg = new OnClickListener() :傳送訊息按鈕 public void onStop() :程式結束時之清除動作

客戶端的行動通訊class,用來處理客戶端對外的連線、上傳及下載請求,以 及對檔案的管理等工作。另外Client端也提供了額外的加值功能,譬如讓使用者交 換訊息或對下載的檔案進行驗證等功能。 Client端用戶須透過手機先下載遊檔案伺服器所提供的原始種子檔案,此檔案中 包含了Client欲下載的檔案的資訊,其中的資訊有: 1. 檔案名稱 2. 檔案大小 3. 檔案切割片段數 4. 檔案片段大小 5. 伺服器IP位置 而Client端開啟程式後便可以藉由種子檔選擇要下載的檔案,接著便連上伺 服器發出下載請求.在與伺服器保持連線的期間,伺服器端會不斷地更新正在下 載同樣檔案的使用者清單,並傳給Client,因此Client端可以看見其他在線上的使用 者,便能傳送訊息或是自己持有的檔案給其他人。 Client與Server兩端的通訊協定建立於雙方制定好的控制訊息上,我們在每次 送出的封包前都先加入了事先定義好的Header,如此一來只要解析Header,便可以 對收到的封包採取對應的操作,以更新GUI介面或是接收檔案,如: switch (PacketHeader)

(10)

updateUserList(); case:data saveData(); … } Server端每隔一段時間會隨機挑選某檔案片段並傳給某Client端,因此就算 此檔案只有一個Client要下載,最後仍然能夠完成;但是若有多個Client欲下載同 一個檔案,則Client端不只會不定時的收到來自Server方的檔案片段,也會將自 己持有的檔案片段傳送給別人。 因此,對 Client 而言,檔案片段的來源有: 1. Server 不定期傳送的片段。 2. 其他 Client 端所分享的片段。

(11)

Client在每次接收到檔案片段後,都會事先檢查並且存檔,當所持有某個 檔案的片段數足夠時,便會開始對此檔案進行解碼及合併的動作,之後便能得 到完整的檔案,之後此Client依然能傳送自己所持有的片段給其他人。

(12)

Client 端系統主要由三個部分組成,使用者操作介面、檔案系統及連線管理. 關於每一個 Class 的內容描述,說明如下:  User:代表用戶端,每個用戶端可以檢視可取得的檔案列表及檢查自己的 檔案狀態或連線狀態,並存取已完成下載的檔案,此外還有發送訊息給其他 用戶端的功能。  FileManagement:負責用戶檔案的管理,包括了驗證檔案正確性等工作。  ConnectionManagement:負責處理用戶端對外的連線,包括了接收及發送 檔案等功能。 User -userName -userID -viewFile() -AccessFile() -message() -getConnectionState() -getFileState() -getID() -getFile() +upload() FileManagement +files[0..*] +verifyFile() +allocateSpace() +openFile() +setFileState() +getFilePiece() ConnectionManagement +connect() +disconnect() +request() +recive() +setConnectionSate() +acceptReqeust() 1 1 1 1 1 1

圖.2.2 CPS Class Diagram

(13)

用戶端的外界行為及時間順序如下: 1. 使用者透過手機向伺服器請求連線 2. 取得使用者名稱及 ID 3. 使用者請求下載檔案 4. 由伺服器或其他用戶端索取檔案 5. 取得檔案片段 6. 確認檔案無誤 7. 回傳給使用者 圖.2.3 伺服器連線系統的Sequence Diagram

FileManagement User ConnectionManagement

1 : connect() 2 : returnID 3 : requestFile() 4 : requestFilePiece() 5 : returnFilePiece 6 : verifyFile() 7 : returnFile

(14)

3.2 Server端(MPS):

伺服器端使用 java non-blacking I/O 方式構建,以避免當要提供多數使用者 下載檔時,過多的執行緒拖累伺服器的運行速度,管理者在啟動服務後,可以新 增要供使用者下載的檔案,並設定檔案分割的大小、使用者上限等設定,種子檔 會自動產生並在網頁上產生超連結,並將分享檔案清單存在 hashtable,當然管 理者也可取消檔案的分享,取消後伺服器將不再主動傳送檔案片段,但用戶端彼 此交換各自擁有的檔案片段仍有可能完成檔案下載。上述為管理者的操作選項。 以下為用戶連線到伺服器下載檔案的流程; 1. 使用者將可透過下載的種子檔連結到檔案伺服器,假如用戶端人數未 達上限,伺服器端會產生SelectionKey,並將其註冊OP_READ,如此 可利用selector來監聽key是否readable,意即用戶端是否有上傳封包。 2. 用戶端首先應先上傳封包告知伺服器希望下載的檔案以及自己的名 稱,伺服器在收到封包且確認此檔案確實有分享下載以後,會將此用 戶的key註冊OP_WRITE,之後每隔一段時間,當key為writable伺服器 就會產生編碼過的片段傳給該用戶。 3. 伺服器每隔一段時間也會傳送使用者清單給每個使用者,告知跟其選 擇下載相同檔案的用戶,令用戶能彼此交換檔案片段,亦即為 Peer-to-Peer方式的檔案傳輸。 4. 當用戶端下載檔案完成以後,發送封包給伺服器,伺服器將不再傳送 檔案封包給該用戶,但仍傳送檔案清單使其能繼續分享檔案片段給其 他使用者幫助檔案傳輸速度,也可繼續與其他用戶交換文字訊息。 註1:在本計畫執行期間,Android取消藍牙相關的API,使android的應用程式開 發無法使用藍牙或其他方式建立ad-hoc network,因此本計畫中用戶端的檔案交 換需透過伺服器轉傳以模擬p2p的傳輸。

(15)

圖.3.1 MPS子系統架構圖 NCS 產生種子檔 要求編碼後的檔 案片段 Web server 依種子檔 產生對應的超連結 定期廣播檔案片段 及使用者資訊

(16)

伺服器端系統主要由三個部分構成:使用者操作介面、連線管理、檔案分享管理。 關於每一個 Class 的內容描述,說明如下: 1. DataBroadcat;每隔一段時間要求ConnectionManagement自動傳送檔案片段 給用戶。 2. ConnectionManagement:管理用戶的連線,傳送接收訊息,收到封包後依 parser解讀Header的結果做對應的處理,如向FileManagement要求檔案、告 知FileManagement用戶停止下載檔案。 3. FileManagement;管理分享檔案的資料,新增或刪除分享檔案,記錄下載檔 案的使用者清單,確認用戶要求檔案存在後向NCS要求編碼後的片段。 ConnectionManagement +String userlist +int online_users

+Hashtable<String int> user_id +SelectionKey keys +Parser() +recv() +send() DataBroadcast +databroadcast() FileManagement

+Hashtable<String sharefile> files +AddFile()

+DeleteFile() +GetPiece()

(17)

依據外界行為及時間順序,用 Sequence Diagram 描述本系統內各物件之間的互 動關係如下: 1. 管理者選擇開放某個檔案以供下載。 2. 伺服器接受用戶端連線,並解讀用戶端傳送的封包。 3. 當用戶端要求下載檔案,由FIleManagement檢查該檔案是否正被分享。 4. 該檔案確實提供下載,則呼叫NCS取得編碼過的檔案片段。 5. 取得NCS回傳的編碼後檔案片段。 6. 發送檔案封包給用戶端。 設定分享檔案 接收解讀用戶封包 用戶選擇下載檔案 取得編碼檔案片段 1: AddFile() 2: parser() 3: GetFile() 4: GetPiece() 5: returnfile 6: send() 圖.3.3 檔案伺服器的Sequence Diagram

(18)

3.3 Network Coding 子系統(NCS):

NCS 主要的功能是負責檔案的編碼與解碼,在 Server 端,NCS 首先會 讀入 MPS 所給之原始檔案,並且加以分割再編碼成若干片段,以備 MPS 所 需;而在 Client 端,NCS 會讀入 CPS 所傳入之若干片段檔,判斷這些片段黨 是否足以解碼還原成原始檔案,若是則回傳解碼完成之原始檔案,若否則告 知 CPS 片段檔案不足以解碼還原。 MPS 讀入的原始檔案片 分割好的片段檔案 已編碼的 Code Frame CPS File system 下載的 Code Frames 是否足以解碼之結判 斷結果 解碼還原之原始檔案

(19)

NCS主要分為兩部分,其內容描述如下: 1. Encode:當伺服器端要傳送檔案片段給用戶,會呼叫Encode,Encode會將 要求的檔案依隨機方式挑算任意檔案片段作exclusive or 產生編碼過的片 段,回傳給伺服器。 2. Decode:當用戶端收到檔案片段,會呼叫Decode以檢查是否已有足夠供 解碼的檔案片段。若是則告知用戶端停止下載檔案,開始解碼完成檔案, 若否則繼續下載。 此兩部分實際上分別在手機跟伺服器上,但因為在測試上兩者結果必須 相符合,即Encode產生的片段必須能被正確Decode,且為方便說明network coding的方式及流程,故同分為NCS子系統。 Encode -file: File -Pieces: File[] -CodeFrame: Byte[] -mixedPiece: File +NewFile(File) +Partition(File): File[] +GenerateCodeFrame(): Byte[] +MixPieces(Byte[]): File +RequestPiece(): File Decode -DownloadFile: File -Pieces: File[] -CodeFrames: Byte[][] +VerifyCompleted(Byte[][]): Boolean +DecodeMixedPieces(File[]): File[] +MergePieces(File[]): File +RequestCompletedFile(): File ManagerProgram ClientProgram 1 1 1 1 圖3.2 NCS Class Diagram

(20)

依據外界行為及時間順序,用 Sequence Diagram 描述本系統內各物件之間的互 動關係如下。 Encode: 1. 伺服器端選擇分享某檔案。 2. NCS先將該檔案分割成管理者設定數量的檔案片段,供接下來做編碼使 用,以節省時間。 3. 伺服器收到用戶下載檔案的要求,向NCS要求該檔案的編碼片段。 4. 亂數隨機產生CodeFrame代表此編碼過的片段是由哪些原始片段組成 (如由共5個片段中第1、4、5片段組成,則為10011)。 5. 依照CodeFrame將亂數選中的檔案片段作exclusive or 產生編碼過的 片段。 6. 回傳給伺服器端。 ManagerProgram NetworkCoding 1 : NewFile() 2 : Partition 3 : RequestPiece() 4 : GenerateCodeFrame 5 : MergePieces 6 : ReturnMixedPiece&CodeFrame

(21)

Decode: 1. 用戶端收到檔案,呼叫NCS檢查是否已有足夠可供解碼的檔案片段。 2. 假設已有足夠片段。 3. 用戶端呼叫NCS開始解碼,並傳送封包告知伺服器本用戶已停止下載該 檔案。 4. 將收到的編碼過片段還原成未經編碼的原始片段。 5. 將各原始片段整合成完整檔案。 6. 告知用戶端檔案下載已完成。 ClientProgram NetworkCoding 1 : VerifyCompleted() 2 : isComPleted 3 : RequestCompletedFile() 4 : DecodeMixedPieces 5 : MergePieces 6 : ReturnCompletedFile

(22)

Chapter 4 系統環境

4.1 Hardware Specification

依據測試環境圖內容,關於測試環境所需的硬體規格說明,如下列所示:  伺服器主機:

CPU為Intel®Pentium Dual-Core 2.5GHz或以上,記憶體為1 GB RAM或以 上,硬碟空間至少120 GB以上,需具備100BaseTX區域網路功能,數量 至少兩台以上。

 智慧型手持裝置:

CPU為Qualcomm®msm7200A 528 Mhz或以上,記憶體含512MB ROM及 288MB RAM或以上,記憶卡儲存空間至少2GB以上,須具備Wi-fi®: IEEE 802.11b/g無線網路,數量至少三台以上。  無線基地台: 符合Wifi®: IEEE 802.11b/g規範之無線網路基地台,數量至少兩部以上。

4.2 Software Specification

依據測試環境圖內容,關於測試環境所需的軟體規格說明,如下列所示:  作業系統: 伺服器主機配置Microsoft Windows XP版本。 智慧型手持裝置配置Google Android 1.0或以上版本  JAVA:

伺服器主機配置JRE Version 6 Update 13或以上版本。 智慧型手持裝置配置Android Dalvik 1.0或以上版本  資料庫:

伺服器主機配置Microsoft SQL Server 2005或以上版本。  開發程式軟體:

(23)

4.3 Test Data Sources

關於測試期間所需的測試資料來源及數量,說明如下: 名稱 項目 測試來源 數量 測試連線 無線基地台 無線基地台1台 測試檔案傳輸 無編碼之文字檔案 檔案200個 測試編碼 文字檔案及影音檔案 每種檔案類型各5個 測試解碼 編碼過的片段檔案 片段檔案每組各200個

(24)

Chapter 5 計畫成果

(25)
(26)

5.2 程式操作流程:

圖為啟動Android手機的起始畫面;在此計劃實作的操作概念上,首

先需啟動瀏覽器,連上提供種子檔的網頁伺服主機,因此需點選上圖

(27)

打開Android內建之瀏覽器後,只要有連接網際網路,即可看到Google

(28)
(29)
(30)

回到主畫面,並滑動點開程式集拖盤;用手指輕點CPS子程式之圖示,

(31)

進入CPS程式,可見三個選單按鈕,分別為檔案列表、下載狀態、傳

送訊息。

檔案列表會自動列出先前曾下載之種子檔案;下載狀態則會顯示目前

所點選之種子檔下載程度百分比;傳送訊息可以讓使用者和其他正在

(32)
(33)

點選傳送訊息,可由上方之下拉式選單選擇欲傳送之使用者,下方欄

(34)

按下選擇之種子檔後,會跳至下載狀態畫面,下載進度會隨著已下載

之檔案片段數量而增加。狀態條下方會列出種子檔之檔案資訊,如提

(35)

當已經下載足夠的片段檔時,CPS程式會開始解碼並合併片段檔,以

(36)

當合併完成後,會顯示「下載完成」並且出現開啟檔案之按鈕,讓使

(37)

按下開啟檔案後,即會開啟剛剛下載成功的檔案,範例中為一張bmp

(38)

5.3 結論:

本次計畫最大的貢獻在於發展一套車載隨意網路中的行動同儕檔案分 享之系統架構,藉由此架構,我們可發展出一個車載網路的檔案分享模式。

由於 android 目前尚未開放藍芽方面的 Library,Android 手機內建的 WiFi 連線中亦沒有 Ad-hoc 模式,因此在實做此國科會計畫的過程中,我們採用 Server 來模擬 peer 和 peer 之間的傳輸,然而未來 WiMax 及車載電腦網路發展成熟後, 車輛對車輛間的傳輸可行,此時只要修改傳輸管理部份之程式碼,即可將此計畫 所發展之模型套用於車在隨意網路之中,達到網路編碼的最大優勢,並且讓車輛 間可以藉由檔案片段分享,而不需要持續仰賴對單一 Server 的連線,即使在沒 有網際網路環境之下,只要有足夠的分享片段,即可完成資料的分享。

本次計劃已完成在Google Android 平台上實現網路編碼為基礎的P2P file distribution 服務的相關Java open-source codes。參與這個研究計劃的學生學到了 如何整合通訊技術(network coding)與網路技術(P2P file distribution)而更有效地 利用先天上稀有的無線網路資源。而Google Android 平台是以Linux Kernel 為基 礎。讓學生早日接觸Linux 也符合國家的開放程式碼政策。我國電腦產業正面臨 轉型。業界已逐漸了解開放原始碼系統將可以幫忙增加毛利與產品附加價值。本 計畫所培養的研究生將來可就近投入高雄軟體園區的發展。

(39)

Attachment 1 : Glossary

Android Android 是 基 於 Linux 核 心 的 軟 體 平 台 和 作 業 系 統 , 早 期 由 Google,後由開放手機聯盟開發。美國檢索公司Google在2007 年11月5日公布的手機系統平台。它採用了軟體堆層(software stack,又名以軟體疊層)的架構,主要分為三郭分。低層以Linux 核心工作為基礎,只提供基本功能,其他的應用軟體則由名公 司自行開發,以java作為編寫程式的一部分。 Client 指用戶端電腦。 Client-Server 伺服器 ( Server ) 統合管理系統資源之配置與使用方式,以 供用戶端 ( Client ) 應用。而網路作業系統最主要功能即在 於整合區域網路中的軟體與硬體資源,整體而有效率又安全的 提供如檔案/列印、應用程式、Internet/Intranet 支援、檔案 系統以及其他伺服器端的各式資源之共享等各式服務。

CMMI 整 合 能 力 成 熟 度 模 式 ( Capability Maturity Model Integrated, CMMI )。1986年由美國卡內基美隆大學的「軟體 工程學院 ( SEI )」受到國防部委託而發展的,可以幫助軟體 開發者改善軟體流程。

Database 記錄資料的地方,提供新增、刪除、更新記錄的功能。

Qualcomm 高通公司 (NASDAQ:QCOM) 是一個位於美國加州聖地亞哥(San Diego) 的無線電通信技術研發公司, 由 Irwin Jacobs 和 安 德魯·維特比 創建於 1985年。

Eclipse Eclipse是著名的跨平台的自由集成開發環境(IDE)。最初主

要用來Java語言開發,但是目前亦有人通過外掛程式使其作為 其他計算機語言比如C++和Python的開發工具。

Google Google公司(英語:Google Inc.,NASDAQ:GOOG、LSE:GGEA), 是一家美國的上市公司,於1998年9月7日以股份有限公司的型 式創立,設計並管理一個網際網路搜尋引擎;Google網站於1999 年下半年啟動;2004年8月19日,Google公司的股票在納斯達克 (Nasdaq)上市,成為公有股份公司。

IEEE 電 機 電 子 工 程 師 學 會 ( Institute of Electrical and Electronics Engineers,簡稱為IEEE)是一個建立於1963年1 月1日的國際性電子技術與電子工程師協會,亦是世界上最大的 專業技術組織之一,擁有來自175個國家的36萬會員。

(40)

electronics)在 1968 年共同創辦 Intel 公司,將高階晶片 設計能力與領導業界的製造能力結合在一起。

Internet Internet 就是讓電腦、全世界各 LAN ( Local Area Network )、 MAN ( Metropolitan Area Network )、資訊、和人們彼此互相 連接,互相通訊共享資源,而形成的一個全球性的 WAN ( Wide Area Network )。

JAVA 由昇陽公司 ( Sun Microsystems ) 所發展出的跨平台程式語 言。而在 JAVA card 領域中現行的 API 已發展到 2.2 版本。 JRE 爪哇執行環境(Java Runtime Environment,簡稱JRE)是一個

軟體,由昇陽電腦所研發,JRE可以讓電腦系統執行爪哇應用程 式(Java Application)。

MySQL PremiumSoft MySQL Studio ( MySQL GUI )是一套 MySQL 資料 庫系統提供報告及監控的圖形化資料庫管理工具。它的一些主 要功能包括︰輸入 / 輸出資料、 資料移轉、計畫表備份、 Visual Query 建立工具以及報告建立工具。

RAM 隨機存取記憶體(英語:Random Access Memory,RAM)又稱作 「隨機存取記憶體」,是與CPU直接交換資料的內部記憶體,也 叫主記憶體。它可以隨時讀寫,而且速度很快,通常作為作業 系統或其他正在執行中的程式的臨時資料儲存媒介。

ROM 唯讀記憶體(Read-Only Memory,ROM)是一種半導體記憶體,

其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不 需經常變更資料的電子或電腦系統中,資料並且不會因為電源 關閉而消失。

Server 指伺服器端電腦。

SQL Structured Query Language,關連式查詢語言,用來定義資料 庫的結構,或是利用SQL 對資料庫執行一些查詢、增加、刪除、 更新記錄,到目前為止,SQL 是第一個,也是唯一的標準資料 庫語言,受到廣泛的接受 Wifi Wi-Fi是一個無線網路通信技術的品牌,由Wi-Fi聯盟(Wi-Fi Alliance)所持有。目的是改善基於IEEE 802.11標準的無線網 路產品之間的互通性。 WWW 指一群能相互連結的主機,透過容易操作的超連結介面,讓使 用者可以方便也存取各主機上的網頁。全球資訊網能支援由 HTML ( 超文件標示語言 ) 寫成的文件,包括語音、動畫、圖

(41)

Attachment 2 : References

[1] R. Schollmeier, I. Gruber, and M. Finkenzeller, ”Routing in Mobile Ad Hoc and Peer-to-PeerNetworks,A Comparison,”ProceedingsofInternational Workshop on Peer-to-Peer Computing, 2002.

[2] Gnutella,http://gnutella.wego.com/

[3] B. Cohen, “BitTorrent Protocol Specification”,

http://www.bittorrent.com/protocol.html

[4] NAPSTER,http://www.napster.com

[5] T. Kato, N. Ishikawa, H. Sumino, J. Hjelm, Y. Yu, and S. Murakami, ”A platform and applications for mobile peer-to-peercommunications,”2003.

http://www.research.att.com/_rjana/Takeshi_Kato.pdf

[6] Standard Specification for Telecommunications and Information Exchange BetweenRoadside and Vehicle Systems - 5 GHz Band Dedicated Short Range Communications(DSRC) Medium Access Control (MAC) and Physical Layer (PHY) Specifications,September 2003.

[7] Google Android,http://code.google.com/android/

[8] Alienware Android cell phone,http://www.dialaphone.co.uk/blog/?p=1076

[9] HTC Dream with Android,http://htcdream.com/

[10] Uichin Lee, Joon-Sang Park, Joseph Yeh, Giovanni Pau, Mario Gerla,

“CodeTorrent: Content Distribution using Network Coding in VANETs,”The First International Workshop on Decentralized Resource Sharing in Mobile Computing and Networking (MobiShare'06), Los Angeles, CA, September, 2006.

[11] Scalable Networks,http://www.scalable-networks.com.

[12] A. Nandan, S. Das, S. Tewari, M. Gerla, and L. Klienrock, ”AdTorrent: Delivering Location Cognizant Advertisements to Car Networks,”WONS’06, Les Menuires, France January 2006.

[13] A. Nandan, S. Das, G. Pau, M. Sanadidi, and M. Gerla, ”Cooperative downloading in vehicularad hocwirelessnetworks,”Proc.International Conference on Wireless On demand Network Systems and Services, 2005. [14] Rudolf Ahlswede, Ning Cai, Shuo-Yen Robert Li, and Raymond W. Yeung,

“Network Information Flow,”IEEE Transactionson Information Theory,Vol. 46, No. 4, July 2000, pp. 1204-1216.

(42)

“A Random Linear Network Coding Approach to Multicast,”IEEE Transactions onInformation Theory, Vol. 52, No. 10, October 2006, pp. 4413-4430.

[17] C.Gkantsidisand P.Rodriguez,“Network Coding forLargeScaleContent Distribution,”IEEE INFOCOM 2005, pp. 13-17.

[18] M. Conti, E. Gregori, and G. Turi, “A Cross-Layer Optimization of Gnutella for Mobile Ad hoc Networks,”ACM MobiHoc 2005, pp. 343-354.

[19] Matthias Grossglauser and David N. C. Tse, “Mobility Increases the Capacity of Ad

HocWireless Networks,”IEEE/ACM Transactions on Networking, Vol. 10, No. 4,

August 2002, pp. 477-486.

[20] Jonathan S. K. Chan, Victor O. K. Li, and King-Shan Lui,“Performance Comparison

of Scheduling Algorithms for Peer-to-Peer Collaborative File

Distribution,”IEEE Journal on Selected Areas in Communications, Vol. 25, No. 1, January 2007, pp. 146-154.

[21] Capability Maturity Model-Integrated v1.2 ( CMMI v1.2; 軟體發展成熟度模 型 )

[22] S.-Y.R.Li,R.W.Yeung,and N.Cai,“LinearNetwork Coding,”IEEE Trans. Information Theory, vol. 49, no. 2, pp. 371-381, Feb.2003.

[23] T.Ho,M.Me´dard,M.Effros,and D.Karger,“TheBenefitsofCoding over Routing in a Randomized Setting,”Proc.IEEE Int’lSymp.Information Theory, June/July 2003.

[24] S. Jaggi, P. Sanders, P.A. Chou, M. Effros, S. Egner, K. Jain, and L.M.G.M. Tolhuizen,“PolynomialTimeAlgorithmsforMulticastNetwork Code Construction,”IEEE Trans.Information Theory, vol. 51, no. 6, pp. 1973-1982, June 2005.

[25] C. Fragouli, J.-Y.L.Boudec,and J.Widmer,“Network Coding:An Instant Primer,”ACM SIGCOMM ComputerComm.Rev.,vol.36,no.1,pp.63-68, Jan. 2006.

[26] Rick Rogers, John Lombardo, Zigurd Mednieks, Blake Meike. Android Application Development Programming with the Google SDK. O'REILLY. [27] Reto Meier. Professional Android Application Development. Wrox

[28] Ed Burnette . Hello, Android, First Edition. O'REILLY.

[29] Elliotte Rusty Harold . Java Network Programming, 3rd Edition. O'REILLY. [30] Wei-Meng Lee. Android Application Development: Create Modify Reuse. Wrox

數據

Figure 6: Histogram of download delays [10]
圖 5-2 手機上之運作畫面

參考文獻

相關文件

上傳證明文件檔 (PDF、JPG、PNG)

• 系統此時除了檢查您的檔案與資料夾權限正確與否,並且也 檢查您的SERVER PHP版本、是否安裝了GD LIB與GD的版

七、 歸檔案件如有下列情形之一,檔案管理單位應退回承辦單位補

(B)使用 Windows XP 內建的 Windows Media Player 來播放影片檔案時,請問下列

假設我們的觀察資料是美國自 1790 至 1990 年(以 10 年為一單位)的 總人口,此資料可由載入檔案 census.mat 得到,如下:. &gt;&gt; load census.mat

選取本地根資料夾Æ右 1Æ開新檔案Æ輸入檔案名稱( index.html),Enter 鍵Æ右 1Æ設成 首頁 Æ重複〝右 1〝 本地根資料夾〞 Æ開新檔案Æ輸入檔案名稱,Enter

print –dtiff my_image.tif: 將目前指定的圖形,產生 TIFF 格式的影像檔,並以my_image.tif 的檔名儲存。.

各位小文豪們,歡迎你將自己寫的「心得分享區」答案拍照或打成 Word 檔寄到徵稿信箱,也可以直接掃描下方的 QR Code 圖檔,連結至