常用物聯網應用協議匯總
2017-04-17 20:40:50 n原文發表自領英
作者簡介:席華彬,Siemens PLM Software 高級顧問
本文羅列下市面上物聯網通信中的各類消息技術-即工作在網絡通信的應用層協議,總結下它們各自特點、特定的物聯網應用場景等。
這類協議都直接用于在無線或有線網絡環境下的設備之間、人與設備之間的通信,物聯網開發者都會與這些協議打交道。
上圖為物聯網聯接的問題空間,其中物聯網的通信環境有Ethernet, Wi-Fi, RFID, NFC(近距離無線通信), Zigbee, 6LoWPAN(IPV6低速無線版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等網絡,而每一種通信應用協議都有一定適用范圍。AMQP、JMS、REST/HTTP都是工作在以太網,COAP協議是專門為資源受限設備開發的協議,而DDS和MQTT的兼容性則強很多。
MQTT (Message Queuing Telemetry Transport ),消息隊列遙測傳輸,IBM開發的一個即時通訊協議,現在成了OASIS的建議標準;
DDS(Data Distribution Service for Real-Time Systems),面向實時系統的數據分布服務,這是大名鼎鼎的OMG組織提出的協議,其權威性應該能證明該協議的未來應用前景;
AMQP(Advanced Message Queuing Protocol),先進消息隊列協議,這是OASIS組織提出的,該組織曾提出OSLC(Open Source Lifecyle)標準,用于業務系統例如PLM,ERP,MES等進行數據交換;
XMPP(Extensible Messaging and Presence Protocol)可擴展通訊和表示協議,XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通信協議。XMPP目前被IETF國際標準組織完成了標準化工作;
JMS (Java Message Service),JAVA消息服務,這是JAVA平臺中著名的消息隊列協議;
REST (Representational State Transfer),表征狀態轉換,是基于HTTP協議開發的一種通信風格,目前還不是標準;
CoAP (Constrained Application Protocol),受限應用協議,應用于無線傳感網中協議。
以上這幾種協議都已被廣泛應用,并且每種協議都有至少10種以上的代碼實現,都宣稱支持實時的發布/訂閱的物聯網協議,但是在具體物聯網系統架構設計時,需考慮實際場景的通信需求,選擇合適的協議。
這兒舉個智能家居的例子,說明下這些協議側重應用方向。智能家居中智能燈光控制,可以使用XMPP協議控制燈的開關;智能家居的電力供給,發電廠的發動機組的監控可以使用DDS協議;當電力輸送到千家萬戶時,電力線的巡查和維護,可以使用MQTT協議;家里的所有電器的電量消耗,可以使用AMQP協議,傳輸到云端或家庭網關中進行分析;最后用戶想把自家的能耗查詢服務公布到互聯網上,那么可以使用REST/HTTP來開放API服務。
下面我們將一一詳細介紹下這些協議:
適用范圍:在低帶寬、不可靠的網絡下提供基于云平臺的遠程設備的數據傳輸和監控。
特點:
使用基于代理的發布/訂閱消息模式,提供一對多的消息發布
使用 TCP/IP 提供網絡連接
小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量
支持QoS,有三種消息發布服務質量:“至多一次”, “至少一次”, “只有一次”
協議主要實現和應用:
已經有PHP,JAVA,Python,C,C#等多個語言版本的協議框架
IBM Bluemix 的一個重要部分是其 IoT Foundation 服務,這是一項基于云的 MQTT 實例
移動應用程序也早就開始使用MQTT,如 Facebook Messenger 和com等
點評:
MQTT協議一般適用于設備數據采集到端(Device->Server,Device->Gateway),集中星型網絡架構(hub-and-spoke),不適用設備與設備之間通信,設備控制能力弱,另外實時性較差,一般都在秒級。
適用范圍:分布式高可靠性、實時傳輸設備數據通信。目前DDS已經廣泛應用于國防、民航、工業控制等領域。
特點:
以數據為中心
使用無代理的發布/訂閱消息模式,點對點、點對多、多對多
提供多大21種QoS服務質量策略
協議主要實現:
OpenDDS 是一個開源的 C++ 實現
OpenSplice DDS
點評:
DDS很好地支持設備之間的數據分發和設備控制,設備和云端的數據傳輸,同時DDS的數據分發的實時效率非常高,能做到秒級內同時分發百萬條消息到眾多設備。DDS在服務質量(QoS)上提供非常多的保障途徑,這也是它適用于國防軍事、工業控制這些高可靠性、可安全性應用領域的原因。但這些應用都工作在有線網絡下,在無線網絡,特別是資源受限的情況下,沒有見到過實施案例。
適用范圍:最早應用于金融系統之間的交易消息傳遞,在物聯網應用中,主要適用于移動手持設備與后臺數據中心的通信和分析。
特點:
Wire級的協議,它描述了在網絡上傳輸的數據的格式,以字節為流
面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全
協議實現:
Erlang中的實現有 RabbitMQ
AMQP的開源實現,用C語言編寫OpenAMQ
Apache Qpid
stormMQ
適用范圍:即時通信的應用程序,還能用在網絡管理、內容供稿、協同工具、檔案共享、游戲、遠端系統監控等。
特點:
客戶機/服務器通信模式
分布式網絡
簡單的客戶端,將大多數工作放在服務器端進行
標準通用標記語言的子集XML的數據格式
點評:
XMPP協議基于XML文本來傳輸的即時通訊指令,它原來的設計目的是互聯互通即時通訊服務的,在一些物聯網應用中,它被用作發送比較復雜的操作命令到設備端來進行設備控制。
適用范圍: REST/HTTP主要為了簡化互聯網中的系統架構,快速實現客戶端和服務器之間交互的松耦合,降低了客戶端和服務器之間的交互延遲。因此適合在物聯網的應用層面,通過REST開放物聯網中資源,實現服務被其他應用所調用。
特點:
REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是RESTful
客戶端和服務器之間的交互在請求之間是無狀態的
在服務器端,應用程序狀態和功能可以分為各種資源,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。所有資源都共享統一的界面,以便在客戶端和服務器之間傳輸狀態
使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE
點評: REST/HTTP其實是互聯網中服務調用API封裝風格,物聯網中數據采集到物聯網應用系統中,在物聯網應用系統中,可以通過開放REST API的方式,把數據服務開放出去,被互聯網中其他應用所調用。
適用范圍: CoAP是簡化了HTTP協議的RESTful API,CoAP是6LowPAN協議棧中的應用層協議,它適用于在資源受限的通信的IP網絡。
特點:
CoAP采用了二進制報頭,而不是HTTP協議中的文本報頭(text header)
CoAP降低了頭的內容類型選項數量,例如去掉了text/html (UTF-8)、image/jpeg、video/raw等
協議主要實現:
libcoap(C語言實現)
Californium(java語言實現)
點評:
CoAP和6LowPan,這分別是應用層協議和網絡適配層協議,其目標是解決設備直接連接到IP網絡,也就是IP技術應用到設備之間、互聯網與設備之間的通信需求。因為IPV6技術帶來巨大尋址空間,不光解決了未來巨量設備和資源的標識問題,互聯網上應用可以直接訪問支持IPV6的設備,而不需要額外的網關。
以上幾種協議,有兩個特征是物聯網通信技術選擇時需要考慮的:
發布/訂閱服務更適合物聯網環境下通信
DDS、MQTT、AMQP和JMS都是基于發布/訂閱模式,發布/訂閱框架具有服務自發現、動態擴展、事件過濾的特點,它解決了物聯網系統在應用層的數據源快速獲取、物的加入和退出、興趣訂閱、降低帶寬流量等問題,實現物的聯接在空間上松耦合(雙方無需知道通信地址)、時間上松耦合和同步松耦合。
服務質量(QoS)是物聯網通信中的重要考慮因素
在服務策略的幫助下,DDS能夠有效地控制和管理網絡帶寬、內存空間等資源的使用,同時也能控制數據的可靠性、實時性和數據的生存時間,通過靈活使用這些服務質量策略,DDS不僅能在窄帶的無線環境上,也能在寬帶的有線通信環境上開發出滿足實時性需求的數據分發系統。