A cross-layer framework for sensor networks

Cross-layer interactions are often used in wireless sensor networks. They help to optimize energy consumption, deal with memory limitations, and consider the special properties of wireless communication. However, cross-layer interactions have the disadvantage of negatively affecting desirable properties of the software design like modularity and reusability. In the extreme, applications consist of a monolithic piece of code that is hard to develop and impossible to maintain. Therefore, this thesis investigates different approaches to address the negative side-effects of cross-layer interactions. In particular, it develops a framework that pursues three different strategies. First, it tries to preserve modularity and increase reusability by decoupling components that exchange data. This strategy is realized by TinyXXL, a programming abstraction for cross-layer data exchange. This part of the framework has been created based on an analysis of cross-layer interactions in existing applications. With some compile-time optimizations TinyXXL can reduce both energy and memory consumption compared to an application built from reusable components. Using Neidas, a novel neighborhood data sharing algorithm, it offers a comprehensive system for data exchange among the layers of a single node and with neighboring nodes. Second, the framework relaxes one of the constraints that often lead to cross-layer interactions and, thus, reduces the need to apply them. Specifically, it includes ViMem, a flash-based virtual memory system that helps to reduce memory limitations and tries to optimize the memory layout. Finally, the third strategy is to partially move energy concerns into the system software. For this purpose the framework includes Levels, an abstraction to specify optional functionality which allows to accurately meet a user-defined lifetime goal. If necessary, Levels deactivates functionality in order to reach that target lifetime. Furthermore, it includes a distributed algorithm that helps to provide a constant application quality over the total network lifetime. Schichtenubergreifende Interaktionen (sogenannte Cross-Layer-Interaktionen) werden in drahtlosen Sensornetzen haufig eingesetzt. Sie helfen dabei, den Energiebedarf zu optimieren, behandeln Speicherbeschrankungen und berucksichtigen die besonderen Eigenschaften der drahtlosen Kommunikation. Cross-Layer-Interaktionen haben jedoch den Nachteil, dass sie wunschenswerte Eigenschaften der Softwarearchitektur (z. B. Modularitat und Wiederverwendbarkeit) negativ beeinflussen. Im Extremfall entsteht eine monolithische Anwendung, die nicht mehr gewartet werden kann. Deshalb untersucht diese Arbeit verschiedene Ansatze, um die negativen Nebenwirkungen der Cross-Layer-Interaktionen zu verringern. Insbesondere entwickelt sie ein Framework, das die folgenden drei Strategien verfolgt: Erstens versucht das Framework, die Modularitat zu erhalten und die Wiederverwendbarkeit zu erhohen, indem Softwarekomponenten, die Daten austauschen, voneinander entkoppelt werden. Diese Strategie wird durch TinyXXL umgesetzt, einer Programmierabstraktion fur schichtenubergreifenden Datenaustausch. Dieser Teil des Frameworks wurde auf Basis einer Analyse von Cross-Layer-Interaktionen in existierenden Anwendungen erstellt. Mit Hilfe von Optimierungen beim Kompilieren kann TinyXXL im Vergleich zu einer aus wiederverwendbaren Komponenten erstellten Anwendung sowohl den Energie- als auch den Speicherbedarf verringern. Unter Verwendung von Neidas, einem neuen Algorithmus zum Datenaustausch mit Nachbarknoten, bietet es ein umfassendes System fur den Datenaustausch zwischen den Schichten eines einzelnen Knoten und zwischen benachbarten Knoten an. Zweitens lockert das Framework eine der Beschrankungen, die oft zu Cross-Layer-Interaktionen fuhren und verringert so den Bedarf, sie einzusetzen. Dazu enthalt es ViMem, ein System fur flash-basierten virtuellen Speicher, das die Speicherbeschrankungen reduziert und versucht, die Anordnung von Variablen im Speicher zu optimieren. Schlieslich ist die dritte Strategie, Energiegesichtspunkte in die Systemsoftware zu verschieben. Fur diesen Zweck enthalt das Framework Levels, eine Abstraktion um optionale Funktionalitat zu spezifizieren. Damit wird ermoglicht, dass die Sensorknoten eine vorgegebene Lebensdauer erreichen konnen. Wenn notig, deaktiviert Levels Funktionalitat, damit weniger Energie benotigt wird. Auserdem enthalt das Framework einen verteilten Algorithmus, der hilft, uber die gesamte Lebensdauer des Netzes eine konstante Anwendungsqualitat bereitzustellen.