一種基于Android和JXTA協(xié)議模型的無線D2D通信技術(shù)
摘要:移動通信系統(tǒng)的快速發(fā)展使得頻譜資源日益緊缺。D2D通信是一種在系統(tǒng)的控制下,允許終端之間通過復用小區(qū)資源直接進行通信的新型技術(shù)。它能減少小區(qū)網(wǎng)絡的負載,還能支持新型的小范圍點對點數(shù)據(jù)通信,是未來綠色通信發(fā)展的趨勢。針對這一新型的通信技術(shù),提出了基于Android OS平臺,以JXTA協(xié)議為模型的無線D2D通信技術(shù),使得移動終端之間能夠進行通信與資源共享,并通過網(wǎng)絡實驗驗證了其有效性。
關(guān)鍵詞:Android;D2D;JXTA;WiFi;P2P
0 引言
隨著移動通信系統(tǒng)的演進和發(fā)展,帶來需求帶寬的迅速增大,但是由于移動通信系統(tǒng)頻譜資源非常有限,可分配的帶寬滿足不了實際的應用需要,所以亟需研究更有效的帶寬分配和利用的技術(shù)。D2D(Device to Device)通信是一種在系統(tǒng)的控制下,允許終端之間通過復用小區(qū)資源直接進行通信的新型技術(shù)。它不依賴中心節(jié)點而是依靠網(wǎng)絡邊緣節(jié)點,實現(xiàn)自組織與對等協(xié)作的資源發(fā)現(xiàn)和共享,因此擁有自組織、可擴展性、魯棒性、容錯性以及負載均衡等優(yōu)點,在一定程度上解決無線通信系統(tǒng)的頻譜資源匱乏的問題,同時它還能減少小區(qū)網(wǎng)絡的負載、減少移動終端的電池功耗、增加比特率等,它是未來綠色通信發(fā)展的趨勢。
針對這一新型的通信技術(shù),本文提出了基于WiFi的自組織網(wǎng)絡的D2D通信模型,能以現(xiàn)有的數(shù)臺近距離智能終端為基礎,使得這些終端之間能夠進行通信與資源共享。本文基于Android操作系統(tǒng),以JXTA協(xié)議為模型,最終實現(xiàn)了基于WiFi的D2D通信,并通過網(wǎng)絡實驗驗證了其有效性。
1 D2D通信系統(tǒng)模型
該系統(tǒng)實現(xiàn)手機等智能終端之間進行通信和資源的共享,任務包括實現(xiàn)D2D網(wǎng)絡服務的架設、Android平臺的JXTA技術(shù)、網(wǎng)絡節(jié)點之間的通信、網(wǎng)絡節(jié)點之間的資源共享。
D2D網(wǎng)絡主要由3個部分組成,分別是Android平臺節(jié)點、PC平臺節(jié)點和Peer集合點,其中Peer集合點負責收集和發(fā)送節(jié)點列表信息,起到系統(tǒng)調(diào)度的作用,各節(jié)點可以通過集合點獲取存在的節(jié)點列表,通過該列表,即可對該對等網(wǎng)絡中的任意節(jié)點進行通信,接收和發(fā)送數(shù)據(jù)。系統(tǒng)模型如圖1所示。
該系統(tǒng)主要通過JXTA協(xié)議構(gòu)建一個D2D網(wǎng)絡,在網(wǎng)絡中設置有若干個PC機節(jié)點和手機節(jié)點,每個節(jié)點中都有共享文件,任意節(jié)點可通過D2D網(wǎng)絡集合點訪問其他節(jié)點的共享資源。系統(tǒng)啟動時首先進行初始化,初始化過程會檢查手機用戶是否通過WiFi連入網(wǎng)絡、檢查緩存情況、啟動JXTA網(wǎng)絡連接,啟動之后將搜索JXTA網(wǎng)絡集合點RDV,讀取集合點上的Peer列表。待初始化完畢之后,各個Peer節(jié)點就可以利用JXTA網(wǎng)絡提供的管道服務互相通信了,Peer節(jié)點也可以向RDV節(jié)點請求所有節(jié)點共享的資源文件,資源集合點將相應的節(jié)點所共享的資源列表以XML文件的形式反饋給請求節(jié)點,接到反饋的資源列表之后,通信系統(tǒng)根據(jù)用戶的選擇,向相應的節(jié)點發(fā)送文件傳輸請求,經(jīng)握手后即開始傳輸數(shù)據(jù)。系統(tǒng)的主要流程圖如圖2所示。
[!--empirenews.page--]
2 D2D通信系統(tǒng)的實現(xiàn)
2.1 接入網(wǎng)的配置
要實現(xiàn)D2D的通信,終端設備必須先接入WiFi網(wǎng)絡,因此在程序啟動時,應先檢查終端設備是否已接入網(wǎng)絡,其代碼如下:
若用戶已接入WiFi網(wǎng)絡,則啟動主應用程序的UI。在進入應用程序的主界面之前,需要進行系統(tǒng)的初始化,檢查緩存情況,啟動JXTA網(wǎng)絡連接,搜索JXTA集合點RDV并讀取集合點上的Peer列表。系統(tǒng)的主界面如圖3所示。
[!--empirenews.page--]
2.2 節(jié)點搜索功能
該功能主要用于對網(wǎng)絡上的Peer節(jié)點進行搜索,維護一個節(jié)點列表。該搜索程序通過JXTA對等機發(fā)現(xiàn)協(xié)議PDP(Peer Discovery Protoc ol)進行節(jié)點搜索,PDP定義了發(fā)現(xiàn)其他Peer和資源的協(xié)議,該協(xié)議包括兩個方面:一方面用于請求獲得其他Peer的Advertisement;另一方面用于響應其他Peer的這種請求。Peer給所有已知的Peer和Rendezvous Peer發(fā)送一個Discovery Query Message,Rendezvous Peer對Discove ry請求進行處理,并返回一個Discovery Response Message,其中包含其緩存中advertisement。另外它還把這個請求廣播給所有知道的Pe er,收到請求的Peer搜索本地緩存尋找匹配advertisement,如果找到,就直接給最初的請求方發(fā)送一個Discovery Response Message。該程序運行在一個線程中,在該線程中執(zhí)行一個循環(huán),每隔30 s獲取一次節(jié)點列表。節(jié)點搜索線程代碼如下:
當用戶單擊Peer List菜單選項時,Peer節(jié)點從RDV集合點讀取節(jié)點列表,并顯示在相應的UI界面中,如圖4所示。
而網(wǎng)絡節(jié)點列表收集主要完成啟動并初始化JXTA網(wǎng)絡,形成一個網(wǎng)絡集合點Rendezvous Peer,集合點服務的主要功能是允許Peer網(wǎng)絡上的其他Peer傳播消息。該集合點可以監(jiān)聽到所有相鄰網(wǎng)絡請求連接的Peer節(jié)點,包括PC機模擬節(jié)點和Android手機節(jié)點,通過一個節(jié)點列表對當前節(jié)點的信息進行維護,接收節(jié)點的連接與退出請求。當用戶單擊Leave Network要離開網(wǎng)絡時,必須通過advertisement通知RDV節(jié)點,此時RDV節(jié)點就可以更新所擁有的節(jié)點列表,當其他節(jié)點下一次從RDV節(jié)點讀取節(jié)點列表信息時,就可以及時地更新在線的節(jié)點。
集合點類的設計主要是通過集合點協(xié)議RVP(Rendezvous Protocol),簡單Peer運用該協(xié)議同集合點相連接,由集合點代表自己向其他Peer傳播消息。RVP的實現(xiàn)扮演雙重角色,為傳播消息提供了統(tǒng)一的API,該功能不依賴Peer是否配置成集合點。
2.3 通信模塊的設計
通信模塊采用JXTA雙向管道進行消息傳輸。當用戶登錄之后,啟動一個線程,在線程里創(chuàng)建JxtaServerPipe,不停輪詢,等待其他用戶發(fā)來的消息。當用戶A想與用戶B聊天時,只要建立一個到用戶B的JxtaBiDiPipe,該JxtaBiDiPipe和用戶B的JxtaServerPipe進行連接。聊天消息是用XML進行封裝的,不同的消息可以定義不同的命名空間,以便接收端進行區(qū)別。而且一條消息可以包含多部分信息,比如區(qū)分消息的版本、消息發(fā)送者名字等等。接收端對接收到的消息進行解析處理,然后顯示到聊天對話界面里。
信息發(fā)送的源代碼(信息接收的實現(xiàn)類似)如下:
[!--empirenews.page--]
2.4 文件發(fā)送與接收
文件發(fā)送的實現(xiàn)是利用P2PSocket編寫的程序,可以在任意Peer之間對等地傳輸文件。該程序通過JXTA管道綁定協(xié)議,由Pipe向遠程Pee*r發(fā)送文件,文件將以流的形式傳遞通過PipeMsgEvent實現(xiàn)PipeMsgListener,每次當有消息傳送到管道的時候,事件將被捕獲。通過fileRequest處理共享文件列表的請求,向?qū)Ψ桨l(fā)送包含共享文件名的列表的消息在一個線程中執(zhí)行一個循環(huán),通過JXTA網(wǎng)絡進行文件資源廣播,如果得到回應就進行資源請求確認,確認完成之后調(diào)用this,socket Service.file Transfer()函數(shù)發(fā)送當前文件資源。
文件發(fā)送的源代碼如下:
當單擊File Share菜單選項時,會顯示出當前網(wǎng)絡中的節(jié)點所共享的文件,如圖5所示。
當用戶可以選中其中的某一個文件,JXTA網(wǎng)絡利用Pipe從共享該文件的節(jié)點那里讀取數(shù)據(jù)并存儲在本機的SD卡上,文件接收的代碼和發(fā)送的類似。
3 結(jié)語
本文研究并設計實現(xiàn)了基于Android操作系統(tǒng),以JXTA協(xié)議為模型,應用WiFi網(wǎng)絡的無線D2D通信系統(tǒng)。該系統(tǒng)能以現(xiàn)有的數(shù)臺近距離的智能手機為基礎,建立起一個無線P2P網(wǎng)絡,使得這些用戶之間能夠方便地進行通信與資源共享,這將成為諸多用戶豐富自身手機資源的有效途徑。