学习LwM2M协议

OMA Lightweight M2M 主要动机是定义一组轻量级的协议适用于各种物联网设备,因为M2M设备通常是资源非常有限的嵌入式终端,无UI, 计算能力和网络通信能力都有限。同时也因为物联网终端的巨大数量,节约网络资源变得很重要。


体系结构图如图1所示,有四个接口:
1)Bootstrap(引导),
2)Client Registration(客户注册),
3)Device Management & Service Enablement(设备管理和服务支持),
4)Information Reporting(信息报告)。
这四个接口的路由操作可分为上行链路操作和下行链路操作。
学习LwM2M协议


图3显示了“Bootstrap”接口的操作模型。对于这个接口,这些操作包括一个上行链路操作为“引导-请求”和下行操作为“发现”、“写入”,“删除”和“引导-完成”。
这些操作用于初始化LWM2M客户端所需的对象以与一个或多个LWM2M服务器进行注册。使用此接口上的“写入”操作,LwM2M客户端必须写入包含在有效负载中的值,而不考虑目标对象实例或资源和访问权限。在服务器将引导信息寻址到LwM2M客户端的模式中,当此传输结束时,服务器必须通过发送“Bootstrap-Finish”命令通知LwM2M客户端。
学习LwM2M协议

图4显示了接口“客户端注册”的操作模型。对于这个接口,这些操作是称为“注册”、“更新”和“注销”的上行链路操作。
学习LwM2M协议

图5显示了接口“设备管理和服务支持”的逻辑操作模型。对于这个接口,这些操作是名为“read(读取)”、“create(创建)”、“Delete(删除)”、“write(写入)”“EXECUTE(执行)”、“Write Attribute(写-属性)”和“Discover(发现)”的下行操作。这些操作用于与LwM2M客户端公开的资源、资源实例、对象实例和/或它们的属性进行交互。“读取”操作用于读取当前值;“发现”操作用于发现属性并发现在特定对象中实现的资源;“写入”操作替换用于更新值;“写-属性”操作用于更改属性值,而“执行”操作用于启动操作。“创建”和“删除”操作用于创建或删除实例。
学习LwM2M协议

图6显示了接口“信息报告”的操作模型。对于此接口,下行链路操作是“观察”或“取消观察”操作,以及上行链路“通知”操作。“此接口用于向LwM2MServer发送与LwM2M客户端上的资源相关的新值。
学习LwM2M协议
接口与操作之间的关系如下表所示:
学习LwM2M协议


协议栈如下图所示:
学习LwM2M协议
LWM2M Objects: 每个对象对应客户端的某个特定功能实体. LWM2M 规范定义了一下标准Objects,比如:
urn:oma:lwm2m:oma:2; (LWM2M Server Object)
urn:oma:lwm2m:oma:3; (LWM2M Access Control Object)
每个object下可以有很多resource. 比如Firmware object可以有Firmware版本号,size等resource.
Vendor可以自己定义object
LM2M Protocol: 定义了一些逻辑操作,比如Read, Write, Execute, Create or Delete.
CoAP: 是IETF 定义的Constrained Application Protocol 用来做LWM2M的传输层,下层可以是 UDP 或SMS .UDP 是必须支持的,SMS是可选的。CoAP有自己的消息头,重传机制等。
DTLS: 是用来保证客户端和服务器间的安全性的