韓 麗,楊 宏,卓 蘭,柏文彥
(1.中國電子技術標準化研究院,北京 100007;2.普奧云信息科技(北京)有限公司,北京 100012)
物聯網的概念雛形可以追溯至1999年的麻省理工學院,相關學者依托射頻識別技術提出萬物皆可通過網絡互聯的概念。2005年國際電信聯盟ITU在《ITU互聯網報告2005:物聯網》[1]對物聯網概念進行擴展,提出任何時刻、任何地點、任何物體之間的互聯,無所不在的網絡和無所不在的計算的發展愿景。隨著外部周期性驅動力持續作用,物聯網進入了基礎性、規模化行業需求推動的新階段[2]。
通信技術是物聯網關鍵核心技術之一,尤其是協議,物聯網協議可分為網絡協議和通信協議兩類,網絡協議包括 Ethernet、WiFi、RFID、ZigBee、Bluetooth、NB-IoT、LoRa、3G/4G等,物聯網網絡應用部署時需要根據實際需求選擇所需的網絡協議[3]。通信協議主要運行在TCP/IP之上,負責設備間的數據交換和通信,如CoAP[4]、MQTT[5]、XMPP[6-7]、AMQP[8]等,這些協議有各自的設計出發點,也有特定的應用場景和適用范圍[9-10]。當前物聯網實際應用中并不存在統一的應用層協議,無論基于上述哪種協議,具體物聯網應用均需再額外封裝開發交互消息。
本文基于物聯網現有協議應用和發展現狀,提出一種可支持多種底層承載協議的物聯網應用層接入協議AAP(Access Application Protocol, AAP),可統一物聯網終端設備或物聯網網關接入物聯網平臺的協議,簡化物聯網相關應用的開發,有助于推動物聯網規模化應用的部署。
CoAP[4]協議旨在適用于資源受限的物聯網設備,基于UDP的輕量級協議,設計原則上參考了HTTP協議。但是由于很多物聯網設備隱藏在局域網內部,CoAP設備作為服務器無法被外部設備尋址,當前僅適用于局域網內部通信。
MQTT[5]作為一種基于客戶端-服務器的消息發布/訂閱傳輸協議,設計目的是為了存儲資源和解決網絡資源受限環境下的通信問題,比較適合物聯網通信。工業應用場景中物聯網連接可以采用MQTT和OPC UA結合的方法[11]。有研究[12]表明,MQTT更適用于云平臺和智能家居場景中。
XMPP[6-7]作為一種基于標準通用標記語言子集XML的協議,通信業務流程比較適合物聯網系統,但協議的安全性以及計算資源消耗的問題尚未解決。
AMQP[8]作為提供統一消息服務的應用層標準高級消息隊列協議,常應用于金融系統之間的交易消息傳遞。
數據分發服務DDS[13]作為OMG定義的分布式實時通信中間件規范,采用發布/訂閱方式,其缺點是不適合資源受限的無線網絡環境。WebSocket協議作為實現服務器和瀏覽器之間全雙工通信的協議標準,可用于實時數據推送。WebSocket的目的是避免服務器頻繁雙向通信時打開多個HTTP連接,從而提高工作效率和資源利用率。WebSocket協議本身消息類型數量有限,所以在應用于物聯網場景時,需要額外進行消息封裝。
由于物聯網的應用場景多樣化,又面臨著多種通信技術選擇,所以物聯網終端設備的網絡接入呈現出復雜的態勢。根據終端設備接入是否通過物聯網網關,可將其劃分為不經過物聯網網關的直接接入和通過物聯網網關的間接接入兩類,適用場景的網絡拓撲示意圖如圖1所示。AAP運行的載體可以是直接接入物聯網平臺的物聯網終端、物聯網網關和物聯網平臺。在具體部署時,物聯網終端設備可根據其具體信息處理能力和所支持的通信手段靈活選擇接入物聯網平臺的具體實現方式。

圖1 AAP的適用場景
AAP屬于應用層消息類協議,其協議棧如圖2所示,可支持適配以下三類底層協議:
(1)基于消息代理進行發布和訂閱的消息協議,如MQTT等;
(2)基于請求/響應的點對點應用層協議,如HTTP等;
(3)點對點的消息包傳送協議,如WebSocket等。

圖2 AAP協議棧
AAP協議流程分為4個階段。
(1)連接建立階段:物聯網網關或物聯網終端與物聯網平臺建立連接;
(2)平臺注冊階段:物聯網網關或物聯網終端向物聯網平臺發起注冊請求,得到回復后,物聯網平臺顯示物聯網網關或物聯網終端在線;
(3)消息交互階段:物聯網網關或物聯網終端與物聯網平臺之間進行消息交互,比如物聯網平臺下發命令、物聯網網關或物聯網終端上報數據以及兩者之間發送連接并保持;
(4)連接斷開階段:物聯網網關或物聯網終端向物聯網平臺發送注銷請求,物聯網平臺不再保持物聯網網關或物聯網終端的狀態。
AAP消息格式由協議行、消息頭和消息體三部分構成。協議行包括格式標志和協議版本號等,協議行的第1個字節是消息格式標志,表示消息頭和消息體的編碼格式,比如由“J”開頭代表JSON格式,由“B”開頭代表二進制格式;消息頭包括消息類型、時間戳、應答標志、壓縮相關信息、認證和加密信息等;消息體的具體內容由消息類型確定。
AAP用于物聯網終端或物聯網網關與物聯網平臺之間的連接,涉及的消息類型包括物聯網網關注冊請求消息/物聯網網關注冊應答消息、物聯網終端注冊請求消息/物聯網終端注冊應答消息、連接保持請求消息/連接保持應答消息和注銷,消息接收端根據消息頭中的消息類型進行消息體的識別、解碼、認證和解密。
AAP消息交互模型分為通知模型、請求應答模型、選擇性應答模型和延遲應答模型。
(1)通知模型中,發送端將消息發送至接收者,接收者無需應答。
(2)請求應答模型中,發送端將消息發送至接收者,接收者將應答消息反饋至發送端。
(3)選擇性應答模型中,發送端請求消息的應答標志為0,在發送指定的請求條數或間隔指定時長后發送請求消息,其應答標志為1,要求接收端發回應答消息,以確認接收端已收到該請求之前的全部消息。
(4)延遲應答模型中,發送端將請求消息發送至接收端,其應答標志為1,接收端反饋應答消息確認收到請求消息。接收端處理完請求消息后,向發送端發送請求消息,其應答標志為1,將處理結果報告發送端,發送端發回應答消息,表示收到處理結果。若接收端發送完處理結果后不能接收到應答消息,可以選擇通過請求消息重傳處理結果。
AAP采用消息主題實現與底層協議的適配,消息主題包括消息主題標識、接入賬號、消息發送或接收設備標識。不同的底層協議傳輸模式對消息主題采用不同的處理方式,底層協議采用消息代理傳輸模式時,通過消息主題進行發送和訂閱;底層協議采用點對點傳輸模式時,消息主題封裝至底層協議的消息包中。
AAP具體實現時可適配底層協議。與MQTT適配時,AAP消息主題直接映射到MQTT的主題,AAP消息體封裝至MQTT消息體中,AAP的接入帳號和接入密碼對應MQTT中消息代理的客戶端帳號和密碼。表1給出底層協議為MQTT時,MQTT的主題設計示例。

表1 MQTT消息主題設計示例
與HTTP適配時,HTTP的頭部是在AAP消息主題增加相應的頭部字段,從而實現應用平臺與物聯網網關或智能感知控制設備之間的多種交互模式。與WebSocket協議適配時,AAP的消息主題和消息體直接封裝到WebSocket消息中。
以底層協議為MQTT,物聯網終端在物聯網平臺上注冊為例,給出AAP協議消息的具體實現。消息交互模型為請求應答模型,采用JSON格式。
AAP中注冊請求消息實現格式示例如圖3所示,AAP中注冊應答消息實現格式示例如圖4所示。

圖3 AAP中注冊請求消息實現格式示例

圖4 AAP中注冊應答消息實現格式示例
綜上所述,針對物聯網平臺、物聯網網關和物聯網終端所設計的物聯網應用層協議AAP,可以承載多種底層協議,既可以靈活適配發布訂閱式消息協議,也可以運行于點對點的請求響應式HTTP協議,及面向消息的點對點連接WebSocket協議之上。AAP解決了物聯網應用層協議的不統一問題,簡化了具體物聯網應用部署的開發流程,有力促進了物聯網應用的規模化發展。