王寧 褚偉



摘 要:物聯網設備之間統一的訪問方式和設備之間的互操作是物聯網系統實現中必須要考慮的問題。本文利用Alljoyn框架來實現物聯網中設備之間的連接和設備服務的訪問,并且還在Alljoyn框架的基礎之上,討論了利用語義技術來實現設備間的互操作,提高設備的智能性。
關鍵詞:物聯網;Alljoyn;語義技術
1 引言
近年來,隨著科技的進步和人們生活的需要,物聯網技術得到了廣泛的應用,越來越多的智能設備出現在了人們的生活當中。智能設備之間相互協作,為用戶提供基于上下文的和實時的體驗。在物聯網中,地理位置相近的設備往往會相互連接、組網,形成一個鄰近網絡。鄰近網絡可以通過網關輔助連接、服務器輔助連接等方式接入互聯網中,這樣任意鄰近網絡中的信息可以進入互聯網中流通,也可以借助于互聯網訪問任意鄰近網絡中的設備或服務。
在互聯網中,訪問服務一般通過域名的方式。這些域名由IANA統一管理,申請域名時會在域名系統中集中注冊,查找域名時會逐層搜索。互聯網采用這種方式是因為互聯網有較為固定的基礎設施支撐,服務信息適合以集中的方式組織起來。另外,互聯網中服務信息量相對來說不是特別大。但是在物聯網環境中,設備和服務非常多,從可擴展性的角度看不適合對所有服務集中管理,服務搜索時產生的延時也會比較大。雖然某一鄰近區域內設備和服務的數據量不是很大,但鄰近網絡往往是各種各樣的自組織網絡形式,如車載網絡、傳感器網絡等。這些網絡往往沒有固定的基礎設施,拓撲結構動態變化,鏈路狀態不穩定,無法提供一個穩定的服務注冊機構來對區域內的服務集中管理。目前,鄰近網絡之間的服務信息一般采用集中注冊的方式,但是在鄰近網絡中,設備發布服務信息大多采用“推模式”,通過在鄰近區域內廣播自己的服務信息或者等待服務請求者的查找來完成服務信息發布,形成p2p的服務網絡。這種方式不需要穩定的網絡基礎設施,服務搜索延遲相對較低。另外,由于整個過程只在鄰近網絡中進行,有利于信息的安全和隱私的保護。
在物聯網中,如果想要構建可擴展的、智慧的系統,鄰近網絡內部和相互之間的設備互操作性是關鍵。由于智能設備功能和產生的數據的多樣性和異構性,不能夠對智能設備的服務和數據進行統一規范和分類標識。但是,兩個智能設備之間需要先識別對方是何種設備和能夠提供哪些服務,然后智能設備才能進一步的交互和完成功能的調用。為了解決這些問題,將基于機器可解釋的形式化描述的語義技術引入物聯網中,為設備和服務添加語義信息,服務請求者可以通過語義檢索來進行服務發現和選擇。
本文基于Alljoyn框架來解決鄰近網絡中設備之間的連接和互操作等問題。Alljoyn是一個開源的框架,支持多種通信協議和目前流行的各種系統平臺。它基于鄰近網絡,采用p2p來發布服務信息,支持對設備和服務進行描述,通過對描述分析可以了解對方的功能,完成設備間的互操作。
2 Alljoyn框架
Alljoyn框架是一個開源的軟件系統,為運行在不同設備上的分布式應用程序提供運行環境。它負責處理在分布式異構系統中所面臨的問題和移動網絡的問題,從而讓開發人員只需要關注應用程序的構建。Alljoyn有幾個關鍵的部分,分別是Alljoyn Bus,Alljoyn Router,Bus attachment,Bus Interface,Bus object。
Alljoyn Bus是對分布式系統中數據鏈路的抽象,為消息傳遞提供了更快速、更簡單的方法。應用程序在連上Alljoyn Bus之后就可以和其他的應用程序通信,底層的實現機制對應用程序來說是透明的。Alljoyn Bus可以分成多個段,每段位于不同的設備上,Alljoyn負責管理每個段之間的連接。實際上,每段都是一個Alljoyn Router,一般運行在一個獨立的進程中,負責支持各種通信協議,包括藍牙,wifi等。如圖所示,Alljoyn Router之間相互連接和轉發信息,形成了Alljoyn Bus。應用程序連接Alljoyn Bus時其實是連接Alljoyn Router,然后向Alljoyn Router請求轉發數據,最后Alljoyn Router將數據轉發至目的地。
應用程序通過Bus Attachment連接Alljoyn Router,它封裝了多種進程間通訊方式。連接之后,Alljoyn Bus給每個Bus attachment分配一個唯一的名字,用來區別不同的應用程序。但這名字只是臨時的,每次連接所得到的名字都不相同。應用程序可以同時請求一個永久的well-known name,這樣其他的設備可以通過well-known name 來訪問應用程序。在Alljoyn中,應用程序以聲明Bus interface的形式向外部提供訪問的接口。Bus interface包含Bus methods,Bus properties,Bus signals。一般情況下Bus interface的實現都是通過Bus attachment中的Bus Object來完成,Bus object代表著應用程序所提供的服務。如圖所示,Alljoyn提供遠程代理ProxyBusObject來訪問遠程的Bus object,ProxyBusObject會負責相應的Bus methods等信息的傳遞 。well-known name與Bus Object的組合可以唯一標識服務信息。
應用程序在連接Alljoyn Bus之后,可以將服務信息發布給其他應用程序,也可以搜索其他應用程序的服務信息。當一個設備靠近另一個設備時,由于它們是物理隔離的,不可能知道對方的信息,但是它們需要對方服務信息才能確定是否訪問服務。這就是服務信息發布和搜索需要完成的功能。
3 智能設備間的連接
在鄰近網絡中,設備之間會相互連接,組成一個通信網絡來進行數據的傳輸。不同的設備組網方式對設備的硬件能力和通信協議等有著不同的要求。目前,市場上的物聯網設備采用的底層通信協議多種多樣,每個通信協議在相應的領域廣泛應用。各個通信協議之間并沒有出現相互統一的趨勢,這意味著多種協議并存的現象在未來很長的一段時間內一直存在。相同通信協議的設備通訊時直接建立連接即可,但是當周圍有不同通信協議的設備存在時,兩個設備建立連接需要進行協議的轉換。在物聯網中,設備被賦予的計算能力和通信能力也是有差異的。有些設備只是做簡單的數據采集和數據上傳工作,數據量小,對硬件的需求低。有些設備需要進行活動或流程感知,并對數據進行分析,協同其他設備來反饋,這樣對設備的硬件要求就比較高。
物聯網由于其特性,存在一些動態的設備網絡,在動態網絡中,設備可以隨時進入和離開網絡,沒有一個穩定的網關來對網絡中的數據通信進行管理。設備之間相互連接并轉發數據,組成一個動態網絡。因此,設備組網時需要考慮設備的硬件能力、設備底層通信協議和網絡動態性要求,選擇合適的設備組網方式。Alljoyn框架的底層數據傳輸是基于TCP/IP的,且通過IP組播的方式發布網絡中設備的服務信息。因此,在設備網絡組建之后,需要考慮如何對網絡進行配置,使得Alljoyn底層的數據傳輸能夠進行。目前,鄰近網絡中設備的組網方式有以下幾種。
(1)直接連接。兩個設備之間直接建立連接,不需要中間節點來進行控制和轉發。這種方式簡單、直接,適用于相同通信協議的設備,但是不同通信協議的設備不能建立連接。兩個設備之間建立連接時需要相互協商來完成地址分配、身份認證等功能,對設備通信組網方面的能力要求比較高。例如設備之間通過Wi-Fi Direct連接,Group Owner需要具有DHCP的功能,能夠對連接的Group Client分配IP地址,Group Owner和Group Client屬于同一個網段。這種組網方式通常用于一些臨時的、短距離的數據傳輸需求,安全性高。
(2)利用中心節點輔助連接。周圍設備都先連接到中心節點,中心節點接收數據和轉發。這種方式廣泛應用于現在的互聯網中,如在WiFi環境中提供接入點來讓設備連接,進而組成一個局域網。也可以讓中心節點支持多種通信協議,擁有多種接入點,并對網絡層地址和接口做映射。當中心節點接收到數據時,根據數據包的網絡層地址來選擇相應的接口。這樣不同通信協議的設備可以利用中心節點進行協議轉換,從而建立連接。這種連接方式對設備的組網能力要求比較低,對中心節點的要求比較高。這種方式目前廣泛應用于智能家居中,因為家中往往會有多種協議的設備并存。
(3)自組網。自組織網絡是由一些具備路由轉發功能的設備相互連接形成的多跳網絡。這種網絡的節點可以隨時離開和進入網絡,從而導致網絡結構變化、鏈路狀態不穩定。當節點離開網絡時,原本經過該節點的鏈路就會斷開,其他節點根據相應的協商機制重新選擇路徑。當節點進入網絡時,其他節點會自行檢測,判斷是否有更優的鏈路。該組網方式常用于無中心節點、設備節點動態變化的環境中,適用于相同通信協議和不同通信協議的設備。每個節點都可以接收和轉發數據,并且節點之間相互溝通、協作,形成一個網絡。這種連接模式對網絡中每個節點的通信能力要求比較高。這種網絡因為不需要固定的網絡設施,因而廣泛應用于軍事領域和救災中。在物聯網中,自組織網絡廣泛應用于無線傳感器網絡中。傳感器一般使用無線技術來進行數據傳輸,且一般發射功率小。因此傳感器之間采用多跳方式進行連接,相互協作完成各種應用任務。
Alljoyn對這三種方式都提供了支持,在Alljoyn應用程序通信時,只需要將數據交給底層的網絡。數據的傳輸由網絡層和傳輸層負責,與Alljoyn無關。Alljoyn支持多種底層通信協議,并對底層協議進行抽象,向上層協議提供統一的接口。不管采用哪種組網方式, 對Alljoyn來說都是相同的。Alljoyn利用alljoyn router對底層網絡進行抽象,讓其對上層應用透明,并且從alljoyn router之間的相互通信抽象出alljoyn bus。從開發人員的角度看,應用程序都是連接到alljoyn bus 上,應用程序之間數據的傳輸都相當于在一個虛擬總線上進行。當應用程序進入或退出alljoyn bus 時,都會向alljoyn bus發出通知,然后alljoyn bus將該事件通知給其他的應用程序,其他應用程序會執行進行相應的動作。
4 智能設備間的互操作
物聯網是由與人們生活息息相關的智能設備按照一定的通信協議相互連接組成的。它們產生的數據和服務多種多樣,反映了人們生活的方方面面。然而,不同設備產生和收集到的數據是多模式的和不同特性的。數據和服務的異構性,使得物聯網設備之間的互操作成為一個挑戰。為了解決這個問題,近年來的研究逐步將語義web技術引入物聯網中,使得數據和服務以統一的模式進行描述,便于設備之間的識別和數據的整合與共享。通過數據的語義標注能夠提供機器可解析的數據描述,包括數據的表示對象、數據的起源、與周邊環境的關系、提供者的信息以及質量、技術等屬性信息,有利于物聯網信息的自動化處理和交互。基于語義技術,在領域專家的指導下構建相關領域的本體,然后參照已建立的本體對物聯網中的數據和資源等進行標注。需要對設備提供的服務進行細化的語義描述,能夠反映設備所處的環境等信息。同時,還需要對用戶的需求進行語義化處理,通過本體以及Peri網理論等方法來表示用戶需求。然后,可以通過計算語義相似度等方法對服務和用戶需求進行服務匹配和選擇。如果服務與需求能夠匹配,則設備之間會建立連接,完成功能的調用。
Alljoyn框架提供About interface來描述設備信息、設備提供的服務、以及其他相關的信息。About是一個通用的Bus interface,應用程序可以通過它來描述自己,也可以訪問其他應用程序的About interface來獲取對方信息。在設備的服務信息發布和搜索環節中,當收到的服務信息中含有About interface信息時,可以訪問該接口來獲取對方的信息。我們可以在About interface中采用語義化的形式來表達設備和設備提供的服務,其他設備獲取這些信息之后,依據一些規則推理來識別設備,并可以根據自己的需求進行服務匹配與選擇。如果設備與自己的需求符號,則建立連接,訪問相應的功能。
5 總結
本文首先介紹了Alljoyn框架,說明了Alljoyn對底層通信的抽象和Alljoyn系統中設備服務的訪問方式。然后介紹了鄰近網絡中設備的幾種組網方式,并說明了Alljoyn能夠適應多種網絡結構。最后介紹了語義技術在物聯網中的應用,并將語義技術與Alljoyn相結合。
參考文獻
[1]劉莉,竇軼,戴庭,黃海平,趙生偉. 基于Jini的物聯網服務框架[J]. 信息通信,2011.
[2]管健. 基于XML和本體的物聯網數據交換標準體系研究[J]. 物聯網技術,2012.
[3]黃濤,褚淑杰. 基于紅外通信的智能家居系統[J]. 嵌入式應用,2004.
[4]杜曉明,陳巖. 無線傳感器網絡研究現狀與應用[J]. 北京工商大學學報(自然科學版),2008.
[5]王保云. 物聯網技術研究綜述[J]. 電子測量與儀器學報,2009.
[6]袁凌云,王興超. 語義技術在物聯網中的應用研究綜述[J]. 計算機科學,2014.
[7]黃映輝,李冠宇. 語義物聯網:物聯網內在矛盾之對策[J]. 計算機應用研究,2010.
[8] 陳海明,崔 莉,謝開. 物聯網體系結構與實現方法的比較研究[J]. 計算機學報,2013.