<!-- | |
This document is provided as a template along with some guidance for creating | |
your project proposal. This is just a template. Feel free to change it as | |
you see fit (add sections, remove section). We feel, however, that the | |
suggestions represented in this document represent the reasonable minimum | |
amount of information to move forward. | |
Please keep the formatting in this document simple. Please do not edit | |
this document in Microsoft Word as it adds huge piles of markup that make | |
it difficult to restyle. | |
More information is available here: | |
http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase | |
Direct any questions about this template to emo@eclipse.org | |
--> | |
<html> | |
<head> | |
<!-- | |
Include the title here. We will parse it out of here and include it on the | |
rendered webpage. Do not duplicate the title within the text of your page. | |
--> | |
<title>Wakaama</title> | |
</head> | |
<!-- | |
We make use of the 'classic' HTML Definition List (dl) tag to specify | |
committers. I know... you haven't seen this tag in a long while... | |
--> | |
<style> | |
dt { | |
display: list-item; | |
list-style-position:outside; | |
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); | |
margin-left:16px; | |
} | |
dd { | |
margin-left:25px; | |
margin-bottom:5px; | |
} | |
</style> | |
<body> | |
<p> | |
The liblwm2m project is a proposed open source project under the | |
<a href="http://projects.eclipse.org/projects/technology">Technology | |
Top-level Project</a>. | |
</p> | |
<p> | |
This proposal is in the Project Proposal Phase (as defined in the | |
Eclipse Development Process) and is written to declare its intent and | |
scope. We solicit additional participation and input from the Eclipse | |
community. Please send all feedback to the | |
<a href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse | |
Proposals</a> Forum. | |
</p> | |
<h2>Background</h2> | |
<p> | |
The Open Mobile Alliance (OMA) is a standards body which develops open | |
standards for the mobile phone industry like Multimedia Messaging | |
Service (MMS), OMA Data Synchronization (OMA-DS) and OMA Device | |
Management (OMA-DM). In February 2012, OMA-DM reached 1.4 Billion | |
deployment in commercial devices. | |
</p> | |
<p> | |
Analysis Mason forecasts that the number of M2M connected devices will | |
grow to 2.1 billion devices in 2020. Machina Research projects that the | |
number of M2M connections will grow to 20 billion in 2020. There will | |
be more M2M devices shipped each year than PCs, tablets, cell phones, | |
set-top-boxes and gaming platforms put together. This is why the OMA is | |
now looking at M2M and the Internet of Things. | |
At the end of 2013, OMA released the specifications for Lightweight M2M | |
(LWM2M). | |
</p> | |
<p> | |
OMA Lightweight M2M is a protocol for device and service management. | |
The main purpose of this technology is to address service and | |
management needs for constrained M2M devices, over a number of | |
transports and bearers. The crucial aspects in this work are: | |
</p> | |
<ul> | |
<li> | |
The target, that is a variety of devices “constrained” at very | |
different levels | |
</li> | |
<li> | |
Data collection and remote controlling without complex | |
computing and UI operations | |
</li> | |
<li> | |
The optimization of network resources, as a very large numbers | |
of devices may be connected to the communication network | |
simultaneously | |
</li> | |
<li> | |
The fusion of device functionalities management and service | |
manipulation in a single protocol</li> | |
</ul> | |
<p> | |
LWM2M defines three logical components:</p> | |
<ul> | |
<li> | |
The LWM2M Server which manages LWM2M Clients. | |
</li> | |
<li> | |
The LWM2M Client executing the operations from the LWM2M Server | |
and reporting results of the operations for the device | |
management and the service enablement. | |
</li> | |
<li> | |
The LWM2M Bootstrap Server which configures the LWM2M Clients. | |
</li> | |
</ul> | |
<p>And four interfaces between these logical components:</p> | |
<ul> | |
<li> | |
Device Discovery and Registration<br/> | |
This interface allows a LWM2M Client let the LWM2M Server know | |
its existence and information (e.g., capability). | |
</li> | |
<li> | |
Bootstrap<br/> | |
This interface is used by the LWM2M Bootstrap Server to set | |
initial parameters and configurations on the LWM2M Client. | |
</li> | |
<li> | |
Device Management and Service Enablement<br/> | |
This interface allows the LWM2M Server to perform the device | |
management and M2M service enablement. Over this interface, the | |
LWM2M Server can send operations to the Client and gets | |
response of the operations from the LWM2M Client. | |
</li> | |
<li> | |
Information Reporting<br/> | |
This interface allows the LWM2M Client to report resource | |
information to the LWM2M Server. This Information Reporting can | |
be triggered periodically or by events. | |
</li> | |
</ul> | |
<p>The LWM2M has the protocol stack defined as below:</p> | |
<img src="liblwm2m_pic1.png" /> | |
<ul> | |
<li> | |
LWM2M Objects: LWM2M Objects are designed for each | |
functionality the LWM2M Client provides. The LWM2M | |
specification provides Standard Objects. | |
</li> | |
<li> | |
LWM2M Protocol: defines logical operations and | |
mechanisms per each interface. | |
</li> | |
<li> | |
CoAP: LWM2M utilizes the IETF Constrained Application Protocol | |
as an underlying transfer protocol across UDP and SMS bearers. | |
This protocol defines the message header, request/response | |
codes, message options, and retransmission mechanisms. LWM2M | |
only uses the subset of features defined CoAP. | |
</li> | |
<li> | |
DTLS: DTLS is used to provide security channel between the | |
LWM2M Server and the LWM2M Client for all the messages | |
interchanged. | |
</li> | |
<li> | |
UDP Binding is mandatory and SMS Binding optional. | |
</li> | |
</ul> | |
<p> | |
Like in OMA-DM, in LWM2M the LWM2M Server manipulates resources on | |
LWM2M Clients using commands like Read, Write, Execute, Create or | |
Delete. The LWM2M Client may have any number of Resources, each of | |
which belongs to an Object. | |
An Object defines a grouping of Resources, for example the Firmware | |
Object contains all the Resources used for firmware update purposes. | |
The LWM2M enabler defines standard Objects and Resources and other | |
Objects may be added to enable a certain M2M Services. | |
</p> | |
<h2>Scope</h2> | |
<p> | |
The liblwm2m project covers the LWM2M Protocol, CoAP, and DTLS layers of | |
the LWM2M protocol stack for all three logical components: LWM2M | |
Client, LWM2M Server and LWM2M Bootstrap Server. | |
An application using liblwm2m can fill any LWM2M roles or all of them | |
at once. | |
</p> | |
<p> | |
The CoAP and DTLS layers may be provided by external components. | |
</p> | |
<p> | |
Regarding LWM2M Objects, liblwm2m only covers the objects required to | |
have a functional LWM2M stack: LWM2M Security Object, LWM2M Server | |
Object and optionally Access Control Object. | |
Other LWM2M Objects are added as plugins to liblwm2m by the application. | |
</p> | |
<h2>Description</h2> | |
<p> | |
Despite its name, liblwm2m is not a library but files to be built with | |
an application. It is written in C and designed to be portable on POSIX | |
compliant systems.<br/> | |
Two compilation switches are used: LWM2M_CLIENT_MODE and | |
LWM2M_SERVER_MODE. Defining LWM2M_CLIENT_MODE enables the LWM2M Client | |
interfaces. Defining LWM2M_SERVER_MODE enables the LWM2M Server | |
interfaces. Both can be defined at the same time. | |
</p> | |
<p> | |
liblwm2m is mono-threaded. An application can call a HandlePacket API | |
to feed liblwm2m with received LWM2M packets and a Step API to perform | |
any pending LWM2M operations. | |
</p> | |
<p> | |
liblwm2m provides APIs for a server application to send commands to | |
registered LWM2M Clients. On client applications, liblwm2m checks | |
received commands for syntax and access rights and then dispatches them | |
to the relevant objects. | |
</p> | |
<h2>Why Eclipse?</h2> | |
<p> | |
Providing an OMA Lightweight M2M protocol implementation to the Eclipse | |
community will help developers to write interoperable M2M services | |
without having to deal with the complexity of the standard or having a | |
deep knowledge of it.<br/> | |
Being hosted by Eclipse, this project will welcome further | |
contributions more easily, help the interoperability and thus reduce | |
the fragmentation, to the best benefit of the technology and the | |
industry. | |
</p> | |
<h2>Initial Contribution</h2> | |
<p> | |
liblwm2m initial implementation is currently available on | |
<a href="https://github.com/01org/liblwm2m">GitHub</a>. | |
</p> | |
<p> | |
The code is functional and implements the Device Discovery and | |
Registration interface, the Device Management and Service Enablement | |
interface and the Information Reporting interface.<br/> | |
The missing features are the Bootstrap interface, the DTLS layer and | |
the Access Control Object.<br/> | |
liblwm2m comes with two test applications: a LWM2M Client and a LWM2M | |
Server. Both features a basic command line interface. | |
</p> | |
<p> | |
The LWM2M protocol engine copyright is held by Intel Corporation with | |
some contributions by Sierra Wireless.<br/> | |
liblwm2m includes files from the Erbium CoAP Engine for Contiki which | |
is copyrighted by the Institute for Pervasive Computing, ETH Zurich and | |
released under a BSD 3-clause license. | |
</p> | |
<h2>Legal Issues</h2> | |
<p> | |
liblwm2m is currently released under the BSD 3-clause license.<br/> | |
The proposed licensing for this project will rely on dual license, | |
Eclipse Distribution License and Eclipse Public License. | |
</p> | |
<h2>Committers</h2> | |
<p> | |
The following individuals are proposed as initial committers to the | |
project: | |
</p> | |
<dl> | |
<dt>David Navarro, Intel Corporation</dt> | |
<dt>Julien Vermillard, Sierra Wireless</dt> | |
<dt>Manuel Sangoï, Sierra Wireless</dt> | |
</dl> | |
<p> | |
We welcome additional committers and contributions. | |
</p> | |
<h2>Mentors</h2> | |
<!-- | |
New Eclipse projects require a minimum of two mentors from the Architecture | |
Council. You need to identify two mentors before the project is created. The | |
proposal can be posted before this section is filled in (it's a little easier | |
to find a mentor when the proposal itself is public). | |
--> | |
<p> | |
The following Architecture Council members will mentor this project: | |
</p> | |
<ul> | |
<li> | |
Benjamin Cabé | |
</li> | |
<li> | |
Mentor 2 | |
</li> | |
</ul> | |
<h2>Interested Parties</h2> | |
<!-- | |
Provide a list of individuals, organisations, companies, and other Eclipse | |
projects that are interested in this project. This list will provide some | |
insight into who your project's community will ultimately include. Where | |
possible, include affiliations. Do not include email addresses. | |
--> | |
<p> | |
The following individuals, organisations, companies and projects have | |
expressed interest in this project: | |
</p> | |
<ul> | |
<li> | |
Sierra Wireless | |
</li> | |
<li> | |
Somebody else, Affiliation | |
</li> | |
</ul> | |
<h2>Project Scheduling</h2> | |
<!-- | |
Describe, in rough terms, what the basic scheduling of the project will | |
be. You might, for example, include an indication of when an initial contribution | |
should be expected, when your first build will be ready, etc. Exact | |
dates are not required. | |
--> | |
<h2>Changes to this Document</h2> | |
<!-- | |
List any changes that have occurred in the document here. | |
You only need to document changes that have occurred after the document | |
has been posted live for the community to view and comment. | |
--> | |
<table> | |
<tr> | |
<th>Date</th> | |
<th>Change</th> | |
</tr> | |
<tr> | |
<td>04-December-2013</td> | |
<td>Document created</td> | |
</tr> | |
</table> | |
</body> | |
</html> |