TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Fakultät | Informatik
Informatikzentrum

Optimierung, Parallelisierung und Erweiterung des COOJA-Simulators

Betreuer Robert Hartung
Professor Prof. Dr.-Ing. Lars Wolf
Projekt reap
IBR Gruppe CM (Prof. Wolf)
Art Teamprojektarbeit
Status offen
Beginn 01.10.2017

Motivation

Der Netzwerksimulator COOJA, ursprünglich entstanden und integriert im Betriebssystem CONTIKI OS, dient zur Simulation von hardware- und realitätsnahen drahtlosen Sensornetzen (Wireless Sensor Networks, WSNs). Ein wesentlicher Vorteil besteht darin, dass für COOJA bereits mehrfach nachgewiesen wurde, dass Simulationen nah an der Wirklichkeit liegen. Des weiteren besteht gegenüber anderen, gängigen Netzwerksimulatoren wie Omnet oder NS-3 die Möglichkeit, dass der Code, der simuliert wird, direkt auf realen Sensorknoten ausgeführt werden kann.

Für die Entwicklung und die Optimierung bestehender und zukünftiger Protokolle können Simulationen einfach, kostengünstig und wiederholbar durchgeführt werden. Insbesondere ist dies hilfreich, wenn Parameter eines Protokolls gegeneinander evaluiert werden sollen. Das Starten mehrere Simulationen kann dabei einen erheblichen zeitlichen Vorteil bedeuten.

Es wünschenswert, dass auch eine einzelne Simulation merklich schneller durchgeführt werden kann, als ein vergleichbares, reales Experiment.

An dieser Stelle besteht bei COOJA das Problem, dass Sensorknoten basierend auf AVR-Prozessoren (ATtiny, ATmega, ...) nur sehr langsam simuliert werden können, während andere Prozessoren (bspw. MSPs) deutlich schneller simuliert werden können.

Aufgabenstellung

Das Teamprojekt soll sich der oben beschriebenen Probleme annehmen. Dabei werden verschiedene Aufgaben auf die Teilnehmer verteilt. Die Teilnehmer müssen sich trotz klar getrennter Aufgaben untereinander Absprechen, um gegenseitige Anknüpfungspunkte abzusprechen.

Zunächst ist mittels Profiling zu untersuchen, aus welchen Gründen die Simulation der AVR-Prozessoren AVRora im Vergleich zu MSPsim um den Faktor 100 langsamer ist. Diese Aufgabe kann dazu genutzt werden, sich mit dem Simulator COOJA vertraut zu machen. Eine Dokumentation der grundsätzlichen Klassen und ihrer Verbindungen ist dabei für das weitere Vorgehen sinnvoll.

Anschließend sollen die Teilnehmer eine ihnen zugeteilte Aufgabe bearbeiten. Folgende Aufgaben sind dabei angedacht:

  1. Beschleunigung einzelner Simulationen
  2. Parallelierung der Simulation
    1. Lokal
    2. Netzwerk
  3. Integration von Temperatur- und anderen Umgebungsdaten in die Simulation
  4. Möglichkeit zur Simulation eines zusätzlichen, sekundären MCU auf einer Sensorknotenplattform (insb. INGA 1.6.1)
  5. Radio-Modell (PRR) pro Knoten statt einem globalen Modell

Teilaufgabe 1: Beschleunigung

In dieser Aufgabe soll AVRora verbessert bzw. durch einen C-basierten Simulator (simavr) ersetzt werden. Dabei ist aus der ersten gemeinsamen Aufgabe (Profiling) abzuwägen, welcher der bessere Weg ist. Während es wünschenswert ist, nur kleine Verbesserungen vorzunehmen, kann der Umstieg auf einen C-basierten Simulator weitere Vorteile bringen. %Des weiteren ist es möglicherweise sinnvoll für Aufgabe 5. Ein Nachteil könnte dabei sein, dass bereits vorhandene Modelle, wie das Radio, oder andere Schnittstellen neu entwickelt bzw. migriert werden müssen (vgl. Aufgabe 5).

Teilaufgabe 2: Parallelisierung

Viele zu simulierende Netze bestehen oft aus 100 oder mehr Knoten. Obwohl eine einzelne Simulation für einen Knoten in Aufgabe 1 beschleunigt werden kann, ist eine Parallelisierung aller simulierten Knoten wünschenswert. In 2a soll dies lokal durch Threads geschehen. Dabei ist dies möglicherweise direkt in Verbindung mit Aufgabe 1 umzusetzen. 2b soll die Parallelisierung zusätzlich über das Netzwerk realisieren. So soll die Möglichkeit bestehen, die Anzahl an "Netzwerk-Threads" festzulegen, die automatisch über ein zu entwickelndes System auf verschiedene Rechner verteilt werden. Als einfachsten Mittel können einfach per SSH weitere Prozesse auf entfernten Rechnern gestartet werden.

Teilaufgabe 3: Sensordaten

Für die Simulation realer Netze innerhalb des Projektes REAP bedarf es der Information zu Umgebungsbedingungen. Dazu zählen zum Beispiel Temperatur, Luftdruck- und feuchtigkeit und andere Informationen. In dieser Aufgabe sollen nicht nur die Daten in die Simulation (über etwaige Sensor-Schnittstellen) zur Verfügung gestellt werden, sondern auch eine Benutzeroberfläche entwickelt werden, um diese Daten schnell auf viele bzw. verschiedene Knoten verteilen zu können.

Teilaufgabe 4: SI-Einheit

Eine SI-Einheit ist eine sekundäre MCU und kann dazu dienen kleinere Aufgaben des Hauptprozessors zu übernehmen, oder diesen zu überwachen. Die Simulation beider Prozessoren wäre also für die Vergleichbarkeit der Ergebnisse einer Simulation von Vorteil. In dieser Aufgabe soll die Möglichkeit geschaffen werden, zwei zu simulierende Programme pro Knoten auszuwählen, sodass diese gemeinsam simuliert werden. Dabei ist sicherzustellen, dass die Kommunikation (beispielsweise mittels $I^2C$-Bus) wie auf einer realen Plattform sichergestellt ist).

Teilaufgabe 5: Radio-Modell

Untersuchungen haben gezeigt, dass sich Sensorknoten bei variierenden Umgebungsbedingungen unterschiedlich verhalten. Daher ist es dringend notwendig, dass verschiedenen Knoten, unterschiedliche Radio-Modelle zugeteilt werden können. Neben individuellen Eigenschaften sind diese auch von den Umgebungsparametern abhängig, sodass eine enge Verzahnung mit Aufgabe 3 ist daher vorgesehen.

Links


aktualisiert am 13.07.2017, 16:03
printemailtop