OneNET协议之LWM2M+CoAP

时间:2024-03-25 20:49:42

OneNET基础通信套件架构

OneNET协议之LWM2M+CoAP

  • SDK的架构如图所示,包括了三部分的内容,最下层是基于UDP协议的CoAP实现,中间是基于CoAP的LWM2M协议实现,最上层是在LWM2M协议里面使用的IPSO定义的资源模型,用于对传感器以及传感器属性进行标识,该部分内容遵循IPSO组织制定的Profile规范。

LWM2M协议简介

LWM2M是OMA组织制定的轻量化的M2M协议。LwM2M定义了三个逻辑实体:

  • LWM2M Server 服务器;
  • LWM2M Client 客户端,负责执行服务器的命令和上报执行结果;
  • LWM2M 引导服务器 Bootstrap Server,负责配置LWM2M客户端。

在这三个逻辑实体之间有4个逻辑接口:

  • Device Discovery and Registration:客户端注册到服务器并通知服务器客户端所支持的能力;
  • Bootstrap:Bootstrap Server 配置 Client ;
  • Device Management and Service Enablement:指令发送和接收;
  • Information Reporting:上报其资源信息。
    LWM2M协议栈:
    OneNET协议之LWM2M+CoAP
  • LWM2M Objects:每个对象对应客户端的某个特定功能实体。LWM2M规范定义了以下标准Objects,比如:
    (1) urn:oma:lwm2m:oma:2; (LWM2M Server Object);
    (2) urn:oma:lwm2m:oma:3; (LWM2M Access Control Object);
    (3) 每个object下可以有很多 resource,比如 Firmware object 可以有 Firmware 版本号,size 等 resource;
    (4) Vendor可以自己定义object。
  • LWM2M Protocol:定义了一些逻辑操作,比如Read, Write, Execute, Discover or Observe等。

LWM2M 协议的具体内容和消息格式可以参考OMA的网站
https://en.wikipedia.org/wiki/OMA_LWM2M

COAP协议简介

  • CoAP(Constrained Application Protocol)协议是IETF提出的一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。CoAP协议基于REST构架,REST是指表述性状态转换架构,是互联网资源访问协议的一般性设计风格。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST式的方法如GET、POST、PUT和DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP基于轻量级的UDP协议,并且允许IP多播。为了弥补UDP传输的不可靠性,CoAP定义了带有重传机制的事务处理机制。并且提供资源发现机制,并带有资源描述。
    CoAP协议栈示意图:
    OneNET协议之LWM2M+CoAP
  • CoAP由UDP作为承载,遵循UDP基本的协议报文格式,UDP数据内容部分按照CoAP协议报文格式进行写入传输。

OneNET协议之LWM2M+CoAP
CoAP协议格式说明如下:

  • 【Ver】版本编号,指示CoAP协议的版本号。类似于HTTP 1.0 HTTP 1.1。版本编号占2位,取值为01B。
  • 【T】报文类型,CoAP协议定义了4种不同形式的报文:CON报文,NON报文,ACK报文和RST报文。
  • 【TKL】CoAP标识符长度。CoAP协议中具有两种功能相似的标识符,一种为Message ID(报文编号),一种Token(标识符)。其中每个报文均包含消息编号,但是标识符对于报文来说是非必须的。
  • 【Code】功能码/响应码。Code在CoAP请求报文和响应报文中具有不同的表现形式,Code占一个字节,它被分成了两部分,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构。其中0.XX表示CoAP请求的某种方法,而2.XX、4.XX或5.XX则表示CoAP响应的某种具体表现。
  • 【Message ID】报文编号。
  • 【Token】标识符具体内容,通过TKL指定Token长度。
  • 【Option】报文选项,通过报文选项可设定CoAP主机、CoAP URI、CoAP请求参数和负载媒体类型等等。
  • 【1111 1111B】CoAP报文和具体负载之间的分隔符。
    CoAP支持多个Option,CoAP的Option的表示方法比较特殊,采用增量的方式描述。一般情况下Option部分包含Option Delta、Option Length和Option Val三部分:
  • 【Option Delta】表示Option的增量,当前的Option的具体编号等于之前所有Option Delta的总和。
  • 【Option Length】表示Option Val终端设备的具体长度。
  • 【Option Val终端设备】表示Option具体内容。

CoAP协议报文中具体数值的意义参考CoAP协议:IETF RFC7252