Sensornetzwerk: Virtuelles Sensornetzwerk mit Riot OS (Teil 2)

Im ersten Teil hatte ich euch gezeigt, wie ihr mit dem Simulationsboard „native“ von Riot OS einen virtuellen Sensorknoten entwerft und diesen mit eurem Host PC verbindet. Aber ein wirkliches Sensornetzwerk ist das natürlich noch nicht. In diesem Teil zeige ich euch deswegen, wie ihr mehrere virtuelle Sensorknoten erstellt und diese zu einem virtuellen Sensornetzwerk zusammenschließt.

Erstellen von vier tap-Schnittstellen

Das Ziel ist vier virtuelle Sensorknoten zu erstellen. Dazu werden vier tap-Schnittstellen erzeugt. Riot OS liefert dazu bereits die benötigten Tools.

Erstellen von vier tap-Schnittstellen

Abbildung 1: Erstellen von vier tap-Schnittstellen / Bildquelle Daniel Waschto, generic.de AG

Die vier Schnittstellen wurden nun erfolgreich angelegt. Anschließend kann das Programm für den eigentlichen Sensorknoten kompiliert werden. Wir verwenden dazu das Beispielprogramm „gnrc_networking“ aus meinen vorangegangenen Beiträgen. Achtet darauf, dass im Makefile das native-Board ausgewählt ist.

Damit wir später die Shell aller Nodes sehen können, empfehle ich euch, vier separate Terminal-Fenster zu öffnen. Alternativ könnt ihr auch Programme von Dritten dazu verwenden. Zum Beispiel „screen“ oder „tmux“. In jedem Terminalfenster verbinden wir uns nun mit je einem virtuellen Sensorknoten.

Anschließend bestimmen wir einen root-Knoten, welcher für die Vergabe der IP-Adresse zuständig sein soll. In diesem Fall verwende ich den Knoten am tap0. Dieser bekommt nun von mir eine globale IPv6-Adresse:

Hinzufügen einer IPv6-Adresse

Abbildung 2: Hinzufügen einer IPv6-Adresse / Bildquelle Daniel Waschto, generic.de AG

Der root-Knoten hat nun eine IPv6-Adresse. Wer meine letzten Beiträge gelesen hat, weiß, dass nun noch ein Routing-Protokoll benötigt wird, damit die anderen Knoten automatisch auch eine globale IPv6-Adresse zugewiesen bekommen. Dazu wird der Hauptknoten nun als RPL-root eingerichtet:

RPL-root aktivieren

Abbildung 3: RPL-root aktivieren / Bildquelle Daniel Waschto, generic.de AG

 

 

 

 

 

Anschließend wird auf den anderen Knoten ebenfalls RPL aktiviert.

Die 6 steht für die Nummer des Interface.

RPL aktivieren

Abbildung 4: RPL aktivieren / Bildquelle Daniel Waschto, generic.de AG

Die Knoten bekommen nun eine globale IPv6-Adresse zugewiesen.

Globale IPv6-Adresse

Abbildung 5: Globale IPv6-Adresse / Bildquelle Daniel Waschto, generic.de AG

Wer mehr Informationen zum Thema RPL haben möchte, dem empfehle ich meinen Blogbeitrag zu diesem Thema (Sensornetzwerk: Aufbau und Einsatz (Teil 2)).
Über den Shell-Befehl „rpl“ lassen sich nun auf den einzelnen Knoten Informationen über das RPL-Routing auslesen.

RPL-Infos root-Knoten

Abbildung 6: RPL-Infos root-Knoten / Bildquelle Daniel Waschto, generic.de AG

Der root-Knoten hat zum Beispiel den Rank 256, während die anderen Knoten eine Ebene tiefer mit dem Rank 512 sind.

RPL-Infos Knoten

Abbildung 7: RPL-Infos Knoten / Bildquelle Daniel Waschto, generic.de AG

Zusätzlich erhält man die local-Adresse des parent-Knoten und dessen Rank. In unserem Fall der root-Knoten bei der tap0-Schnittstelle.
Wehr mehr Informationen zu den einzelnen Zahlen haben möchte, der kann gerne in der offiziellen Dokumentation nachlesen (https://tools.ietf.org/html/rfc6550).

Fazit

Mit Hilfe des Simulationsboards „native“ und den mitgelieferten Tools von Riot OS lässt sich relativ schnell und unkompliziert ein virtuelles Netzwerk aufbauen. Der Vorteil dabei ist, dass man sich komplett auf sein eigenes Programm konzentrieren kann ohne sich zunächst mit Hardwaretreibern oder Problemen bei der Funkübertragung kümmern zu müssen.
In meinem nächsten Beitrag geht es dann an die echte Hardware und ich zeige euch, wie ihr eure eigene Sensorplatine entwerft und auf was ihr dabei achten müsst.