22.02.2013 Aufrufe

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Technische</strong> <strong>Universität</strong> <strong>Ilmenau</strong><br />

<strong>Fakultät</strong> <strong>für</strong> <strong>Elektrotechnik</strong> <strong>und</strong> Informationstechnik<br />

Diplomarbeit<br />

Entwurf <strong>und</strong> Implementierung einer Testumgebung zur<br />

Anbindung von Sensornetzwerken an IP-basierte<br />

Kommunikationssysteme<br />

vorgelegt von: André Hesse<br />

eingereicht am: 30. 03. 2006<br />

geboren am:<br />

Studiengang: Medientechnologie<br />

Studienrichtung: Audiovisuelle Technik<br />

Anfertigung im Fachgebiet: Kommunikationsnetze<br />

<strong>Fakultät</strong> <strong>für</strong> <strong>Elektrotechnik</strong> <strong>und</strong> Informationstechnik<br />

Verantwortlicher Professor: Prof. Dr. rer. nat. habil. Jochen Seitz<br />

Wissenschaftlicher Betreuer: Dipl.-Ing. Florian Evers


Danksagung<br />

Während der Ausarbeitung dieser Diplomarbeit konnte ich auf die Hilfe vieler Personen<br />

zurück greifen.<br />

Zu allererst gilt mein großer Dank meinem Betreuer Herrn Dipl.-Ing Florian Evers<br />

<strong>für</strong> die exzellente Unterstützung. Seine konstruktiven aber auch kritischen Anmerkung<br />

haben zum Gelingen dieser Arbeit in großem Maße beigetragen.<br />

Herrn Prof. Dr. rer. nat. habil. Jochen Seitz, der nicht nur diese Diplomarbeit, son-<br />

dern auch das Hauptseminar <strong>und</strong> mein Medienprojekt betreute, danke ich <strong>für</strong> die<br />

Vergabe dieses spannenden Themas.<br />

Frau Daniela Steffen <strong>und</strong> Herrn Björn Sörensen danke ich <strong>für</strong> die kritische Durchsicht<br />

meiner Diplomarbeit. Ihr habt viele Rechtschreibfehler abgefangen, die mir erst bei<br />

einer späteren Durchsicht aufgefallen wären. Habt vielen Dank.<br />

Frau Birthe Tralau hat mich nicht nur durch den besten Kaffee immer wieder moti-<br />

vieren können. Ich freu mich schon auf den nächsten 1. Januar.<br />

Meiner Fre<strong>und</strong>in Yvonne möchte ich <strong>für</strong> ihr großes Verständnis während den letzten<br />

Wochen danken. In den Nachtschichten während der Bearbeitung dieser Arbeit hat sie<br />

oft auf mich verzichten müssen. Wir holen das alles nach. Bestimmt.<br />

Meiner Schwester Angela, ihrem Mann <strong>und</strong> der kleinen Jelena danke ich <strong>für</strong> ihre<br />

liebenswürdige Art.<br />

I also would like to thank Prof. Nigel Davies at Lancaster University, who supported<br />

me during my year abroad. I’m really exited doing a PhD with you guys at Infolab. I<br />

also trained my pool.<br />

Ein besondere Dank geht an meine Mutter, Frau Elke Hesse. Ohne ihre beständige<br />

Arbeit wäre mein schulischer Werdegang nicht möglich gewesen. Viele Ziele hätte ich<br />

so nicht erreichen können. Danke, dass Du immer an mich glaubst.


Kurzfassung<br />

Auf dem Gebiet drahtloser Sensornetzwerke wird seit einiger Zeit sehr viel Forschungs-<br />

arbeit geleistet. Diese Sensornetzwerke sind auf die verteilte Datenerfassung speziali-<br />

siert.<br />

Oft werden neue Übertragungstechniken eingesetzt. Im Rahmen der Hausautomati-<br />

sierung fallen in Sensornetzwerken nur geringe Datenmengen an, weshalb die Verwen-<br />

dung von etablierten, aber stark energiebedürftigen Technologien wie Bluetooth oder<br />

WLAN selten umgesetzt wird: Sensorknoten sollen mehrere Monate oder Jahre mit<br />

einer Batterie oder Akkumulator-Ladung auskommen. Das IP-Protokoll, der Quasi-<br />

Standard im Internet, wird von den meisten Sensornetzwerken nicht unterstützt, da<br />

dessen Nutzung die Rechenkapazität der eingesetzten Sensorknoten überfordert.<br />

Diese Arbeit beschäftigt sich mit der Kopplung eines Sensornetzwerkes an ein IP-<br />

Netzwerk, um die Nutzung vorhandener Computertechnik zur Steuerung des Sensor-<br />

netzwerkes zu ermöglichen. Dabei wurde der Einsatz eines ” transparenten Proxyser-<br />

vers“ gewählt. Dieser nimmt eine Protokollumsetzung zwischen beiden Technologien<br />

vor. Außerdem wird die direkte Adressierung eines Sensorknotens mit einer IP-Adresse<br />

unterstützt.


Inhaltsverzeichnis i<br />

Inhaltsverzeichnis<br />

1 Problemstellung 1<br />

1.1 Sensoren, überall... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme 2<br />

2 IP-basierte Kommunikationssysteme 5<br />

2.1 Das Internet-Referenzmodell . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.2 Das IP-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.2.1 Adressierung im Internet Protokoll . . . . . . . . . . . . . . . . 11<br />

2.2.2 Routing in IP-Netzwerken . . . . . . . . . . . . . . . . . . . . . 12<br />

2.2.3 Klassenbasierte Adressierung . . . . . . . . . . . . . . . . . . . . 16<br />

2.2.4 Classless Interdomain Routing (CIDR) . . . . . . . . . . . . . . 17<br />

2.3 Transmission Control Protocol TCP . . . . . . . . . . . . . . . . . . . . 18<br />

2.4 Network Address Translation NAT . . . . . . . . . . . . . . . . . . . . 21<br />

2.5 Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

2.6 Transparenter Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

3 Sensornetzwerke 29<br />

3.1 Historische Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.2 Einsatz von drahtlosen Sensornetzwerken . . . . . . . . . . . . . . . . . 31<br />

3.3 Besondere Sprachregelung bei Verwendung des Begriffes ” drahtloses Sen-<br />

sornetzwerk“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3.4 Beispiele <strong>für</strong> drahtlose Sensornetzwerke . . . . . . . . . . . . . . . . . . 32<br />

3.5 ZigBee als drahtlose Übertragunstechnik in Sensornetzwerken . . . . . 33<br />

3.5.1 Koordination in ZigBee-Netzwerken . . . . . . . . . . . . . . . . 34<br />

3.5.2 Unterstützte Netztopologien . . . . . . . . . . . . . . . . . . . . 35<br />

3.5.3 Adressierung in ZigBee-Sensornetzwerken . . . . . . . . . . . . . 36<br />

3.5.3.1 IEEE-Adresse . . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.5.3.2 NWK-Adresse . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.5.3.3 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

Diplomarbeit André Hesse


ii Inhaltsverzeichnis<br />

3.5.4 Profilunterstützung in ZigBee . . . . . . . . . . . . . . . . . . . 40<br />

4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme 41<br />

4.1 Mögliche Ansätze zur Kopplung . . . . . . . . . . . . . . . . . . . . . . 42<br />

4.1.1 Implementierung der TCP/IP-Suite in Sensornetzwerke . . . . . 44<br />

4.1.2 Protokollumsetzer . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

4.1.2.1 OSGi-Alliance . . . . . . . . . . . . . . . . . . . . . . 46<br />

4.1.2.2 TinyOS <strong>und</strong> TinyDB . . . . . . . . . . . . . . . . . . . 48<br />

4.2 Nutzung eines Transparenten Proxyservers zur Kopplung . . . . . . . . 49<br />

4.2.1 Umsetzung eines transparenten Proxyservers mit Linux . . . . . 52<br />

4.2.2 Die Adressinformationen eingehender Verbindungen manipulieren 55<br />

4.2.3 Die Adressinformationen ausgehender Verbindungen manipulieren 56<br />

5 Der Prototyp 59<br />

5.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

5.1.1 Vorbetrachtungen zum Prototypen . . . . . . . . . . . . . . . . 60<br />

5.1.1.1 ZigBee-Profil-Unterstützung . . . . . . . . . . . . . . . 60<br />

5.1.1.2 Adressierung im Prototyp . . . . . . . . . . . . . . . . 62<br />

5.1.1.3 Nutzung von XML . . . . . . . . . . . . . . . . . . . . 63<br />

5.1.1.4 XML-Verarbeitung . . . . . . . . . . . . . . . . . . . . 65<br />

5.1.1.5 Authentifizierung im Prototypen . . . . . . . . . . . . 65<br />

5.2 Der Proxyserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

5.2.1 AddressBook . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

5.2.2 AuthManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

5.2.3 Die Manager <strong>und</strong> Connectoren . . . . . . . . . . . . . . . . . . . 72<br />

5.2.4 Der Weg einer Nachricht im Proxyserver . . . . . . . . . . . . . 73<br />

5.2.5 Aufbau von Proxyserver-Proxyserver-Verbindungen . . . . . . . 74<br />

5.2.6 Annahme von Client-Verbindungen im Proxyserver . . . . . . . 75<br />

5.2.7 Aufbau von Client-Verbindungen durch den Proxyserver . . . . 76<br />

5.3 Der Sensornetzwerk-Simulator . . . . . . . . . . . . . . . . . . . . . . . 77<br />

5.3.1 Configurator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

5.3.1.1 Erstellung eines neuen Netzwerkes . . . . . . . . . . . 78<br />

5.3.1.2 Start des Sensornetzwerkes . . . . . . . . . . . . . . . 81<br />

5.4 Der Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

5.5 Kopplung über das Internet durch den Einsatz eines VPNs . . . . . . . 85<br />

5.6 Unterstützte Netztopologien . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

Diplomarbeit André Hesse


Inhaltsverzeichnis iii<br />

6 Evaluierung des implementierten Prototyps 91<br />

6.1 Mögliche Lösungsansätze . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

6.1.1 Implementierung des IP-Protokolls im Sensornetzwerk . . . . . . 92<br />

6.1.2 Einsatz eines Gateways als Protokollumsetzer . . . . . . . . . . 93<br />

6.2 Der Prototyp auf Basis eines transparenten Proxys . . . . . . . . . . . 93<br />

6.2.1 Vergleich mit OSGi . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />

6.3 Probleme beim Rückruf mit einer falschen IP-Adresse . . . . . . . . . . 96<br />

7 Zusammenfassung 99<br />

8 Ausblick 101<br />

A Konfigurationsdateien 105<br />

A.1 ProxyServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

A.2 Sensornetzwerk-Simulator . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

A.3 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

B Kommunikationsprotokoll 115<br />

B.1 Vorbetrachtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

B.2 Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

B.3 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

B.4 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

C Darstellung der ZigBee-Attribute im Prototyp 129<br />

C.1 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

D Installation des Prototyps 133<br />

Literaturverzeichnis 137<br />

Abbildungsverzeichnis 143<br />

Tabellenverzeichnis 147<br />

Abkürzungsverzeichnis <strong>und</strong> Formelzeichen 149<br />

Thesen zur Diplomarbeit 151<br />

Erklärung 153<br />

Diplomarbeit André Hesse


iv Inhaltsverzeichnis<br />

Diplomarbeit André Hesse


1 Problemstellung<br />

1.1 Sensoren, überall...<br />

Sensoren sind aus unserem täglichen Leben nicht mehr wegzudenken. In vielen Be-<br />

reichen unterstützen sie den Menschen. Dabei agieren Sensoren meist im Hintergr<strong>und</strong><br />

<strong>und</strong> werden als solche gar nicht vom Menschen wahrgenommen.<br />

Abgeleitet aus dem Lateinischen von dem Wort ” sensus“, bedeutet Sensor ” Fühler“.<br />

Für nahezu jede Anwendung sind Sensoren entwickelt worden. Sie können Licht, Bewe-<br />

gungen, Temperaturen, Geräusche detektieren oder die chemische Zusammensetzung<br />

von Gasen, Flüssigkeiten <strong>und</strong> Festkörpern bestimmen. Ebenso können sie Gewichte<br />

ermitteln, Entfernungen mit Hilfe von Radar (radio detecting and ranging) messen<br />

oder genetische Materialien vergleichen.<br />

Sensoren werden fast überall eingesetzt. Sie veranlassen automatische Türen zum<br />

Öffnen <strong>und</strong> schalten nach Registrierung einer Bewegung, bzw. einer zu schwachen Licht-<br />

situation, Leuchtmittel ein. Auch im Auto werden Sensoren eingebaut. Hier greifen sie<br />

ungeübten Fahrern während des Einparkens unter die Arme, indem sie die Entfernung<br />

zu Objekten, wie anderen Autos oder Laternenpfähle, akustisch vermitteln.<br />

In den letzten 20 Jahren wurden neue Einsatzgebiete <strong>für</strong> Sensoren erforscht. Man<br />

verbindet in so genannten Sensornetzwerken mehrere Sensoren mittels Netzwerktech-<br />

nologien. Die einzelnen Knoten eines solchen Netzwerkes nennt man Sensorknoten.<br />

Dabei muss beachtet werden, dass einige dieser Knoten nicht nur als Sensorelement<br />

arbeiten, sondern auch aktiv in ihre Umwelt eingreifen können.<br />

Ein Einsatzgebiet <strong>für</strong> Sensornetzwerke ist die Hausautomatisierung. Dabei wird im<br />

Haus ein drahtloses Sensornetzwerk aufgebaut. Alle elektrisch steuerbaren Elemen-<br />

te, wie Leuchten, Heizungen oder Alarmanlagen, sowie Steuerelemente, wie Schalter,<br />

Licht- <strong>und</strong> Temperatursensoren, Bewegungs- <strong>und</strong> Rauchmelder, werden in das Sensor-<br />

netzwerk integriert.<br />

Sämtliche angeschlossene Elemente des Hauses können über Computer oder Per-<br />

sonal Digital Assistants (PDA) ferngesteuert werden. Die Sensorknoten sollen von<br />

einfacher Bauweise sein, batteriebetrieben, wenig Energie verbrauchen <strong>und</strong> möglichst<br />

1<br />

Diplomarbeit André Hesse


2 1 Problemstellung<br />

kostengünstig produziert werden.<br />

Gerade die Anforderung, wenig Energie zu verbrauchen, schließt etablierte Funk-<br />

techniken wie Wireless Local Area Network (WLAN) 1 oder Bluetooth zur Datenüber-<br />

tragung aus. Deshalb wurde von der internationalen Standardisierungsorganisation In-<br />

stitute of Electrical and Electronics Engineers (IEEE) der Standard 802.15.4 entworfen<br />

[Inst]. Dieser definiert eine drahtlose Zugangstechnologie mit geringen Datenraten, die<br />

jedoch <strong>für</strong> den Einsatzzweck in Sensornetzwerken ausreichend ist. Eine Allianz von Fir-<br />

men baute auf diesen Standard eine Sensornetzwerklösung names ZigBee auf [ZigB].<br />

Will man Computer miteinander (in einem so genannten ” Local Area Network“<br />

(LAN)) oder mit dem Internet verbinden, wird meist das Internet Protocol (IP) ver-<br />

wendet.<br />

Leider unterstützt ZigBee dieses Protokoll nicht. Damit ist eine direkte Kopplung<br />

eines Sensornetzwerkes an vorhandene LANs nicht direkt möglich.<br />

1.2 Kopplung von Sensornetzwerken an IP-basierte<br />

Kommunikationssysteme<br />

Die vorliegende Diplomarbeit beschäftigt sich mit der Kopplung von drahtlosen Sensor-<br />

netzwerken an IP-basierte Kommunikationssysteme. Die begrenzten Energieressourcen<br />

der batterie- oder akkumulatorbetriebenen Sensorknoten stellen ein zentrales Problem<br />

<strong>für</strong> den Einsatz des IP-Protokolls dar. Weiterhin sollen Knoten drahtloser Sensornetz-<br />

werke besonders kostengünstig produziert werden, daher werden Bauteile eingesetzt,<br />

die die Rechenkapazität dieser Knoten beschränken.<br />

In den meisten drahtlosen Sensornetzwerken wird daher das IP-Protokoll nicht un-<br />

terstützt.<br />

Im Rahmen der Hausautomatisierung werden drahtlose Sensornetzwerke zur Steue-<br />

rung von Hausfunktionen installiert. In vielen Haushalten sind ein oder mehrere Com-<br />

puter vorhanden, die das IP-Protokoll nutzen, um eine Verbindung dem Internet her-<br />

zustellen. Es ist wünschenswert, diese vorhandene Computertechnik zur Kontrolle des<br />

drahtlosen Sensornetzwerkes zu nutzen.<br />

Die benötigten Gr<strong>und</strong>lagen der Vermittlungs- <strong>und</strong> Transporttechniken in IP-Netzwerken<br />

werden in Kapitel 2 dargestellt. In Kapitel 3 werden Sensornetzwerke gr<strong>und</strong>legend be-<br />

schrieben.<br />

1 Der Begriff WLAN hat sich in der Literatur sowie in der Industrie als Synonym <strong>für</strong> die IEEE<br />

Standardfamilie 802.11 durchgesetzt.<br />

Diplomarbeit André Hesse


1.2 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme 3<br />

Zur Lösung der Aufgabe, die Kopplung beider Systeme zu ermöglichen, existieren<br />

bereits mehrere Ansätze. Diese werden in Kapitel 4 aufgezeigt, bevor ein eigener Ansatz<br />

vorgestellt wird.<br />

Dieser basiert auf der Anwendung eines ” transparenten Proxys“. In die Kommunika-<br />

tion zwischen einem Anwender der einen Computer eines IP-Netzwerkes benutzt <strong>und</strong><br />

einem Sensornetzwerk wird ein Proxyserver eingeschliffen. Dieser vergibt <strong>für</strong> jeden Sen-<br />

sorknoten eine eigene IP-Adresse unter denen die Sensorknoten angesprochen werden<br />

können. Dabei arbeitet der Proxyserver transparent, d.h. es ist <strong>für</strong> den Anwender nicht<br />

ersichtlich, dass dieser nicht direkt mit den Sensorknoten kommuniziert.<br />

Zur Veranschaulichung dieses Ansatzes wurde ein Prototyp erstellt, der in Kapitel<br />

5 ausführlich beschrieben wird. Da kein reales Sensornetzwerk zur Verfügung stand,<br />

wurde dieses durch die Programmierung einer entsprechende Komponente simuliert.<br />

Abschliessend wird im sechsten Kapitel der entwickelte Prototyp mit vorhandenen<br />

Lösungen verglichen.<br />

Diplomarbeit André Hesse


4 1 Problemstellung<br />

Diplomarbeit André Hesse


2 IP-basierte Kommunikationssysteme<br />

Sollen zwei oder mehrere Computersysteme miteinander Daten austauschen, müssen<br />

bestimmte Absprachen getroffen werden, wie die Kommunikation erfolgen soll. Diese<br />

Absprachen werden als Protokoll bezeichnet. Man kann Protokolle mit menschlicher<br />

Kommunikation vergleichen. Wollen sich zwei Menschen unterhalten, müssen sie die<br />

gleiche Sprache sprechen. Ohne einen gemeinsamen Nenner können sonst leicht Miss-<br />

verständnisse auftreten. Diese können fatale Folgen nach sich ziehen.<br />

In der digitalen Welt werden Informationen mit Hilfe der zwei Symbole ” 0“ <strong>und</strong> “1“<br />

ausgedrückt. Jeder Computer, Server oder Router arbeitet intern damit. Sollen zwei<br />

Computer unterschiedlicher Bauart miteinander Informationen austauschen, müssten<br />

sie vom jeweiligen Partner wissen, wie dieser intern seine Daten strukturiert, damit<br />

der Datenaustausch fehlerfrei stattfinden kann. Da dies bei der großen Vielfalt von<br />

Computern schier unmöglich ist, werden fest definierte Protokolle verwendet.<br />

Eines dieser Protokolle ist das Internet Protocol IP. Das weltweit verbindende Inter-<br />

net 1 basiert auf diesem Protokoll. Will man heutzutage online mit anderen Anwendern<br />

Informationen austauschen, kann man zwangsläufig die Nutzung von IP nicht vermei-<br />

den. Allerdings ist IP nicht das einzige Protokoll zur Adressierung in Computernetz-<br />

werken. Andere sind z.B. Apple Talk oder Internetwork Packet Exchange (IPX).<br />

2.1 Das Internet-Referenzmodell<br />

1983 wurde das OSI-Referenzmodell (Open Systems Interconnection) vorgestellt [DaZi83].<br />

Dieses abstrakte Modell basiert auf einem Vorschlag der International Organization<br />

for Standardization (ISO) <strong>und</strong> ist auf nahezu jedes technische Kommunikationssys-<br />

tem anwendbar. Das ISO-OSI-Referenzmodell gliedert die Kommunikation in mehrere<br />

1 Anmerkung: der Ausdruck ” das Internet“ ist ein wenig unpräzise. Er suggeriert eine physikalische<br />

Einheit. Diese ist nicht gegeben. Vielmehr besteht das Internet aus einer Vielzahl von abgeschlossenen<br />

Netzwerken, die mit Hilfe so genannter Gateways miteinander verb<strong>und</strong>en sind (Siehe auch<br />

[Tane03]). Dabei können Daten, die von einem Computer des Netzes A an einen entfernten Computer<br />

des Netzes B gesendet werden sollen, den Weg durch mehrere andere Netzwerke nehmen.<br />

Den Anwendern bleibt dieses Routing im Normalfall verborgen.<br />

5<br />

Diplomarbeit André Hesse


6 2 IP-basierte Kommunikationssysteme<br />

Schichten. In Abbildung 2.1 ist das vereinfachte Referenzmodell <strong>für</strong> IP-basierte Kom-<br />

munikationssysteme dargestellt.<br />

Anwendung<br />

Transport<br />

Vermittlung<br />

Sicherung<br />

Bitübertragung<br />

Funk<br />

Vermittlung Vermittlung<br />

Sicherung<br />

Bitübertragung<br />

Sicherung<br />

Bitübertragung<br />

Ethernet<br />

Abbildung 2.1: Das Internet-Referenzmodell<br />

Anwendung<br />

Transport<br />

Vermittlung<br />

Sicherung<br />

Bitübertragung<br />

Der Vorteil einer geschichteten Kommunikation ist die Unabhängigkeit von einzelnen<br />

physikalischen Zugangstechnologien. Auf unterster Ebene können verschiedene Über-<br />

tragungsmedien wie WLAN oder Ethernet verwendet werden. Wichtig ist, dass zwei<br />

direkt miteinander verb<strong>und</strong>ene Systeme (hier Notebook <strong>und</strong> Router bzw. Router <strong>und</strong><br />

Computer) das selbe Medium verwenden.<br />

Werden auf den höheren Schichten die selben Protokolle verwendet, können auch<br />

Computer die mit unterschiedlichen Medien an das Kommunkationsnetz angeb<strong>und</strong>en<br />

sind, über Zwischensysteme miteinander kommunizieren [Schi03].<br />

Sollen Anwendungen mit Anwendungen anderer Computer Daten austauschen, neh-<br />

men sie die Dienste der darunter liegenden Schichten in Anspruch. In [Schi03] <strong>und</strong><br />

[Tane03] ist die Funktionalität der einzelnen Schichten ausführlich beschrieben, wes-<br />

halb hier nur kurz darauf eingegangen werden soll.<br />

Die unterste Schicht, die Bitübertragungsschicht (Physical Layer) ist <strong>für</strong> die Umset-<br />

zung eines Bitstroms in Signale verantwortlich. Die Art <strong>und</strong> Form der Signale wird<br />

durch das Medium vorgegeben. In einem Lichtleiter werden diese Signale zum Beispiel<br />

als Lichtimpuls übertragen. Im Coaxialkabel oder über Funk werden Signale in Form<br />

Diplomarbeit André Hesse


2.1 Das Internet-Referenzmodell 7<br />

elektro-magnetischer Wellen gesendet.<br />

Den Medienzugriff regelt die Sicherungsschicht (Data Link Layer). Wie der (deut-<br />

sche) Name schon vermuten lässt, sind hier auch Mechanismen zur Erkennung <strong>und</strong><br />

Behebung von Übertragungsfehlern implementiert.<br />

In der Vermittlungsschicht (Network Layer) wird die Wegewahl von Datenpaketen<br />

in Kommunikationsnetzen realisiert. Der ” Quasi-Standard“ 2 ist hierbei das Internet<br />

Protocol IP. Im Abschnitt 2.2 wird IP ausführlich behandelt.<br />

Die Funktionalität, eine Ende-zu-Ende-Verbindung aufzubauen, wird durch die Trans-<br />

portschicht (Transport Layer) erbracht. In IP-basierten Kommunikationssystemen wer-<br />

den meist das Transmission Control Protocol (TCP) oder das User Datagram Protocol<br />

(UDP) verwendet. Beide wurden durch die Internet Engineering Task Force (IETF)<br />

standardisiert <strong>und</strong> sind in den Request for Comments (RFC) RFC 793 [Post81c] <strong>und</strong><br />

RFC 768 [Post80] niedergeschrieben.<br />

Als oberste Schicht fungiert die Anwendungsschicht (Application Layer) als Binde-<br />

glied zwischen den Anwendungen <strong>und</strong> den Netzwerkfunktionen. Hier werden die unter-<br />

schiedlichsten Protokolle unterstützt. Für das Versenden <strong>und</strong> Empfangen von E-Mails<br />

können die Protokolle Post Office Protocol (POP-3) oder Internet Message Access Pro-<br />

tocol (IMAP) verwendet werden. Will man Webseiten im World Wide Web (WWW)<br />

abrufen, kann man dazu einen Webbrowser verwenden, der das Hypertext Transfer<br />

Protocol (HTTP) unterstützt.<br />

In Abbildung 2.2 ist die so genannte Datenkapselung dargestellt. Eine Schicht kann<br />

Dienste der jeweils darunter liegenden Schicht in Anspruch nehmen. Beim Senden von<br />

Daten werden diese von oben nach unten durchgereicht, wobei jede Schicht eigene<br />

Header (<strong>und</strong> Trailer) anfügt. In diesen werden Informationen <strong>für</strong> die Schichten des<br />

jeweiligen direkten Kommunikationspartners gespeichert. Werden Daten empfangen,<br />

entfernt jede Schicht die sie betreffenden Header <strong>und</strong> Trailer <strong>und</strong> reicht die restlichen<br />

Daten an die jeweils höhere Schicht weiter. Dieses Vorgehen wird im Referenzmodell<br />

als Datenkapselung bezeichnet.<br />

Die Gesamtheit der Protokolle der einzelnen Schichten wird mit dem Begriff Proto-<br />

kollstapel umschrieben. Will z.B. ein Anwender des Notebooks in Abbildung 2.1 mit<br />

dem Computer auf der rechten Seite Daten austauschen, müssen beide Computer den<br />

vollen Protokollstapel unterstützen. Sind beide nicht direkt miteinander verb<strong>und</strong>en, ist<br />

2 Neben IP finden auch andere Protokolle, wie das Address Resolution Protocol (ARP), Reverse Address<br />

Resolution Protocol (RARP), Internet Control Message Protocol (ICMP) oder das Dynamic<br />

Host Configuration Protocol (DHCP) in der Vermittlungsschicht Verwendung.<br />

Diplomarbeit André Hesse


8 2 IP-basierte Kommunikationssysteme<br />

bzw.<br />

TCP-Header<br />

UDP-Header<br />

IP-Header TCP/UDP-Header<br />

MAC/LLC-Header IP-Header TCP/UDP-Header<br />

MAC/LLC-Header IP-Header Bits TCP/UDP-Header<br />

Daten Anwendungsschicht<br />

Daten<br />

Daten<br />

Daten<br />

Daten<br />

Trailer<br />

Daten Trailer<br />

Transportschicht<br />

Vermittlungsschicht<br />

Sicherungsschicht<br />

Bitübertragungschicht<br />

Abbildung 2.2: Datenkapselung am Beispiel des Internetreferenzmodells<br />

es unerheblich, welche Protokolle in der Bitübertragungsschicht <strong>und</strong> der Sicherungs-<br />

schicht verwendet werden. Nur direkt miteinander verb<strong>und</strong>ene Kommunikationspartner<br />

müssen hier die selben Protokolle verwenden. Manche Systeme, wie das in Abbildung<br />

2.1 in der Mitte abgebildete Zwischensystem, sind in der Lage, Daten zwischen ver-<br />

schiedenen Medien auszutauschen. Als reines Übermittlungssystem muss es nicht den<br />

gesamten Protokollstapel unterstützen.<br />

Im Internet verwenden alle Kommunikationspartner in der Vermittlungsschicht das<br />

IP-Protokoll. Welche Protokolle in den darunter liegenden Schichten verwendet werden,<br />

ist <strong>für</strong> eine Kommunikation zwischen nicht direkt miteinander verb<strong>und</strong>enen Computer<br />

unerheblich. So können trotz unterschiedlichen Netzzugangstechnologien wie Ethernet,<br />

WLAN oder Bluetooth, Daten miteinander ausgetauscht werden.<br />

Die Funktionalität der einzelnen Schichten bleibt dem Anwender meist verborgen.<br />

Ist der Computer erst einmal erfolgreich an das vorhandene Netzwerk angeschlossen,<br />

kann mit der Verwendung der unterschiedlichsten Anwendungen begonnen werden. Der<br />

Anwender kann so seine E-Mails in einem Programm seiner Wahl schreiben oder <strong>für</strong><br />

das Abrufen von Webinhalten im Internet einen beliebigen Webbrowser nutzen. Wie<br />

die Daten dann versendet bzw. empfangen werden, ist <strong>für</strong> den Anwender unerheblich.<br />

2.2 Das IP-Protokoll<br />

Das Internet Protocol wird in der Vermittlungsschicht eingesetzt. Will man zwei oder<br />

mehrere Computer miteinander verbinden, wird man auf dieses Protokoll zurückgrei-<br />

Diplomarbeit André Hesse


2.2 Das IP-Protokoll 9<br />

fen. Nahezu jedes moderne Betriebssystem unterstützt IP.<br />

Das Internet, welches aus unzähligen Teilnetzen besteht, beruht auf IP. Standar-<br />

disiert wurde es von der IETF. Es ist in der RFC 791 [Post81b] beschrieben. Zwei<br />

verschiedene Versionen des IP-Protokolls werden im Internet verwendet. Die zur Zeit<br />

meistverbreitete Version ist Version 4. Man schreibt kurz IPv4. Seit mehreren Jahren<br />

wird der Übergang zu der neueren Version 6 (IPv6) vollzogen. Man kann jedoch nicht<br />

von einem Tag auf den Anderen die Protokolle im gesamten Internet umstellen. Die<br />

Investitionskosten zur Umstellung auf IPv6 sind schier unermesslich, müsste doch je-<br />

der Knoten IPv6 verstehen können. Laut [Dura01] [Wilj02] <strong>und</strong> [WaCh02] wird die<br />

Umstellung deshalb noch einige Jahre dauern. Manche Wissenschaftler glauben, dass<br />

der Übergang nie vollzogen werden wird [Weis01].<br />

In dieser Arbeit wird der Fokus auf IPv4 gelegt. Die folgenden Angaben beziehen<br />

sich deshalb auf diese Version. Der Einfachheit halber wird der Zusatz ” v4“ weggelas-<br />

sen. Bei Ausnahmen wird explizit darauf hingewiesen.<br />

Anwendungsdaten werden in IP-basierten Netzwerken nicht zusammenhängend über-<br />

tragen. Sie werden in Dateneinheiten aufgeteilt <strong>und</strong> mittels so genannter IP-Pakete<br />

transportiert. Man kann die Verwendung von IP-Paketen gut mit der herkömmlichen<br />

Briefpost vergleichen. Will man z.B. einen dreiseitigen Text verschicken, kann aber pro<br />

Brief nur eine Seite versenden, kann man den Text auf drei Seiten aufteilen <strong>und</strong> jede<br />

einzeln in einem Brief versenden. Damit die Post die Briefe erfolgreich zustellen kann,<br />

müssen die Umschläge der Briefe die Absender- <strong>und</strong> Empfangsadresse enthalten. Sollte<br />

auf dem Übertragungsweg keiner der Briefe verloren gehen, kann der Empfänger den<br />

Text aus den drei Seiten wieder zusammensetzen (Abbildung 2.3).<br />

Das IP-Protokoll arbeitet ähnlich. Will man z.B. eine E-Mail versenden, wird das<br />

E-Mail-Programm den Inhalt an die Transportschicht weitergeben. In der Transport-<br />

schicht werden hauptsächlich die Protokolle TCP <strong>und</strong> UDP verwendet, auf die an die-<br />

ser Stelle allerdings nicht näher eingegangen werden soll. Es soll nur kurz festgehalten<br />

werden, dass TCP eine Ende-zu-Ende-Verbindung zwischen zwei kommunizierenden<br />

Endpunkten realisiert.<br />

Dabei werden die Daten, die versendet werden sollen, in Datagramme aufgeteilt.<br />

TCP versieht jedes Datagramm mit einem Header, in dem eine Sequenznummer ent-<br />

halten ist. Anschliessend werden die Datagramme an die Vermittlungsschicht weiter-<br />

gegeben. Diese verpackt die einzelnen Datagramme in IP-Pakete. Durch Angabe einer<br />

Zieladresse werden diese IP-Pakete durch das Netz zum Zielsystem versendet (Ab-<br />

schnitt 2.2.2).<br />

Diplomarbeit André Hesse


10 2 IP-basierte Kommunikationssysteme<br />

Absender:<br />

André Hesse<br />

Campus<br />

03677 <strong>Ilmenau</strong><br />

Quell-IP: 10.0.0.1<br />

Ziel-IP: 10.0.0.12<br />

Empfänger:<br />

Herta Meier<br />

Tal der Ahnungslosen<br />

01097 Dresden<br />

Daten<br />

Absender:<br />

André Hesse<br />

Campus<br />

03677 <strong>Ilmenau</strong><br />

Empfänger:<br />

Herta Meier<br />

Tal der Ahnungslosen<br />

01097 Dresden<br />

Daten<br />

Quell-IP: 10.0.0.1<br />

Ziel-IP: 10.0.0.12<br />

IP-Header IP-Header<br />

Absender:<br />

André Hesse<br />

Campus<br />

03677 <strong>Ilmenau</strong><br />

Daten<br />

Empfänger:<br />

Herta Meier<br />

Tal der Ahnungslosen<br />

01097 Dresden<br />

Transportschicht<br />

(TCP, UDP)<br />

Vermittlungsschicht<br />

(IP)<br />

Abbildung 2.3: Vergleich zwischen herkömmlicher Briefpost <strong>und</strong> IP-Paketvermittlung<br />

Auf der Empfängerseite werden aus den empfangenen Paketen die enthaltenen Da-<br />

tagramme extrahiert. Anhand der durch das TCP-Protokoll vergebenen Sequenznum-<br />

mern kann die exakte Reihenfolge der Daten wiederhergestellt werden 3 .<br />

Für jedes erfolgreich übertragene Datagramm wird eine Quittung an den Sender<br />

ausgestellt. Diese Quittungen werden mit IP-Paketen an den ursprünglichen Sender<br />

geschickt. Bei Ausbleiben einer Quittung wird das entsprechende Datagramm erneut<br />

versendet. So sorgt TCP <strong>für</strong> eine fehlerfreie Übertragung von Daten im Internet. Die<br />

Transportschicht im Empfänger reicht die komplett empfangenen E-Mail-Daten an die<br />

entsprechende Anwendung weiter. In diesem Beispiel würde ein E-Mail-Programm dem<br />

Anwender anzeigen, dass eine neue Nachricht <strong>für</strong> ihn angekommen ist.<br />

Ein Unterschied zwischen IP-Paketen <strong>und</strong> der Briefpost besteht aber. Bei einem<br />

3 IP-Pakete können im Internet unterschiedliche Wege nehmen. Die Laufzeiten können stark variieren.<br />

Es ist auch möglich, dass einige Pakete unterwegs verloren gehen oder dupliziert werden (Siehe<br />

Abschnitt 2.2.2).<br />

Diplomarbeit André Hesse


2.2 Das IP-Protokoll 11<br />

normalen Brief kann man die Absenderadresse weglassen. Im Internet ist dies nicht<br />

zulässig. IP-Pakete ohne Absenderadresse werden von den meisten Systemen verworfen.<br />

2.2.1 Adressierung im Internet Protokoll<br />

Ein jedes IP-Paket beinhaltet neben den eigentliche Daten der nächst höheren Schicht<br />

(also TCP- oder UDP-Datagramme) einen IP-Header. Abbildung 2.4 zeigt den Aufbau<br />

<strong>für</strong> des IP-Headers der IP-Version 4. Die Bedeutung der einzelnen Felder kann [Doyl99]<br />

Bit<br />

0<br />

3<br />

7<br />

15<br />

Version IHL Diensttyp Gesamtlänge<br />

Identifikation Flags Fragment-Offset<br />

Lebenspanne Protokoll<br />

Header-Prüfsumme<br />

Quelladresse<br />

Zieladresse<br />

Optionen<br />

Daten<br />

Abbildung 2.4: Header eines IPv4-Paketes<br />

oder [Post81b] entnommen werden. An dieser Stelle soll nur auf die Felder ” Quell- <strong>und</strong><br />

Zieladresse“ eingegangen werden. In ihnen müssen der Absender <strong>und</strong> der Empfänger<br />

eines jeden IP-Paketes angegeben werden. Im Headerfeld ” Gesamtgröße“ wird die Grö-<br />

ße von Header <strong>und</strong> eigentlichen Daten des IP-Paketes angegeben. IP-Pakete können<br />

maximal 65535 Byte groß sein.<br />

Jeder Knoten in einem IP-Netzwerk muss über eine eigene IP-Adresse verfügen.<br />

Diese müssen eindeutig vergeben sein. Jeder Computer oder Router der eine Schnitt-<br />

stelle an das Internet hat, muss eine solche IP-Adresse verwenden. Dabei bekommt<br />

jede Schnittstelle eine eigene Adresse. Soll ein Computer oder Router mit mehr als<br />

einer Schnittstelle an ein (oder mehrere) IP-Netzwerk(e) angeschlossen sein, muss er<br />

entsprechend viele IP-Adressen besitzen.<br />

In Version 4 des IP-Protokolls sind IP-Adressen 32-Bit lang. Damit sind theoretisch<br />

bis zu 4,3 Milliarden Adressen verfügbar. Praktisch ist aber nicht die volle Menge<br />

verwendbar.<br />

31<br />

IP-Header<br />

Diplomarbeit André Hesse


12 2 IP-basierte Kommunikationssysteme<br />

IP-Adressen werden als Folge von ” 0“ <strong>und</strong> ” 1“ dargestellt. Um <strong>für</strong> den Menschen ei-<br />

ne bessere Lesbarkeit zu gewährleisten, werden IP-Adressen in der RFC 790 [Post81a]<br />

durch eine dezimale Notation standardisiert. Danach wird eine IP-Adresse aus vier<br />

Blöcken, bestehend aus je einer Zahl zwischen ” 0“ <strong>und</strong> ” 255“ gebildet. Getrennt wer-<br />

den die Blöcke durch das Zeichen ” .“. In Tabelle 2.1 ist eine IP-Adresse beispielhaft<br />

dargestellt.<br />

Bitweise Darstellung:<br />

Dezimaldarstellung:<br />

WWW-Adresse:<br />

1000 1101<br />

141.<br />

0001 1000<br />

24.<br />

www.tu-ilmenau.de<br />

0000 0100<br />

4.<br />

1010 0010<br />

Tabelle 2.1: IP-Adressnotation <strong>für</strong> Version 4 (IPv4). Die hier gezeigte IP-Adresse verweist<br />

auf den Web-Auftritt der TU-<strong>Ilmenau</strong>.<br />

Intern arbeiten Computer <strong>und</strong> Router mit der bitweisen Schreibweise. Viele An-<br />

wendungen zeigen dem Anwender aber die lesbare Dezimalform an. Im Internet kann<br />

mittels des HTTP-Protokolls auf Webinhalte zugegriffen werden. Um nicht <strong>für</strong> jede<br />

Internetpräsenz die IP-Adresse einzugeben, wurde das Domain Name System (DNS)<br />

[Mock87] entwickelt, welches im Internet den Einsatz logischer Namen erlaubt. An-<br />

stelle 141.24.4.163 einzugeben, kann die Homepage der TU <strong>Ilmenau</strong> über den Aufruf<br />

von www.tu-ilmenau.de erfolgen. Mit DNS wird dieser logische Namen in die ent-<br />

sprechende IP-Adresse des Computers, der den Webdienst erbringt, umgewandelt. Die<br />

in Tabelle 2.1 verwendete Adresse 141.24.4.162 verweist auf den Web-Server der TU-<br />

<strong>Ilmenau</strong> 4 .<br />

Jede der in einem Netzwerk verwendeten IP-Adressen muss eindeutig vergeben sein,<br />

d.h. zwei Systeme dürfen nicht die selbe IP-Adresse verwenden. Die Regelung, wer wel-<br />

che IP-Adresse verwendet, wird durch die Internet Corporation for Assigned Names<br />

and Numbers (ICANN) geregelt. Dabei vergibt die ICANN nicht jede Adresse ein-<br />

zeln, vielmehr werden bestimmte Adressbereiche an verschiedene regionale Behörden<br />

vergeben. Diese regulieren dann die Vergabe an Internet Service Provider (ISP) <strong>und</strong><br />

Unternehmen [Tane03].<br />

2.2.2 Routing in IP-Netzwerken<br />

In Bezug auf das ISO-OSI Referenzmodell (Siehe Abschnitt 2.1) wird im Internet (als<br />

Protokoll der Vermittlungsschicht) das IP-Protokoll verwendet (Abschnitt 2.2). Da-<br />

bei werden Daten, die durch das Netzwerk übertragen werden sollen, in IP-Pakete<br />

4 Stand: 17. Februar 2006<br />

Diplomarbeit André Hesse<br />

162


2.2 Das IP-Protokoll 13<br />

verpackt. Sind die Daten zu groß <strong>für</strong> ein IP-Paket, werden sie auf entsprechend viele<br />

Pakete aufgeteilt. Jedem Paket wird ein so genannter IP-Header vorangestellt (Ab-<br />

bildung 2.4). In diesem werden unter anderem die Quell- <strong>und</strong> Zieladresse angegeben.<br />

Pakete, denen eine der beiden Informationen fehlen, werden als nicht standardgemäß<br />

von den meisten Systemen verworfen.<br />

Jeder Computer, Server oder Router in einem Netzwerk pflegt mindestens eine so<br />

genannte Routingtabelle. In ihr wird verzeichnet, wie IP-Pakete mit einer bestimmten<br />

Zieladresse weitergeleitet werden sollen.<br />

In einem abgeschlossenen Netzwerk, wie das auf der linken Seite der Abbildung 2.5<br />

dargestellte, kennt jeder Knoten seine Nachbarknoten. Die Routingtabellen der Kno-<br />

141.24.92.196<br />

141.24.92.197<br />

141.24.92.198<br />

TKM-Pool<br />

FG Komm.netze<br />

141.24.95.254<br />

Internet<br />

148.88.1.1<br />

148.88.1.27<br />

Abbildung 2.5: Routing im Internet<br />

1<br />

2<br />

3<br />

4<br />

5<br />

17.254.3.183<br />

www.apple.com<br />

www.lancs.ac.uk<br />

148.88.1.11<br />

ten 141.24.92.196, 141.24.92.196 <strong>und</strong> 141.24.92.196 des Netzwerkes ” TKM-Pool“<br />

enthalten zunächst die jeweiligen Adressen der anderen Knoten dieses Netzes sowie die<br />

des Knotens 141.24.95.254. Ausserdem ist verzeichnet, wie die jeweiligen Knoten zu<br />

erreichen sind. Dabei wird festgelegt, an welchen Computer ein Paket geschickt werden<br />

soll, welches über eine bestimmte Ziel-IP-Adresse verfügt.<br />

Soll ein Paket z.B. vom Computer mit der IP-Adresse 141.24.92.196 an das Note-<br />

book mit der Adresse 141.24.92.198 verschickt werden, kann dies direkt geschehen.<br />

Diplomarbeit André Hesse


14 2 IP-basierte Kommunikationssysteme<br />

Der Computer 141.24.92.196 wird sein Paket über die Leitung versenden. Alle Kno-<br />

ten in diesem Netz empfangen dieses Paket. Sie überprüfen die IP-Header-Angaben.<br />

Kann eine Übereinstimmung der Adressangaben gef<strong>und</strong>en werden, wird der Inhalt die-<br />

ses Paketes an die nächst höhere Schicht weitergegeben. Dort wird entschieden, was<br />

mit dem Inhalt geschehen soll.<br />

Nun soll der Computer 141.24.92.168 aus dem ” TKM-Pool“-Netz an den Computer<br />

148.88.1.27 im Netz der <strong>Universität</strong> Lancaster (Abbildung 2.5, rechts unten) Daten<br />

senden. Da beide nicht im selben Netzwerk arbeiten, müssen die IP-Pakete durch<br />

ein oder mehrere Zwischensysteme geleitet werden. Diese Systeme werden meist als<br />

Router 5 bezeichnet. Jede Vermittlung eines Paketes über einen Router wird als ” Hop“<br />

bezeichnet.<br />

Der Computer in diesem Beispiel überprüft in seiner Routingtabelle, ob er einen pas-<br />

senden Routingeintrag zum Erreichen des Ziels 148.88.1.27 finden kann. Dazu wird<br />

vermerkt, an wen der Computer Pakete mit einer Zieladresse 148.88.1.27 schicken<br />

soll. In diesem Fall wird als erstes der Router mit der Adresse 141.24.95.254 vermerkt<br />

sein. Bei diesem speziellen Router handelt es sich um ein Gateway. Gateways sind Netz-<br />

knoten, die mit mehr als einem Netzwerk verb<strong>und</strong>en sind. Sie besitzen deshalb mehr<br />

als eine IP-Adresse. Diese ermöglichen ihnen, IP-Pakete zwischen den einzelnen Netzen<br />

zu transportieren. Werden in den Netzwerken unterschiedliche Vermittlungsprotokolle<br />

eingesetzt, können die Gateways Daten zwischen diesen Protokollen transformieren.<br />

Das Gateway ermittelt aus den empfangenen Paketen die Quell- <strong>und</strong> Zieladresse. Es<br />

führt selbst eine Routingtabelle, aus der es einen Routingeintrag <strong>für</strong> die Zieladresse<br />

heraussuchen kann. Die IP-Pakete werden an den nächsten Router im Internet wei-<br />

tergeleitet. Im Beispiel ist dies der Router Nr. 1. So werden die Pakete immer weiter<br />

durch das Netz geleitet, bis sie zum Gateway der Domaine ” lancs.ac.uk“ angelangen.<br />

Auch dieses vergleicht die empfangenen Pakete mit seiner Routingtabelle <strong>und</strong> leitet<br />

die Pakete direkt an den Zielcomputer weiter.<br />

Ein Problem wird schnell ersichtlich: Bei der großen Anzahl von Netzknoten, die<br />

direkt an das Internet angeschlossen sind, kann nicht jeder Knoten alle anderen in seiner<br />

Routingtabelle aufführen. Die Tabellen würden so große Ausmaße annehmen, dass das<br />

Nachschlagen <strong>für</strong> eine bestimmte Route viel zu viel Rechenkapazität brauchen würde.<br />

Ausserdem wären die Endknoten ständig damit beschäftigt, ihre Routingtabellen zu<br />

aktualisieren. Sobald ein Knoten aus dem Netz entfernt würde, müssten alle anderen<br />

die Route zu diesem Knoten löschen.<br />

5 Auch normale Personal Computer (PC) können als Zwischensystem verwendet werden, sie erbringen<br />

in diesem Fall Routingdienste.<br />

Diplomarbeit André Hesse


2.2 Das IP-Protokoll 15<br />

Anstatt komplette Adressen in die Routingtabellen aufzunehmen, werden nur Regeln<br />

<strong>für</strong> bestimmte Adressteile vermerkt. Im Beispiel wird das Gateway des ” TKM-Pool“-<br />

Netzes alle Pakete, deren IP-Adresse nicht mit 141.24.92 beginnen, an den Router 1<br />

im Internet leiten. Dieser wiederum hat entsprechende Routingeinträge, die besagen,<br />

dass er Pakete, die mit 148 beginnen über Router 2, 3 <strong>und</strong> 4 weiterleiten kann. Die<br />

nachfolgenden Router können die Adresse immer genauer auflösen. Im Beispiel verfügt<br />

Router 2 über entsprechende Routingeinträge, in denen festgelegt ist, dass dieser Rou-<br />

ter Pakete deren Adresse mit 148.88 beginnen über Router 3 zustellen kann. Dieser<br />

stellt alle Pakete deren IP-Adressen 148.8.1 enthalten, an den Computer 148.88.1.1<br />

zu. Letztendlich kann dieser die volle Adresse auflösen.<br />

Somit müssen die Router nur über bestimmte Teile der Adresse bescheid wissen.<br />

Nicht jeder Router kennt also jeden Computer im Internet. Untereinander tauschen<br />

Router über eigene Protokolle Routinginformationen aus.<br />

Im häufigsten Fall sollen Knoten aber Pakete weiterleiten, deren Route sie selbst<br />

nicht bestimmen können. Als Ausweg bietet sich der Eintrag eines Standardgateways in<br />

der Routingtabelle des entsprechenden Knotens an. Jedes Paket, <strong>für</strong> dessen Zieladresse<br />

kein passender Routingeintrag gef<strong>und</strong>en wird, wird an dieses Standardgateway geleitet.<br />

Kann dort ebenfalls kein passender Eintrag gef<strong>und</strong>en werden, wird es das Paket nun<br />

seinerseits seinem Standardgateway zusenden. Dieses hat entweder selber eine Route<br />

zum Ziel oder leitet die Pakete an sein Standardgateway weiter. Handelt es sich bei<br />

der Ziel-IP-Addresse um eine tatsächlich im Internet vorhandene Adresse, können die<br />

Pakete aber in der Regel korrekt ausgeliefert werden.<br />

IP-Pakete einer Kommunikation müssen im Internet nicht die selben Wege nehmen.<br />

Die dezentrale Struktur des Internets erlaubt eine vielfältige Wegewahl. Somit kann ein<br />

Teil der Pakete um die halbe Welt laufen, während andere den kürzesten Weg nehmen.<br />

Die Frage, welcher der kürzeste Weg ist, ist ein sehr anspruchsvolles Problem. Aufgr<strong>und</strong><br />

der immens hohen Anzahl an Knoten <strong>und</strong> Netzwerken im Internet ist nicht immer klar,<br />

welches der kürzeste Weg ist. Auch haben politische <strong>und</strong> finanzielle Faktoren einen<br />

großen Einfluss auf die Wegewahl.<br />

Mehrere verschiedene Algorithmen <strong>und</strong> Protokolle wurden entwickelt <strong>und</strong> finden<br />

ihre Anwendungen. Eine gute Beschreibung zu den gängigen Protokollen lässt sich in<br />

[Tane03] <strong>und</strong> in [Doyl99] finden.<br />

Diplomarbeit André Hesse


16 2 IP-basierte Kommunikationssysteme<br />

2.2.3 Klassenbasierte Adressierung<br />

Anfänglich verwendete man eine klassenbasierte IP-Adressierung, die das Internet in<br />

so genannte Klassen einteilte. Abbildung 2.6 stellt dies dar.<br />

Klasse<br />

A<br />

B<br />

C<br />

D<br />

E<br />

0 1 2 4 8 16 24 31<br />

0 Netz-ID Knoten-ID Knoten-ID<br />

max. 126 Subnetze mit max. je 16777214 Knoten<br />

1 0 Netz-ID Knoten-ID Knoten-ID<br />

max. 16384 Subnetze mit max. je 65534 Knoten<br />

1 1 0<br />

Netz-ID Knoten-ID<br />

max. 2097152 Subnetze mit je 254 Knoten<br />

1 1 1 0<br />

1 1 1 1 0<br />

Multicast-Adresse Multicast-Adresse<br />

Reserviert Reserviert <strong>für</strong> <strong>für</strong> zukünftige Anwendungen<br />

Abbildung 2.6: Klassenbasierte IP-Adressierung<br />

Knoten-Adressbereich<br />

1.0.0.0 -<br />

127.255.255.255<br />

128.0.0.0 -<br />

191.255.255.255<br />

192.0.0.0 -<br />

223.255.255.255<br />

224.0.0.0 -<br />

239.255.255.255<br />

240.0.0.0 -<br />

255.255.255.255<br />

Die IP-Adressen werden in Klassen eingeteilt. Dabei bezieht sich die Angabe einer<br />

Klasse auf die Anzahl der Bits der IP-Adresse die einem bestimmten Netzwerk zuge-<br />

ordnet werden. Man unterscheidet die IP-Adresse in Netzwerk-ID <strong>und</strong> Knoten-ID. Alle<br />

Adressen, deren erstes Bit ” 0“ ist, haben eine 8 Bit lange Netzwerk-ID, die Knoten-ID<br />

ist dann 24 Bit lang. Diese IP-Adressen stellen ein Klasse-A-Netzwerk dar.<br />

Die ersten beiden Bits von Klasse-B-Adressen sind mit ” 10“ belegt. Solche Adressen<br />

enthalten eine 16 Bit lange Netzwerk-ID. Dies lässt <strong>für</strong> die Knoten-ID nur noch 16 Bit<br />

zu. Entsprechend fangen IP-Adressen der Klasse C mit ” 110“ an. Hier bilden 24 Bit<br />

die Netz-ID <strong>und</strong> nur 8 Bit verbleiben <strong>für</strong> die Knoten-ID. Damit sind 2097152 Subnetze<br />

mit je 254 Knoten adressierbar.<br />

Die Adressbereiche in den Klassen A, B <strong>und</strong> C unterstützen ein wenig mehr als die<br />

in Abbildung 2.6 angezeigten Anzahlen an Subnetzen <strong>und</strong> Knoten. Einige Adressen<br />

wie die 0.0.0.0, 255.255.255.255 sowie der Adressbereich 127.x.x.x fallen jedoch<br />

weg, da sie anderweitig verwendet werden [Tane03].<br />

Nach der klassenbasierten Adressierung muss jedes Subnetz, das an das Internet<br />

angeschlossen ist, eine eigene eindeutige Netz-ID besitzen. Je nach Klasse werden in<br />

Diplomarbeit André Hesse


2.2 Das IP-Protokoll 17<br />

einem solchen Subnetz nur eine bestimmte Anzahl an Knoten, sprich IP-Adressen,<br />

unterstützt. Will nun jemand ein eigenes Netzwerk an das Internet anbinden, braucht<br />

er <strong>für</strong> jeden Computer dieses Netzwerkes eine IP-Adresse. Werden mehr als 254 IP-<br />

Adressen benötigt, muss eine Netzwerk-ID aus dem Adressbereich der Klassen A oder<br />

B zugewiesen werden. Die in diesem Subnetz enthaltenen IP-Adressen sind in anderen<br />

Netzwerken nicht mehr verwendbar. Werden in einem Klasse-B Netzwerk nur 1000 IP-<br />

Adressen verwendet, verbleiben die restlichen möglichen 64534 IP-Adressen ungenutzt.<br />

Router im Internet haben in ihren Routing-Tabellen nicht Regeln <strong>für</strong> jeden einzelnen<br />

Knoten vermerkt, sondern nur <strong>für</strong> bestimmte Netzwerk-ID’s. Je nachdem, wie diese<br />

gestaltet ist, wird das Routing durchgeführt (2.2.2).<br />

Betrachtet man die rasante Entwicklung des Internets in den letzten 10 Jahren,<br />

erkennt man leicht das Dilemma, welches mit der Verwendung von IPv4 einhergeht:<br />

Dem Internet gehen die Adressen aus.<br />

Ein Ausweg aus diesem Problem ist die Einführung von IPv6. 1990 wurde durch die<br />

IETF die Arbeit an der neuen Version begonnen. Jedoch dauert die Standardisierung<br />

eines neuen Protokolls zunächst mehrere Jahre, bevor im großen Maße die Umstellung<br />

eines Systems auf einen neuen Standard begonnen werden kann. Die Umstellung auf<br />

IPv6 selber dauert schon mehrere Jahre an. Sie ist mit immensen Investitionen verbun-<br />

den. Einige Wissenschaftler gehen sogar davon aus, das die Umstellung nie vollständig<br />

vollzogen wird [Weis01].<br />

Aus diesem Gr<strong>und</strong> wurden andere Wege zur Lösung des Adressproblems gesucht.<br />

Ein Ansatz ist das so genannte Classless Interdomain Routing (CIDR), welches in der<br />

RFC 1519 [FLYV93] definiert ist. Ein anderer Ansatz ist Network Address Translation<br />

(NAT).<br />

2.2.4 Classless Interdomain Routing (CIDR)<br />

Die Verwendung der klassenbasierten Adressierung in IP-Netzwerken ist mit dem ra-<br />

santen Wachstum des Internets unbrauchbar geworden. Der hohen Anzahl an Netz-<br />

werken im Internet wird die klassenbassierte Adressierung nicht mehr gerecht. In RFC<br />

1519 [FLYV93] wurde deshalb ein neuer Ansatz gewählt.<br />

Die IP-Adressen werden nicht mehr in Klassen unterteilt. Zusätzlich zur IP-Adresse<br />

wird eine so genannte Subnetzmaske eingeführt. Sie ist ebenfalls 32 Bit lang <strong>und</strong> ist<br />

wie eine IP-Adresse formatiert. Sie adressiert aber keine Knoten, sondern gibt an, wie<br />

viele Bits der IP-Adresse als Netz-ID dienen sollen. Die Grenzen zwischen Netz-ID <strong>und</strong><br />

Knoten-ID der klassenbasierten Adressierung sind somit nicht mehr fest zugeordnet.<br />

Diplomarbeit André Hesse


18 2 IP-basierte Kommunikationssysteme<br />

Die Länge der Netz-ID kann somit durch die Subnetzmaske ermittelt werden.<br />

Sind alle Bits der Subnetzmaske auf 1 gesetzt, dies entspricht ” 255.255.255.255“<br />

ist genau die zugehörige IP-Adresse eindeutig gemeint. Entsprechen die ersten 16 Bit<br />

der Subnetzmaske ” 1“ (255.255.0.0), werden die ersten 16 Bit der IP-Adresse als<br />

Netz-ID interpretiert.<br />

Die Router im Internet haben Regeln <strong>für</strong> Pakete die mit bestimmten Subnetzmasken<br />

übereinstimmen. Entsprechend diesen Regeln wird die Routingentscheidung <strong>für</strong> Pakete<br />

getroffen. Die Router leiten dann die Pakete an die entsprechenden Stellen weiter.<br />

2.3 Transmission Control Protocol TCP<br />

In der Literatur findet man häufig den Begriff TCP/IP-Suite, wenn die Protokol-<br />

le im Internet kurz beschrieben werden sollen. Bezieht man sich auf das ISO-OSI-<br />

Refernzmodell, werden zahlreiche Protokolle in der Transport- <strong>und</strong> der Vermittlungs-<br />

schicht angewendet. Am häufigsten werden dabei IP in der Vermittlungsschicht <strong>und</strong><br />

TCP in der Transportschicht eingesetzt, so dass sich der Begriff TCP/IP-Suite einge-<br />

bürgert hat.<br />

Im Gegensatz zu IP ist TCP ein verbindungsorientiertes Protokoll, das auf der Nut-<br />

zung von IP aufbaut. Im IP-Protokoll werden IP-Pakete durch ein Netzwerk oder das<br />

Internet geroutet. Dabei können Pakete, die die selbe Zielbestimmung haben, unter-<br />

schiedliche Wege nehmen. Diese variieren je nach Auslastung, politischen, finanziellen<br />

oder baulichen Gegebenheiten, oder der aktuellen Tageszeit. IP-Pakete können un-<br />

terwegs verloren gehen oder dupliziert werden. Werden mehrere Pakete nacheinander<br />

abgeschickt, kann es passieren, dass sie zu unterschiedlichen Zeiten beim Empfänger<br />

eintreffen. Der Absender erhält keinerlei Informationen, ob die von ihm abgesendeten<br />

IP-Pakete auch wirklich beim Empfänger angekommen sind.<br />

TCP nutzt die Transportdienste von IP, um zwischen zwei Netzknoten eine virtuelle<br />

Ende-zu-Ende-Verbindung aufzubauen. Wie dabei die zum Transport von TCP-Daten<br />

genutzten IP-Pakete durch das Netz geroutet werden, ist <strong>für</strong> den Anwender irrelevant.<br />

Wie in Abbildung 2.2 dargestellt, werden zu versendende Daten von Anwendungen an<br />

die Transportschicht <strong>und</strong> in diesem Fall an das TCP-Protokoll übergeben. Diese teilt<br />

die zu versendenden Daten in so genannte Datagramme auf. Zusätzlich wird jedem<br />

TCP-Paket ein Header vorangestellt, der in Abbildung 2.7 dargestellt ist. Insgesamt<br />

darf die Größe des TCP-Headers <strong>und</strong> des TCP-Datagrammes nicht mehr als 65515<br />

Byte betragen. Ansonsten würde die maximale IP-Paketgröße überschritten werden.<br />

Jedoch hat sich als Größe der TCP-Datagramme ein Wert von unter 1500 Bytes<br />

Diplomarbeit André Hesse


2.3 Transmission Control Protocol TCP 19<br />

Bit<br />

0 16<br />

31<br />

TCP- 4 bit TCP<br />

Head.- header<br />

länge length<br />

Source Quellport Port<br />

Destination ZielportPort<br />

6 bit<br />

unused<br />

Sequence Sequenznummer Number<br />

Piggyback Bestätigungsnummer<br />

Acknowledgement<br />

U A E<br />

R S<br />

F R<br />

CK<br />

O<br />

ST<br />

Y<br />

I<br />

G<br />

M<br />

N<br />

N<br />

Fenstergröße Window<br />

Prüfsumme Checksum<br />

Zeiger Urgent auf Vorrangdaten<br />

Pointer<br />

Optionen Options (0 (0 oder mehr 32-bit-Worte)<br />

Daten<br />

...<br />

Abbildung 2.7: Der TCP-Header<br />

eingebürgert. Lange Zeit wurde als Medium ” Ethernet“ verwendet. In der Sicherungs-<br />

schicht werden Daten in so genannten Rahmen übertragen, die bei Ethernet meist<br />

eine Größe von 1500 Byte haben. In Bezug auf die Datenkapselung (siehe Abschnitt<br />

2.1) passen viele Computersysteme daher die Größe der IP-Pakete an diese Rahmen-<br />

größe an. IP stellt den zu transportierenden Daten (TCP-Datagramme) selber einen<br />

Header voran, der eine bestimmte Größe hat. Die Header von IP <strong>und</strong> TCP sowie die<br />

eigentlichen Daten sollen somit zusammen nicht größer als 1500 Byte sein.<br />

TCP (<strong>und</strong> auch UDP) erweitern die Adressierung des IP-Protokolls durch eine ” Port-<br />

nummer“. Dabei handelt es sich um eine 16 Bit lange Zahl. Wie die IP-Adresse es er-<br />

möglicht IP-Pakete einen bestimmten Knoten zuzuordnen, kann TCP (UDP) mit der<br />

Portnummer eine bestimmte Anwendung in diesem Knoten adressieren.<br />

Will ein Anwender zum Beispiel den Webauftritt der Firma ” Apple“ abrufen, wird<br />

er in seinen Browser die Adresse www.apple.de eingeben. Mittels des DNS wird der<br />

logische Namen www.apple.de in eine IP-Adresse umwandeln. In diesem Fall wird<br />

DNS die IP-Adresse 17.254.3.122 zurückgeben 6 . Der Webbrowser versucht nun, eine<br />

TCP-Verbindung zu diesem Server aufzubauen. Dabei wird als Zielport im Normalfall<br />

der Port 80 eingetragen. Kommt die Verbindung zustande, wird der Webserver der<br />

Firma Apple eine HTML-Seite an den Browser übermitteln. Dieser stellt den Inhalt in<br />

seiner Oberfläche dar. Der Anwender kann den Webauftritt betrachten.<br />

Im TCP-Header werden Angaben über den Quell- <strong>und</strong> den Zielport aufgezeichnet.<br />

6 Stand 20.02.2005.<br />

TCP-Header<br />

Diplomarbeit André Hesse


20 2 IP-basierte Kommunikationssysteme<br />

Viele Protokolle der Anwendungsschicht wie HTTP oder POP-3 werden über einen<br />

Standardport angesprochen. Webserver halten ihre Inhalte am Port 80 bereit. E-Mails<br />

können mittels POP-3 am Port 110 abgerufen werden. Die ” Internet Assigned Numbers<br />

Authority“ (IANA) führt eine Liste mit so genannten ” Well Known Ports (Bekannte<br />

Portnummern)“. In dieser sind <strong>für</strong> die meisten Anwendungsprotokolle die verwendeten<br />

Portnummern verzeichnet. Unter [IANA] kann diese Liste eingesehen werden. Dabei<br />

werden nur die Ports ” 0-1023“ als ” Well Known Ports“ deklariert. Die restlichen können<br />

frei vergeben werden.<br />

Eigentlich waren die ” Well Known Ports“ in einer RFC durch die IETF reglementiert<br />

(RFC 1700), man ist aber inzwischen dazu übergegangen, die Liste durch die IANA in<br />

einer Onlinedatenbank zu führen. Die Vergabe der Ports ist nicht durch einen Standard<br />

reglementiert. Die Vorgabe der ” Well Known Ports“ ist nur eine Empfehlung. Damit<br />

ist es möglich, z.B. einen Webserver, der normalerweise auf Port 80 Anfragen bedient,<br />

auch auf einem anderen Port laufen zu lassen.<br />

Im Allgemeinen halten sich die Diensteanbieter im Internet aber an die Vorgaben<br />

der IANA.<br />

TCP nummeriert alle versendeten Datagramme eines Datenstromes. Im Headerfeld<br />

” Sequenznummer“ wird die aktuelle Nummer eines Datagramms angegeben. Kommen<br />

beim Empfänger die IP-Pakete zu verschiedenen Zeitpunkten an, kann dessen TCP-<br />

Software die Ordnung anhand der Sequenznummern der TCP-Datagramme wieder-<br />

herstellen. Dann können die Daten in der richtigen Reihenfolge an die entsprechende<br />

Anwendung gegeben werden. Dazu muss auf dem TCP-Zielport eine Anwendung Daten<br />

entgegennehmen. Diese Anwendung muss mit den empfangenen Daten etwas anfangen<br />

können, d.h. das Anwendungsprotokoll des Senders verstehen. Für Standarddienste wie<br />

HTTP oder E-Mail wird daher oft ein “Well Known Port“ verwendet.<br />

Zusätzlich enthält jeder TCP-Header eine Prüfsumme. Diese wird vom Sender unter<br />

anderem aus Angaben des TCP-Headers, des Datagrammes sowie den Angaben der<br />

IP-Quell- <strong>und</strong> Zieladresse gewonnen. Der Empfänger bildet seinerseits ebenfalls diese<br />

Prüfsumme <strong>und</strong> vergleicht diese mit der im TCP-Header enthaltenen. Stimmen beide<br />

überein, kann von einer erfolgreichen Übertragung ausgegangen werden.<br />

Eine Besonderheit von TCP ist die Quittierung der Datagramme. Für jedes er-<br />

folgreich empfangene TCP-Datagramm wird eine Bestätigung an den Sender zurück<br />

geschickt. Empfängt der Sender eines TCP-Datagramms nicht innerhalb einer gewis-<br />

sen Frist die Bestätigung, geht er davon aus, dass das entsprechende Datagramm nicht<br />

Diplomarbeit André Hesse


2.4 Network Address Translation NAT 21<br />

beim Empfänger angekommen ist. Das Datagramm kann dann erneut gesendet werden.<br />

Somit ist eine erfolgreiche Datenübertragung gesichert. Der Anwender kann davon aus-<br />

gehen, dass seine Daten auch sicher (d.h. unverändert) auf der Gegenseite ankommen.<br />

2.4 Network Address Translation NAT<br />

Das rasante Wachstum des Internet war bei der Entwicklung des Internet Protokolls<br />

IP nicht vorauszusehen. Zwar sind in IPv4 bei der Verwendung 32 Bit langer Adressen<br />

theoretisch 4,2 Milliarden adressierbare Knoten denkbar, praktisch können diese aber<br />

nicht alle adressiert werden. Viele Adressen fallen trotz des Einsatzes von CIDR weg.<br />

Der Umstieg auf IPv6 mit seinen 128 Bit langen Adressen wird vollzogen, ist aber noch<br />

lange nicht abgeschlossen.<br />

In vielen Unternehmen <strong>und</strong> privaten Netzwerken muss nicht jeder Computer per-<br />

manent an das Internet angeschlossen sein. Oft werden nur zeitweise Informationen<br />

aus dem Internet benötigt. Die meisten Netzwerke werden gebildet, um innerhalb ei-<br />

ner Firma oder eines Privathaushaltes Ressourcen wie Drucker oder Fileserver durch<br />

mehrere Anwender zu nutzen. Ausserdem möchte man mit anderen Anwendern eines<br />

Netzwerkes Daten austauschen. Nutzt man das IP-Protokoll innerhalb seines Netzwer-<br />

kes, stehen einem sämtliche Adressen zur freien Verfügung. Das heißt man kann alle<br />

Adressen beliebig (eindeutig) vergeben, solange kein Computer dieses Netzes an das<br />

öffentliche Internet angeschlossen ist. Geschieht dies, kann es zu Adresskonflikten kom-<br />

men. Wird eine IP-Adresse mehrmals vergeben, kann ein erfolgreiches Routing nicht<br />

mehr gewährleistet werden.<br />

Aus diesem Gr<strong>und</strong> hat die IETF bestimmte Adressbereiche zur Verwendung in priva-<br />

ten Computernetzen 7 reserviert (Siehe RFC 1597 [RMKG94]). Die reservierten Adress-<br />

bereiche sind in Tabelle 2.2 angegeben.<br />

Adressbereich<br />

10.0.0.0 - 10.255.255.255<br />

172.16.0.0 - 172.31.255.255<br />

192.168.0.0 - 192.168.255.255<br />

Kurznotation maximale Hostanzahl<br />

10.0.0.0/8<br />

172.16.0.0/12<br />

192.168.0.0/16<br />

16777216<br />

1048576<br />

65536<br />

Tabelle 2.2: Reservierte Adressbereiche im IPv4 Protokoll<br />

Aus diesen Adressbereichen sollte mit bis zu 16 Millionen Adressen ein hinreichend<br />

großer Spielraum <strong>für</strong> private Netzwerke gegeben sein. Im Internet dürfen diese Adressen<br />

7 Die Klassifizierung ” privat“ bezeichnet hier ein ” Nicht-öffentliches“ Netzwerk. Vom Internet abgeschlossene<br />

Unternehmensnetzwerke sind demnach auch als ” privat“ einzustufen.<br />

Diplomarbeit André Hesse


22 2 IP-basierte Kommunikationssysteme<br />

auf keinen Fall verwendet werden.<br />

Um nun auch Knoten eines privaten Netzwerkes einen Internetzugang zu bieten, kann<br />

ein Routert eingesetz werden. Wie in Abschnitt 2.2.2 beschrieben, könnte dieser Pakete,<br />

die aus dem privaten Netzwerk kommen, an das Internet weiterleiten. Allerdings ergibt<br />

sich hierbei ein Problem: Die Pakete der Knoten des privaten Netzwerkes hätten als<br />

Absenderadressen Adressen aus dem reservierten Adressbereich eingeschrieben. Diese<br />

dürfen jedoch nicht im Internet verwendet werden. Ihre Vergabe erfolgt auch nicht<br />

durch eine Organisation wie der ICANN, so dass durchaus mehrere Knoten mit der<br />

gleichen Adresse auftreten könnten. Damit kann eine richtige Zustellung möglicher<br />

Antwortpakete nicht gewährleistet werden. Als Empfänger würden ja mehrere Knoten<br />

in Frage kommen.<br />

Die IETF hat zur Umgehung dieser Problematik in der RFC 1631 [EgFr94] das<br />

Network Address Translation (NAT) eingeführt. NAT erlaubt die Manipulation der<br />

Absender- <strong>und</strong> Ziel-IP-Adressen eines IP-Paketes nach bestimmten Regeln. Will man<br />

ein privates Netzwerk an das Internet anschliessen, kann man einen NAT-Router als<br />

Gateway zwischen Internet <strong>und</strong> Netzwerk einfügen. In Abbildung 2.8 ist ein solches<br />

Szenario dargestellt.<br />

Der Computer mit der IP-Adresse 192.168.0.5 aus dem privaten Netz will eine<br />

Anfrage an den Computer 141.24.92.97 senden. Als Gateway ist in diesem Privatnetz<br />

der NAT-Router in der Mitte eingetragen. Dieser hat 2 Netzwerkschnittstellen. Im<br />

privaten Netz ist er durch die IP-Adresse 192.168.0.1 zu erreichen. Über das Netzwerk<br />

eines Internet Service Providers (ISP) ist der NAT-Router aus dem Internet mit der<br />

Adresse 84.184.245.99 ansprechbar.<br />

Soll er Pakete aus dem internen Netzwerk an das Internet leiten, tauscht der NAT-<br />

Router die Quelladresse aus. Anstatt der originalen Quelladresse (192.168.0.5) trägt<br />

er seine extern vom ISP vergebene IP-Adresse (84.184.245.99) ein. In einer so ge-<br />

nannten NAT-Tabelle vermerkt er dabei die original Quell- <strong>und</strong> Zieladresse der ur-<br />

sprünglichen Pakete. Für die Router im Internet <strong>und</strong> den Empfänger ist nun der NAT-<br />

Router der Sender der betreffenden IP-Pakete. Deshalb werden die Antworten an den<br />

NAT-Router adressiert.<br />

Empfängt der NAT-Router Pakete aus dem Internet, die an ihn adressiert sind<br />

(84.184.245.99), überprüft er seine Tabelle. Hat er zuvor eine zur Antwort gehörende<br />

Anfrage registriert, kann er die Antwort dem Computer aus dem privaten Netzwerk<br />

zuordnen <strong>und</strong> an diesen weiterleiten. Dazu verändert der NAT-Router nun die Ziel-<br />

adressen der Antwortpakete. Er trägt die Adresse des Computers (192.168.0.5) ein,<br />

der die ursprüngliche Anfragen gestellt hatte.<br />

Diplomarbeit André Hesse


2.4 Network Address Translation NAT 23<br />

Anfrage<br />

192.168.0.5<br />

192.168.0.7<br />

Antwort<br />

192.168.0.5<br />

192.168.0.7<br />

privates Netzwerk ISP-Netzwerk / Internet<br />

vor Übersetzung<br />

Quelle: 192.168.0.5<br />

Ziel: 141.24.92.197<br />

Daten<br />

nach Übersetzung<br />

Quelle: 141.24.92.197<br />

Ziel: 192.168.0.5<br />

Daten<br />

nach Übersetzung<br />

Quelle: 84.184.245.99<br />

Ziel: 141.24.92.197<br />

Daten<br />

192.168.0.1 84.184.245.99 84.184.0.1<br />

NAT-Router<br />

vor Übersetzung<br />

Quelle: 141.24.92.197<br />

Ziel: 84.184.245.99<br />

Daten<br />

192.168.0.1 84.184.245.99 84.184.0.1<br />

NAT-Router<br />

Abbildung 2.8: Network Address Translation im Einsatz<br />

Allerdings ergibt sich ein Problem, würde der NAT-Router nur die IP-Informationen<br />

auswerten <strong>und</strong> verändern. Wenn zwei Computer aus dem privaten Netzwerk gleichzeitig<br />

Anfragen an die selbe Adresse im Internet senden, würde NAT so wie es geschildert<br />

wurde, nicht funktionieren.<br />

Der NAT-Router müsste zwei Einträge in seiner Tabelle anlegen, deren einziger<br />

Unterschied die Quell-IP-Adressen der sendenden Computer ist. Kommt nun entspre-<br />

chende Antworten zurück, muss der NAT-Router entscheiden, an welche der beiden<br />

Originaladressen er die Antwort leiten soll (also in welche Adresse er die Zieladresse<br />

der Antwort umschreiben soll). Allein mit Hilfe des IP-Protokolls kann er dies nicht<br />

eindeutig entscheiden. Wäre im IP-Header ein zusätzliches Feld <strong>für</strong> die original Quell-<br />

Diplomarbeit André Hesse


24 2 IP-basierte Kommunikationssysteme<br />

oder Zieladresse vorhanden, könnte ein NAT-Router dieses auslesen <strong>und</strong> seine Rou-<br />

tingentscheidung danach treffen. Aber ein solches Feld existiert nicht. Man kann auch<br />

nicht einfach zusätzliche Headerdaten anfügen. Zwar ist Platz im IP-Header da<strong>für</strong> vor-<br />

handen, diesen kann man aber nicht <strong>für</strong> diesen Zweck nutzen. Denn da<strong>für</strong> müsste jedes<br />

Endsystem im Internet den Einsatz von NAT erkennen, was nur mit der Änderung der<br />

IP-Protokollimplementierung auf allen Systemen im Internet möglich wäre. Dies ist,<br />

wie die Umstellung auf IPv6, mit immensen Kosten verb<strong>und</strong>en 8 .<br />

Man bedient sich bei NAT daher eines Tricks. Für die Veränderung der IP-Quell- <strong>und</strong><br />

Zieladresse werden Angaben aus der darüber liegenden Schicht genutzt. Die meisten<br />

Protokolle der Anwendungsschicht nutzen die Protokolle TCP oder UDP der Trans-<br />

portschicht [Tane03].<br />

In Abschnitt 2.3 wurde die Verwendung von Ports im TCP-Protokoll besprochen.<br />

Ein NAT-Router verändert bei einem ausgehenden Paket nicht nur die Quelladresse im<br />

IP-Header sondern auch den Quellport des TCP- oder UDP-Headers. Der veränderte<br />

Quellport wird dabei mittels einer Indexfunktion aus der originalen Quelladresse <strong>und</strong><br />

dem originalen Quellport gebildet. Zusätzlich müssen die Prüfsummen in den Headern<br />

(IP <strong>und</strong> TCP oder UDP) neu berechnet werden. Werden Antwortpakete empfangen,<br />

können aus den Angaben Zieladresse <strong>und</strong> Zielport sowie aus dem Eintrag der NAT-<br />

Tabelle die Originaldaten extrahiert werden. Die Pakete werden entsprechend abgeän-<br />

dert. Die Prüfsummen werden neu berechnet <strong>und</strong> letztlich an den richtigen Computer<br />

des internen Netzwerkes weitergeleitet.<br />

Obwohl NAT inzwischen durch die IETF als RFC-Standard anerkannt ist, wurde<br />

seine Einführung kontrovers diskutiert. Das Schichten-Modell wird in einer gr<strong>und</strong>le-<br />

genden Weise verletzt. Eigentlich darf eine Schicht keine Annahmen über den Inhalt<br />

der Nutzdaten einer höheren Schicht bilden. Durch das Verändern des TCP/UDP-<br />

Headers durch die Vermittlungsschicht wird diese Regel verletzt. NAT funktioniert<br />

auch nur <strong>für</strong> Verbindungen die mittels TCP oder UDP 9 aufgebaut werden.<br />

Lange war die Nutzung des File Transfer Protocol (FTP) nicht möglich, da hier im<br />

Nutzdatenstrom die originalen IP-Adressen mitversendet werden. Diese stimmen dann<br />

8 Und würde auch keinen Sinn machen. Denn wenn man zur Unterstützung von NAT in allen Systemen<br />

das IPv4 Protokoll aktualisieren wollte, könnte man ja auch gleich alle Systeme auf IPv6<br />

umstellen.<br />

9 UDP selber ist ein verbindungsloses Protokoll. Hier wird keine direkte Verbindung aufgebaut, sondern<br />

einzelne UDP-Pakete an einen Empfänger versendet. Im UDP-Header gibt es daher auch<br />

keine Sequenznummern. UDP-Pakete werden nicht quittiert. Bei Verlust eines UDP-Paketes wird<br />

der Sender darüber nicht informiert. UDP wird meist von Anwendungen benutzt, bei denen es auf<br />

eine schnelle Auslieferung der Daten ankommt. Solche Anwendungen sind zum Beispiel Audiooder<br />

Videostreaming.<br />

Diplomarbeit André Hesse


2.5 Proxy 25<br />

natürlich nicht mit den IP-Adressen eines veränderten Paketes überein. Inzwischen<br />

sind aber die meisten NAT-Router in der Lage, auch solche Verbindungen korrekt zu<br />

routen.<br />

Will man selber ein Protokoll entwickeln <strong>und</strong> über das Internet Daten damit versen-<br />

den, kann dies am Einsatz von NAT scheitern. Dieser Umstand ist bei der Implemen-<br />

tierung neuer Protokolle zu beachten.<br />

NAT hat allerdings klare Vorteile: In vielen privaten Netzen wird es heute eingesetzt.<br />

Kleine Netzwerke können so den Internetzugang miteinander teilen. Oftmals reicht ein<br />

in Deutschland in vielen Orten verfügbarer Digital Subscriber Line-Zugang (DSL) aus,<br />

mehrere Computer z.B. einer Wohngemeinschaft an das Internet anzubinden.<br />

Es soll angemerkt werden, dass NAT auch durchaus mehrfach hintereinander ange-<br />

wendet werden kann. So ist es möglich, dass das Gateway eines ISP selbst Teil eines<br />

nicht öffentlichen Netzwerkes ist. Ebenso wie der Endk<strong>und</strong>e, der seinen DSL-Anschluss<br />

mittels NAT auf mehrere Computer aufteilt, könnte auch der ISP NAT verwenden, um<br />

mehrere K<strong>und</strong>en an das Internet anzubinden.<br />

2.5 Proxy<br />

In vielen größeren Firmen- oder <strong>Universität</strong>snetzwerken sollen Computer auf Dienste<br />

im Internet zugreifen können. Dabei können diese Computer durch den Einsatz von<br />

NAT private IP-Adressen aus den Bereichen 10.0.0.0, 172.16.0.0 oder 192.168.0.0<br />

verwenden. Die Anbindung des Netzwerkes an das Internet findet dabei mittels eines<br />

Gateways statt. Dieser verfügt über NAT-Fähigkeiten <strong>und</strong> kann Verbindungswünsche<br />

aus dem internen Netzwerk nach Außen realisieren. Die Internetanbindung teilen sich<br />

dabei alle Computer des internen Netzwerkes. Sollen viele Computer gleichzeitig das<br />

Internet benutzen, sinkt <strong>für</strong> den Einzelnen schnell die Datenübertragungsrate.<br />

Wollen zwei oder mehrere Computer eines internen Netzwerkes, wie in Abbildung<br />

2.9 gezeigt, die selbe Website abrufen, wird entsprechend oft eine Anfrage durch das<br />

Gateway geleitet.<br />

Das Gateway ändert gemäß seiner Konfiguration die Anfragen ab <strong>und</strong> vermerkt, von<br />

welchen Quellen sie kommen (Abschnitt 2.4). Dann wird der Server, auf dem die ange-<br />

forderte Website liegt, den Inhalt entsprechend oft an das Gateway zurücksenden. Sind<br />

auf der Website Medieninhalte wie Bilder, Audioelemente oder gar Videos enthalten,<br />

werden diese mehrfach übertragen. Das Gateway wendet seinen NAT-Algorithmus auf<br />

die ankommenden Pakete der Verbindung an <strong>und</strong> leitet die Daten an die ursprünglichen<br />

Computer zurück.<br />

Diplomarbeit André Hesse


26 2 IP-basierte Kommunikationssysteme<br />

Notebook 1<br />

192.168.0.2<br />

t<br />

Desktop 1<br />

192.168.0.2<br />

NAT Router<br />

192.168.0.1 /<br />

88.5.31.22<br />

Request www.apple.com Request www.apple.com<br />

Response www.apple.com<br />

(HTML + jpg/mp3...)<br />

Request<br />

www.apple.com<br />

Response<br />

www.apple.com<br />

(HTML + jpg/mp3...)<br />

NAT<br />

NAT<br />

NAT<br />

NAT<br />

Response www.apple.com<br />

(HTML + jpg/mp3...)<br />

Request<br />

www.apple.com<br />

Response<br />

www.apple.com<br />

(HTML + jpg/mp3...)<br />

Abbildung 2.9: Mehrfaches Abrufen einer Webseite<br />

WebServer<br />

www.apple.com<br />

17.254.3.183<br />

Viele Webseiten ändern sich aber nur relativ selten, so dass eine erneute Übertra-<br />

gung eigentlich unnötig ist. Die Internet Service Provider berechnen ihren K<strong>und</strong>en die<br />

Nutzung des Internets meist auf Basis des übertragenen Datenvolumens. Würden nun<br />

Anfragen an das selbe Ziel im Internet gesammelt <strong>und</strong> nur einmalig ausgeführt werden,<br />

könnten leicht Kosten eingespart werden.<br />

Um dies zu erreichen, wird häufig ein Webproxy eingesetzt. Dieser hat einen Spei-<br />

cher, in den besuchte Webseiten abgelegt werden. Wird eine Seite erneut angefordert,<br />

kann sie aus dem Speicher genommen werden <strong>und</strong> muss nicht erneut aus dem Internet<br />

übertragen werden. In Abbildung 2.10 ist dies dargestellt.<br />

So können schnell mehrere Megabyte eingespart werden. Erfolgt die Abrechnung vo-<br />

lumenbasiert, wird sich die Rechnung entsprechend verringern. Aber auch in Bezug auf<br />

die Übertragungsgeschwindigkeit kann ein Webproxy von Vorteil sein. Die Daten, die<br />

intern aus dem Speicher entnommen werden, müssen nicht auf der Internetleitung über-<br />

tragen werden. Gleichzeitig stattfindende Datenübertragungen anderer Verbindungen<br />

aus oder an das Internet können so ein wenig schneller ausgeführt werden. Für ein<br />

kleines Netzwerk macht der Einsatz eines Webproxys aus diesen Gründen vielleicht<br />

keinen Sinn. Sollen sich aber sehr viele Computer eine Internetanbindung teilen, ist<br />

Diplomarbeit André Hesse


2.5 Proxy 27<br />

Notebook 1<br />

192.168.0.2<br />

t<br />

Request www.apple.com<br />

Response www.apple.com<br />

(HTML + jpg/mp3...)<br />

Desktop 1<br />

192.168.0.2<br />

Request<br />

www.apple.com<br />

Response<br />

www.apple.com<br />

(HTML + jpg/mp3...)<br />

WebProxy<br />

192.168.0.1 /<br />

88.5.31.22<br />

im Speicher<br />

vorhanden?<br />

>> Nein<br />

NAT<br />

NAT<br />

Kopie in<br />

den Speicher<br />

im Speicher<br />

vorhanden?<br />

>> Ja<br />

NAT<br />

Request www.apple.com<br />

Response www.apple.com<br />

(HTML + jpg/mp3...)<br />

Abbildung 2.10: Die Arbeitsweise eines Webproxys<br />

der Einsatz eines Webproxys durchaus rentabel.<br />

WebServer<br />

www.apple.com<br />

17.254.3.183<br />

Durch einen Webproxy können auch bestimmte Seiten gesperrt werden, etwa um<br />

Jugendschutzbestimmungen einzuhalten 10 .<br />

Um einen Webproxy zu verwenden, muss jedem Computer eines Netzwerkes, der<br />

diesen Nutzen soll, die Existenz des Webproxys mitgeteilt werden. Da<strong>für</strong> muss man<br />

den verwendete Webbrowser des Anwenders entsprechend konfigurieren. Dies erfor-<br />

dert gerade in großen Netzwerken einen erheblichen Administrationsaufwand, da den<br />

meisten Anwendern eine solche Konfiguration nicht zu zumuten ist. Auch die Viel-<br />

zahl der erhältlichen Webbrowser <strong>und</strong> deren unterschiedliche Versionen erschweren die<br />

Konfiguration. Werden in einem Netzwerk, in dem ein Webproxy zur Zumgang in<br />

das Internet eingesetzt wird, die Proxyinformationen in einem Computer falsch oder<br />

gar nicht gesetzt, kann dieser Computer meist nicht auf die im Internet angebotenen<br />

10 Dies kann aber auch negative Auswirkungen habe. So wird in einigen totalitär regierten Ländern,<br />

wie China oder Nordkorea, die Nutzung des Internets dahingehend erschwert, dass auf bestimmte<br />

Webseiten nicht zugegriffen werden kann. Dies betrifft oft dem politischen System der Länder<br />

kritisch eingestellte Webseiten.<br />

Diplomarbeit André Hesse


28 2 IP-basierte Kommunikationssysteme<br />

Dienste zugreifen. Denn der Netzbetreiber hat oft entsprechende Schutzmaßnahmen<br />

(Firewalls) getroffen, um sein Netzwerk zu sichern.<br />

2.6 Transparenter Proxy<br />

Um den Aufwand der Konfiguration der Webbrowser zur Nutzung eines Proxys zu<br />

verringern, wurden Transparente Proxys entwickelt. Von der Funktionalität arbeiten<br />

sie gr<strong>und</strong>sätzlich wie herkömmliche Proxys. Der Vorteil dabei ist, dass dem Anwender<br />

der Einsatz eine solchen Proxys nicht bewusst ist. Auch müssen am Betriebssystem<br />

, bzw. dem Webbrowser, des Anwenders keine Änderungen vorgenommen werden, da<br />

auch <strong>für</strong> diese der Einsatz des Proxys nicht sichtbar ist.<br />

Der Anwender ruft auf seinem Computer mit seinem Webbrowser eine Seite im In-<br />

ternet auf. Normalerweise wird dazu eine TCP-Verbindung über Port 80 aufgebaut.<br />

Unbemerkt vom Anwender wird diese Anfrage im Proxy behandelt. Hat dieser in sei-<br />

nem Speicher eine aktuelle Version der Webseite, sendet der Proxy diese dem Anwender<br />

zurück. Der transparente Proxy verwendet dabei die Absenderadresse des ursprünglich<br />

angesprochenen Webservers. Der Anwender bekommt von diesem Vorgang nichts mit.<br />

Untersucht er die IP-Pakete <strong>und</strong> die TCP-Datagramme, welche zu der Verbindung<br />

gehören, wird er keine Unregelmässigkeiten erkennen können. Daher auch der Name<br />

“transparenter“ Proxy. Das Vorhandensein bleibt dem Anwender verborgen.<br />

Diplomarbeit André Hesse


3 Sensornetzwerke<br />

3.1 Historische Entwicklung<br />

Wie so viele technische Errungenschaften, wurde die Entwicklung von Sensoren durch<br />

militärische Einrichtungen initiiert. Während des Kalten Krieges ließ die amerikani-<br />

sche Regierung das ” So<strong>und</strong> Surveillance System“ (SOSUS) entwickeln. Dieses System<br />

besteht aus mehreren Unterwassersensoren, so genannten Hydrophone, die an strate-<br />

gisch wichtigen Punkten im Nordatlantik <strong>und</strong> im Pazifik angebracht wurden. Unter<br />

Wasser erzeugt die Bewegung eines jeden größeren Objektes, wie z. B. eines Untersee-<br />

bootes, bestimmte Ultraschallgeräusche, die von den Hydrophonen registriert werden<br />

können. Die Daten der einzelnen Hydrophone werden per Seekabel an Auswertesys-<br />

teme weitergeleitet. Dort werden die Daten analysiert <strong>und</strong> zur weiteren Auswertung<br />

aufbereitet. Feindliche Unterseeboote können so geortet <strong>und</strong> ihre Routen nachvollzo-<br />

gen werden [Whit05]. Inzwischen wird dieses System friedlich genutzt <strong>und</strong> ermöglicht<br />

Wissenschaftlern, die Ozeane auf seismische Aktivitäten zu untersuchen sowie den Zug<br />

von Walen <strong>und</strong> anderen großen Meerestieren zu beobachten [NiCo94].<br />

Der technologische Fortschritt der Halbleiterindustrie ermöglichte den Bau immer<br />

speziellerer Sensoren. Waren die ersten Sensoren nur reine ” Datensammler“, kristalli-<br />

sierte sich Anfang der 80 Jahre des letzten Jahrh<strong>und</strong>erts eine neue Betrachtungsweise<br />

heraus. Einerseits wollte man mehrere Sensoren miteinander verbinden. Dabei sollten<br />

die Sensoren untereinander Daten austauschen. Andererseits sollte die Datenauswer-<br />

tung, die bislang extern ausgeführt wurde, direkt an einzelne Sensorknoten delegiert<br />

werden.<br />

Eines der ersten Forschungsprojekte dieser Art war das ” Distributed Sensor Net-<br />

works“ -Programm (DSN) der amerikanischen ” Defense Advanced Research Projects<br />

Agency“<br />

(DARPA). Die DARPA untersteht dem ” Department of Defense“ (DoD), dem ameri-<br />

kanischen Verteidigungsministerium. 1<br />

1 Sie ist jene Einrichtung, die unter anderem mit der Entwicklung des ARPANET die Gr<strong>und</strong>lagen<br />

des heutigen Internets legte.<br />

29<br />

Diplomarbeit André Hesse


30 3 Sensornetzwerke<br />

Robert Kahn, einer der Entwickler des TCP/IP-Protokolls, war die Leitung dieses<br />

Projektes übertragen worden. Er arbeitete die Anforderungen heraus, die noch heute<br />

<strong>für</strong> die meisten modernen Sensornetzwerke gelten. Die Kernfunktionen eines Sensor-<br />

netzwerk wurden 1978 auf einem internationalen Workshop der Carnegie Mellon Uni-<br />

versity, Pittsburgh definiert. Das Thema dieses Workshops lautete ” Distributed Sensor<br />

Nets“ [proc78].<br />

Die technologischen Anforderungen an ein Sensornetzwerkes wurden nach [ChKu03]<br />

auf vier wichtige Punkte reduziert:<br />

• Sensorfunktionalität, d.h. Detektion von Umgebungsvariablen<br />

• Kooperative Kommunikation der Sensorknoten<br />

• Verarbeitung der gewonnenen Daten<br />

• Bildung Verteilter Systeme<br />

Der hier eingeführte Begriff ” Verteiltes System“ lässt sich nach [TavS03] so definieren:<br />

” Ein verteiltes System ist eine Menge voneinander unabhängiger Computer, die dem<br />

Benutzer wie ein einzelnes, kohärentes System erscheinen.“<br />

Nicht mehr ein einzelner Sensor steht im Interesse der Forschung, sondern der Ver-<br />

b<strong>und</strong> mehrerer Sensoren zu einem Netzwerk.<br />

Sieht man die vorgestellten Anforderungen im geschichtlichen Kontext, kann man<br />

die Herausforderung <strong>für</strong> die Entwicklung erkennen. Die einzelnen Komponenten waren<br />

so nicht vorhanden. Wie so oft skizzierten die Wissenschaftler Systeme, die technisch<br />

ihrer Zeit weit voraus waren.<br />

Erst 1969 war es gelungen, mehrere Computer über Telefonleitungen erfolgreich mit-<br />

einander zu koppeln [LCCK + ]. Die dabei verb<strong>und</strong>enen Computer waren Hochleistungs-<br />

rechner. Nun sollten viele kleine Sensoren miteinander gekoppelt werden, eine Aufgabe<br />

die zu diesem Zeitpunkt unlösbar erschien.<br />

Ein weiterer wichtiger Aspekt des DSN-Projektes war das so genannte ” distributed<br />

problem-solving“, was übersetzt soviel wie ” Verteiltes Problem-Lösen“ bedeutet. Meh-<br />

rere Arbeiten über dieses Problem entstanden. Nicht nur Wissenschaftler der Carnegie<br />

Mellon University waren involviert. Auch am Massachusetts Institute of Technology,<br />

Cambridge <strong>und</strong> an der University of Massachusetts, Amherst wurden Lösungen <strong>für</strong> die-<br />

se Probleme entwickelt. Mit [LeCo81] <strong>und</strong> [WHRBS + 81] sollen hier nur einige Vertreter<br />

aufgeführt werden.<br />

Diplomarbeit André Hesse


3.2 Einsatz von drahtlosen Sensornetzwerken 31<br />

Der Auftraggeber des DSN-Projektes, das amerikanische Verteidigungsministerium<br />

DoD, erkannte sehr schnell die strategischen Vorteile der Verwendung von Sensor-<br />

netzwerken. Am DoD wurde ein eigenes Programm zur Entwicklung von Sensornetz-<br />

gestützter Kriegsführung erschaffen. Diese ” neue“ Kriegsführung wurde mit dem Begriff<br />

” Network Centric Warfare“ umschrieben. Eine Abhandlung über dieses Programm<br />

beschreibt [AlGS99]. Die Autoren stellen darin den Einsatz von Sensornetzen als Mei-<br />

lenstein in der Geschichte moderner Kriegsführung dar.<br />

Ein Beispiel ist ” Cooperative Engagement Capability“ (CEC) der U.S. Navy [Team95].<br />

Dieses System besteht aus mehreren Knoten, von denen einige mittels Radar Daten<br />

über mögliche feindliche Flugobjekte sammeln. Die gesammelten Daten werden von<br />

anderen Knoten des selben Netzes verarbeitet <strong>und</strong> liefern so Zieldaten an verb<strong>und</strong>ene<br />

Abwehrstationen (Flugzeuge, Schiffe, Bodenstationen) aus.<br />

Neben dem militärischen Einsatz von Sensornetzwerken wurde auch im zivilen Sektor<br />

Forschungs- <strong>und</strong> Entwicklungsarbeit erbracht. Vorhandene Systeme werden im nächs-<br />

ten Abschnitt aufgezeigt.<br />

3.2 Einsatz von drahtlosen Sensornetzwerken<br />

In der Industrieautomation steuern Sensoren Arbeitsabläufe <strong>und</strong> ermöglichen so die<br />

automatisierte Produktion.<br />

Drahtlose Sensornetzwerke können auch zur Überwachung von land- <strong>und</strong> forstwirt-<br />

schaftlichen Gebieten eingesetzt werden. In Waldflächen können weitläufig viele kleine<br />

Sensoren ausgebracht werden, die stündlich die Temperatur messen. Wird von mehre-<br />

ren Sensoren ein sprunghafter Temperaturanstieg gemeldet, kann daraus auf ein ent-<br />

stehendes Feuer geschlossen <strong>und</strong> entsprechende Gegenmaßnahmen eingeleitet werden<br />

[SiSa03].<br />

Ein Landwirt könnte seine Wiesen mit Regensensoren ausstatten, die einmal täg-<br />

lich die Niederschlagsmenge melden. Aufgr<strong>und</strong> dieser Daten kann der Landwirt dann<br />

entscheiden, ob er seine Wiesen bewässern muss oder ob die natürliche Bewässerung<br />

ausreichend ist.<br />

Auf der ” Great Duck Island“ im US B<strong>und</strong>esstaat Maine wurde nach dieser Arbeit<br />

[MPSC + 02] ein Sensornetzwerk aus mehreren Sensorknoten aufgebaut, welches Biolo-<br />

gen einen tieferen Einblick in die Brutgewohnheiten der dort ansässigen Wasservögel<br />

erlaubte.<br />

In dieser Diplomarbeit soll ein anderes Einsatzgebiet von Sensornetzwerken, die<br />

Hausautomatisierung, betrachtet werden, auch wenn das zu untersuchende Problem<br />

Diplomarbeit André Hesse


32 3 Sensornetzwerke<br />

leicht auf andere Einsatzgebiete ausgeweitet werden kann.<br />

Zur Hausautomatisierung werden Sensornetzwerke verwendet, um die Steuerung <strong>und</strong><br />

Automation von elektrischen Systemen im Haus zu ermöglichen. Im intelligenten Haus<br />

sind alle elektrischen Geräte wie Lichtschalter <strong>und</strong> Leuchten, Temperatursensoren <strong>und</strong><br />

Heizkörper oder Alarmsensoren miteinander durch ein drahtloses Sensornetzwerk ver-<br />

b<strong>und</strong>en. Der Anwender kann alle Funktionen per Computer fernsteuern. Es können<br />

einige Sensorknoten vorhanden sein, die selbst keine sensorischen Daten liefern, aber<br />

auf solche reagieren können. So sind intelligente Lichtschalter denkbar, die bei Registra-<br />

tion einer bestimmten Schwellhelligkeit angeschlossene Leuchten an- oder ausschalten.<br />

Dabei kann die Helligkeit durch den Lichtschalter mittels eines eigenen Lichtsensensors<br />

selbst ermittelt oder von einem anderen Sensorknoten bezogen werden.<br />

3.3 Besondere Sprachregelung bei Verwendung des<br />

Begriffes ” drahtloses Sensornetzwerk“<br />

An dieser Stelle soll darauf hingewiesen werden, dass die Bezeichnung ” Sensorknoten“ in<br />

Verbindung mit ” Sensornetzwerken“ allgemein ein wenig unpräzise ist. Einzelne Sensor-<br />

knoten eines Netzes beinhalten hier nicht nur die ” sensorische“ Funktionalität, sondern<br />

können selbst auch als aktives Element fungieren. Zusätzlich müssen sie Netzwerk-<br />

funktionalität unterstützen, um untereinander Daten austauschen zu können. Spricht<br />

man von einem Sensornetzwerk, wird meist davon ausgegangen, dass es sich bei der<br />

eingesetzten Kommunikationstechnik um eine drahtlose Zugangstechnik handelt. Man<br />

lässt jedoch diesen Aspekt bei der Bezeichnung weg <strong>und</strong> spricht nur von einem Sen-<br />

sornetzwerk.<br />

In der Literatur hat sich diese Art der Definition durchgesetzt. Dieser Sprachregelung<br />

schliesst sich der Autor dieser Diplomarbeit an. Bei Abweichungen soll explizit darauf<br />

hingewiesen werden.<br />

3.4 Beispiele <strong>für</strong> drahtlose Sensornetzwerke<br />

Sucht man in der Literatur nach Beispielen <strong>für</strong> drahtlose Sensornetzwerke, stößt man<br />

zu allererst auf die ” Berkeley Motes“ <strong>und</strong> das damit verb<strong>und</strong>ene ” Smart Dust“ Projekt.<br />

Als Projekt der DARPA wurde ” Smart Dust“ an der University of California Berke-<br />

ley entwickelt [PiKa]. Viele nachfolgende Systeme setzen die Weiterentwicklungen der<br />

” Berkeley Motes“ ein. Mit dem TinyOS“, welches in Abschnitt 4.1.2.2 näher beschrie-<br />

”<br />

Diplomarbeit André Hesse


3.5 ZigBee als drahtlose Übertragunstechnik in Sensornetzwerken 33<br />

ben wird, wurde das Betriebsystem dieser Knoten als OpenSource-Software 2 öffentlich<br />

gemacht.<br />

An der FU Berlin wurde ein eigener Sensor entwickelt [Berl]. Mehrere Netzwerke<br />

wurden damit aufgebaut. In Abschnitt 4.1.1 wird eine TCP/IP-Implementierung vor-<br />

gestellt, die es erlaubt, Sensoren in IP-basierte Netzwerke zu integrieren.<br />

Im folgenden Abschnitt soll ZigBee, eine auf dem IEEE-802.15.4-Standard aufbau-<br />

ende Spezifikation, näher beschrieben werden.<br />

3.5 ZigBee als drahtlose Übertragunstechnik in<br />

Sensornetzwerken<br />

Jede Datenübertragung in Computernetzwerken erfordert die Vereinbarung eines be-<br />

stimmten Übertragungsprotokolls [Tane03]. Alle Kommunikationspartner müssen die-<br />

ses verwenden, damit eine Datenübertragung stattfinden kann.<br />

Je nach Protokoll wird eine gewisse Menge an Protokolldaten generiert <strong>und</strong> der<br />

Übertragung der Nutzdaten hinzugefügt. Das Verhältnis zwischen Nutz- <strong>und</strong> Proto-<br />

kolldaten wird Protocol Overhead genannt. Ist dieses Verhältnis sehr viel größer als 1,<br />

ist der Protocol Overhead gering. Die Übertragung mit dem eingesetzten Protokoll ist<br />

optimal. In Bezug auf Energie fallen nur wenige zusätzliche Kosten an.<br />

WLAN <strong>und</strong> Bluetooth ermöglichen je nach Version, das Senden mit hohen Datenra-<br />

ten <strong>und</strong> sind somit <strong>für</strong> die Übertragung großer Datenmengen geeignet. Moderne LANs<br />

mit Anschluss an das Internet profitieren davon. Man kann gleichzeitig im WWW<br />

surfen, E-Mails lesen oder per FTP Dateien mit Anderen austauschen.<br />

Für ein Sensornetzwerk mit seinen anfallenden geringen Datenmengen sind sie jedoch<br />

überdimensioniert. Im Szenario ” Hausautomatisierung“ fallen bei den meisten Sensor-<br />

knoten nur minimale Datenmengen an. Im einfachsten Fall sendet ein Lichtschalter in<br />

unregelmäßigen Zeitabständen seinen Status in Form von ” AN“ oder ” AUS“. Dies kann<br />

durch wenige Bytes realisiert werden.<br />

Würde man in Sensornetzen WLAN oder Bluetooth zur Datenübertragung einsetzen,<br />

wäre der Protocol Overhead sehr groß. Man müsste sehr viel Energie aufwenden, ob-<br />

wohl nur wenige Nutzdaten zu übertragen sind.<br />

Man möchte aber kleine, energiesparende <strong>und</strong> möglichst kostengünstige Sensorknoten<br />

verwenden. Diese sollen meist mittels einer Batterie oder eines Akkumulators betrie-<br />

2 OpenSourc-Programme sind Programme, deren Quellcode frei verfügbar ist. Entwickler auf der<br />

ganzen Welt können ohne rechtliche Einschränkungen an diesem Code arbeiten <strong>und</strong> eigene Veränderungen<br />

einbringen (solange das Resultat ebenfalls als OpenSource eingestuft wird).<br />

Diplomarbeit André Hesse


34 3 Sensornetzwerke<br />

ben werden.<br />

Deshalb wurde von der IEEE im Jahr 2003 der Standard ” IEEE 802.15.4“ <strong>für</strong> Perso-<br />

nal Area Network’s (PAN) freigegeben [Inst]. In diesem ist eine drahtlose Netzwerk-<br />

technologie <strong>für</strong> die Übertragung mit geringen Datenraten definiert. Trotz dieser Ein-<br />

schränkung ist IEEE 802.15.4 <strong>für</strong> Sensornetzwerke ideal. Ein Vorteil sind die geringen<br />

Energieanforderungen an die Sensorknoten. Allerdings ist die Reichweite, d.h. der ma-<br />

ximale Abstand zwischen zwei Kommunikationspartnern, sehr gering. Nur wenige 10<br />

Meter können ohne weitere Techniken, wie Repeater, überbrückt werden. Kommunika-<br />

tionspartner, die WLAN oder Bluetooth einsetzen, können durchaus mehrere h<strong>und</strong>ert<br />

Meter voneinander entfernt sein.<br />

In der Hausautomatisierung sind jedoch einige wenige Meter ausreichend, durch den<br />

Einsatz entsprechender Repeater ist dieser Wert leicht zu vergrößern.<br />

Die ZigBee-Alliance entwickelte die ZigBee-Spezifikation [ZigB], die auf dem IEEE<br />

802.15.4 Standard aufbaut. Der ZigBee-Alliance gehören viele namhafte Firmen wie<br />

” Chipcon“, “Freescale“ oder ember“ an. Eine vollständige Übersicht kann unter [ZigB]<br />

”<br />

gef<strong>und</strong>en werden. Mit ZigBee können gerade in der Hausautomatisierung leicht kleine<br />

Netzwerke aufgebaut werden. Die Entwicklung von ZigBee ist noch nicht vollstän-<br />

dig abgeschlossen. Die Hersteller arbeiten ständig an der Verbesserung der ZigBee-<br />

Spezifikation.<br />

3.5.1 Koordination in ZigBee-Netzwerken<br />

In jedem ZigBee-Netzwerk muss ein Knoten als Koordinator arbeiten. Er kümmert sich<br />

um die Vergabe der Adressen der Vermittlungsschicht des ZigBee-Protokollstapels. Der<br />

Koordinator wird als ” Personal Area Network“ -Coordinator (PAN) bezeichnet. Gr<strong>und</strong>-<br />

sätzlich können alle Knoten eines Netzes diese Funktion übernehmen. Jeder Knoten<br />

sucht nach seiner Initialisierung seine Umgebung nach vorhandenen Netzwerken ab.<br />

Findet er keines, kann er, falls er die Fähigkeiten besitzt, ein neues Netzwerk starten.<br />

Er würde dann als PAN-Coordinator fungieren.<br />

Wird ein weiterer Knoten in seiner Nähe aktiv, kann dieser dem Netzwerk beitreten.<br />

Der PAN-Coordinator wird entsprechende Maßnahmen ergreifen, um dem neuen Kno-<br />

ten eine gültige Adresse zu zuweisen (Siehe Abschnitt 3.5.3). Anschließend werden die<br />

beiden Knoten untereinander ihre Fähigkeiten austauschen. Werden weitere Knoten in<br />

das Netzwerk integriert, finden die selben Mechanismen statt. Der PAN-Coordinator<br />

weiß am Ende über die Fähigkeiten jedes einzelnen Knotens bescheid.<br />

Diplomarbeit André Hesse


3.5 ZigBee als drahtlose Übertragunstechnik in Sensornetzwerken 35<br />

3.5.2 Unterstützte Netztopologien<br />

In Abbildung 3.1 sind mögliche Netztopologien dargestellt.<br />

Stern Cluster-Tree<br />

Mesh<br />

PAN Koordinator Full Function Device (FFD) Reduced Function Device (RFD)<br />

Abbildung 3.1: Mögliche Topologien in ZigBee-Netzen (nach [ZigB])<br />

Im einfachsten Fall ist ein ZigBee-Netzwerk sternförmig aufgebaut. Zentral nimmt<br />

der PAN-Coordinator alle Anfragen einzelner Knoten entgegen. Er ist bei jeder Kom-<br />

munikation zwischen den Knoten involviert. Eine direkte Verbindung zwischen zwei<br />

Knoten existiert nicht. Netzwerke, die einer solchen Topologie folgen, sind besonders<br />

anfällig gegenüber Ausfällen. Reagiert der PAN-Coordinator nicht mehr, kann auch<br />

das Netzwerk nicht mehr arbeiten.<br />

Die zweite Netztopologie wird als “Cluster Tree“-Topologie bezeichnet. An einen<br />

PAN-Coordinator können mehrere Knoten sternförmig angeschlossen werden, die wie-<br />

derum selber der zentrale Punkt einer Sterntopologie sind. Wollen zwei entfernte Kno-<br />

ten miteinander kommunizieren, werden ihre Daten entsprechend durch das Netz ge-<br />

routet.<br />

Können alle Knoten untereinander ohne Zuhilfenahme des PAN-Koordinators Daten<br />

austauschen, spricht man von einer Mesh- oder Peer-to-Peer-Topologie. Zwar ist auch<br />

hier ein PAN-Coordinator <strong>für</strong> die Vergabe von Adressen zuständig, die eigentliche<br />

Kommunikation zwischen den Knoten regeln diese aber selbstständig.<br />

In Abbildung 3.1 wird eine weitere Unterscheidung deutlich. ZigBee Knoten werden<br />

in die zwei Arten ” Full Function Device“ (FDD) <strong>und</strong> ” Reduced Function Device“ (RFD)<br />

unterschieden. Ein FDD kann mehrere Funktionen gemäß der ZigBee-Spezifikation er-<br />

bringen, während die Funktionalität von RFDs eingeschränkt ist. Die Rolle des PAN-<br />

Coordinator kann immer nur ein FDD übernehmen [ZigB]. In den Netztopologien<br />

” Cluster-Tree“ <strong>und</strong> Mesh“ können einige der Knoten auch Routingfunktionen über-<br />

”<br />

nehmen. Sie leiten dann Daten durch das Netzwerk. Dazu führen sie Routingtabellen,<br />

Diplomarbeit André Hesse


36 3 Sensornetzwerke<br />

in denen die kürzesten Wege beschrieben werden 3 .<br />

Die gezeigten Topologien müssen aber nicht mit den physikalischen Gegebenheiten<br />

übereinstimmen. So kann es durchaus vorkommen, dass zwei Knoten räumlich neben-<br />

einander liegen. Beide können jedoch je nach Topologie nicht direkt miteinander kom-<br />

munizieren, sondern müssen unter Umständen einen weit entfernten PAN-Coordinator<br />

beanspruchen.<br />

3.5.3 Adressierung in ZigBee-Sensornetzwerken<br />

Das im Kapitel 2 eingeführte Schichtenmodell kann auch <strong>für</strong> ZigBee angewendet wer-<br />

den. Die IEEE hat in ihrem IEEE 802.15.4 Standard die unteren beiden Schichten, die<br />

Bitübertragungs- <strong>und</strong> die Netzwerkschicht definiert. Darauf aufbauend wurden durch<br />

die ZigBee-Alliance zwei weitere Schichten festgelegt. Abbildung 3.2 zeigt vereinfacht<br />

den ZigBee-Protokollstapel.<br />

Anwendungsschicht<br />

Netzwerkschicht<br />

NWK Sicherheits-<br />

Management<br />

Sicherungsschicht<br />

Bitübertragungsschicht<br />

Anwendung<br />

868/915 MHz Funkzugriff<br />

Anwendungsumgebung<br />

Anwendungsunterstützung<br />

NWK Nachrichten-<br />

Management<br />

ZigBee<br />

Device Objects<br />

(ZDO)<br />

NWK Routing-<br />

Management<br />

2.4 GHz Funkzugriff<br />

Abbildung 3.2: Der ZigBee-Protokollstapel (nach [ZigB])<br />

3 Auch der PAN-Coordinator muss eine solche Tabelle vorhalten, schließlich ist er vor allem in der<br />

Stern-Topologie <strong>für</strong> das Routing von Daten verantwortlich.<br />

Diplomarbeit André Hesse


3.5 ZigBee als drahtlose Übertragunstechnik in Sensornetzwerken 37<br />

Abweichend vom Internetreferenzmodell sind insgesamt nur vier Schichten definiert.<br />

Die genaue Funktionsweise kann der Spezifikation [ZigB] entnommen werden. An dieser<br />

Stelle soll nur auf einige Punkte hingewiesen werden.<br />

In ZigBee-Netzwerken können die einzelnen Knoten über verschiedene Methoden<br />

adressiert <strong>und</strong> angesprochen werden. Sowohl der IEEE-Standard als auch die darauf<br />

aufbauende ZigBee-Spezifikation führen eigene Adressen ein. Mit diesen kann sowohl<br />

ein Knoten als auch ein logischer Endpunkt an diesem Knoten eindeutig identifiziert<br />

werden.<br />

3.5.3.1 IEEE-Adresse<br />

In der Netzwerkschicht (OSI-Schicht 2) werden 64 Bit lange Adressen verwendet, wel-<br />

che dem IEEE EUI-64 Format entsprechen [IEEE]. Eine solche Adresse könnte etwa<br />

ca:ed:84:ff:ff:32:54:76 sein. Diese Adressen kann man mit den ” Medium Access<br />

Control“ -Adressen des Internetreferenzmodells vergleichen. Auch hier wird jedem Kno-<br />

ten, der auf das Funkmedium zugreifen will, eine eindeutige Adresse zugewiesen. Die<br />

Vergabe erfolgt, ähnlich wie bei der MAC-Adresse von Internetsystemen, durch den<br />

Hersteller. Somit soll garantiert werden, dass kein Knoten dieselbe IEEE-Adresse wie<br />

ein anderer erhält.<br />

3.5.3.2 NWK-Adresse<br />

Auf der nächst höheren Schicht, der Vermittlungsschicht, werden durch die ZigBee<br />

Alliance 16-Bit lange, so genannte Network-Adressen (NWK) definiert 4 . Vergleicht<br />

man den ZigBee Protokollstapel mit dem TCP/IP Protokollstapel, könnte man die<br />

NWK-Adresse mit der IP-Adresse gleichsetzen. Beide werden in der selben Schicht<br />

eingesetzt. Allerdings treten Unterschiede in den verwendeten Protokollen auf. Eine<br />

NWK-Adresse wird hexadezimal ausgeben <strong>und</strong> kann im Bereich von 0x00 bis 0xff<br />

liegen.<br />

Die Vergabe der NWK-Adresse erfolgt zentral durch den PAN-Coordinator. Wäh-<br />

rend der Kommunikation in einem ZigBee-Netz wird nicht immer die IEEE-Adresse<br />

verwendet. Stattdessen wird die Adressierung mit Hilfe der NWK-Adresse durchge-<br />

führt. Die Routingtabellen des PAN-Coordinators <strong>und</strong> der ZigBee-Router können so<br />

4Der englische Begriff Network-Address kann in der deutschen Übersetzung leicht zu Verwirrung<br />

führen. Im ISO-OSI Referenzmodell heißt Schicht 2 Data Link Layer“, wird aber im Deutschen mit<br />

”<br />

” Sicherungsschicht“ übersetzt. Die dritte Schicht, im Englischen mit Network Layer“ bezeichnet,<br />

”<br />

wird im Deutschen als Vermittlungsschicht“ bezeichnet. Da ZigBee ein relativ neuer Standard ist,<br />

”<br />

lassen sich kaum deutsche Literaturangaben finden. In dieser Arbeit wird deshalb der englische<br />

Begriff Network-Address“ oder kurz NWK-Adresse“ verwendet.<br />

” ”<br />

Diplomarbeit André Hesse


38 3 Sensornetzwerke<br />

verkleinert werden, wodurch sowohl Speicherplatz als auch Energie eingespart werden<br />

können.<br />

3.5.3.3 Binding<br />

In ZigBee-Netzwerken muss nicht jeder physikalische Endpunkt einen eigenen Zugang<br />

zum drahtlosen Netzwerk haben. Einzelne Knoten eines Netzwerkes können durch-<br />

aus mehrere Endpunkte verwalten. Diese Endpunkte teilen sich den Medienzugriff. Im<br />

Beispiel, welches in der Abbildung 3.3 dargestellt ist, können die beiden Schalter auf<br />

dem linken Sensorknoten verschiedene Leuchten eines anderen Sensorknotens steuern.<br />

Damit ein Schalter eine der Leuchten ansprechen kann, muss er diese adressieren kön-<br />

Funkzugriff<br />

Schalter 1<br />

Schalter 2<br />

Funkzugriff<br />

Leuchte 1 Leuchte 2 Leuchte 3<br />

Abbildung 3.3: Endpunkte in ZigBee (nach [ZigB])<br />

nen. Durch die bislang erläuterten Adressen (IEEE- <strong>und</strong> NWK-Adresse) ist dies nicht<br />

eindeutig möglich. Der Schalter kann zwar den Knoten, auf dem sich die zu kontrollie-<br />

rende Leuchte befindet, identifizieren <strong>und</strong> ansprechen, aber die direkte Steuerung der<br />

Leuchte allein mit den IEEE- <strong>und</strong> NWK-Adressen ist nicht möglich.<br />

Um dieses Problem zu Lösen, wurde ein dem Portkonzept des TCP/UDP-Protokolls<br />

(siehe Abschnitt 2.3) ähnlicher Ansatz gewählt. Zum besseren Verständnis soll noch<br />

einmal die Schicht 4 des ZigBee-Protokollstapels genauer betrachtet werden (Abbildung<br />

3.4).<br />

Die Anwendungsschicht ist in verschiedene Elemente aufgeteilt. Der ” Application<br />

Support Sublayer“ (APS) gewährleistet die Dienstnutzung der Vermittlungsschicht <strong>für</strong><br />

Diplomarbeit André Hesse


3.5 ZigBee als drahtlose Übertragunstechnik in Sensornetzwerken 39<br />

Anwendungsschicht<br />

Anwendung<br />

Anwendungsumgebung<br />

Application Support Sublayer (APS)<br />

Anwendungsunterstützung<br />

ZigBee<br />

Device Objects<br />

(ZDO)<br />

Abbildung 3.4: Die Anwendungsschicht im ZigBee Protokollstapel<br />

die beiden Elemente ” ZigBee Device Objects“ (ZDO) <strong>und</strong> “Application Frameworks“<br />

(AF). Jeder Knoten besitzt ein ZDO. In diesem wird festgehalten, wie der Knoten ar-<br />

beitet (FDD oder RFD, PAN-Coordinator oder normaler Knoten) <strong>und</strong> welche Einstel-<br />

lungen getroffen wurden. Ebenfalls ist eine Schnittstelle zu den Sicherheitsfunktionen<br />

im ZDO integriert.<br />

Das interessante an ZigBee ist das Application Framework. Hier können mehrere<br />

Anwendungen auf einem Knoten ausgeführt werden. Diese Anwendungen können <strong>für</strong><br />

den Anwender dann die Funktionalität eines Schalters, einer Lampe (deren Steuerung)<br />

oder eines Temperatursensors bieten.<br />

Jeder Anwendung wird dabei eine eigene Endpunktnummer (EndPoint ID) vergeben.<br />

Dies geschieht durch das ZDO. Insgesamt sind 255 Nummern vorhanden (Länge 8 Bit).<br />

Dabei ist Nummer 0 standardmäßig dem ZDO zugeordnet. Die Nummern 241-255 sind<br />

reserviert, so dass maximal 240 Anwendungen (Endpunktnummer 1-240) pro Knoten<br />

realisierbar sind.<br />

Ein jeder Knoten eines Netzwerkes führt eine so genannte Binding-Tabelle, in der die<br />

Beziehungen der einzelnen Endpunkte untereinander verzeichnet sind. Dabei können<br />

auch ” Verbindungen“ zu Endpunkten anderer Knoten vorhanden sein. Anhand dieser<br />

Tabellen können Daten <strong>und</strong> Kommandos zwischen den einzelnen Endpunkten ausge-<br />

tauscht werden.<br />

Diplomarbeit André Hesse


40 3 Sensornetzwerke<br />

3.5.4 Profilunterstützung in ZigBee<br />

Um eine reibungslose Zusammenarbeit der einzelnen Knoten <strong>und</strong> damit der einzelnen<br />

Anwendungen zu gewährleisten, wurde der Einsatz von Profilbeschreibungen festge-<br />

legt. Die ZigBee-Alliance überwacht die Erstellung solcher Profile. In ihnen sind alle<br />

Funktionalitäten festgelegt, über die ein Endpunkt verfügt.<br />

Vereinfacht lassen sich die Profil wie folgt beschreiben: Eine Leuchte könnte zum Bei-<br />

spiel das Profile ” Einfache Leuchte“ unterstützen. Damit wissen alle anderen Anwen-<br />

dungen, dass eine solche Leuchte zwei Funktionen hat: ” An“ <strong>und</strong> ” Aus“. Eine technisch<br />

fortgeschrittenere Leuchte ist vielleicht dimmbar. Dann könnte sie das Profil “Dimm-<br />

bare Leuchte“ unterstützen. Dieses erlaubt vier Funktionen: ” An“, ” Aus“, “Aufhellen“<br />

<strong>und</strong> ” Abdunkeln“.<br />

Indem sich alle Hersteller von ZigBee-konformer Hardware an diese Profile halten<br />

müssen, sollen Inkompatibilitäten vermieden werden.<br />

Natürlich kann jeder Hersteller eigene Profile entwickeln <strong>und</strong> bei der ZigBee-Alliance<br />

zur Bestätigung einreichen. Ist dies erfolgreich, wird das Profil in die Spezifikation<br />

aufgenommen <strong>und</strong> kann auch von anderen Herstellern genutzt werden.<br />

Jeder Knoten kann dabei bis zu 240 verschiedene Profile unterstützen, die jeweils im<br />

Application Framework durch die Endpunktnummern adressiert werden können.<br />

Diplomarbeit André Hesse


4 Kopplung von Sensornetzwerken an<br />

IP-basierte Kommunikationssysteme<br />

Ist ein Haus mit einem Sensornetzwerk ausgestattet, liegt der Wunsch nahe, dieses auch<br />

per Computer fernzusteuern. Vielfältige Szenarien bieten sich an: So könnten Eltern<br />

bequem vom Sofa aus mittels eines PDA’s überprüfen, ob die Kinder im Stockwerk<br />

darüber auch wirklich die Lichter gelöscht haben 1 . Lohnt sich der Weg in den Keller<br />

oder ist die Buntwäsche noch nicht fertig gewaschen?<br />

Im Urlaub könnten misstrauische Zeitgenossen überprüfen, ob die Reinigungskraft<br />

auch wirklich zur später abgerechneten Zeit im Haus war. Oder ob es sich bei der<br />

Meldung eines Bewegungssensors um den Raub der Hausjuwelen handelt. Im letzten<br />

Fall könnte das vernetzte Heim automatisch ein auf Gr<strong>und</strong> einer Bewegungsmeldung<br />

aufgenommenes Bild des mutmaßlichen Täters an die lokalen Polizeidienststellen wei-<br />

terleiten.<br />

Für drahtgeb<strong>und</strong>ene Sensornetzwerke gibt es zahlreiche Ansätze, eine direkte Kopp-<br />

lung an Computernetzwerke durchzuführen, welche auf dem IP-Protokoll basieren. Im<br />

Bereich der drahtlosen Sensornetzwerke, die Gegenstand dieser Arbeit sind, ist dies<br />

aber ungleich schwerer.<br />

Bei der Entwicklung von Sensornetzwerktechnologien werden folgende Forderungen<br />

an die einzelnen Knoten gestellt:<br />

• Energieeffizienz <strong>und</strong> lange Laufzeiten<br />

• Kompakte Bauweise<br />

• Kostengünstige Herstellung<br />

Der wichtigste Punkt ist die Forderung nach einer guten Energieeffizienz [ChKu03]<br />

[EsRGK99] . In drahtlosen Netzwerken sind die meisten Knoten ohne feste Anbindung<br />

an das Stromnetz konzipiert. Diese Knoten arbeiten dabei mit Einwegbatterien oder<br />

1 Inwieweit dies rechtlich zu bewerten ist (Eingriff in die Privatsphäre der Kinder), ist nicht Gegen-<br />

stand dieser Arbeit.<br />

41<br />

Diplomarbeit André Hesse


42 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

Akkumulatoren. Da man nicht ständig die Batterien austauschen will, sollten die Kno-<br />

ten sehr energiesparend arbeiten. Durch diese Forderung verfügen die Knoten oft nur<br />

über eingeschränkte Rechenfähigkeiten. Dabei werden Abstriche bei der Ausstattung<br />

des Arbeitsspeichers <strong>und</strong> den verwendeten Prozessoren gemacht. Es wird nur soviel<br />

investiert, wie <strong>für</strong> die eigentlichen Aufgaben notwendig ist.<br />

4.1 Mögliche Ansätze zur Kopplung<br />

Sollen Knoten zweier verschiedener Netzwerke miteinander kommunizieren können,<br />

müssen sie sich auf die Verwendung eines Protokolls verständigen. Kann dies nicht<br />

vereinbart werden, ist eine direkte Kommunikation nicht möglich (Abbildung 4.1a.).<br />

Um dieses Problem zu lösen, gibt es prinzipiell nur zwei Möglichkeiten:<br />

Ein Weg ist die Implementierung eines der Protokolle in beiden Netzwerken (Ab-<br />

bildung 4.1b.). Zusätzlich zum eigentlichen Protokoll können die Knoten des einen<br />

Netzwerks auch das Protokoll des anderen benutzen. Damit können alle Knoten der<br />

beiden Netzwerke miteinander kommunizieren.<br />

Die zweite Möglichkeit führt zur Integration eines Protokollumsetzers. Dieser fun-<br />

giert als Mittler zwischen den Knoten der beide Netzwerke <strong>und</strong> wird in ihre Kommuni-<br />

kation eingeschleift (Abbildung 4.1c.). Der Protokollumsetzer hat zwei Schnittstellen.<br />

Beide unterstützen jeweils ein Protokoll. Will ein Knoten aus dem einen Netzwerk mit<br />

einem Knoten aus dem anderen kommunizieren, wird der Protokollumsetzer die Daten<br />

<strong>und</strong> Kommandos in die entsprechenden Strukturen des anderen Protokolls transformie-<br />

ren <strong>und</strong> in das zweite Netzwerk weiterleiten. In Gegenrichtung wird die Transformation<br />

umgekehrt durchgeführt.<br />

Für beide Möglichkeiten sind verschiedene Lösungsansätze in der Literatur zu finden,<br />

von denen einige beispielhaft im Folgenden aufgezeigt werden sollen.<br />

Diplomarbeit André Hesse


4.1 Mögliche Ansätze zur Kopplung 43<br />

a.)<br />

b.)<br />

c.)<br />

IP<br />

IP: 10.8.0.1<br />

IP<br />

IP: 10.8.0.1<br />

IP<br />

IP: 10.8.0.1<br />

IP: 10.8.0.2<br />

IP: 10.8.0.2<br />

IP ZigBee<br />

IP<br />

IP ZigBee<br />

Protokollumsetzer<br />

ZigBee<br />

NWK: 1xaa<br />

ZigBee<br />

NWK: 1xaa<br />

NWK: ax22<br />

ZigBee + IP<br />

NWK: 1xaa<br />

IP: 10.8.0.5<br />

NWK: ax22<br />

IP: 10.8.0.6<br />

IP: 10.8.0.2 NWK: ax22<br />

NWK: 0x3c<br />

NWK: 0x3c<br />

IP: 10.8.0.7<br />

NWK: 0x3c<br />

Abbildung 4.1: Mögliche Ansätze zur Kopplung von Systemen, hier am Beispiel von<br />

IP- <strong>und</strong> ZigBee-Netzwerken<br />

a.) Beide Netzwerke nutzen unterschiedliche Protokolle. Eine direkte<br />

Kommunikation zwischen den Netzwerken ist nicht möglich<br />

b.) Im ZigBee-Netzwerk (rechts) wurde das IP-Protokoll implementiert.<br />

Die ZigBee-Knoten erscheinen als Knoten im IP-Netzwerk<br />

c.) Ein Protokollumsetzer transformiert die Protokolldaten der Knoten<br />

der beiden Netzwerke in das jeweils andere Protokoll<br />

Diplomarbeit André Hesse


44 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

4.1.1 Implementierung der TCP/IP-Suite in Sensornetzwerke<br />

In der Literatur wird häufig argumentiert, dass die Anforderungen an die Knoten eines<br />

drahtlosen Sensornetzwerks energieeffizient <strong>und</strong> kostengünstig zu arbeiten, die Nutzung<br />

der TCP/IP-Protokollsuite nicht erlaubt [Dunk03], [ZhGu04]. Die meisten drahtlosen<br />

Sensornetzwerke sind so ausgelegt, dass die vorhandene Rechenkapazität der einzelnen<br />

Knoten nicht ausreicht, die komplexen Routingalgorithmen zu verarbeiten.<br />

Am ” Swedish Institute of Computer Science“ wurde federführend von Adam Dun-<br />

kels die Implementierung der TCP/IP-Protokollsuite in Sensornetzwerke vorgestellt.<br />

In [Dunk03] wurde zunächst der TCP/IP-Protokollstapel angepasst, um ihn auch<br />

auf 8-Bit-Systemen ausführen zu können. Der original TCP/IP-Code ([Post81b] <strong>und</strong><br />

[Post81c]) umfasst einige h<strong>und</strong>ert Kilobyte, die Verarbeitung erfordert ebenso eini-<br />

ge h<strong>und</strong>ert Kilobyte Arbeitsspeicherkapazität. Somit müssen zur Verarbeitung von<br />

TCP/IP Verbindungen mehrere h<strong>und</strong>ert Kilobyte Arbeitsspeicher vorhanden sein. Die<br />

meisten Sensorknoten sollen aber mit weniger als h<strong>und</strong>ert Kilobyte Arbeitsspeicher aus-<br />

kommen. Damit schliesst sich die Nutzung der herkömmlichen TCP/IP-Implementierungen<br />

aus.<br />

Dunkels stellt in [Dunk03] <strong>und</strong> [DuAV04] 2 eigene Implementierungen vor. Die eine<br />

wird als lwIP (lightweight IP) bezeichnet. Sie integriert die Protokolle IP, ICMP, UDP<br />

<strong>und</strong> TCP in vereinfachter Form. Dabei wurde der frei erhältliche Code der originalen<br />

Protokolle neu geschrieben <strong>und</strong> durch geeignete Programmierung vereinfacht. Durch<br />

diese Vereinfachungen konnte er auch auf einem 8-Bit System laufen. Als Testsystem<br />

wurde ein an der FU Berlin entwickeltes ” Embedded Sensor Board“ [Berl] verwen-<br />

det, obgleich auch andere Hardware inzwischen diesen Protokollstapel unterstützen<br />

[DFGV04]. In der zweiten Implementierung uIP wird eine noch stärkere Verringerung<br />

des Speicheraufwands erreicht, indem nur die notwendigsten Fähigkeiten implementiert<br />

wurden [Dunk03].<br />

Ein weiterer Nachteil, der gegen den Einsatz der TCP/IP-Suite in Sensornetzwerken<br />

spricht, ist der in Abschnitt 3.5 schon angeführte Protokolloverhead. Mit minimalen<br />

Headergrößen von 28 Byte bei Verwendung von IP/UDP (20 Byte (IP) + 8(UDP))<br />

bzw. sogar 40 Byte bei IP <strong>und</strong> TCP (je mind. 20 Byte) fällt der Protokolloverhead bei<br />

Sensordatenmengen von wenigen Bytes sehr hoch aus. Durch geeignete Mechanismen<br />

zur Headerkompression, die in den RFC’s 2507 [DeNP99] <strong>und</strong> RFC 1144 [Jaco90]<br />

beschrieben werden, kann der Protokolloverhead vermindert werden. Dies setzt jedoch<br />

voraus, dass alle beteiligten Knoten diese Kompressionen unterstützen.<br />

Dies stellt auch einen Kritikpunkt an der Implementierung dar. Im Internet nutzen<br />

längst nicht alle Knoten TCP/IP-Headerkompression. Die beiden angeführten RFC’s<br />

Diplomarbeit André Hesse


4.1 Mögliche Ansätze zur Kopplung 45<br />

sind auch nicht als Standard bewertet, sondern haben noch den Status ” Proposed<br />

Standard“ (Vorgeschlagener Standard). Wann <strong>und</strong> ob sie sich als Standard durchsetzen<br />

bleibt vorerst ungewiss. Somit ist eine direkte Kopplung der Sensorknoten, die den<br />

lwIP- oder uIP-Protokollstapel nutzen, an das Internet nicht gegeben.<br />

Ein nächstes Problem, das sich ergibt, ist die Vergabe der notwendigen IP-Adressen.<br />

Die in etablierten Netzwerken eingesetzten Protokolle ARP, RARP <strong>und</strong> DHCP zur<br />

automatischen Adressvergabe werden in Dunkels Arbeiten nicht unterstützt. So bliebe<br />

nur eine manuelle Adressvergabe.<br />

Dunkels bietet einen interessanten Ausweg an. Dieser wird als ” Spatial IP-Address<br />

Assignment“ (am ehesten mit ” IP-Adress-Vergabe auf Basis der Position“ zu über-<br />

setzen) bezeichnet ([DuAV04] <strong>und</strong> [DFGV04]). Dabei wählen sich die Knoten ihre<br />

IP-Adresse durch ihre gegenwärtige Position. In Abbildung 4.2 soll dies verdeutlicht<br />

werden.<br />

4<br />

3<br />

2<br />

1<br />

0<br />

B 10.0.1.3<br />

A<br />

10.0.0.1<br />

C 10.0.4.2<br />

0 1 2 3 4<br />

4<br />

3<br />

2<br />

1<br />

0<br />

A<br />

10.0.0.1<br />

B 10.0.3.4<br />

C 10.0.3.1<br />

0 1 2 3 4<br />

Abbildung 4.2: Spatial IP-Address Assignment [DuAV04]<br />

Verändert ein Knoten seine Position, soll er auch automatisch seine IP-Adresse än-<br />

dern. Dabei sollen die letzten beiden Tupel der IP-Adresse die Lage in einem virtuellen<br />

X-Y Koordinatensystem darstellen. Die einzelnen Knoten sollen ihre Position mittels<br />

geeigneter Technologien, wie dem Global Positioning System (GPS), ermitteln.<br />

Leider werden verschiedene Probleme, die sich durch dieses Modell ergeben, nicht nä-<br />

her erläutert. So bleibt unklar, wie die Änderung der IP-Adresse bei einer Bewegung ei-<br />

nes Knotens stattfindet. Vergleicht man dies mit einem Handover in Mobilfunk-Netzen<br />

müssen auch hier Ping-Pong-Effekte vermieden werden.<br />

Unklar bleibt auch, wie der Fall behandelt wird, dass sich zwei Knoten an einem<br />

gleichen Ort befinden bzw. sich dorthinbegeben wollen. Wer bekommt dann die IP-<br />

Adresse?<br />

Schließlich wird ein wichtiger Aspekt komplett vernachlässigt. Der beschriebene An-<br />

satz wird nur <strong>für</strong> eine Verteilung der Knoten auf einer Ebene beschrieben. Eine Be-<br />

trachtung der 3. Dimension wird nicht aufgezeigt.<br />

Diplomarbeit André Hesse


46 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

Wird ein Sensorknoten mit einer entsprechenden IP-Implementierung an ein IP-<br />

Netzwerk angekoppelt, muss er jedes eingehende IP-Paket untersuchen. Dazu wird der<br />

Header analysiert <strong>und</strong> die Adressangaben ausgewertet. Betreffen die Pakete diesen<br />

Knoten werden sie entsprechend weiterverarbeitet. Anderen Falls werden die Pakete<br />

verworfen. In einem größeren Netzwerk können so schnell einige 100 Pakete pro Sekun-<br />

de eintreffen. Der Knoten muss alle Pakete auswerten, was zu einer ständigen Belastung<br />

der Energieressourcen führt. Da Sensorknoten in drahtlosen Sensornetzwerken meist<br />

mit Batterien oder Akkumulatoren betrieben werden, sind die Energieressourcen da-<br />

durch begrenzt. Sensorknoten sollen aber mit einer Batterie bzw. Akkuladung mehrere<br />

Monate oder Jahre auskommen.<br />

Diese Umstände sprechen gegen eine Implementierung des IP-Protokolls in drahtlose<br />

Sensornetzwerke.<br />

4.1.2 Protokollumsetzer<br />

In vielen Arbeiten haben Forscher die Umsetzung von Protokollen zur Kopplung zwei-<br />

er Systeme untersucht. Zahlreiche Produkte <strong>für</strong> jeden Anwendungsfall sind auf dem<br />

Markt verfügbar. Im Allgemeinen werden im Sensornetzwerk ein oder mehrere Gate-<br />

ways installiert. Diese Gateways haben, wie in Abschnitt 2.5 schon beschrieben, die<br />

Aufgabe, die Daten <strong>und</strong> Kommandos des Sensornetzwerkes in ein anderes Protokoll<br />

umzuwandeln. Nachfolgend sollen zwei Ansätze aufgezeigt werden.<br />

4.1.2.1 OSGi-Alliance<br />

Die ehemals mit dem Namen Open Services Gateway Initiative auftretende OSGi-<br />

Alliance [OSGia], ist eine Kooperation verschiedener Firmen. Als Beispielmitglieder<br />

sollen hier nur die ” BMW Group“, ” Deutsche Telekom“, ” IBM“, ” Intel“ <strong>und</strong> ” Nokia“<br />

genannt werden. Eine vollständige Auflistung kann unter [OSGib] eingesehen werden.<br />

Das Ziel der OSGi-Alliance ist, eine offene Service-Plattform <strong>für</strong> verschiedenste An-<br />

wendungen zu erschaffen. Dabei sollen alle gängigen Netzwerktechnologien unterstützt<br />

werden. Sowohl in der Heimautomation, im Fahrzeugbetrieb <strong>und</strong> im mobilen Umfeld<br />

kann OSGi eingesetzt werden.<br />

OSGi definiert ein Framework, welches durch entsprechende Implementierungen auf<br />

nahezu jeder Hardware eingesetzt werden kann. Als Entwicklungsumgebung wird der<br />

offene Industriestandard Java der Firma Sun eingesetzt [Sun]. Abbildung 4.3 stellt das<br />

Framework von OSGi dar.<br />

Vergleicht man diese Struktur mit dem ISO-OSI-Referenzmodell können Ähnlichkei-<br />

Diplomarbeit André Hesse


4.1 Mögliche Ansätze zur Kopplung 47<br />

Logging<br />

Dienstübersicht<br />

OSGi Framework<br />

verwaltete<br />

Anwendungen<br />

<strong>und</strong> Dienste<br />

Eigenschaften<br />

Nutzeradministration<br />

OSGi-kompatible Java-<br />

Laufzeitumgebung (z.B. J2ME)<br />

Endgerät Betriebssystem<br />

(z.B. Windows Mobile, Embedded Linux)<br />

Endgerät Hardware / Netzzugang<br />

andere<br />

Dienste<br />

Abbildung 4.3: OSGi Framework Architektur <strong>für</strong> OSGi Anwendungen [OSGia]<br />

ten festgestellt werden. Für die Anwendungen im OSGi-Framework ist es unerheblich,<br />

mit welchen Netzwerktechnologien ihre Daten zu OSGi-Anwendungen in anderen Sys-<br />

temen transportiert werden.<br />

Ein weiterer Vorteil bei der Verwendung von OSGi ist die Erweiterbarkeit durch<br />

Modularität. Im OSGi-Framework sind die Anwendungen als Plugins realisiert. Damit<br />

kann man sich <strong>für</strong> die jeweilige Aufgabe das entsprechende Plugin heraussuchen <strong>und</strong><br />

integrieren. Die Plugins lassen sich im laufenden Betrieb des Systems hinzuladen, ter-<br />

minieren <strong>und</strong> warten. Durch entsprechende Schnittstellen der OSGi-Implementation<br />

wird dies erreicht. Hinzu kommt, dass nicht nur Java-Anwendungen laufen können 2 , es<br />

ist auch möglich, native Anwendungen auszuführen. Damit können die Besonderheiten<br />

der eingesetzten Hardware beachtet werden.<br />

OSGi-Anwendungen, die in diesem Framework arbeiten, können über entsprechende<br />

Hardwareschnittstellen mit Anwendungen auf anderen OSGi-Geräten kommunizieren.<br />

Dabei fungiert ein OSGi-fähiges Gateway als Protokollumsetzer zwischen den verschie-<br />

2 Der Vorteil von Java ist die Universalität der Programme. Java ist eine plattformunabhängige<br />

Sprache. Für nahezu jede Hardwareplatform stehen Java-Implementierungen zur Verfügung. Java-<br />

Programme können ohne Neukompilierung auf jeder Java-Implementation laufen.<br />

Diplomarbeit André Hesse


48 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

denen Netzwerktechnologien (Abbildung 4.4).<br />

OSGi-Gateway<br />

OSGi-LAN OSGi-Telefonnetzwerk<br />

OSGi-Sensornetzwerk<br />

Abbildung 4.4: Kommunikation zwischen Endgeräten mit einem OSGi-Gateway<br />

Mit entsprechenden Komponenten ausgerüstet, könnte solch ein Gateway auch durch-<br />

aus über das Internet angesprochen werden. So bietet unter anderem die Firma ProSyst<br />

[GmbH], selbst ein Mitglied der OSGi-Alliance, eine Lösung an, das eigene Heim über<br />

das Internet fernzusteuern. Dabei können alle OSGi-fähigen Endgeräte des Hauses mit<br />

gängigen Protokollen wie HTTP, E-Mail oder per Short Message Service (SMS) mit<br />

einem Mobiltelefon angesprochen werden.<br />

Wie die Daten repräsentiert werden, bleibt dem Entwickler des OSGi-Plugins über-<br />

lassen. So könnte der Zustand eines Sensornetzwerkes graphisch dargestellt werden.<br />

Die Attribute der einzelnen Sensorknoten könnten angezeigt <strong>und</strong>, so weit dies Sinn<br />

macht, auch verändert werden.<br />

Für nahezu jeden Anwendungsfall gibt es auf den OSGi-Spezifikationen basierende<br />

Systeme.<br />

Während der Erarbeitung dieser Diplomarbeit, war nicht zu erkennen, ob es eine Im-<br />

plementierung des OSGi-Frameworks <strong>für</strong> Sensornetzwerke, die der ZigBee-Spezifikation<br />

folgen, geben wird. Gerade der Umstand, dass Knoten eines ZigBee-Netzwerkes nur<br />

über eingeschränkte Hardwarefunktionen verfügen, lässt den Autor diesen Schritt be-<br />

zweifeln.<br />

4.1.2.2 TinyOS <strong>und</strong> TinyDB<br />

In vielen experimentellen <strong>und</strong> in einigen kommerziell verfügbaren Sensornetzwerken<br />

wird als Betriebssystem ” TinyOS“ eingesetzt. Dieses OpenSource-System wurde an<br />

Diplomarbeit André Hesse


4.2 Nutzung eines Transparenten Proxyservers zur Kopplung 49<br />

der <strong>Universität</strong> Berkeley (UC Berkeley) entwickelt. TinyOS ist inzwischen <strong>für</strong> viele<br />

Plattformen erhältlich, unter anderem <strong>für</strong> ” Berkeley Motes“, ” Mica“, ” Mica2Dot“ <strong>und</strong><br />

” Telos“. Eine Auflistung kann der Projekthomepage [UC Bb] entnommen werden. Laut<br />

Aussage der UC Berkeley wird TinyOS in mehr als 500 verschiedenen Projekten einge-<br />

setzt. Firmen wie Crossbow [Cros] haben TinyOS durch ausgereifte Produkte weltweit<br />

bekannt gemacht. Die Sensornetzwerke werden <strong>für</strong> vielfältige Aufgaben eingesetzt. Das<br />

in Abschnitt 3.2 angesprochene ” Great Duck Island“-Projekt wurde mit ” Berkeley Mo-<br />

tes“ <strong>und</strong> ” TinyOS“ realisiert.<br />

Um die Kommunikation mit den Knoten eines Netzwerkes, in dem TinyOS eingesetzt<br />

wird, zu vereinfachen, wurde TinyDB entwickelt [UC Ba]. Diese Erweiterung bildet die<br />

Sensordaten in einer Datenbank ab. Unter Zuhilfenahme von SQL-ähnlichen Komman-<br />

dos kann der Status des Sensornetzwerkes abgefragt werden. Einzelne Attribute eines<br />

jeden Sensorknotens oder eine Visualisierung des kompletten Netzwerkes sind damit<br />

darstellbar. Da TinyDB ebenfalls unter der OpenSource-Lizenz steht, ist eine eigene<br />

Anpassung möglich. Die Abbildungen 4.5 <strong>und</strong> 4.6 stellen eine Anfrage an ein Sen-<br />

sornetzwerk <strong>und</strong> die entsprechende Antwort dar. Dabei wurde die Antwort graphisch<br />

dargestellt.<br />

Abbildung 4.5: Anfrage an ein Sensornetzwerk mit TinyDB (Quelle: [UC Ba])<br />

4.2 Nutzung eines Transparenten Proxyservers zur<br />

Kopplung<br />

Knoten in Sensornetzwerken verfügen meist nur über geringe Rechenkapazitäten. Pri-<br />

mär haben sie die Aufgabe, Daten über ihre Umgebung zu sammeln oder selbst auf<br />

Diplomarbeit André Hesse


50 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

Abbildung 4.6: Visualisierung von Sensordaten mit TinyDB (Quelle: [UC Ba])<br />

Änderungen solcher Daten zu reagieren. Da<strong>für</strong> reicht die verfügbare Rechenkapazität<br />

meist aus.<br />

Damit die Sensorknoten sinnvoll eingesetzt werden können, muss eine Kommuni-<br />

kation in ein externes Netzwerk oder direkt über eine Schnittstelle möglich sein, die<br />

vom Menschen erfassbar ist. Will man ein externes Netzwerk ansprechen, wird man<br />

die Nutzung der TCP/IP-Suite in Betracht ziehen. Diese habt sich als Quasi-Standard<br />

durchgesetzt. Das weltumspannenden Internet beruht auf diesen Protokollen.<br />

Betrachtet man die in diesem Kapitel vorgestellten beiden prinzipiellen Möglichkei-<br />

ten zur Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme noch<br />

einmal genauer, lassen sich folgende Eigenschaften erschließen:<br />

Aufgr<strong>und</strong> der geringen Hardwarefunktionen ist eine TCP/IP-Implementierung nur<br />

bedingt möglich. Die in Abschnitt 4.1.1 vorgestellten Ansätze sind vielversprechend.<br />

Mit den geringen Datenmengen, die in der Heimautomation 3 anfallen, ergibt sich leider<br />

das Problem des Protokolloverheads, der durch die Nutzung von TCP/IP entsteht. Mit<br />

geeigneten Verfahren zur Headerkompression ist der Protokolloverhead zwar reduzier-<br />

bar, erfordert aber eine Veränderung der TCP/IP-Implementierung in allen beteiligten<br />

Instanzen.<br />

Die zweite Möglichkeit zur Kopplung ist die Nutzung eines Gateways, der eine<br />

Protokollumsetzung vornimmt. Dieser Ansatz ist die verbreitetste Lösung. Das Ga-<br />

teway wandelt entweder die Sensordaten <strong>und</strong> -kommandos in ein anderes Protokoll<br />

um oder nutzt zum Transport ein gängiges Protokoll der TCP/IP-Suite. Anschließend<br />

muss die Wandlung der Sensordaten im Empfänger vorgenommen werden. Im Beispiel<br />

3 Die Anwendung ” Videoüberwachung“ wird hierbei ausgenommen. Bei den dabei anfallenden Datenmengen<br />

wäre die Betrachtung des Protokolloverheads unerheblich. Vielmehr sollen einfache<br />

Anwendungen wie Licht- <strong>und</strong> Heizungssteuerung betrachtet werden.<br />

Diplomarbeit André Hesse


4.2 Nutzung eines Transparenten Proxyservers zur Kopplung 51<br />

der OSGi-Alliance wird TCP/IP zum Transport der OSGi-Daten verwendet. TinyDB<br />

ermöglicht den Zugriff mittels SQL-ähnlicher Anfragen an eine Datenbank, die im Ga-<br />

teway das Sensornetzwerk repräsentiert.<br />

Eine Lösung, die beide Ansätze integriert, ist in dieser Form noch nicht öffentlich<br />

untersucht worden. Dieser Ansatz umfasst die Nutzung eines transparenten Proxys.<br />

Der Proxy funktioniert sowohl als Protokoll- als auch als Adressumsetzer.<br />

In die Kommunikation von IP- <strong>und</strong> Sensornetzwerk wird ein Proxy als Gateway<br />

eingeschleift. Das Gateway hat durch die Unterstützung des IP-Protokolls eine Verbin-<br />

dung in das IP-Netzwerk. Zusätzlich verfügt es über eine direkte Verbindung in das<br />

Sensornetzwerk. Diese könnte zum Beispiel mit einem Hardwaredongle auf USB-Basis<br />

realisiert werden. Für die Knoten im Sensornetzwerk würde das Gateway als normaler<br />

Sensorknoten erscheinen. Das Gateway kann durch entsprechende Mechanismen den<br />

Zustand der einzelnen Sensorknoten abfragen. Jedem Sensorknoten weist das Gate-<br />

way eine IP-Adresse zu. Diese IP-Adressen müssen der in Abschnitt 2.2.1 gestellten<br />

Anforderung der Eindeutigkeit genügen. Häufig wird man daher IP-Adressen aus dem<br />

privaten Adressbereich (siehe Abschnitt 2.4) wählen.<br />

Im IP-Netzwerk werden diese Knoten dann als IP-Knoten betrachtet. Aus Sicht der<br />

realen IP-Knoten sind die Sensorknoten nicht als solche zu erkennen. Das Gateway<br />

arbeitet als transparenter Proxy.<br />

Obwohl die Sensorknoten das IP-Protokoll nicht beherrschen, sind sie aus dem IP-<br />

Netzwerk ansprechbar. Soll eine Verbindung zu einer nicht existierenden IP-Adresse<br />

aufgebaut werden, die in den überwachten Adressbereich des Gateways fällt, wird<br />

dieses die Verbindung annehmen. Dabei scheint <strong>für</strong> den Initiator der Verbindung der<br />

real nicht existierende IP-Knoten zu antworten. Abbildung 4.7 zeigt die Idee dieses<br />

Ansatzes.<br />

Ein Verbindungsaufbau ist aber auch in umgekehrter Richtung möglich. Hat ein<br />

Sensorknoten ein wichtiges Ereignis registriert, sollte der Anwender darüber benach-<br />

richtigt werden. Dieses Ereignis könnte zum Beispiel die Meldung eines Alarmsensors<br />

sein. Das Gateway erkennt diese Meldung <strong>und</strong> wird versuchen, sofern es vorher kon-<br />

figuriert wurde, eine Verbindung zu dem Anwender aufzubauen. Dabei wird es als<br />

Absender nicht die eigene IP-Adresse verwenden, sondern die <strong>für</strong> den Sensorknoten<br />

vergebene IP-Adresse. Kann die Verbindung zustande gebracht werden, erscheint es<br />

dem Anwender so, als ob die Verbindung von dem betreffenden Sensorknoten initi-<br />

iert wurde. Wiederum ist <strong>für</strong> den Anwender nicht ersichtlich, dass ein Gateway in der<br />

Kommunikation involviert war.<br />

Diplomarbeit André Hesse


52 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

IP<br />

IP: 10.8.0.1<br />

a.)<br />

b.)<br />

Protokoll<br />

umsetzung<br />

IP ZigBee<br />

ZigBee<br />

NWK: 1xaa<br />

IP: 10.8.0.2 NWK: ax22<br />

Adress-Umsetzung:<br />

IP 10.8.0.10 ~ NWK 1xaa<br />

IP 10.8.0.11 ~ NWK 0x3c<br />

IP 10.8.0.12 ~ NWK ax22<br />

IP<br />

IP: 10.8.0.1<br />

IP: 10.8.0.2<br />

IP: 10.8.0.10<br />

IP: 10.8.0.12<br />

IP: 10.8.0.11<br />

NWK: 0x3c<br />

Abbildung 4.7: Einsatz eines transparenten Proxyservers<br />

a.) Der Proxyserver wird als Protokollumsetzer eingesetzt <strong>und</strong> adressiert<br />

gleichzeitig die Sensorknoten mit IP-Adressen.<br />

b.) Die Knoten des IP-Netzwerkes können nicht erkennen, dass die Sensorknoten<br />

keine echten IP-Knoten sind.<br />

4.2.1 Umsetzung eines transparenten Proxyservers mit Linux<br />

Um die Funktion eines transparenten Proxyservers anzubieten, muss man in der Lage<br />

sein, bereits auf Betriebssystemebene sowohl die IP-Adressen als auch die TCP/UDP-<br />

Ports ein- <strong>und</strong> ausgehender Pakete zu verändern. Unter dem frei erhältlichen Betriebs-<br />

system Linux [Org.] ist dies mit einfachen Mitteln möglich. Linux enthält seit der Ker-<br />

nelversion 2.4 den integrierten Paketfilter Netfilter [netf]. Dieser erlaubt es durch das<br />

festlegen von Regeln ein- <strong>und</strong> ausgehende IP-Pakete eines Computers zu manipulieren<br />

<strong>und</strong> umzuleiten. Da Netfilter nicht nur auf der Vermittlungsschicht ansetzt, sondern<br />

auch die Transportschicht umfasst, wird es häufig als Firewall auf solchen Computern<br />

Diplomarbeit André Hesse


4.2 Nutzung eines Transparenten Proxyservers zur Kopplung 53<br />

eingesetzt. Mit Netfilter sind vielfältige Manipulationen möglich. So können ankom-<br />

mende Verbindungswünsche schon im Kernel blockiert werden, wenn deren Initiierung<br />

nicht von einem lokalen Prozess angefodert worden ist. Durch entsprechende Konfigu-<br />

ration kann man seinen Computer mit Netfilter sicher vor Angriffen aus dem Internet<br />

schützen.<br />

Für diese Diplomarbeit wurde Netfilter anderweitig verwendet. Die Zieladressen 4<br />

eingehender Verbindungen sowie die Quelladressen ausgehender Verbindungen werden<br />

verändert, um einen transparenten Proxy zu realisieren.<br />

Um zu verstehen wie Netfilter arbeitet, ist zunächst der Weg eines IP-Paketes<br />

im Linuxkernel aufzuzeigen. In Abbildung 4.8 ist die prinzipielle Paketbehandlung mit<br />

Netfilter dargestellt. Netfilter behandelt Pakete in drei so genannten Ketten 5 . In<br />

ankommende<br />

Pakete<br />

PREROUTING FORWARD<br />

POSTROUTING<br />

INPUT Lokaler Prozess<br />

OUTPUT<br />

Abbildung 4.8: Paketbehandlung mit Netfilter [netf]<br />

ausgehende<br />

Pakete<br />

jeder Kette können Regeln erstellt werden. Diese Regeln definieren, was mit einem<br />

Paket passieren soll. Sind in einer Kette mehrere Regeln definiert, werden diese Schritt<br />

<strong>für</strong> Schritt abgearbeitet. Stimmt eine Regel mit einem Paket überein, wird dieses ent-<br />

sprechend der Regel behandelt. Ansonsten wird das Paket mit der nächsten Regel<br />

verglichen. Stimmt die letzte Regel nicht überein, wird eine Standardaktion auf sie an-<br />

gewendet. Diese Standardaktionen können die Pakete entweder verwerfen oder gemäß<br />

ihrer Zieladresse weiterleiten.<br />

So könnte man zum Beispiel eine Regel erstellen, die alle ausgehenden Verbindungen<br />

über TCP-Port 80 zulässt, alle anderen Ports jedoch sperrt. Pakete, die zu TCP-<br />

Verbindungen gehören, die nicht über TCP-Port 80 abgehen, werden dann verworfen.<br />

4 Diese umschließen die Port-Nummern des verwendeten TCP-Protokolls mit ein.<br />

5 Im englischen Original werden diese Ketten als ” Chains“ bezeichnet. ” Kette“ bietet sich als beste<br />

Übersetzung an.<br />

Diplomarbeit André Hesse


54 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

Für den Anwender würde das bedeuten, dass er nur Webinhalte abrufen kann, jedoch<br />

keine E-Mails empfangen <strong>und</strong> senden kann 6 .<br />

Standardmäßig sind die drei Ketten INPUT, FORWARD <strong>und</strong> OUTPUT definiert.<br />

In der Kette INPUT existieren Regeln <strong>für</strong> Pakete, die an den eigenen Computer adres-<br />

siert sind. Regeln der FORWARD-Kette sind <strong>für</strong> Pakete definiert, die nicht an den<br />

eigenen Computer adressiert sind, sondern weitergeleitet werden sollen. Pakete, die<br />

vom eigenen Computer erstellt <strong>und</strong>/oder versendet werden sollen, werden mit Regeln<br />

in der OUTPUT-Kette verglichen.<br />

Die Einteilung, ob ein ankommendes Paket durch Regeln der INPUT- oder der<br />

OUTPUT-Kette behandelt wird, wird durch die Funktion PREROUTING bestimmt.<br />

Wie der Name suggeriert, wird hier eine erste Routing-Entscheidung getroffen. Ist das<br />

Paket an eine IP-Adresse gerichtet, die gleich der eigenen IP-Adresse ist, wird die-<br />

ses Paket mit Regeln der INPUT-Kette verglichen. Je nach Konfiguration kann hier<br />

das Paket an ein lokal arbeitendes Programm weitergeleitet oder verworfen werden.<br />

War das Paket nicht <strong>für</strong> den eigenen Computer bestimmt, wird es mit Regeln der<br />

Kette FORWARD behandelt. Im einfachsten Fall wird das Paket direkt an den Rou-<br />

tingalgorithmus POSTROUTING geleitet. Dieser wird das Paket entsprechend seiner<br />

Zieladresse ausliefern.<br />

Pakete, die von einem lokalen Prozess erstellt wurden <strong>und</strong> versendet werden sollen,<br />

durchlaufen zunächst die Regeln der OUTPUT-Kette. Hier werden sie entweder ver-<br />

worfen, verändert oder an die POSTROUTING-Funktion weitergegeben. Diese wird<br />

eine abschließende Routingentscheidung treffen.<br />

Hierbei ist anzumerken, dass der Netfilter durchaus mit mehreren Netzwerk-<br />

schnittstellen umgehen kann. Ankommende Pakete eines Netzwerkinterfaces können<br />

über ein anderes den Computer wieder verlassen. Auf Gr<strong>und</strong> der Struktur des Net-<br />

filters ist ein wiederholter Durchlauf eines Paketes durch den Paketfilter möglich.<br />

Pakete, die z.B. in der OUTPUT-Kette landen, können durch die Veränderung ihrer<br />

Zieladresse in die Loop-Back-Adresse später wieder in der INPUT-Kette auftauchen.<br />

Netfilter realisert gleich mehrere Funktionen: Routing, Network Address Trans-<br />

lation (NAT) <strong>und</strong> die Blockierung von Paketen. Dabei werden nicht nur die Informa-<br />

tionen der Vermittlungsschicht benutzt bzw. manipuliert, sondern auch Informationen<br />

der Transportschicht verarbeitet. Ist eine Verbindung erst einmal aufgebaut, müssen<br />

Pakete, die zu dieser Verbindung gehören nicht erneut mit den Regeln abgeglichen<br />

6 Auf TCP-Port 80 wird ein Computer normalerweise Webanfragen eines Internetbrowsers behandeln.<br />

E-Mails werden mit den Protokollen POP/SMTP oder IMAP empfangen <strong>und</strong> gesendet. Diese<br />

Protokolle laufen auf von Port 80 verschiedenen Ports. Sind diese Ports gesperrt, können mit<br />

diesen Protokollen keine Verbindungen aufgebaut werden.<br />

Diplomarbeit André Hesse


4.2 Nutzung eines Transparenten Proxyservers zur Kopplung 55<br />

werden. Netfilter wird automatisch die entsprechenden Manipulationen oder Rou-<br />

tingentscheidungen ausführen.<br />

Um neue Filterketten zu erstellen oder um Regeln zu ändern, haben die Netfil-<br />

ter-Entwickler das Programm iptables entwickelt. Mit diesem Kommandozeilenpro-<br />

gramm kann der Netfilter konfiguriert werden.<br />

4.2.2 Die Adressinformationen eingehender Verbindungen<br />

manipulieren<br />

Durch die Eingaben der zwei Kommandos in Abbildung 4.9 werden zwei Regeln <strong>für</strong><br />

den Netfilter erstellt.<br />

iptables -A PREROUTING -p tcp -d 10.8.0.0/16 --dport 6000 -j DNAT \<br />

--to-destination 192.168.0.180:8000<br />

iptables -A OUTPUT -p tcp -d 10.8.0.0/16 --dport -j DNAT \<br />

--to-destination 192.168.0.180:8000<br />

Abbildung 4.9: Aufruf eines iptables-Kommandos<br />

Die erste Regel bezieht sich auf ankommende Verbindungen. Beginnen deren IP-<br />

Adressen mit 10.8 <strong>und</strong> wird das Protokoll TCP eingesetzt, dann wird die Zieladresse<br />

der Pakete in die Adresse 192.168.0.180 verändert. Der TCP-Zielport wird auf Port<br />

8000 geändert. Anschliessend durchlaufen die Pakete den in Abbildung 4.8 dargestell-<br />

ten Weg. Ist die Adresse 192.168.0.180 die eigene Adresse des Computers, würden die<br />

Pakete an die INPUT-Kette weitergeleitet <strong>und</strong> hier den Regeln entsprechend behan-<br />

delt. Wird dort die Verbindung gestattet, wird der Kernel versuchen die Verbindung<br />

am TCP-Port 8000 herzustellen. Lauscht ein lokaler Prozess auf diesem auf eingehende<br />

Verbindungen, kann dieser Prozess nun diese Pakete annehmen <strong>und</strong> die Verbindung<br />

aufbauen. Die zweite Regel bewirkt dieselbe Funktion <strong>für</strong> lokal generierte Pakete, deren<br />

Zieladresse mit 10.8 beginnt.<br />

Um einen transparenten Proxy zu realisieren, können solche Regeln verwendet wer-<br />

den. Der im nächsten Kapitel vorgestellte Prototyp vergibt <strong>für</strong> Sensorknoten Adres-<br />

sen aus dem Bereich 10.8.0.0/16. Will nun zum Beispiel ein Anwender eine TCP-<br />

Verbindung von extern oder lokal zu einem Knoten mit der Adresse 10.8.0.5 auf-<br />

bauen, wird der Netfilter die Pakete dieses Verbindungswunsches ändern. Dieses<br />

Verfahren heißt NAT <strong>und</strong> wurde in Abschnitt 2.4 bereits eingeführt.<br />

Diplomarbeit André Hesse


56 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

Der Prototyp lauscht am lokalen TCP-Port 8000, registriert den Verbindungswunsch<br />

<strong>und</strong> wird die Verbindung annehmen <strong>und</strong> aufbauen. Entsprechende Antwortpakete wer-<br />

den durch den Netfilter wiederum verändert, so dass der Anwender Pakete erhält,<br />

die als Absender die Adresse 10.8.0.5 ausweisen. Der Prototyp muss dem Initiator<br />

der Verbindung nun nur noch die Funktionen des Sensorknotens erbringen.<br />

Wenn man jedoch noch einmal die Problematik NAT in Abschnitt 2.4 betrachtet,<br />

wird man sehr leicht ein Problem <strong>für</strong> den Prototypen erkennen. Da der Netfilter die<br />

Zieladresse <strong>und</strong> den Zielport geändert hat, erscheint die Verbindung <strong>für</strong> den Prototypen<br />

so, als ob sie direkt an ihn gerichtet war. Die originale Zieladresse 10.8.0.5 kann der<br />

Prototyp mit herkömmlichen Mitteln nicht feststellen, da diese ja in den Paketen der<br />

Verbindung nirgends verzeichnet worden ist. Damit NAT ordnungsgemäß funktioniert,<br />

hat der Netfilter ebenso die Prüfsummen der Header der IP- <strong>und</strong> TCP-Pakete (Ab-<br />

schnitt 2.4) korrigiert. Für den Prototypen ist nicht ersichtlich, dass NAT angewendet<br />

wurde.<br />

Der Netfilter führt intern eine Tabelle, in der die einzelnen Adressänderungen<br />

verzeichnet sind, damit sie rückwärtig angewendet werden können. Der Vorteil, den<br />

die Netfilter-Implementierung bietet ist die, dass es lokalen Programmen ermöglicht<br />

wird, in diese Tabellen Einsicht zu nehmen. Der in dieser Arbeit implementierte Pro-<br />

totyp kann eine Anfrage an den Netfilter stellen, ob NAT <strong>für</strong> eine angenommene<br />

Verbindung durchgeführt wurde. Wenn dies bejaht werden kann, wird der Prototyp<br />

die originalen Adressinformationen erhalten.<br />

Jetzt muss der Prototyp ” nur“ noch eine Protokollumsetzung vornehmen <strong>und</strong> kann<br />

als Sensorknoten antworten.<br />

Die genaue Funktionsweise des Netfilters mit allen Einzelheiten zu erläutern wür-<br />

de den Rahmen dieser Arbeit sprengen. Es ist hier auf die Projekthomepage [netf] zu<br />

verweisen, wo stets die aktuellen Versionen zum Download bereit stehen. In [Zieg03]<br />

ist die Einrichtung einer Firewall mit Netfilter sowie dessen weitere Einsatzmöglich-<br />

keiten sehr ausführlich beschrieben.<br />

4.2.3 Die Adressinformationen ausgehender Verbindungen<br />

manipulieren<br />

Damit der Prototyp auch auf wichtige Ereignisse eines Sensorknotens reagieren kann<br />

<strong>und</strong> damit einen Anwender über ein solches Ereignis informieren kann, soll eine TCP-<br />

Verbindung zu diesem aufgebaut werden. Normalerweise wird bei einem Verbindungs-<br />

aufbau die IP-Adresse des Computers, auf dem das initiierende Programm läuft, als<br />

Diplomarbeit André Hesse


4.2 Nutzung eines Transparenten Proxyservers zur Kopplung 57<br />

Quell-Adresse verwendet.<br />

Mit der Nutzung herkömmlicher Mittel kann man angeben, welchen TCP-Port das<br />

Programm als Quellport verwenden soll. Aber die Quell-IP-Adresse direkt zu ändern,<br />

ist nicht möglich. Der Anwender weiß aber im besten Fall ja nicht, dass ein Proxy die<br />

eigentliche Abbildung der Sensorknoten übernimmt. Er wäre überrascht, wenn plötz-<br />

lich eine Verbindung hergestellt werden soll, die eine <strong>für</strong> ihn unbekannte Quelladresse<br />

besitzt.<br />

Also muss die Quell-IP-Adresse verändert werden. Leider ist dies nicht so einfach<br />

durchzuführen, wie in der umgekehrten Reihenfolge.<br />

Zwar könnte man mit iptables Regeln erstellen, die zum Beispiel lokal initiierte<br />

Verbindungen von IP-Adresse 192.168.0.180, TCP-Port 7000 umschreiben auf die<br />

IP-Adresse 10.8.0.5, TCP-Port 7000. Damit wäre aber nur <strong>für</strong> diesen einen Fall aus-<br />

gesorgt. Hat der zu imitierende Sensorknoten eine andere IP-Adresse erhalten, müsste<br />

<strong>für</strong> diese ebenfalls eine entsprechende Regel definiert worden sein. Man kann im eigenen<br />

Programm iptables-Aufrufe realisieren, die die entsprechenden Regeln im laufenden<br />

Betrieb setzen (<strong>und</strong> löschen). Der Rechenaufwand wäre da<strong>für</strong> aber sehr hoch.<br />

Bei wenigen Sensorknoten <strong>und</strong> den damit wenigen anfallenden Regeln stellt dies kein<br />

Problem dar. Denkt man aber an mehrere h<strong>und</strong>ert Sensorknoten würden die Filterta-<br />

bellen sehr schnell sehr groß werden. Da die Pakete neu aufzubauender Verbindungen<br />

den kompletten Regelsatz durchlaufen müssen bis entweder eine Übereinstimmung ge-<br />

f<strong>und</strong>en bzw. das Ende der Filterkette erreicht wird, wird dies bei vielen Regeln sehr<br />

viel Rechenzeit in Anspruch nehmen.<br />

Will eine Anwendung eine TCP- oder UDP-Verbindung aufbauen, wird sie einen<br />

Socket erstellen. Ein Socket ist eine Einheit aus IP-Adresse <strong>und</strong> Portnummer des Trans-<br />

portprotokolls. Das Betriebssystem verwaltet die Portnummern. Soll ein Socket erstellt<br />

werden, der schon belegt ist, d.h. die Portnummer ist schon anderweitig in Verwen-<br />

dung, kann dieser Socket nicht erstellt werden. Ist jedoch die gewünschte Portnummer<br />

frei, wird der Socket erstellt <strong>und</strong> exklusiv der Anwendung, die den Socket erstellt hat,<br />

zur Verfügung gestellt. Nun werden alle Pakete die an diesen Socket gerichtet sind,<br />

vom Betriebssystem an diese Anwendung weitergeleitet.<br />

Viele TCP/IP-Implementationen beinhalten die ” Bind“-Funktion. Mit dieser kann<br />

angegeben werden, welcher Port <strong>für</strong> eine ausgehende Verbindung benutzt werden soll.<br />

In der Linuxkernel-Version 2.2 war es möglich, neben der Portnummer auch die zu<br />

verwendende IP-Adresse anzugeben. Damit konnte eine Verbindung mit einer falschen<br />

Absender-IP-Adresse aufgebaut werden. Aus welchen Gründen auch immer, wurde<br />

Diplomarbeit André Hesse


58 4 Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme<br />

diese Fähigkeit in den dem Kernel 2.2 folgenden Versionen 2.4 <strong>und</strong> 2.6 7 entfernt. Für<br />

Netfilter existiert jedoch ein Patch, der diese Funktionalität wieder ermöglicht. Unter<br />

[ScKo] kann die Dokumentation <strong>und</strong> der Patch namens ” TPROXY“ heruntergeladen<br />

werden. Da der Patch direkt in den Kernel hereinkompiliert werden muss, <strong>und</strong> auch<br />

Änderungen an iptables erforderlich sind, ist die Installierung dieses Patches mit ei-<br />

nigen Schwierigkeiten verb<strong>und</strong>en <strong>und</strong> sollte nur von geübten Anwendern vorgenommen<br />

werden.<br />

Hat man den Patch installiert, kann eine Verbindung mit einer fremden Absen-<br />

deradresse durchgeführt werden. Dazu verändert der TPROXY-Patch dynamisch die<br />

NAT-Tabelle des Netfilter, ohne dass dazu neue Regeln angelegt bzw. bestehende<br />

verändert werden. Dies wird immer nur einmal pro Verbindung durchgeführt. Weitere<br />

Pakete dieser Verbindung erfahren automatisch die selben Änderungen. Somit hält sich<br />

der Rechenaufwand sehr in Grenzen, auch bei einer größeren Anzahl von Verbindungen.<br />

An dieser Stelle soll darauf hingewiesen werden, dass der TPROXY-Patch zum Auf-<br />

bau einer TCP-Verbindung mit einer gefälschten IP-Adresse einen freien TCP-Port auf<br />

dem Rechner benötigt, auf dem die Verbindung initiiert wurde. Beim Verbindungsauf-<br />

bau müssen folgende Angaben getroffen werden: Die Ziel-IP-Adresse sowie der Ziel<br />

TCP-Port, die originale IP-Adresse des Systems, von dem die Verbindung aufgebaut<br />

werden soll sowie ein freier TCP-Port. Dieser Port wird benötigt, um zurückkommende<br />

Pakete dieser Verbindung zuzuordnen. Zusätzlich müssen die zu fälschende IP-Adresse<br />

<strong>und</strong> ein TCP-Port angegeben werden. Am Zielsystem erscheint die Verbindung vom<br />

Gerät mit den letzten beiden Adressangaben zu kommen.<br />

Wendet man die in Abschnitt 4.2.2 angebenen iptables-Kommandos an, muss man<br />

beachten, auch wirklich nur benötigte TCP-Ports umzuleiten. Wird auch der TCP-<br />

Port einer eingehenden Verbindung umgeleitet, der dem TCP-Port gleicht, den der<br />

TPXOY-Patch zum Verbindungsaufbau nutzt, werden die Pakete dieser Verbindung<br />

nicht mehr richtig zugestellt. Zwar versucht das System, eine Verbindung mit einer<br />

gefälschten Adresse aufzubauen, die rückläufigen Pakete können aber nicht mehr aus-<br />

geführt werden. Damit ist ein Verbindungsaufbau nicht möglich.<br />

7 Bei der Nummerierung der Kernel-Version wird eine Unterscheidung in stabile <strong>und</strong> instabile Versionen<br />

gemacht. Stabile Versionen werden durch eine gerade Nachkommazahl angegeben <strong>und</strong> können<br />

von allen Anwendern verwendet werden. Instabile werden nicht offiziell <strong>für</strong> alle Anwender empfohlen,<br />

sondern sollten nur von Entwicklern eingesetzt werden.<br />

Diplomarbeit André Hesse


5 Der Prototyp<br />

5.1 Architektur<br />

Die Kopplung eines Sensornetzwerkes auf Basis der ZigBee-Spezifikation an ein IP-<br />

basiertes Kommunikationssystem soll in dieser Diplomarbeit durchgeführt werden. Da-<br />

zu sollte ein Prototyp entwickelt <strong>und</strong> implementiert werden. Dieser Prototyp wurde<br />

auf Basis des in den Abschnitten 4.2 ff vorgestellten Ansatzes ” transparenter Proxy“<br />

entwickelt. Da ein reales Sensornetzwerk nicht zur Verfügung stand, sollte dieses nur<br />

funktionell simuliert werden.<br />

Der Prototyp besteht aus drei Komponenten die in Abbildung 5.1 schematisch dar-<br />

gestellt sind. Eine Teilung in drei Bestandteile wurde bewusst vorgenommen. Durch<br />

Client<br />

Frontend<br />

Backend<br />

Proxyserver<br />

Client-<br />

Manager<br />

Client<br />

Connector<br />

Auth<br />

Manager<br />

Proxy<br />

Manager<br />

Proxy<br />

Connector<br />

Address<br />

Book<br />

Snw.<br />

Manager<br />

Snw.<br />

Connector<br />

Abbildung 5.1: Die Struktur des Prototyps<br />

Sensornetwork<br />

Simulator<br />

Frontend<br />

Backend<br />

eine räumliche Trennung können einzelne Komponenten des Prototyps leicht ausge-<br />

tauscht werden. Damit ist es einfach möglich, anstatt eines Sensornetzwerk-Simulators<br />

ein echtes Sensornetzwerk anzukoppeln. Hierzu muss lediglich die entsprechende Kom-<br />

ponente austauschen <strong>und</strong> kann die anderen beibehalten. Auf Gr<strong>und</strong> der Kürze der<br />

59<br />

Diplomarbeit André Hesse


60 5 Der Prototyp<br />

Bearbeitungszeit wurde auf eine graphische Gestaltung des Frontends der Client- <strong>und</strong><br />

Sensornetzwerk-Komponente verzichtet. Beide werden über ein Text-Menu auf Kom-<br />

mandozeilenebene bedient. Später können beide durch entsprechende graphische Pen-<br />

dants ersetzt werden.<br />

Die Schnittstelle zwischen den einzelnen Komponenten wurde in dieser Diplomarbeit<br />

definiert <strong>und</strong> ist erweiterbar. Dazu wurde ein eigenes Protokoll entwickelt. Im Anhang<br />

B.1 dieser Diplomarbeit sind die einzelnen Meldungen dieses Protokolls aufgezeigt.<br />

Die Programmierung der einzelnen Bestandteile wurde zum größten Teil mit der<br />

Entwicklungsumgebung Xcode 2.2 unter dem Betriebssystem Mac OS X auf einem<br />

Apple Mac vorgenommen [Appl]. Als Programmiersprache wurde C++ gewählt. Die<br />

Client- <strong>und</strong> Sensornetzwerk-Komponenten sind ohne Einschränkungen sowohl unter<br />

Mac OS X als auch unter Linux lauffähig. Unter Linux wurde die Entwicklungsumge-<br />

bung KDevelop genutzt [kdev].<br />

Leider unterstützt bislang nur Linux die in Abschnitt 4.2.1 vorgestellte Umsetzung<br />

eines ” transparenten Proxys“. Weder mit dem Betriebssystem Mac OS X noch unter<br />

Microsoft Windows ist ein Eingriff in den Paketfilter in dem Umfang wie unter Linux<br />

möglich. Damit ist der Proxy mit allen Funktionen nur unter Linux lauffähig.<br />

Auch dieser Umstand sprach <strong>für</strong> eine Dreiteilung des Prototyps. Denn eine spätere<br />

Umsetzung der Client- <strong>und</strong> Sensornetzwerkkomponente <strong>für</strong> andere gängige Betriebs-<br />

systeme ist denkbar.<br />

Bevor die einzelnen Komponenten näher beschrieben werden, müssen zunächst einige<br />

Vorbetrachtungen getätigt werden.<br />

5.1.1 Vorbetrachtungen zum Prototypen<br />

5.1.1.1 ZigBee-Profil-Unterstützung<br />

Bevor mit der Programmierung begonnen wurde, musste zunächst ein Darstellungsmo-<br />

del <strong>für</strong> die Sensorknoten entwickelt werden. Jeder Sensorknoten verfügt über bestimmte<br />

Eigenschaften. Die Übertragungstechnologie ZigBee definiert so genannte ” Profile“, in<br />

denen die genauen Fähigkeiten eines Sensorknotens festgeschrieben sind (Siehe dazu<br />

Abschnitt 3.5.4). Da ZigBee eine relativ neue Technologie ist, sind bislang nur einige<br />

wenige Profile erhältlich. Für diese Diplomarbeit stand nur das Profil ” Home Control,<br />

Lighting 1.00“ zur Verfügung. Jedes Profil beschreibt in so genannten ” Device Descrip-<br />

tions“ mehrere Gerätearten. Jedes Gerät hat bestimmte Attribute <strong>und</strong> Funktionen, die<br />

durch entsprechende Bitfolgen repräsentiert werden. Einzelne Attribute eines Gerätes<br />

Diplomarbeit André Hesse


5.1 Architektur 61<br />

werden in Gruppen, so genannten ” Clustern“, angeordnet <strong>und</strong> in einer festgelegten No-<br />

tation übertragen. In den ” Device Descriptions“ sind die Bedeutungen der einzelnen<br />

Attribute <strong>und</strong> ihre Darstellung verzeichnet.<br />

Das Profil ” Home Control, Lighting“ beschreibt sechs verschiedene Geräte. Jedes<br />

Gerät kann Daten <strong>und</strong> Kommandos von anderen Geräten dieses Profils annehmen bzw.<br />

an andere Geräte weitergeben. In Tabelle 5.1 sind die einzelnen Gerätearten <strong>und</strong> ihre<br />

Beziehungen zueinander aufgeführt. Es stellte sich die Frage, ob die Beschreibungen der<br />

Gerätebezeichung<br />

(englisch)<br />

Switch Remote Control<br />

Switching Load Controller<br />

Occupancy Sensor<br />

Light Sensor Monochromatic<br />

Dimmer Remote Control<br />

Dimming Remote Controller<br />

Gerätebezeichung<br />

(deutsch)<br />

Schalter<br />

Schaltbare Last<br />

(z.B. Leuchte)<br />

Belegungssensor<br />

Lichtsensor<br />

Dimmer<br />

Dimmbare Last<br />

(z.B. Leuchte)<br />

Verbindung von / zu Gerät<br />

Ausgang: Switching Load Controller<br />

Eingang: Switch Remote Control<br />

Eingang: Light Sensor Monochromatic<br />

Eingang: Occupance Sensor<br />

Ausgang: Switching Load Controller<br />

Ausgang:Dimming Load Controller<br />

Ausgang: Switching Load Controller<br />

Ausgang: Dimming Load Controller<br />

Ausgang: Dimming Load Controller<br />

Eingang: DimmerRemote Control<br />

Eingang: Light Sensor Monochromatic<br />

Eingang: Occupance Sensor<br />

Tabelle 5.1: Die Gerätearten des ZigBee-Profils ” Home Control, Lighting“<br />

Geräte dieses Profils direkt in den Code des Prototypen integriert werden sollten. Dies<br />

bedeutet, <strong>für</strong> jedes Gerät würde eine Klasse angelegt, deren Objekte die entsprechenden<br />

Eigenschaften des Gerätes repräsentieren.<br />

Aus Gründen der Erweiterbarkeit wurde jedoch ein anderer Weg gewählt. Hätte<br />

man das Profil in den Code integriert, wäre der Prototyp nur <strong>für</strong> Geräte aus dem<br />

Profil ” Home Control, Lighting“ anwendbar gewesen. Werden neue Profile durch die<br />

ZigBee-Alliance veröffentlicht, müsste der Code des Prototyps ergänzt werden. Um<br />

dies zu vermeiden, werden die Profilbeschreibungen aus einer externen Datei beim Pro-<br />

grammstart eingelesen. Für jede Gerätebeschreibung wird ein ” Master-Objekt“ erstellt.<br />

Soll ein Sensorknoten integriert werden, der einem bekannten Gerät eines bekannten<br />

Profils entspricht, wird eine Instanz des betreffenden ” Master-Objektes“ erstellt. Dieses<br />

repräsentiert dann diesen Sensorknoten.<br />

Diplomarbeit André Hesse


62 5 Der Prototyp<br />

5.1.1.2 Adressierung im Prototyp<br />

Die Frage, wie man einen Sensorknoten am Besten adressieren sollte, ist eine Problem-<br />

stellung dieser Diplomarbeit. Aus den in Abschnitt 2.2.1 abgeleiteten Forderungen nach<br />

der Eindeutigkeit von IP-Adressen wurde schnell ersichtlich, dass eine Verwendung glo-<br />

baler IP-Adressen ausschied. Als Privatperson wird man kaum mehrere h<strong>und</strong>erte oder<br />

gar tausende öffentlich verwendbare IP-Adressen zur Verfügung gestellt bekommen.<br />

Wenn doch, dann wäre dies mit einem großen finanziellen Aufwand verb<strong>und</strong>en.<br />

Prinzipiell kann man in seinem eigenen abgeschlossenen Netzwerk Adressen beliebig<br />

vergeben. Jedoch sollte man sich an die Vorgaben der ICANN (bzw. der IANA) halten.<br />

In dieser Arbeit wurde der Einsatz von IP-Adressen aus dem privaten Bereich (Vgl.<br />

Abschnitt 2.4) gewählt. Der Bereich 10.0.0.0/8 bietet sich da<strong>für</strong> an.<br />

Eine zweite Frage, die beim Einsatz von ZigBee als Sensornetzwerktechnologie auf-<br />

trat, ist die Adressierung einzelner Endpunkte. Die ZigBee-Spezifikation sieht vor, dass<br />

pro Sensorknoten bis zu 240 Endpunkte ansprechbar sind. Jedem Endpunkt wird ein<br />

bestimmtes Profil zugeordnet, dessen Funktion dieser Endpunkt dann erbringt. So ist<br />

ein Knoten denkbar, der auf Endpunkt 1 das Profil ” Home Control, Lighting; Switch<br />

Remote Control“ <strong>und</strong> auf Endpunkt 2 das Profil ” Home Control, Lighting; Switching<br />

Load Controller“ anbietet.<br />

Man hat mehrere Möglichkeiten, die Adressierung zu realisieren. Setzt man als Trans-<br />

portprotokoll TCP oder UDP ein, könnte man deren Port-Mechanismus zur Adressie-<br />

rung nutzen (Siehe Abschnitt 2.4).<br />

Jedem Sensorknoten wird eine IP-Adresse <strong>und</strong> jedem Endpunkt dieses Knotens ei-<br />

ne eigene Portnummer zugewiesen. Damit wäre mit der Angabe 10.8.0.1:5002 zum<br />

Beispiel der 2. Endpunkt des Knotens mit der IP-Adresse 10.8.0.1 ansprechbar. Der<br />

Proxyserver muss bei jedem Verbindungswunsch ermitteln, welcher Port angespro-<br />

chen wurde. Damit kann er den entsprechenden Endpunkt darstellen <strong>und</strong> die Funktion<br />

” Schalter“ oder Leuchte“ erbringen.<br />

”<br />

Dieser Ansatz hat jedoch einen Nachteil. Um diesen aufzuzeigen soll noch einmal<br />

die eigentliche Aufgabe der Ports betrachtet werden. Die Ports der Transportschicht<br />

werden genutzt, um die unterschiedlichsten Anwendungsprotokolle eines Netzknotens<br />

anzusprechen (siehe Abschnitt 2.3). TCP-Port 80 wird beispielsweise <strong>für</strong> den Abruf<br />

von Webseiten verwendet. Dazu wird das HTTP-Potokoll verwendet. Mit dem FTP-<br />

Protokoll können Daten mit anderen Anwendern über die Ports 20 <strong>und</strong> 21 mit aus-<br />

getausch werden. Sind diese Ports anderweitig verwendet, kann der Proxyserver nicht<br />

schon einfach schon beim Aufruf einer IP-Adresse das Protokoll ermitteln.<br />

Beispielsweise stellt die Adresse 10.8.0.1 einen Sensorknoten dar. Durch die Ein-<br />

Diplomarbeit André Hesse


5.1 Architektur 63<br />

gabe http://10.8.0.1 in einem Webbrowser wird eine Übersicht über dessen Funk-<br />

tionen angezeigt. Im Hintergr<strong>und</strong> setzt der Webbrowser eine solche Anfrage mit dem<br />

HTTP-Protokoll meist auf Port 80 um.<br />

Spricht man nun einen Endpunkt, der durch einen Port adressiert wird, mit dem<br />

Aufruf http://10.8.0.1:5002 im Webbrowser an, funktioniert dies nicht mehr. Der<br />

Webbrowser würde versuchen, eine HTTP-Verbindung auf Port 5002 herzustellen.<br />

Ordnet man aber mögliche Anwendungsprotokolle bestimmten Ports zu, kann die<br />

Zuordnung des Protokolls im Prototypen vereinfacht werden. Auf Port 80 wird zum<br />

Beispiel immer im HTTP-Protokoll kommuniziert, auf Port 6000 findet das in dieser<br />

Arbeit entwickelte Protokoll seinen Einsatz.<br />

Damit ist es möglich, später auch andere Formate zu unterstützen. Eine Unterstüt-<br />

zung von FTP, E-Mail oder sogar Instant Messaging ist vorstellbar.<br />

Aus Zeitgründen wurde in den Prototypen nur das eigene Protokoll eingeb<strong>und</strong>en.<br />

Durch die Modularität der Programmierung ist eine Einbindung eines anderen Proto-<br />

kolls (z.B. E-Mail-Benachrichtigung bei Detektion eines Einbruches ins eigene Heim)<br />

möglich.<br />

In dieser Diplomarbeit wird <strong>für</strong> jeden (belegten) Endpunkt eines Sensorknotens eine<br />

eigene IP-Adresse vergeben. So kann es vorkommen, dass ein Knoten, auf dem alle End-<br />

punkte durch ein entsprechendes Profil belegt sind, über 240 IP-Adressen verfügt. Dem<br />

Anwender des Clients soll die wahre Natur des ZigBee-Knotens nicht aufgezeigt wer-<br />

den. Es erscheint nur logisch, wenn ein Schalter <strong>und</strong> eine Lampe mit unterschiedlichen<br />

IP-Adressen angesprochen werden, auch wenn diese in einem einzigen Hardwareobjekt<br />

integriert sind.<br />

Durch die Vergabe von privaten Adressen ist eine direkte Kopplung des Sensor-<br />

netzwerkes an das Internet nicht möglich. Zwar kann der Proxyserver (<strong>und</strong> damit die<br />

Sensorknoten) eine Verbindung an einen bekannten Kommunikationspartner im Inter-<br />

net aufbauen. Der umgekehrte Weg ist jedoch auf Gr<strong>und</strong> des eingesetzten NAT (Siehe<br />

Abschnitt 2.4) nicht möglich. Will man Knoten direkt aus dem Internet ansprechen,<br />

müssen diese über eine globale Adresse verfügen. Der Einsatz von NAT versagt in die-<br />

sen Fall. Daher bietet sich der Einsatz eines Virtual Private Network Servers (VPN)<br />

an. Dieser Ansatz wird in Abschnitt 5.5 beschrieben.<br />

5.1.1.3 Nutzung von XML<br />

Zur Umsetzung der ZigBee-Profile bot sich die Verwendung der Extensible Markup<br />

Language (XML) an. XML ist eine textbasierte Beschreibungssprache, die vom World<br />

Wide Web Consortium (W3C) definiert wurde <strong>und</strong> deren Definition unter [W3C] ge-<br />

Diplomarbeit André Hesse


64 5 Der Prototyp<br />

f<strong>und</strong>en werden kann. In XML-verfasste Dokumente folgen einer Baumstruktur. Dabei<br />

repräsentiert jeder Ast eines solchen Baumes eine bestimmte Eigenschaft. Die Äste<br />

werden durch frei definierbare Beschreibungen (tags) gekennzeichnet. Für fast jede<br />

Programmiersprache gibt es geeignete Parser, die die Daten aus diesen Beschreibun-<br />

gen extrahieren können. Abbildung 5.2 zeigt den Auszug aus einer XML-Datei.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 5.2: Auszug aus einer XML-Datei<br />

Für den Prototypen wurde eine XML-Datei namens ” profiles.conf“ angelegt, die von<br />

der Proxyserver- <strong>und</strong> der Sensornetzwerkkomponente eingelesen wird. Jede Geräte-<br />

art wird aufgeführt <strong>und</strong> mit allen Attributen abgebildet. Zusätzlich werden ZigBee-<br />

Standardattribute sowie einige andere Eigenschaften, wie z.B. die IP- oder IEEE-<br />

Adresse vermerkt.<br />

Die genaue Beschreibung kann im Anhang nachgeschlagen werden. Es bleibt darauf<br />

hinzuweisen, dass diese Beschreibung nur die möglichen Attribute anführt. Selbstver-<br />

ständlich müssen diese auch mit reellen Werten gefüllt werden. Dies geschieht einerseits<br />

im Sensornetzwerk-Simulator bei der Konfiguration eines neuen Sensornetzwerkes. Spä-<br />

ter im Betrieb können einzelne Attribute, sofern eine Änderung sinnvoll erscheint, auch<br />

verändert werden.<br />

Die einzelnen Komponenten des Prototypen tauschen untereinander Nachrichten<br />

aus. Da<strong>für</strong> wurde ein eigenes Protokoll entwickelt. Dieses nutzt als Format ebenfalls<br />

XML. Eine mögliche Meldung ist die in Abbildung 5.3 dargestellte Nachricht.<br />

Diplomarbeit André Hesse


5.1 Architektur 65<br />

<br />

<br />

<br />

<br />

<br />

5.1.1.4 XML-Verarbeitung<br />

Abbildung 5.3: Auszug aus einer XML-Datei<br />

Damit nicht an jeder Stelle, an der XML in den Programmen verwendet wird, eine<br />

erneute Parsingfunktion integriert werden muss, wurde eine eigene Klasse zum Le-<br />

sen <strong>und</strong> Schreiben von XML-Dateien oder Nachrichten erstellt. Objekte dieser Klasse<br />

namens ItemHandler bieten über die Methode readXML() die Möglichkeit, eine XML-<br />

Datei oder eine XML-Zeichenkette zu lesen. Um die Daten zu extrahieren, muss der<br />

Funktion ein einzelnes Item-Objekt <strong>und</strong> eine Liste von Objekten der Container-Klasse<br />

Item übergeben werden. In diese Liste werden <strong>für</strong> jedes XML-Objekt ein Item-Objekt<br />

erstellt, welches mit den extrahierten Daten der XML-Datei bzw. -Zeichenkette gefüllt<br />

wird. Jedes Objekt der Item-Klasse kann beliebig viele Einträge verschiedener Formate<br />

beinhalten. Zur Zeit werden die Formate ‘string’, ‘integer’, ‘bool’, ‘time_t’ (Datum)<br />

sowie ‘bitset’ <strong>und</strong> ‘bitset’ unterstützt. Durch einfache Erweiterungen sind<br />

andere Formate denkbar. Eine Darstellung dieser Abstraktion ist in Abbildung 5.4 ge-<br />

geben. Zum Schreiben von XML-Dateien oder -Nachrichten wurde eine zweite Methode<br />

namens writeXML() geschrieben.<br />

5.1.1.5 Authentifizierung im Prototypen<br />

Im Prototypen muss sich aus Gründen der Sicherheit jeder beteiligte Kommunikations-<br />

partner gegenüber dem anderen authentifizieren. Dabei wird die Angabe eines Anwen-<br />

dernamens <strong>und</strong> eines zugehörigen Passwortes verwendet. Will sich z.B. ein Client an<br />

einem Proxyserver 1 anmelden, fragt der Client zunächst den Anwendernamen <strong>und</strong> das<br />

Passwort vom Anwender ab. Soll die Verbindung zum Proxyserver hergestellt werden,<br />

wird dieser den Client um die entsprechenden Angaben bitten. Anschliessend sendet<br />

der Proxyserver seine eigenen Anmeldungsdaten an den Client. Dieser muss diese mit<br />

den <strong>für</strong> den angesprochenen Proxyserver gespeicherten Daten vergleichen. Erst wenn<br />

beide, Client <strong>und</strong> Proxyserver, den jeweils anderen authentifizieren konnten, wird die<br />

1 Aus Sicht des Clients meldet sich dieser nicht an einem Proxyserver, sondern direkt an einem<br />

Sensorknoten an. Die eigentliche Verbindung wird aber mit einem Proxyserver hergestellt.<br />

Diplomarbeit André Hesse


66 5 Der Prototyp<br />

XML-Datei /<br />

XML-String<br />

Item: Header<br />

Item<br />

string ID<br />

ItemEntry<br />

+<br />

Item-Liste<br />

Item<br />

string ID<br />

ItemEntry<br />

ItemHandler<br />

::readXML<br />

::writeXML<br />

Item: Header<br />

Item<br />

string ID<br />

ItemEntry<br />

+<br />

Item-Liste<br />

Item<br />

string ID<br />

ItemEntry<br />

ItemHandler XML-Datei /<br />

XML-String<br />

::readXML<br />

::writeXML<br />

Abbildung 5.4: Die Abstrakte Datendarstellung. Der ItemHandler kann mit den Funktionen<br />

readXML <strong>und</strong> writeXML Objekte der Klasse Item aus einer XML-<br />

Datei oder einem -String lesen bzw. diese Objekte in eine XML-Datei<br />

oder einen -String schreiben.<br />

Verbindung zum Datentransfer freigegeben. Andernfalls wird die Verbindung geschlos-<br />

sen. Der Ablauf einer Authentifizierung ist in Abbildung 5.5 dargestellt.<br />

Dem Autor ist das Risiko, das diesem Modell folgt, durchaus bewusst. Da die Daten<br />

ohne Verschlüsselung im Klartext übertragen werden, ist ein Abhören der Authentifi-<br />

zierungsdaten ohne Schwierigkeiten möglich. Wird pro Proxyserver nur ein Authenti-<br />

fizierungsdatenpaar erstellt, ist es auch ohne Problem möglich, einem anderen Client<br />

diesen Proxyserver vorzuspielen.<br />

Aus Zeitgründen wurde dieses Modell gewählt. Natürlich ist eine Implementierung<br />

kryptographischer Verschlüsselungen der einzelnen Verbindungen sowie die Nutzung ei-<br />

nes hinreichend sicheren Authentifizierungsalgorithmus 2 empfohlen. Da diese Diplom-<br />

arbeit jedoch nicht vorrangig das Thema Sicherheit in Datennetzen behandelt, wurde<br />

2 Beispielsweise Data Encryption Standard (DSA) oder Advanced Encryption Standard (AES).<br />

Diplomarbeit André Hesse


5.1 Architektur 67<br />

Daten gültig?<br />

Nein<br />

Ja<br />

SocketClient SocketServer<br />

close<br />

ClientSendUserData<br />

Verbindungsaufbau<br />

ClientUserData(UserName,Password)<br />

AuthFailed<br />

ServerUserData(UserName,Password)<br />

AuthSuccess<br />

AuthFailed<br />

AuthSuccess<br />

close<br />

close<br />

.getOriginalDest()<br />

AddressBook-><br />

.checkDeviceIP()<br />

IP nicht bekannt<br />

IP bekannt<br />

Daten gültig?<br />

Abbildung 5.5: Der Ablauf der Authentifizerung. Hinweis: die Begriffe SocketClient<br />

<strong>und</strong> SocketServer geben in dieser Darstellung an, wer den Verbindungswunsch<br />

initiiert hat. Der SocketClient ist nicht mit der in diesem Prototyp<br />

vorgestellten Programmkomponente Client gleichzusetzen. Ein<br />

SocketClient kann in diesem Falle auch ein Proxyserver sein, der sich<br />

gegenüber einem Sensornetzwerk authentifiziert. Der Aufbau der TCP-<br />

Verbindung wird vorausgesetzt <strong>und</strong> wird in dieser Abbildung nicht gezeigt.<br />

dieser Kompromiss gewählt. Es ist jedoch später möglich, die Authentifizierungskom-<br />

ponente entsprechend zu modifizieren <strong>und</strong> das gegenwärtige Modell auszutauschen.<br />

Der in Abschnitt 5.5 vorgeschlagene Ansatz eines VPN-Servers relativiert dieses<br />

Sicherheitsproblem. Dieser VPN-Server erlaubt eine gesicherte Verbindung über das<br />

Internet. Ein Abhören ist damit zumindest bei einer Verbindung über das Internet<br />

kaum möglich.<br />

Nein<br />

Ja<br />

t<br />

Diplomarbeit André Hesse


68 5 Der Prototyp<br />

5.2 Der Proxyserver<br />

Als Hauptkomponente des Prototyps dieser Diplomarbeit wurde der größte Anteil der<br />

Entwicklungszeit in die Proxyserver-Komponente investiert. Aufgr<strong>und</strong> der Modularität<br />

können einige Bestandteile in den anderen Komponenten wiederverwendet werden, was<br />

den Programmierungsaufwand insgesamt vereinfacht.<br />

Der Proxyserver ist vom Anwender nur durch Konfigurationsdateien steuerbar, so<br />

dass auf ein Frontend verzichtet wurde. Als Programm, welches auf der Kommandozeile<br />

ausgeführt wird, zeigt es jedoch vielfältige Statusmeldungen an. Diese können an einen<br />

externen LoggingServer weitergegeben werden.<br />

Zum Programmstart werden die einzelnen Komponenten Listener, AddressBook,<br />

AuthManager, LoggingClient sowie drei Manager (Client, Proxyserver, SensorNet-<br />

work) gestartet. Alle Komponenten werden als eigener Thread 3 gestartet. Abbildung<br />

5.6 zeigt die Struktur des Proxyservers.<br />

5.2.1 AddressBook<br />

Das Addressbook bildet den Kern des Proxyserver. Es hält Informationen über jeden im<br />

Proxyserver bekannten Sensorknoten bereit. Wird der Proxyserver gestartet, liest das<br />

AddressBook zunächst die in Abschnitt 5.1.1.3 angesprochene Profildatei ein. Zusätz-<br />

lich wird eine weitere XML-Datei namens ” usergroups.conf“ eingelesen. Die erste wird<br />

verwendet, um dem Programm alle möglichen ZigBee-Gerätearten mitzuteilen. Da bei<br />

Erstellung dieser Datei durchaus Fehler auftreten können, versucht das AddressBook<br />

nicht nur, diese Datei zu interpretieren, sondern wird auch mögliche Fehler finden.<br />

Ein Fehler in der Gerätebeschreibung könnte im Programmablauf nicht vorhergesehe-<br />

ne Ereignisse hervorrufen. Daher wird das AddressBook bei Entdeckung eines Fehlers<br />

das komplette Programm sofort beenden. Dieser Schritt ist nötig, um eine korrekte<br />

Funktion des Prototyps zu gewährleisten.<br />

Bei der Anmeldung eines Sensornetzwerkes oder eines anderen Proxyservers werden<br />

diese aufgefordert, alle Daten über die verwalteten Endpunkte an das Proxyserver zu<br />

senden. Das AddressBook führt dazu eine Liste, in der alle Endpunkte aufgeführt sind.<br />

Für jeden Endpunkt werden einige wichtige Daten verzeichnet, wie die IP-Adresse <strong>und</strong><br />

die IEEE-Addresse.<br />

3 Ein Thread ermöglicht in Multitasking-Systemen die gleichzeitige Ausführung mehrerer Aufgaben.<br />

So muss zum Beispiel ein Anwender nicht auf die Vollendung eines Druckauftrages warten, wenn<br />

dieser als eigener Thread gestartet wurde. Während der Drucker druckt, kann der Anwender andere<br />

Arbeiten mit dem Computer durchführen. Der Druckauftrag blockiert nicht das gesamte System.<br />

Diplomarbeit André Hesse


5.2 Der Proxyserver 69<br />

Client<br />

Proxy<br />

SNW<br />

Loggin<br />

Server<br />

Proxyserver<br />

Listener<br />

Listener<br />

Listener<br />

Logging<br />

Client<br />

ClientManager<br />

.spreadMessage()<br />

Connector<br />

.processMessage()<br />

Liste<br />

IP-Adressen<br />

AuthManager<br />

.new()<br />

Authenticator<br />

AddressBook<br />

.checkDeviceIP()<br />

.addAndCheckDevice()<br />

Profile<br />

IP-Address<br />

IEEE-Address<br />

ID<br />

Device<br />

IP-Address<br />

IEEE-Address<br />

ID<br />

Attribut Attribut<br />

.registerAuthSocket()<br />

.registerAuthSocket()<br />

.registerAuthSocket()<br />

new new new<br />

AuthSocket<br />

AuthSocket<br />

Authentifiziert<br />

ProxyManager<br />

.spreadMessage()<br />

Connector<br />

.processMessage()<br />

Liste<br />

IP-Adressen<br />

AuthSocket<br />

SensorNW.-Manager<br />

.spreadMessage()<br />

Connector<br />

.processMessage()<br />

Liste<br />

IP-Adressen<br />

AuthSocket<br />

Client Proxy SNW<br />

Abbildung 5.6: Die Struktur des Proxyservers. Man erkennt die einzelnen Threads Listener,<br />

LoggingClient, AuthManager, AddressBook <strong>und</strong> die drei Manager<br />

(Client, Proxyserver <strong>und</strong> Sensornetwork)<br />

Es muss sichergestellt werden, dass jeder Endpunkt eine eindeutige IP-Adresse ver-<br />

wendet. Daher überprüft das AddressBook die übermittelte IP-Adresse <strong>für</strong> jeden neu<br />

hinzuzufügenden Endpunkt. Wird diese schon im System verwendet, wird das<br />

AddressBook eine entsprechende Fehlermeldung an den entsprechenden Kommunika-<br />

tionspartner senden <strong>und</strong> diesen Endpunkt ignorieren.<br />

Auf Gr<strong>und</strong> der Komplexität wurde kein System entwickelt, das eine automatische<br />

IP-Adressvergabe wie etwa DHCP oder ARP ermöglicht.<br />

Es wurde zwar ein Algorithmus entwickelt, der eine freie IP-Adresse aus einem vorge-<br />

gebenen Bereich ermitteln kann, allerdings stellte sich heraus, dass dieser Algorithmus<br />

Diplomarbeit André Hesse


70 5 Der Prototyp<br />

bei einer großen Anzahl an vergebenen IP-Adressen sehr langsam wird.<br />

Bei einer manuellen 4 Konfiguration eines neuen Knotens kann es akzeptiert werden,<br />

wenn eine freie Adresse erst nach kurzer Zeit (


5.2 Der Proxyserver 71<br />

4.2.1).<br />

Konnte dies erfolgreich durchgeführt werden, wird eine Anfrage an das AddressBook<br />

gestellt, ob diese IP-Adresse im System bekannt ist. Ist dies nicht der Fall, wird<br />

der Socket geschlossen. Kann die Anfrage bejaht werden, wird ein Objekt des Typs<br />

Authenticator erstellt <strong>und</strong> diesem der Socket <strong>und</strong> die original Adressdaten übergeben.<br />

Dieser Authenticator führt die in Abschnitt 5.1.1.5 beschriebene Authentifizierung<br />

durch.<br />

Der AuthManager führt eine Liste, in der die Authenticatoren vermerkt werden.<br />

Diese Objekte werden durch einen eigenen Thread realisiert.<br />

Dadurch kann der AuthManager im Hintergr<strong>und</strong> weiter auf andere Verbindungswün-<br />

sche warten.<br />

Jeder Authenticator hat eine Lebenszeit von wenigen Sek<strong>und</strong>en. Kann in dieser Zeit<br />

die Authentifizierung nicht erfolgreich beendet werden, wird die Verbindung abgebaut<br />

<strong>und</strong> der Authenticator terminiert.<br />

Zusätzlich wurde die Anzahl an gleichzeitig lebendigen Authenticatoren auf 25<br />

festgelegt.<br />

Mit diesen zwei Mechanismen wird verhindert, dass das Gesamtsystem durch einen<br />

bösartigen Angriff stillgelegt wird. Jede offene TCP-Verbindung benötigt Ressourcen<br />

des Betriebssystems. Antwortet der Initiator einer Verbindung nicht auf die Komman-<br />

dos des Authenticators kann davon ausgegangen werden, dass der Initiator entweder<br />

in böser Absicht handelt oder selbst abgestorben ist. Damit die Verbindung nicht <strong>für</strong><br />

unbestimmte Zeit offengehalten wird, wird sie nach der maximalen Lebensspanne des<br />

Authenticators terminiert.<br />

Mit der Limitierung auf 25 gleichzeitig lebendigen Authenticatoren können be-<br />

stimmte Angriffe abgewehrt werden. So ist es denkbar, dass jemand ständig in sehr<br />

kurzen Zeitabständen versucht, eine Verbindung zum Proxyserver aufzubauen. Zwar<br />

können solche Angriffe nicht verhindert werden, aber zumindest wird der Proxyserver<br />

dadurch nicht ausgebremst.<br />

Konnte eine Authentifizierung erfolgreich durchgeführt werden, wird ein neues Ob-<br />

jekt der Klasse AuthenticatedSocket erstellt. Diesem wird der SocketServer überge-<br />

ben. Anhand des original TCP-Ports wird entschieden, ob es sich bei dem Kommunika-<br />

tionspartner um einen Client, ein Sensornetzwerk oder um einen anderen Proxyserver<br />

handelt 6 .<br />

Aufgr<strong>und</strong> dieser Angabe wird der AuthenticatedSocket an den betreffenden Ma-<br />

6 Natürlich kann man diese Entscheidung auch durch eine zusätzliche Angabe im Authentifizierungsprozess<br />

realisieren. Aus Gründen der Einfachheit wurde hier aber dieser Weg gewählt.<br />

Diplomarbeit André Hesse


72 5 Der Prototyp<br />

nager weitergegeben. Dazu wird dessen Methode .registerAuthenticatedSocket()<br />

aufgerufen. Wie dieser mit dem AuthenticatedSocket verfährt, wird im folgenden<br />

Abschnitt beschrieben.<br />

Damit der Proxyserver auch eine eigene Verbindung zu anderen Partnern aufbauen<br />

kann, wurde im Authmanager eine weitere Methode realisiert. Dieser Methode wird<br />

die Zieladresse <strong>und</strong> die ID des aufrufenden Connectors übergeben. Optional kann eine<br />

” falsche“ Absenderadresse angegeben werden. Diese wird benötigt, damit der Proxyserver<br />

einen Client als Leuchte 3“ mit der IP-Adresse 10.8.5.6 ansprechen kann.<br />

”<br />

Der Authentifizerungsprozess wird in der oben geschilderten Weise durchlaufen, je-<br />

doch mit dem Unterschied, dass der Proxyserver jetzt als ” SocketClient“ fungiert. Im<br />

Authentifizierungsprozess wird stets die Serverseite als erste beginnen, Daten zu sen-<br />

den.<br />

5.2.3 Die Manager <strong>und</strong> Connectoren<br />

Zu jedem Proxyserver können sich sowohl Clients, Sensornetzwerke als auch andere<br />

Proxyservers verbinden. Der Proxyserver verfügt über drei entsprechende Manager.<br />

Diese verwalten je eine Liste mit Connectoren.<br />

Nachdem eine neue Verbindung durch den AuthManager authentifiziert wurde, wird<br />

dem betreffenden Manager der AuthenticatedSocket übergeben. Wurde im Authen-<br />

tifizierungsprozess zusätzlich die ID des Kommunikationspartners mitgeteilt, ist diese<br />

im AuthenticatedSocket verzeichnet. Anhand dieser ID kann der Manager ermitteln,<br />

ob in seiner Connector-Liste schon ein Connector existiert dessen ID der mitgeteilten<br />

ID entspricht. Wenn eine Übereinstimmung gef<strong>und</strong>en werden kann, wird dem betref-<br />

fendem Connector der AuthenticatedSocket übergeben.<br />

Gibt es keinen Connector mit einer solchen ID oder wurde keine ID mitgeteilt, wird<br />

ein neuer Connector erstellt.<br />

Je nach Typ des Kommunikationspartners werden unterschiedliche Startaktionen<br />

ausgeführt. Einem Client wird zunächst eine Information geschickt, um welche Art<br />

von Sensorknoten es sich bei der angesprochenen IP-Adresse handelt. Kommunikati-<br />

onspartner vom Typ ” Proxyserver“ oder ” Sensornetzwerk“ werden aufgefordert, alle<br />

ihre Sensordaten zu übersenden.<br />

Jeder Connector hat eine Liste <strong>für</strong> ein- <strong>und</strong> ausgehende Nachrichten. Werden Nach-<br />

richten mit dem AuthenticatedSocket empfangen, werden sie zur Auswertung an die<br />

Liste eingehender Nachrichten angehängt. Der Connector muss diese Nachricht dann<br />

auswerten.<br />

Diplomarbeit André Hesse


5.2 Der Proxyserver 73<br />

Es treten zwei mögliche Ereignisarten auf: Die Nachricht könnte einerseits nur <strong>für</strong> den<br />

Connector bestimmt sein. Ein Client könnte zum Beispiel ein ” LogOutAndCallBack“<br />

senden. Dieses Kommando veranlasst den Connector die Verbindung mit dem Client<br />

zu trennen. Der Connector selbst bleibt aber noch eine gewisse Zeit aktiv. Findet in<br />

dieser Zeit ein Ereignis statt, über welches der Client informiert werden sollte, kann<br />

der Connector versuchen, über den AuthManager den Client zu erreichen.<br />

Die zweite Ereignisart betrifft mehrere Connectoren. So könnte ein Connector, der<br />

ein Sensornetzwerk anbindet, eine Nachricht über die Statusänderung eines Knotens<br />

erhalten. Diese Meldung kann <strong>für</strong> mehrere Clients oder andere Proxyserver interessant<br />

sein. Deshalb werden solche Nachrichten verteilt.<br />

5.2.4 Der Weg einer Nachricht im Proxyserver<br />

Die Abbildung 5.7 zeigt den Weg eingehender Nachrichten im Proxyserver.<br />

SNW<br />

SensorNetworkManager<br />

.registerAuthSocket()<br />

Connector<br />

.registerIncomingMessage(string)<br />

AuthenticatedSocket<br />

.send()<br />

.recv()<br />

SocketServer<br />

SocketClient<br />

FIFO<br />

new<br />

Message<br />

.registerXML()<br />

.processMessage(Message)<br />

Abbildung 5.7: Der Weg einer eingehenden Nachricht<br />

Sendet ein Client, ein Sensornetzwerk oder ein anderer Proxyserver an diesen Proxy-<br />

server eine Nachricht, wird diese im jeweiligen Connector von dessen Authenticated-<br />

Socket entgegengenommen. Dieser registriert die Nachricht im Connector in einer War-<br />

teschlange. Diese beruht auf dem ” First In - First Out“-Prinzip. Bis zu dieser Stelle<br />

ist die Nachricht noch eine XML-Zeichenkette. Es wird ein neues Objekt vom Typ<br />

Message erstellt. Konnte dieses die XML-Zeichenkette erfolgreich parsen, wird das Ob-<br />

jekt an die Methode processMessage() weitergegeben. Diese interpretiert den Inhalt<br />

<strong>und</strong> wird entsprechende Reaktionen erzeugen. Der Weg einer ausgehenden Nachricht<br />

ist in Abbildung 5.8 dargestellt.<br />

Diplomarbeit André Hesse


74 5 Der Prototyp<br />

Client<br />

ClientManager<br />

.registerAuthSocket()<br />

Connector<br />

.registerIncomingMessage(string)<br />

AuthenticatedSocket<br />

.send()<br />

.recv()<br />

SocketServer<br />

SocketClient<br />

.registerOutgoingMessage(Message)<br />

.processMessage(Message)<br />

.processMessage(Message)<br />

.processMessage(Message)<br />

Liste der IP-Adressen<br />

von Interesse<br />

Prüfe auf Treffer<br />

Message<br />

.getContent()<br />

FIFO<br />

.spreadMessage(Message)<br />

Abbildung 5.8: Der Weg einer ausgehenden Nachricht<br />

Jeder Manager stellt die Methoden spreadMessageToOtherManagers() <strong>und</strong><br />

spreadMessage() bereit. Mit diesen können Nachrichten intern an alle Connectoren<br />

dieses <strong>und</strong> der anderen Manager gesendet werden.<br />

Alle Connectoren besitzen eine Liste <strong>für</strong> zu überprüfende Nachrichten. In diese wer-<br />

den Nachrichten vom Manager angehängt. Die Connectoren vergleichen den Inhalt der<br />

Nachrichten mit ihrer Liste der ZigBee-Endpunkte von Interesse. Betrifft eine Nachricht<br />

einen solchen Connectors, wird die Nachricht in eine XML-Zeichenkette umgewandelt.<br />

Anschließend wird diese Zeichenkette mit der send-Methode des AuthenticatedSockets<br />

verschickt. War die Nachricht <strong>für</strong> den Connector nicht von Interesse, wird sie einfach<br />

verworfen.<br />

5.2.5 Aufbau von Proxyserver-Proxyserver-Verbindungen<br />

Jeder Proxyserver kann Verbindungen zu anderen Proxyservern aufbauen.<br />

Dazu liest der Proxyserver-Manager beim Start des Programms eine Konfigurati-<br />

onsdatei ein. In dieser können die Adressinformationen anderer Proxyservers verzeich-<br />

net sein. Konnten diese erfolgreich gelesen werden, wird ein eigener Proxyserver-<br />

Connector erstellt. Dieser wird gestartet <strong>und</strong> versucht, eine Verbindung zum angege-<br />

benen Proxyserver aufzubauen. Dieser Verbindungsaufbau wird periodisch wiederholt,<br />

bis eine Verbindung erfolgreich (inklusive Authentifizierung) aufgebaut werden konnte.<br />

Diplomarbeit André Hesse


5.2 Der Proxyserver 75<br />

Dann tauschen beide Proxyserver die Daten ihrer angeschlossenen Sensornetzwerke<br />

aus. Diese Daten werden in den jeweiligen AddressBook-Objekten vermerkt. Ansch-<br />

liessend können sich Clients auch zu ZigBee-Endgeräten verbinden, die nicht direkt<br />

in dem zwischengeschalteten Proxyserver registriert sind. Entsprechende Nachrichten<br />

werden zwischen den Proxyservern weitergeleitet.<br />

5.2.6 Annahme von Client-Verbindungen im Proxyserver<br />

Jedes ZigBee-Endpunkt besitzt eine eigene IP-Adresse, die im Prototypen aus dem<br />

Bereich 10.8.0.0 vergeben wird. Die Endpunkte stellen im Prototyp einzelne ZigBee-<br />

Geräte wie Schalter, Leuchten oder Dimmer dar. Will ein Anwender Anfragen an ein<br />

solches Gerät stellen, kann der entwickelte Client verwendet werden. Dieser versucht,<br />

eine Verbindung zur IP-Adresse des gewünschten Gerätes aufzubauen. Dabei ist dem<br />

Client nicht ersichtlich, dass die Gegenstelle ein Proxyserver ist.<br />

Der Computer, auf dem der Proxyserver läuft, muss unter dem Betriebssystem Linux<br />

betrieben werden. Zusätzlich müssen die in den Abschnitten 4.2.1 <strong>und</strong> 4.2.2 vorgestell-<br />

ten Einstellungen vorgenommen werden. Dazu müssen die iptables-Befehle mit der<br />

Umleitung der betreffenden IP-Bereiche ausgeführt werden.<br />

Will sich nun ein Client zu einer IP-Adresse aus dem 10.8.0.0-Bereich verbin-<br />

den 7 , modifiziert der netfilter diese Pakete <strong>und</strong> ersetzt die Zieladresse durch die des<br />

Proxyservers. Der TCP-Port wird ebenfalls verändert. Die Verbindung wird an die neue<br />

Adresse umgeleitet, in diesem Fall an den ClientListener-Port des Proxyservers. Hier<br />

lauscht der Proxyserver auf eingehende Verbindungen <strong>und</strong> nimmt diese entgegen. Die<br />

Modifikation der IP-Adresse ist an sich nichts besonderes, jedoch ist die Möglichkeit,<br />

dass Programme die NAT-Tabelle auslesen können, ein Vorteil von Linux.<br />

Der Proxyserver wird nun versuchen, die originale Zieladresse herauszufinden. Ist dies<br />

erfolgt, wird der Proxyserver diese mit seinem AddressBook abgleichen. Ist die ange-<br />

rufene IP-Adresse im System verzeichnet, wird die Authentifizierung nach Abschnitt<br />

5.1.1.5 durchgeführt. Der Client kann nicht erkennen, dass er mit dem Proxyserver<br />

verb<strong>und</strong>en ist. Für ihn scheint es, als ob er wirklich mit dem aufgerufenen Gerät ver-<br />

b<strong>und</strong>en ist. Betrachtet man die IP-Pakete <strong>und</strong> TCP-Datagramme, ist eine Modifikation<br />

nicht ersichtlich.<br />

Nach erfolgreicher Authentifizierung sendet der Proxyserver dem Client alle Infor-<br />

mationen, die über den aufgerufenen ZigBee-Endpunkt verfügbar sind. Dabei sendet<br />

der Proxyserver nur Informationen, <strong>für</strong> die der Client freigeschaltet wurde. Diese “Frei-<br />

7 Als Transportprotokoll wird im Prototypen TCP verwendet.<br />

Diplomarbeit André Hesse


76 5 Der Prototyp<br />

schaltung“ erfolgt mit der Anwendergruppe die im Authmanager des Proxyservers <strong>für</strong><br />

jeden Anwender angegeben ist.<br />

Hat der Client alle Attribute des ZigBee-Gerätes erhalten, wird dem Anwender dies<br />

angezeigt. Der Anwender kann sich nun diese Attribute anzeigen lassen. Manche Attri-<br />

bute eines ZigBee-Gerätes lassen sich auch verändern. Dies könnte beispielsweise die<br />

Funktion “An/Aus“ eines Schalters sein. Sind solche Attribute vorhanden, kann der<br />

Anwender eine Veränderung vornehmen. Erfolgt diese, wird eine betreffende Nachricht<br />

an das ZigBee-Gerät, also in Wahrheit den Proxyserver, versendet.<br />

Dieser leitet die Nachricht intern an alle Connectoren weiter. Dort wird die Nach-<br />

richt ausgewertet. Ist ein Connector betroffen, wird dieser die Nachricht an seine Kom-<br />

munikationspartner weiterleiten. Dieser ist entweder der betreffende Sensornetzwerk-<br />

Simulator, zu dem die Nachricht geleitet werden sollte, oder ein weiterer Proxyserver.<br />

Im ersten Fall wird der Sensornetzwerk-Simulator die Nachricht verarbeiten. Dabei<br />

wird das verändernde Attribut ausgelesen <strong>und</strong> mit den Sensorknoten abgeglichen. Ist<br />

eine Änderung berechtigt, wird diese ausgeführt <strong>und</strong> eine neue Nachricht über die<br />

Änderung zurückgesendet. Diese Antwort durchläuft dieselben Mechanismen <strong>und</strong> wird<br />

zwangsläufig auch beim Client ankommen. Dort wird sie dem Anwender angezeigt.<br />

Im zweiten Fall ist der Connector einem weiteren Proxyserver zugeordnet, der zum<br />

Beispiel über das Internet mit diesem Proxyserver verb<strong>und</strong>en ist. Ist an dem zweiten<br />

Proxyserver ein Sensornetzwerk-Simulator angekoppelt, wird der zweite Proxyserver<br />

bei Übereinstimmung die Nachricht an dieses weiterleiten. Werden von diesem Ant-<br />

worten generiert, werden diese an denursprünglichen Proxyserver weitergeleitet, der<br />

den enstprechenden Client informiert. Somit sind vielfältige Netztopologien möglich,<br />

die in Abschnitt 5.6 noch besprochen werden.<br />

5.2.7 Aufbau von Client-Verbindungen durch den Proxyserver<br />

Wurde das Linux-Hostsystem, auf dem der Proxyserver ausgeführt wird, mit dem in<br />

Abschnitt 4.2.3 vorgestellten ” TPROXY“-Patch modifiziert, ist ein Verbindungsaufbau<br />

mit einer falschen IP-Adresse aus einem eigenen Programm möglich. Der Prototyp<br />

nutzt die Funktionalität, die dieser Patch bietet. Hat sich ein Anwender mit einem Cli-<br />

ent an einem Proxyserver angemeldet, verzeichnet dieser die angerufenen IP-Adresse<br />

sowie die Quell-Adresse. Der Anwender kann nun mit dem ZigBee-Endgerät intera-<br />

gieren, welches hinter der angerufenen IP-Adresse steckt (Siehe Abschnitt 5.2.6). Vor<br />

dem Abbauen einer Verbindung durch den Anwender kann dieser angeben, ob er über<br />

Änderungen, die in Abwesenheit am Endgerät auftreten, informiert werden soll. Der<br />

Diplomarbeit André Hesse


5.3 Der Sensornetzwerk-Simulator 77<br />

entsprechende Connector im Proxyserver vermerkt dies <strong>und</strong> wartet auf Nachrichten des<br />

ZigBee-Endgerätes. Trifft eine solche ein, wird der Connector über den Authmanager<br />

einen Verbindungsaufbau starten.<br />

Dabei wird als Quell-Adresse die Adresse des betroffenen ZigBee-Endgerätes ver-<br />

wendet. Die Zieladresse ist die Adresse des Clients, die zuvor verzeichnet wurde. Kann<br />

eine Verbindung aufgebaut werden, wird erneut eine Authentifizierung durchgeführt.<br />

Ist diese erfolgreich wird der Client über die Attributänderung des ZigBee-Knotens<br />

informiert. Der Anwender am Client kann nun erneut mit dem ZigBee-Endgerät inter-<br />

agieren.<br />

Festzuhalten ist, dass <strong>für</strong> den Client eine Verbindung von einem Netzknoten mit<br />

einer Adresse aus dem Bereich 10.8.0.0 aufgebaut wurde. Für den Client ist nicht<br />

ersichtlich, dass in Wahrheit der Proxyserver die Verbindung initiiert hat.<br />

5.3 Der Sensornetzwerk-Simulator<br />

In Abbildung 5.9 ist der Aufbau des Sensornetzwerk-Simulators dargestellt. Er besteht<br />

aus einem Front- <strong>und</strong> einem Backend. Viele Teile der Proxyserver-Komponente konnten<br />

wiederverwendet werden. Die Authentifizierung wird wie beim Proxyserver von so ge-<br />

nannten Authenticator-Objekten durchgeführt. Die Funktionalität des AuthManagers<br />

wird durch den Configurator erbracht. Für das Einlesen <strong>und</strong> Schreiben von XML-<br />

Konfigurationsdateien <strong>und</strong> das Erstellen von Nachrichten wurden ebenso die entspre-<br />

chenden Klassen der Proxyserver-Komponente integriert.<br />

5.3.1 Configurator<br />

Wie im Proxyserver liest der Configurator zunächst einige Konfigurationsdateien ein.<br />

Zuerst wird die Profildatei mit den Beschreibungen der möglichen ZigBee-Gerätearten<br />

interpretiert. Zusätzlich wird eine Datei mit den Angaben der Binding-Möglichkeiten<br />

der ZigBee-Gerätearten eingelesen. Diese beinhaltet die Aussagen, die in Tabelle 5.1<br />

angegeben sind. Konnten beide Dateien erfolgreich eingelesen werden, wird ein Text-<br />

Menu angezeigt. Mit diesem kann der Anwender auswählen ob ein Sensornetzwerk neu<br />

erstellt oder die Konfiguration eines bereits erstellten Netzwerkes eingelesen werden<br />

soll.<br />

Diplomarbeit André Hesse


78 5 Der Prototyp<br />

SensorNetzwerk-Simulator<br />

Configurator<br />

.createNewSNW()<br />

.createDevice()<br />

.registerOutgoingSocket()<br />

Authenticator<br />

Backend<br />

Frontend<br />

Profile<br />

IP-Address<br />

IEEE-Address<br />

ID<br />

Attribut<br />

IO-Manager<br />

SensorNetwork<br />

.processMessage()<br />

.updateDeviceAndSpread()<br />

.checkUpdateBo<strong>und</strong>ed()<br />

Device<br />

IP-Address<br />

IEEE-Address<br />

ID<br />

Attribut<br />

.alterDeviceAttribute()<br />

AuthSocket<br />

Abbildung 5.9: Die Struktur des Sensornetzwerk-Simulators<br />

5.3.1.1 Erstellung eines neuen Netzwerkes<br />

Proxy<br />

Soll ein neues Sensornetzwerk erstellt werden, muss zunächst der Name des neuen Sen-<br />

sornetzwerkes eingegeben werden. Vom Configurator werden zusätzlich die Address-<br />

Informationen jenes Proxyservers kopiert, zu dem sich das Sensornetzwerk später ver-<br />

binden soll. Diese Angaben können später in der Konfigurationsdatei leicht verändert<br />

werden.<br />

Anschliessend können die einzelnen ZigBee-Endgeräte erstellt werden. Als erstes<br />

Endgerät werden Eigenschaften des PAN-Koordinators abgefragt. Abbildung 5.10 zeigt<br />

die Auswahl des Geräte-Typs des PAN-Koordinators. Nachdem der Typ festgelegt<br />

wurde, können nun nacheinander alle Attribute festgelegt werden. Die Angabe, wel-<br />

ches Gerät über welche Attribute verfügt, wurde beim Start des Programmes durch<br />

das Einlesen der Profil-Datei festgelegt. Manche Attribute erfordern die Eingabe einer<br />

Zeichenkette (z.B. Name des Endgerätes) oder eines Zahlenwertes (z.B. Lichtstärke in<br />

Lux). Einige Attribute bieten die Auswahl aus vordefinierten Zuständen an. In Abbil-<br />

dung 5.11 wurde als Geräte-Typ ein ” Switch Remote Control“ gewählt. Dieser Typ hat<br />

ein Attribut ” OnOffSRC“, welches den Zustand ” On“, ” Off“ oder ” Toggle Output“ anneh-<br />

men. Nun kann der Anwender angeben, welchen Wert dieses Attribut haben soll. Nach<br />

Diplomarbeit André Hesse


5.3 Der Sensornetzwerk-Simulator 79<br />

--- PAN Knoten Profile auswaehlen ---<br />

1: Switch Remote Control<br />

2: Switching Load Controller<br />

3: Occupancy Sensor<br />

4: Light Sensor Monochromatic<br />

5: Dimmer Remote Control<br />

6: Dimming Load Controller<br />

0: Zurueck<br />

--------------------------------<br />

Abbildung 5.10: Programmausgabe: Auswahl des Typs eines ZigBee-Endgerätes<br />

--- PAN Knoten bearbeiten ---<br />

OnOffSRC:<br />

ON or OFF commands for Switch Remote Control<br />

0: On: ON Command for Switch Remote Control<br />

1: Off: OFF Command for Switch Remote Control<br />

2: Toggle Output: Used for 3 Way Switches<br />

Abbildung 5.11: Programmausgabe: Änderung eines Attributes bei der Konfiguration<br />

<strong>und</strong> nach werden alle Attribute abgefragt. Ein wichtiges ist dabei die IP-Addresse, die<br />

dieses Endgerät verwenden soll. In der Konfigurationsdatei wird zur Ermittlung einer<br />

freien IP-Adresse der verwendete Bereich angegeben. Mit Hilfe dieser Informationen<br />

ermittelt der Configurator eine freie Adresse <strong>und</strong> markiert die vergebene als belegt.<br />

Wird ein weiteres Endgerät hinzugefügt, wird eine andere Adresse vergeben. Sind alle<br />

Angaben eines Endgerätes aufgenommen, wird diese in eine Liste angehängt.<br />

In einem ZigBee-Knoten können mehrere Endgeräte realisiert werden. Diese Endge-<br />

räte haben dann einige gleiche Attribute wie z.B. die 64-Bit IEEE-Adresse, die NWK-<br />

Adresse oder den Batteriezustand. Deshalb kann nach der Konfiguration eines ZigBee-<br />

Knotens angegeben werden, ob ein ” Kind-Endgerät“ angelegt werden soll. Für dieses<br />

werden die entsprechenden gleichen Attribute gesetzt, sodass sie nicht erneut eingege-<br />

ben werden müssen. Da nur maximal 240 Endgeräte in einem Knoten realisiert werden<br />

können (Siehe Abschnitt 3.5.3.3), wird der Configurator dies beachten.<br />

Hat man alle ZigBee-Knoten/Endgeräte eingegeben, wird der Configurator nun<br />

noch die ” Binding“-Beziehungen abfragen (Siehe Abschnitt 3.5.3.3). Die zuvor erstellte<br />

Geräteliste wird abgearbeitet. Dabei werden nur sinnvolle Verbindungen zugelassen<br />

(Siehe Tabelle 5.1). Wurde ein Gerät schon mit einem anderen verb<strong>und</strong>en, wird dies<br />

ebenfalls angezeigt. Abbildung 5.12 zeigt die Auswahl eines Endgerätes an.<br />

Diplomarbeit André Hesse


80 5 Der Prototyp<br />

Dieses Device is bereits mit folgenden Device’s verb<strong>und</strong>en:<br />

IP: 10.8.10.1<br />

DeviceID: Leuchte 7 IP-Adresse: 10.8.10.2<br />

DeviceType: Switching Load Controller<br />

Bitte geben sie an mit welchem Knoten dieses \<br />

Device verb<strong>und</strong>en werden soll.<br />

1: 10.8.10.3<br />

0: keine Auswahl<br />

Abbildung 5.12: Programmausgabe: Binding-Tabelle konfigurieren<br />

Aus der ZigBee-Spezifikation ist nicht ersichtlich, ob auch das Binding zwischen<br />

Knoten verschiedener ZigBee-Netzwerke möglich ist. Es ist aber denkbar, dass einige<br />

ZigBee-Knoten als Gateway zwischen zwei Netzwerken fungieren könnten <strong>und</strong> dann<br />

Nachrichten zwischen beiden austauschen könnten.<br />

Im Beispiel der Hausautomatisierung wäre es möglich, dass auf den verschiedenen<br />

Etagen eines Hauses einzelne ZigBee-Netzwerke aufgebaut werden, die über solche Ga-<br />

teways miteinander kommunizieren können. Im ZigBee-Configurator wurde auf eine<br />

Integration der Funktion ” Binding zu externen Endgeräten“ verzichtet. Jedoch ist es<br />

möglich, in der gespeicherten Konfigurationsdatei (Siehe Anhang A.9) per Hand die<br />

Einträge zu ergänzen. Zu beachten ist, dass dies bei beiden Endgeräten vorgenom-<br />

men wird. Abbildung 5.13 zeigt einen solchen Bindingeintrag auszugsweise. Werden<br />

... Auszug der Konfigurationsdatei sensornetwork.conf ...<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 5.13: Binding-Information in der Konfigurationsdatei<br />

später im laufenden Betrieb Nachrichten zwischen dem Sensornetzwerk-Simulator <strong>und</strong><br />

einem Proxyserver oder zwischen zwei Proxyservern ausgetauscht, werden die Binding-<br />

Informationen beachtet. Somit kann ein Endgerät aus Sensornetzwerk A ein Endgerät<br />

aus Sensornetzwerk B steuern.<br />

Hat man durch einen nachträglichen Eintrag zwei Endgeräte miteinander verbun-<br />

den, die laut der Profilbeschreibung keine Daten miteinander austauschen können,<br />

Diplomarbeit André Hesse


5.3 Der Sensornetzwerk-Simulator 81<br />

wirkt sich dies auf den Programmablauf nicht nachträglich aus. Zwar werden ent-<br />

sprechende Attribut-Änderungs-Nachrichten an die betroffenen Endgeräte (also die<br />

Sensornetzwerk-Simulatoren) versendet, diese überprüfen aber, ob die Attributände-<br />

rung überhaupt zum Typ des Endgerätes passt. Wenn dies nicht der Fall ist, wird die<br />

Nachricht verworfen.<br />

Hat man auch die Binding-Informationen vollständig eingegeben, kann das erstellte<br />

Sensornetzwerk gespeichert werden.<br />

5.3.1.2 Start des Sensornetzwerkes<br />

Nach erfolgreichem Anlegen eines neuen Sensornetzwerkes oder nach dem Einlesen ei-<br />

nes zuvor gespeicherten Sensornetzwerkes kann dieses gestartet werden. Das Objekt<br />

SensorNetwork versucht über den Configurator eine Verbindung zu einem Proxy-<br />

server herzustellen. Gelingt dies nicht, wird periodisch ein neuer Verbindungsversuch<br />

initiiert, bis eine Verbindung hergestellt werden kann oder das Programm beendet wird.<br />

Zusätzlich wird der IO-Manager gestartet. Als eigener Thread nimmt er Eingaben vom<br />

Anwender entgegen.<br />

Zunächst sind nur die Funktionen ” Status Ändern“ <strong>und</strong> ” Speichern des Zustandes<br />

des Netzwerkes“ implementiert. Abbildung 5.14 zeigt dieses Menu.<br />

--- SensorNetwork running ---<br />

Ihre Optionen...<br />

1: Status eines Devices aendern<br />

4: Aktuellen Zustand des Netzwerkes speichern<br />

5: Beenden<br />

-----------------------------<br />

Abbildung 5.14: Programmausgabe: Auswahlmenu nach Start des Sensornetzwerkes<br />

Hat man ” Status Ändern“ gewählt, wird eine Auflistung aller Endgeräte dieses Netz-<br />

werkes angezeigt, aus denen eines gewählt werden kann. Anschließend werden alle ver-<br />

änderbaren Attribute dieses Endgerätes aufgelistet. Hat der Anwender eines selektiert,<br />

kann dieses verändert werden. In Abbildung 5.15 wurde wieder das Attribut ” OnOffS-<br />

RC“ gewählt.<br />

Wurde die Änderung durchgeführt, wird das veränderte Attribut vom SensorNetwork<br />

verarbeitet. Dabei wird zunächst das betreffende Endgerät aktualisiert. Anschließend<br />

werden die Binding-Einträge ausgewertet <strong>und</strong> die betreffenden Endgeräte dieses Sen-<br />

sornetzwerkes aktualisiert, sofern dies sinnvoll ist. Für jedes veränderte Endgerät wird<br />

eine Nachricht mit der Attributänderung an den Proxyserver verschickt. Dort werden<br />

Diplomarbeit André Hesse


82 5 Der Prototyp<br />

Sie haben OnOffSRC ausgewaehlt<br />

ON or OFF commands for Switch Remote Control<br />

Der aktuelle Wert ist: Toggle Output<br />

Sie koennen folgende Werte setzen... Abbrechen mit xxx<br />

0: On: ON Command for Switch Remote Control<br />

1: Off: OFF Command for Switch Remote Control<br />

2: Toggle Output: Used for 3 Way Switches<br />

Abbildung 5.15: Programmausgabe: Änderung eines Attributes im laufenden Betrieb<br />

diese Nachrichten dann verteilt. Dem Anwender wird die erfolgreiche Änderung ebenso<br />

angezeigt.<br />

Im Hintergr<strong>und</strong> wartet das SensorNetwork auf ankommende Nachrichten.<br />

Diese können einerseits eine Statusanforderung über bestimmte Attribute 8 einzelner<br />

Endgeräte sein.<br />

Ein weiterer Nachrichtentyp ist die Information über die Statusänderung eines At-<br />

tributes in einem externen Endgerät (siehe Anmerkung zum externen Binding in Ab-<br />

schnitt 5.3.1). Diese Nachricht muss ausgewertet werden <strong>und</strong> betreffende Endgeräte<br />

des eigenen Netzwerkes unter Umständen aktualisiert werden.<br />

Schließlich ist noch ein Attributänderungswunsch <strong>für</strong> ein Endgerätes im eigenen<br />

Sensornetzwerk möglich. Diese Nachricht wird von einem Client gesendet <strong>und</strong> muss<br />

überprüft werden, ob eine solche Änderung <strong>für</strong> das betreffende Endgerät sinnvoll er-<br />

scheint.<br />

5.4 Der Client<br />

Die Abbildung 5.16 zeigt den Aufbau des Client-Programmes. Dieser besteht aus ei-<br />

nem Front- <strong>und</strong> einem Backend. Wie im Sensornetzwerk-Simulator wurden mehrere<br />

Programmteile des Proxyserver-Programmes wiederverwendet.<br />

Die Funktionalität des AuthManagers wird durch den ClientManager erbracht. Für<br />

das Einlesen <strong>und</strong> Schreiben von XML-Konfigurationsdateien <strong>und</strong> das Erstellen von<br />

Nachrichten wurden die entsprechenden Klassen der Proxyserver-Komponente inte-<br />

griert.<br />

Nach dem Starten des Programms werden die drei Komponenten ClientManager,<br />

Client <strong>und</strong> der IO-Manager gestartet. Der ClientManager liest eine Konfigurations-<br />

8 Durch die Unterstützung von Anwendergruppen im Proxyserver wird dieser nur bestimmte Attri-<br />

bute abfordern.<br />

Diplomarbeit André Hesse


5.4 Der Client 83<br />

Client<br />

Listener<br />

Backend<br />

Frontend<br />

ClientManager<br />

.setUserData()<br />

.registerOutgoingSocket()<br />

.registerIncommingSocket()<br />

Authenticator<br />

IO-Manager<br />

Client<br />

showAttribute()<br />

.changeAttirbute()<br />

.connectToZigBeeMaster()<br />

.connectToZigBeeByIP()<br />

AttributListe<br />

IP-Address<br />

Attribut<br />

AuthSocket<br />

Abbildung 5.16: Die Struktur des Clients<br />

Proxy<br />

datei ein, in der die eigenen Adressinformationen enthalten sind. Ausserdem kann die<br />

Adresse eines ZigBee-Auskunftsdienstes angegeben werden. Der IO-Manager zeigt dem<br />

Anwender ein Auswahlmenu an, welches in Abbildung 5.17 dargestellt ist.<br />

--- ZigBee-Netzwerk-Kontrolle ---<br />

Ihre Optionen...<br />

1: Zum ZigBee-Auskunftsdienst verbinden<br />

2: Zu einem ZigBee-Geraet direkt verbinden<br />

3: Beenden.<br />

-----------------------------<br />

Abbildung 5.17: Programmausgabe: Startmenu des Clients<br />

Durch Auswahl von ” Zum ZigBee-Auskunftsdienst verbinden“ wird der Client ver-<br />

suchen, sich zu dem ZigBee-Auskunftsdienst zu verbinden. Die IP-Adresse des ZigBee-<br />

Auskunftsdienstes ist wie die der ZigBee-Endgeräte real im Netzwerk nicht vorhanden.<br />

Es wird eine Verbindung zu einem Proxyserver mit einer Zieladresse aus dem 10.8.0.0-<br />

Adressbereich aufgebaut. Dieser Proxyserver fungiert dann als Auskunftsdienst.<br />

Zuerst wird die Authentifizierung 9 durchgeführt. War diese erfolgreich, wird der<br />

Proxyserver (als ZigBee-Auskunftsdienst) eine Liste aller bekannten ZigBee-Endgeräte<br />

9 Nach dem Starten des Clients müssen nur beim ersten Verbindungswunsch die Anwenderdaten<br />

eingegeben werden. Für jeden weiteren Verbindungswunsch werden diese dann automatisch verwendet.<br />

Diplomarbeit André Hesse


84 5 Der Prototyp<br />

an den Client zurücksenden. Die Verbindung wird danach abgebaut.<br />

Dem Anwender wird diese Auswahl angezeigt. Er kann dann den Client veranlassen,<br />

sich zu einem dieser ZigBee-Endgeräte zu verbinden. War dies erfolgreich, sendet der<br />

Client eine Nachricht an das ZigBee-Endgerät.<br />

Mit dieser Nachricht wird das Endgerät aufgefordert, dem Client alle Attribute zu<br />

übermitteln. Der Proxyserver, zu dem die Verbindung ja in Wahrheit besteht, wird<br />

nun alle Attribute übersenden, <strong>für</strong> die der Anwender freigeschaltet ist. Die aktuellen<br />

Zustandswerte wird der Proxy durch entsprechende Nachrichten von dem betroffenen<br />

Sensornetzwerk-Simulator abfordern.<br />

In jedem Attribut ist zusätzlich angegeben, ob diese Attribut auch verändert werden<br />

kann. Dazu werden im Proxyserver die Informationen der Anwendergruppen verwendet<br />

(Siehe Abschnitte 5.2.1 <strong>und</strong> 5.2.6).<br />

Anschließend wird dem Anwender der erfolgreiche Aufbau einer Verbindung zu die-<br />

sem Endgerät angezeigt. Der Anwender kann nun verschieden Aktionen ausführen. Er<br />

kann sich den Status des Endgerätes anzeigen lassen oder Attribute des Endgerätes<br />

verändern. Zusätzlich kann der Anwender die Verbindung abbauen, zuvor dem Endge-<br />

rät aber anzeigen, dass dieses ihn bei einem Ereignis (Attributänderung) zurückruft.<br />

Abbildung 5.18 zeigt das Optionen-Menu an.<br />

Verb<strong>und</strong>en mit 10.8.5.6<br />

--- Ihre Optionen... ---<br />

1: Status anzeigen<br />

2: Attribut aendern<br />

3: Ein anderes Geraet aufrufen<br />

4: Ausloggen <strong>und</strong> auf Rueckruf durch den Sensorknoten warten<br />

5: Beenden<br />

-----------------------------<br />

Abbildung 5.18: Programmausgabe: Optionen-Menu im Client nach erfolgreicher Verbindung<br />

Die Änderung eines Attributes geschieht in ähnlicher Weise wie im Sensornetzwerk-<br />

Simulator. Es werden die selben Eingabemöglichkeiten angezeigt.<br />

Hat ein Anwender ein Attribut geändert, schickt der Client eine Nachricht an den<br />

Proxyserver. Dort wird diese zum entsprechenden Sensornetzwerk-Simulator vermit-<br />

telt.<br />

Dieser gleicht die Attributänderung mit den Attributen des betreffenden Endgerätes<br />

ab. Dieser Mechanismus ist in Abschnitt 5.3.1.2 bereits beschrieben worden. Konnte die<br />

Attributänderung durchgeführt werden, wird eine entsprechende Änderungsnachricht<br />

Diplomarbeit André Hesse


5.5 Kopplung über das Internet durch den Einsatz eines VPNs 85<br />

generiert. Diese wird an alle betreffenden Komponenten geschickt <strong>und</strong> wird letztlich<br />

auch im Client ankommen.<br />

Dieser zeigt die Änderung dem Anwender an. Ebenso werden dem Anwender Attri-<br />

butänderungen angezeigt, die dieser selber nicht veranlasst hat. Ein Schalter könnte<br />

z.B. von zwei Anwendern an zwei Clients geschaltet werden, oder von der Änderung<br />

eines anderen Endgerätes betroffen sein (Siehe Abschnitt 5.3.1.2). In Abbildung 5.19<br />

ist eine solche Änderung abgebildet.<br />

Nachricht erhalten: Ein Attribut wurde geaendert...<br />

Name des Attributes: OnOffSRC<br />

Beschreibung: ON or OFF commands for Switch Remote Control<br />

Neuer Wert: On<br />

Abbildung 5.19: Anzeige einer Attributänderung<br />

Hat der Anwender eine Rückrufnachricht an das Endgerät gesendet, wird die Ver-<br />

bindung abgebaut. Der Proxyserver registriert den Rückrufwunsch <strong>und</strong> wird bei einem<br />

entsprechenden Ereignis versuchen, den Client zurückzurufen. Dabei wird als Quell-<br />

Adresse die IP-Adresse des ZigBee-Endgerätes verwendet. Kann eine Verbindung auf-<br />

gebaut werden (Siehe Abschnitt 5.2.7), wird dem Anwender des Clients die in Ab-<br />

bildung 5.20 dargestellte Nachricht angezeigt. Der Anwender kann dann die bereits<br />

geschilderten Aktionen ausführen.<br />

Verbindung von Endgeraet 10.8.5.6 angenommen<br />

---------------------------------------<br />

Abbildung 5.20: Programmausgabe: Rückruf durch ein Engerät<br />

5.5 Kopplung über das Internet durch den Einsatz<br />

eines VPNs<br />

Damit ein Anwender eines Clients eine Verbindung zu einem Proxyserver aufbauen<br />

kann (unter Verwendung der ZigBee-Endgeräte IP-Adressen) müssen der Client <strong>und</strong><br />

der Proxy im selben privaten Netzwerk angekoppelt sein. Man könnte zwar auf dem<br />

Computer auf dem der Client ausgeführt wird Routingeinträge vornehmen, die diese<br />

Anfragen an einen Knoten eines anderen Netzwerkes weiterleiten, sind beide Netzwerke<br />

aber über das öffentliche Internet verb<strong>und</strong>en, können die IP-Pakete nicht weitergeleitet<br />

werden.<br />

Diplomarbeit André Hesse


86 5 Der Prototyp<br />

Der Proxyserver bildet die ZigBee-Endgeräte mit IP-Adressen aus dem privaten<br />

Adressbereich 10.8.0.0 ab. Diese IP-Adressen dürfen aber aufgr<strong>und</strong> der Forderung<br />

nach der Eindeutigkeit von IP-Adressen im Internet nicht verwendet werden (Siehe<br />

Abschnitt 2.2.1).<br />

Um trotzdem die Funktionalität des Prototypen zu realisieren, kann ein ” Virtual<br />

Private Network-Server“ (VPN) eingesetzt werden. VPNs werden von vielen Unterneh-<br />

men eingesetzt, um mehrere Netzwerke über das Internet miteinander zu verbinden.<br />

In Abbildung 5.21 ist die Kopplung zweier Netzwerke mittels einer VPN-Verbindung<br />

dargestellt.<br />

Netzwerk 1 Netzwerk 2<br />

192.168.0.5 192.168.0.122 192.168.0.9<br />

192.168.0.180 192.168.0.190<br />

192.168.0.1<br />

192.168.0.7<br />

VPN Server<br />

NAT (Software)<br />

10.8.0.1<br />

NAT<br />

89.67.33.11<br />

148.24.55.9<br />

Internet<br />

Abbildung 5.21: VPN-Verbindung<br />

VPN Tunnel<br />

VPN Client<br />

(Software)<br />

10.8.0.2<br />

Dabei werden in beiden Netzen VPN-Gateways installiert. Diese Gateways werden<br />

durch eine Software realisiert <strong>und</strong> müssen nicht direkt an das Internet angeschlossen<br />

sein, sondern können auch hinter einem NAT-Router angesiedelt sein. Ein Gateway<br />

fungiert als Server, das andere als Client. Zwischen beiden wird ein Tunnel aufge-<br />

baut, durch den entsprechende Pakete der Computer in diesen Netzwerken geleitet<br />

werden. Dazu erstellen die VPN-Gateways eine eigene virtuelle Netzwerkschnittstelle<br />

auf dem Computer, auf dem diese Anwendungen ausgeführt werden. Diese Schnittstelle<br />

bekommt eine eigene IP-Adresse.<br />

Damit ein anderer Computer aus diesem Netzwerk dieses Gateway nutzen kann,<br />

müssen entsprechende Routingeinträge vorgenommen werden. Dann können Anfragen<br />

Diplomarbeit André Hesse


5.5 Kopplung über das Internet durch den Einsatz eines VPNs 87<br />

transparent durch den VPN-Tunnel geleitet <strong>und</strong> auf der anderen Seite dieses Tunnels<br />

von dem entsprechenden VPN-Gateway entgegengenommen werden. Diese wird dann<br />

versuchen, die empfangenen Pakete an lokale Rechner auszuliefern.<br />

Beide Seiten können eigene Verbindungen durch den Tunnel aufbauen. Damit können<br />

die gängigen Protokolle der Vermittlungs-, Transport- <strong>und</strong> Anwendungsschicht durch<br />

den Tunnel genutzt werden.<br />

Je nach Konfiguration sind alle Knoten in beiden Netzwerken in der Lage, die ande-<br />

ren Knoten zu erkennen. So könnte zum Beispiel ein Anwender im Netzwerk 1 auf die<br />

Druckerfreigabe eines Computers im Netzwerk 2 zugreifen. Da der Tunnel transparent<br />

arbeitet, ist es <strong>für</strong> die Anwender unter Umständen nicht einmal ersichtlich, dass zwei<br />

Netzwerke gekoppelt wurden. Für die Anwender scheint es, als ob sich alle Knoten im<br />

selben Netzwerk befinden.<br />

Ein weiterer Vorteil ist, dass dieser Tunnel unter Zuhilfenahme von hinreichend<br />

starken Verschlüsselungstechniken sicher gegenüber Angreifern von außen ist 10 . Sowohl<br />

der VPN-Client als auch der VPN-Server müssen sich gegenseitig authentifizieren <strong>und</strong><br />

authentisieren. Dabei werden oft Schlüssel-Zertifikate verwendet.<br />

Der Prototyp kann durch die Nutzung eines VPNs bereichert werden. Das Protokoll,<br />

welches im Prototypen zur Kopplung von Clients, Proxyservern <strong>und</strong> Sensornetzwerken<br />

verwendet wird, kann über einen VPN geroutet werden. Somit kann auf ein ZigBee-<br />

Netzwerk auch über das Internet zugegriffen werden.<br />

Zum Test wurde auf einem Rechner ein VPN-Server aufgesetzt. Dabei kam ” OpenV-<br />

PN“ zum Einsatz. Diese OpenSource-Anwendung kann unter [Open] heruntergeladen<br />

werden.<br />

In der beiliegenden Dokumentation ist die Installation hervorragend beschrieben.<br />

Die Konfiguration eines eigenen VPN-Netzwerkes ist damit innerhalb kürzester Zeit<br />

möglich. Die Nutzung von OpenVPN ist kostenlos.<br />

Auf einem Computer wurde ein OpenVPN-Server installiert, auf einem Notebook ein<br />

OpenVPN-Client. Der Computer war in einem lokalen Netzwerk mittels eines NAT-<br />

Routers ans Internet angeb<strong>und</strong>en. Am Notebook wurde eine Verbindung ins Internet<br />

über ein Mobiltelefon hergestellt. Nach der Initialisierung des VPN-Tunnels konnten<br />

beide Computer auf den jeweils anderen zugreifen.<br />

Auf dem Notebook wurde ein Proxyserver sowie ein Sensornetzwerk-Simulator gest-<br />

artet. Das Betriebssystem des Notebooks wurde durch entsprechende Routingeinträge<br />

10 Jedoch nur so lange, wie kein Computer durch eine andere Verbindung kompromittiert wurde. Hat<br />

ein Angreifer erst einmal Zugriff auf einen Rechner im Netzwerk erhalten, kann dessen VPN-<br />

Verbindung genutzt werden um auch auf andere Computer dieses VPN-Netzwerkes zuzugreifen.<br />

Daher sollte der Zugang zum VPN-Netzwerk mit Bedacht reglementiert werden.<br />

Diplomarbeit André Hesse


88 5 Der Prototyp<br />

angewiesen, Anfragen an Knoten mit IP-Adressen aus dem Bereich 10.8.0.0 über den<br />

VPN-Client zu versenden.<br />

Innerhalb kürzester Zeit konnte sich ein Client (des Prototyps) an einem Proxyserver<br />

ankoppeln. Dabei sinkt die Verarbeitungszeit zwar merklich ab, was aber auf die Ver-<br />

wendung des Mobiltelefons zurückzuführen ist. Der Prototyp ist aber in seinem vollen<br />

Umfang nutzbar.<br />

Ein weiterer Vorteil ist die Verschlüsselung der Kommunikation im VPN-Tunnel. Im<br />

Prototypen ist zwar eine Authentifizierung implementiert, allerdings werden alle Daten<br />

des entwickelten Protokolls im Klartext übertragen. Verwendet man ein Programm,<br />

welches den Netzwerkverkehr protokollieren kann, wie z.B. ethereal [Ethe], können alle<br />

Informationen mitgelesen werden.<br />

Durch den Einsatz der OpenVPN-Technik ist dies nicht mehr möglich, da deren<br />

Tunnel verschlüsselt wird.<br />

5.6 Unterstützte Netztopologien<br />

Die Struktur des Prototypen erlaubt es, vielfältige Netztopologien aufzubauen. In Ab-<br />

bildung 5.22 sind beispielhaft 3 Topologien aufgezeigt.<br />

Die ZigBee-Endgeräte wurden schematisch zusammengefasst, in der Annahme dass,<br />

jeder Sensornetzwerk-Simulator mehrere Knoten verwalten kann.<br />

Im einfachsten Fall (Abbildung 5.22 a.) befinden sich Client, Proxy <strong>und</strong> Sensornetz-<br />

werk-Simulator in einem abgeschlossenen Netzwerk. Der Client kann über den Proxy-<br />

server auf alle ZigBee-Endgeräte zugreifen.<br />

Im zweiten Fall (Abbildung 5.22 b.) sind zwei Proxyserver von zwei privaten Netzwer-<br />

ken miteinander gekoppelt. Alle Clients in beiden Netzwerken können auf alle ZigBee-<br />

Endgeräte in beiden Netzwerken zugreifen. Eine besonderer Fall ist hier nicht aufge-<br />

zeigt. Sind die beiden Netzwerke an das Internet angeschlossen <strong>und</strong> wird einer der<br />

Proxyserver auf einem Computer ausgeführt, der direkt aus dem Internet adressierbar<br />

ist, kann eine Verbindung zwischen beiden Proxyservern aufgebaut werden. Dazu kann<br />

der Proxyserver, der aus dem Internet adressiert werden kann, einen Verbindungs-<br />

wunsch von dem anderen Proxyserver annehmen.<br />

Allerdings soll nocheinmal ausdrücklich auf die Tatsache hingewiesen werden, dass<br />

die Verbindungen im Prototypen nicht verschlüsselt werden. Damit kann jeder Router<br />

im Internet, über den eine solche Verbindung geroutet wird, die Kommunikation mit-<br />

protokolieren. Daher sollte ” immer“ eine VPN-Verbindung bei der Kopplung über das<br />

Internet verwendet werden.<br />

Diplomarbeit André Hesse


5.6 Unterstützte Netztopologien 89<br />

IP-Netz 1<br />

Client<br />

Client<br />

a.)<br />

IP-Netz 1<br />

Client<br />

IP-Netz 2<br />

Client<br />

b.)<br />

IP-Netz 1<br />

Client<br />

IP-Netz 2<br />

Client<br />

IP-Netz 5<br />

Client<br />

c.)<br />

VPN<br />

VPN<br />

VPN<br />

Proxyserver<br />

Proxyserver<br />

Proxyserver<br />

IP-Netz 3<br />

Proxyserver<br />

VPN<br />

Proxyserver<br />

IP-Netz 4<br />

Abbildung 5.22: Mögliche Netztopologien des Prototyps<br />

Sensornetzwerk-<br />

Simulator<br />

Sensornetzwerk-<br />

Simulator<br />

Sensornetzwerk-<br />

Simulator<br />

Sensornetzwerk-<br />

Simulator<br />

Sensornetzwerk-<br />

Simulator<br />

Abbildung 5.22 c.) zeigt schließlich eine Kopplung mehrere Clients an mehrere Proxy-<br />

server <strong>und</strong> Sensornetzwerk-Simulatoren. Die Verbindungen der Programmkomponen-<br />

ten der einzelnen Netzwerke erfolgt dabei unter Einsatz von OpenVPN. In der Ab-<br />

bildung wurde aus Gründen der Übersichtlichkeit auf die Darstellung der VPN-Server<br />

Diplomarbeit André Hesse


90 5 Der Prototyp<br />

<strong>und</strong> -Clients verzichtet.<br />

An dieser Stelle soll nocheinmal besonders auf die Möglichkeit der Kopplung meh-<br />

rerer Proxyserver miteinander eingegangen werden. Diese tauschen alle Informationen<br />

über die ihnen bekannten ZigBee-Endgeräte aus. Der Anwender eines Clients kann alle<br />

Endgeräte direkt mit ihrer IP-Adresse ansprechen.<br />

Dies setzt aber voraus, dass auf allen Computern, auf denen die Proxyserver gest-<br />

artet werden, die entsprechenden Netfilter-Regeln ausgeführt wurden. Diese Regeln<br />

müssen dieselben Zieladressbereiche (z.B. 10.8.0.0) umfassen. Damit ein Rückruf rea-<br />

lisiert werden kann, muss ebenso auf allen Proxyserver-Computern der TPROXY-Patch<br />

installiert sein. Ohne ihn ist kein Rückruf möglich.<br />

Der Proxyserver kann aber auch ohne die beiden Funktionen ausgeführt werden. Die<br />

Entwicklung des Prototyps wurde hauptsächlich unter dem Betriebssystem OS X auf<br />

einem Mac durchgeführt.<br />

Alle drei Programmkomponenten sind daher sowohl unter Linux als auch unter Mac<br />

OS X lauffähig. Allerdings ist hier die Funktionalität des Proxyservers eingeschränkt.<br />

Er kann dann keine Verbindungen zu einer ” nicht existierenden“ IP-Adresse annehmen<br />

oder aufbauen.<br />

Damit können an diesem Proxyserver keine Clients angemeldet werden. Jedoch<br />

können Sensornetzwerk-Simulatoren angekoppelt werden. Dann können deren ZigBee-<br />

Endgeräte <strong>für</strong> Clients die an anderen Proxyservern angemeldet sind, zur Verfügung<br />

gestellt werden.<br />

Diplomarbeit André Hesse


6 Evaluierung des implementierten<br />

Prototyps<br />

6.1 Mögliche Lösungsansätze<br />

Eine der Aufgaben, die im Rahmen dieser Diplomarbeit durchgeführt werden soll, ist<br />

der Vergleich des selbst entwickelten Ansatzes mit vorhandenen Lösungen.<br />

Ziel ist die Kopplung eines drahtlosen Sensornetzwerkes auf Basis der ZigBee-Tech-<br />

nologie an IP-basierte Kommunikationssysteme. IP ist der Quasi-Standard zur Vernet-<br />

zung von Computern im Internet.<br />

Dass eine Kopplung eines drahtlosen Sensornetzwerkes an solche IP-Netzwerke sinn-<br />

voll <strong>und</strong> wünschenswert ist, kann nicht bestritten werden. Ein Sensornetzwerk kann<br />

gerade in der Hausautomatisierung nur dann sinnvoll eingesetzt werden, wenn auch<br />

ein Zugriff auf dieses Netzwerk durch Anwender möglich ist.<br />

In vielen Haushalten sind mehrere Computer vorhanden. Viele Anwender können<br />

mit mobilen Geräten wie PDAs <strong>und</strong> Notebooks durch den Einsatz eines WLANs Ver-<br />

bindungen in das Internet <strong>und</strong> zu lokalen Computern aufbauen. Es bietet sich daher<br />

an, auch ein installiertes drahtloses Sensornetzwerk mit herkömmlichen Computern<br />

fernzusteuern.<br />

In Sensornetzwerken fallen meist nur sehr wenige Daten an. Ein Schalter oder eine<br />

Leuchte können durch die Übertragung eines einfachen Kommandos wie ” An“ oder<br />

” Aus“ ihren Status ändern <strong>und</strong> die betreffenden Funktionen auslösen. Die übertragenen<br />

Kommandos können mit sehr kurzen Byte-Folgen realisiert werden. Dabei sollen die<br />

Knoten eines drahtlosen Sensornetzwerkes sehr energiesparsam arbeiten, da sie meist<br />

mit einer Batterie oder einem Akkumulator betrieben werden. Einem Sensorknoten<br />

stehen damit nur beschränkte Energieressourcen zur Verfügung.<br />

Zur Lösung der Anforderung, ein drahtloses Sensornetzwerk an ein IP-basiertes Sys-<br />

tem zu koppeln, gibt es Prinzipiell nur zwei Möglichkeiten.<br />

Die Eine ist die Implementierung eines der beiden Protokolle (IP oder das im Sen-<br />

sornetzwerk verwendete) im jeweils anderen Netzwerk. Die andere ist die Verwendung<br />

91<br />

Diplomarbeit André Hesse


92 6 Evaluierung des implementierten Prototyps<br />

eines Gateways als Protokollumsetzer.<br />

6.1.1 Implementierung des IP-Protokolls im Sensornetzwerk<br />

Man kann das IP-Protokoll in die Knoten des zu koppelnden Sensornetzwerkes im-<br />

plementieren. Jedoch sprechen mehrere Umstände dagegen. Die Anforderungen an<br />

Energieeffizienz schliesst eine direkte Verwendung des IP-Protokolls aus. Im paket-<br />

vermittelnden IP-Protokoll wird jedem Datenpaket ein Header vorangestellt, der die<br />

Adressinformation enthält. Dieser Header ist mindestens 20 Byte groß.<br />

Sollen aber nur wenige Bytes Nutzdaten übertragen werden, wird schnell ein Problem<br />

ersichtlich. Der so genannte Protokolloverhead wäre sehr groß. Da jede Datenübertra-<br />

gung Energieressourcen verbraucht, ist es daher wünschenswert, den Protokolloverhead<br />

so klein wie möglich zu gestalten.<br />

Sensorknoten in drahtlosen Sensornetzwerken wie ZigBee werden ausserdem unter<br />

der Prämisse entwickelt, kostengünstig produziert werden zu können. Deshalb werden<br />

meist leistungsarme Prozessoren <strong>und</strong> Bauteile verwendet.<br />

Das Routing in IP-Netzwerken ist mit einigem Rechenaufwand verb<strong>und</strong>en, der <strong>für</strong><br />

handelsübliche Computer kein Problem darstellt. Die Sensorknoten können aber leicht<br />

damit überfordert werden.<br />

Ein weiteres Problem, das gegen eine direkte Implementierung des IP-Protokolls<br />

spricht, ist die Tatsache, dass ein Sensorknoten, der direkt an ein IP-Netzwerk ge-<br />

koppelt ist, alle ankommenden IP-Pakete auswerten muss. Selbst wenn diese nicht<br />

<strong>für</strong> ihn bestimmt sind, muss er diese Tatsache durch die Auswertung des IP-Headers<br />

erst einmal feststellen. Sind mehrere Sensorknoten <strong>und</strong> Computer in einem Netzwerk<br />

verb<strong>und</strong>en, können so schnell einige h<strong>und</strong>ert IP-Pakete pro Sek<strong>und</strong>e eintreffen.<br />

Die Auswertung aller eintreffenden IP-Pakete erfordert einen gewissen Anteil der<br />

begrenzten Energieressourcen. Sensorknoten sollen aber mehrere Monate oder sogar<br />

mehrere Jahre mit einer Batterie bzw. einer Akkuladung auskommen.<br />

In vielen Fällen wird ein Sensorknoten nur zu unregelmässigen Zeitpunkten aktiv.<br />

Das An- oder Abschalten einer Leuchte wird an einem Tag meist nur wenige Male aus-<br />

geführt. Daher wird der größte Teil ankommender IP-Pakete <strong>für</strong> diesen Sensorknoten<br />

nicht von Interesse sein. Solange keine ergiebigeren Energiequellen genutzt werden kön-<br />

nen, ist daher eine Implementierung des IP-Protokolls in drahtlosen Sensornetzwerken<br />

nur unter Umständen sinnvoll.<br />

Der umgekehrte Weg, das Sensornetzwerkprotokoll im IP-Netzwerk zu implementie-<br />

ren ist zwar realisierbar, scheidet jedoch als Lösung aus. Man kann nicht alle Knoten<br />

Diplomarbeit André Hesse


6.2 Der Prototyp auf Basis eines transparenten Proxys 93<br />

eines IP-Netzwerkes, gerade in Bezug auf das Internet, um das Sensornetzwerkprotokoll<br />

erweitern.<br />

6.1.2 Einsatz eines Gateways als Protokollumsetzer<br />

In vielen Anwendungen wird daher ein anderer Ansatz gewählt. Zwischen Sensornetz-<br />

werk <strong>und</strong> IP-Netzwerk wird ein Gateway eingeschleift. Dieses nimmt eine Protokoll-<br />

umsetzung vor. Der Zustand des Sensornetzwerkes, <strong>und</strong> damit der einzelnen Knoten<br />

wird durch das Gateway dargestellt. Viele verschiedene Umsetzungen sind realisiert<br />

worden. Eine Umsetzung ist TinyDB. Dabei werden die Zustände der Sensorknoten in<br />

einer Datenbank abgelegt, auf die der Anwender mit SQL-ähnlichen Abfragen zugreifen<br />

kann.<br />

Einen anderen Ansatz realisiert die OSGi-Alliance. Dieser Zusammenschluss meh-<br />

rerer Firmen stellt ein Framework bereit, in dem Anwendungen ausgeführt werden<br />

können. Über enstprechende Schnittstellen können diese Anwendungen mit andere-<br />

ren Knoten kommunizieren. Der Vorteil der OSGi-Architektur ist die Unterstützung<br />

von Plugins. Im laufenden Betrieb kann so die Funktionalität eines Knotens verändert<br />

werden.<br />

Für viel Anwendungsfälle sind OSGi-Programme erhältlich. Auch zur Kopplung von<br />

drahtlosen Sensornetzwerken in der Hausautomation sind Produkte verfügbar.<br />

Die Nutzung des OSGi-Frameworks kann <strong>für</strong> die Steuerung eines Sensornetzwerk<br />

sicherlich als Ideal-Lösung angesehen werden. Viel Protokolle wie HTTP, E-Mail oder<br />

FTP werden unterstützt<br />

Die vorgestellte OSGi-Architektur oder die Verwendung von TinyOS <strong>und</strong> TinyDB<br />

sind sicherlich eine gute Lösung zur Kopplung von Sensornetzwerken an IP-basierte<br />

Kommunikationssysteme. Durch die langjährige Entwicklungszeit dieser Lösungsansät-<br />

ze sind die erhältlichen Produkte sehr leistungsfähig. Es soll jedoch angemerkt werden,<br />

dass man zur Nutzung dieser Ansätze immer ein spezielles Programm oder Protokolle<br />

verwenden muss. Dieses kann entweder durch den Anwender direkt ausgeführt werden<br />

oder durch das Gateway realisert sein.<br />

6.2 Der Prototyp auf Basis eines transparenten Proxys<br />

In dieser Diplomarbeit wurde ein Prototyp auf Basis eines transparenten Proxys rea-<br />

lisiert. Dabei wird jedem Knoten bzw. Endgerät 1 eine eigene IP-Adresse aus dem pri-<br />

1 Bei ZigBee kann ein Knoten mehrere Endgeräte-Funktionen erfüllen.<br />

Diplomarbeit André Hesse


94 6 Evaluierung des implementierten Prototyps<br />

vaten IP-Adressbereich 10.0.0.0 vergeben.<br />

Diese IP-Adresse kann von einem Client direkt angesprochen werden. Allerdings<br />

antwortet nicht das Endgerät, sondern ein Proxyserver, der transparent dazwischen<br />

geschliffen ist. Dem Client ist die Existenz des Proxyservers nicht bewusst. Die Adres-<br />

sumsetzung wird dabei durch die Verwendung des Paketfilters Netfilter unter dem<br />

Betriebssystem Linux durchgeführt.<br />

Schließlich ist auch ein Rückruf des ZigBee-Endgerätes an den Client möglich. Dieser<br />

Rückruf kann durch eine Veränderung des Zustandes im Endgerät ausgelöst werden.<br />

Konnte eine Verbindung zum Client aufgebaut werden, kann dieser über die Änderung<br />

im Endgerät informiert werden.<br />

Das besondere ist, dass die eigentliche Verbindung zum zwischengeschliffenen Proxy-<br />

server <strong>für</strong> den Client nicht ersichtlich ist. Für diesen scheint die Verbindung direkt zu<br />

dem Endgerät zu bestehen. Das ZigBee-Netzwerk wird durch einen Netzwerk-Simulator<br />

dargestellt. Dadurch ist eine spätere Kopplung an ein reales Sensornetzwerk möglich.<br />

Dieses kann z.B. durch einen Computer angeschlossen werden, der eine Verbindung in<br />

das ZigBee-Netzwerk mit einem USB-Adapter hält.<br />

Die Struktur des Prototypen erlaubt eine Skalierung auch über mehrere Netzwerke.<br />

In Verbindung mit einem VPN-Server ist damit auch eine direkte Kommunikation mit<br />

dem Sensornetzwerk über das Internet möglich.<br />

ZigBee erlaubt die Verwendung so genannter Profile, mit denen die möglichen Funk-<br />

tionen eines Endgerätes realisiert werden können. Momentan ist nur das Profil ” Home<br />

Control, Lighting“ erhältlich [ZigB]. Diese Profil ist nicht direkt in den Programmcode<br />

des Prototyps integriert, sondern wird aus einer XML-Datei beim Start der Kom-<br />

ponenten ProxyServer <strong>und</strong> Sensornetzwerk-Simulator eingelesen. Dadurch müssen die<br />

Programme nicht verändert werden 2 , sondern lediglich die Konfigurationsdatei ange-<br />

passt werden.<br />

Durch die Unterstützung von Anwendergruppen können gezielt bestimmte Attribu-<br />

te eines Endgerätetyps <strong>für</strong> einen Anwender einer bestimmten Anwendergruppe ausge-<br />

schlossen oder freigeschaltet werden. Ein Anwender der Gruppe ” Normaler Anwender“<br />

wird so z.B. bei einer Leuchte nur den Zustand ” An/Aus“ erfahren können. Ein An-<br />

wender aus der ” Admin“-Gruppe könnte sich einen Gesamtüberblick aller Attribute<br />

dieses Endgerätes angeben lassen.<br />

Aufgr<strong>und</strong> der eingeschränkten Bearbeitungszeit wurde jedoch auf die Erstellung gra-<br />

phischer Frontends in der Client- <strong>und</strong> Sensornetzwerk-Simulator-Komponente verzich-<br />

2 Eine Integration der Profilbeschreibung in den Code der Programme hätte zur Folge, das dieser<br />

Code verändert werden müßte, sollen neuen ZigBee-Profile unterstützt werden.<br />

Diplomarbeit André Hesse


6.2 Der Prototyp auf Basis eines transparenten Proxys 95<br />

tet. Alle drei Programmteile sind als Konsolenanwendung realisiert. Durch die Er-<br />

stellung eines Kommunikationsprotokolls <strong>und</strong> durch die Teilung in drei Komponenten<br />

können später einzelne Komponenten leicht ausgetauscht werden.<br />

So ist die Entwicklung eines graphischen Clients unter Linux oder Mac OS X möglich.<br />

Alle drei Komponenten sind unter den Betriebssystemen Linux <strong>und</strong> Mac OS X lauffä-<br />

hig. Allerdings kann nur unter Linux eine Adressumsetzung mit falschen IP-Adressen<br />

vorgenommen werden.<br />

6.2.1 Vergleich mit OSGi<br />

Der entwickelte Prototyp ist von seiner Funktionalität sicherlich nicht mit denen ei-<br />

ner marktreifen Lösung, wie sie z.B. die OSGi-Alliance anbietet, zu vergleichen. Viele<br />

Funktionen die diese bieten, sind im Prototypen nur rudimentär realisiert.<br />

So werden zum Beispiel bei der Auswertung von Attributänderungen eines Endgerä-<br />

tes keine Prioritäten gesetzt. Jede Nachricht wird gleich behandelt. Ein Anwender kann<br />

nicht angeben, dass er nur im Falle einer Alarmregistrierung von einem Alarmsensor<br />

informiert werden soll. Hat dieser weitere Attribute, <strong>für</strong> die der Anwender freigeschaltet<br />

wurde, wird er über alle betreffenden Änderungen informiert.<br />

Der Client erlaubt auch nur eine Verbindung zu einem Endgerät zu einem Zeitpunkt.<br />

Damit wird er nur über die Änderung dieses einen Endgerätes informiert. Um zu zei-<br />

gen, dass eine Adressvergabe mit einem transparenten Proxy funktioniert, ist diese<br />

Einschränkung aber sinnvoll. Warum sollte ein Endgerät, das direkt mit einer eigenen<br />

IP-Adresse angerufen wurde, über die Zustandsänderung in einem Endgerät berichten?<br />

Betrachtet man den Prototypen in Bezug auf Usability, wird zuerst das Fehlen der<br />

graphischen Frontends in der Client- <strong>und</strong> der Sensornetzwerk-Simulator-Komponente<br />

negativ auffallen. Jedes Endgerät verfügt über mehrere Attribute. Diese werden zwar<br />

im Client angezeigt, allerdings muss sich der Anwender durch ein Text-Menu durchar-<br />

beiten. Daher ist die Entwicklung eines graphischen Frontends anzuraten.<br />

Ein Vorteil des in dieser Diplomarbeit entwickelten Ansatzes ist jedoch der Zugang<br />

zu den Sensorknoten bereits auf der Vermittlungsschicht. Während Anwendungen wie<br />

TinyDB oder OSGi erst einen Zugriff auf der Transportschicht sowie der darüberlie-<br />

genden Anwendungsschicht bieten, können mit dem entwickelten Ansatz auch andere<br />

Protokolle der Vermittlungsschicht verwendet werden.<br />

So ist es denkbar, den Prototypen durch die Integration des Protokolles ICMP zu<br />

erweitern. Dann könnte mit einem einfachen Konsolenbefehl ermittelt werden, ob ein<br />

ZigBee-Endgerät noch funktioniert. Der Prototyp könnte diese ICMP-Anfragen entge-<br />

Diplomarbeit André Hesse


96 6 Evaluierung des implementierten Prototyps<br />

gennehmen <strong>und</strong> nur im Falle, dass das betreffende Endgerät arbeitet, mit einer ent-<br />

sprechenden ICMP-Nachricht antworten.<br />

Ein weiteres Protokoll das in vielen Netzwerken angewendet wird, ist das DHCP-<br />

Protokoll zur automatischen Adressvergabe. Bislang werden die Knoten im Prototyp<br />

mit einer festen IP-Adresse vergeben. Unterstützt man DHCP, könnte ein vorhandener<br />

DHCP-Server diese Adressen zuweisen.<br />

Viele Betriebssysteme zeigen dem Anwender benachbarte Computer in einer so<br />

genannten ” Netzwerkumgebung“ an. Die da<strong>für</strong> verwendeten Protokolle könnte man<br />

ebenso im Prototypen unterstützen. Damit wäre ein Szenario denkbar, alle ZigBee-<br />

Endgeräte in der Netzwerkumgebung anzuzeigen.<br />

Integriert man das HTTP-Protokoll in den Prototypen, ist eine Bedienung des Sen-<br />

sornetzwerkes mit einem herkömmlichen Webbrowser möglich. Der Anwender könnte<br />

so z.B. durch die Eingabe der Adresse 10.8.5.6 in den Webbrowser direkt die Status-<br />

informationen des betreffenden ZigBee-Endgerätes in Erfahrung bringen. Dazu muss<br />

auf seinem Computer keine Änderung am Betriebssystem oder dem Webbrowser vorge-<br />

nommen werden. Der Anwendercomputer muss lediglich wissen, wohin solche Pakete<br />

geleitet werden sollen. Dazu ist die Angabe des Standardgateways nötig. Installiert<br />

man den Proxyserver auf dem Computer, der sowieso als Standardgateway <strong>für</strong> den<br />

Computer des Anwenders fungiert, sind keine weiteren Einträge nötig.<br />

6.3 Probleme beim Rückruf mit einer falschen<br />

IP-Adresse<br />

Der in Abschnitt 4.2.3 beschriebene Ansatz, eine ausgehende Verbindung durch die<br />

Installation eines Patches zu realisieren, führt nicht immer zum Erfolg. In den meisten<br />

Fällen ist im Proxyserver der Aufbau einer Verbindung möglich, mitunter funktioniert<br />

dies aber nicht. In der Regel ist der Aufbau von zwei oder drei Verbindungen pro<br />

Sitzung möglich. Normalerweise soll der Proxyserver in solchen Fällen, dass der Cli-<br />

ent nicht erreichbar ist 3 , einen weiteren Verbindungsaufbau unterlassen <strong>und</strong> mit der<br />

normalen Arbeitsweise fortfahren.<br />

In einigen Fällen stoppt dann jedoch die Nachrichtenverteilung im Proxyserver. Da-<br />

mit wird auch die Weiterleitung von Nachrichten zu anderen Teilnehmern nicht mehr<br />

durchgeführt.<br />

Bis zum Ende der Bearbeitungszeit dieser Diplomarbeit konnte die Ursache dieses<br />

3 Dies könnte ja auch dadurch beding sein, dass der Anwender den Client beendet hat.<br />

Diplomarbeit André Hesse


6.3 Probleme beim Rückruf mit einer falschen IP-Adresse 97<br />

Problems nicht geklärt werden. Es scheint jedoch ein Fehler in der Implementierung<br />

des Patches zu sein. Der eigene Code wurde dem Beispielprogramm, welches dem Patch<br />

beiliegt angepasst <strong>und</strong> sollte somit den Vorgaben entsprechen.<br />

Beobachtet man den ein- <strong>und</strong> ausgehenden Paketverkehr des betroffenen Computers<br />

mit einem Protokoll-Analyzer wie ethereal [Ethe], kann man erkennen, dass einige Pa-<br />

kete mit der angegebenen Quelladresse versendet werden. Diese haben jedoch teilweise<br />

falsche Einträge <strong>und</strong> werden somit nicht weitergeleitet. Noch schlimmer ist jedoch, dass<br />

auch Pakete anderer Verbindungen dieses Computers nicht mehr dem entsprechenden<br />

Format genügen. Dies ist unabhängig davon, ob diese Verbindungen vom Proxyserver<br />

aufgebaut oder angenommen wurden oder zu anderen Prozessen gehören.<br />

Es scheint so als ob die Verwendung der Patch-Funktionen den Netfilter durch-<br />

einander bringt. Erst durch einen Neustart des Netzwerkes kann dessen Funktionalität<br />

wiederhergestellt werden.<br />

Bis zur Klärung dieses Problems sollte daher der Rückruf unterb<strong>und</strong>en werden. Da-<br />

her wurde im Proxyserver noch eine Abfrage integriert. Wird in der Konfigurationsda-<br />

tei der Schlüssel ” UseTPROXY“ auf den Wert ” 0“ gesetzt, ignoriert der Proxyserver<br />

entsprechende Anforderungen.<br />

Diplomarbeit André Hesse


98 6 Evaluierung des implementierten Prototyps<br />

Diplomarbeit André Hesse


7 Zusammenfassung<br />

In der vorliegenden Diplomarbeit wurde der Einsatz eines transparenten Proxys zur<br />

Kopplung von Sensornetzwerken an IP-basierte Kommunikationssysteme am Beispiel<br />

der Hausautomatisierung untersucht. Als Sensornetzwerktechnologie wurde exempla-<br />

risch ZigBee verwendet. Da ein reales ZigBee-Netzwerk nicht zur Verfügung stand,<br />

wurde ein Simulator erstellt, der im entwickelten Prototypen die Funktionalität des<br />

ZigBee-Netzwerkes bereitstellt.<br />

Eine Ankopplung eines Sensornetzwerkes an ein IP-Netzwerk in der Hausautomation<br />

ist ein lohnenswertes Ziel. Viele Haushalte verfügen über ein oder mehrere Computer.<br />

Viele Anwender können auch mit einem Notebook oder einem PDA drahtlos auf das<br />

Internet zugreifen. Es bietet sich daher an, auch die Endgeräte eines vorhandenen<br />

ZigBee-Netzwerk zu steuern. Die Aufgabenstellung fordert, dass keine Änderung an<br />

der Hard- oder Software der verwendeten Clientcomputer durchgeführt wird.<br />

Zur Ankopplung von Sensornetzwerken an IP-Netzwerke wurden mehrere Ansätze<br />

aufgezeigt.<br />

In dieser Arbeit wurde ein Prototyp auf Basis eines ” transparenten Proxy“ realisiert.<br />

Dieser vergibt <strong>für</strong> jedes ZigBee-Endgerät eine eigene IP-Adresse, über die die ZigBee-<br />

Endgeräte aus einem IP-Netzwerk ansprechbar sind. Allerdings antwortet nicht ein<br />

ZigBee-Endgerät direkt auf einen Anfrage, sondern ein zwischengeschalteter Proxyser-<br />

ver. Dieser setzt die Anfragen der Clients transparent um. Damit ist es <strong>für</strong> die Clients<br />

nicht ersichtlich, dass diese nicht mit dem ZigBee-Endgerät direkt kommuniziert.<br />

Der implementierte Prototyp besteht aus drei Programmen, die die Aufgaben Client,<br />

Proxyserver <strong>und</strong> Sensornetzwerk-Simulator erfüllen. Durch die Teilung sind <strong>für</strong> eine<br />

spätere Verbesserung einzelne Komponenten austauschbar. Alle drei Programme sind<br />

unter dem Betriebssystem Linux ausführbar. Mit Einschränkung der Funktionalität<br />

des Proxyservers sind alle drei Programme auch auf einem Apple Mac unter dem<br />

Betriebssystem OS X lauffähig. Eine Portierung auf Microsoft Windows wurde nicht<br />

vorgenommen, sollte aber aufgr<strong>und</strong> der Verwendung der Programmiersprache C++<br />

<strong>und</strong> dem Verzicht auf graphische Frontends, leicht möglich sein. Allerdings unterstützt<br />

auch Windows, wie OS X, eine Adressmanipulation nicht in dem Maße, wie sie <strong>für</strong> die<br />

99<br />

Diplomarbeit André Hesse


100 7 Zusammenfassung<br />

Funktion des Proxyserver notwendig ist.<br />

Für die Kommunikation des einzelnen Programme wurde ein eigenes Protokoll auf<br />

Basis von XML entwickelt. Dieses ist erweiterbar. Momentan unterstützt der Proto-<br />

typ nur 6 verschiedene ZigBee-Endgerätetypen. Deren Funktionalität wurde allerdings<br />

nicht direkt in den Programmcode integriert, sondern wird durch mehrere Konfigurati-<br />

onsdateien realisiert. Damit ist der Prototyp offen <strong>für</strong> eine spätere Integration anderer<br />

ZigBee-Endgerätetypen.<br />

Es ist auch denkbar, nicht nur die ZigBee-Spezifikation, sondern auch andere Sen-<br />

sornetzwerktechnologien, zu unterstützen. Es ist allerdings zu prüfen, ob diese mit dem<br />

Format der Konfigurationsdateien abbildbar sind.<br />

Mit dem entwickelten Prototyp sind vielfältige Netzwerk-Topologien möglich. Je-<br />

der Proxyserver erlaubt eine Kopplung mehrerer Sensornetzwerk-Simulatoren <strong>und</strong> Cli-<br />

ents. Außerdem kann durch die Ankopplung anderer Instanzen des Proxyservers ein<br />

weitmaschiges Netzwerk aufgebaut werden. Die Daten einzelner Sensorknoten werden<br />

transparent durch die Proxyserver-Proxyserver-Verbindungen geleitet. Somit können<br />

alle verb<strong>und</strong>enen Clients auf alle Sensornetzwerke zugreifen.<br />

Durch die Verwendung eines VPN-Servers sind sogar Client-Proxyserver-Verbin-<br />

dungen über das Internet möglich. Im Internet dürfen die im Prototyp vergebenen<br />

IP-Adressen nicht verwendet werden, da diese aus dem privaten Adressbereich ge-<br />

wählt wurden. Hat man einen VPN-Tunnel zwischen den Computern, auf denen der<br />

Client <strong>und</strong> Proxyserver ausgeführt werden, aufgebaut, kann der Client auf die Knoten<br />

des vom Proxyserver verwalteten Sensornetzwerkes zugreifen.<br />

Diplomarbeit André Hesse


8 Ausblick<br />

Der im Rahmen dieser Diplomarbeit entwickelte Prototyp erlaubt eine Ankopplung<br />

eines Sensornetzwerkes an ein IP-basiertes Kommunikationssystem. Da kein reales<br />

Sensornetzwerk zur Verfügung stand, wurde ein Simulator erstellt. Dieser simuliert<br />

mehrere ZigBee-Endgeräte.<br />

Bei der Entwicklung des Clients <strong>und</strong> des Sensornetzwerk-Simulators wurde auf die<br />

Erstellung graphischer Frontends verzichtet. Beide Programme sind über die Komman-<br />

dozeile zu bedienen. Aus Usability-Sicht ist dies nicht immer von Vorteil. Daher sollten<br />

in einer späteren Ausbaustufe graphische Frontends <strong>für</strong> beide Komponenten entwickelt<br />

werden.<br />

Die Antwortzeiten im Prototypen sind sehr kurz. Löst ein Anwender eines Clients<br />

eine Statusänderung eines ZigBee-Endgerätes aus, wird diese Änderung fast augen-<br />

blicklich an das betreffende ZigBee-Netzwerk übergeben. Dort wird die Änderung,<br />

sofern sie sinnvoll erscheint, binnen kürzester Zeit eingepflegt. Eine Updatenachricht<br />

wird erstellt <strong>und</strong> an alle Komponenten des Prototyps verschickt. Der Anwender, der<br />

diese Änderung an einem Client ausgelöst hat, wird die Antwort innerhalb weniger<br />

Augenblicke erhalten. Der Prototyp ist skalierbar. In der Testumgebung wurde aller-<br />

dings nur ein sehr kleines Netzwerk realisert. In diesem wurden zwei Proxyserver, zwei<br />

Sensornetzwerke <strong>und</strong> wenige Clients ausprobiert. Es bleibt zu untersuchen, wie sich<br />

der Aufbau eines größeren Netzwerkes auf die Verarbeitungsgeschwindigkeit auswirkt.<br />

Die Komponente Sensornetzwerk-Simulator kann durch ein reales Sensornetzwerk<br />

ersetzt werden. Wie lange dann aber eine Änderungsbearbeitung eines Attributes eines<br />

Endgerätes dauert, ist im Moment nicht abzusehen. Es ist nicht bekannt, wie schnell<br />

ein reales Sensornetzwerk auf Eingaben reagiert.<br />

Durch die Integration anderer Protokolle der Vermittlungs-, Transport <strong>und</strong> Anwen-<br />

dungsschicht sind mit dem vorgestellten Ansatz vielfältige Möglichkeiten gegeben. So<br />

ist die Steuerung des Sensornetzwerkes durch die Eingabe einer IP-Adresse in einen<br />

Webbrowser vorstellbar.<br />

Das in Abschnitt 6.3 geschilderte Problem bei der Verwendung des TPROXY-Patches<br />

ist zu Untersuchen.<br />

101<br />

Diplomarbeit André Hesse


102 8 Ausblick<br />

Diplomarbeit André Hesse


Anhang<br />

103<br />

Diplomarbeit André Hesse


A Konfigurationsdateien<br />

Kommentare werden in den Konfigurationsdatein mit \\gekennzeichnet. Diese Kom-<br />

mentare dürfen in den Konfigurationsdateien nicht enthalten sein! Bei längeren Zeilen<br />

wird ein Umbruch durch das Zeichen \angezeigt. Die nächste Zeile wird dann nahtlos<br />

angefügt.<br />

Angaben des Ports beziehen sich auf das Protokoll TCP.<br />

A.1 ProxyServer<br />

OwnIP 192.168.0.190 \\ IP-Addresse des Proxyservers<br />

ClientPort 6000 \\ Client-Port verbinden<br />

ProxyPort 6001 \\ Proxyserver-Port verbinden<br />

SensorNetworkPort 6002 \\ Sensornetzwerk-Simulator-Port<br />

LoggingServerIP 127.0.0.1 \\ IP optionaler Logging Server<br />

LoggingServerPort 2500 \\ Port optionaler Logging Server<br />

ZigBeeMasterDeviceIP 10.8.1.1 \\ Adresse des ZigBee-Auskunftsdienst<br />

ProfilesFile profiles.conf \\ die Profil-Datei<br />

UserGroupFile usergroups.conf \\ die Anwendergruppen-Datei<br />

AuthManagerConfigFile authmanager.conf \\ die AuthManager-Datei<br />

ProxyManagerConfigFile proxymanager.conf \\ \\ die ProxyManager-Datei<br />

StandardConnectorTimeOut 86400 \\ der ConnectorTimeout in Sek<strong>und</strong>en<br />

UseTPROXY 0 \\ soll der TPROXY-Patch verwendet werden?<br />

Abbildung A.1: Proxyserver: Konfigurationsdatei main.conf<br />

105<br />

Diplomarbeit André Hesse


106 A Konfigurationsdateien<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere Anwender ...<br />

<br />

<br />

Abbildung A.2: Proxyserver: Konfigurationsdatei authmanager.conf. Neue Anwender<br />

können im XML-Knoten ValidUsers angelegt werden.<br />

Diplomarbeit André Hesse


A.1 ProxyServer 107<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere Proxyserver ...<br />

<br />

<br />

Abbildung A.3: Proxyserver: Konfigurationsdatei profiles.conf. Verbindungen zu<br />

anderen Proxyservern können im XML-Knoten Proxies angelegt werden.<br />

Dieser Proxyserver wird versuchen sich zu den hier angebenen<br />

Proxyservern verbinden.<br />

Diplomarbeit André Hesse


108 A Konfigurationsdateien<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere Attributknoten der "BasicAttributes" ...<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... wird fortgesetzt ...<br />

Abbildung A.4: Proxyserver: Konfigurationsdatei profiles.conf. In dieser Datei sind<br />

alle bekannten ZigBee-Gerätetypen beschrieben. Die erstellte Konfigurationdatei<br />

<strong>für</strong> das Profile ” Home Control, Lighting“ ist über 1200<br />

Zeilen lang. Im Abschnitt C.1 wird die Benutzung der Attributknoten<br />

näher erläutert.<br />

Diplomarbeit André Hesse


A.1 ProxyServer 109<br />

... Forsetzung ...<br />

<br />

<br />

<br />

<br />

<br />

... weitere Attributknoten der "‘ExtendedAttributes"’ ...<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere Attribute des ZigBee-Gerätetyps "’Switch Remote Control"’<br />

<br />

... weitere ZigBee-Gerätetypen<br />

<br />

<br />

Abbildung A.5: Proxyserver: Fortsetzung Konfigurationsdatei profiles.conf.<br />

Diplomarbeit André Hesse


110 A Konfigurationsdateien<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere ZigBee-Endgeräte-Typen ...<br />

<br />

... weitere Anwendergruppen ...<br />

<br />

<br />

Abbildung A.6: Proxyserver: Auszug der Konfigurationsdatei usergroups.conf. Für<br />

jede Anwendergruppe können die abrufbaren Attribute der unterstützten<br />

ZigBee-Endgeräte angegeben werden. Im Abschnitt C.1 wird die<br />

Benutzung der Attributknoten näher erläutert.<br />

Diplomarbeit André Hesse


A.2 Sensornetzwerk-Simulator 111<br />

A.2 Sensornetzwerk-Simulator<br />

Hinweis: Die Datei profiles.conf wird auch vom Sensornetzwerk-Simulator verwen-<br />

det. Sie ist identisch mit der im Proxyserver verwendeten. Daher ist sie an dieser Stelle<br />

nicht nocheinmal aufgeführt.<br />

OwnIP 192.168.0.190 \\ IP-Adresse des SNW-Simulators<br />

OwnPort 7000 \\ Port des SNW-Simulators<br />

ProxyIP 192.168.0.190 \\ IP-Adresse des Proxyservers<br />

ProxyPort 6002 \\ Port des Proxyservers<br />

LoggingServerIP 127.0.0.1 \\ IP-Adresse optionaler Logging-Server<br />

LoggingServerPort 32002 \\ Port optionaler Logging-Server<br />

OwnUserName SensorNetz \\ Eigener Anwendername<br />

OwnPassword SensorNetz \\ Eigenes Passwort<br />

ProxyUserName Proxy \\ Proxyserver Anwendername<br />

ProxyPassword Proxy \\ Proxyserver Passwort<br />

ConfigFile sensornetwork.conf \\ Sensornetzwerk-Datei<br />

ProfilesFile profiles.conf \\ Profil-Datei<br />

BindingsFile profiles_bindings.conf \\ Bindings-Datei<br />

IP_Manual 0 \\ Manuelles Eingeben von IP-Adressen erlauben<br />

IP_fixedBits 16 \\ Die Netzwerk-ID<br />

IP_FirstTupel 10 \\ Das erste IP-Tupel<br />

IP_SecondTupel 8 \\ Das zweite IP-Tupel<br />

IP_ThirdTupel 10 \\ Das dritte IP-Tupel<br />

IP_FourthTupel 0 \\ Das erste IP-Tupel<br />

IP_ThirdTupelGap 5 \\ Aus 10.8.5.1 bis 10.8.10.254 IP vergeben<br />

StandardConnectorTimeOut 86400 \\ maximale Lebensdauer<br />

Abbildung A.7: Sensornetzwerk-Simulator: Konfigurationsdatei main.conf<br />

Diplomarbeit André Hesse


112 A Konfigurationsdateien<br />

<br />

<br />

<br />

<br />

\<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

... weitere "BindingDescription" ...<br />

<br />

<br />

Abbildung A.8: Sensornetzwerk-Simulator: Konfigurationsdatei<br />

profiles_binding.conf. Für jedes unterstützte Endgerät kann angegeben,<br />

zu welchen anderen Endgeräten ein “Binding“ durchgeführt<br />

werden kann.<br />

Diplomarbeit André Hesse


A.2 Sensornetzwerk-Simulator 113<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... viele Attribute ...<br />

<br />

<br />

<br />

<br />

... weitere Attribute ...<br />


114 A Konfigurationsdateien<br />

A.3 Client<br />

OwnIP 192.168.0.190 \\ IP-Adresse des Clients<br />

OwnPort 25020 \\ Port des Clients<br />

ZigBeeMasterIP 10.8.1.1 \\ IP-Adresse des ZigBee-Auskunftsdienst<br />

ZigBeeMasterPort 6000 \\ Port des ZigBee-Auskunftsdienst<br />

ZigBeeUserName Proxy \\ Proxyserver Anwendername<br />

ZigBeePassword Proxy \\ Proxyserver Passwort<br />

UseTPROXY 0 \\ soll der TPROXY-Patch verwendet werden?<br />

Diplomarbeit André Hesse<br />

Abbildung A.10: Client: Konfigurationsdatei main.conf


B Kommunikationsprotokoll<br />

B.1 Vorbetrachtung<br />

Das entwickelte Kommunikationsprotokoll wurde auf Basis der Extensible Markup<br />

Language (XML) enwickelt. Einige Nachrichten können aufgr<strong>und</strong> ihre Größe hier nicht<br />

vollständig angezeigt werden. Entsprechende Anmerkungen wurden in die Darstellun-<br />

gen eingefügt. Die Inhalte der Nachrichten ResponseAllSensorNetworkData,<br />

ResponseCommandGET, RequestCommandSET <strong>und</strong> UpdateDeviceAttribut entsprechen<br />

im wesentlichen den Konfigurationsdateien profiles.conf <strong>und</strong> sensornetwork.conf.<br />

115<br />

Diplomarbeit André Hesse


116 B Kommunikationsprotokoll<br />

B.2 Authentifizierung<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.1: ClientSendUserData: Der Server fordert die Anwenderdaten vom Client<br />

an.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.2: ClientUserData: Der Client sendet seine Anwenderdaten<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.3: ServerUserData: Der Server sendet seine Anwenderdaten<br />

Diplomarbeit André Hesse


B.2 Authentifizierung 117<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.4: AuthSuccess: Die Anwenderdaten konnten von einem Kommunikationspartner<br />

erfolgreich überprüft werden. Die Verbindung wird erst<br />

zum Datentransport freigegeben, wenn beide Kommunikationspartner<br />

diese Nachricht versendet <strong>und</strong> empfangen haben.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.5: AuthFailed: Die Anwenderdaten konnten von einem Kommunikationspartner<br />

nicht bestätigt werden. Die Verbindung wird abgebaut.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.6: SetDeviceID: Der Empfänger soll die angegebene DeviceID verwenden.<br />

Diplomarbeit André Hesse


118 B Kommunikationsprotokoll<br />

B.3 Setup<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.7: LogOut: Die Verbindung soll abgebaut werden, aber der betreffende<br />

Connector (Proxyserver)lebendig gehalten werden.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.8: LogOutAndTerminate: Die Verbindung soll abgebaut werden. Der betreffende<br />

Connector (Proxyserver) kann terminiert werden.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.9: LogOutAndSetCallBack: Diese Nachricht wird vom Client an den<br />

Proxyserver versendet. Dieser soll einen Rückruf (CallBack) starten,<br />

wenn einem Ereignis auftritt, welches diesen Client interessiert. Die<br />

verwendeten Quell-Adressdaten entsprechen denen des Endgerätes, an<br />

dem der Client momentan angemeldet ist.<br />

Diplomarbeit André Hesse


B.3 Setup 119<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.10: RequestAllSensorNetworkData. Diese Nachricht wird vom Proxyserver<br />

an den Sensornetzwerk-Simulator <strong>und</strong> an andere Proxyserver<br />

versendet. Als Antwort wird eine ResponseAllSensorNetworkData-<br />

Nachricht erwartet.<br />

Diplomarbeit André Hesse


120 B Kommunikationsprotokoll<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... viele Attribute ...<br />

<br />

<br />

<br />

... weitere Attribute ...<br />

<br />

... weitere ZigBee-Endgeräte ...<br />

<br />

<br />

Abbildung B.11: ResponseAllSensorNetworkData: Antwort auf<br />

RequestAllSensorNetworkData-Nachricht. Der Inhalt bildet alle im<br />

Sender bekannten ZigBee-Endgeräte ab.<br />

Diplomarbeit André Hesse


B.3 Setup 121<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.12: ProfileUnknown: Wurde eine<br />

ResponseAllSensorNetworkData-Nachricht empfangen, wird diese<br />

im Proxyserver ausgewertet. Wird ein ZigBee-Endgerät übermittelt,<br />

dessen Profil diesem Proxyserver nicht bekannt ist, wird die<br />

ProfileUnknown-Nachricht an den Sender zurückgesendet. Die IP-<br />

Adresse des betreffenden Endgerätes ist angegeben.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.13: DeviceIPAllreadyAssigned: Wurde eine<br />

ResponseAllSensorNetworkData-Nachricht empfangen, wird diese<br />

im Proxyserver ausgewertet. Wird ein ZigBee-Endgerät übermittelt,<br />

dessen verwendete IP-Adresse in diesem Proxyserver schon vergeben<br />

wurde, wird die DeviceIPAllreadyAssigned-Nachricht an den Sender<br />

zurückgesendet. Die IP-Adresse des betreffenden Endgerätes ist<br />

angegeben. Das betreffende Endgerät wird aus der Endgeräteliste des<br />

Proxyservers gelöscht. Entsprechende Nachrichten über diese Endgerät<br />

werden ignoriert.<br />

Diplomarbeit André Hesse


122 B Kommunikationsprotokoll<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.14: SetInteresstedDeviceIP: Ein Client übermittelt die Adresse des<br />

Endgerätes, über dessen Statusänderungen er informiert werden soll.<br />

Der Proxyserver wird darauf hin an das Sensornetzwerk Nachrichten<br />

vom Typ RequestCommandGET (Siehe Abbildung B.15) versenden. Dabei<br />

werden nur die Attribute des betreffenden Endgerätes angefordert,<br />

<strong>für</strong> die Anwendender des Clients freigeschaltet ist.<br />

Diplomarbeit André Hesse


B.4 Service 123<br />

B.4 Service<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.15: RequestCommandGET: Nachdem sich ein Client am Proxyserver angemeldet<br />

hat (Siehe Abbildung B.14), wird der Proxyserver die Attribute<br />

des Endgerätes vom Sensornetzwerk-Simulator anfordern. Dabei<br />

werden nur die Attribute angefordert, <strong>für</strong> die der Anwender freigeschaltet<br />

ist. Als Antwort wird eine ResponseCommandGET-Nachricht<br />

mit dem angeforderten Attribut erwartet.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.16: ResponseCommandGET: Antwort des Sensornetzwerk-Simulators auf<br />

eine RequestCommandGET-Nachricht des Proxyservers. Dieser leitet<br />

die Nachricht an den Client weiter.<br />

Diplomarbeit André Hesse


124 B Kommunikationsprotokoll<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.17: AllResponseCommandGETSended: Wurden von einem Proxyserver<br />

alle ResponseCommandGET-Nachrichten an den Client übermittelt,<br />

<strong>für</strong> die dieser freigeschaltet ist, wird der Proxyserver die<br />

AllResponseCommandGETSended-Nachricht an den Client senden.<br />

Dieser wird darauf hin dem Anwender anzeigen, dass eine Verbindung<br />

erfolgreich aufgebaut werden konnte. Der Anwender kann dann<br />

mit dem Endgerät interagieren <strong>und</strong> entsprechende Aktionen ausführen.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.18: RequestZigBeeDeviceList: Ein Client hat sich zum ZigBee-<br />

Auskunftsdienst verb<strong>und</strong>en. Diese Nachricht fordert die Liste aller<br />

im Proxyserver bekannten Endgeräte an. Als Antwort wird eine<br />

ResponseZigBeeDeviceList-Nachricht erwartet.<br />

Diplomarbeit André Hesse


B.4 Service 125<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.19: RequestCommandSET: Ein Client will eine Attributänderung anzeigen.<br />

Der Proxyserver wird diese Nachricht an den Sensornetzwerk-<br />

Simulator weiterleiten. Dort wird überprüft ob die Änderung durchgeführt<br />

werden kann. Ist dies möglich, wird der Sensornetzwerk-<br />

Simulator eine UpdateDeviceAttribute-Nachricht mit der übernommenen<br />

Änderung aussenden.<br />

Im Abschnitt C.1 wird die Benutzung der Attributknoten näher erläutert.<br />

Diplomarbeit André Hesse


126 B Kommunikationsprotokoll<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

\<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung B.20: UpdateDeviceAttribute: Diese Nachricht wird generiert, wenn ein<br />

Attribut eines Endgerätes im Sensornetzwerk-Simulator verändert<br />

wurde. Diese Änderung kann durch drei Ereignisse bedingt sein:<br />

1. Ein Client hat eine RequestCommandSET-Nachricht geschickt. Diese<br />

Attributänderung konnte ausgeführt werden.<br />

2. Eine Attributänderung wird durch die Attributänderung eines anderen<br />

Endgerätes notwendig.<br />

3. Im Sensornetzwerk-Simulator wird eine Attributänderung vom Bediener<br />

vorgenommen.<br />

Im Abschnitt C.1 wird die Benutzung der Attributknoten näher erläutert.<br />

Diplomarbeit André Hesse


B.4 Service 127<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

... weitere Device-Einträge ...<br />

<br />

<br />

Abbildung B.21: ResponseZigBeeDeviceList: Wurde ein<br />

RequestZigBeeDeviceList-Nachricht empfangen kann mit dieser<br />

Nachricht die Liste aller bekannten Endgeräte übermittelt werden.<br />

Diplomarbeit André Hesse


128 B Kommunikationsprotokoll<br />

Diplomarbeit André Hesse


C Darstellung der ZigBee-Attribute<br />

im Prototyp<br />

C.1 Attribute<br />

Zur Darstellung der durch die ZigBee-Alliance vorgegebenen Profilbeschreibungen wur-<br />

den diese in den entsprechenden Konfigurationsdateien eingepflegt (Siehe Abschnitte<br />

A.4 <strong>und</strong> A.9). An dieser Stelle soll die Bedeutung der Attribute aufgezeigt werden.<br />

Prinzipiell sind zwei Attributtypen möglich: Einige Attribute können beliebige Wer-<br />

te annehmen. Diese Werte könnten vom Typ ” string“, ” integer“, ” date“ <strong>und</strong> ” bool“<br />

sein. Zusätzlich werden die Typen ‘bitset’ <strong>und</strong> ‘bitset’ unterstützt, die<br />

allerdings in den Konfigurationsdateien bislang nicht verwendet werden. Bei dem an-<br />

dereren Attributtyp können nur festgelegte Werte eingenommen werden. Oft ist eine<br />

Auswahl von drei oder mehr Optionen möglich.<br />

In in Abbildung C.1 ist ein einfaches Attribut dargestellt, welches einen beliebigen<br />

Wert annehmen kann.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung C.1: Ein Attribut mit beliebigen Werten<br />

129<br />

Diplomarbeit André Hesse


130 C Darstellung der ZigBee-Attribute im Prototyp<br />

Die einzelnen Einträge haben die folgenden Bedeutungen:<br />

AttributeID : Der Name des Attributes.<br />

AttributeDescription : Die Beschreibung des Attributes.<br />

AttributeUnit : Die Einheit des Attributes. Diese ist nur gesetzt bei Attributen deren<br />

Werte vom Typ “integer“ sind.<br />

AttributeCurrentValue : Der momentane Wert des Attributes. Das zweite XML-<br />

Node-Attribut “type“ gibt den Typ des Wertes dieses Attributes wieder.<br />

AttributeDirectionINPUT : Dieser ” Bool“ gibt an, ob sich ein Attribut aufgr<strong>und</strong> ex-<br />

terner Attributänderung anpasst.<br />

AttributeDirectionOUTPUT : Dieser ” Bool“ gibt an, ob ein Attribut nach einer Än-<br />

derung an andere Geräte gemeldet werden soll.<br />

CommandGET : Ist ein solcher Eintrag vorhanden, kann das Attribut extern abgefragt<br />

werden. Als Zusatz wird der Name des Attributes angehängt.<br />

CommandSET : Ist ein solcher Eintrag vorhanden, kann das Attribut extern gesetzt wer-<br />

den. Als Zusatz wird der Name des Attributes angehängt.<br />

Abbildung C.2 zeigt ein Attribut, welches fest vorgegeben Werte unterstützt.<br />

<br />

<br />

<br />

<br />

\<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Diplomarbeit André Hesse<br />

Abbildung C.2: Ein Attribut mit optionalen Werten


C.1 Attribute 131<br />

Die Bedeutung der Einträge AttributeID, AttributeDescription, AttributeUnit,<br />

AttributeCurrentValue AttributeDirectionINPUT,<br />

AttributeDirectionOUTPUT, CommandGET <strong>und</strong> CommandSET entsprechen den schon auf-<br />

gezeigten Einträgen. Zusätzlich werden die Einträge AttributeValue <strong>und</strong><br />

AttributeValueDescription verwendet.<br />

AttributeValue bezeichnet eine Option <strong>und</strong> ihren Wert. Dazu muss ein entspre-<br />

chender AttributeValueDescription Eintrag vorhanden sein, dem der Wert des<br />

AttributeValue angehängt ist. Wird im Prototyp ein solches Paar gef<strong>und</strong>en, werden<br />

dieses als Auswahlmöglichkeit angegeben.<br />

Diplomarbeit André Hesse


132 C Darstellung der ZigBee-Attribute im Prototyp<br />

Diplomarbeit André Hesse


D Installation des Prototyps<br />

Der Client, der Proxyserver <strong>und</strong> der Sensornetzwerk-Simulator müssen vor Benutzung<br />

auf dem eigenen Computer installiert <strong>und</strong> aus den Quelltexten übersetzt werden. Es<br />

bietet sich an, die mitgelieferten Projekt zu verwenden. Für ein Linux-System wurde<br />

ein Projekt der IDE KDevelop mitgeliefert. In diesem kann die Übersetzung gestar-<br />

tet werden <strong>und</strong> das entsprechende Programm anschliessend gestartet werden. Unter<br />

einem Mac mit dem Betriebssystem Mac OS X können die Programme direkt in die<br />

Entwicklungsumgebung Xcode integriert werden.<br />

Will man die Quelldateien von Hand compilieren, muss beachtet werden dass ei-<br />

nige Linker- <strong>und</strong> C-Flags gesetzt werden müssen, da die Bibliothek ” libxml2“ zur<br />

Verarbeitung der XML-Daten verwendet wurde. Diese Flags können sich unterschei-<br />

den. Hat man diese Bibliothek installiert, kann man durch Eingabe des Kommandos<br />

xml2-config das in den Abbildungen D.1 <strong>und</strong> D.2 gezeigt ist, die Flags in Erfahrung<br />

bringen <strong>und</strong> entsprechend anwenden.<br />

equinox:~ jeanluc$ xml2-config --libs<br />

-L/sw/lib -lxml2 -lz -lpthread -L/sw/lib -liconv -lm<br />

equinox:~ jeanluc$<br />

Abbildung D.1: Ermittlung der Linker-Flags<br />

equinox:~ jeanluc$ xml2-config --cflags<br />

-I/sw/include/libxml2 -I/sw/include<br />

equinox:~ jeanluc$<br />

Abbildung D.2: Ermittlung der Linker-Flags<br />

Nun können die Programme installiert werden <strong>und</strong> die Konfigurationsdateien ent-<br />

sprechend angepasst werden. Die Adressangaben müssen mit den eigenen Gegebenhei-<br />

ten abgeglichen werden. Zur Funktion des Proxyservers muss der TPROXY-Patch wie<br />

in Abschnitt 4.2.3 installiert werden. Dazu muss allerdinge der Kernel neu übersetzt<br />

werden, was nur dem geübten Anwender empfohlen wird.<br />

133<br />

Diplomarbeit André Hesse


134 D Installation des Prototyps<br />

Ohne diesen Patch sind keine ausgehenden Verbindungen mit einer falschen IP-<br />

Adresse möglich (CallBack).<br />

Schliesslich müssen noch die iptables-Kommandos wie in Abschnitt 4.2.2 (entspre-<br />

chend angepasst) eingegeben werden.<br />

Anschliessen können die Programme durch Eingabe von “pussinboots main.conf“,<br />

“redridinghood main.conf“ <strong>und</strong> “snowwhite main.conf“ 1 gestartet werden. Einem<br />

ausgiebigen Test sollte nun nichts mehr im Wege stehen. Abbildung D.3, zeigt den<br />

Start des Proxyservers.<br />

1 Die einzelnen Programmkomponenten wurden bei der Entwicklung mit Codenamen versehen. PussInBoots<br />

(der gestiefelte Kater) ist der Name des Proxyservers. RedRidingHood (Rotkäppchen)<br />

erfüllt die Funktionalität des Sensornetzwerk-Simulators. Schließlich ist Snowwhite (Schneewittchen)<br />

der erstellte Client. Der Autor dieser Arbeit hatte zuerst angedacht, das entwickelte Protokoll<br />

BGP zu nennen: das ” Brothers Grimm Protocol“. Aufgr<strong>und</strong> der Verwendung dieser Abkürzung<br />

<strong>für</strong> das ” Border Gateway Protocol“, wurde aber davon abgesehen.<br />

Diplomarbeit André Hesse


equinox:~ jeanluc$ pussinboots main.conf<br />

jeanluc$ ./pussinboots main.conf<br />

ProxyServer gestartet<br />

Versuche Config-Datei main.conf einzulesen...<br />

Betrete Hauptschleife<br />

Main: Versuche ConfigFiles einzulesen<br />

C_AddressBook::readProfilesFile(): Profil-Datei erfolgreich \<br />

eingelesen, Versuche zu interpretieren...<br />

C_AddressBook::readProfilesFile(): BasicAttributes gef<strong>und</strong>en<br />

C_AddressBook::readProfilesFile(): ExtendedAttributes gef<strong>und</strong>en<br />

C_AddressBook::readProfilesFile(): Profil: ’Switch Remote Control’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readProfilesFile(): Profil: ’Switching Load Controller’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readProfilesFile(): Profil: ’Occupancy Sensor’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readProfilesFile(): Profil: ’Light Sensor Monochromatic’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readProfilesFile(): Profil: ’Dimmer Remote Control’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readProfilesFile(): Profil: ’Dimming Load Controller’, \<br />

’Home Control, Lighting’ zur ProfilListe hinzugefuegt<br />

C_AddressBook::readUserGroupFile(): UserGroup ’Insane’ hinzugefuegt.<br />

C_AddressBook::readUserGroupFile(): UserGroup ’Normal User’ hinzugefuegt.<br />

C_AuthManager::readConfigFile(): ConfigFile erfolgreich eingelesen!<br />

ClientManager::run(): ClientManager gestartet<br />

ProxyManager::run(): ProxyManager gestartet<br />

SensorNetworkManager::run(): SensorNetworkManager gestartet<br />

ProxyManager::readConfigFile: ConfigFile erfolgreich eingelesen!<br />

Abbildung D.3: Programmausgabe nach Start des Proxyservers<br />

135<br />

Diplomarbeit André Hesse


136 D Installation des Prototyps<br />

Diplomarbeit André Hesse


Literaturverzeichnis 137<br />

Literaturverzeichnis<br />

[AlGS99] D. S. Alberts, J. J. Garska <strong>und</strong> F. P. Stein. Network Centric Warfa-<br />

re: Developing and Leveraging Information Superiority. http://www.<br />

dodccrp.org/publications/pdf/Alberts_NCW.pdf, 1999.<br />

[Appl] Apple Computer Inc. Xcode. Xcode 2.2 is Apple’s tool suite and integra-<br />

ted development environment (IDE) for creating Mac OS X universal<br />

binaries that run natively on PowerPC and Intel-based Macintosh com-<br />

puters. http://developer.apple.com/tools/xcode/.<br />

[Berl] CST Group FU Berlin. Scatterweb Embedded Sensor Board. http:<br />

//www.scatterweb.com.<br />

[ChKu03] Chee-Yee Chong <strong>und</strong> Srikanta P. Kumar. Sensor Networks: Evolution,<br />

Opportunities and Challenges. In Proceedings of the IEEE, Band 91.<br />

IEEE, August 2003, S. 1247–1256.<br />

[Cros] Crossbow Technology Inc. Crossbow. Crossbow Technology Inc., www.<br />

xbow.com.<br />

[DaZi83] J.D Day <strong>und</strong> H. Zimmermann. The OSI Reference Model. In Proceedings<br />

of the IEEE, Band 71. IEEE, 1983, S. 1334–1340.<br />

[DeNP99] M. Degermark, B. Nordgren <strong>und</strong> S. Pink. RFC 2507: IP Header Com-<br />

pression, Februar 1999. Status: PROPOSED STANDARD.<br />

[DFGV04] Adam Dunkels, Laura Marie Feeney, Björn Grönvall <strong>und</strong> Thiemo Voigt.<br />

An integrated approach to developing sensor network solutions. In<br />

Proceedings of the Second International Workshop on Sensor and Ac-<br />

tor Network Protocols and Applications, Boston, Massachusetts, August<br />

2004.<br />

[Doyl99] Jeff Doyle. Routing TCP/IP: umfassendes Handbuch zu allen internen<br />

Routing-Protokollen. Cisco Press (Markt <strong>und</strong> Technik), München. 1999.<br />

Diplomarbeit André Hesse


138 Literaturverzeichnis<br />

[DuAV04] Adam Dunkels, Juan Alonso <strong>und</strong> Thiemo Voigt. Making TCP/IP Via-<br />

ble for Wireless Sensor Networks. Proceedings of the First European<br />

Workshop on Wireless Sensor Networks (EWSN’04), work-in-progress<br />

session, Berlin, 2004.<br />

[Dunk03] Adam Dunkels. Full TCP/IP for 8-Bit Architectures. In Proceedings<br />

of The First International Conference on Mobile Systems, Applications,<br />

and Services (MOBISYS ‘03), San Francisco, 2003.<br />

[Dura01] A. Durand. Deploying IPv6. In IEEE Internet Computing, Band 5.<br />

IEEE, Januar/Februar 2001, S. 79–81.<br />

[EgFr94] K. Egevang <strong>und</strong> P. Francis. The IP Network Address Translator (NAT).<br />

RFC 1631 (Informational), Mai 1994. Obsoleted by RFC 3022.<br />

[EsRGK99] D. Estrin, J. Heidemann R. Govindan <strong>und</strong> S. Kumar. Next Century<br />

Challenges: Scalable Coordination in Sensor Networks. In Proceedings<br />

of the ACM/IEEE Internation Conference on Mobile Computing and<br />

Networking, Seattle, WA, August 1999. S. 263–270.<br />

[Ethe] Ethereal Inc. Ethereal Ethereal. http://www.ethereal.com.<br />

[FLYV93] V. Fuller, T. Li, J. Yu <strong>und</strong> K. Varadhan. Classless Inter-Domain Routing<br />

(CIDR): an Address Assignment and Aggregation Strategy. RFC 1519<br />

(Proposed Standard), September 1993.<br />

[GmbH] ProSyst GmbH. ProSyst. http://www.prosyst.com.<br />

[IANA] IANA, http://www.iana.org/assignments/port-numbers. Assigne-<br />

ment of Port Numbers.<br />

[IEEE] IEEE. Guidelines for 64-BIT global itentifier (EUI-64) Registration<br />

Authority. http://standards.ieee.org/regauth/oui/tutorials/<br />

EUI64.html.<br />

[Inst] Institute of Electrical and Electronics Engineers. IEEE Homepage on<br />

802.15 (WPAN). IEEE, http://www.ieee802.org/15/pub/TG4.html.<br />

[Jaco90] V. Jacobson. RFC 1144: Compressing TCP/IP headers for low-speed<br />

Diplomarbeit André Hesse<br />

serial links, Februar 1990. Status: PROPOSED STANDARD.


Literaturverzeichnis 139<br />

[kdev] kdevelop.org. KDevelop. KDE Development Environment. http://<br />

www.kdevelop.org/.<br />

[LCCK + ] Barry M. Leiner, Vinton G. Cerf, David D. Clark, Robert E. Kahn,<br />

Leonard Kleinrock, Daniel C. Lynch, Jon Postel, Lawrence G. Roberts<br />

<strong>und</strong> Stephen Wolff. A Brief History of the Internet.<br />

[LeCo81] V. R. Lesser <strong>und</strong> D. D. Corkill. Functionally accurate, cooperative<br />

distributed systems. In IEEE Transactions on Systems, Man, and Cy-<br />

bernetics, Band 11. IEEE, Januar/Februar 1981, S. 81–96.<br />

[Mock87] P.V. Mockapetris. Domain names - concepts and facilities. RFC 1034<br />

(Standard), November 1987. Updated by RFCs 1101, 1183, 1348, 1876,<br />

1982, 2065, 2181, 2308, 2535, 4033, 4034, 4035, 4343.<br />

[MPSC + 02] Alan Mainwaring, Joseph Polastre, Robert Szewczyk, David Culler <strong>und</strong><br />

John Anderson. Wireless Sensor Networks for Habitat Monitoring. In<br />

ACM International Workshop on Wireless Sensor Networks and Appli-<br />

cations (WSNA’02), Sep 2002.<br />

[netf] netfilter.org. Netfilter. Firewalling, NAT, and packet mangling for Li-<br />

nux. netfilter.org, http://www.netfilter.org.<br />

[NiCo94] C.E. Nishimura <strong>und</strong> D.M. Conlon. IUSS dual use: Monitoring whales<br />

and earthquakes using SOSUS. In Marine Technology Society Journal,<br />

Band 27, 1994, S. 13–21.<br />

[Open] OpenVPN Solutions LLC. OpenVPN. http://openvpn.net/.<br />

[Org.] Kernel Org. Linux. The Kernel Org. Organization, Inc., http://<br />

kernel.org.<br />

[OSGia] OSGi-Alliance. OSGi-Alliance. OSGi-Alliance, http://osgi.org.<br />

[OSGib] OSGi-Alliance. OSGi-Alliance Members. OSGi-Alliance, http://osgi.<br />

org/about/member_list.asp?section=1.<br />

[PiKa] Kris Pister, Joe Kahn <strong>und</strong> Bernhard Boser et al. Smart Dust - Autono-<br />

mous sensing and communication in a cubic millimeter. University of<br />

California Berkeley, http://robotics.eecs.berkeley.edu/~pister/<br />

SmartDust/.<br />

Diplomarbeit André Hesse


140 Literaturverzeichnis<br />

[Post80] J. Postel. User Datagram Protocol. RFC 768 (Standard), August 1980.<br />

[Post81a] J. Postel. Assigned numbers. RFC 790 (Historic), September 1981.<br />

Obsoleted by RFC 820.<br />

[Post81b] J. Postel. Internet Protocol. RFC 791 (Standard), September 1981.<br />

Updated by RFC 1349.<br />

[Post81c] J. Postel. Transmission Control Protocol. RFC 793 (Standard), Sep-<br />

tember 1981. Updated by RFC 3168.<br />

[proc78] Proceedings of the Distributed Sensor Nets Workshop. Department of<br />

Computing Science, Carnegie Mellon Unversity, 1978.<br />

[RMKG94] Y. Rekhter, B. Moskowitz, D. Karrenberg <strong>und</strong> G. de Groot. Address<br />

Allocation for Private Internets. RFC 1597 (Informational), März 1994.<br />

Obsoleted by RFC 1918.<br />

[Schi03] Jochen Schiller. Mobilkommunikation. Pearson Studium. 2. Auflage,<br />

2003.<br />

[ScKo] Balazs Schneider <strong>und</strong> Krisztian Kovacs. TPROXY. This page is dedi-<br />

cated to our efforts of creating a transparent proxy solution portable ac-<br />

cross several operating systems. http://www.balabit.com/products/<br />

oss/tproxy/.<br />

[SiSa03] Slobodan Simic <strong>und</strong> Shankar Sastry. Distributed Environmental Moni-<br />

toring Using Random Sensor Networks. In IPSN, 2003, S. 582–592.<br />

[Sun] Sun. Sun Developer Network. Sun, http://java.sun.com.<br />

[Tane03] Andrew Tanenbaum. Computernetzwerke. Pearson Studium. 4. Auflage,<br />

2003.<br />

[TavS03] Andrew Tanenbaum <strong>und</strong> Marten van Steen. Verteilte Systeme: Gr<strong>und</strong>-<br />

lagen <strong>und</strong> Paradigmen. Pearson Studium. 1. Auflage, 2003.<br />

[Team95] Johns Hopkins APL Team. The cooperative engagement capability.<br />

Johns Hopkins Applied Physics Laboratory Technical Digest Band 4,<br />

1995.<br />

[UC Ba] UC Berkeley. TinyDB. University of California Berkeley, http:<br />

Diplomarbeit André Hesse<br />

//telegraph.cs.berkeley.edu/tinydb/screenshots.htm.


Literaturverzeichnis 141<br />

[UC Bb] UC Berkeley. TinyOS. University of California Berkeley, www.tinyos.<br />

net.<br />

[W3C] W3C. Extensible Markup Language (XML). World Wide Web Consor-<br />

tium, http://www.w3.org/XML/.<br />

[WaCh02] D.W. Waddington <strong>und</strong> F. Chang. Realizing the Transition to IPv6. In<br />

IEEE Communications Magazine, Band 40. IEEE, Juni 2002, S. 138–<br />

148.<br />

[Weis01] Marc Weiser. Whatever Happended to the Next Generation Internet?<br />

In Communication of the ACM, Band 44, September 2001, S. 61–68.<br />

[Whit05] Edward C. Whitman. SOSUS - The Secret Weapon of Undersea Sur-<br />

veillance, 2005.<br />

[WHRBS + 81] R. B. Wesson, F.A. Hayes-Roth, J. W. Burge, C. Stasz <strong>und</strong> C. A. Suns-<br />

hine. Network structures for distributed situation assessment. In IEEE<br />

Transactions on Systems, Man, and Cybernetics, Band SMC-11. IEEE,<br />

Januar/Februar 1981, S. 5–23.<br />

[Wilj02] J. Wiljakka. Transition to IPv6 in GPRS and WCDMA Mobile Net-<br />

works. In IEEE Communications Magazine, Band 40. IEEE, April 2002,<br />

S. 134–140.<br />

[ZhGu04] Feng Zhao <strong>und</strong> Leonidas Guibas. Wireless Sensor Networks. Morgan<br />

Kaufmann Publisher. 1. Auflage, 2004.<br />

[Zieg03] Robert Ziegler. Linux-Firewalls. Konzeption <strong>und</strong> Implementierung <strong>für</strong><br />

Netzwerke <strong>und</strong> PCs. Markt+Technik. 2003.<br />

[ZigB] ZigBee Alliance. The Hompeage of the the ZigBee Alliance. http:<br />

//www.zigbee.org.<br />

Diplomarbeit André Hesse


142 Literaturverzeichnis<br />

Diplomarbeit André Hesse


Abbildungsverzeichnis 143<br />

Abbildungsverzeichnis<br />

2.1 Das Internet-Referenzmodell . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2 Datenkapselung am Beispiel des Internetreferenzmodells . . . . . . . . . 8<br />

2.3 Vergleich zwischen herkömmlicher Briefpost <strong>und</strong> IP-Paketvermittlung . 10<br />

2.4 Header eines IPv4-Paketes . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.5 Routing im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.6 Klassenbasierte IP-Adressierung . . . . . . . . . . . . . . . . . . . . . . 16<br />

2.7 Der TCP-Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.8 Network Address Translation im Einsatz . . . . . . . . . . . . . . . . . 23<br />

2.9 Mehrfaches Abrufen einer Webseite . . . . . . . . . . . . . . . . . . . . 26<br />

2.10 Die Arbeitsweise eines Webproxys . . . . . . . . . . . . . . . . . . . . . 27<br />

3.1 Mögliche Topologien in ZigBee-Netzen . . . . . . . . . . . . . . . . . . 35<br />

3.2 Der ZigBee-Protokollstapel . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

3.3 Endpunkte in ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

3.4 Die Anwendungsschicht im ZigBee Protokollstapel . . . . . . . . . . . . 39<br />

4.1 Mögliche Ansätze zur Kopplung von Systemen . . . . . . . . . . . . . . 43<br />

4.2 Spatial IP-Address Assignment . . . . . . . . . . . . . . . . . . . . . . 45<br />

4.3 OSGi Framework Architektur <strong>für</strong> OSGi Anwendungen . . . . . . . . . . 47<br />

4.4 Kommunikation zwischen Endgeräten mit einem OSGi-Gateway . . . . 48<br />

4.5 Anfrage an ein Sensornetzwerk mit TinyDB . . . . . . . . . . . . . . . 49<br />

4.6 Visualisierung von Sensordaten mit TinyDB . . . . . . . . . . . . . . . 50<br />

4.7 Einsatz eines transparenten Proxyservers . . . . . . . . . . . . . . . . . 52<br />

4.8 Paketbehandlung mit Netfilter . . . . . . . . . . . . . . . . . . . . . 53<br />

4.9 Aufruf eines iptables-Kommandos . . . . . . . . . . . . . . . . . . . . 55<br />

5.1 Die Struktur des Prototyps . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

5.2 Auszug aus einer XML-Datei . . . . . . . . . . . . . . . . . . . . . . . 64<br />

5.3 Auszug aus einer XML-Datei . . . . . . . . . . . . . . . . . . . . . . . 65<br />

5.4 Die abstrakte Datendarstellung . . . . . . . . . . . . . . . . . . . . . . 66<br />

Diplomarbeit André Hesse


144 Abbildungsverzeichnis<br />

5.5 Der Ablauf der Authentifizerung . . . . . . . . . . . . . . . . . . . . . . 67<br />

5.6 Die Struktur des Proxyservers . . . . . . . . . . . . . . . . . . . . . . . 69<br />

5.7 Der Weg einer eingehenden Nachricht . . . . . . . . . . . . . . . . . . . 73<br />

5.8 Der Weg einer ausgehenden Nachricht . . . . . . . . . . . . . . . . . . . 74<br />

5.9 Die Struktur des Sensornetzwerk-Simulators . . . . . . . . . . . . . . . 78<br />

5.10 Programmausgabe: Auswahl des Typs eines ZigBee-Endgerätes . . . . . 79<br />

5.11 Programmausgabe: Änderung eines Attributes bei der Konfiguration . . 79<br />

5.12 Programmausgabe: Binding-Tabelle konfigurieren . . . . . . . . . . . . 80<br />

5.13 Binding-Information in der Konfigurationsdatei . . . . . . . . . . . . . 80<br />

5.14 Programmausgabe: Auswahlmenu nach Start des Sensornetzwerkes . . 81<br />

5.15 Programmausgabe: Änderung eines Attributes im laufenden Betrieb . . 82<br />

5.16 Die Struktur des Clients . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

5.17 Programmausgabe: Startmenu des Clients . . . . . . . . . . . . . . . . 83<br />

5.18 Programmausgabe: Optionen-Menu im Client nach erfolgreicher Verbin-<br />

dung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

5.19 Anzeige einer Attributänderung . . . . . . . . . . . . . . . . . . . . . . 85<br />

5.20 Programmausgabe: Rückruf durch ein Engerät . . . . . . . . . . . . . . 85<br />

5.21 VPN-Verbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

5.22 Mögliche Netztopologien des Prototyps . . . . . . . . . . . . . . . . . . 89<br />

A.1 Proxyserver: Konfigurationsdatei main.conf . . . . . . . . . . . . . . . 105<br />

A.2 Proxyserver: Konfigurationsdatei authmanager.conf . . . . . . . . . . 106<br />

A.3 Proxyserver: Konfigurationsdatei profiles.conf . . . . . . . . . . . . 107<br />

A.4 Proxyserver: Konfigurationsdatei profiles.conf . . . . . . . . . . . . 108<br />

A.5 Proxyserver: Fortsetzung Konfigurationsdatei proxymanager.conf . . . 109<br />

A.6 Proxyserver: Auszug Konfigurationsdatei usergroups.conf . . . . . . . 110<br />

A.7 Sensornetzwerk-Simulator: Konfigurationsdatei main.conf . . . . . . . 111<br />

A.8 Sensornetzwerk-Simulator: Konfigurationsdatei profiles_binding.conf 112<br />

A.9 Sensornetzwerk-Simulator: Konfigurationsdatei sensornetwork.conf . 113<br />

A.10 Client: Konfigurationsdatei main.conf . . . . . . . . . . . . . . . . . . 114<br />

B.1 Authenticating: ClientSendUserData . . . . . . . . . . . . . . . . . . . 116<br />

B.2 Authenticating: ClientUserData . . . . . . . . . . . . . . . . . . . . . 116<br />

B.3 Authenticating: ServerUserData . . . . . . . . . . . . . . . . . . . . . 116<br />

B.4 Authenticating: AuthSuccess . . . . . . . . . . . . . . . . . . . . . . . 117<br />

B.5 Authenticating: AuthSuccess . . . . . . . . . . . . . . . . . . . . . . . 117<br />

B.6 Authenticating: SetDeviceID . . . . . . . . . . . . . . . . . . . . . . . 117<br />

Diplomarbeit André Hesse


Abbildungsverzeichnis 145<br />

B.7 Setup: LogOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

B.8 Setup: LogOutAndTerminate . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

B.9 Setup: LogOutAndSetCallBack . . . . . . . . . . . . . . . . . . . . . . 118<br />

B.10 Setup: RequestAllSensorNetworkData . . . . . . . . . . . . . . . . . . 119<br />

B.11 Setup: ResponseAllSensorNetworkData . . . . . . . . . . . . . . . . . 120<br />

B.12 Setup: ProfileUnknown . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

B.13 Setup: DeviceIPAllreadyAssigned . . . . . . . . . . . . . . . . . . . . 121<br />

B.14 Setup: SetInteresstedDeviceIP . . . . . . . . . . . . . . . . . . . . . 122<br />

B.15 Service: RequestCommandGET . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

B.16 Service: ResponseCommandGET . . . . . . . . . . . . . . . . . . . . . . . 123<br />

B.17 Service: AllResponseCommandGETSended . . . . . . . . . . . . . . . . . 124<br />

B.18 Service: RequestZigBeeDeviceList . . . . . . . . . . . . . . . . . . . . 124<br />

B.19 Service: RequestCommandSET . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

B.20 Service: UpdateDeviceAttribute . . . . . . . . . . . . . . . . . . . . . 126<br />

B.21 Service: ResponseZigBeeDeviceList . . . . . . . . . . . . . . . . . . . 127<br />

C.1 Ein Attribut mit beliebigen Werten . . . . . . . . . . . . . . . . . . . . 129<br />

C.2 Ein Attribut mit optionalen Werten . . . . . . . . . . . . . . . . . . . . 130<br />

D.1 Ermittlung der Linker-Flags . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

D.2 Ermittlung der Linker-Flags . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

D.3 Programmausgabe nach Start des Proxyservers . . . . . . . . . . . . . . 135<br />

Diplomarbeit André Hesse


146 Abbildungsverzeichnis<br />

Diplomarbeit André Hesse


Tabellenverzeichnis 147<br />

Tabellenverzeichnis<br />

2.1 IP-Adressnotation <strong>für</strong> Version 4 (IPv4) . . . . . . . . . . . . . . . . . . 12<br />

2.2 Reservierte Adressbereiche im IPv4 Protokoll . . . . . . . . . . . . . . 21<br />

5.1 Die Gerätearten des ZigBee-Profils ” Home Control, Lighting“ . . . . . . 61<br />

Diplomarbeit André Hesse


148 Tabellenverzeichnis<br />

Diplomarbeit André Hesse


Abkürzungsverzeichnis <strong>und</strong> Formelzeichen 149<br />

Abkürzungsverzeichnis <strong>und</strong><br />

Formelzeichen<br />

AES . . . . . . . . . . . . . . . Advanced Encryption Standard<br />

ARP . . . . . . . . . . . . . . . Address Resolution Protocol<br />

ATM . . . . . . . . . . . . . . . Asynchronous Transfer Mode<br />

bzw. . . . . . . . . . . . . . . . beziehungsweise<br />

CIDR . . . . . . . . . . . . . . Classless InterDomain Routing<br />

DARPA . . . . . . . . . . . . Defense Advanced Research Projects Agency<br />

DES . . . . . . . . . . . . . . . Data Encryption Standard<br />

DHCP . . . . . . . . . . . . . Dynamic Host Configuration Protocol<br />

DoD . . . . . . . . . . . . . . . Department of Defense (Amerikanisches Verteidigungsministe-<br />

rium)<br />

FTP . . . . . . . . . . . . . . . File Transport Protocol<br />

GPS . . . . . . . . . . . . . . . Global Positioning System<br />

HTTP . . . . . . . . . . . . . Hypertext Transfer Protocol<br />

IANA . . . . . . . . . . . . . . Internet Assigned Numbers Authority<br />

ICANN . . . . . . . . . . . . Internet Corporation for Assigned Names and Numbers<br />

ICMP . . . . . . . . . . . . . . Internet Control Message Protocol<br />

IEEE . . . . . . . . . . . . . . . Institute of Electrical and Electronics Engineers<br />

IETF . . . . . . . . . . . . . . . Internet Engineering Task Force<br />

IMAP . . . . . . . . . . . . . . Internet Message Access Protocol<br />

IP . . . . . . . . . . . . . . . . . . Internet Protocol<br />

IPX . . . . . . . . . . . . . . . . Internetwork Packet Exchange<br />

ISO . . . . . . . . . . . . . . . . International Organization for Standardization<br />

ISP . . . . . . . . . . . . . . . . Internet Service Provider<br />

LAN . . . . . . . . . . . . . . . Local Area Network<br />

NAT . . . . . . . . . . . . . . . Network Address Translation<br />

OSI . . . . . . . . . . . . . . . . Open Systems Iinterconnection<br />

PAN . . . . . . . . . . . . . . . Personal Area Network<br />

Diplomarbeit André Hesse


150 Abkürzungsverzeichnis <strong>und</strong> Formelzeichen<br />

PC . . . . . . . . . . . . . . . . . Personal Computer<br />

PDA . . . . . . . . . . . . . . . Personal Digital Assistant<br />

POP-3 . . . . . . . . . . . . . Post Office Protocol<br />

Radar . . . . . . . . . . . . . . Radio detection and ranging<br />

RARP . . . . . . . . . . . . . Reverse Address Resolution Protocol<br />

RFC . . . . . . . . . . . . . . . Request For Comments<br />

SMS . . . . . . . . . . . . . . . Short Message Service<br />

SOSUS . . . . . . . . . . . . . So<strong>und</strong> Surveillance System<br />

SQL . . . . . . . . . . . . . . . . Structured Query Language<br />

TCP . . . . . . . . . . . . . . . Transmission Control Protocol<br />

UDP . . . . . . . . . . . . . . . User Datagram Protocol<br />

W3C . . . . . . . . . . . . . . . World Wide Web Consortium<br />

WLAN . . . . . . . . . . . . . Wireless Local Area Network<br />

WWW . . . . . . . . . . . . . World Wide Web<br />

XML . . . . . . . . . . . . . . . eXtensible Markup Language<br />

z.B. . . . . . . . . . . . . . . . . zum Beispiel<br />

Diplomarbeit André Hesse


Thesen zur Diplomarbeit 151<br />

Thesen zur Diplomarbeit<br />

1. Die Vermittlungs- <strong>und</strong> Transportprotokolle die im Internet ihre Anwendung fin-<br />

den, sind nicht <strong>für</strong> den Einsatz in Sensornetzwerken geeignet.<br />

2. Die Kopplung eines Sensornetzwerkes an IP-basierte Kommunikationssysteme ist<br />

ein lohnenswertes Ziel.<br />

3. Die Implementierung der TCP/IP-Suite in Sensornetzwerke ist aus Gründen des<br />

Protokolloverheads mit hohen Energieanforderungen verb<strong>und</strong>en.<br />

4. Durch die Implementierung eines transparenten Proxys können Sensornetzwerke<br />

an IP-basierte Kommunikationssyteme gekoppelt werden.<br />

5. Dabei ist der Einsatz des transparenten Proxys dem Anwender nicht ersichtlich.<br />

6. Herkömmliche Anwendungs- <strong>und</strong> Transportprotokolle können unterstützt wer-<br />

den. Damit wäre ein Zugriff auf die Knoten des Sensornetzwerkes mit vorhande-<br />

nen Anwendungen möglich. Der Zugriff kann ohne Eingriffe in das Betriebssystem<br />

oder die Anwendungen des Clients durchgeführt werden.<br />

<strong>Ilmenau</strong>, den 30. 03. 2006 André Hesse<br />

Diplomarbeit André Hesse


152 Thesen zur Diplomarbeit<br />

Diplomarbeit André Hesse


Erklärung 153<br />

Erklärung<br />

Die vorliegende Arbeit habe ich selbstständig ohne Benutzung anderer als der ange-<br />

gebenen Quellen angefertigt. Alle Stellen, die wörtlich oder sinngemäß aus veröffent-<br />

lichten Quellen entnommen wurden, sind als solche kenntlich gemacht. Die Arbeit ist<br />

in gleicher oder ähnlicher Form oder auszugsweise im Rahmen einer oder anderer Prü-<br />

fungen noch nicht vorgelegt worden.<br />

<strong>Ilmenau</strong>, den 30. 03. 2006 André Hesse<br />

Diplomarbeit André Hesse

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!