Building a Distributed System with Embedded Devices and Sensors René Müller [email protected] Prof. Gustavo Alonso [email protected] Institut für Pervasive Computing 8.12.2007 © ETH Zürich | Information and Communication Systems Research Group Drahtlose Sensornetze Ad-hoc Netzwerk aus Sensorknoten Def: Sensor-Knoten = ein Prozessor + eine Funkeinheit + einige Sensoren + eine Batterie Sensorknoten sind 8.12.2007 Sensorknoten 10/100/1‘000/10‘000 ??? Funkeinheit Sensoren Prozessor Klein (wenige cm3) Billig (CHF 150 – … ) ??? René Müller/[email protected] Batterie 2 1 Sensorknoten BTnode (ETH Zürich) tmote sky (Moteiv) CPU: ATmega, 8MHz Flash-Speicher: 128kB RAM: 4kB (intern) + 256kB (extern) Funk: CC1000 (76kbps) + CPU: MSP430, 1MHz Flash-Speicher: 48kB RAM: 10kB (intern) Funk: CC2420 (250 kbps, IEEE 802.15.4) Bluetooth 8.12.2007 3 René Müller/[email protected] Anwendungen Überwachen/Messen/Kontrollieren Landwirtschaft der Umgebung Zivil/Militär Naturwissenschaften (Biologie, Geologie, …) Bau und Architektur (Intelligente Häuser, Brücken, etc.) Baustatik 8.12.2007 Schweinemast René Müller/[email protected] Seismik 4 2 Häufiger Anwendungsfall Sensorkonten, die phys. Grösse X messen, werden verteilt Gemessene Daten werden auf PC/PDA aufgezeichnet od. weiter verschickt. PC/PDA/… via Sensor mit Sensornetz verbinden Knoten bauen Ad-hoc Netzwerk auf (z.B., Baum) Knoten senden periodisch Messungen an PC/PDA. René Müller/[email protected] 8.12.2007 5 Inhalt Sensornetze Herausforderungen Aspekte aus “Verteilte Systeme” Routing-Bäume Aggregation von Messwerten im Netzwerk SwissQM Demo 8.12.2007 Virtuelle Maschine für Sensornetze Verarbeitung von kontinuierlichen Queries René Müller/[email protected] 6 3 Herausforderungen Ressourcen-Knappheit Energie/Batterie (J) Speicher (kB) / Rechenleistung (MIPS) Kommunikations-Bandbreite (bit/s) Fehlertoleranz und Robustheit Ausfall einzelner Knoten Skalierbarkeit Netzwerkgrössen: 10, 100, 1‘000, … 8.12.2007 7 René Müller/[email protected] Problem #1: Energie Sensorknoten sind Vergleich Energieinhalt eines Hamburgers batteriebetrieben Austausch der Batterien ist meist nicht praktikabel. © McDonands Energie für Sensorknoten: aus 2x AA Alkali-Batterien E ≈ 17 kJ (= 4 kcal) [Duracell PLUS, 250 mA Entladestrom bis 0.9 V Klemmspannung] 8.12.2007 E ≈ 3556 kJ (= 850 kcal) [Quelle: BigMac, McDonalds] René Müller/[email protected] 8 4 ...zzz… Energie Management Verbraucher (Bsp. tmote sky): Prozessor (≈0.8-3 mA) Sensoren (≈1 mA) Funkeinheit (Senden oder Empfänger an ≈ 20mA) ...zzz… Energiesparen: zur Zeit nicht benötigte Verbraucher ausschalten An/Aus-Phasen der Empfänger Tastgrad (duty cycle) = Dauer “An”-Phase / Gesamtdauer 100% immer “An“ Grösster Verbraucher ist Funkempfänger! Å optimieren müssen synchronisiert sein Logische Zeit (Lamport) alleine reicht hier nicht! Synchronisation der Uhren nicht der Zeitstempel von Nachrichten René Müller/[email protected] 8.12.2007 9 Synchronisation der Knoten A B Auch An/Aus-Phasen innerhalb des Netzwerk-Stacks muss koordiniert sein. Senden Applikation sendet t A periodisch Messungen Routing Layer sendet Routing Tabelle an t B …zzz… Nachbarn (periodisch oder auf Anfrage) Sende-Phase und Empfangs MAC Layer: Collision Phase von Sender und Avoidance, Random BackEmpfänger müssen überlappen. off, etc. Wann beginnt/endet eine Wann die Funkeinheit Phase? Koordination? ein/ausschalten? Wer darf das? Æ Cross-Layer Optimierungen Empfangen Verarbeiten 8.12.2007 René Müller/[email protected] 10 5 Uhren-Synchronisation “Beacon” Knoten Beacon Ich hatte 11:32:32. Ich hatte 11:32:34. Ich hatte 11:32:30. Periodisches Beacon ohne Zeitangabe dient zur Synchronisation. Nach Empfang des Beacons sendet jeder seine lokale Zeit. Knoten passen Schedule an, d.h. wann Nachbar “wach” ist eine Meldung empfangen kann. 8.12.2007 Paarweise Sychronisation ta1 A ta2 m1 t m2 t tb1 tb2 A sendet Nachricht m1= (ta1) mit Zeitstempel ta1. B empfägt m1 zu Zeit tb1. B sendet m2=(ta1,tb1,tb2). A empfängt m2 zu ta2. A berechnet relativen Drift Δ und mittlere Laufzeit d (tb − ta1 ) − (ta2 − tb2 ) , d = (tb1 − ta1 ) + (ta2 − tb2 ) Δ= 1 B 2 2 11 René Müller/[email protected] Uhren-Synchronisation (Forts.) Hierarchisch GPS Beim nächsten Ton ist es 11:32:12. … piep! Kindknoten synchronisieren mit Elternknoten (paarweise). O(n) Meldungen für Sensorknoten haben GPS Empfänger. Synchronisation Zeitinformation aus GPS Signal O(n2) wenn paarweise jeder GPS Empfänger immer noch mit jedem gross und teuer Hierarchie Konzept ähnlich zu Mischformen GPS + Strata (NTP Protokoll aus dem hierarchische Synchronisation Internet) (wie NTP) 8.12.2007 René Müller/[email protected] 12 6 Problem #2: Speicher Speicher für Programm Nicht alles aus dem und Daten ist stark begrenzt. Beispiel Tmote Sky Node Desktop/Serverbereich ist auf Sensornetze übertragbar Beispiel 10 kB RAM für Programdaten (Stack, Heap) 48 kB Flash-Speicher für Programmcode 1 MBit serieller FlashSpeicher (z.B. für Messungen, nicht als Programmspeicher verwendbar) TCP/IP Æ nanoIP/nanoTCP (nanoIP+nanoTCP: 300B RAM, 1kB Flash) Multithreading nur eingeschränkt möglich (Speicher für ThreadContext) René Müller/[email protected] 8.12.2007 13 Problem #3: Drahtlose Übertragung Kommunikation Drahtlos Interferenz unter den Knoten Störemissionen von aussen Gleiches 2.4-GHz-Band für WLAN, Bluetooth, ZigBee, Technologien Garagentoröffner und WLAN (802.11): meist zu Mikrowellengeräte(!) teuer (Kosten/Energie) Fehlerrate bei Funkübertragung Bluetooth (802.15.1): ist um ein Vielfaches grösser möglich, Protokoll komplex als z.B. bei Ethernet. „ZigBee“ (802.15.4): Carrier Sense (CA): möglich einfaches Protokoll, geringe und sinnvoll Datenraten (theoretisch bis Collision Detection (CD): 250 kbps) gleichzeitiges Senden und Proprietäre Lösungen Empfangen schwierig Drahtlos (Enerie-)sparsam Billige Komponenten 8.12.2007 René Müller/[email protected] 14 7 Übertragungs-Charakteristik (Experiment) Beacon-Knoten: Zu Beginn jeder Runde, Broadcast des Beacons mit max. Leistung an alle. Nach Empfang des Beacons: 1. Stellen Runden-Uhr 2. Erzeugen Zufallspermutation der Liste aller (32-1) Knoten. 3. Senden „Ping“-Nachricht Setup sequentiell an alle Knoten in 33 Knoten Testbed in CAB F31 der Liste. 1 Beacon-Knoten Knoten j empfängt Ping von i Gegenseitiges Senden von Notieren sich Sender i in „Ping“ Nachrichten Sender-Vektor sj (sij = 1) Pro Runde werden 32x31 = Nach Ablauf der Runden-Uhr 992 Nachrichten versendet Loggen Sender-Vektor 8.12.2007 15 René Müller/[email protected] Adjazenz-Matrix Sender-Vektoren sj bilden Graphische Darstellung von M(r) Empfänger j Adjazenz-Matrix M = (s1,…,s32) Mij = sij Darstellung des Verbindungsgraphen: Kante von iÆj wenn Mij =1. Sender i ⎧1 erfolgreiche Nachricht i → j in Runde r M(r) ij = ⎨ sonst ⎩0 Diagonale jeweils 0 Æ Knoten senden keine Nachricht an sich selbst. 8.12.2007 René Müller/[email protected] 0:schwarz, 1:weiss 16 8 Adjazenz-Matrix (Forts.) Empfänger j Sender i Arithmetisches Mittel Aus 170 Runden Empfangene Nachrichten (Mittel): 197.6/Runde Versendet: 32x31= 992/Runde Mittlere Übertragungs-Wsk: ≈0.2 Matrix ist nicht symmetrisch! || M ||2 ≈ 6, || M – M T ||2 ≈ 2 i→j ⇒ j→i Beachte Unrealistisches KommunikationsSzenario: O(n2) Nachrichten Kein Scheduling der Nachrichten, nur Zufallspermutation Soll Problematik illustrieren 0:schwarz, 1:weiss 17 René Müller/[email protected] 8.12.2007 #4 Robustheit Senke (Basisstation) Sensor-Knoten sind unzuverlässig Restkapazität der Batterien zu gering Æ Fail-Stop Nachricht „verloren“ Æ Omission Hardwaredefekt (Wassereinschluss, Feuchtigkeit, Vögel) Æ Fail-Stop/Crash/ byzantinische Fehler Beispiel Statischer (fest-codierter) Baum. 3 Quellen-Knoten erzeugen Datenstrom Knoten nahe der Senke stärker belastet als Knoten nahe einer Quelle Æ Brauchen grössere Batterie oder fallen schneller aus Statisch Æ kein Recovery Æ Fail-Stop Besser keine stat. Strukturen (ad-hoc) 8.12.2007 René Müller/[email protected] stärker belastet Quelle Quelle Quelle 18 9 Routing-Topologien in Sensornetzen Art der Kommunikation Netzwerk-Struktur Basisstation Æ Knoten Flach Knoten Æ Basisstation Knoten Æ Knoten Ziel i.d.R. nicht direkt erreichbar Zu weit entfernt/Sende Hierarchisch leistung zu gering Direkter Link Æ zu grosse Interferenz Cluster Head Cluster Cluster Geo-Routing x/y Jeder Knoten kennt seine x/y Position. Nachricht an bestimmte Position leiten. Weiterleiten von Meldungen (Multihop Routing) René Müller/[email protected] 8.12.2007 19 Collection Tree Routing „Einsammeln“ von Daten an einer bestimmten Stelle. Sensor-Daten werden entlang eines Spannbaums zur Basisstation geschickt. Spannbaum: Wurzel: Basisstation Blätter: Datenquellen Innere Knoten: Datenquellen und leiten Nachrichten weiter „Abfangen“ von Nachrichten auf dem Pfad zur Wurzel Æ Bündlung von Datenwerten, Aggregation (data fusion) 8.12.2007 Woher kommen die Pfeile? Keine eigentlichen Kanten Kantenreduzierter Verbindungsgraph? Realität? Dezentraler Algorithmus Was sind die Inputs? Stabiler Baum trotz Funk Dynamisch (ad-hoc), Baum muss Störungen (Knoten, Interferenz) angepasst werden. René Müller/[email protected] 20 10 Verteilter Algorithmus für Spannbaum Kurzfassung Komponenten Messung Links-Qualität Messung der Link-Qualität zu Bidirektionale ETX-Werte ETX ∼ #erwartete / #empfangene „Nachbarknoten“ Austausch und Management der Nachbar-Tabelle Weiterleiten von Nachrichten Routing-Metrik (Gradient) Entfernung zum Wurzelknoten (Anzahl Hops) Oder: Erwartete #Übertragungen (ETX) bis zur Wurzel Berücksichtigt Retransmissions infolge schlechter Links Nachrichten Nachbar-Tabelle (NachbarID, Nachbars ETX zur Wurzel) Periodischer Austausch der Tabelle Bei Empfang lokale Einträge entsprechend anpassen Æ Ziel: min ETX Weiterleiten von Nachrichten Senden an Nachbarn mit kleinstem ETX zur Wurzel 21 René Müller/[email protected] 8.12.2007 Daten-Aggregation Was ist die mittlere Temperatur im Sensornetz? Aggregation in Basisstation Aggregation im Netzwerk Mittelwert berechnet Mittelwert in Basisaus 231/5 = 46.2 station berechnet Total # 5 Nachrichten Total # 8 Nachrichten <231,5> 48 48 46 <46,1> 45 8.12.2007 <94,2> 44 48 48 46 45 <45,1> René Müller/[email protected] <137,3> 44 <44,1> 22 11 Aggregations-Bäume Kettengraph Binärer Graph Sterngraph # Nachr. ohne Aggregation # Nachr. mit Aggregation In-Netzwerk Aggregation und Topologie haben Einfluss auf Nachrichtenkomplexität. n n n n-1 n-1 n-1 O(n log n) O(n) O(n2) n ( ) n + 1 log2 (n + 1) − 2n n-1 (n − 1) ≤ ≤ 2 n-1 n-1 = René Müller/[email protected] 8.12.2007 = n-1 kein Unterschied Knoten Kanten ·n/2 mehr Nachrichten! O(n) 23 In-Netzwerk Aggregation Aggregation von räumlich ver- Minimum (MIN) Maximum (MAX) Summe (SUM) Mittelwert (AVG) Varianz (VARIANCE) Anzahl (COUNT) Median Histogramm konst. Grösse teilten, gleichzeitigen Messungen Æ räumliche Aggregation (data fusion) Mögliche räuml. Aggregate In-Netzwerk Aggregation: Æ Idealerweise nur eine Nachricht/Kante 8.12.2007 Aggregationszustand (AZ) Beinhaltet „Zusammenfassung“ der Werte für das Aggregat. Bsp: <Summe, Anzahl> für AVG Knoten senden Aggregationszustand in Richtung Wurzel Vollständiger AZ: in Wurzel Partieller AZ: Unterhalb Wurzel Klassifikation Exemplarische Werte (MAX, MIN) Algebraisch (SUM, AVG, VARIANCE) Holistisch: Grösse ∼ # Werte (Median, Histogram) René Müller/[email protected] 24 12 [Madden et al., OSDI’02] Tiny Aggregation (TAG) Distributive Aggregate f(<z>) f(<z1>∪<z2>)=g(f(<z1>), f(<z2>)) Bsp: MIN, SUM, AVG Implementation in Sensornetz Jeder Knoten i Liest Sensor Æ xi Berechnet zughörigen part. f(<z>) aus 3 Funktionen: Aggregationszustand Initialisierer i: <x> = i(x) <zi> = i(xi) Merger m: <z> = m(<x>, <y>) Empfängt <zj>,…<zk> von Evaluator e: z = e(<z>) seinen direkten Kinder j,…,k Berechnet Bsp AVG <z> = m(<zi>, m(<zj>, …,<zk>))) Zustand: <Summe, Anzahl> Sendet <z> an Elternknoten i : x a < x,1 > Basisstation m : < s1, c1 >, < s2 , c 2 > a < s1 + s 2 , c 1 + c 2 > Empfängt vollständigen Zustand <z> e : < s, c > a s c Wertet Aggregat aus: e(<z>) 8.12.2007 René Müller/[email protected] 25 SwissQM – Demo 8.12.2007 René Müller/[email protected] 26 13 Architektur SwissQM Query 2 Gateway Query 3 Gateway System QM Prog 1 Stream Verarbeitung Query Verarbeitung Query 1 QM Prog 2 Virtual Machine führt Bytecode-Programme aus Sensor Netzwerk René Müller/[email protected] 8.12.2007 27 In-Netzwerk Aggregation mit SwissQM Datenstrom aus Programm laden aggregierten Messungen init Code muss periodisch ausgeführt werden Æ Timer delivery QM Programme bestehen Timer aus 3 Code Abschnitten Nachricht von bereit Kind stoppen reception 8.12.2007 gestoppt Programm wird geladen (init) Ein neues Tuple soll versendet werden (delivery) Eine Nachricht wird von einem Kind empfangen/abgefangen (reception) René Müller/[email protected] 28 14 Vertiefende Vorlesungen und weitere Informationen 251-0380-00: Drahtlose Sensornetze, Kay Römer (FS08) 227-0557-00: Ad-hoc and Sensor Networks, Roger Wattenhofer (HS07) SwissQM Projekt http://swissqm.inf.ethz.ch René Müller/[email protected] 8.12.2007 29 Werbung in eigener Sache… Wir suchen immer motivierte Studenten für Projekte rund um SwissQM: Bachelor-Arbeiten Semesterarbeiten Labor “Verteilte Systeme” Master-Arbeiten Hilfsassistenten Kontakt René Müller, [email protected] 8.12.2007 Projekt-Ideen Multi-Tier Datenverarbeitung im heterogenes Netzwerk tmote sky + Linux Knoten Power Management Issues im Linux Kernel Duty Cycling und Arbitrierung der Hardware Komponenten (Design) Diskrete Eventverbeitung Programmieren von virtuellen Maschinen Verteilte endl. Automaten Events innerhalb und zwischen den Knoten Actions/Event-Bedingungen in Bytecode René Müller/[email protected] 30 15