Sensornetzwerk – Was ist es und wie funktioniert es? – Teil 2

Der erste Teil über das Sensornetzwerk war noch relativ allgemein gehalten. Es wurde zunächst der Begriff Sensornetzwerk erläutert und dessen Funktionsweise beschrieben. In diesem Teil soll etwas tiefer auf die Funktionsweise eines Sensornetzwerkes eingegangen werden und die verwendeten Technologien näher erläutert werden.

Durch meine anderen Beiträge über das Sensornetzwerk konntet ihr schon einige Anforderungen an ein Sensornetzwerk rauslesen. Damit diese optimal erfüllt werden, kommen bestimmte Technologien und Protokolle zum Einsatz, welche auf die speziellen Anforderungen eines Sensornetzwerkes angepasst sind:

  • Limitierter Speicher
  • Automatische Adressgenerierung
  • Großer Adressenbereich –> große Anzahl an Knoten
  • Automatisches Routing
  • Geringer Paket-Overhead
  • Unkompliziert und robust –> Ressourcenschonend
  • Nahtloses Routing –> bewegliche Knoten, Knotenfluktuation
  • Stromsparend

Welche Technologien kommen zum Einsatz?

Damit diese Anforderungen optimal erfüllt werden, laufen einige Technologien / Protokolle im Hintergrund:

  • IEEE 802.15.4 (physical layer, data link layer)
  • IPv6 / 6loWPAN (network layer)
  • RPL (network layer)
  • UDP (transport layer)
  • CoAP (application layer)

IEEE 802.15.4

IEEE 802.15.4 beschreibt den Standard für ein Übertragungsprotokoll, welches extra für funkbasierte (Sensor-)Netzwerke definiert wurde. In dem Standard sind die beiden untersten Schichten des OSI-Modells beschrieben. Es wurde bei der Entwicklung des Protokolls auf die besonderen Anforderungen eines Sensornetzwerkes geachtet:

  • Geringe Leistungsaufnahme
  • Preiswerte Hardware
  • Nutzung der ISM-Bänder (ohne Lizenz nutzbar)

Eine weitere Besonderheit des Protokolls ist der Einsatz von zwei unterschiedlichen Netzknoten mit einem jeweils unterschiedlichen Funktionsumfang. Zum einen die RFD (Reduced Funktion Devices) und zum anderen die FFD (Full Funktion Devices).  Wie der Name schon sagt, besitzen die RFD einen abgespeckten Funktionsumfang. Dadurch können sie nur mit FFDs kommunizieren, da sie selber keine Verwaltungsfunktionen innehaben. Der Vorteil des geringeren Funktionsumfanges ist die kostengünstigere Entwicklung und der geringere Energiebedarf. Sie eignen sich deswegen optimal für Sensorknoten. Die FFDs hingegen verfügen über den vollen Funktionsumfang und dienen deswegen oft als Verwaltungsknoten oder Gateway. Ein FFD kann zusätzlich die Funktion eines PAN-Koordinators übernehmen und legt somit den PAN-Identifier fest, um das Netzwerk von anderen IEEE-802.15.4-Netzwerken abzugrenzen.

In dem von uns aufgebauten Sensornetzwerk übernimmt später der Border-Router diese Funktion. Die einzelnen Sensorknoten fungieren als RFD, dazu in späteren Beiträgen mehr.

IPv6 / 6loWPAN

6loWPAN steht für „IPv6 over low power Wireless Personal Area Network” und ist ein Kommunikationsprotokoll für eine energiesparende Funkübertragung über IPv6 in einem IEEE-802.15.4 basiertem Netzwerk.

6loWPAN ist auf überwiegend auf dem network-layer tätig und übernimmt die Aufgaben der Header-Komprimierung, die Paket-Fragmentierung und Defragmentierung, sowie das Routing.

Eine wichtige Aufgabe ist vor allem die Header-Komprimierung. Je kleiner der Header, desto weniger muss übertragen werden und desto energiesparender ist es. Ein weiterer Grund der Komprimierung ist der, dass bei der Verwendung des normalen IPv6-Overheads nur 33 Bytes für die Daten zur Verfügung stehen würden:

Die MTU (maximum transmission unit) bei 802.15.4-Netzwerken ist 127 Bytes groß. Bei einem maximalen Frame Overhead bei IEEE-802.15.4 von 25 Bytes und einem zusätzlichen Header für Sicherheitsfunktionen von 21 Bytes bleiben nach dem IP-Header (40 Bytes) und dem UDP-Header (8-Bytes) nur noch 33 Bytes für Daten. Das ist eindeutig zu wenig. Mal davon abgesehen, dass IPv6 eine MTU von 1280 Bytes erfordert.

Bei der Header-Komprimierung geht man davon aus, dass die IPv6-Adresse der Knoten aus einem identischen 64-Bit-Präfix für das Subnetz und aus einem 64-Bit-Suffix besteht, welcher identisch mit der MAC-Adresse des Knoten ist. Werden nun Pakete nur über einen Hop (Knoten) transportiert, so ist das Suffix der Zieladresse identisch mit dessen MAC-Adresse und der Suffix des Senders identisch mit dessen MAC-Adresse und können somit weggelassen werden. Verwendet man nur die Link-Local-Adresse, so kann sogar der Präfix weggelassen werden.

Um das Problem der kleineren MTU-Größe zu umgehen, setzt man eine Paketfragmentierung und -defragmentierung ein, um so virtuell einen MTU-Größe von 1280 Bytes zu generieren.

RPL

RPL steht für „Routing Protocol for Low power and Lossy Networks” und ist ein Routingprotokoll für drahtlose Sensornetzwerke. Das Protokoll setzt komplett auf IPv6 und erfüllt die oben genannten Bedingungen an das Routing optimal. Eine Beschreibung des Protokolls findet ihr in meinem Blogbeitrag.

UDP

UDP steht für „User Datagram Protocol“ und ist ein minimales und verbindungsloses Netzwerkprotokoll. Das heißt, es muss keine extra Verbindung zwischen dem Sender und Empfänger aufgebaut werden. Der Nachteil ist der, dass nicht mit Sicherheit gesagt werden kann, dass ein Paket beim Empfänger ankommt. Des Weiteren kann nicht gesagt werden, ob die Daten unverfälscht sind oder ob sie auch von Dritten empfangen wurden. Der Vorteil der verbindungslosen Übertragung ist aber der schnellere Beginn der Datenübertragung, welcher vor allem bei kleinen Datenpaketen vom Vorteil ist.

Die Zuordnung der Daten auf der Empfangsseite erfolgt über Ports. Eine UDP-Übertragung muss also immer den Ziel-Port mit übertragen. Der UDP-Header besteht deswegen aus vier Datenfeldern mit je 16 Bits: Quell- und Zielport, Länge und Prüfsumme.

CoAP

CoAP steht für „Constrained Application Protocol” und ist ein Nachrichten-Protokoll, welches auf REST aufbaut. Wie der Name aber schon sagt in einer abgespeckten Version, da das volle REST-Protokoll noch nicht leichtgewichtig genug ist für Mikrocontroller.

CoAP führt zusätzlich eine OBSERVE und DISCOVER-Funktion ein und baut anstelle von HTTP/TCP auf UDP auf. Dies führt aufgrund des nachrichtenorientierten Ansatzes von CoAP zu einer Performancesteigerung.

Wer mehr Infos zu CoAP haben möchte, dem empfehle ich den Beitrag von Heise zum Thema „RESTful mit CoAP“.

In dem von mir aufgebauten Sensornetzwerk kommt ebenfalls CoAP zum Einsatz. Dank diverser Implementierungen für Riot OS lassen sich somit schnell und unkompliziert Nachrichten zwischen den Knoten versenden. Mehr Infos zum Thema CoAP mit Riot OS findet ihr in meinem späteren Beitrag, wenn es um das verwendete C-Programm geht.

Fazit

Im Grunde baut ein Sensornetzwerk auf die gleichen Protokolle wie ein normales Netzwerk auf. Nur das die Protokolle entsprechend ihres Einsatzzweckes angepasst oder erweitert wurden. Sei es das optimierte Übertragungsprotokoll IEEE-802.15.4 oder das energiesparendere 6loWPAN. Aber dank diesen speziellen Technologien, lässt sich ein Sensornetzwerk sinnvoll betreiben ohne auf den Komfort der bekannten Technologien zu verzichten.

Der nächste Blogbeitrag wird sich mit dem eigentlichen Aufbauen eines Sensornetzwerkes und der Verwendung der hier beschriebenen Technologien beschäftigen. Dank des Simulations-Boards „nativ“ von Riot OS wird dazu zunächst keine echte Hardware benötigt. Eine perfekte Grundlage um die Funktionsweise praktisch zu zeigen und zu verstehen.