Powering the Internet of Things with RIOT: Why? How? What is RIOT?

03/11/2016 ∙ by Emmanuel Baccelli, et al. ∙ 0

The crucial importance of software platforms was highlighted by recent events both at the political level (e.g. renewed calls for digital data and operating system "sovereignty", following E. Snowden's revelations) and at the business level (e.g. Android generated a new industry worth tens of billions of euros yearly). In the Internet of Things, which is expected to generate business at very large scale, but also to threaten even more individual privacy, such aspects will be exacerbated. The need for an operating system like RIOT stems from this context, and this short article outlines RIOT's main non-technical aspects, as well as its key technical characteristics.

READ FULL TEXT VIEW PDF
POST COMMENT

Comments

There are no comments yet.

Authors

page 1

page 2

page 3

page 4

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 RIOT: Why?

Despite enormous expectations for the Internet of Things [3], there is so far no de facto standard software platform to program most IoT devices, which are constrained in resources such as CPU, memory, energy. IoT software platforms thus face conflicting requirements : interoperability with the Internet, memory-constrained embedded programming, and portable, open-source code. Such limitations and requirements are expected to last [4], and make impossible the use of traditional platforms such as Linux or derivatives, e.g. Android. In effect, the anticipated IoT industry depends on the emergence of standard software platforms for IoT devices. In this context, it is vital that a strong alternative emerges which can achieve the following goals:

  • allow long-term IoT software security and robustness,

  • enable trust, transparency and the protection of IoT users’ privacy,

  • accelerate innovation by spreading IoT software development costs,

  • reduce environmental impact by preventing IoT device lock-down.

Experience over the last decades (for instance, with Linux) shows that such goals are most likely achieved with a software platform that is:

  • open source,

  • free,

  • driven by a grassroots community.

2 RIOT: How?

In order to achieve the goals listed above in Section 1, the RIOT community gathers a large number of contributors [5] from around the world (with various backgrounds including industry, academia, and hobbyists) and uses an approach based on the following building blocks and principles.  
 
The RIOT community self-organizes in oder to follow clearly defined open processes [6], which favor transparency, and code quality. Technically, the RIOT community uses an open, online tool (GitHub [7]) allowing large-scale distributed revision control and source code management. Furthermore, RIOT code contribution processes mandate that the core of the software platform code is free and licensed with a non-viral copyleft license (LGPLv2.1), which is expected to avoid as much as possible death-by-forking while allowing indirect business models around RIOT (similar to business around Linux).

3 What is RIOT?

RIOT is an open source operating system which achieves the combination of (i) the necessary memory and energy efficiency to fit on the widest range of relevant low-end IoT devices [8], while (ii) offering the functionalities of a full-fledged operating system, i.e. full-featured, extensible network stacks providing spontaneous wireless networking and end-to-end Internet connectivity (e.g. from IoT device to the cloud), as well a powerful API providing state-of-the-art development and debugging tools, uniform and consistent across all supported hardware spanning across 32-bit, 16-bit, and 8-bit architectures. For an technical overview of competing IoT software platforms, one can refer to this survey [8].  
 
From a technical perspective, in a nutshell, RIOT is an operating system based on a micro-kernel architecture [9], with built-in energy efficiency and real-time capabilities. RIOT enables full multi-threading as usually experienced on traditional operating systems (e.g. Linux) and offers the capability to develop efficient IoT applications in standard programming languages (C and C++ ), with tools that are well-known such as gcc, gdb, valgrind, wireshark etc. Instance(s) of RIOT can actually run as process(es) on Linux and Mac OS, and this feature is heavily used for debugging and testing purposes. Such characteristics eliminate most learning curves for embedded software design and shorten development life-cycles for IoT products. For a third-party code analysis of the RIOT code base, one can refer to [13].  
 
On top of the aforementioned features, RIOT supports connectivity via several network stacks. One stack (GNRC) offers low-power IPv6 and 6LoWPAN standard-compliant connectivity, with an extendable software architecture. In particular, the modularity of GNRC enables efficient plug-in of newer and upcoming IoT protocols which go beyond the minimal compliant standard (e.g. RPL extensions [10] [11]). Other stacks are available, including for instance an experimental stack based on novel network paradigms currently studied by the research community, such as content-centric networking [12].  
 
Due to the characteristics described in this document, RIOT offers an attractive base for embedded IoT software development, may it be for industrial purposes, for prototyping, for experimental research purposes, or for teaching in this domain – similarly to Linux in another domain.

References

  • [1] RIOT Website. Available online: http://www.riot-os.org
  • [2] E. Baccelli, O. Hahm, H. Petersen, and K. Schleiser. ”RIOT and the Evolution of IoT Operating Systems and Applications.” ERCIM News 2015, no. 101, April 2015.
  • [3] D. Evans, ”The Internet of Things : How the Next Evolution of the Internet Is Changing Everything,” Cisco White Paper, 2011.
  • [4] L. Mirani, ”Chip-makers are Betting that Moore’s Law Won’t Matter in the Internet of Things,” 2014. Available online: http://qz.com/218514
  • [5] List of RIOT contributors. Available online: https://github.com/RIOT-OS/RIOT/graphs/contributors
  • [6] RIOT Community Processes. Available online: https://github.com/RIOT-OS/RIOT/wiki/RIOT-Community-Processes
  • [7] RIOT on GitHub. Available online: https://github.com/RIOT-OS/RIOT
  • [8] O. Hahm, E. Baccelli, H. Petersen, N. Tsiftes, ”Operating Systems for Low-End Devices in the Internet of Things : a Survey,” in IEEE Internet of Things Journal, Dec. 2015.
  • [9] E. Baccelli, O. Hahm, M. Wählisch, M. Günes, T. Schmidt, ”RIOT OS: Towards an OS for the Internet of Things,” in Proceedings of IEEE INFOCOM, Demo/Poster for the 32nd IEEE International Conference on Computer Communications, Turin, Italy, April 2013.
  • [10] RFC 6997 : M. Goyal, E. Baccelli, M. Philipp, J. Martocci, A. Brandt, ”Reactive Discovery of Point-to-Point Routes in Low Power and Lossy Networks,” IETF Internet Draft, August 2013.
  • [11] E. Baccelli, M. Philipp, M. Goyal, ”The P2P-RPL Routing Protocol for IPv6 Sensor Networks : Testbed Experiments,” Proceedings of the IEEE International Conference on Software Telecommunications and Computer Networks (SOFTCOM), Split, Croatia, September 2011.
  • [12] E. Baccelli, C. Mehlis, O. Hahm, T. C. Schmidt, and M. Wählisch ”Information Centric Networking in the IoT: Experiments with NDN in the Wild,” in Proceeding. of ACM SIGCOMM ICN, the first ACM international Conference on Information-Centric Networking, Paris, Sept. 2014.
  • [13] BlackDuck Open Hub code analysis of RIOT. Available online: https://www.openhub.net/p/RIOT-OS