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
文獻[10]中可以找到CodeTorrent 與使用AODV 的CarTorrent[13]的效能比 較。於下圖中,我們可發現CodeTorrent 在前200 單位時間內平均可完成下載的 peers 數較CarTorrent 多。這表示CodeTorrent 可於較短的時間內完成下載完整
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 有以下的特點:
中介軟體層方面,即是應用程式框架、函式庫、應用程式執行環境等。
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)、除錯工具、程式執行所耗用記憶體、效 能等評估功能。