黨宏社,付曉軍,張 超,王 黎
(陜西科技大學電氣與信息工程學院,西安710021)
基于發(fā)布/訂閱模型的WSN設計*
黨宏社*,付曉軍,張超,王黎
(陜西科技大學電氣與信息工程學院,西安710021)
為降低通信頻率對節(jié)點能耗的影響同時提高大規(guī)模節(jié)點下傳感器網絡的連通率,設計了一種以發(fā)布/訂閱模型作為應用層數據交互方式的無線傳感器網絡。該網絡利用6LoWPAN技術實現組網,并以Contiki操作系統(tǒng)為平臺完成了基于發(fā)布/訂閱模型的MQTT-S應用層協(xié)議設計。測試結果表明,該設計能夠有效降低節(jié)點的通信流量,實現對節(jié)點功耗以及網絡通信優(yōu)化,并能與互聯網實現無縫連接減少開發(fā)成本,對大規(guī)模傳感器網絡的設計與應用具有重要意義。
無線傳感器網絡;發(fā)布/訂閱模型;MQTT;6LoWPAN
如何降低節(jié)點功耗提高網絡連通率是無線傳感器網絡WSN(Wireless Sensor Network)研究的重要內容。其中,節(jié)點能量的消耗主要來自射頻模塊[1-2],即消息的收發(fā)消耗了節(jié)點的大部分電量。另外,節(jié)點數量的增長,勢必增加網絡的通信量,由于帶寬受限,容易造成部分節(jié)點通信失敗,增加丟包率[3-4]。因此,降低網絡中的通信量,減少節(jié)點不必要的消息收發(fā),有利于節(jié)省節(jié)點功耗,提高網絡的連通率。
如何在滿足用戶需求的同時減少節(jié)點消息收發(fā)的頻率主要取決于節(jié)點與用戶之間的數據交互模式。文獻[5]以 6LoWPAN(IPv6 over Low Power Wireless Area Networks)為背景,提出了一種受限應用層協(xié)議CoAP(Constrained Application Protocol)。該協(xié)議將請求/響應模型作為交互方式,能夠借助6LoWPAN網絡的IP特性,通過URL實現用戶對傳感器節(jié)點的直接訪問,但隨著用戶數量的增加,節(jié)點需要針對同一組數據反復接收請求并做出響應,造成網絡的通信冗余。文獻[6]提出一種以消息隊列遙測傳輸協(xié)議 MQTT(Message Queue Telemetry Transport)作為應用協(xié)議的 ZigBee無線傳感器網絡。該協(xié)議以發(fā)布/訂閱為模型,提供一對多的消息發(fā)布模式,解除了用戶與節(jié)點之間的耦合。但是Zig-Bee網絡與當前的IP網絡存在異構問題,該模型在解決ZigBee網絡中節(jié)點之間的數據交互具有較好的效果,但與互聯網融合的時候無法體現其優(yōu)越性。
本文利用6LoWPAN的網絡優(yōu)勢,基于發(fā)布/訂閱模型,通過對用戶與傳感器網絡之間的消息交互方式的優(yōu)化,達到降低節(jié)點消息收發(fā)頻率的目的,以此來降低節(jié)點功耗提高網絡連通率。
通過對發(fā)布/訂閱模型的分析,本文針對特定網絡對原有模型進行改進并最終通過軟件設計實現在傳感器網絡中的應用。
項目來源:陜西省社會發(fā)展科技攻關項目(2015SF275)
收稿日期:2015-07-28修改日期:2015-09-08
1.1模型分析
發(fā)布/訂閱模型包括發(fā)布端(Publisher)、代理服務器(Broker)以及訂閱端(Subscriber)3個對象組成[7]。其結構如圖1所示。通過發(fā)布、訂閱和推送3個動作來完成消息的收發(fā)。
(1)發(fā)布端即消息的發(fā)送者,該模式的發(fā)送者不會將消息直接發(fā)送至用戶,而是通過將數據按照主題分類的方式自動發(fā)送至代理服務器。
(2)訂閱端即消息的接收者,接收端無需反復發(fā)送請求,只需通過服務器根據主題訂閱需要的數據即可通過服務器推送的方式獲得數據。
(3)代理服務器負責管理發(fā)布端與訂閱端提交的主題和數據。在接收到發(fā)布端發(fā)布的數據后,查找是否存在訂閱該主題的用戶。如果存在則把該信息推送至相應的用戶。
圖1 發(fā)布/訂閱模型
1.2模型改進
通過發(fā)布/訂閱模型能夠解除節(jié)點與終端用戶之間的耦合,但是該模式下,當傳感器節(jié)點出現故障或能量耗盡停止工作時,管理員無法及時得到通知,給傳感器網絡的維護帶來困難。為此,本文基于原有的發(fā)布/訂閱模型針對無線傳感器網絡增加了節(jié)點狀態(tài)監(jiān)測模塊,如圖2所示。
圖2 改進模型結構
根據傳感器網絡的改進模型在無線傳感器網絡中匯聚節(jié)點作為傳感器網絡與互聯網等外部網絡的接口,負責消息的轉發(fā)。因此,傳感器節(jié)點發(fā)布的消息同樣需要經過匯聚節(jié)點發(fā)送至代理服務器,設計通過匯聚節(jié)點完成節(jié)點狀態(tài)監(jiān)測的功能,具體實現過程如下:
傳感器節(jié)點觸發(fā)方式主要分為定時觸發(fā)以及傳感器狀態(tài)觸發(fā)。根據觸發(fā)方式的不同設計了不同的狀態(tài)監(jiān)測機制。
(1)定時觸發(fā)傳感器定時向服務器發(fā)布消息。匯聚節(jié)點在轉發(fā)消息的同時,根據傳感器ID,結合系統(tǒng)時間為節(jié)點標記一個時間戳。同時匯聚節(jié)點周期性對節(jié)點時間戳進行檢查,經過若干周期若標記節(jié)點時間戳未改變,則判定為節(jié)點異常并通過匯聚節(jié)點將異常發(fā)布。
(2)狀態(tài)觸發(fā)通過傳感器狀態(tài)的變化不定時發(fā)布消息的一種觸發(fā)方式。為此,傳感器節(jié)點在發(fā)布消息的同時,將周期性地向匯聚節(jié)點發(fā)送一條狀態(tài)信息,告訴匯聚節(jié)點工作正常。匯聚節(jié)點同樣根據狀態(tài)信息定義時間戳,從而起到節(jié)點管理的功能。
(3)匯聚節(jié)點在管理節(jié)點狀態(tài)的同時,同樣會將傳感器網絡的狀態(tài)信息發(fā)布到服務器。使客戶端能夠得到傳感器數據的同時,了解網絡的運行狀態(tài),起到網絡維護的功能。
1.3設計實現
MQTT是由IBM設計的一種輕量級的發(fā)布/訂閱協(xié)議,被廣泛應用于M2M通信當中。但MQTT設計仍然基于TCP/IP通信實現。為此,IBM制訂了MQTT-S協(xié)議,該協(xié)議通過壓縮消息長度,利用UDP傳輸等方式使MQTT適用于無線傳感器網絡。該協(xié)議也被認為最有可能成為傳感器網絡標準的協(xié)議[8-9]。
為保證消息發(fā)送的可靠性,MQTT-S協(xié)議設置了3個服務質量QoS(Service of Quality)等級:
QoS 0代理服務器與客戶端之間的消息只傳輸一次,不需確認;
QoS 1服務器與客戶端之前的消息最少傳輸一次,并要求確認;
QoS 2服務器與客戶端通過4次握手實現消息的準確傳輸。
無線傳感器網絡的局限性顯然無法使用較高等級的傳輸。本文將QoS等級設置為0,即只發(fā)送一次,由于傳感器節(jié)點數量大、采集頻率高,單個節(jié)點偶然丟包不影響傳感器網絡的應用,因此QoS0可以滿足需求。
結合改進的發(fā)布/訂閱模型,本文通過軟件編程的方式設計實現MQTT-S在6LoWPAN網絡中的應用,其結構如圖3所示。
圖3 MQTT-S結構圖
其中消息的傳輸主要由MQTT-S節(jié)點、MQTT-S網關、MQTT-S轉發(fā)和MQTT代理服務器4部分組成。節(jié)點作為發(fā)布端進行消息的發(fā)布;網關用來完成MQTT-S與MQTT之間的轉換;轉發(fā)操作用來實現傳感器網絡與互聯網之間的通信,本文利用6LoWPAN技術組網,轉發(fā)功能需將IPv6數據報轉換成IPv4之后發(fā)送至網關。具體實現過程如圖4所示。
圖4 功能實現流程
節(jié)點工作流程分為4個步驟:
步驟1發(fā)布端通過服務器主機地址連接到代理服務器,參數包括服務器地址、節(jié)點ID以及保持連接時間,其中MQTT固定端口號為1883;
步驟2節(jié)點注冊待發(fā)布信息的主題(topic);
步驟3注冊成功后,節(jié)點通過事件觸發(fā)的方式,將消息進行封裝后發(fā)布到服務器,其中消息攜帶QoS等級信息,用來協(xié)調工作模式。
步驟4節(jié)點消息發(fā)布后斷開連接,進入休眠降低功耗,等待下一次觸發(fā)。
匯聚節(jié)點工作流程如圖4右所示。系統(tǒng)網絡初始化并創(chuàng)建一個二維數組用來存儲節(jié)點ID以及時間戳,等待接收消息。當獲取的消息為MQTT發(fā)布信息時,進行IPv6與IPv4的轉換并發(fā)送至代理服務器,同時將該節(jié)點ID以及發(fā)送時間添加至數組,如果數組中存在該節(jié)點ID,則將對應的時間更新。當節(jié)點接收到的是節(jié)點發(fā)送的狀態(tài)信息時,不做轉發(fā),只記錄其發(fā)送時間。在處理網絡節(jié)點消息的同時。匯聚節(jié)點也像普通傳感器節(jié)點一樣。定時將網絡運行狀態(tài)信息發(fā)送至代理服務器,能夠讓用戶及時了解網絡運行情況,起到維護的作用。
通過該設計,傳感器節(jié)點的收發(fā)信息的次數與請求/響應模式對比,理論數據上減少近50%。
為進一步驗證改進的發(fā)布/訂閱模型對節(jié)點通信頻率的優(yōu)化效果,本文設計了基于該模型的無線傳感器網絡測試系統(tǒng)。該系統(tǒng)主要包括傳感器節(jié)點、匯聚節(jié)點、代理服務器以及客戶端4部分。其中設計內容主要包括傳感器節(jié)點以及匯聚節(jié)點2部分。
2.1傳感器節(jié)點設計
節(jié)點硬件選用TI公司推出的TM4C123G微控制器作為傳感器節(jié)點的控制單元。同時配以CC1120射頻模塊實現數據的收發(fā)。軟件方面,選用Contiki作為傳感器節(jié)點的操作系統(tǒng),其完全采用C語言開發(fā),具有運行內存小,支持TCP/IP網絡以及6LoWPAN報文壓縮、CoAP應用層協(xié)議等優(yōu)勢[10,11]。是目前對于6LoWPAN協(xié)議棧支持最好的嵌入式操作系統(tǒng)。本文將Contiki移植到TM4C123G微控制器中并基于該系統(tǒng)平臺編程實現MQTT-S協(xié)議,最終實現對傳感器節(jié)點的數據發(fā)布。
2.2匯聚節(jié)點設計
匯聚節(jié)點硬件選用TI公司推出的TM4C1294微控制器作為主控單元,與TM4C123G相比,存儲空間及運行內存更大,支持以太網通信,滿足系統(tǒng)設計需求。通過搭配CC1120射頻模塊實現無線收發(fā)功能。
軟件方面,匯聚節(jié)點作為6LoWPAN路由的根節(jié)點。設計內容主要包括Contiki操作系統(tǒng)的移植,IPv6數據報與IPv4之間的轉換以及針對匯聚節(jié)點接收到的消息通過報頭解析,獲取消息類型并存入數組。同時與傳感器節(jié)點一樣,周期性地向代理服務器發(fā)布傳感器網絡狀態(tài)信息。
3.1系統(tǒng)功能測試
測試系統(tǒng)包括4個傳感器節(jié)點,1個匯聚節(jié)點,1個計算機,其中計算機用來運行代理服務器和測試客戶端。代理服務器選用開源消息代理軟件Mosquitto實現,測試客戶端選用了IBM的開源項目IA92。如圖5所示為傳感器節(jié)點以及匯聚節(jié)點實物。
圖5 測試硬件環(huán)境
利用本地計算機運行Mosquitto代理服務器。匯聚節(jié)點通過以太網連接至路由器并由路由器分配一個IPv4地址。與本地代理服務器組成局域網進行通信,以此減少外網對測試結果的影響。各節(jié)點啟動系統(tǒng)初始化并成功組網后。連接至代理服務器,注冊節(jié)點主題。之后每隔5 s自動發(fā)布一次信息。
(1)傳感器節(jié)點功能測試。如圖8所示,客戶端輸入代理服務器的地址并連接,指示燈變成綠色表明連接成功在主題訂閱欄(Subscribe Topic)輸入相應節(jié)點發(fā)布的主題并點擊訂閱(Subscribe)完成訂閱,等待接收代理服務器推送。同時,可點擊取消訂閱(Unsubscribe)通知服務器取消對相應主題的推送。圖6顯示了收到節(jié)點1的傳感器數據信息。訂閱主題“jun/sust/1/sensor”,接收到的推送信息為“{"sensor":{"flag":1,"value":339,"voltage":3}}”。測試結果證明傳感器節(jié)點的數據采集功能實現。
圖6 MQTT測試客戶端
(2)匯聚節(jié)點功能測試。同樣的方式訂閱匯聚節(jié)點發(fā)布的主題“jun/sust/huiju/static”,然后將傳感器節(jié)點1斷電,移除傳感器網絡。程序默認3個周期未收到節(jié)點信息視為斷線。測試結果如圖7所示。
圖7 聚節(jié)點測試客戶端
匯聚節(jié)點發(fā)布的消息為“{"static":{"online":3,"offline":1,"offid":1}”,顯示了網絡當前在線節(jié)點個數、離線節(jié)點個數以及離線節(jié)點的ID,系統(tǒng)默認20個周期內節(jié)點未重新連接,將默認該節(jié)點已不在網絡中,將從數組中刪除。測試結果表明,匯聚節(jié)點能夠對網絡的狀態(tài)起到監(jiān)測的作用。
3.2數據流量測試
為測試發(fā)布/訂閱模式在節(jié)點收發(fā)上的優(yōu)化程度,利用6LoWPAN網絡常用的CoAP協(xié)議與本文設計實現的MQTT-S協(xié)議進行比較。分別取一個相應節(jié)點在相同環(huán)境下運行10 min,其采集周期均為5 s/time,通過路由器的流量統(tǒng)計功能,每分鐘統(tǒng)計1次相應匯聚節(jié)點的通信總流量值。其對比結果如圖8所示。
通過測試,運行MQTT-S的節(jié)點與運行CoAP協(xié)議的節(jié)點相比,在實現功能相同的情況下,發(fā)布/訂閱的交互機制能有效減少傳感器網絡的數據流量。隨著節(jié)點數量的增加,該優(yōu)勢將更加明顯。
圖8 流量統(tǒng)計圖相同時間流量對比
針對無線傳感器網絡特點,對發(fā)布/訂閱模型進行改進,并作為傳感器網絡的數據交互方式,實現了對無線傳感器節(jié)點通信頻率的優(yōu)化。通過軟硬件設計完成了模型的系統(tǒng)測試平臺。該測試系統(tǒng)以6LoWPAN作為傳感器組網協(xié)議,節(jié)點采用Contiki嵌入式操作系統(tǒng),并以該操作系統(tǒng)作為開發(fā)平臺實現了MQTT-S應用層設計。結合MQTT代理服務器以及客戶端軟件實現了消息的發(fā)布、訂閱與推送。通過測試,系統(tǒng)功能完整,能夠有效減少節(jié)點通信頻率,降低射頻模塊的工作時間,從而起到降低節(jié)點功耗,提高網絡連通率的作用。此外,以6LoWPAN作為組網協(xié)議,能夠與互聯網實現無縫連接,降低了系統(tǒng)開發(fā)難度,具有較高的應用價值和推廣價值。
[1] Schurgers C.Optimizing Sensor Networks in the Energy-Latency-Density Design Space[J].Mobile Computing,IEEE,2002,1(1):70-80.
[2] 宋光明,葛運建.智能傳感器網絡研究與發(fā)展[J].傳感技術學報,2003,26(2):107-112
[3] Lucas D,Joel J.A Survey on Cross-Layer Solutions for Wireless Sensor Networks[J].Journal of Network and Computer Applications,2011,34(2):523-534.
[4] Wang Yun-bo,Vuran M C,Steve G,et al.Cross-Layer Analysis of the End-to-end Delay Distribution in Wireless Sensor Networks[J]. IEEE/ACM Transactions on Networking,2012,20(1):305-318.
[5] Krishnamurthy S,Deutsche Telekom Labs.TinySIP:Providing Seamless Access to Sensor-Based Services[A].Mobile and Ubiquitous Systems:Networking&Services,2006 Third Annual International Conference[C]//IEEE,2006:1-9.
[6] Kovatsch M,Duquennoy S.A Low-Power CoAP for Contiki[C]// Proceedings of the 2011 IEEE 8 th International Conference on Mobile Ad Hoc and Sensor Systems.Piscataway:IEEE Press,2011:855-860.
[7] Souto E,Guimar?es G.A Publish/Subscribe Middleware for Sensor Networks[J].Pers Ubiquit Comput,2006,10:37-44.
[8] Hunkeler U,Truong H.MQT T-S-A Publish/Subscribe Protocol for Wireless Sensor Networks[C]//COMSWARE 2008.3rd International Conference on Communication[A].IEEE,2008:791-798.
[9] Ernesto García Davis,Anna Calveras.Improving Packet Delivery Performance of Publish/Subscribe Protocols in Wireless Sensor Networks[J].Sensors,2013,13:648-680.
[10]Xin Ma,Wei Luo.The Analysis of 6LoWPAN Technology[J].Computational Intelligence and Industrial Application,2008,19(20):963-966.
[11]Oikonomou G.Comput Sci Experiences from Porting the Contiki Operating System to a Popular Hardware[C]//Distributed Computing in Sensor Systems and Workshops(DCOSS).IEEE,2011:1-6.
黨宏社(1962-)男,漢族,陜西武功人,陜西科技大學,教授,主要研究方向為信息融合,工業(yè)過程控制,hsdang@163.com;
付曉軍(1989-),男,漢族,山東臨沂人,陜西科技大學碩士研究生,主要研究方向為無線傳感器網絡,junefunfxj@126.com。
Design of WSN Based on Publish/Subscribe Model*
DANG Hongshe*,FU Xiaojun,ZHANG Chao,WANG Li
(College of Electrical&Information Engineering,Shaanxi University of Science&Technology,Xian 710021,China)
To reduce the influence of traffic on the energy consumption of nodes and improve the connectivity of sensor networks in large scale nodes,a wireless sensor network has been designsed utilizing publish/subscribe model. This network uses 6LoWPAN networking technology combined with the Contiki operating system to achieve the MQTT-S that is an application layer protocol for wireless sensor networks.The test results show that the design can effectively realization of node power consumption and network communication optimization,which is of great significance for the design and application on a large scale sensor networks.
wireless sensor network;publish/subscribe model;MQTT;6LoWPAN
TP393
A
1005-9490(2016)03-0586-05
EEACC:6150P10.3969/j.issn.1005-9490.2016.03.017