Institut für Informatik Universität Augsburg Diplomarbeit im Studiengang Angewandte Informatik“ ” Entwicklung und Implementierung eines energieeffizienten Kommunikationsprotokolls für Sensornetze Robert Hofer Gutachter: Zweitgutachter: Betreuer: Datum: Prof. Dr. Theo Ungerer Prof. Dr. Bernhard Bauer Dr. Faruk Bagci 02.08.2007 c Copyright 2 Lehrstuhl für Systemnahe Informatik und Kommunikationssysteme Prof. Dr. Theo Ungerer Institut für Informatik Universität Augsburg D-86135 Augsburg, Germany http://www.Informatik.Uni-Augsburg.DE – all rights reserved – Zusammenfassung: Die Anzahl der Anwendungen und die Forschung im Bereich Sensornetze haben sich in den letzten Jahren immer mehr verstärkt. Die Sensorknoten müssen oft lange mit ihren Batteriereserven arbeiten, da kein Anschluss an ein Stromnetz möglich ist. Deshalb ist es für Sensornetze wichtig, ihre Energie optimal einzusetzen. Einerseits will man nicht zu schnell die Batterie austauschen, andererseits ist dies bei manchen Netzen auch nicht möglich, falls der genaue Ort eines Sensorboards nicht bekannt ist. Die Arbeit behandelt die Entwicklung und Implementierung eines energieeffizienten Kommunikationsprotokolls, dem Energy Saving Token Ring Protocol (ESTR). Es ist eine Modifikation vom Wireless Token Ring Protocol (WTRP). Das Hauptaugenmerk liegt dabei auf statische Sensornetze. ESTR wird im Netzwerksimulator NS2 mit anderen Protokollen getestet. Anschließend werden die Ergebnisse eines Real-Life-Tests gezeigt. ESTR kann flexibel über die maximal erlaubte Ringgröße dem erwarteten Durchsatz und Energieverbrauch angepasst werden und durch die Nutzung von Schlafphasen Energie sparen. Außerdem findet innerhalb eines Ringes ein interner Energieausgleich statt. 4 Danksagung Hiermit möchte ich Herrn Prof. Dr. Theo Ungerer für die Ermöglichung dieser Diplomarbeit danken. Herrn Prof. Dr. Bernhard Bauer danke ich für die Zweitkorrektur dieser Arbeit. Mein besonderer Dank gilt meinem Betreuer, Herrn Dr. Faruk Bagci. Die Gespräche mit ihm, seine Kritik und Anregungen zu dem Thema stellten eine große Hilfe dar. Auch für Fragen zum organisatorischen Vorgang hatte er immer Zeit. Auch danke ich meinen Freunden und unter diesen ganz besonders Melanie Jahny und Stefan Martin, auf deren Unterstützung ich immer zählen kann. 5 6 Inhaltsverzeichnis 1 Einleitung 9 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Einsatzgebiete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 Kommunikationsanforderungen an Sensornetze . . . . . . . . . . . . . . . 10 2 Verwandte Arbeiten 2.1 802.11 Standard . . . . . . . . 2.2 S-MAC-Protokoll . . . . . . . . 2.3 T-MAC-Protokoll . . . . . . . . 2.4 Etiquette-Protokoll . . . . . . . 2.5 Wireless Token Ring Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Das ESTR-Protokoll 3.1 Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Probleme und Lösungen . . . . . . . . . . . . . . . . . . 3.2.1 Tokenweitergabe . . . . . . . . . . . . . . . . . . 3.2.2 Verlust des Token . . . . . . . . . . . . . . . . . 3.2.3 Existenz mehrerer Token innerhalb eines Ringes 3.2.4 Ausfall eines Knotens . . . . . . . . . . . . . . . 3.2.5 Nachrichtentransport zu anderen Ringen . . . . . 3.3 Netzwerkstruktur und -aufbau . . . . . . . . . . . . . . 3.3.1 Ein großer Ring . . . . . . . . . . . . . . . . . . . 3.3.2 Verknüpfung mehrerer Ringe . . . . . . . . . . . 3.3.3 Vergleich zwischen beiden Lösungen . . . . . . . 3.4 Nachrichtenaustausch . . . . . . . . . . . . . . . . . . . 3.5 Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Länge der Schlafpause . . . . . . . . . . . . . . . . . . . 3.7 Zu erwartende Vorteile und Nachteile des ESTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 16 16 18 20 23 . . . . . . . . . . . . . . . 27 27 27 28 28 28 29 30 30 30 32 33 34 36 36 37 4 Testreihen im Simulator NS2 4.1 Durchschnittlicher Energieverbrauch . . . . . . . . . . . . . . . . . . . . . 4.1.1 Durchschnittliche Energieeffizienz bei Einsatz von 20 Sensorknoten 4.1.2 Durchschnittliche Energieeffizienz bei Einsatz von 100 Sensorknoten 4.1.3 Durchschnittliche Energieeffizienz bei Einsatz von 500 Sensorknoten 4.2 Unterschiede im Energieverbrauch innerhalb eines Rings . . . . . . . . . . 39 40 40 41 42 43 7 Inhaltsverzeichnis 4.3 Pingpong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5 Implementierung des ESTR für die Berliner Motte 5.1 ESB 430 . . . . . . . . . . . . . . . . . . . . . . 5.2 Ein-Ring-Szenario . . . . . . . . . . . . . . . . 5.2.1 Szenario . . . . . . . . . . . . . . . . . . 5.2.2 Messung . . . . . . . . . . . . . . . . . . 5.2.3 Probleme . . . . . . . . . . . . . . . . . 5.3 Zwei Ringe Szenario . . . . . . . . . . . . . . . 5.3.1 Szenario . . . . . . . . . . . . . . . . . . 5.3.2 Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 52 53 56 56 56 57 6 Zusammenfassung und Ausblick 59 6.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 8 1 Einleitung 1.1 Motivation Ein Sensornetz besteht aus mehreren Sensorknoten, die (meist über Funk) miteinander Daten austauschen. Die einzelnen Sensorknoten sind in der Lage, Informationen über ihre Umwelt aufzunehmen, zu verarbeiten und auszutauschen. Viele Sensornetze sind dabei auf die Energie von Batterien angewiesen, die möglichst lange halten sollen. Mittlerweile gibt es zwar die Möglichkeit für einen batterielosen Einsatz von Sensorknoten, wie z.B. Sensoren von EnOcean [17]. Dort werden aber so genannte Meshnet bridge Nodes“ verwendet, die ihrerseits auf eine Energiequelle wie Batterien ” bzw. ein Stromnetz angewiesen sind. Außerdem werden hierbei die Kommunikationskosten niedrig gehalten, um mit der selbst hergestellten Energie zurecht zu kommen. Da der Einsatz der Sensorknoten unter vielen Umweltumgebungen stattfindet, ist diese Lösung nicht für alle Projekte praktikabel, muss aber als Möglichkeit in Betracht gezogen werden. Der Grund, warum die Lebenszeit einer Batterie eines Sensorknotens möglichst lange sein soll, liegt zum einen darin, dass dann nicht so oft ein Batterieaustausch stattfinden muss. Außerdem ist ein Batterieaustausch bei manchen Projekten nicht machbar. Letzteres ist z.B. der Fall, wenn Sensorknoten von einem Flugzeug über einem Gebiet abgeworfen werden und daher schwer auffindbar sind. Ein Großteil der Energie eines Sensorknotens wird dabei im Wachzustand verbraucht. Der Stromverbrauch der CPU ist z.B. bei dem von vielen Sensorboards benutzten Texas Instruments MSP430F149 Prozessor nach [14] im Schlafzustand 1,6 µA und im aktiven Betrieb 280 µA mit 1 MHz. In [18] wird gezeigt, dass der Energieverbrauch von PDAs beim Empfangen von Nachrichten nur wenig größer ist als der Grundverbrauch im Wachen, während der Verbrauch beim Senden viel größer ist. In [1] werden die Verhältnisse im Energieverbrauch zwischen Wachen:Empfangen:Senden mit 1:1.05:1.4 angegeben. Ähnlich sehen die Werte generell bei Sensorknoten aus. Daraus wird deutlich, dass durch die Einführung von Schlafpausen und dem Vermeiden von unnötigem Senden von Paketen der Energieverbrauch stark reduziert werden kann. Bei Einführung von Schlafphasen muss berücksichtigt werden, dass der Datenaustausch auf eine kürzere Zeit beschränkt wird, was z.B. zu vermehrten Kollisionen und damit zu erhöhtem Energieverbrauch führen kann. Deswegen ist die Auswahl eines geeigneten MAC-Protokolls für ein energieeffizientes Sensornetz sehr wichtig. 9 1 Einleitung 1.2 Einsatzgebiete Sensorknoten und auch Sensornetze haben ein breites Spektrum an Einsatzgebieten. Allerdings befindet sich vieles noch im Forschungszustand. Zum einen ist als klassisches Einsatzgebiet das Militär zu nennen. Von Flugzeugen über einem Gebiet abgeworfene Sensorknoten bauen untereinander ein Sensornetz auf und scannen über Infrarot-/ oder Erschütterungssensoren die Gegend ab. Durch das Zusammentragen ihrer Daten kann man Truppenbewegungen erkennen. Da ein Panzer oder ein Fußsoldat stark unterschiedliche Erschütterungen bewirken, lässt sich auch die Truppenart einschätzen. Grundsätzlich sind Sensoren für Beobachtung oder Überwachungsaufgaben gut geeignet, weswegen sie für Geographen nicht uninteressant sind. Über einem Gebiet verteilte Sensorknoten können über einen längeren Zeitraum Daten sammeln, welche man für die Forschung benutzt werden können. Auch bei Tierbeobachtungen oder Katastrophenschutz kann man Sensornetze einsetzen. 1.3 Kommunikationsanforderungen an Sensornetze Da Sensornetzwerke weit verbreitet sind, ihre Einsatzweise aber stark unterschiedlich ist, sind die Anforderungen an Sensornetze und damit an die Art ihrer Kommunikation sehr unterschiedlich: • Energieversorgung: Ist der Sensorknoten an ein festes Stromnetz angeschlossen, hat er in der Regel keine Energieprobleme. Aus Sicherheitsgründen kann er jedoch zusätzlich eine Notversorgung erhalten. Viele Sensorknoten aber sind auf die Energie angewiesen, die sie durch ihre Batterie bekommen. Für diese stellt deren Energieverbrauch während ihrer Lebenszeit einen wichtigen Faktor dar. Denn er bestimmt, wie schnell die Batterie ausgetauscht werden muss oder wie lange die Lebenszeit des Netzwerkes ist, falls ein Batterieaustausch ausgeschlossen ist. Um den Verbrauch von Energie zu reduzieren, kann ein Protokoll Schlafund Wachphasen1 verwenden. • Da ein wichtiges Kommunikationsmedium der Funk ist, besteht die Gefahr von Kollisionen zwischen einzelnen Nachrichten. Dies kann unter anderem daran liegen, dass zwei Sensorknoten A und B, die sich jeweils außerhalb der Funkreichweite des anderen befinden, einem dritten Sensorknoten C, der sich innerhalb der Funkreichweite der beiden Sensorknoten A und B befindet, gleichzeitig eine Nachricht schicken. Diese Situation ist auch unter dem Begriff hidden stations“ bekannt. ” 1 sleep and duty cycles 10 1.3 Kommunikationsanforderungen an Sensornetze • Auf der anderen Seite kann ein Sensorknoten Nachrichten empfangen, die nicht für ihn bestimmt sind. Da das Empfangen mehr Energie verbraucht als der Wachzustand alleine, ist dies nicht erwünscht. Diesen Vorgang nennt man overhearing“. ” • Der Durchsatz ist die Anzahl an Byte pro Sekunde, die von Sender zu Empfänger übertragen werden können. In mehreren Arbeiten, in denen Simulationen verschiedener Protokolle durchgeführt wurden, führte ein zu großer Datenstrom im Netz zur Überlastung und zu vermehrter Ineffizienz bzgl. Durchsatz. • Da Sensornetze teilweise im Gelände verteilt werden, spielt die Anpassungsfähigkeit auch eine große Rolle. Darunter ist z.B. zu verstehen, wie sich die einzelnen Sensorknoten zu einem Sensornetz organisieren, obwohl ihre genaue Lage vorher nicht bekannt ist. Außerdem fällt unter Anpassungsfähigkeit, dass die Sensorknoten z.B. ihre Schlafpausen der Netzlast anpassen. • Die Latenz ist die Zeit zwischen dem Senden einer Nachricht vom Sender und dem Empfangen einer Nachricht vom gewünschten Empfänger. Sie kann in Sensornetzen zu Gunsten der Energieeffizienz erhöht werden. Zum Beispiel kann die Schlafphase verlängert werden und Pakete müssen an jedem Punkt ihrer Verbindung durchschnittlich gesehen eine längere Zeit warten. Viele Protokolle nehmen Einbußen bei einem oder mehreren der obigen Punkte hin, damit sie bei einem für sie wichtigen Punkt eine Verbesserung erzielen. Ein Beispiel ist die Erhöhung der Zeit einer Schlafphase, die den Energieverbrauch unter geringer Kommunikationsbelastung senkt, aber dafür die Latenz und den maximalen Durchsatz im Netz erniedrigt. 11 1 Einleitung 12 2 Verwandte Arbeiten Die MAC (Media Access Control) Schicht ist eine Unterschicht der Data Link Layer (Sicherungsschicht) innerhalb des ISO/OSI Modells, wie in Bild 2.1 zu sehen. Abbildung 2.1: ISO/OSI-Modell Über der MAC Schicht liegt eine weitere Unterschicht der Sicherungsschicht, die LLC (Logical Link Control) Schicht. Die MAC Schicht sorgt dafür, dass der Zugriff auf das Medium geregelt abläuft. In ihren Aufgabenbereich fällt unter anderem die Untersuchung, ob gerade ein anderer Teilnehmer das Medium besetzt. Auch das Regeln von Schlafphasen kann dazu gehören, ebenso wie die Ermöglichung eines gesicherten Nachrichtenaustausches, indem bei dem Empfänger eine Zeit für das Senden der eigenen Nachricht reserviert wird. MAC-Protokolle lassen sich in zwei Gruppen einteilen: Bei TDMA (Time Division Multiple Access)-basierten MAC-Protokollen hat jeder beteiligte Sensorknoten einen Zeitslot innerhalb eines Zeitfensters (frame), in dem er je nach Protokoll alleine Senden oder Empfangen darf. Der Nachrichtenaustausch geschieht also auf Grund von Zeitplänen (engl.: schedules), die sich periodisch wiederholen. Dabei können die Slots zusammen das gesamte Zeitintervall abdecken. Dadurch, dass jeder Sensor seinen eigenen Zeitslot hat, werden Kollisionen vermieden und die Dauer von Wachphasen reduziert. Auch wird zur Ablaufregelung kein größerer Protokoll-Overhead benötigt. Andererseits müssen sich die Knoten zur Anpassung ihrer 13 2 Verwandte Arbeiten Zeitslots zu echten Kommunikationsclustern wie bei LEACH [7] zusammenschließen, was zu weiteren Problemen führt. Ein Cluster ist ein fester Zusammenschluss von mehreren Knoten, die oft miteinander synchronisiert arbeiten. Zu den Problemen zählt, dass die Skalierbarkeit eines Clusters nicht gut ist, da bei Hinzunahme von weiteren Knoten die Zeitslots angepasst werden müssen. Auch ergibt sich für Knoten, die in zwei Clustern liegen oder die einen Verbindungsknoten zwischen zwei Clustern darstellen das Problem, dass sie ihre Zeitslots an beide Cluster anpassen müssen. Gerade diese wichtigen Knoten haben dann einen höheren Energieverbrauch und es ist zu vermuten, dass ihre Batteriereserven schneller aufgebraucht sind. Auch die Kommunikation zwischen zwei Clustern stellt je nach Protokoll keine leichte Aufgabe dar. Ein Token Ring Netzwerk funktioniert ähnlich den TDMA-basierten Protokollen. In einem Ring darf zu einem Zeitpunkt nur ein Teilnehmer senden. Aber das Senderecht ist nicht abhängig von Zeitslots, sondern davon, wer das Token besitzt. Contention-basierte Protokolle regeln das Handeln von Sensorknoten, die gleichzeitig auf ein Übertragungsmedium zugreifen dürfen, so dass Kollisionen vermieden werden und Übertragungen möglichst fehlerfrei ablaufen können. Davon gibt es eine Unterart, nämlich slotbasierte MAC-Protokolle. Bei diesen ist die Datenaustauschzeit auf bestimmte Zeiten beschränkt (z.B. auf den Anfang eines Zeitfensters), so dass die restliche Zeit zum Schlafen benutzt werden kann. Diese Zeitslots können für alle beteiligten Sensorknoten gleichlang andauern, wie beim einfachen SMAC, oder auch unterschiedlich lange wie bei T-MAC. Contention-basierte Protokolle benutzen oft RTS/CTS-Pakete, um nur einem Teilnehmer innerhalb der Sendereichweite gleichzeitig den Zugriff auf das Übertragungsmedium zu erlauben. RTS bedeutet dabei request to send“ und CTS confirm to send“. ” ” In Bild 2.2 sieht man, wie Teilnehmer A Teilnehmer B ein RTS-Paket schickt, um die Erlaubnis für das Senden von Datenpaketen zu erhalten. Dabei sind C und B in Funkreichweite von A, aber Teilnehmer D nicht. C hört die RTS-Nachricht von A mit und weiß, dass das Medium im Moment durch A benutzt wird, verzichtet also selbst auf das Schicken von Nachrichten, damit keine Kollisionen entstehen. Da D außerhalb der Reichweite von A ist und deswegen das RTS-Paket von A nicht empfängt, kann also C seinerseits senden (hidden station problem), da er nicht davon ausgeht, dass das Übertragungsmedium besetzt ist. C empfängt das RTS-Paket von A, schickt seinerseits ein CTS-Paket für A los, welches von D empfangen werden kann. Nun weiß D, dass er nicht senden darf, da sonst der Datenaustausch zwischen A und B gestört wird. Zwischen dem Senden des RTS-Paketes von A und dem Senden des CTS-Paketes von B kann D sich entscheiden, selbst Nachrichten zu verschicken. Dadurch kann es zu Kollisionen kommen, doch ist insgesamt gesehen das Kollisionsrisiko durch diesen Ablauf stark reduziert. Nachdem A die CTS-Nachricht von B empfangen hat, kann es Datenpakete an B schicken, die nach vollständigem Empfang mit einer ACK1 -Nachricht von B an A quittiert werden. 1 acknowledgment 14 Abbildung 2.2: Austausch von RTS- und CTS-Paketen Protokoll Art Cluster 802.11 Contention based nein WTRP Token based ja ESTR Token based ja Etiquette TDMA nein S-MAC Contention based ja T-MAC Contention based ja Tabelle 2.1: Betrachtete Protokolle Der Unterschied zwischen TDMA- und Contention-basierten Protokollen ist also, dass bei Contention-basierten Protokollen alle Knoten gleichzeitig um den Zugriff auf das Medium wettstreiten und sich das Protokoll verstärkt um Kollisionen kümmern muss. Bei TDMA-basierten Protokollen sind die Zugriffe zeitlich eingeteilt und das Kollisionsrisiko reduziert, da sich die Übertragungen über das Fenster verteilen. Nachteilig bei TDMA-basierten Protokollen ist, dass ein Broadcast nicht alle Knoten in der Nachbarschaft erreicht, da nicht alle Knoten gleichzeitig wach sind. Token-basierte Protokolle ähneln dabei den TDMA-basierten Protokollen, da auch hier immer nur ein Teilnehmer gleichzeitig senden oder empfangen darf. In den folgenden Unterkapiteln werden der 802.11-Standard, das Etiquette-Protokoll, das auf dem TDMA Verfahren beruht, der Token Ring, sowie die zwei bereits erwähnten und verbreiteten Vertreter der Contention-basierten MAC-Protokolle, S-MAC und TMAC, vorgestellt. Im nächsten Kapitel wird das Energy Saving Token Ring Protocol (ESTR) vorgestellt, eine eigene Modifikation des WTRP. In Tabelle 2.1 sind die Protokolle noch einmal aufgelistet. Bei der Auswahl der Protokolle wurde darauf geachtet, dass sie auf verschiedenen Verfahren basieren. Aber es wurde auch darauf Wert gelegt, dass sie sich selbstständig ohne einen Knoten im Netz organisieren können, der unendlich viel Energie hat, indem dieser z.B. am Stromnetz angeschlossen ist. 15 2 Verwandte Arbeiten 2.1 802.11 Standard Der IEEE 802.11 Standard behandelt hauptsächlich den Zugriff mehrerer Teilnehmer auf ein gemeinsames Medium und ist nicht speziell für Sensoren ausgelegt. Energiesparende Maßnahmen hierbei sind das Vermeiden von Kollisionen, auf Schlafphasen wird nicht näher eingegangen. Dafür bietet er eine gute Möglichkeit um energiesparende Protokolle, die speziell für Sensornetze entwickelt wurden, mit einem soliden, aber nicht in Hinblick auf das Einsparen von Energie in Sensornetzen entwickelten Protokoll zu vergleichen. Außerdem sind viele dieser Protokolle aus diesem Standard hervorgegangen, u.a. S-MAC und T-MAC. 802.11 benutzt für das Vermeiden von Kollisionen den CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance)-Mechanismus. Dabei wird das Medium abgehört und erst gesendet, falls es frei ist. Falls gerade ein Datenverkehr stattfindet, wird gewartet, bis dieser zu Ende ist. Danach und nach Verstreichen einer zusätzlichen Backoff-Zeit kann gesendet werden. Diese ist wichtig, falls ein anderer Teilnehmer auch darauf wartet, dass das Medium frei wird. Somit wird die Kollision zwischen den beiden Sendern vermieden. Um das Problem der Hidden Station zu vermeiden, gibt es zusätzlich die Möglichkeit des bereits erwähnten RTS/CTS-Verfahrens. 2.2 S-MAC-Protokoll Das Sensor-MAC (S-MAC) Protokoll wird in [1] vorgestellt. Dabei handelt es sich um ein slotbasiertes Protokoll, bei dem sich für die einzelnen Sensorknoten Wach- und Schlafphasen abwechseln, wobei alle Sensorknoten in einem Cluster sich gleichzeitig in einer Wachphase befinden. Damit und mit Kollisionsvermeidungstechniken soll der Energieverbrauch reduziert werden. Neben der Energieeffizienz als Primärziel muss dieses Protokoll auch eine gute Skalierbarkeit haben. Bei der Netzwerkinitialisierung muss sich jeder Knoten des Netzwerkes für einen Zeitplan entscheiden, nach dem er dann seine Schlaf- und Wachphasen einrichtet. Dafür horcht er eine vorher festgesetzte Zeit, ob er einen fremden Zeitplan empfängt. Ist dies nicht der Fall, wählt er eine Zeit t, zu der er schlafen geht, und sendet diese Zeit in einer SYNC-Nachricht an seine Umgebung. Einen solchen Knoten nennt man Synchronizer. Empfängt ein Knoten einen Zeitplan durch eine Nachricht M, bevor er selber einen wählt, so folgt er diesem. Diesen Knoten nennt man Follower. Gleichzeitig schickt er einen Broadcast mit diesem Zeitplan nach einer zufällig langen Zeit td los, damit andere Knoten auch von diesem Zeitplan erfahren. Die Wartezeit ist deswegen zufällig gewählt, damit die Nachricht nicht mit anderen Nachrichten kollidiert, die auch nach Empfang von M von anderen Knoten versendet werden. Nach Verschicken des Broadcast, also zur Zeit t − td , geht dieser follower auch schlafen. Empfängt ein Knoten einen Zeitplan, hat jedoch selber schon einen, wird er beiden folgen und den neu empfangenen Zeitplan wieder seiner Umgebung mitteilen. Diese Knoten 16 2.2 S-MAC-Protokoll sind damit in zwei Clustern und haben längere Wachphasen als die übrigen Knoten. Sie haben also im Durchschnitt einen höheren Energieverbrauch. Im Normalfall wird jeder Knoten versuchen, einem fremden Zeitplan zu folgen, so dass Knoten mit zwei Zeitplänen selten vorkommen. Am Anfang einer Wachphase werden SYNC-Nachrichten verschickt, die dazu dienen, die Zeitpläne der einzelnen Teilnehmer wieder zu synchronisieren. Diese Nachrichten sind kurz und enthalten nur die Adresse des Senders und die Zeit, zu der er wieder schlafen geht. Empfängt ein Knoten dabei eine SYNC-Nachricht, wird er selber keine verschicken. Während der Wachphase werden Daten unter Benutzung von RTS/CTS-Paketen versendet, damit die Kollisionsgefahr reduziert wird. Auf die Wachphase folgt die Schlafphase, mit der dann ein Zyklus endet. Bei dem Versenden von Paketen wird innerhalb der einzelnen Phase eine zufällig lange Zeit gewartet, bis die Pakete verschickt werden. So wird vermieden, dass am Anfang einer Phase alle Knoten gleichzeitig senden und das Kollisionsrisiko gesenkt. Durch das Versenden von SYNC-Nachrichten können neue Knoten in das Netzwerk aufgenommen werden, die beim Mithören einer SYNC-Nachricht den Zeitplan des Senders annehmen und Follower von dem Synchronizer dieses Zeitplanes werden. Ein Ablauf ist in Bild 2.3 zu sehen. Abbildung 2.3: Die einzelnen Phasen eines Knotens in S-MAC Damit der einzelne Knoten weiß, ob das Übertragungsmedium in seiner Umgebung gerade in Gebrauch ist, verwendet er eine Variable, die network allocation vector (NAV) genannt wird. In versendeten Paketen steht die Dauer der Übertragung. Empfängt ein Knoten eine Nachricht, die nicht für ihn bestimmt ist, so erhöht er den Wert in dieser Variable um 1 und setzt einen neuen Timer, der nach der Dauer der Übertragung ein Event auslöst. Wenn einer dieser Timer abläuft, erniedrigt der Knoten den NAV-Wert um 1. Will der Knoten senden und der NAV-Wert ist ungleich 0, so wird das Medium als besetzt eingestuft. Dieses Verfahren wird virtual carrier sense genannt. Daneben gibt es auch physical carrier sense , das dadurch entsteht, dass gerade eine Übertragung in Reichweite stattfindet und der Knoten dadurch überprüfen kann, ob das Medium besetzt ist. Ein weiteres Feature von S-MAC ist die Fragmentierung von langen Datenpaketen. Sie dient dazu, dass bei einzelnen Übertragungsfehlern nicht das ganze Datenpaket erneut übertragen werden muss. Dabei wird nach jedem Empfang eines Fragments vom Empfänger des Datenpaketes ein ACK geschickt. Das hat zur Folge, dass aufwachende Knoten, die sich nur in Empfangsreichweite des Empfängers befinden, aber nicht 17 2 Verwandte Arbeiten in Reichweite des Senders, wissen, dass das Medium in Gebrauch ist und nicht die Übertragung stören. Letzteres kann geschehen, indem sie selber das Medium benutzen. In einer späteren Fassung von S-MAC[2] kommt noch Adaptive Listen hinzu. Verwendet man Adaptive Listen, geht ein Sensorknoten A, wie in Bild 2.4 zu sehen, schlafen, nachdem er mitbekommen hat, dass ein Nachbar von ihm eine RTS- oder CTS-Nachricht gesendet hat. Dadurch, dass er die Nachricht mitgehört hat, kennt er die Zeitdauer TA der Übertragung und geht für die Zeit TA schlafen. Danach wacht er für eine Zeit TB auf, um zu überprüfen, ob für ihn Nachrichten vorliegen oder um selber Nachrichten zu versenden. Ist dies nicht der Fall, geht er wieder schlafen. Adaptive Listen wird nur durchgeführt, wenn die Zeit zwischen Aufwachen TW und nächster Synchronisationphase TS größer ist als die Adaptive Listen Time TB , also falls TW + TB < TS . Abbildung 2.4: Adaptive Listen bei S-MAC Mit Hilfe von adaptive listen lässt sich der Durchsatz eines Netzwerkes erhöhen, Vorteile für die Energieeffizienz sind bei normaler Netzauslastung nicht vorhanden. Bei einer niedrigen Datenübertragung erhöht sich sogar der Energieverbrauch, da die Knoten öfter aufwachen, obwohl keine Nachrichten zu empfangen oder verschicken sind. 2.3 T-MAC-Protokoll Das Timeout-MAC (T-MAC)-Protokoll wird in [4] vorgestellt und stellt eine Modifikation des S-MAC-Protokolls dar. Bei T-MAC wird ähnlich wie bei S-MAC am Anfang einer Datenaustauschphase eine zufällig lange Zeit gewartet, bis Nachrichten verschickt werden, um Kollisionen zu vermeiden. Diese Zeit muss innerhalb einer fixen Zeit liegen, der contention time TC . In dieser Zeit versuchen die Knoten im Wettstreit ihre Daten zu versenden. Es wird innerhalb der Datenaustauschzeit nach dem letzten Empfang bzw. Versenden von Daten eine Zeit TA gewartet. Ist das Medium innerhalb dieser nicht in Gebrauch, geht der Knoten vorzeitig schlafen. Dabei muss TA in jedem Fall größer sein als das Zeitintervall bis zum Empfangen eines 18 2.3 T-MAC-Protokoll CTS-Paketes. Wie in Bild 2.5 zu sehen muss gelten: TA > TC + TT + TR . Dabei ist TT die Zeit zwischen dem Ende des Empfangs eines RTS-Paketes und dem Empfang des Anfangs des dazugehörigen CTS-Paketes bei umliegenden Knoten und TR die Länge eines RTS-Paketes. Abbildung 2.5: Timeout bei T-MAC Ist TA zu lange, steigt die verbrauchte Energie. Die Autoren von [4] wählen einen Wert von TA = 1.5 ∗ (TC + TT + TR ). Ist TA dagegen zu klein, so ist es möglich, dass ein Knoten zu früh schlafen geht, obwohl er Empfänger einer noch folgenden Nachricht ist. Das Problem, dass ein Knoten zu früh schläft, wird als Early-sleeping-Problem bezeichnet. Selbst wenn TA groß genug ist, gibt es dieses Problem. In Bild 2.6 sieht man ein Beispiel. Knoten A unterhält sich mit Knoten B, Knoten D geht schlafen, da innerhalb der Timeout-Zeit TA keine Nachricht in seiner Reichweite gesendet wird. C dagegen hört die CTS-Nachricht von B mit, bleibt aktiv und will, nachdem A und B ihren Datenaustausch beendet haben, Daten an D senden. D schläft zu diesem Zeitpunkt aber schon und C muss im nächsten Frame erneut mit B um das Medium streiten. Auf diese Art reduziert sich der Durchsatz von T-MAC stark. Auch ist das Verfahren nicht unbedingt fair, da C nie Daten verschicken kann, falls B immer Daten vor C versendet. Eine Lösung für das Problem stellt das Mitteilen eines zukünftigen Sendewunsches mittels eines FRTS2 -Paketes dar, wie in Bild 2.7 dargestellt: Sensorknoten A will Sensorknoten B Daten schicken. Sensorknoten C erhält auch das Paket und kennt daher die Sendedauer. C will seinerseits nun Sensorknoten D ein Paket schicken. T-MAC regelt das so, dass nach dem CTS von B Sensorknoten A ein festes Intervall wartet, in dem C ein FRTS an D schicken kann. Damit A währenddessen nicht das Medium an einen anderen Knoten verliert, schickt er inzwischen ein DS3 -Paket, das verloren gehen darf. Es dient nur dazu, das Medium besetzt zu halten. Anschließend beginnt A gleich mit dem Versenden der Datenpakete an B. 2 3 Future request-to-send Data Send 19 2 Verwandte Arbeiten Abbildung 2.6: early sleeping Problem bei T-MAC D und C warten mit der Übertragung bis die Übertragung von A an B zu Ende ist. C schickt dann ein RTS-Paket zu D und sie beginnen ihre Übertragung. Die Dauer der Datenübertragung zwischen A und B kennen sie, da C das Paket von A empfangen und D die Dauer mitgeteilt hat. Durch die Einführung von FRTS kann, wie in [4] schon erwähnt, zwar der Durchsatz erhöht werden, der Verbrauch von Energie steigt aber leicht. Bei T-MAC werden im Gegensatz zu S-MAC zu Beginn eines Intervalls die Daten burstartig verschickt. Nach einer gewissen Zeit ohne Nachrichtenverkehr gehen die Knoten in die Schlafphase über. Dadurch wird die Schlafpause dynamisch angepasst und je niedriger der Datenverkehr ist, umso mehr wird Energie gespart. Ein Nachteil ist der niedrigere Durchsatz verglichen mit S-MAC. 2.4 Etiquette-Protokoll Das Etiquette-Protokoll, siehe auch [5] und [6], benutzt im Gegensatz zu den beiden vorhergehenden Protokollen keine synchronisierten Wachzyklen. Die Grundidee dahinter ist, dass jeder Sensorknoten einen bestimmten Zeitslot hat, in dem er Daten empfangen kann. Diese Zeitslots werden nach Netzinitialisierung zwischen den Sensorknoten möglichst so eingerichtet, dass Nachbarn keine überschneidenden Zeitslots haben. In den oben genannten Papers([5], [6]) wird eine Analogie vorgestellt. In dieser gibt ein an einer Universität arbeitender Assistent Sprechstunden (engl.: Office Hours) öffentlich bekannt, in denen Studenten zu ihm kommen können. Auf Grund dessen heißen die Zeitslots in dem Protokoll auch Office Hours, die per Announcement-Meldungen be- 20 2.4 Etiquette-Protokoll Abbildung 2.7: FRTS-Nachrichtenaustausch bei T-MAC kannt gegeben werden. Auf diese Meldung hin kann ein Knoten versuchen, durch das Senden eines Request-Paketes einen Termin auszuhandeln“. ” Dabei geht das Etiquette-Protokoll davon aus, dass die Netzlast nur gering ist und die Latenzzeit keine tragende Rolle spielt, da im Etiquette-Protokoll nach [5] Latenz gegen Energieeffizienz eingetauscht wird. Bei Netzinitialisierung wartet jeder Knoten die Zeit c ∗ Pmax , wobei c eine kleine Zahl ist und Pmax eine für ein Netzwerk vordefinierte Größe darstellt, die die Größe des Zeitfensters in dem Netzwerk vorgibt. Während dieser Zeit sammelt jeder Knoten Informationen über die Office Hours seiner Nachbarknoten und wählt dann seine eigene. Dabei dürfen sich die Office Hours nicht überschneiden, was die Gefahr von Kollisionen verringern soll. Optimal ist es also, wenn die Office Hours verschiedener Knoten hintereinander liegen, keine Überschneidungen haben und gleichmäßig über das Zeitfenster verteilt sind. So wird das Kollisionsrisiko reduziert, aber gleichzeitig werden möglichst viele Slots erschaffen. Dies ist in Bild 2.8 für zwei Knoten zu sehen. Nach der Initialisierungsphase hält jeder Knoten regelmäßig seine Office Hour, wobei zwischen den einzelnen Office Hours maximal Pmax Zeit liegen darf. Letzteres gewährleistet, dass die Wartezeit eines Senders auf die Office Hours für den Empfänger eine feste Schranke besitzt. Zu Beginn seiner Office Hour verschickt der Sensorknoten eine Bekanntmachung ( An” nouncement“), in der er den umliegenden Nachbarn mitteilt, dass er nun bereit ist, Daten zu empfangen. Diese enthält auch bei variabler Länge des Office Hours Intervalls die Dauer seiner Office Hour. Will ein Sensorknoten A einem Sensorknoten B wie in Bild 2.9 eine Nachricht schicken, wartet er, bis Knoten B mit einem Announcement-Paket seine Bereitschaft dazu gegeben 21 2 Verwandte Arbeiten Abbildung 2.8: Halten von Office Hours bei Etiquette-Protokoll hat. Danach schickt Knoten A ein Appointment-Request-Paket an den Knoten B. Hat B nicht bereits an einen anderen Knoten ein Appointment-Grant-Paket für die nächste Zeit geschickt und ist bereit, Daten von Knoten A zu empfangen, wird er an diesen ein Appointment-Grant-Paket schicken. Die Nachbarn von Knoten B bekommen dieses mit und wissen nun, dass A ein Appointment mit Knoten B hat. Auch kennen sie die Dauer des Appointments. Erst nach dieser Zeit werden sie wieder versuchen, selber eine Anfrage an B zu starten, so dass keine Kollisionen entstehen. Ist die Office Hour von einem Knoten zu Ende, geht er in seine Schlafphase über oder wartet, falls er noch Nachrichten zu verschicken hat, bis der Empfänger für diese Nachricht seine Office Hour bekannt gibt - so dies noch nicht geschehen ist - und geht dann nach Verschicken seiner Daten schlafen. Wie man sieht, ist das Etiquette-Protokoll besonders gut geeignet für Netzwerke mit wenig Datenverkehr, da sonst die Knoten zu lange wach sind, falls sie eine Nachricht verschicken wollen. Die Latenz ist auch hoch, da jeder Knoten warten muss, bis der zukünftige Empfänger seine Office Hour abhält. Durch eine Reduzierung von Pmax hält jeder Knoten öfter seine Office Hour. Damit sinkt die Latenz, allerdings steigt der Energieverbrauch. 22 2.5 Wireless Token Ring Protokoll Abbildung 2.9: Verschicken von Daten bei Etiquette-Protokoll 2.5 Wireless Token Ring Protokoll Das Wireless Token Ring Protokoll ist nach dem Konzept eines Token Rings aufgebaut. Bei diesem sind die Knoten zu einem Kreis zusammengeschlossen und das alleinige Senderecht hat derjenige, der das so genannte Token besitzt, von dem es zu einem Zeitpunkt im Ring nur eines geben sollte. Dieses Token wird dabei nach einer bestimmten Zeit T im Ring weitergereicht, so dass jeder Teilnehmer das Senderecht nach einer maximalen Zeit von T ∗ n erhält, wobei n die maximale Anzahl an Knoten im Ring darstellt. Unter anderem behandelt der 802.5 Standard vom IEEE, siehe auch [8], den Token Ring ausführlich. Der 802.4 Standard [9] behandelt den Token Bus, bei dem - im Gegensatz zum Token Ring - die Teilnehmer nicht physisch, sondern nur logisch einen Ring bilden. Der Token Ring spart Energie schon durch seine Struktur, da er als TDMA-basiertes Verfahren die Kollisionsgefahr reduziert, ohne zusätzliche Nachrichten zu verschicken. Beim WTRP (Wireless Token Ring Protocol) [10] [11] [12] handelt es sich um ein Token Ring Protokoll für Funknetzwerke, das für mobile Ad-Hoc Netzwerke entwickelt wurde. Der Hauptteil des Protokolls liegt in der MAC-Schicht des Kommunikationsstacks. Daneben gibt es aber noch Mobility Manager, Channel Allocator, Management Information Base, und den Admission Control Manager. Je nach Einsatz des WTRP Protokolls können Teile des Protokolls unnötig sein. Bei sich nicht bewegenden Sensoren braucht 23 2 Verwandte Arbeiten man z.B. keinen Mobility Manager. Die MAC-Schicht ist dafür zuständig, dass Nachrichten erfolgreich übertragen werden, dass pro Ring genau ein Token existiert und dass die anderen Eigenschaften eines Ringes erfüllt bleiben. Der Mobility Manager sorgt dafür, dass er seinen aktuellen Ring verlässt und dem neuen Ring versucht beizutreten, falls ein Knoten sich von seinem aktuellen Ring zu weit entfernt hat und einem anderen Ring näher liegt. Der Channel Allocator besitzt durch die Management Information Base Wissen über die Netzwerktopologie und kann dadurch einen Übertragungskanal wählen, der überschneidungsfrei mit anderen in seiner Umgebung liegt. Dadurch können Übertragungskanäle von zwei Sensorknoten mehrfach vergeben werden, solange die Entfernung zwischen den einzelnen Sensoren groß genug ist. Der Admission Control Manager überwacht den Zugang zum Ring und verschickt Broadcast-Einladungen, falls genug Ressourcen vorhanden sind wie z.B. Bandbreite oder die aktuelle Anzahl der Teilnehmer im Ring, falls sie kleiner ist als die maximale Anzahl an Teilnehmer. Die Management Information Base sammelt die Informationen, die für die MAC-Schicht notwendig sind. Bei Initialisierung der Knoten horcht jeder Knoten, ob er eine Einladung von einem bereits bestehenden Token Ring erhält. Ist dies nicht der Fall, macht er einen Token Ring auf, wobei die Ringadresse seine MAC-Adresse wird und damit eindeutig ist. Er selbst ist dann der Besitzer dieses Ringes. Knoten A ist Vorgänger im Ring von Knoten B. Nun verschickt der Admission Manager von A eine Broadcast-Einladung, ein solicit successor Token (im Bild abgekürzt mit SoSuA ), die den Nachfolger von A enthält. Diese erhält unter anderem ein freier Knoten C, wie in Bild 2.10 zu sehen ist. Falls dieser dem Ring beitreten will, so schickt C seinerseits innerhalb eines festgesetzten Antwortfenster ein set successor Token (SeSuB ). Unter allen Knoten, die ein set successor Token schicken, sucht A sich einen heraus. Im Bild ist es Knoten C, der dann von A ein set predecessor Token (SeP rA )bekommt. C schickt daraufhin ein set predecessor (SeP rB ) Token zu B und damit ist B Nachfolger von C, C Nachfolger von A und der Vorgang ist beendet. Falls Knoten ausfallen und Nachrichten oder Token verloren gehen, müssen für diese Fälle Fehlerbehandlungsroutinen implementiert sein. Durch die maximale Größe des Ringes kann man eine maximale Zeit angeben, nach der das Token wieder bei einem Knoten vorbeikommen muss. Stellt man einen Timer mit dieser Zeit und läuft er aus, ohne dass das Token zu dem jeweiligen Knoten gekommen ist, so geht der Knoten davon aus, dass das Token verloren ist und erstellt ein Neues. Immer wenn ein Token an einen Knoten vorbei kommt, wird der Timer zurückgesetzt. Jedem Token wird eine Sequenznummer und eine Generationssequenznummer mitgegeben. Die Sequenznummer zählt die Anzahl an Stationen, die das Token schon passiert hat. Die Generationssequenznummer zählt, wie oft es bei dem Ringbesitzer schon vorbeikam. An diesen Nummern können die einzelnen Knoten sehen, welches Token höhere 24 2.5 Wireless Token Ring Protokoll Abbildung 2.10: Beitritt zu einem Token Ring Priorität hat, falls mehrere Token im Umlauf sind. Das Token mit der höheren Generationssequenznummer hat auch höhere Priorität. Sind die Generationssequenznummer gleich, so hat das Token mit der höheren Sequenznummer die höhere Priorität. Das Token mit der niedrigeren Priorität wird gelöscht. Bekommt ein Knoten ein Token, dessen Generationssequenznummer nicht mit der aktuellen Runde übereinstimmt, so geht der Knoten davon aus, dass der Besitzer des Ringes den Ring verlassen hat, da sonst die Generationssequenznummer von ihm hochgezählt worden wäre. In diesem Fall ernennt sich der Knoten, der das Token gerade besitzt, selber zum Besitzer des Rings. Er ändert das Token, indem er seine MAC-Adresse als Adresse des Rings einträgt und die Generationssequenznummer und Sequenznummer auf 0 zurücksetzt. In Kapitel 12.4 in [12] wird auf eine Erweiterung des WTRP-Protokolls im Zusammenhang mit Sensornetzwerken eingegangen. Dabei wird ein einziger großer Ring vorgeschlagen, auf dem sowohl Token als auch Daten weitergegeben werden. Durch die Größe des Ringes kann die Zeit ermittelt werden, für die ein Knoten weder zum Senden noch Empfangen bereit sein muss und die er dann zum Schlafen verwenden kann. Die einzelnen Token Ringe können auf verschiedene Weise miteinander verbunden sein. Unter anderem können die einzelnen Ringe in einen großen Ring eingebettet sein. Die einzelnen Elemente des Rings können selber Cluster darstellen, die sternförmig aufge- 25 2 Verwandte Arbeiten baut sind, oder die einzelne Ringe sind über Gateways, d.h. nicht mobile Access Points, verbunden. Das E 2 W T RP [13] hat als Motivation die Verbesserung des WTRP-Protokolls bezüglich des Energieverbrauchs. Allerdings führt es keine Schlafpausen ein. Es benutzt eine dynamische Anpassung der Holding-Time, also der Zeit, die ein Knoten das Token halten darf, um so Energie zu sparen. Dadurch dass z.B. die Holding-Time vergrößert wird, falls die Anzahl an Knoten im Ring abnimmt, kann ein aktiver Knoten mehr Nachrichten verschicken, während er das Token hat. Die Frequenz, mit der das Token weitergegeben wird, wird dadurch gesenkt und damit auch der Energieverbrauch. 26 3 Das ESTR-Protokoll Das Energy Saving Token Ring Protocol (ESTR) basiert auf dem Wireless Token Ring Protocol, wandelt dieses aber ab und führt energieeffiziente Maßnahmen ein. Im Gegensatz zum WTRP werden die Knoten in dem Netzwerk nicht aus sich bewegenden Sensoren bestehen, so dass einige Aspekte vom WTRP nicht benutzt werden. Das Hauptinteresse dabei ist die MAC-Schicht, die unter anderem den Aufbau des Ringes, Datenübertragung und auch die Schlafphasen regelt. 3.1 Idee Das WTRP beschäftigt sich mit dem Token Ring, dessen einzelne Knoten nur durch Funk miteinander verbunden sind. Dabei müssen sich die einzelnen Teilnehmer in einem Ring nicht unbedingt alle mit einem Hop erreichen, sondern die Nachrichten werden über die Ringstruktur verbreitet. Um Energie zu sparen hat sich bei vielen Protokollen das Einführen von Schlafpausen bewährt. Erleichtert wird das bei dem WTRP dadurch, dass zu einem Zeitpunkt nur zwei Knoten in einem Ring wach sein müssen. Die Einführung von Schlafphasen wurde in [12] bereits als mögliche Erweiterung des WTRP innerhalb eines Abschnittes behandelt, jedoch weder weiter ausgeführt noch implementiert. Analog dazu werden beim ESTR Schlafpausen eingeführt für Knoten, die gerade nicht senden oder empfangen müssen. Dadurch verbringen Knoten weniger Zeit im Wachzustand und hören auch weniger Nachrichten mit, die für andere Knoten gedacht sind (Overhearing), was den Energieverbrauch auch reduziert. Dabei werden die Grundmechanismen des WTRP übernommen. Da aber von einem nicht mobilen Ad-hoc-Netzwerk ausgegangen wird, werden die dafür notwendigen Teile des WTRP nicht berücksichtigt. Diese können später - eventuell modifiziert - wieder hinzugefügt werden. Innerhalb eines Token Rings beim ESTR darf nur derjenige Daten empfangen, der das Token besitzt. Das Senderecht zu diesem Knoten wird in den folgenden Absätzen noch näher erklärt. 3.2 Probleme und Lösungen Durch die Einführung von Schlafpausen kommen neue Probleme hinzu, da Knoten nicht unbedingt wissen, ob ihr Nachbar wach ist oder nicht. Dies betrifft einerseits Nachbarn 27 3 Das ESTR-Protokoll im eigenen Ring, aber noch stärker Nachbarn in zwei benachbarten Ringen. 3.2.1 Tokenweitergabe Leitet man, wie beim WTRP, das Token einfach von Knoten A zu Knoten B weiter, ist dieser aber noch nicht wach, so weiß A nicht, ob B schläft, die Nachricht nicht bekommen hat oder ausgefallen ist. Zwar sind die Schlafpausen periodisch festgelegt, aber durch die Aufnahme neuer Mitglieder in den Ring, Übertragungsschwierigkeiten beim Token oder Ungenauigkeiten der Uhren kann A nicht sicher davon ausgehen, dass B schon wach ist. Als Lösung wird B, ähnlich wie bei dem Etiquette-Protokoll, bekannt geben, wenn er von der Schlafphase in die Wachphase übergeht. Der wach gewordene Knoten wird dafür eine Midle Nachricht verschicken. Hört A dies innerhalb einer festgelegten Zeit TwaitM ax , kann er das Token an B weiterleiten und der Nachrichtenaustausch stattfinden. Die Zeit TwaitM ax ist dabei zweimal so groß wie die maximalen Schlafpausen der einzelnen Knoten TsleepM ax , damit sowohl ein frühes Aufwachen von A als auch ein spätes Aufwachen von B berücksichtigt werden kann. 3.2.2 Verlust des Token Erhält ein Knoten von seinem Vorgänger nach dem Verschicken einer Midle Nachricht kein Token, wird er erneut eine Midle Nachricht verschicken. Erst nach einer Zeit TwaitM ax wird dieser Knoten aufhören, diese Nachrichten zu schicken, und davon ausgehen, dass sein Vorgänger ausgefallen ist. Der Vorgängerknoten wird erst schlafen gehen, wenn sein Nachfolger keine Wachnachrichten mehr schickt und er damit sichergehen kann, dass dieser das Token erhalten hat. Durch diese gesicherte Übertragung kann das Token nur noch verloren gehen, wenn der Knoten mit dem Token ausfällt oder der Knoten mit dem Token seinen Nachfolger innerhalb von TwaitM ax nicht erreichen kann. Der Ausfall eines Knotens ist in einem späteren Absatz behandelt. Der zweite Fall wird ebenfalls so gehandhabt, als ob der Knoten ausgefallen ist, da es sich entweder um einen echten Ausfall eines Knotens handelt oder um eine länger andauernde Störung. 3.2.3 Existenz mehrerer Token innerhalb eines Ringes Falls mehrere Token innerhalb eines Rings existieren, so werden diese entsprechend dem WTRP gehandhabt. Jedes Token erhält zwei Nummern. Die Sequenznummer zählt die Anzahl der von dem Token passierten Knoten in dieser Runde und die Generationssequenznummer zählt die Anzahl an Nummern. Alle Token, deren Nummer kleiner ist als die Nummer des vom jeweiligen Knoten zuletzt verschickten Token, werden gelöscht. Da nur der Knoten, der den Ring gegründet hat, der Ringbesitzer, die Generationssequenznummer erhöhen darf und jedes Token zu ihm gelangt, löscht dieser in jedem Fall 28 3.2 Probleme und Lösungen alle doppelten Token. Dieser Mechanismus verursacht keine erhöhten Kommunikation- und damit Energiekosten. Dabei ist die Wahrscheinlichkeit eines doppelten Token gering. Da die einzelnen Teilnehmern im Ring keine direkte Verbindung zu den meisten Teilnehmern des Ringes haben, ist die Gefahr von zusätzlichen Kollisionen zu gering, als dass sich ein vermehrter Energieaufwand dafür lohnt. 3.2.4 Ausfall eines Knotens Hat A nach der Zeit TwaitM ax Zeit nichts von B gehört, wird ein Nachfolger von B, wenn er aufgewacht ist, nach einer bestimmten Zeit feststellen, dass kein Token zu ihm weitergereicht wird. Dieser wird auch eine maximal vorgegebene Anzahl an Versuchen unternehmen seinen Vorgänger mit einer Midle Nachricht von seinem Aufwachen zu informieren. Hat er damit keinen Erfolg, geht er davon aus, dass einer seiner Vorgänger ausgefallen und dass die Ringstruktur fehlerhaft ist. Daraufhin wird er die Auflösung und den Neuaufbau des Ringes einleiten und eine entsprechende Nachricht an die anderen Knoten weitergeben. Dabei muss beachtet werden, dass Ringe mit vielen Knoten vermieden werden. Weiter unten wird festgestellt, dass bei zu vielen Teilnehmern am Netzwerk diese in mehrere miteinander verknüpfte Ringe eingeteilt werden. Dadurch, dass man nun einfach den Ring auflöst, kann man mit relativ wenigen Nachrichten wieder eine funktionierende Struktur schaffen. Falls der Knoten, von dem man meint, dass er ausgefallen ist, nur wegen einer Störung seinen Nachfolger nicht erreichen kann, so wird er wieder in den neuen Ring eingebunden. Im Optimalfall entsteht wieder ein Kreis, der die selbe Größe wie der aufgelöste Ring hat. Ansonsten entstehen zwei oder mehrere kleinere Ringe. Deswegen muss die Zeit für den Neuaufbau des Ringes groß genug gewählt werden, so dass alle erreichbaren Knoten aus dem zerfallenen Ring wieder die Chance haben, sich dem neu gebildeten Ring anzuschließen. Eine Neuorganisation der Knoten des zerfallenen Ringes unter Verwendung der umgebenden Ringe stellt wegen der Schlafenszeiten eine Schwierigkeit dar. Denn dann müssten in diesen Ringen fast alle Schlafphasen neu eingerichtet werden. Dies kostet Energie und wirft eventuell neue Probleme auf, da andere Knoten als ausgefallen eingestuft werden, wenn die Phasen der einzelnen Knoten in der Übergangsphase nicht mehr aufeinander ausgerichtet sind. Hat ein Sensorknoten A eine Nachricht für Sensorknoten B, aber beide befinden sich in verschiedenen Ringen, so wartet A, bis er die Midle Nachricht von B hört und dieser sein Token und die Nachrichten aus dem eigenen Ring erhalten hat. Es wird davon ausgegangen, dass A einen Sendepuffer für Nachrichten an andere Ringe hat. Droht dieser Puffer voll zu sein, d.h. der Puffer ist bis zu einem gewissen Prozentsatz mit Nachrichten gefüllt, werden die ältesten Nachrichten gelöscht. Dies wird deswegen getan, da bei der Verwendung eines Token Rings davon ausgegangen wird, dass 29 3 Das ESTR-Protokoll die tatsächlich notwendige Datenübertragungsrate die maximale Datenübertragunsrate nicht dauerhaft übersteigt. Dadurch, dass beim Token Ring nur ein Knoten - nämlich derjenige, der gerade das Token des Ringes besitzt oder geschickt bekommt - innerhalb des Rings gleichzeitig empfangen bzw. senden kann ist die maximale Datenübertragung geringer als z.B. beim T-MAC Protokoll. Siehe dazu auch Kapitel 2.3 mit dem T-MAC Protokoll, bei dem jeder Teilnehmer senden kann, solange keine anderen Teilnehmer den Kanal bereits belegt haben. Die Knoten innerhalb eines Token Rings liegen in größeren Sensornetzen außerhalb der Reichweite der meisten anderen Knoten in dem Ring, so dass ohne Kollisionsgefahr mehr Knoten gleichzeitig senden können als bei der Struktur des Token Rings. Deswegen ist die maximale Datenübertragung bei Contention-basierten Protokollen wie T-MAC höher. 3.2.5 Nachrichtentransport zu anderen Ringen Hat ein Knoten eine Nachricht für einen Knoten in einem Nachbarring, so muss er wach bleiben, bis der Nachbar in dem anderen Ring wach geworden ist und den Datenaustausch innerhalb seines Ringes abgeschlossen hat. Danach wartet er eine Zeit von zufälliger Dauer, um Kollisionen mit Nachrichten aus anderen Ringen zu vermeiden. Dann schickt er die Nachricht, nachdem er eine Zeit reserviert hat ähnlich dem Etiquette-Protokoll. Dies führt allerdings zu einem höheren Energieverbrauch für diesen Knoten, da die zusätzliche Wachzeit von seiner Schlafzeit abgezogen wird. 3.3 Netzwerkstruktur und -aufbau Für die Struktur des Netzwerkes kann man entweder einen großen Ring erstellen oder mehrere kleine, die untereinander auch Nachrichten austauschen. Innerhalb der möglichen Erweiterung des WTRP für Sensornetzwerke in [12] wird ein einzelner, großer Ring vorgeschlagen, was sowohl Vorteile als auch Nachteile mit sich bringt, wie im Folgenden zu sehen ist. 3.3.1 Ein großer Ring Hierbei bilden alle Knoten einen einzelnen Ring. Diese Struktur ist näher beim Original, dem Token Ring, als wenn man mehrere kleine Ringe benutzt. Die Knoten bilden dabei einen einzigen großen Ring, in dem ein Token alle Knoten durchläuft. Da es nicht immer möglich ist, einen echten Ring mit allen Knoten zu bilden, weil z.B. ein Knoten in Reichweite nur eines anderen Knoten liegt und dessen Vorgänger dann auch dessen Nachfolger ist, muss man eine Alternative finden. Solange alle Knoten einander erreichen, kann man zuerst eine baumartige Struktur aufbauen und dann von dieser den eulerschen Kreis als Ringstruktur heran nehmen. Da es sich bei der Nachrichtenübertragung um Funk handelt, sind die Kanten in dem Baum ungerichtet. Das bedeutet, dass sich Vater und Sohn in dem Baum jeweils gegenseitig erreichen können, wie auch in 3.1 zu sehen. 30 3.3 Netzwerkstruktur und -aufbau Den eulerschen Kreis erhält man nun dadurch, dass man die Knoten in dem erstellten Baum gemäss einer Tiefensuche durchgeht und die Kanten in der benutzten Reihenfolge zu einem Pfad zusammenfügt. Dieser startet und endet bei der Wurzel und erreicht alle Knoten in diesem Baum. Dies führt zwar dazu, dass manche Knoten öfter besucht werden als andere, falls sie in dem Baum mehrere Kinder haben, aber man erzeugt eine Kreisstruktur. Eine andere Möglichkeit ist es, den vom WTRP verwendeten Algorithmus zu nehmen mit der Änderung, dass der Vorgänger- und Nachfolgerknoten für einen neuen Knoten der gleiche Knoten sein kann. So können Knoten in den Ring eingebunden werden, die nur zu einem Knoten im Ring eine Verbindung haben. Auch hier wird ein Knoten bestimmt, der die Ringstruktur initialisiert. Diese letzte Lösung kostet weniger Energie beim Aufbau, da keine zusätzlichen Nachrichten verschickt werden müssen um die Struktur des Ringes zu organisieren. Deswegen wird sie bevorzugt. Der Algorithmus, der den Eulerschen Ring verwendet, bringt dagegen mehr Struktur in den Ring, die andere Algorithmen zu Verbesserung nutzen können, indem sie z.B. die Anzahl an Kanten reduzieren. Als Ringbesitzer kann man vorher einen Knoten bestimmen, der nach einer bestimmten Zeit Einladungen an Nachbarknoten verschickt. So lässt sich vermeiden, dass sich mehrere Ringe parallel aufbauen und danach wieder zusammengeführt werden müssen. Fällt dieser Knoten aus, so initialisiert nach einer Zeit T, die proportional zur Ringgröße ist, ein anderer Knoten den Ring, so dass keine zwei Ringe gleichzeitig errichtet werden. Abbildung 3.1: Eulerscher Kreis 31 3 Das ESTR-Protokoll 3.3.2 Verknüpfung mehrerer Ringe Das Verfahren zum Errichten mehrerer verknüpfter Ringe ist bis auf ein paar Abweichungen ähnlich dem Verfahren zum Errichten eines großen Ringes. Erstens muss jeder Knoten im Netz potenzieller Besitzer eines Ringes sein, d.h. nach einer zufällig langen Zeit entscheidet er sich selber einen Ring zu erstellen, wenn er keine Einladung von einem Ring in seiner Nähe erhalten hat. Nach Errichten der Ringstrukturen wird dann, wie in Bild 3.2 zu sehen, die Kommunikation nicht nur innerhalb eines Ringes ablaufen, sondern auch zwischen den einzelnen Ringen, was eine erweiterte Kollisionsbehandlung erfordert. Die Anzahl an Kollisionen von Nachrichten steigt auch bei der Netzinitialisierung, da mehrere Ringe parallel aufgebaut werden und durch diese Parallelität die Anzahl an gleichzeitig verschickten Nachrichten erhöht wird. Dadurch wird aber auch die Zeit, die für das Errichten der Anfangsstruktur benötigt wird, erniedrigt. Abbildung 3.2: Struktur mehrerer mit einander verbundener Token Ringe Eine leicht abgewandelte Initialisierung von mehreren mit einander verknüpften Ringen ist, Cliquen zu suchen und diese dann jeweils zu einem Ring zusammenzuschließen. Cliquen sind eine Menge von Knoten, von denen jeder jeden Knoten in dieser Clique erreichen kann. So kann - wie beim Token Bus - jeder Knoten im Ring jeden anderen direkt erreichen. Allerdings führt das in den meisten Fällen dazu, dass die gebildeten Ringe klein sind und damit die Kollisionsgefahr bei späteren Nachrichtenaustausch groß ist und die Schlafphasen kurz sind. 32 3.3 Netzwerkstruktur und -aufbau Deswegen wird vorher eine maximale konstante Ringgröße festgelegt, die dafür sorgt, dass die Latenz annehmbar ist, da die Schlafenszeit nun von einer Konstanten abhängt und nicht mehr von der Ringgröße. Erhöht man diese maximale Ringgröße auf die Anzahl an Knoten und sorgt dafür, dass ein Knoten allein den Ring initialisiert, so bekommt man einen großen Ring. Innerhalb der Initialisierungsphase wird, solange ein Ring weniger Mitglieder als die maximale Ringgröße hat, dieser Ring weitere Einladungen verschicken. Die Einbindung der neuen Knoten in die einzelnen Token Ringe wird wie beim WTRP verlaufen. Die Initialisierungsphase endet nach einer festgesetzten Zeit für alle Ringe. 3.3.3 Vergleich zwischen beiden Lösungen Die Vorteile bei einem großen Ring gegenüber mehreren kleinen Ringen sind, dass keine Kollisionen durch Nachrichten im eigenen Netzwerk auftreten können, da nur jeweils ein Teilnehmer allein das Senderecht besitzt. Auch können die einzelnen Teilnehmer länger schlafen, da die Länge der Schlafphase der Knoten eines Ringes direkt proportional zu der Größe des Ringes ist, in dem sich die Knoten befinden. Wenn es nur einen Ring gibt, so ist die Ringgröße auch maximal. Nachteilig ist, dass auch die Latenz direkt proportional zu der Anzahl an Teilnehmer in einem Ring ist, die im Folgenden nun mit n bezeichnet wird. Deswegen ist bei großen Netzwerken der Durchsatz sehr gering. Führt man noch Schlafperioden ein, so muss der Knoten, der gerade das Token besitzt und senden will, erst warten, bis sein Empfänger wach ist, was wieder O(n) Zeit braucht. Damit ist die Latenz in der Größenordnung von O(n2 ). Das Gleiche trifft für den Weg zu, den eine Nachricht vom Sender zum gewählten Empfänger in einem einzigen großen Ring zurücklegt. Dort passiert eine Nachricht O(n) Knoten, während in mehreren kleinen Ringen die Weglänge in O(d) liegt. In kleinen Ringen kommt pro Knoten auf dem kürzesten Weg der Länge d von Sender zu Empfänger eine Anzahl an von den Datenpaketen passierten Knoten dazu, über die das Paket zusätzlich wandert und die kleiner ist als eine Konstante. Diese konstante Zahl ist genau die maximale Ringgröße. Damit werden beim Verschicken einer Nachricht im großen Ring mehr Datenpakete pro Nachricht erzeugt als bei mehreren kleinen Ringen, bei denen ein Weg genommen werden kann, der weniger Knoten passiert, was zu niedrigerem Energieverbrauch führt. Ist die Anzahl an Teilnehmern von kleinen Ringen konstant, so ist die Latenz bei Benutzung von kleinen Ringen nur O(n), da die Wartezeit konstant ist und der Weg zum Zielknoten über mehrere Ringe maximal die Länge n hat. Bei Verwendung mehrerer Ringe geeigneter Größe ist das Risiko einer Kollision von Nachrichten aus verschiedenen Ringen gering, da sich die meisten Knoten aus diesen Ringen jeweils außerhalb der Reichweite des anderen Ringes befinden. Das Errichten mehrerer kleiner Ringe geht auch schneller und ist damit energieeffizienter, da die Ringe parallel errichtet werden und keine zusätzlichen Kosten für die Errichtung einer speziellen Struktur wie den eulerschen Kreis ausgegeben werden müssen. 33 3 Das ESTR-Protokoll Weiterhin kann über die maximale Anzahl an Knoten in einem Ring die Variante mit mehreren Ringen an die Variante mit einem Ring angenähert werden. Bei der Implementierung mit wenigen Knoten ist die Verwendung eines einzigen großen Ringes von Vorteil, da im Regelfall kleine Ringe eine Erhöhung der Nachrichtenkollisionen bedeuten. Bei einer großen Anzahl an Knoten allerdings steigt die Latenz bei einem einzigen Ring stärker als bei der Verwendung mehrerer Ringe und es kann zum Überlaufen in den Nachrichtensendepuffern kommen. Ob nun ein großer Ring oder mehrere kleine Ringe für die Implementierung verwendet werden, ist abhängig von der Anzahl an Knoten in dem Netzwerk, aber auch von der Datenübertragungsrate. 3.4 Nachrichtenaustausch Knoten A ist im Besitz des Token für seinen Ring und will es an seinen Nachfolger Knoten B weiterreichen. A wartet dann, wie bereits beschrieben, auf die Midle Nachricht von B, wie in Bild 3.3 zu sehen. Sobald diese kommt, schickt A das Token. Sollte B das Token nicht erhalten, wird er versuchen durch erneutes Verschicken von Midle an A das Token zu erhalten. Hat B das Token, wird er auf die Daten von A warten. Die ankommenden Datenpakete wird B dabei mit einer ACK-Nachricht beantworten. Schickt A keine neuen Daten mehr, dürfen die Knoten an B Nachrichten schicken, die sich in Nachbarringen befinden. Abbildung 3.3: Tokenweitergabe bei ESTR-Protokoll Dazu warten sie nach dem letzten Datenpaket von A eine Zeit zufällig lange Dauer, damit ihr Sendewunsch mit den Sendewünschen anderen Knoten aus anderen Ringen nicht kollidiert. Dann schicken sie einen Sendewunsch und - hat B noch genug Zeit und kein Sendewunsch ist vorher bei B eingegangen - erhalten sie eine Sendeerlaubnis. Das lässt sich mit dem im vorhergegangen Kapitel vorgestellten RTS/CTS-Verfahren, hier in Bild2.2 gezeigt, verwirklichen. C ist der Knoten, der Senderecht von B erhalten hat. Die Knoten, die zwar an B senden wollen, aber nicht die Erlaubnis erhalten haben, horchen das Medium ab, wann der Datenaustausch zwischen B und C beendet ist, und dann versuchen sie ihrerseits wieder das Senderecht von B zu erhalten. Da A außer Funkreichweite von Knoten aus anderen Ringen, die an B senden wollen, sein kann, kann es sein, dass diese Knoten das Senden des Token von A nach B nicht mitbekommen. Deswegen ist es notwendig, dass B bei der Übergabe des Token selber eine Nachricht, die Midle -Nachricht, verschickt, damit die Knoten aus anderen Ringen 34 3.4 Nachrichtenaustausch in jedem Fall über den Zustand von B Bescheid wissen. Die Knoten wechseln während ihrer Lebenszeit zyklisch in mehrere Zustände über, damit sie in den jeweiligen Phasen korrekt auf eingehende Nachrichten reagieren können. Die möglichen Zustände und ihre Übergänge sind in Bild 3.4 zu sehen. Die Knoten sind anfangs im Zustand sleep, außer einem Knoten A, der das Token hat und der Ringbesitzer ist. Dieser befindet sich im Zustand sendToken. Sobald sein Nachfolger B aufwacht, geht dieser in den Zustand waitToken über und schickt eine Midle -Nachricht. Sobald B das Token hat, geht B in den Zustand waitData über. A dagegen, der nun keine Midle -Nachricht mehr erhält, wechselt in den Zustand sendData über und sendet nun Daten an B. Sobald A keine Daten mehr zu verschicken hat, geht er schlafen. Hat A noch Daten für einen oder mehrere Knoten in einem oder mehreren der benachbarten Ringe, wird er seine Schlafphase ganz oder nur teilweise dafür aufgeben und auf das Erwachen des Empfängers im anderen Ring zu warten. Hat A seine Schlafphase dadurch verpasst, geht er gleich von sendData in waitToken über, ansonsten in den Zustand sleep. Knoten B hat das Token und wird nun wie A seinen Zustandszyklus weiter behandeln, also auf die Midle -Nachricht seines Nachfolgers warten. Die Unterteilungen der Wachphase eines Knotens sind auch in Bild 3.5 zu sehen. Abbildung 3.4: Zustandsdiagramm der MAC-Schicht bei ESTR Umso größer nun die Ringe sind, umso größer ist die Latenz und umso geringer ein möglicher Durchsatz, sollte man von Kollisionen absehen. Diese wiederum sind umso häufiger, je kleiner die Ringe sind und umso mehr Ringe es gibt, denn nur der Datenaustausch innerhalb eines Ringes ist synchronisiert. Außerdem liegen die einzelnen Ringe näher beieinander, je kleiner die durchschnittliche 35 3 Das ESTR-Protokoll Abbildung 3.5: Abschnitte der Wachphase bei ESTR Ringgröße ist. Mit der Anzahl an Kollisionen sinkt auch die maximal mögliche Datenübertragungsrate und die Latenz, so dass die Ringgröße eine entscheidende Rolle bei der Effizienz des Protokolls spielt. Die maximale Ringgröße wird - wie im WTRP - vor der Initialisierung des Netzwerkes festgelegt und danach dem Token immer mitgegeben. Sollte es nur Ringe mit einem Knoten als Teilnehmer geben, so funktioniert das ESTR Ring Protokoll genau wie das Etiquette-Protokoll. Damit ist das ESTR eine Mischung aus dem Etiquette-Protokoll und dem WTRP. Mit Ausnahme der Initialisierungsphase ist ein Broadcast innerhalb des ESTR nicht sinnvoll, da die meisten Knoten in der Umgebung des Knotens, der den Broadcast verschickt, schlafen. 3.5 Routing Die Aufgabe des Routings fällt nicht in den Bereich des MAC Protokolls, da MAC Protokolle zuständig sind für den geregelten Zugriff auf das Medium und nicht für die lokale Bestimmung des nächsten Kandidaten. Falls aber die Sensorknoten in einem Ring angeordnet sind, so werden die Pakete einfach über die Ringstruktur weitergeleitet, bis sie bei dem Adressaten angekommen sind. Damit ist zusätzliches Routing nicht mehr notwendig. Bei der Netzwerkstruktur, bei der es mehrere Ringe gibt, wird über dem MAC-Protokoll ein weiteres Protokoll benutzt, das in der Network Layer liegt. Dieses übernimmt das Routing zwischen den einzelnen Ringen. Innerhalb eines Ringes werden die Nachrichten weiterhin über die Ringstruktur weitergegeben. 3.6 Länge der Schlafpause Die Länge der Schlafpause ist abhängig von der Anzahl an Knoten in dem Ring. Je mehr Knoten in dem Ring sind, desto länger kann der einzelne Knoten schlafen. Allerdings dauern dann auch die einzelnen Nachrichtenübermittlungen länger, da der Weg innerhalb des Ringes durchschnittlich weiter ist. Ein Knoten, der viele Nachrichten an Nachbarringe übertragen muss und deswegen seine Schlafpausen nicht so oft nutzen kann wie seine Nachbarknoten, wird schneller wegen 36 3.7 Zu erwartende Vorteile und Nachteile des ESTR Energiemangels ausfallen als andere Knoten innerhalb seines Ringes. Wenn dieser Knoten nun aber nicht in jeder Runde Nachrichten an Knoten in anderen Ringen erhält, so kann er durch eine dynamische Anpassung seiner Schlafphase den im Vergleich zu seinen Nachbarknoten im Ring erhöhten Energieverlust wieder ausgleichen. Dazu gibt ein Knoten A dem Token noch eine Angabe über seinen Energieverbrauch oder seinen Restenergiebetrag mit. Ist der Restenergiebetrag dieses Knotens A um einen konstanten Faktor c größer als der seines Nachfolger B, wird B seine Schlafphase um den Faktor c erhöhen. Die Auswirkung davon kommt erst zum Tragen, wenn A wieder das Token an B weitergibt, da nun A länger warten muss, während B länger schläft. Falls die Restenergiebeträge von A und B wieder gleich sind, wird B wieder seine Schlafphase um den Faktor c kürzen. Der Zeitpunkt des Einschlafens verschiebt sich dadurch nicht, nur der Zeitpunkt des Aufwachens, so dass es nur Auswirkung auf den Vorgänger, aber nicht auf den Nachfolger hat. Da A durch eine dynamische Anpassung der Schlafphase von B nun seinerseits einen erhöhten Verbrauch hat, kann es sein, dass A nun seine Schlafphase dynamisch anpasst und damit sein Energieverbrauch gleich bleibt. Er wacht zwar später auf, aber wegen der dynamischen Schlafphasenanpassung von B darf er später einschlafen. Der Knoten, der, wenn man entgegen der Kreisrichtung geht, mehr oder gleich viel Energie hat wie sein Vorgänger, wird damit die Energieeinsparungen von B tragen, da er als erster nicht seine Schlafphase verlängern kann. Der Faktor c muss dabei so gewählt werden, dass er zwar eine Auswirkung hat, aber nicht dazu führt, dass die neu entstandene Schlafphase zu kurz ist. 3.7 Zu erwartende Vorteile und Nachteile des ESTR Als Hauptvorteil des ESTR ist die Energieeffizienz zu sehen. Diese besteht vor allem in der Einführung von Schlafphasen. Die zusätzlichen Maßnahmen gegen Kollisionen sind in einem Bereich von Vorteil sein, in dem es außer dem Token Ring Netzwerk noch fremde Netzwerke gibt. Ein Nachteil ist, dass der Aufbau und Ablauf komplizierter ist als beim ursprünglichen WTRP, da mehr Kontrollnachrichten benötigt werden. Durch die Veränderung der Konstanten, die die maximalen Ringgröße festlegt, kann man zusätzlich noch die Netzwerkstruktur an die zu erwartenden Gegebenheiten anpassen, wie die Verteilung der Sensorknoten oder die zu erwartende Datenübertragungsrate. Man kann damit zum Beispiel einen Ring der maximalen Größe erstellen lassen oder ein Netzwerk aus Ringen, die aus genau einem Knoten bestehen. Weiterhin erlauben die dynamischen Schlafphasen einen internen Energieausgleich im Ring. 37 3 Das ESTR-Protokoll 38 4 Testreihen im Simulator NS2 Der NS2[19] ist ein von der Universität von Berkeley in Kalifornien entwickelter Simulator von Netzwerken, der im Laufe der Jahre immer weiter wuchs. NS2 verwendet dabei zwei Programmiersprachen: C++ für die Implementierung von Protokolle und OTCL für die Modellierung von Netzwerken. Die Implementierung in C++ bewirkt, dass durch das Vorkompilieren die Geschwindigkeit erhöht wird. Da Protokolle sich nicht oft ändern, ist hier eine schnelle Änderung nicht so wichtig. TCL ist eine Interpretersprache, mit der man einer Skriptsprache ähnlich schnell implementieren kann, ohne Kompilieren und ohne Deklaration von Variablen. So kann man schnell ein Netzwerk ändern bzw. entwerfen, deren Simulationsgeschwindigkeit hauptsächlich von den auf C++ Ebene implementierten Protokollen abhängt. Die in den vorhergehenden Kapiteln beschriebenen MAC-Protokolle wurden im NS2 getestet, dabei liegt das Hauptaugenmerk auf dem Energieverbrauch. Das ESTR ist dabei mit dem Ansatz für mehrere einzelne Ringe implementiert, da die Tests mit einer größeren Anzahl an Knoten durchgeführt wurden. Weiterhin sorgt der gewählte Ansatz dafür, dass echte Ringe entstehen, so dass ein Knoten nur genau einen Nachfolger hat. Falls ein Knoten A nur zu einem anderen Knoten B eine Verbindung hat und B aber schon Vorgänger und Nachfolger besitzt, so bildet A selber einen Ring und schläft einen Anteil der Gesamtzeit, damit er Energie spart. Bei dem WTRP werden - gemäß dem Vorschlag in [12] - Schlafphasen verwendet und die teilnehmenden Knoten bilden einen einzigen Ring. Eine S-MAC und 802.11 Implementierung liegt schon innerhalb des Simulators bereit und ist nur um die Möglichkeit für bestimmte Ausgaben erweitert worden, die allein dem Ablesen von Messdaten dient. Die restlichen Protokolle (T-MAC und Etiquette) sind mit Hilfe der Angaben in den jeweils von den Autoren gegebenen Informationen, die unter anderem auch die Länge des Timeoutintervalls von T-MAC und die Länge der Schlafphase betrafen, implementiert worden. Das WTRP braucht je nach verwendeter Knotenanzahl unterschiedlich lange für seine Initialisierungsphase. Die dafür verwendete Zeit ist im C++ Code festgelegt. Auch bei den anderen Protokollen wurden einzelne Einstellungswerte individuell für einen Test geändert, so dass diese bessere Ergebnisse zu Tage bringen als die Standardwerte. Hauptsächlich ist die Anzahl an Knoten für die Änderungen verantwortlich. 39 4 Testreihen im Simulator NS2 4.1 Durchschnittlicher Energieverbrauch Der durchschnittliche Energieverbrauch ist ein wesentlicher Faktor, wie lange das Sensornetz aktiv sein kann. Ist die Energie zu schnell verbraucht, so fallen einzelne Knoten schneller aus. Dabei ist auch wichtig, dass der Energieverbrauch gleichmäßig verteilt ist, was im nächsten Unterkapitel näher untersucht wird. Die Energie wurde dabei in Joule gemessen. 4.1.1 Durchschnittliche Energieeffizienz bei Einsatz von 20 Sensorknoten In dem Bild 4.1 wird deutlich, dass das MAC-Protokoll 802.11, das bis auf CSMA/CA keine Energiesparmöglichkeit hat, im Laufe der Zeit bei diesem Szenario mit 20 Sensorknoten am meisten Energie von den verwendeten Protokollen verliert. Abbildung 4.1: Energieeffizienz bei 20 Knoten Auffallend ist auch, dass das Etiquette-Protokoll genau wie das ESTR am Anfang mehr Energie verliert und dann wie die übrigen linear fällt. Sowohl das ESTR als auch das WTRP bilden hier nur einen Ring, da das ESTR als Obergrenze 30 Knoten für einen Ring definiert bekommen hat und der erste Knoten favorisiert wird, damit genau in dem Fall kleiner Netzwerke nur ein Ring entsteht. Wie in dem vorherigen Kapitel schon festgestellt, sind die Erstellungskosten eines alle Knoten umfassenden Ringes in kleinen Netzwerken noch niedrig. Dies sieht man auch 40 4.1 Durchschnittlicher Energieverbrauch daran, dass das WTRP nahe an ESTR und dem Etiquette-Protokoll bzgl. des Energieverbrauchs liegt. Das S-MAC ist dank der Schlafphase um den Faktor zwei beim Energieverbrauch besser als das 802.11 Protokoll, das T-MAC dank des Mechanismus des Timeoutintervalls besser als das S-MAC. Hier ist auch zu sehen, dass selbst in kleinen Netzen TDMA- und Token-basierte Verfahren einen Vorteil beim Energieverbrauch besitzen: ESTR und WTRP unterscheiden sich nur durch unterschiedliche Kosten für den Netzaufbau, die Steigung ist annähernd gleich, während das Etiquette-Protokoll den niedrigsten Energieabfall am Ende aufweisen kann. 4.1.2 Durchschnittliche Energieeffizienz bei Einsatz von 100 Sensorknoten In dem Bild 4.2, erstellt mit den Daten aus dem Test mit 100 Sensorknoten, sieht man, dass WTRP einen länger andauernden Aufbau benötigt, da dieser von der Anzahl an Knoten und damit von der Ringgröße abhängig ist. Abbildung 4.2: Energieeffizienz bei 100 Knoten Sowohl S-MAC als auch T-MAC haben einen größeren Energieverbrauch als bei 20 Knoten, da mehr Nachrichten geschickt und empfangen werden, z.B. in der Synchronisationsphase. ESTR und auch das Etiquette-Protokoll sind bzgl. Energieeffizienz kaum verändert, was allein daran liegt, dass ESTR - nicht wie WTRP - eine nicht verlängerte Initialisierungsphase besitzt. Die noch freien Knoten agieren dann wie Ringe der Größe eins, besitzen 41 4 Testreihen im Simulator NS2 aber auch eine Schlafphase. Insgesamt ist durch die Erhöhung der Knotenanzahl auch der durchschnittliche Energieverbrauch erhöht worden oder gleich geblieben. Das liegt daran, dass mehr Knoten Daten empfangen und dass z.B. bei T-MAC und S-MAC nun mehrere Cluster vorliegen können, deren Kommunikation miteinander einen Mehraufwand mit sich bringen. Diese folgen jeweils ihrem eigenen Synchronisator mit dessen Zeitplan. 4.1.3 Durchschnittliche Energieeffizienz bei Einsatz von 500 Sensorknoten Bei dem Test, der zu den Statistiken für Bild 4.3 führt, mit 500 Knoten sieht man, dass der Aufbau eines Ringes bei zunehmender Anzahl an Knoten überproportional viel Zeit kostet. Ein Netz mit 500 Knoten stellt schon ein großes Netz dar. Abbildung 4.3: Energieeffizienz bei 500 Knoten WTRP schafft es innerhalb der eingeplanten 300 Sekunden nicht, den Ring aufzubauen. Als Lösung für die Simulation laufen die Knoten dann analog wie bei ESTR eigenständig weiter. Bei einer Erhöhung der Initialisierungszeit auf 400 Sekunden würde der Ring immer noch nicht gebildet sein, da zu viele Knoten zum Zeitpunkt 300 Sekunden fehlen. Die Linie von WTRP ist weniger aus Energieeffizienzgründen interessant, da der Aufbau des Ringes weit mehr Zeit benötigt und damit keine Energie für den eigentlichen Kommunikationsablauf mehr vorhanden ist, als viel mehr als Indiz zu sehen, welche Ressourcen (Zeit und Energie) der Aufbau eines so großen Ringes benötigt. 42 4.2 Unterschiede im Energieverbrauch innerhalb eines Rings Der Energieeinbruch bei 300 Sekunden kommt nicht vom Protokoll selber, sondern weil die übrigen noch nicht im Ring aufgenommenen Knoten selber versuchen, einen Ring zu bilden. So kommt die große Anzahl noch nicht verbundener Knoten zustande. Bei 100 Knoten waren nach 150 Sekunden die Knoten zu dem Ring geformt, bei 500 Knoten nach 300 Sekunden nicht einmal ein Großteil von ihnen. Das Problem beim WTRP und bei der Errichtung eines Ringes ist, dass die Möglichkeit, einen neuen Knoten einzuladen, mit dem Token von Knoten zu Knoten innerhalb eines Ringes weitergegeben wird. Das führt dazu, dass bei zunehmender Größe des Ringes der Weg zu einem potentiellen neuen Ringmitglied immer weiter wird. Da die Mitglieder im Ring die Größe des Ringes wissen müssen, damit sie die Länge der Schlafphase berechnen können, muss nach Einbinden des letzten Mitgliedes noch einmal das Token herumgereicht werden. Bei einer Wachzeit von 0.25 Sekunden und 500 Knoten müsste das Token dazu noch 62.5 Sekunden wandern, allein um den Ringaufbau abzuschließen. Die zu erwartende Energieeffizienz bei gelungenem Abschluss ist groß. Leider hat man bei dem Aufbau des Ringes, bei dem die Knoten im wachen Zustand sein müssen, schon viel Energie verbraucht. Deswegen sind auch während der Ringaufbauzeit beim WTRP sowohl ESTR als auch das Etiquette-Protokoll sichtbar energieeffizienter, da während der Aufbauphase die Knoten nicht schlafen können und die Netzinitialisierung beim ESTR und Etiquette-Protokoll weit vor dem Ringaufbau beim WTRP abgeschlossen ist. Die große Anzahl an Knoten vermindert auch die Effizienz beim Ringaufbau des ESTR Protokolls, denn dadurch entstehen einerseits viele Kollisionen, die dazu führen, dass viele Nachrichten mehrfach geschickt werden und deswegen die Ringe großteils nicht in der Initialisierungsphase fertig werden. Andererseits wird mancher Ringbesitzer von Knoten eines fremden Ringes umgeben, so dass er keine neuen Mitglieder findet. Der Vorteil von ESTR aber ist, dass diese Knoten, die zu keinem Ring Anschluss gefunden haben, dann wie Knoten beim Etiquette-Protokoll an der Kommunikation teilhaben können und auch Schlafphasen besitzen. Deswegen hat ESTR keine höheren Kosten für den Aufbau, da es einfach nach der Initialisierungsphase prozentual gesehen weniger Knoten in Ringen hat als bei Tests mit weniger Knoten und die Initialisierungsphase nicht verlängert werden muss. Der am Anfang höhere Energieverbrauch von ESTR, gemessen am Energieverbrauch von WTRP, kommt daher, dass bei ESTR mehrere Knoten gleichzeitig versuchen Ringe aufzubauen, während beim WTRP nur ein Knoten gleichzeitig Einladungen verschickt und deswegen weniger Knoten Nachrichten empfangen und senden, was zu weniger Energieverbrauch führt. 4.2 Unterschiede im Energieverbrauch innerhalb eines Rings In diesem Unterkapitel wird darauf eingegangen, in wieweit das dynamische Schlafen den Unterschied im Energieverbrauch zwischen den einzelnen Knoten ausgleichen kann. Dafür wird jeweils ein einzelner Ring mit 30 Knoten unter Benutzung des ESTR, WTRP 43 4 Testreihen im Simulator NS2 und der übrigen Protokolle betrachtet. Falls ein Knoten schneller Energie verliert als seine Nachbarn, kann durch sein Ausscheiden aus dem Ring bzw. Netzwerk eine große Lücke entstehen. Seine Nachbarn müssen daraufhin einen Teil seiner Last mittragen und fallen deshalb auch bald aus. Daher wird hier sowohl der Knoten mit maximaler Energie sowie der mit minimaler Energie betrachtet, um Rückschlüsse über die Lebenszeit des Netzwerkes ziehen zu können. Abbildung 4.4: Energie des Energieminimums eines Netzwerkes In Bild 4.4 sieht man, dass das Etiquette-Protokoll, ESTR und T-MAC bzgl. des energieärmsten Knotens die besten Ergebnisse erzielt haben. Dabei wurde die Länge eines Zyklus von ESTR vergrößert. Das Verhältnis von Schlafphase zu Wachphase ist gleich geblieben, aber nun hat ESTR eine bessere Möglichkeit, mit Hilfe des dynamischen Schlafens die Energie innerhalb des Ringes auszugleichen. Falls es wenig Nachrichten zu verschicken gibt, ist eine mögliche Verbesserung, dass dieser Vorgang automatisch geschieht. Damit vermindert man auch die Zahl der NichtDaten-Sendungen wie z.B. das Versenden eines Token und spart so nochmals Energie. Da die anderen Protokolle keinen Mechanismus wie das dynamische Schlafen besitzen, bringt hier eine Erhöhung der Zyklenlänge nur eine Verringerung der Kontrollnachrichten mit sich, was keine große Auswirkungen hat. Denn laut der in der Einleitung erwähnten Statistik und der in NS2 festgehaltenen Energieverbrauchsdaten diese das Ergebnis nicht wesentlich ändern. Die Linien, die zu 802.11 und S-MAC gehören, liegen direkt aufeinander, weswegen die von S-MAC nicht direkt zu sehen ist. 44 4.2 Unterschiede im Energieverbrauch innerhalb eines Rings Auffallend ist, dass der Timeout von T-MAC dafür sorgt, dass die Energie des energieärmsten Knotens im Netzwerk mit T-MAC weniger stark fällt als die Energie des energieärmsten Knotens im Netzwerk mit S-MAC. Siehe dazu auch das Bild in Kapitel 4.1. Dort liegen die Linien für den Energieverbrauch von T-MAC und S-MAC näher beieinander und somit ist der Unterschied im Energieverbrauch auch kleiner. Bei der Linie vom ESTR ist auffallend, dass sie nach einer gewissen konstanten Zeit abrupt fällt und dann wieder eine Zeit lang auf konstantem Niveau bleibt. Zum Zeitpunkt, zu dem die Linie abfällt, beginnt der Knoten mit der geringsten Energie seine Wachphase und verbraucht seine Energie stärker, während er in seiner Schlafphase kaum Energie verbraucht. Da das WTRP kürzere Zyklen hat, fällt es kontinuierlicher und der energieärmste Knoten verbraucht seine Energie ohne die Reduzierung im Energieverbrauch wie ESTR durch das dynamische Schlafen. Man muss außerdem bedenken, dass das WTRP von einer längeren Aufbauphase ausgeht, da das WTRP in der hier verwendeten Form unabhängig von der Knotenanzahl nur von einem Ring ausgeht. Das hat zur Folge, dass nicht nur die Initialisierungsphase länger ist, sondern sich auch ein paar Stellen im Programm unterscheiden. Auffallend ist, dass nach 120 Sekunden das WTRP bzgl. der betrachteten Statistik noch besser ist als das ESTR. Erst durch die langen Schlafphasen des energieärmsten Knotens beim ESTR wird ESTR besser als WTRP. Ist EM in das Energieminimum zu einem Zeitpunkt und EM ax das Energiemaximum zu demselben Zeitpunkt, dann ist der Energiequotient EQuot = EM in /EM ax . Damit sieht man dann die relative Entfernung zwischen dem Minimum und Maximum der Energiewerte der Knoten. In Bild 4.5 ist der Verlauf der Energiequotienten der Netze mit den einzelnen MACProtokollen aufgetragen. Dabei sieht man, dass beim 802.11er Protokoll das Minimum fast immer gleich dem Maximum ist. Hier gehen die Knoten nie schlafen und die Anzahl an empfangenen und gesendeten Nachrichten ist für alle Knoten fast gleich. Am schlechtesten schneiden S-MAC und WTRP ab. Es ist zu vermuten, dass bei S-MAC der Synchronisatorknoten der Knoten mit der niedrigsten Energie ist und beim WTRP der Ringbesitzer. Da diese beiden am Anfang einen erhöhten Aufwand besitzen, haben sie nach der Initialisierungsphase weniger Energie als ihre Followerbzw. Ringmitglieder. Unter der Annahme, dass die Energie bei allen Knoten gleich abnimmt, der Unterschied aber bleibt, wächst der Energiequotient, da der Energieunterschied relativ gesehen zur noch vorhandenen Energie größer wird. Das Etiquette-Protokoll hat keinen ausgezeichneten Knoten und ESTR gleicht den anfänglichen Unterschied mit Hilfe des dynamischen Schlafens immer wieder ein wenig aus. So können diese beiden einen besseren Energiequotient aufweisen. T-MAC besitzt hier den besten Wert, der nahe an den Werten von ESTR und EtiquetteProtokoll liegt. Eine Erklärung für den Unterschied zu S-MAC ist, dass bei T-MAC die Energie nicht so schnell fällt wie beim S-MAC und deswegen der Energiequotient stabiler ist, auch wenn der Abstand zwischen EM in und EM ax gleich bleibt. 45 4 Testreihen im Simulator NS2 Abbildung 4.5: Energiequotienten 4.3 Pingpong Auch wenn der Energieverbrauch den Hauptgesichtspunkt des neuen Protokolls darstellt, so ist die Latenz der Pakete nicht uninteressant. Zum Beispiel ist sie wichtig innerhalb einer Anwendung, in der es zeitkritische Nachrichten gibt, wie das Verfolgen eines beweglichen Ziels, das sich durch ein mit Sensoren versehenes Gebiet bewegt. Getestet wurde mit dem Pingpong-Verfahren (siehe auch Bild 4.6): dabei wird eine Nachricht von Knoten A zu Knoten B geschickt und dieser schickt die Nachricht zu wieder Knoten A zurück. Die gesamte Zeit für diesen Vorgang benötigte wird dabei gemessen. Analog dazu verhält sich der bekannte Windowsbefehl ping“. ” Besonders bei Ringstrukturen, bei welchen die Nachrichten zwischen zwei physisch benachbarten Knoten oft alle Knoten eines Ring passieren müssen, wenn sie von einem Knoten an seinen Vorgänger geschickt werden müssen, ist dieses Verfahren aussagekräftiger als das Messen der Latenz von einzelnen Paketen. Bei den meisten anderen Strukturen ist die Übertragungsdauer der Nachricht von Knoten A zu Knoten B in der gleichen Größenordnung wie die Übertragungsdauer der Nachricht von Knoten B zu Knoten A. Will man aus der Zeit für einen Pingpong dann die ungefähre Latenz errechnen, muss man also nur die ermittelte Zeit halbieren. Bei dem Test wurden nur 30 Knoten verwendet, so dass ESTR mit einem Ring alle 46 4.3 Pingpong Abbildung 4.6: Pingpong zweier Knoten Knoten abdecken kann. Damit steht das Ergebnis von ESTR auch stellvertretend für WTRP, da der einzige Unterschied, die dynamischen Schlafphasen, nicht ins Gewicht fällt. Weiterhin wurden noch als Vertreter der anderen Protokolle S-MAC und 802.11 getestet. 802.11 hat keine Schlafphasen und deswegen hat es, wie in Abbildung 4.7 zu sehen, die anderen beteiligten Protokolle mit großem Abstand bzgl. benötigter Zeit übertroffen. Das erste Diagramm zeigt die Statistik in einem kleineren Maßstab, das zweite in einem größeren, damit man den Wert, den 802.11 benötigt abschätzen kann. Sowohl S-MAC als auch ESTR haben eine benötigte Zeit in der Größenordnung von Sekunden, während die vom 802.11 Protokoll im Bereich von Millisekunden liegt. Bei ESTR erklärt sich diese Zeit mit dem Durchlauf durch den Ring. Die benötigte Zeit stellt praktisch einen oder zwei Zyklen dar (je nachdem, ob die Nachricht gerade versendet werden muss, wenn der Anfangsknoten für den Pingpong schlafen gegangen ist oder ob der Knoten kurz vor dem geweckt werden ist). Ein Zyklus besteht, wie in vorherigen Kapitel schon gesagt, aus Schlafphase und Wachphase. Bei S-MAC und unter Verwendung der vorgegebenen Einstellungen, die für den Energieverbrauch optimal waren, sind die Slots, in denen gesendet werden kann, klein, so dass sich das Versenden von Nachrichten über mehrere Wachphasen aufteilt. Vergrößert man aber diese Slots, könnte es sein, dass gerade dann eine Nachricht gesendet werden kann, wenn die Knoten schlafen. Dann muss der Knoten mit dem Versenden der Nachricht warten und die Zeit für den Pingpong wird sich verlängern. Ein optimales Ergebnis wird hier durch leichte Erhöhung des Parameters dutycycles“ erreicht, welcher die Größe ” eines Zyklus bestimmt. Auch können Knoten bei S-MAC verschiedenen Schedules angehören, was bedeutet, dass die Startzeitpunkte ihrer Schlaf-und Wachphasen nicht deckungsgleich sind. Das erhöht ebenfalls die benötigte Zeit für eine Übertragung. 47 4 Testreihen im Simulator NS2 Abbildung 4.7: Pingpong-Zeit bei weit entfernte Knoten Es muss aber beachtet werden, dass dabei weit entfernte Knoten verwendet wurden. Für ESTR ändert sich bei näher liegenden Knoten nichts, da die Nachricht auf dem Rückweg noch den Rest vom Ring ablaufen muss. Bei den anderen zwei Protokollen dagegen vermindert sich bei einem Pingpong mit einem benachbarten Knoten die benötigte Zeit sehr stark, wie in Bild 4.8 zu sehen. Dabei wird bei ESTR wieder ein Durchlauf der Nachricht durch den Ring gemessen. Die Zeit für einen Pingpong hat sich auf ungefähr ein Drittel bei S-MAC und 802.11 verkürzt, während sie bei ESTR gleich geblieben ist, da hier wieder der gesamte Ring durchwandert werden muss. Bei S-MAC und ESTR hat das Vermindern des Energieverbrauchs eine Erhöhung der Latenz mit sich geführt, die sich beim ESTR stärker auswirkt als beim S-MAC. 48 4.3 Pingpong Abbildung 4.8: Pingpong-Zeit bei nahe liegende Knoten 49 4 Testreihen im Simulator NS2 50 5 Implementierung des ESTR für die Berliner Motte Im weiteren Verlauf wird das ESTR-Protokoll auf dem Sensorboard Berliner Motte“ ” implementiert und im ersten Szenario dessen Energieverbrauch bei Benutzung von ESTR mit dem Energieverbrauch unter Benutzung von 802.11 verglichen. In einem zweiten Szenario wird die Fähigkeit getestet, zwischen zwei Ringen Daten auszutauschen. 5.1 ESB 430 Das Embedded Sensor Board 430 (ESB 430) - die so genannte Berliner Motte“, abge” bildet auf Bild 5.1 - wurde an der FU Berlin entwickelt. Abbildung 5.1: Sensorboard Berliner Motte[22] Auf der Platine des Sensorboards befindet sich der von Texas Instruments hergestellte Mikrocontroller MSP 430, der die Funkmodule, Erschütterungs- und Lichtsensoren sowie die übrigen Bauteile auf der Platine steuert. Dazu hat das Sensorboard einen seriellen Anschluss und einen JTag-Flash Anschluss, die benutzt werden, damit auf einem PC Daten der Motte ausgegeben werden können bzw. ein Programm nach dem Kompilieren auf die Motte übertragen und gestartet werden kann. 51 5 Implementierung des ESTR für die Berliner Motte Der MSP 430 hat einen sehr geringen Energiebedarf und das ESB 430 ist in der Lage, seinen Energiebedarf zu reduzieren, indem es in einen von vier verschiedenen Schlafmodi wechselt. Während das Sensorboard sich in einem Schlafmodus befindet, sind nicht alle Bauteile des Sensorboards aktiviert. Das spart erheblich Energie. Das macht das ESB 430 ideal für Anwendungen, die einerseits möglichst lange mit Batterie oder Akkumulatoren laufen müssen und andererseits Schlafphasen benutzen können. Das ESB 430 hat im Forschungsbereich zahlreiche Verwendungen, z.B. innerhalb des Projektes Scatterweb an der FU Berlin [21]. Im Gegensatz zu einer neueren Art von Sensorboard, dem MSB 430, siehe auch [20], sind alle Bausteine beim ESB 430 bereits fest auf der Platine installiert und können nicht modulartig abgenommen bzw. aufgesteckt werden. Mit diesen Sensorboards werden zwei Szenarien durchgeführt, um die Funktionsfähigkeit des Protokolls mit echter Hardware zu evaluieren. Szenario 1 dient weiterhin dazu, eine simple Messung bzgl. Energiebedarf durchzuführen und mit den Ergebnissen von NS2 zu vergleichen. 5.2 Ein-Ring-Szenario 5.2.1 Szenario In diesem Szenario schließen sich drei Knoten zu einem Ring zusammen, wobei durch die im Programm festgelegten Parameter Knoten 1 als Ringbesitzer wahrscheinlich ist. Die Ringstruktur sieht dann beispielsweise wie in Abbildung 5.2 aus. Dabei kann auch Knoten 2 mit Knoten 3 die Position tauschen, abhängig davon, welcher der beiden zuerst auf die SOLSUC-Nachricht von Knoten 1 antwortet. Knoten 2 generiert alle 96 Sekunden eine Text-Nachricht, die an Knoten 3 geschickt werden soll. Knoten 3 wird alle 96 Sekunden eine Nachricht erzeugen und diese an Knoten 2 schicken, so dass im Ring mindestens einer der beiden Nachrichtenflüsse über Knoten 1 läuft. Neben dem Ring, der durch ESTR aufgebaut wird, wird noch ein einfaches Protokoll getestet, das keine Schlafphasen benutzt. Bei Empfang einer Nachricht wird eine ACK-Nachricht zurückgegeben, ansonsten hat dieses einfache Protokoll keine zusätzlichen Kosten wie Aufbau eines Ringes oder große Anzahl an Kontrollnachrichten. Wegen einer zeitlichen Verschiebung des Datenaustausches können auch ohne weitere Funkquellen keine Kollisionen auftauchen. Knoten 1 wird mit drei AAA-Akkumulatoren betrieben, deren Energieniveau von der Motte periodisch ausgelesen und über einen seriellen Anschluss auf der Kommandozeile ausgegeben wird. Ebenfalls auf der Kommandozeile ausgegeben werden diverse Statusmeldungen zur Überprüfung. Da bei ESTR der Zyklus so lang ist, dass in der Zeit sechs Nachrichten bei dem einfachen Protokoll pro Sender verschickt werden, werden bei ESTR die Nachrichten pufferartig einmal bei Erwachen verschickt. Bis auf RTS/CTS-Verfahren und CSMA/CA (wobei letzteres von der Firmware ausgeführt wird), ist dabei das einfache Protokoll eine Kopie des 802.11 Protokolls. Durch 52 5.2 Ein-Ring-Szenario Abbildung 5.2: Real-Life-Szenario mit einem Ring den Wegfall der zusätzlichen Pakete benötigt das Protokoll weniger Energie, da Kollisionen durch die periodischen zeitlich versetzten Zugriffe auf das Medium ausgeschlossen sind. Weitere Funkquellen sind nicht in der Nähe angebracht. 5.2.2 Messung Bei dieser Messung innerhalb des ersten Szenarios wurde der Energiestand der verwendeten Akkus über eine Zeit lang periodisch ausgelesen und in Tabelle 5.1 eingetragen, wobei die Zahlen unter ESTR und MAC 802.11 jeweils den Energiestand der Akkumulatoren zu dem jeweiligen Zeitpunkt darstellen, gemessen in Milliampere per Hour(mAh). Ringbesitzer war bei der Testdurchführung jeweils Knoten 1. Programmtechnisch wird dabei aus einem Struct sensorData“ der Wert batteryValue“ ” ” ausgelesen, wobei dieser Wert aus der Firmware stammt, die von dem eigenen Programm benutzt wird. Da bei den Messungen für beide Protokolle (siehe Absatz 5.3) deutliche Schwankungen auftreten und beim ESTR die Anfangsenergie sogar niedriger als die Endenergie der Akkumulatoren ist, sind die Ergebnisse aus den NS2-Tests zu bevorzugen. Diese besitzen keine Messungenauigkeit, auch wenn sie nur auf einem abstrakten Modell beruhen. Wenn man nun den Energieverbrauch ab dem Zeitpunkt 01:13:59 betrachtet, so sieht man, dass ESTR einen Verbrauch von 14 mAh bis Ende der Messung hat und das einfache Protokoll einen Energieverbrauch von 28 mAh besitzt. Wenn man von den ersten Messergebnissen absieht, die sehr stark schwankten, so sieht man, dass die Kurve des Energiestandes der ersten Motte, die ESTR benutzte, langsamer 53 5 Implementierung des ESTR für die Berliner Motte Zeit ESTR 00:00:00 00:00:12 00:00:47 00:01:06 00:23:38 00:30:48 00:37:58 00:45:12 00:52:22 00:59:35 01:06:46 01:13:59 01:21:09 01:28:22 01:35:33 01:42:45 01:49:58 01:57:08 02:04:21 02:11:31 02:18:45 02:25:54 02:33:08 02:40:17 02:47:31 02:54:41 03:01:55 2266 2271 2255 2262 2265 2312 2293 2303 2303 2296 2287 2291 2288 2288 2288 2272 2292 2290 2285 2288 2285 2288 2288 2287 2279 2275 2277 MAC 802.11 2273 2273 2273 2250 2260 2260 2260 2264 2249 2255 2240 2260 2243 2250 2246 2244 2238 2234 2233 2243 2247 2236 2244 2239 2242 2241 2232 Tabelle 5.1: Messergebnisse im Real-Life Test 54 5.2 Ein-Ring-Szenario fällt als die Kurve des Energiestandes unter der Benutzung des einfachen Protokolls. Obwohl die Länge der Schlafphase bei einem Ring der Größe drei gering ist, so ist also der Energieverbrauch im betrachteten Bereich bei ESTR sichtbar niedriger als bei dem einfachen Protokoll. Abbildung 5.3: Messergebnisse beim Real-Life-Test Bei drei Knoten beträgt die Länge der Schlafphase bei dieser ESTR Implementierung: 1/3 ∗ 1.5 = 50%. Mit jedem weiteren Knoten steigt die Länge der Schlafphase und damit wird die Menge der verbrauchten Energie reduziert. Die Länge eines Zyklus von ESTR wird bei so wenig Knoten erhöht, da eine hohe Frequenz des Aufwachens und Schlafengehens der Sensorboards den Energiebedarf erhöht, auch weil die Anzahl an Kontrollnachrichten pro Zeiteinheit zunimmt. 55 5 Implementierung des ESTR für die Berliner Motte 5.2.3 Probleme • Die Messung ist wie oben zu sehen ungenau und schwankt teilweise, was dazu führt, dass manche Messpunkte als Ausreißer betrachtet werden müssen und ein geeigneter Zeitraum innerhalb der Messung gesucht werden muss. • Da das ESB 430 sehr energiesparend ist, kommt es dazu, dass der Energieverbrauch nicht so deutlich zu sehen ist, wie es wünschenswert und mit weniger energiesparenden Sensorboards möglich ist. • Verschiedene Motten messen unterschiedlich gut die Energie in den Akkumulatoren. Deshalb müssen die Tests für die beiden Protokolle mit dem selben Sensorboard durchgeführt werden, damit die Messung für beide Protokolle mit gleicher Genauigkeit vorgenommen werden kann. • Bei wenigen Versuchsdurchführungen haben sich Variablen auf der Motte geändert, ohne dass das Programm darauf zugegriffen hat. Dabei wird der Wert von Variablen teilweise um 2000-30000 reduziert. Dies geschieht selten, aber doch merklich und immer zufällig. Schlimme Auswirkung hat dies, falls es eine Timervariable innerhalb der Synchronisationsphase betrifft. • Ab 2150 mAh ereignet sich ein Leistungsabfall der Motte, was dazu führt, dass die vom Sensorboard über den seriellen Anschluss verschickten Daten nicht immer zu lesen sind. Das führt dazu, dass manche dieser Zeichen weder Ziffern nicht Zahlen sind. 5.3 Zwei Ringe Szenario 5.3.1 Szenario In diesem Szenario werden sechs Sensorboards benutzt und die maximale Ringgröße wird auf drei festgesetzt, woraus sich ergibt, dass es minimal zwei Ringe gibt. Da auch einzelne Knoten einen Ring bilden können, zeigt das Bild 5.4 nur einen möglichen Szenarioaufbau. Beim Ablauf wird einem Knoten eines Ringes, der nicht den Knoten 1 enthält, von Knoten 1 eine Nachricht geschickt. Damit ein bestimmter Knoten in einem anderen Ring sich befindet, baut man die Ringe zeitlich versetzt auf und legt die Adresse des Zielknotens der Datenpakete von Knoten 1 statisch im Programm fest. Die von Knoten 1 empfangenen Pakete werden über den seriellen Port geschickt und auf einem Rechner ausgegeben, so auch die ACK-Nachricht des Knotens aus dem anderen Ring. Auf diese Weise wird kontrolliert, dass die Datenpakete im anderen Ring ankommen. Dadurch wird die Ring-Ring-Übertragung mit den Sensorboards getestet. Da unter normalen Umständen die beteiligten Ringe größer und meist auch die Frequenz an Nachrichten niedrig ist, existieren unter diesen Umständen wenige Ring zu Ring Nachrichten, 56 5.3 Zwei Ringe Szenario Abbildung 5.4: Real-Life-Szenario mit mehreren Ringen im Gegensatz zu dem hier beschriebenen Szenario. Da der Knoten 1 - sobald der Sendepuffer frei ist und er aufwacht - Nachrichten für den Empfängerknoten generiert, wird Knoten 1 die ganze Zeit wach sein. Also ist der zu erwartende Energieverbrauch für diesen Knoten wie bei dem einfachen, oben erwähnten Protokoll. Für die restlichen Knoten ist der Verbrauch wie bei ESTR in Szenario 1. 5.3.2 Probleme Neben den aus Szenario 1 bereits bekannten Problemen gibt es hier noch weitere. Knoten 1 wartet nach dem Empfang der Idle-Nachricht des Empfängers eine Zeit, bevor er die Daten schickt. So kann es sein, dass die Nachrichten nicht mehr eintreffen, bevor der Empfänger schlafen geht, falls sich zusätzlich Kollisionen ereignen. Weitere Schwierigkeiten sind die Kollisionen, die auf Grund der geringen Distanz der Ringe zu einander sowie der kleinen Größe der Ringe auftreten und die Kommunikation innerhalb der beiden Ringe betreffen. Die Auswirkungen dieser Kollisionen zeichnen sich nur dadurch aus, dass manche Kontrollnachrichten mehrfach verschickt werden müssen und somit der Energieverbrauch steigt. Der Ablauf des Protokolls verändert sich nicht. 57 5 Implementierung des ESTR für die Berliner Motte 58 6 Zusammenfassung und Ausblick 6.1 Zusammenfassung In dieser Diplomarbeit wurde ein neues Kommunikationsprotokoll auf MAC-Ebene entworfen, das besonders auf Sensornetzwerke und einen möglichst ausgeglichenen und geringen Energieverbrauch ausgerichtet ist. Hierbei lag das Hauptaugenmerk auf Anwendungen, die lange Zeit ohne Festnetzstrom laufen müssen und nur geringe Datenmengen auszutauschen haben, sowie keinen Anspruch auf schnelle Übertragungszeit besitzen. Es ist nicht nur die Summe des Energieverbrauchs aller Knoten wichtig, sondern auch, dass der Energieverbrauch möglichst gleichmäßig verteilt wurde. Damit wird der Ausfall von Knoten, die gerade zu anderen Ringen Verbindungen haben und deswegen für den Zusammenhalt des gesamten Sensornetzes wichtig sind, hinausgeschoben. Dieses Protokoll wurde sowohl für den Simulator NS2 als auch für das Sensorboard Ber” liner Motte“ implementiert und es wurden mehrere Tests und Vergleiche mit den im Kapitel 2 vorgestellten Kommunikationsprotokollen für Sensornetzwerke durchgeführt. Dabei sieht man, dass die Token- und TDMA-basierten Protokolle im Allgemeinen einen niedrigeren Energieverbrauch als die Contention-basierten Protokolle haben. In den NS2 Tests haben ESTR und das Etiquette-Protokoll den niedrigsten Verbrauch an Energie. Dabei hat das Etiquette- Protokoll den Vorteil, weniger Nachrichten als Overhead zu haben, da ESTR im Gegensatz zum Etiquette-Protokoll zusätzlich zu den IDLE- bzw. Announcement-Nachrichten noch Pakete für Ringaufbau bzw. Tokenweitergabe versenden muss. Dafür ist das Risiko von Kollisionen bei ESTR geringer, da hier durch die starre Ringstruktur, die mehrere Knoten zusammenfasst, weniger Knoten gleichzeitig einen Sendewunsch haben. Je größer die Ringstruktur ist, umso weniger muss auch auf Knoten aus fremden Ringen gewartet werden, da die Wahrscheinlichkeit, dass der Empfängerknoten sich im gleichen Ring wie der Senderknoten befindet, größer wird. Auf der anderen Seite steigt durch die Größe der Ringe auch die notwendige Zeit für den Aufbau der Ringe, so dass je nach Anwendung die einzelnen Parameter des Protokolls abgewogen werden müssen. Mit dem ESTR liegt ein Kommunikationsprotokoll vor, das flexibel dem erwarteten Durchsatz und Energieverbrauch über die maximale Größe der einzelnen Ringe angepasst werden kann und das durch die Nutzung von Schlafphasen Energie spart. Weiterhin werden innerhalb des Ringes die Länge der Schlafphasen derart angepasst, dass Knoten mit bisher größerem Verbrauch eine kurzzeitige Vergrößerung ihrer Schlafphase erhalten, so dass innerhalb eines Ringes ein interner Energieausgleich stattfinden kann. 59 6 Zusammenfassung und Ausblick 6.2 Ausblick Da bei dem ESTR Protokoll Knoten öfter auf Knoten aus einem anderen Cluster warten, bietet sich an, in dieser Zeit die weiterzusendenden Pakete - so es das Projekt erlaubt - zu aggregieren, d.h. die Daten gegebenenfalls schon weiterzuverarbeiten und zusammenzufassen. So erhält man von dem Umstand, dass der Knoten wach ist, noch einen weiteren Vorteil. Außerdem kann man versuchen, durch Synchronisation der Ringe das Zeitfenster für die Kommunikation in mehrere Teile aufzuteilen, deren Anzahl größer oder gleich der maximalen Anzahl an benachbarten Ringen ist. Dadurch ist jeder Ring in der Lage, dass er innerhalb seines Zeitfensters sendet und das Kollisionsrisiko vermeidet bzw. verringert. Falls sich der benötigte maximale Durchsatz innerhalb des Netzwerkes im Laufe der Zeit bei einer Anwendung ändert, ist eine dynamische Anpassung der maximalen Netzwerkgröße einer Überlegung wert. Allerdings ergeben sich hierbei erneute Kosten für das Errichten neuer Ringe. 60 Abbildungsverzeichnis 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 ISO/OSI-Modell . . . . . . . . . . . . . . . . . Austausch von RTS- und CTS-Paketen . . . . . Die einzelnen Phasen eines Knotens in S-MAC Adaptive Listen bei S-MAC . . . . . . . . . . . Timeout bei T-MAC . . . . . . . . . . . . . . . early sleeping Problem bei T-MAC . . . . . . . FRTS-Nachrichtenaustausch bei T-MAC . . . . Halten von Office Hours bei Etiquette-Protokoll Verschicken von Daten bei Etiquette-Protokoll Beitritt zu einem Token Ring . . . . . . . . . . 3.1 3.2 3.3 3.4 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 15 17 18 19 20 21 22 23 25 Eulerscher Kreis . . . . . . . . . . . . . . . . . . . Struktur mehrerer mit einander verbundener Token Tokenweitergabe bei ESTR-Protokoll . . . . . . . . Zustandsdiagramm der MAC-Schicht bei ESTR . . Abschnitte der Wachphase bei ESTR . . . . . . . . . . . . Ringe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 34 35 36 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Energieeffizienz bei 20 Knoten . . . . . . . . . . Energieeffizienz bei 100 Knoten . . . . . . . . . Energieeffizienz bei 500 Knoten . . . . . . . . . Energie des Energieminimums eines Netzwerkes Energiequotienten . . . . . . . . . . . . . . . . Pingpong zweier Knoten . . . . . . . . . . . . . Pingpong-Zeit bei weit entfernte Knoten . . . . Pingpong-Zeit bei nahe liegende Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 41 42 44 46 47 48 49 5.1 5.2 5.3 5.4 Sensorboard Berliner Motte[22] . . . . . Real-Life-Szenario mit einem Ring . . . Messergebnisse beim Real-Life-Test . . . Real-Life-Szenario mit mehreren Ringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 53 55 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Abbildungsverzeichnis 62 Literaturverzeichnis [1] Wei Ye, John Heidemann, Deborah Estrin: An Energy-Efficient MAC Protocol for Wireless Sensor Networks, In Proceedings of the 21st International Annual Joint Conference of the IEEE Computer and Communications Societies (INFOCOM), Vol.3, pp. 1567-1576, New York, NY, USA, June, 2002 [2] Wei Ye, John Heidemann, Deborah Estrin: Medium Access Control With Coordinated Adaptive Sleeping for Wireless Sensor Networks, IEEE/ACM Transactions on Networking, Vol. 12, No. 3, pp. 493-506, June 2004 [3] LAN MAN Standards Committee of the IEEE Computer Society. IEEE Std 802.111999, Part11:Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications. IEEE, 1999 [4] Tijs van Dam, Koen Langendoen: An Adaptive EnergyEfficient MAC Protocol for Wireless Sensor Networks [5] Samir Goel,Tomasz Imielinski: Etiquette Protocol for Ultra Low Power Operation in Sensor Networks [6] Samir Goel: Etiquette Protocol for Ultra Low Power Operation in Energy Constrained Sensor Networks [7] W. R. Heinzelman, A. Chandrakasan, H. Balakrishnan: Energy-Efficient Communication Protocol for Wireless Mikrosensor Networks [8] LAN/MAN Standards Committee of the IEEE Computer Society. IEEE 802.5v2001, IEEE Standard for Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific requirements Part 5: Token Ring access method and Physical Layer specifications Amendment 5: Gigabit Token Ring operation, 2001 [9] LAN/MAN Standards Committee of the IEEE Computer Society, Information processing systems-Local area networks-Part 4: Token-passing bus access method and physical layer specifications, International Standard ISO IEC 8802-4:1990, ANSI/IEEE Std. 802.4-1990. [10] Dr. M. Ergen, D. Lee, R. Sengupta, and P. Varaiya, WTRP - Wireless token ring protocol, 2004 63 Literaturverzeichnis [11] Dr. M. Ergen, D. Lee, R. Datta, J. Ko, A. Puri, R. Sengupta, P. Varaiya, Comparison of Wireless Token Ring Protocol with IEEE 802.11, 2003 [12] M. Ergen: WTRP - Wireless Token Ring Protocol, thesis for Master of Science, 2002 [13] Zhenhua Deng, Yan Lu, Chunjiang Wang, Wenbo Wang, E 2 W T RP : An energyefficient wireless token ring protocol, in Proceeding of the IEEE conference on Personal, Indoor, and Mobile Radio Communications, vol. 1, Sept. 2004 [14] MSP430. Texas instruments MSP430 microcontroller family. http://focus.ti.com/docs/prod/folders/print/msp430f149.html Last visit August 2007. [15] Texas Instruments. User’s guide for the micro controller MSP430F149 from Texas Instruments. http://focus.ti.com/lit/ug/slau049f/slau049f.pdf. [16] K. Langendoen, G. Halkes: Energy-Efficient Medium Access Control [17] EnOcean. Technologie Überblick. http://www.enocean.de/indexdnc6.html [18] Mark Stemm, Randy H. Katz : Measuring and reducing energy consumption of network interfaces in hand-held devices, IEICE Transactions on Communications, vol. E80-B, no. 8, pp. 1125-1131,Aug. 1997. [19] NS2-Homepage: http://www.isi.edu/nsnam/ns/ [20] Scatterweb-Homepage: http://www.scatterweb.com [21] ESB430 auf der Homepage der FU Berlin: http://www.inf.fu-berlin.de/inst/agtech/scatterweb net/hardware/esb/index.html [22] FU Berlin, Document from the Hannover Messe 2004: http://www.inf.fuberlin.de/inst/ag-tech/scatterweb net/documents/ScatterWeb-HannoverMesse-042004.pdf 64 Hiermit erkläre ich, Robert Hofer, dass ich die vorliegende Arbeit selbstständig verfasst und keine anderen Hilfsmittel als die angegebenen verwendet habe. Die Stellen der Arbeit, die anderen Werken dem Wortlaut oder dem Sinn nach entnommen sind, wurden in jedem Fall unter Angabe der Quelle kenntlich gemacht. Mertingen, 02.08.2007 65