190 likes | 289 Views
SWISSQM S tephan Wagner. Seminar Datenmanagement in Sensornetzen SS 2007, Prof. Ulf Leser, Dipl-Inf. Timo Mika Gläßer. Eckpunkte SWISSQM. Entwicklung im Rahmen des XTream Projektes an ETH Zürich SWISSQM = S calable Wi reles s S ensor Network Q uery M achine
E N D
SWISSQMStephan Wagner • Seminar Datenmanagement in Sensornetzen • SS 2007, Prof. Ulf Leser, Dipl-Inf. Timo Mika Gläßer
Eckpunkte SWISSQM • Entwicklung im Rahmen des XTream Projektes an ETH Zürich • SWISSQM = Scalable Wireless Sensor Network Query Machine • auf Stack basierende integer VM • ist Turingvollständig • Unterstützung benutzerdefinierter Funktionen
Motivation • Trennung der Sensoren vom externen Interface- Knoten sollen keine anwendungsspezifische Funktionalität beinhalten (z.B. Parsen) • Dynamische multi-user- und multi-programing-Umgebung • Effiziente Benutzung der Sensoren- Empfangen, Berechnen und Senden von Daten • Erweiterbarkeit- benutzerdefinierte Funktionen- Benutzung von „higher data processing layers“
Anwendungsmöglichkeit: Der Vesuv • letzter Ausbruch ereignetesich im Jahre 1944 • gilt als gefährlichster Vulkan Europas • es wird ein baldiger Ausbruch befürchtet (ca. 1-100 Jahre) • am Fuß des Vulkans liegt die Stadt Neapel mit mehr als einer Million Menschen
Beispiel SWISSQM: Sensorknoten • Netzwerk von Sensorknoten amVesuv • Sensoren messen Tektonik und Hitze • Zweck: Vorwarnung
Netzwerktopologie: Koten • Knoten sind in Baumangeordnet und sendenDaten zum Gateway • Unterstützt werden verschiedene Bäume undAdressierungen • auf Sensoren läuft eine QM • multi-hop routing (TinyOS)
Netzwerktopologie: Gateway • Gateway generiert Bytecodeprogramme • Speichert Daten die Effizienz des Netzes beeinträchtigen würden du liefert diese bei Bedarf aus • Interface zur Kontrolle der Knoten (reset, stop, Code senden usw.) • Funktionsweise:- Gateway wandelt Benutzerquerys über virtuelle Querys in Netzwerk-Querys um (liegen in Bytecode vor)
Beispiel SWISSQM: Gateway Gateway übersetzt folgenden Querys in Bytecode Programme und sendet diese an Sensorknoten: • 1 .section delivery, "@5s" • 2 get_parent • 3 istore 0 • 4 get_temp • 5 istore 1 • 6 iload 1 • 7 ipushw 400 • 8 if_icmpge 9 • 9 get_uschall • 10 istore 2 • 11 iload 2 • 12 ipushb 5 • 13 if_icmpge 14 • iconst_2 • Iconst_2 • 16 iconst_2 • 17 iconst_2 • 18 merge • 19 send_sy • 20 • 21 .section reception • 22 iconst_2 • 23 iconst_2 • 24 iconst_2 • 25 iconst_2 • 26 merge Netzwerktopologie: Koten SELECT parent, MAX(temp), MAX(uschall) WHERE temp > 400 AND beben > 5 FROM Sensoren GROUP BY parent SAMPLE PERIOD 5s
SWISSQM: Speicheraufbau • SWISSQM und Benutzerprogramme sind im FLASH-Memory jedes Sensorknotens gespeichert • SRAM speichert nichtbeständigenglobalen Zustand von SWISSQM aus FLASH-Memory während des Bootens • SWISSQM benötigt 3KB + 1KBfür Stack • für Programme werden 384 byte alloziertpro Programm:- 16byte Stack- 16byte Übertragungspuffer- 16byte * #Elemente Synopsis
SWISSQM: Virtuelle Maschine • Virtuelle Maschine besteht aus: • 1. Stack (beinhaltet Operanten und Befehle)2. Übertragungspuffer (speichert Daten für Forwarding)3. Synopsis ermöglicht Ausführung von Aggregationen • 4. Sensoren • 5. QM-Programme
SWISSQM: Querymaschine • Bytcodeinterpreter • Übertragungspuffer • Stack • Synopsis- raw mode: Array wird benutzt wie Übertragungspuffer- managed mode: ermöglicht Kombination von Daten des Übertragungspuffers und Synopsis- hat Tabellenstruktur
Beispiel SWISSQM: QM • 1 .section delivery, "@5s" • 2 get_parent • 3 istore 0 • 4 get_temp • 5 istore 1 • 6 iload 1 • 7 ipushw 400 • 8 if_icmpge 9 • 9 get_uschall • 10 istore 2 • 11 iload 2 • 12 ipushb 5 • 13 if_icmpge 14 • iconst_2 • Iconst_2 • 16 iconst_2 • 17 iconst_2 • 18 merge • 19 send_sy • 20 • 21 .section reception • 22 iconst_2 • 23 iconst_2 • 24 iconst_2 • 25 iconst_2 • 26 merge Synopsis
SWISSQM: Querymaschine • QM Programm besteht aus 3 Sektionen:init section: wird nur beim Programmstartausgeführt und initialisiert Synopsisdelivery section: wird einmal pro Samplingperiode ausgeführt, tastet Sensoren ab, sammelt Daten,„mergen“ mit localer Synopsisreception section: beinhaltet Daten vom Kindknoten, leitet Daten weiter 1 .section init 2 400 3 istore 2 4 5 .section delivery, "@5s" 6 get_parent 7 istore 0 8 get_temp 9 istore 1 10 iload 1 11 iload 2 12 if_icmpge 13 13 iconst_2 14 iconst_1 15 iconst_1 16 merge 17 send_sy 18 19 .section reception 20 iconst_2 21 iconst_1 22 iconst_1 23 merge
SWISSQM: Befehlssatz • Befehlssatz ermöglicht: Manipulation, Logik, Arithmetik, Jumps und Kontrolle • pro Befehl 1 byte -> 256 Befehle möglich • Befehlssatz sind modular und dadurch leicht erweiterbar • 7 verschiedene Sensorbefehle
SWISSQM: Merge-Befehl • ermöglicht komplexe Berechnung • trotz einfacher Bytecodebefehle • merge-Syntax: • merge(n,m,aggop1,aggop2,…,aggopm) • n = Anzahl der Gruppen • m = Anzahl der Aggregationen • aggop = Aggregation
Beispiel SWISSQM: Beispielrechnung für 2. Knoten GATEWAY merge
SWISSQM Abschalten GATEWAY Evakuieren