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.
--
Schichtenübergreifende Interaktionen (sogenannte Cross-Layer-Interaktionen) werden in drahtlosen Sensornetzen häufig eingesetzt. Sie helfen dabei, den Energiebedarf zu optimieren, behandeln Speicherbeschränkungen und berücksichtigen die besonderen Eigenschaften der drahtlosen Kommunikation. Cross-Layer-Interaktionen haben jedoch den Nachteil, dass sie wünschenswerte Eigenschaften der Softwarearchitektur (z. B. Modularität und Wiederverwendbarkeit) negativ beeinflussen. Im Extremfall entsteht eine monolithische Anwendung, die nicht mehr gewartet werden kann.
Deshalb untersucht diese Arbeit verschiedene Ansätze, 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 Modularität zu erhalten und die Wiederverwendbarkeit zu erhöhen, indem Softwarekomponenten, die Daten austauschen, voneinander entkoppelt werden. Diese Strategie wird durch TinyXXL umgesetzt, einer Programmierabstraktion für schichtenübergreifenden 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 für den Datenaustausch zwischen den Schichten eines einzelnen Knoten und zwischen benachbarten Knoten an.
Zweitens lockert das Framework eine der Beschränkungen, die oft zu Cross-Layer-Interaktionen führen und verringert so den Bedarf, sie einzusetzen. Dazu enthält es ViMem, ein System für flash-basierten virtuellen Speicher, das die Speicherbeschränkungen reduziert und versucht, die Anordnung von Variablen im Speicher zu optimieren.
Schließlich ist die dritte Strategie, Energiegesichtspunkte in die Systemsoftware zu verschieben. Für diesen Zweck enthält das Framework Levels, eine Abstraktion um optionale Funktionalität zu spezifizieren. Damit wird ermöglicht, dass die Sensorknoten eine vorgegebene Lebensdauer erreichen können. Wenn nötig, deaktiviert Levels Funktionalität, damit weniger Energie benötigt wird. Außerdem enthält das Framework einen verteilten Algorithmus, der hilft, über die gesamte Lebensdauer des Netzes eine konstante Anwendungsqualität bereitzustellen.
|