LwM2M全称lightweight Machine to Machine,是OMA(open Mobile Alliance)定义的物联网协议,主要可以使用在资源受限(包括存储、功耗等)的嵌入式设备上。其官方网站 http://www.openmobilealliance.org ,协议的下载地址 http://openmobilealliance.org/release/LightweightM2M/ 。主要理解下LwM2M协议实现功能及网络框架,对具体的实现定义、加密处理等流程还是参考协议比较清晰(基于V1.0.1版本)。具体内容参考协议说明文档<<OMA-TS-LightweightM2M-V1_0_1-20170704-A.pdf>>。
名词解释
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- JavaScript Object Notation
网络基本框架
协议定义了四种接口,并对应不同的功能:Bootstrap、Client Registration、Device managment and Service Enablement及Information Report。这些接口的操作对象为:对象Object,对象实例Object Instance及资源Resources。为实现不同功能划分,协议定义了八种对象,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。对象和对象实例比较好理解,资源协议的说明为逻辑概念,相当于一个对象实现一个功能所占用的资源。资源可以配置不同的权限: 只读、或读写,可由操作Access Control对象进行维护。在接口对元素进行操作时,可以在不同属性级别上进行操作:O、OI、R,概要讲优先级R>OI>O。
服务器客户端网络关系
一个终端至少可以接入一个服务商服务器,也可以接入多个服务服务器,多个服务器时需要进行选择操作,依据为bootstrap引导时获取的相关信息。而服务商可以和网络商属于同一家,亦可是不同家,其大概关系。
协议的流程及操作
主要流程:需要先进行Bootstrap获取相应信息,完成后进行Client Registration处理,只有成功在服务器端注册相关信息后,才可通过Device managment and Service Enablement及Information Report接口来控制和传送相关需要的信息。
协议定义的相关接口的操作和操作方向如下:Uplink表示客户端到服务器端的传送,而Downlink表示服务器端到客户端的传送。理解上LwM2M的消息没有对称的反馈消息,由于LwM2M承载在CoAP协议上,使用CoAP的get、post、put、delete方式(协议详细说明每种operation对应的CoAP操作方式),对于相应消息成功或失败的反馈是通过CoAP协议本身的交互来实现的。LwM2M载荷支持四种格式 plain text、Opaque、TLV、JSON,这四种协议要求服务器端必须都要支持,而在客户端必须支持TLV格式。
Bootstrap属于逻辑功能,不一定存在真实交互,流程可以分为四种:Factory Bootstrap:厂家存储相应信息在设备中;Bootstrap from Smartcard:信息存储在Smartcard中;Client Initiated Bootstrap:客户端请求服务器引导信息数据;Server Initiated Bootstrap:服务器发起引导程序,前提是bootstrap server已经确定客户端可以访问。而在Bootstrap过程实现的尝试流程:Smartcard mode => Factory Bootstrap mode =>采用存储的信息进行register=> Server Initiated Bootstrap ClientHoldOffTime内=>发起重新bootstrap流程。
在Bootstrap完成后进行Registration操作,这个过程有一些能力信息。如终端服务器交互工作模式:U(UDP)、UQ(UDP with Queue Mode)、S(SMS)、SQ、US、UQS(UDP with Queue Mode and SMS),而UQSQ and USQ 在V1.0.1版本中不支持。理解上这些需要和客户端的工作模式设置一致,如在NB的PSM模式下无法使用实时接收服务器侧数据,则需要启用Q模式进行Buffer相应数据。
在Registration完成后,才可启用Device Management and Service Enablement及Information Report的接口服务,而这两类接口服务的主控方为服务器端。如Information Reporting接口,网络可以通过Observe、Cancel Observation来进行客户端Notify信息上报开关的控制。
协议层次结构
LwM2M属于应用层协议,位于CoAP协议之上,而CoAP可以进行DTLS加密处理,最后通过UDP或SMS方式传送。