General Information
The Internet of Things (IoT) aims to seamlessly integrate billions of so-called Smart Objects into traditional Internet infrastructures. From the hardware perspective, Smart Objects typically consist of a tiny, cheap computer, combining energy efficient micro-controllers, low-power radio transceivers, and sensors as well as actuators interacting with the physical world, often powered by batteries. Many of these low-end IoT devices operate in so called low-power and lossy networks (LLNs) and are sometimes referred to as constrained node networks (CNNs).
Most of the theses proposals on this page deal with the development of software or the evaluation of systems and network protocols for Smart Objects and CNNs. In most cases, the IoT operating system RIOT serves as a foundation for the thesis.
Hence, if you would like to apply for a thesis under my supervision, you should have a good understanding of computer networks and the TCP/IP suite as well as you should feel confident in programming in ANSI C. Experience with embedded systems and/or IoT systems is beneficial.
If you think that this is the case please do the following:
- Write an email to teaching@dahahm.de and request a username and password.
- Use these credentials with an MQTT client to publish your request to the following address:
mqtts://<USER>:<PASSWORD>@mqtt.dahahm.de:8883/thesis/request/<USER>
I.e., use MQTT over TLS (encrypted and authenticated) via port 8883. - Please use the retain option.
Below you find some topic proposal but other topics are possible.
Proposed Theses
Comparison of Container-based Virtualization
Read the topic description
While Docker is probably the most famous container-based virtualization system, there are a couple of alternatives like Podman, LXC, or BSD Jails. The goal of this thesis is to survey existing solutions, compare them in terms of features and performance, and derive some best common practises for containerized application and service deployments.
Comparison of Virtualization Managers
Read the topic description
Platforms like Proxmox, LXD, or Incus allows to deploy, manage, and migrate virtual machines and containers. The goal of this thesis is to survey the existing solutions, compare them in terms of features and performance, and derive a set of recommendations for their use in different application scenarios.
Minimal Linux image for Raspberry Pi Zero
Read the topic description
Linux distributions like TinyCore or Puppy Linux provide minimalistic images (including a graphical UI). The Raspberry Pi Zero is a very cheap (and constrained) single-board computer powerful enough to run Linux.
The default Linux distribution for this device (called Raspberry Pi OS) is in fact a rather full-blown Debian installation requiring some Gigabytes of memory and many seconds to boot. In this thesis one should evaluate the possibilities to shrink the installation size and reduce the boot time to a minimum. Custom Linux imaging build tools like Yocto may be helpful to achieve this.
Build and configuration systems for IoT operating systems
Read the topic description
RIOT aims for developer friendly experience and to lower the bar for newcomers to the development of low-end IoT devices. One crucial part, which is still lacking, is the availability of an easy to use build and configuration management.
The first part of this topic would be to survey existing build and configuration systems for established IoT OS like Zephyr or mbed OS. For instance, Zephyr provides a tool called west that helps configuring and building your application. mbed OS provides its own IDE.
The second part, would be to check what is missing for RIOT to ease the development of IoT applications and create a toolset that allows to guide an IoT developer through the process of configuring and deploying applications on top of RIOT for low-end IoT devices.
Comparison of socket abstractions in IoT systems
Read the topic description
In the traditional Internet world POSIX sockets have been used as the default abstraction layer for applications to implement network communication over the last decades. On constrained devices however, POSIX sockets are often too heavy-weight and not an ideal choice because of their memory requirements.
That eventually lead to the development of socket APIs for CCNs like RIOT’s Sock API or Rusts Embedded Network Abstraction Layer. In this topic you should implement wrappers for Rust embedded-nal on top of a network stack like GNRC and evaluate the performance and runtime costs for either abstraction.
Transport Layer Protocols for the IoT
Read the topic description
In the traditional Internet TCP and UDP have been the most commonly used transport layer protocols for decades. Since emergence of QUIC this new (UDP-based) transport layer protocol has become a third option. In contrast, for CCNs TCP has for long been considered too heavyweight and not well suited for LLNs and QUIC has not yet been widely used for these networks. This leaves UDP as the most commonly used transport layer protocol for CCNs.
However, recent studies have indicated that TCP may actually not that ill-suited for CCNs. At the same time people started evaluating QUIC for these networks. In this topic you should evaluate and compare these different transport layer protocols for constrained IoT networks. Besides TCP, UDP, and QUIC you can also consider protocols like SCTP or DCCP for evaluation.
Clock Synchronization for low-power IoT Devices
Read the topic description
The research on clock synchronization protocols for low-power networks have a long tradition in the research area of Wireless Sensor Networks (WSNs). Candidates like the Reference Broadcast Synchronization (RBS) or PulseSync have been evolved over time in order to cater for high accuracy timestamping while coping with the harsh constraints of these networks and systems.
The goal of this topic would be to survey existing protocols, select one or two most appropriate protocols for modern IoT solutions, and provide a proof-of-concept implementation.
IRQ-Throttling
Read the topic description
Enabling interrupts may conflict with the requirements of a real-time system. While methods exist to derive the worst case execution time for interrupt service routines (ISRs), it may be impossible to predict how often and frequent a certain interrupt request (IRQ) may be generated.
The goal of this thesis is to provide a mechanism to throttle ISRs once a certain threshold has been exceeded.
Implementation of Generic Header Compression
Read the topic description
The Generic Header Compression (GHC) as described in RFC 7400 describes a method to compress generic headers and header-like payloads in a similar fashion as the 6LoWPAN header compression (6lo HC).
The goal of this thesis is to implement GHC for the GNRC network stack in the RIOT operating system and evaluate its performance.
Performance Evaluation of ASCON
Read the topic description
“Ascon is a family of authenticated encryption and hashing algorithms designed to be lightweight and easy to implement, even with added countermeasures against side-channel attacks.” The goal of this thesis is to evaluate performance metrics for these algorithms in the context of constrained devices, i.e., MCU-powered IoT systems. Metrics such as code size and instructions required per byte shall be assessed on typical low-end IoT devices and compared to alternative approaches.
OTA flashing of PineTime
Read the topic description
The PineTime is a hackable smart watch based on a nRF52832 microcontroller. In order to flash (i.e., reprogram the code on) the device one need to open the case. While the vendor firmware also allows for programming the device over-the-air (OTA) the custom RIOT based firmware which allows you to install a full-fledged operating system with a full TCP/IP suite does not provide support for OTA flashing right now.
Multicore-Support for RIOT
Read the topic description
Modern MCUs sometimes provide multi CPU cores even for low-end devices. A popular example for a cheap low-power MCU with multiple cores is the ESP32. The RIOT operating system, targeted for low-end IoT devices, currently supports only single core CPUs, i.e., while it can be run on MCUs like the ESP32 it does not leverage the advantages of the multicore architecture.
The goal of this thesis is to evaluate the parts of the kernel which would need to be modified for being able to support multiple cores and provide a proof-of-concept implementation.
Fleet Management for low-power IoT Devices
Read the topic description
Services like Balena offer the management of devices and their applications for fleets of small devices. However, these tools are typically intended for Linux devices deploying container solutions like docker containers.
In this thesis you should evaluate the possibilities to create a fleet management service which can be used for the management and monitoring of low-end IoT devices and deploying applications and/or configurations on these devices. I.e., provide a service similar to the functionalities of Balena but for much smaller devices.
Port Control Protocol (PCP) for RIOT
Read the topic description
RPC 6887 defines the Port Control Protocol (PCP) which “allows a […] host to control how incoming […] packets are translated and forwarded by a Network Address Translator (NAT) or simple firewall”. This protocol might be useful for IoT devices behind a NAT/firewall.
The goal of this thesis would be to implement the protocol for the RIOT operating system and evaluate its performance with typical home gateways (such as a Fritzbox or an OpenWRT router).
HTTP for RIOT
Read the topic description
CoAP (Constrained Application Protocol) has been developed as a replacement for HTTP in constrained IoT scenarios. Nevertheless, in some applications a native HTTP server or client might be better suited for a low-end IoT device (for instance, since many cloud providers do not provide a CoAP service).
Comparison of Container-based Virtualization
Read the topic description
While Docker is probably the most famous container-based virtualization system, there are a couple of alternatives like Podman, LXC, or BSD Jails. The goal of this thesis is to survey existing solutions, compare them in terms of features and performance, and derive some best common practises for containerized application and service deployments.
Comparison of Virtualization Managers
Read the topic description
Platforms like Proxmox, LXD, or Incus allows to deploy, manage, and migrate virtual machines and containers. The goal of this thesis is to survey the existing solutions, compare them in terms of features and performance, and derive a set of recommendations for their use in different application scenarios.
Minimal Linux image for Raspberry Pi Zero
Read the topic description
Linux distributions like TinyCore or Puppy Linux provide minimalistic images (including a graphical UI). The Raspberry Pi Zero is a very cheap (and constrained) single-board computer powerful enough to run Linux.
The default Linux distribution for this device (called Raspberry Pi OS) is in fact a rather full-blown Debian installation requiring some Gigabytes of memory and many seconds to boot. In this thesis one should evaluate the possibilities to shrink the installation size and reduce the boot time to a minimum. Custom Linux imaging build tools like Yocto may be helpful to achieve this.
Measuring Metrics in Low-Power Wireless Networks
Read the topic description
Research on wireless networks is a complex topic. One of the issues the researcher is facing is the evaluation of new protocols, algorithms, or software components. One possibility to conduct the research is to run experiments on real hardware and realistic deployments. This is often a tedious and error-prone task and typically only delivers results for one particular scenario. Another possibility is to conduct the research using network simulators or virtualized networks. One of the key difficulties here is to choose realistic parameters and configurations that resemble reality as closely as possible.
The goal of this thesis is to conduct measurements on real hardware in a small ad-hoc deployments in order to derive attributes and parameters that can be used as input for network simulators.