A Cross-Layer Framework for Sensor Networks
- Andreas Lachenmann
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.