劉旭東,何涇沙
(北京工業大學 軟件學院,北京 100124)
隨著移動互聯時代的來臨,越來越多的服務已經向終端轉移。Android系統作為目前主流的移動設備操作系統,以其免費的特征,以及強大的功能,已經受到越來越多的終端廠家的廣泛使用。如何利用Android系統實現更多的互聯功能成為一個重要的研究領域。移動ad hoc網絡是目前比較熱門的研究領域,如何將移動ad hoc網絡引入Android這種移動操作系統成為一個非常有意義的研究問題[1-2]。利用ad hoc網絡將裝載Android系統的移動設備連接起來,實現在沒有基礎設施的情況下的互聯互通,這將會在發生重大災害的時候實現網絡的組建,實現快速救援。在日常生活領域,越來越多的家電使用Android系統,如果能將家電自動組網連接,將會極大的提高生活的便利性。
在Android系統中構建一套可以廣泛應用的移動ad hoc網絡連接框架,可以為應用程序提供一種高效的連接方式,也可以節省目前移動網絡連接帶來的相關費用。在目前傳統使用ad hoc網絡路由協議中,并沒有哪一種協議特別適合用于Android設備建立ad hoc網絡。BATMAN (The Better Approach To Mobile Adhoc Networking)協議作為最新為移動網絡設計的路由協議,在多方面都適合Android使用。通過修改BATMAN協議的內容,使得整個協議更好的適用于Android組成的ad hoc網絡,也將極大提高網絡的傳輸效率。
Android是一種基于Linux的自由及開放源代碼的操作系統,主要使用于便攜設備,如智能手機和平板電腦。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年由Google收購注資,并組建開發手機聯盟開發改良隨后,逐漸擴展到平板電腦及其他領域上。2008年10月第一部Android智能手機發布。目前Android的手機已經占領了接近一半的手機市場。在Android的系統中,由于是開源系統,因此可以修改Android的內核,已達到一些附加功能。
對于Android系統,系統本身并沒有提供ad hoc網絡連接的功能與相關機制,但是整個ad hoc的網絡實現對于現實應用場景的使用是非常有意義的。由于Android具有開源的特性,一種方式是通過修改系統的內核,并進行重新編譯達到ad hoc的網絡功能,但是這樣的做法需要系統重新安裝,對于目前使用的客戶極為不方便。因此,本文通過在Android系統的基礎上通過構建一種應用的框架實現ad hoc網絡連接的做法,更加符合當前的要求。因此,本論文旨在通過了解Android的基本結構,實現一個網絡通信框架,通過這個框架,可以使得使用框架的應用之間實現ad hoc網絡的通信功能。
由于Android系統具有無線的網絡連接,通過WiFi連接,具備了構建ad hoc網絡的基礎,為了能夠建立移動ad hoc網絡連接,Android設備通過Wifi與其他設備進行連接,雖然這樣可以建立兩個設備的連接,并不能夠實現多跳的網絡。因此,為了實現多跳的網絡,必須采用一種路由協議。傳統的移動ad hoc網絡多采用OLSR協議。OLSR是Optimized Link State Routing的簡稱,主要用于MANET網絡(Mobile Ad hoc network)路由協議。OLSR是根據MANET的要求,在傳統的LS(Link state)協議的基礎上優化的。OLSR中的關鍵概念是多點轉播(MPRs),同傳統LS協議相比,在網絡中分布著部分鏈路狀態信息,尤其適合大而密集型的網絡。
但是,對于Android這種移動ad hoc網絡,當節點不斷增加時,整個的網絡就變得異常的緩慢。BATMAN協議是一種非常好的替代方式,通過采用BATMAN協議,可以很好地進行移動ad hoc網絡的連接[3]。本論文通過在Android上實現BATMAN協議,實現一種網絡框架。BATMAN框架是建立在TCP協議之上,通過無線網絡連接,實現移動ad hoc網絡的多跳連接,并且在連接的基礎上進行相應的數據交換[4-5]。
BATMAN的原始實現是在Linux上完成的,雖然Android系統是在Linux的基礎之上實現的,但是BATMAN的代碼并不能夠在Android上順利運行。Android系統使用Java作為應用開發的語言,BATMAN的C語言代碼如果想要在Android上運行,需要使用 JNI(Java Native Interface)技術將 BATMAN的路由協議生成鏈接庫。因此,為了能夠使BATMAN順利運行,需要重新修改BATMAN代碼,并進行重新的編譯。
BATMAN協議是一種用于移動ad hoc網絡的路由協議。它主要通過一種OMG包進行路由信息的傳播。每個網絡中的結點定期向其鄰居結點廣播發送OMG包,每個收到OMG包的鄰居結點通過OMG信息更新自己的路由信息,并且根據不同的情況選擇丟棄OMG包,或者繼續將信息廣播給相應的鄰居結點。
每個收到OMG的結點,首先將會將OMG包存入相應的緩存中,以便跟蹤相應的路由信息。每個節點也會更新信息源上次的活躍時間,并且確保目前的路由信息是最新的路由信息。由于移動ad hoc網絡具有移動的特點,因此,很多情況下原本可以連接的結點,很可能在某一段時間不能夠進行連接,為了能夠適應網絡移動性的問題,每個節點都會有一個計時器,當某個鄰居結點在一段時間沒無法連接時,將會對其路由條目。圖1展示了運行BATMAN協議的結點的運行方法。

圖1 結點i運行BATMAN協議流程圖Fig.1 Flow chart of running BATMAN protocol on node i
在這個流程圖中,描述了多跳的工作機制,當一個來自雙向連接的結點OMG到達結點時,或者當一個結點已經成為孤立結點,無法繼續連接時,將會進行更新路由表的操作。當某個應用想要發送信息時,首先需要調用GETNextHop(packet)從路由表中獲取相應的鄰居結點,如果存在達到終點的鄰居結點,將會使用Send(packet)進行發送。當從其他結點獲取到待發送的信息時,首先判斷目標結點是不是當前結點,如果當前節點是目標結點,則收取信息,如果當前結點不是目的結點,判斷終點的地址,選擇轉發或者丟棄。
目前廣泛使用的Android系統中,主要使用兩種比較常見的無線連接方式,一種是藍牙連接,另一種是WiFi(IEEE 802.11g)。當前Android系統中都有支持這兩種連接的API[6]。3G網絡目前也非常常見,但是由于3G連接依賴于基礎網絡設施,因此不適用于移動的ad hoc網絡。藍牙雖然是為ad hoc網絡設計,但是其傳輸距離有限,為了實現大范圍的ad hoc網絡,這種方式并不適合[7]。WiFi提供了一種更遠距離的連接,并且具有更大的帶寬。因此,在WiFi的基礎上建立ad hoc網絡是可能的,而且能夠給很多應用提供便利。
默認情況下,Android設備并不能夠進行ad hoc網絡連接,只能連接到固定的網絡訪問點。為了能夠開啟網絡連接的ad hoc模式,必須了解整個網絡的運行過程。Android設備中,使用wpa_supplicant工具操作網絡,并且使用wpa_supplicant.conf作為其配置文件。為了能夠實現連接,必需修改上述的兩個文件,由于每個Android設備通過芯片的驅動程序完成對其設備的控制,能夠進行ad hoc網絡連接的芯片必須能夠支持無線擴展API(Wireless Extension API),這樣才能控制芯片完成ad hoc網絡連接。因此,目前只有在能夠應用無線擴展API的芯片上才能完成ad hoc網絡連接。
為了能夠使設備支持無線擴展API,可以通過交叉編譯,為設備編譯出可以應用到設備上的相關文件[10-11]。通過重新編譯Android系統的相關部分的源代碼,可以實現BCM4329和BCM4330無線芯片的ad hoc網絡控制。三星公司在其官方網站上公布了以上兩種芯片相關的源代碼,因此使用這兩種芯片的Android設備都可以實現ad hoc網絡連接,表1中列出了使用這些芯片的設備。理論上通過這種方法,可以控制芯片的ad hoc模式連接方式,包括使用這種芯片的iPhone4s和NOKIA Lumia系列。

表1 部分Android設備的無線芯片列表Tab.1 Android device's wireless chip list
標準的BATMAN協議雖然應用于ad hoc網絡,但是當數據終點無法到達時,標準協議的做法是丟棄這些無法到達的數據包。由于移動ad hoc網絡與傳統的ad hoc網絡的最大不同點就在于其移動性。而且由Android構建的ad hoc網絡中節點的移動性更加強烈,同時每個節點相遇的幾率也更大,因此為了能夠以最大效率的提高傳輸率,在每個Android設備中加入一個緩存,能夠最大的效率實現網絡通信。
經過改進后,原有的BATMAN協議結點將會按照如下步驟實現網絡傳輸。
1)判斷下一跳節點聯通性,可以聯通則立刻發送。無法連接,進入步驟2)。
2)將數據包存入臨時緩存,進入步驟3)。
3)每個結點定時檢查緩存,如果連接重新建立立刻傳輸,否則進入步驟4)。
4)檢查每個節點包的存入時間,如果超時,立刻丟棄數據包。超時定義如下:

其中,WINDOWS_SIZE是整個節點的數據窗口大小,ORIGINATOR_INTERVAL是節點檢查緩存的時間間隔。
在Android設備中加入緩存,并且定期檢查每個暫存數據包的連通性會增加整個節點的負擔,但是目前的Android設備具有較大的內存和較強的處理能力,對于增加的處理內容和存儲要求并不會影響整個節點的正常工作,因此是一個比較理想的方案。
對于ad hoc的框架,使用TCP進行數據的傳輸是非常實用的,并且能夠保證數據包能夠到達鄰居結點。在TCP協議的基礎上,構建BATMAN協議層,在這個層次上實現BATMAN協議的相關機制。最后提供相應的網絡接口,應用程序可以通過調用這些接口建立ad hoc網絡,并且實現相應的功能。圖2展示了整個應用框架的基本結構。通過系統的分層實現,可以提升整個架構的可維護性,以及提升系統的復用性。

圖2 BATMAN框架的基本結構Fig.2 Architecture of BATMAN framework
在Android系統中,可以使用JNI進行C或者C++程序的開發,通過JNI編譯成為Android系統可識別的靜態類庫,因此整個系統采用C++作為開發語言,開發整個應用框架,并且最終編譯成為Android的類庫供應用開發者使用。整個框架的設計基于面向對象的開發方法,進行封裝,力圖開發出簡單實用的Android下的應用框架。圖3為整個框架的UML類圖。通過這個圖能夠很清晰的看出整個框架的設計方式。框架實現后,將會為應用程序提供多個實用的網絡連接接口。通過調用接口,可以實現采用同樣應用框架的應用間實現ad hoc網絡連接。

圖3 Android中BATMAN框架類圖Fig.3 BATMAN framework class diagram
Android中的應用和程序都是使用Java作為編程語言,并且將會編譯成為“.dex”文件用于執行。Android應用中,僅有Activity是用戶可見的部分。BATMAN的C語言代碼使用NDK(Native Development Kit)將 C代碼轉化為 Android可執行代碼。并通過JNI將應用框架載入到應用程序中,實現程序的開發。
基于BATMAN協議的ad hoc網絡框架在日常的應用中具有應用價值,其執行效率也是一個框架性能的重要指標。通過在Android上建立應用框架能夠有效的提高實用性。通過在不同的應用場景中進行測試,可以得到此應用框架的最終執行效率。框架執行效率的測試場景為北京工業大學的教學樓內,使用10部已經加載了BATMAN的Android手機進行相應的測試工作,測試人員使用Android手機在同一樓層中隨機移動,最后從系統中獲取相應的日志對相關的數據進行統計,得到執行效率的相關數據。
測試的第一個指標是數據包送達率,由于測試過程中是節點是隨機移動的,使用本文的應用框架進行數據傳輸,在可以連接的范圍內主要的數據送達率可以達到80%以上,基本能夠滿足日常的簡單數據傳輸功能。圖4給出了在900 s內的數據送達率的情況。

圖4 BATMAN應用框架數據包送達率Fig.4 Packets delivery ratio
另一個比較重要的數據是數據包的延遲,通過一系列的測試,本框架的數據包延遲可以控制在50 ms內,這樣的數據包延遲在日常的應用中是可以接受的。圖5給出了發送0到6萬個包的平均包延遲。

圖5 BATMAN應用框架包延遲Fig.5 Packets delay
通過以上的測試,能夠全面的了解基于Android的BATMAN協議應用框架的相應執行效率,為應用層的使用提供了全面的參考。
經過測試,整個應用框架效率較高。在實際的應用場景中,通過采用此框架構建一個用于網絡傳輸的Android應用程序。使用3臺Android手機作為測試手機構建一個簡單的ad hoc網絡,在網絡中進行數據傳輸。具體的應用截屏如圖6所示。在這個應用程序中,程序自動發現采用同樣使用此框架開發的應用程序,并且列出其在網絡中的IP地址。

圖6 使用ad hoc應用框架程序截圖Fig.6 Ad hoc application framework program screenshot
Android系統作為目前主流智能設備的操作系統,雖然提供了強大的網絡功能,但是并沒有完全支持ad hoc網絡,通過對BATMAN協議的理解,以及Android開發的整體認識,在Android系統上開發出一個支持BATMAN協議的網絡框架,不但可以方便的使得使用Android系統的設備完成自組網連接,而且可以應用到智能家電、災難救援等領域,具有極強的研究和使用價值。
[1]JHE-YI H,CHIEN-CHENG S,WEI-HSIANG L,et al.Android-based Mobile payment service protected by 3-factor authentication and virtual private ad hoc networking[C].Hong Kong, China,2012:111-116.
[2]HANNO W,TOBIAS H,BACKHAUS R,et al.Establishing Mobile ad-hoc networks in 802.11 infrastructure mode[C]//Las Vegas, NV, United states,2011:49-51.
[3]LAURENTD,NADJM-TEHRANIS.Batmanstore-andforward:The best of the two worlds[C].Department of Computer and Information Science, Linkoping University,SE-581 83 Linkoping, Sweden,2012:721-727.
[4]ELIS K,HIYAMA M,MAKOTO I,et al.Performance comparison of OLSR and Batman routing protocols by a MANET testbed in stairs environment[C]//Graduate School of Engineering, Fukuoka Institute of Technology (FIT), 3-30-1 Wajiro-Higashi, Higash, 2012:339-349.
[5]JOSH T,JEFF R,NICK M.Off grid communications with android meshing the Mobile world [C]//Accuvant LABS Research Consulting Group, Bedford, MA, United States,2012:401-405.
[6]WOOK S,KIYOMOTO S,KAZUHIDE F,et al.A formal model to analyze the permission authorization and enforcement in the Android framework[C]//KDDI R and D Laboratories,Inc., Saitama 356-8502, Japan,2010:944-951.
[7]WANG Jie,YU Xue,ZENG Yu,et al.The design and realization of campus information release platform based on android framework [C]//SchoolofManagement, Capital Normal University, Beijing 100089, China,2013:121-128.