【物聯(lián)網(wǎng)】LwM2M協(xié)議的實現(xiàn)功能及網(wǎng)絡(luò)框架
LwM2M全稱lightweight Machine to Machine,是OMA(open Mobile Alliance)定義的物聯(lián)網(wǎng)協(xié)議,主要可以使用在資源受限(包括存儲、功耗等)的嵌入式設(shè)備上。
官方網(wǎng)站:http://www.openmobilealliance.org
協(xié)議下載地址:http://openmobilealliance.org/release/LightweightM2M/
主要理解下LwM2M協(xié)議實現(xiàn)功能及網(wǎng)絡(luò)框架,對具體的實現(xiàn)定義、加密處理等流程還是參考協(xié)議比較清晰(基于V1.0.1版本)。
?
名詞解釋
OMA-open Mobile Alliance
CoAP-Constrained Application Protocol
LwM2M-Lightweight Machine to Machine
DTLS-Datagram Transfer Layer Security
SMS-Short Messaging Service
TLV-Type-Length-Value
JSON-Java Object Notation
?
網(wǎng)絡(luò)基本框架?

協(xié)議定義了四種接口,并對應(yīng)不同的功能:
Bootstrap
Client Registration
Device managment and Service Enablement
Information Report
?
這些接口的操作對象為:
對象Object
對象實例Object Instance
資源Resources
?
為實現(xiàn)不同功能劃分,協(xié)議定義了八種對象,ID及命名分別為:
0.?Security Object
1.?Server Object
2.?Access Control Object
3.?Device Object
4.?Connectivity Monitoring Object
5.?Firmware Update Object
6.?Location Object
7.?Connectivity Statistics Object
?
對象和對象實例比較好理解,資源協(xié)議的說明為邏輯概念,相當于一個對象實現(xiàn)一個功能所占用的資源。資源可以配置不同的權(quán)限: 只讀、或讀寫,可由操作Access Control對象進行維護。在接口對元素進行操作時,可以在不同屬性級別上進行操作:O、OI、R,概要講優(yōu)先級R>OI>O。
?
服務(wù)器客戶端網(wǎng)絡(luò)關(guān)系
一個終端至少可以接入一個服務(wù)商服務(wù)器,也可以接入多個服務(wù)服務(wù)器,多個服務(wù)器時需要進行選擇操作,依據(jù)為bootstrap引導(dǎo)時獲取的相關(guān)信息。而服務(wù)商可以和網(wǎng)絡(luò)商屬于同一家,亦可是不同家,其大概關(guān)系。
?
協(xié)議的流程及操作?

主要流程:需要先進行Bootstrap獲取相應(yīng)信息,完成后進行Client Registration處理,只有成功在服務(wù)器端注冊相關(guān)信息后,才可通過Device managment and Service Enablement及Information Report接口來控制和傳送相關(guān)需要的信息。?
?

協(xié)議定義的相關(guān)接口的操作和操作方向如下:
Uplink表示客戶端到服務(wù)器端的傳送,而Downlink表示服務(wù)器端到客戶端的傳送。理解上LwM2M的消息沒有對稱的反饋消息,由于LwM2M承載在CoAP協(xié)議上,使用CoAP的get、post、put、delete方式(協(xié)議詳細說明每種operation對應(yīng)的CoAP操作方式),對于相應(yīng)消息成功或失敗的反饋是通過CoAP協(xié)議本身的交互來實現(xiàn)的。
LwM2M載荷支持四種格式 plain text、Opaque、TLV、JSON,這四種協(xié)議要求服務(wù)器端必須都要支持,而在客戶端必須支持TLV格式。
?
Bootstrap屬于邏輯功能,不一定存在真實交互,流程可以分為四種:
Factory Bootstrap:廠家存儲相應(yīng)信息在設(shè)備中
Bootstrap from Smartcard:信息存儲在Smartcard中
Client Initiated Bootstrap:客戶端請求服務(wù)器引導(dǎo)信息數(shù)據(jù)
Server Initiated Bootstrap:服務(wù)器發(fā)起引導(dǎo)程序,前提是bootstrap server已經(jīng)確定客戶端可以訪問
?
而在Bootstrap過程實現(xiàn)的嘗試流程:
Smartcard mode => Factory Bootstrap mode =>采用存儲的信息進行register=> Server Initiated Bootstrap ClientHoldOffTime內(nèi)=>發(fā)起重新bootstrap流程
?
在Bootstrap完成后進行Registration操作,這個過程有一些能力信息。如終端服務(wù)器交互工作模式:U(UDP)、UQ(UDP with Queue Mode)、S(SMS)、SQ、US、UQS(UDP with Queue Mode and SMS),而UQSQ and USQ 在V1.0.1版本中不支持。
?
理解上這些需要和客戶端的工作模式設(shè)置一致,如在NB的PSM模式下無法使用實時接收服務(wù)器側(cè)數(shù)據(jù),則需要啟用Q模式進行Buffer相應(yīng)數(shù)據(jù)。
?
在Registration完成后,才可啟用Device Management and Service Enablement及Information Report的接口服務(wù),而這兩類接口服務(wù)的主控方為服務(wù)器端。如Information Reporting接口,網(wǎng)絡(luò)可以通過Observe、Cancel Observation來進行客戶端Notify信息上報開關(guān)的控制。
?
協(xié)議層次結(jié)構(gòu)
LwM2M屬于應(yīng)用層協(xié)議,位于CoAP協(xié)議之上,而CoAP可以進行DTLS加密處理,最后通過UDP或SMS方式傳送。
