RIOT (operating system)

Last updated
RIOT
Logo-RIOT.png
RIOT – The friendly OS for the IoT
Developer Free University of Berlin
French Institute for Research in Computer Science and Automation
Hamburg University of Applied Sciences
OS family POSIX
Working stateCurrent
Source model Open source
Initial release23 October 2009;14 years ago (2009-10-23)
Latest release 2024.04 [1] / 7 May 2024;16 days ago (7 May 2024)
Repository
Marketing target Embedded systems
Available in English
Platforms TI MSP430, ARM7, ARM Cortex-M0-M0+-M3-M4, Atmel AVR, MIPS32r2, RISC-V
Kernel type Microkernel real-time
License LGPLv2
Preceded byFireKernel
Official website riot-os.org

RIOT is a small operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of things (IoT) devices. It is open-source software, released under the GNU Lesser General Public License (LGPL).

Contents

Background

It was initially developed by Free University of Berlin (FU Berlin), French Institute for Research in Computer Science and Automation (INRIA) and the Hamburg University of Applied Sciences (HAW Hamburg). RIOT's kernel is mostly inherited from FireKernel, [2] which was originally developed for sensor networks. In 2015, one of the co-developers, Matthias Wählisch was awarded the Young Scientist Award of the Forum for Excellent Young Scientists for the contributions of his team to the open source operating system RIOT. [3] In 2016, the ED STIC Doctoral Prize 2017 of the University of Paris-Saclay was awarded to another co-founder, Oliver Hahm for his contribution to the project. [4]

Technical aspects

RIOT is based on a microkernel architecture. [5] In contrast to other operating systems with similarly low memory use (such as TinyOS or Contiki), RIOT allows application software programming with the programming languages C and C++, and Rust, [6] also by an experimental application programming interface (API). [7] It has full multithreading and real-time abilities. [8] Secure Sockets Layer (SSL) and successor Transport Layer Security (TLS) are supported by popular libraries such as wolfSSL. [9]

RIOT runs on processors of 8 bits (such as AVR Atmega), 16 bits (such as TI MSP430), and 32 bits (such as ARM Cortex). [10] A native port also enables RIOT to run as a Linux or macOS process, enabling use of standard developing and debugging tools such as GNU Compiler Collection (GCC), GNU Debugger, Valgrind, Wireshark, etc. RIOT is partly Portable Operating System Interface (POSIX) compliant.

RIOT provides multiple network stacks, [11] including IPv6, 6LoWPAN, or content centric networking and standard protocols such as RPL, [12] User Datagram Protocol (UDP), Transmission Control Protocol (TCP), and CoAP.

Source code

RIOT source code is available on GitHub, and developed by an international community of open source developers.

See also

Related Research Articles

<span class="mw-page-title-main">IPv6</span> Version 6 of the Internet Protocol

Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet. IPv6 was developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion, and was intended to replace IPv4. In December 1998, IPv6 became a Draft Standard for the IETF, which subsequently ratified it as an Internet Standard on 14 July 2017.

A virtual private network (VPN) is a mechanism for creating a secure connection between a computing device and a computer network, or between two networks, using an insecure communication medium such as the public Internet.

Zero-configuration networking (zeroconf) is a set of technologies that automatically creates a usable computer network based on the Internet Protocol Suite (TCP/IP) when computers or network peripherals are interconnected. It does not require manual operator intervention or special configuration servers. Without zeroconf, a network administrator must set up network services, such as Dynamic Host Configuration Protocol (DHCP) and Domain Name System (DNS), or configure each computer's network settings manually.

<span class="mw-page-title-main">Contiki</span> Real-time operating system

Contiki is an operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of Things (IoT) devices. Contiki is used for systems for street lighting, sound monitoring for smart cities, radiation monitoring and alarms. It is open-source software released under the BSD-3-Clause license.

OpenVPN is a virtual private network (VPN) system that implements techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. It implements both client and server applications.

Nucleus RTOS is a real-time operating system (RTOS) produced by the Embedded Software Division of Mentor Graphics, a Siemens Business, supporting 32- and 64-bit embedded system platforms. The operating system (OS) is designed for real-time embedded systems for medical, industrial, consumer, aerospace, and Internet of things (IoT) uses. Nucleus was released first in 1993. The latest version is 3.x, and includes features such as power management, process model, 64-bit support, safety certification, and support for heterogeneous computing multi-core system on a chip (SOCs) processors.

Datagram Transport Layer Security (DTLS) is a communications protocol providing security to datagram-based applications by allowing them to communicate in a way designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the stream-oriented Transport Layer Security (TLS) protocol and is intended to provide similar security guarantees. The DTLS protocol datagram preserves the semantics of the underlying transport—the application does not suffer from the delays associated with stream protocols, but because it uses UDP or SCTP, the application has to deal with packet reordering, loss of datagram and data larger than the size of a datagram network packet. Because DTLS uses UDP or SCTP rather than TCP, it avoids the "TCP meltdown problem", when being used to create a VPN tunnel.

6LoWPAN was a working group of the Internet Engineering Task Force (IETF). It was created with the intention of applying the Internet Protocol (IP) even to the smallest devices, enabling low-power devices with limited processing capabilities to participate in the Internet of Things.

An IPv6 transition mechanism is a technology that facilitates the transitioning of the Internet from the Internet Protocol version 4 (IPv4) infrastructure in use since 1983 to the successor addressing and routing system of Internet Protocol Version 6 (IPv6). As IPv4 and IPv6 networks are not directly interoperable, transition technologies are designed to permit hosts on either network type to communicate with any other host.

Server Name Indication (SNI) is an extension to the Transport Layer Security (TLS) computer networking protocol by which a client indicates which hostname it is attempting to connect to at the start of the handshaking process. The extension allows a server to present one of multiple possible certificates on the same IP address and TCP port number and hence allows multiple secure (HTTPS) websites to be served by the same IP address without requiring all those sites to use the same certificate. It is the conceptual equivalent to HTTP/1.1 name-based virtual hosting, but for HTTPS. This also allows a proxy to forward client traffic to the right server during TLS/SSL handshake. The desired hostname is not encrypted in the original SNI extension, so an eavesdropper can see which site is being requested. The SNI extension was specified in 2003 in RFC 3546

<span class="mw-page-title-main">Locator/Identifier Separation Protocol</span>

Locator/ID Separation Protocol (LISP) is a "map-and-encapsulate" protocol which is developed by the Internet Engineering Task Force LISP Working Group. The basic idea behind the separation is that the Internet architecture combines two functions, routing locators and identifiers in one number space: the IP address. LISP supports the separation of the IPv4 and IPv6 address space following a network-based map-and-encapsulate scheme. In LISP, both identifiers and locators can be IP addresses or arbitrary elements like a set of GPS coordinates or a MAC address.

The Internet Protocol for Smart Objects (IPSO) Alliance was an international technical standards organization promoting the Internet Protocol (IP) for what it calls "smart object" communications. The IPSO Alliance was a non-profit organization founded in 2008 with members from technology, communications and energy companies. The Alliance advocated for IP networked devices in energy, consumer, healthcare, and industrial uses. On 27 March 2018, the IPSO Alliance merged with the Open Mobile Alliance (OMA) to form OMA SpecWorks.

In computer networking, tcpcrypt is a transport layer communication encryption protocol. Unlike prior protocols like TLS (SSL), tcpcrypt is implemented as a TCP extension. It was designed by a team of six security and networking experts: Andrea Bittau, Mike Hamburg, Mark Handley, David Mazières, Dan Boneh and Quinn Slack. Tcpcrypt has been published as an Internet Draft. Experimental user-space implementations are available for Linux, Mac OS X, FreeBSD and Windows. There is also a Linux kernel implementation.

Resource Public Key Infrastructure (RPKI), also known as Resource Certification, is a specialized public key infrastructure (PKI) framework to support improved security for the Internet's BGP routing infrastructure.

OpenConnect is a free and open-source cross-platform multi-protocol virtual private network (VPN) client software which implement secure point-to-point connections.

<span class="mw-page-title-main">OpenWSN</span>

OpenWSN is a project created at the University of California Berkeley and extended at the INRIA and at the Open University of Catalonia (UOC) which aims to build an open standard-based and open source implementation of a complete constrained network protocol stack for wireless sensor networks and Internet of Things. The root of OpenWSN is a deterministic MAC layer implementing the IEEE 802.15.4e TSCH based on the concept of Time Slotted Channel Hopping (TSCH). Above the MAC layer, the Low Power Lossy Network stack is based on IETF standards including the IETF 6TiSCH management and adaptation layer. The stack is complemented by an implementation of 6LoWPAN, RPL in non-storing mode, UDP and CoAP, enabling access to devices running the stack from the native IPv6 through open standards.

Time Slotted Channel Hopping or Time Synchronized Channel Hopping (TSCH) is a channel access method for shared-medium networks.

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs), and was designed with the goals of ease of use, high speed performance, and low attack surface. It aims to be smaller and better performing than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

RPL is a routing protocol for wireless networks with low power consumption and generally susceptible to packet loss. It is a proactive protocol based on distance vectors and operates on IEEE 802.15.4, optimized for multi-hop and many-to-one communication, but also supports one-to-one messages.

References

  1. Error: Unable to display the reference properly. See the documentation for details.
  2. Will, Heiko; Schleiser, Kaspar; Schiller, Jochen (October 2009). "A Real-Time Kernel for Wireless Sensor Networks Employed in Rescue Scenarios". Proceedings of the IEEE 34th Conference on Local Computer Networks (LCN). Institute of Electrical and Electronics Engineers (IEEE). pp. 834–841. doi:10.1109/LCN.2009.5355049. ISBN   978-1-4244-4488-5. S2CID   14806932.
  3. "Matthias Wählisch receives Young Scientist Award". 24 November 2015. Retrieved 2023-02-06.
  4. cokuntz (2020-01-11). "Sciences and Technologies of Information and Communication". Université Paris-Saclay. Retrieved 2024-05-23.
  5. Baccelli, Emmanuel; Hahm, Oliver; Günes, Mesut; Wählisch, Matthias; Schmidt, Thomas (15 April 2013). "RIOT OS: Towards an OS for the Internet of Things". Proceedings of the 32nd IEEE International Conference on Computer Communications (INFOCOM) (PDF). Institute of Electrical and Electronics Engineers (IEEE). Retrieved 2014-05-18.
  6. Lee, Lup Yuen (2020-09-15). "Safer, Simpler Embedded Programs with Rust on RIOT" (PDF). RIOT Summit.
  7. "Rust support for RIOT". GitHub. Retrieved 2020-06-12.
  8. "Betriebssysteme für eingebettete Systeme im Internet der Dinge: Freie Fahrt für Experimentierfreudige". iX Developer Magazine, Special Issue on Embedded Software. Heise.de. 2014-02-14. Retrieved 2014-05-18.
  9. "wolfSSL Alpha examples by kaleb-himes: Pull Request #6197: RIOT-OS/RIOT". GitHub. Retrieved 2019-02-13.
  10. Gauthier, François (2014-04-09). "Avec RIOT, l'Internet des objets tient son OS temps reel open source". L'Embarqué. Retrieved 2014-05-18.
  11. Hahm, Oliver; Baccelli, Emmanuel; Petersen, Hauke; Wählisch, Matthias; Schmidt, Thomas C. (15 April 2014). "Demonstration abstract: Simply RIOT: Teaching and Experimental Research in the Internet of Things". Proceedings of the 13th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN). Association for Computing Machinery (ACM). pp. 329–330. ISBN   9781479931460 . Retrieved 2014-05-18.
  12. Brandt, A.; Hui, J.; Kelsey, R.; Levis, P.; Pister, K.; Struik, R.; Vasseur, J. P.; Alexander, R. (2012-03-01). Winter, T.; Thubert, P. (eds.). "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks". IETF Request For Comments 6550. Internet Engineering Task Force (IETF). ISSN   2070-1721 . Retrieved 2014-05-18.