oneM2M Logo transparent 196x130

Standards for M2M and the Internet of Things

TR-0057 Service Layer

oneM2M Service Layer

The architecture standardized by oneM2M defines an IoT Service Layer, i.e. a software Middleware sitting between processing / communication hardware and IoT applications providing a rich set of functions needed by many IoT applications.

It supports among others:

  • secure end-to-end data/control exchange between IoT devices and custom applications by providing functions for proper identification
  • authentication, authorization, encryption
  • remote provisioning & activation
  • connectivity setup
  • buffering
  • scheduling
  • synchronization
  • aggregation
  • group communication
  • device management
  • etc…


oneM2M’s Service Layer is typically implemented as a software layer and sits between IoT applications and processing or communication hardware and operating system elements that provide data storage, processing and transport, normally riding on top of IP. However, non-IP transports are also supported via interworking proxies. The oneM2M Service Layer provides commonly needed functions for IoT applications across different industry segments.

Horizontal architecture 

oneM2M defines a horizontal architecture providing common services functions that enable applications in multiple domains, using a common framework and uniform APIs.

Using these standardized APIs make it much simpler for M2M/IoT solution providers to cope with complex and heterogeneous connectivity choices by abstracting out the details of using underlying network technologies, underlying transport protocols and data serialization. This is all handled by the oneM2M Service Layer without a need for the programmer to become an expert in each of these layers. Therefore, the application developer can focus on the process / business logic of the use case to be implemented and does not need to worry about how exactly the underlying layers work. This is very much like writing a file to a file system without worrying how hard disks and their interfaces actually work.

Therefore, the IoT Service Layer specified in oneM2M can be understood as a distributed operating system for IoT providing uniform APIs to IoT applications in a similar way as a mobile OS does for the smart phone eco system.


 IoT Service layer


For example, the following “vertical” domains are isolated silos which makes it difficult to exchange data between each other. Using  a “horizontal” architecture allows the providion of a seamless interaction between applications and devices. In the below use case, a security application detects that when noboby is in the building, it triggers the switching off of the light and it stops the air conditioning.

IoT Cross-domain interoperability


Cloud provider independent

  • From Fragmentation to Standards è decoupling device, cloud, and application by open interfacesCloud provider independent


Common IoT key problems solved by oneM2M

Common IoT key problems


oneM2M in a nutshell:

  • oneM2M’s Service Layer corresponds to a software “framework”, located between the IoT applications and communication HW/SW that provide storage/connectivity/data transport.

  • It provides functions that IoT applications across different industry segments commonly need (eg. data transport, security/encryption, scheduling, event notifications, remote software update...)

  • It supports cooperative intelligence in distributed applications i.e. in devices, gateways and back-end/cloud applications

  • It supports a selection of underlying transport protocols and serialization formats

  • It is like an Operating System for the Internet of Things, sitting on field devices/sensors, gateways and in servers.

  • And, it is a standard – not controlled by a single private company.

Subscribe to oneM2M News Please enter your name and email address, then click on submit.
Alternatively, you can send an email from your preferred email application with a blank subject to with subscribe oneM2M_News in the message body.

Subscribe to oneM2M News

Your Name(*)
Please let us know your name.

Your Email(*)
Please let us know your email address.