999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

物聯網傳輸協議MQTT與CoAP比較與應用

2017-10-19 05:47:50王劍秋
計算機時代 2017年10期
關鍵詞:實驗

王劍秋,趙 一

(1.中國電信股份有限公司浙江分公司,浙江 杭州 310006;2.杭州電子科技大學)

物聯網傳輸協議MQTT與CoAP比較與應用

王劍秋1,趙 一2

(1.中國電信股份有限公司浙江分公司,浙江 杭州 310006;2.杭州電子科技大學)

目前在物聯網(IoT)領域還沒有一個可以適用于所有場景的傳輸協議。在眾多的物聯網傳輸協議中,兩個輕量級協議目前應用得最為廣泛:MQTT(Message Queue Telemetry)和CoAP(Constrained Application Protocol)。文章從協議特點、實現方式、適用場景等方面對這兩個協議進行對比,并進行了服務器端的連接測試仿真,根據兩個協議的特點與仿真結果提出了不同應用場景下IoT傳輸協議選取的建議。

物聯網;MQTT;CoAP;傳輸協議

0 引言

作為計算機、互聯網與移動通信之后的世界信息產業(yè)的第三次浪潮,物聯網將終端從PC擴展到了物品。“感知中國”于2009年由溫家寶總理在政府工作報告中提出。自此,物聯網正式被列入了國家五大新興戰(zhàn)略性產業(yè)之一,在中國全社會受到了極大的關注。

從國內BAT公司動向來看,阿里的云物聯套件、百度開放云物聯網服務IoT、騰訊QQ物聯平臺都將MQTT作為IM/IoT共享的接入服務。然而華為NB-IoT戰(zhàn)略中的首款芯片Boudica 120以及LiteOS操作系統(tǒng)卻支持CoAP協議。

本文針對MQTT和CoAP這兩種在物聯網領域較熱門的協議進行對比,并分析它們各自適用的場景。

1 介紹

MQTT(消息隊列遙測傳輸)和CoAP(約束應用協議)是適用于小型設備的目前應用最廣泛的IoT標準協議。MQTT和CoAP都是開放標準,適合受限環(huán)境,支持異步通信和在IP上運行。

1.1 MQTT協議

MQTT是基于ISO標準的在TCP/IP協議之上的基于發(fā)布訂閱的“輕量級”消息協議。它是專門為M2M通信而設計的,最初由IBM開發(fā),覆蓋全平臺,而且可以基本上把所有的聯網設備和外部設備連接起來[1]。

同HTTP協議一樣,MQTT協議也是應用層協議。MQTT協議采用了發(fā)布/訂閱消息模式,就是指發(fā)布者與訂閱者并不是直接通過MQTT協議交互數據,而是分別與消息代理(Broker)通過MQTT交互數據。

MQTT采用客戶端/服務器模型,每個傳感器都是一個客戶端,并通過TCP連接到被稱為代理的服務器。MQTT是面向消息的,每個消息都是離散的數據塊,對代理不透明[2]。每個消息都被發(fā)布到一個稱為主題的地址。客戶可以訂閱多個主題,每個訂閱主題的客戶都收到發(fā)布到該主題的每個消息。MQTT同時提供三種消息QoS供開發(fā)者選擇。

圖1 MQTT結構圖

1.2 CoAP協議

CoAP,即約束應用協議,與HTTP協議一樣也是一種文檔傳輸協議。而不同的是,CoAP是針對受限設備的需求來設計的,其數據包大小遠小于HTTP的TCP流。CoAP通過UDP協議運行,客戶端和服務器通過無連接數據包進行通信,并且允許UDP廣播和多播用于尋址[3]。

圖2 CoAP結構圖

CoAP協議遵循客戶端/服務器模型,客戶端向服務器發(fā)出請求,服務器對請求發(fā)回響應[4]。模型中的客戶端和服務器是功能邏輯上的劃分,節(jié)點可兼具客戶端和服務器的功能[5]。像HTTP一樣,CoAP基于非常成功的REST模型:服務器使資源在URL下可用,客戶端使用GET,PUT,POST和DELETE等方法訪問這些資源。

2 實現

2.1 MQTT協議的實現

MQTT協議的成熟實現方式有很多,比較常見的有以下幾種。

⑴Mosquitto

這是在生產環(huán)境中可用的代理之一,目前基于MQTT協議版本3.1和3.1.1。它包括C和C++客戶端庫,可實現消息訂閱和發(fā)布,并可根據個人需求定制配置參數。Mosquitto是MQTT協議非常常用的一種測試與實現方式,在Github上較為活躍,是目前最受歡迎的實現方式之一。

⑵Mosca

Mosca是一個封裝好的在Node.js上實現MQTT協議消息代理的一種方式。與此同時,它的作者也在維護MQTT.js這樣一個運行在Node.js和瀏覽器的庫。二者搭配起來可以輕松地定制所需完成的需求。但是Mosca目前只能提供消息質量QoS 0和QoS 1兩個選項。

⑶HiveMQ

在大規(guī)模企業(yè)級的消息代理上,HiveMQ可以提供很好的支持。企業(yè)集成可以最低的延遲處理巨大的吞吐量,并進一步處理數據。HiveMQ服務器具有可擴展性,安全性和簡單性。針對個人用戶有免費版,是進行生產環(huán)境部署的一個很好的選擇。

在客戶端實現方面,Eclipse公司的paho項目幾乎提供了所有主流語言對于MQTT客戶端的實現方式。

表1MQTT客戶端比較

2.2 CoAP協議的實現

CoAP協議的開源實現,有三個版本較為實用:

⑴libcoap

ibcoap是針對資源受限(如計算能力、射頻范圍、內存、帶寬、網絡數據包大小等)設備的輕量級應用程序協議的C實現。該協議由IETF作為RFC 7252標準化,并提供server和client方法,非常方便調試CoAP。

⑵Californium

基于Java實現的Californium是另一個很實用的開源版本。Californium是一個強大的CoAP框架,它為技術人員開發(fā)與調試提供了很方便的API。

⑶node-coap

node-coap是建立在Node.js的http庫上的一個CoAP協議客戶端和服務器的開源庫。它也是一種很流行CoAP實現方式,具有快速搭建、簡單配置的特性,可以方便地使用它進行測試與開發(fā)。

3 對比

3.1 特點

從上面的實現部分可以看出,MQTT和CoAP基本上可以在全平臺實現,那么如何針對實際應用場景選擇合適的協議就是一個需要解決的問題。首先,需要了解它們各自的特點。

從表2來看,二者從模型到基于的傳輸協議,以及安全性等方面都有很大的不同點,這讓他們在某些方面的應用上相比對方更有優(yōu)勢。

表2MQTT與CoAP的對比

對于MQTT協議來說,相比CoAP它更加完善,是現階段廣域網上的設備之間進行通信的理想選擇。它類似于微博,可以關注(訂閱)所關心的人(話題),當關注的人發(fā)布新消息的時候,關注者就會收到來自服務器推送的信息。當然,與微博有所不同的是服務器在中間可以對訂閱者的偏好進行過濾操作。由于采用了發(fā)布/訂閱的模式,在帶寬有限的情況下(如缺少強大網絡覆蓋的偏遠地區(qū)),MQTT使物聯網的發(fā)展成為了可能。

相比MQTT類似于微博,CoAP就像是傳統(tǒng)的基于網站的業(yè)務,可以訪問服務器資源,并且提交自己的數據。同MQTT一樣,CoAP也對受限環(huán)境做了特殊的設計。不同于采用發(fā)布/訂閱模式,CoAP采用了UDP傳輸協議,由于UDP允許廣播和多播,其在帶寬較少的地區(qū)的信息傳輸有更好的表現。

3.2 適用場景

在現實生活中,物聯網正在成為我們生活的組成部分:大到智慧城市、醫(yī)療醫(yī)護,小到汽車、智能家居。有很多場景,其實用兩種協議都可以實現,但都有各自的優(yōu)缺點。以下用最近比較火的共享單車為例子進行比較。

以MQTT協議作為通信協議,忽略掉在信息傳輸過程中比較復雜的認證、session等過程,簡化之后每輛單車就相當于是客戶端,云端服務器就等價于消息代理。單車作為客戶端訂閱各種與自己本身相關的事件主題,如開鎖、故障等。當觸發(fā)事件時,服務器向單車推送相應主題的消息,單車根據消息做出相應的處理。如果出現特殊事件,如服務器奔潰等,服務器可以作為發(fā)布者,向每輛單車推送停止運行的消息。

以CoAP實現,類似于傳統(tǒng)的Web服務器,單車以GET、POST等方式向服務器發(fā)送請求,例如認證、故障等,服務器對請求作出響應,單車使用返回的響應信息進行相應的操作。此時,服務器需要識別每一輛單車,信息交互需要二者同時處于在線狀態(tài)。

從上面例子看出,在實現共享單車的過程中,使用MQTT可以讓客戶端和服務器最大限度地解耦,二者不需要交互不需要同時在線。而CoAP最大的優(yōu)勢是其與絕大部分HTTP網站兼容。如果有一個現成的Web服務系統(tǒng),那么使用CoAP是一個很好的選擇。在諸如智能家居等已有現成的Web服務架構的領域,CoAP依賴其對于HTTP的兼容性,開發(fā)工作就相對簡單。反過來如果以MQTT為傳輸協議,則需要對架構進行重新設計。

4 仿真實驗

為了測試采用MQTT和CoAP協議的服務器在實際開發(fā)中的性能,此次設計了測試二者多線程連接的實驗。實驗采用的是Ubuntu 16.04的操作系統(tǒng),壓力測試軟件采用了基于Java的JMeter,Java版本為1.8.0_121。

MQTT協議測試采用XMeter團隊開發(fā)的MQTT-JMeter插件,服務器用Mosca搭建。而由于JMeter官方暫時沒有對CoAP協議測試的支持,所以采用的是Elang2所寫的jmeter-coap-sampler,需要在Github上下載并編譯到本地環(huán)境。測試CoAP服務器使用 node-coap搭建。每組數據的線程數是5000,實測數據如下。

表3 MQTT與CoAP服務器不同硬件條件下連接測試結果

從仿真結果可以看出,隨著內存的增大CoAP服務器對于連接請求的響應時間有下降趨勢,而錯誤率逐漸趨向于0,吞吐量也逐漸增大。MQTT服務器的各項數據與CoAP服務器各項數據變化趨勢基本相同(在4g內存時,受限于測試機器的性能,數據可能存在一定的誤差)。

橫向來看,在同一環(huán)境下,CoAP對于請求的處理時間、吞吐量均優(yōu)于相同條件下MQTT服務器的數據,并且MQTT協議的連接錯誤率遠高于CoAP協議。

由于上述實驗中MQTT協議的服務器錯誤率偏高,又在此基礎上新增了一組少并發(fā)情況下MQTT協議的連接實驗。

表4 內存為2g條件下的MQTT服務器連接測試結果

從第二組實驗結果可以看出,對于MQTT協議,在2g內存的條件下,500以內的線程數可以使服務器錯誤率趨近于0,而500以上線程數的條件下,錯誤率會急劇升高。

從兩組仿真實驗可以得出,CoAP服務器端各項數據均比MQTT協議表現突出,MQTT的性能需要更高的硬件條件才能更好地發(fā)揮。

5 結論

本文從國內大公司發(fā)展物聯網所選的MQTT和CoAP協議入手,分析了它們目前比較普遍的實現方式以及各自的特點,并且從實際應用中分析在各種情形下協議的合理選取,之后通過實驗仿真兩個協議服務器的性能。

從特點分析以及實驗結果可見,如果開發(fā)人員利用現有Web服務器架構來開發(fā),使用CoAP是很好的選擇。而如果將應用接入主流的第三方云平臺,MQTT是更好的選擇。從仿真實驗可見,對于硬件要求不高的小型IoT項目開發(fā),如智能家居等,CoAP可以很完美地實現;如果開發(fā)大型IoT,從各大公司開發(fā)的物聯網云構架可以看得出來,到目前為止,MQTT是最好的選擇。

[1]Hunkeler U,Hong L T,Stanford-Clark A.MQTT-S-A publish/subscribe protocol for Wireless Sensor Networks[C]//International Conference on Communication Systems Software and MIDDLEWARE and Workshops,2008.Comsware.IEEE,2008:791-798

[2]Bormann C,Castellani A P,Shelby Z.CoAP:An Application Protocol for Billions of Tiny Internet Nodes[J].IEEE Internet Computing,2012.16(2):62-67

[3]Sensinode.Constrained Application Protocol(CoAP)[J],2013.

[4]Al-Fuqaha A,Guizani M,Mohammadi M,et al.Internet of Things:A Survey on Enabling Technologies,Protocols,and Applications[J].IEEE Communications Surveys&Tutorials,2015.17(4):2347-2376

[5]陳旖,張美平,許力.WSN應用層協議MQTT-SN與CoAP的剖析與改進[J].計算機系統(tǒng)應用,2015.2:229-234

Comparison of IoT protocols MQTT and CoAP and their applications

Wang Jianqiu1,Zhao Yi2
(1.China Telecom Co.,Ltd.Zhejiang Branch,Hangzhou,Zhejiang 310006,China;2.HangzhouDianzi University)

At present,in the field of emerging Internet of Things(IoT),there is no transmission protocol can be applied to all scenarios.Among the many IoT protocols,two lightweight protocols are currently the most widely used:MQTT(Message Queue Telemetry)and CoAP(Constrained Application Protocol).This paper compares the two protocols from the characteristics of the protocol,the ways of implementation and the application scenarios,and simulates the server-side connection test.According to the characteristics of the two protocols and the simulation results,the proposal of selecting IoT transmission protocol in different application scenarios is put forward.

Internet of things;MQTT;CoAP;transmission protocol

TP3

A

1006-8228(2017)10-25-04

2017-08-14

王劍秋(1975-),男,杭州人,本科,中級工程師,主要研究方向:通訊工程與計算機技術。

10.16644/j.cnki.cn33-1094/tp.2017.10.008

猜你喜歡
實驗
我做了一項小實驗
記住“三個字”,寫好小實驗
我做了一項小實驗
我做了一項小實驗
記一次有趣的實驗
有趣的實驗
小主人報(2022年4期)2022-08-09 08:52:06
微型實驗里看“燃燒”
做個怪怪長實驗
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 最近最新中文字幕在线第一页| 一级毛片高清| 亚洲大学生视频在线播放| 久久久久久国产精品mv| 高清欧美性猛交XXXX黑人猛交 | 国产免费看久久久| 亚洲国产精品日韩av专区| 午夜国产在线观看| 四虎影视国产精品| 午夜高清国产拍精品| 四虎精品国产AV二区| 亚洲欧洲一区二区三区| 自拍中文字幕| 久久精品一卡日本电影 | 亚洲高清中文字幕| 日本成人一区| 免费播放毛片| 国产在线八区| 国产91全国探花系列在线播放| 91外围女在线观看| 亚洲,国产,日韩,综合一区| 她的性爱视频| 国产免费高清无需播放器 | 国产成人亚洲欧美激情| 午夜视频在线观看区二区| 国产午夜在线观看视频| 国产麻豆精品久久一二三| 亚洲高清在线天堂精品| 国产午夜不卡| 日韩精品成人在线| 午夜色综合| 亚洲性日韩精品一区二区| 色偷偷av男人的天堂不卡| 国产女人18水真多毛片18精品| 欧美 国产 人人视频| 国产丝袜第一页| 中文字幕日韩丝袜一区| www.亚洲一区| 无码人中文字幕| 性色一区| 嫩草在线视频| 免费高清a毛片| a亚洲天堂| 日韩精品无码免费专网站| 久久精品国产免费观看频道| 欧美a在线| 国产综合在线观看视频| 亚洲VA中文字幕| 国产成人综合日韩精品无码不卡| 国产精品视屏| 依依成人精品无v国产| 最新精品久久精品| 伊人久久久久久久| 久草网视频在线| Jizz国产色系免费| 91探花国产综合在线精品| 在线观看国产精美视频| 91亚洲精品第一| 欧美日韩国产综合视频在线观看| 日本一本在线视频| 综合五月天网| 99热亚洲精品6码| 精品欧美日韩国产日漫一区不卡| 亚洲国产亚综合在线区| 成人国产一区二区三区| 毛片网站在线看| 国产91特黄特色A级毛片| 亚洲一区二区三区国产精品 | 国产欧美网站| 亚洲黄色视频在线观看一区| 免费女人18毛片a级毛片视频| 亚洲国产第一区二区香蕉| 中文字幕天无码久久精品视频免费| 四虎永久在线精品国产免费| 国产精品对白刺激| 国产日韩AV高潮在线| 成人在线亚洲| 欧美精品综合视频一区二区| 久久精品中文无码资源站| 日韩麻豆小视频| 国内精品伊人久久久久7777人| 欧美成人综合视频|