# Scalable OneM2M IoT Open-Source Platform Evaluated in an SDN Optical Network Controller Scenario +
## 3 The OneM2M IoT Platform and Proposed Implementation for Optical Network Control  
### The OneM2M Standard  
Among the standard development organizations that have been working on IoT, the OneM2M Global Initiative [29] is an international partnership project whose objective was to cooperate in the production of a globally applicable, access-independent M2M layer. This initiative addresses new requirements to support interoperable and scalable IoT solutions. OneM2M promotes a global standard in contrast to national variants or proprietary approaches [30].  
The OneM2M standard defines an architectural framework [31] based on a middleware technology that lies in the horizontal layer between IoT applications and a lower layer of communication networks and connected devices. The middleware layer provides a rich set of functions to manage end-to-end IoT systems. The key role of the IoT middleware is that it guarantees interoperability, and it is achieved in the OneM2M standard at a service level, providing common functions (e.g., data management, subscription/notification) to applications in different domains. The middleware also provides an abstraction layer that hides the complexity of underlying hardware devices and exposes standard Application Programming Interfaces (APIs) used by IoT applications to access the data of interest. Unlike traditional database management systems, where data are organized into schemas and queried through specific languages, each IoT device has its own data retrieval method. So the interoperability middleware eases the usage of the data by the application developers.  
The OneM2M adopts a resource-oriented model for the supported services and data. A Uniform Resource Identifier (URI) uniquely addresses a resource, and the interaction between the platform and the resources happens through the basic four CRUD (Create, Retrieve, Update, Delete) operations. The OneM2M-compliant systems manage their resources hierarchically, as shown in Figure 1. The root of the hierarchy is the Common Service Entity (_CSE_) Base that represents an instantiation of a set of common service functions, such as data storage and sharing with access control and authorization, event detection and notification, and location services. Each CSE Base contains one or more Application Entities (_AE_), implementing the application service logic. AEs are organized into Containers (_CON_). The address of a resource is represented as a hierarchical address that reflects the resource structure. Considering for example Figure 1, the address of _CON1_ will be _<CSE Base>/AE1/CON1_.  
The OneM2M standard also specifies protocol bindings with the underlying delivery protocol, including the Hypertext Transfer Protocol (HTTP) [32], Constrained Application Protocol (CoAP) or Message Queue Telemetry Transport (MQTT), as well as a service level protocol and a service message layer format. The standard provides two kinds of methods for querying the resources: request/response or subscription/notification. In the first method, a piece of software sends an HTTP GET request to the IoT server with the Uniform Resource Locator (URL) linked to the resource it wants to get. The IoT server sends back the HTTP response containing the JSON (JavaScript Object Notation) or XML (eXtensible Markup Language) body, which corresponds to the value of the required resource. The second method involves the subscription by interested parties to a container. The IoT server will notify its subscribers of any event (e.g., a new content instance) under the subscribed resource. The subscribe/notification messages travel into HTTP POST requests.