OLSR

OLSR ist ein Routingprotokoll für Mesh-Netzwerke und mit OSPF verwandt. Ein Dämon auf jedem Rechner kommuniziert mit anderen Knoten, tauscht Routinginformationen aus und leitet Pakete weiter, wenn sich die Kommunikationspartner aus eigener Kraft nicht direkt erreichen können.

Um das ganze mal in der Praxis zu testen, haben wir (mehr oder weniger spontan) drei Notebooks mit Linux und dem olsrd von olsr.org bestückt. Die Installation besteht aus einem simplen make OS=linux; make OS=linux install, für Windows und MacOS X existieren Binaries. Danach wird die /etc/olsrd.conf angepasst: Interface "XXX" "YYY" ist durch die tatsächlichen Interfaces zu erweitern (WLAN-Interfaces werden automatisch als solche erkannt), womit die grundlegende Konfiguration auch schon abgeschlossen ist. Wir haben uns allerdings dazu entschlossen, eine seit olsrd 0.4.8 verfügbare Optimierung zu benutzen, welche für Routingentscheidungen eine “Link Quality” heranzieht, statt einfach nur die Anzahl der Hops zu minimieren und so möglicherweise auch unzuverlässige Links heranzuziehen. Dafür muss LinkQualityLevel auf 1 oder 2 stehen (wir haben 2 benutzt) und UseHysteresis auf no. Knoten mit verschienden Einstellungen für UseHysteresis bzw. LinkQualityLevel finden sich gegenseitig nicht (die HELLO-Pakete sind “inkompatibel”), hier ist also Vorsicht geboten!

Nach dem Starten des Dämons zeigt dieser, sobald andere Nodes gefunden wurden, in einer ASCII-Liste die gefundenen “Neighbors” (Hosts in Reichweite), die Multi-Point Relais und die “Topology” (entfernte Hosts) an. Der Overhead für das Protokoll ist vernachlässigbar, bei drei Knoten in einem 802.11b Ad-Hoc-Netzwerk beansprucht OLSR etwa ein Kilobit pro Sekunde und verschickt ca. drei Pakete/Sekunde. Um den Overhead weiter zu reduzieren, wählen die Nodes unter sich “Multi-Point Relais” aus, welche in etwa einem Designated Router bei OSPF entsprechend. Für die Wahl werden verschiedene Kriterien herangezogen, darunter auch der Batterieladestand eines Knotens, und zu einer “Willingness” verrechnet, welche letztendlich entscheidet. Entsprechend hat ein Notebook mit fast leerem Akku eine Willingness von Null, ein Gerät mit Stromversorgung über ein Netzteil eine von ungefähr Drei.

Wir haben also unsere drei Knoten gestartet, manuell IPs und Ad-Hoc-WLAN-Einstellungen vergeben, den olsrd gestartet, Pings zwischen allen IPs gestartet und sind kreuz und quer durch das Gebäude gelaufen. Es ist erstaunlich, wie lange zwei Nodes in einem Flur eine direkte Verbindung halten können. Dann aber das erste Aha-Erlebnis: Die zwei am weitesten entfernten Geräte verlieren ihre direkte Verbindung, einige Pings laufen ins Leere, dann wird eine neue Route eingefügt und der Knoten in der Mitte wird plötzlich zum Router. Leider hat uns für Durchsatzmessungen und weitere Tests die Zeit gefehlt, aber OLSR macht auf jeden Fall Lust auf mehr. Vor allem Experimente in fahrenden Autos (ala FleetNet) scheinen eine magische Anziehungskraft auszuüben.