OLSR

Aus Opennet

Wechseln zu: Navigation, Suche

OLSR (Optimized Link State Routing) wird zur Auswahl der Übertragungswege im Netzwerk (Routing) eingesetzt und ist damit eine wichtige Technik zur Kommunikation im Opennet. Es wird nicht nur in der Verteilung vor Ort genutzt, sondern ist auch bei den Backbone-Links aktiviert.

Weitere Details findet ihr in dem Buch [Mesh - Drahtlose Ad-hoc-Netze, das wir im Vereinsraum vorrätig haben.

Inhaltsverzeichnis

Konfigurationsdatei (Opennet)

Das wichtigste zu Beginn, die aktuell zum Opennet kompatible olsrd.conf (passend zu olsr 0.4.10 und höher):

DebugLevel 0
Pollrate 0.1
TcRedundancy 2
MprCoverage 7
LinkQualityFishEye 1
LinkQualityDijkstraLimit 0 9.0
LinkQualityWinSize 100
LinkQualityLevel 2
UseHysteresis no
LoadPlugin "olsrd_httpinfo.so.0.1"
{
 PlParam "port" "80"
 PlParam "Host" "127.0.0.1"
 PlParam "Net" "192.168.0.0 255.255.0.0"
}
Interface "eth0" 
{
 HelloInterval 6.0
 HelloValidityTime 108.0
 TcInterval 4.0
 TcValidityTime 324.0
 MidInterval 18.0
 MidValidityTime 324.0
 HnaInterval 18.0
 HnaValidityTime 108.0
}

Hier die aktuelle Konfigurationsdatei für olsrd 0.6.0 und höher:

MainIp	192.168.x.x
## add all Opennet Interfaces to this list ("eth0", "ath0")
## add "tap0" and "tap1" etc. for usergateway-features
Interface "eth1"
{
HelloInterval 5.0
HelloValidityTime 125.0
TcInterval 2.0
TcValidityTime 500.0
MidInterval 25.0
MidValidityTime 500.0
HnaInterval 25.0
HnaValidityTime 500.0
}
########### the rest should be fine #######################
DebugLevel 1
IpVersion 4
AllowNoInt yes
Pollrate 0.025
TcRedundancy 2
MprCoverage 7
LinkQualityFishEye 1
LinkQualityLevel 2
UseHysteresis no
FIBMetric "flat"
ClearScreen yes
Willingness 3
LinkQualityAging 0.1
LinkQualityAlgorithm "etx_fpm"
RtTable 12
RtTableDefault 13
# Don't remove olsrd_txtinfo from this file
# as this plugin is used by the Webinterface
# to display the OLSR Info
#LoadPlugin "olsrd_txtinfo.so.0.1"
#{
#        PlParam "Accept" "127.0.0.1"
#}
#LoadPlugin "olsrd_httpinfo.so.0.1" {
#    PlParam "Net"	"0.0.0.0 0.0.0.0"
#    PlParam "Port"	"8080"
#}

Linux Tutorial

Wir wollen im Folgenden einen Linux-Host als mobilen Knoten im Opennet konfigurieren. Dazu muss eine feste Opennet-Adresse unter Opennet Nodes reserviert werden. Anschließend wird die WLAN-Karte konfiguriert und der OLSR-Dienst installiert.

Im Verein solltet ihr für die mobile Teilnahme bereits Mitglied sein und einen Access Point betreiben bzw. sponsern (siehe Mitmachen).

WLAN-Karte einrichten

Geht ganz einfach:

  1. iwconfig <dev> mode Ad-Hoc essid olsr.opennet-initiative.de
  2. ifconfig <dev> 192.168.7.X netmask 255.255.0.0 broadcast 192.168.255.255

Das Device (<dev>) heißt häufig "wlan0" oder "eth1". Die IP "192.168.7.X" durch eure reservierte Adresse ersetzen (siehe Adressierungsschema.

OLSRd einrichten

Download: http://www.olsr.org/?q=download
Weiterführende Dokumentation: http://www.olsr.org/?q=links

Als Superuser (root):

  1. Quellen runterladen, am besten die "Latest Release" als tar.bz2-Archiv
  2. Quellen entpacken -> tar xfj olsrd-X.X.X.tar.bz2
  3. Voraussetzungen prüfen/installieren (Bsp. Debian) -> apt-get install libc6-dev bison flex
  4. Übersetzen -> make; make install (nur OLSR) oder make build_all; make install_all (incl. aller Plugins)
  5. Konfigurationsdatei bearbeiten -> vi /etc/oslrd.conf (siehe oben)
  6. OLSRd starten -> olsrd

Es wird auf der Console ein Statusbildschirm angezeigt mit den Links, Nachbarn und der gelernten Topologie. Ab sofort sollte man vollen Zugang zum Opennet haben. Um auch das Internet zu nutzen, muss noch OpenVPN installiert werden.

Tipps und Tricks

Benutzerschnittstellen:

Mac OS X Tutorial

WLAN-Karte einrichten


Screenshots

OLSRd installieren

Hinweis: Für Mac OSX werden auf der Website der Entwickler keine Binaries von OLSR veröffentlicht. Deshalb muß OLSR als Quellcode zum selber kompilieren von der Projekt-Seite heruntergeladen, oder aber auf die hier zum Download bereitgestellten vorkompilierten Binaries zurückgegriffen werden. Diese Binaries liegen in zwei Varianten vor, wobei eine ohne Opennet-Patches und die andere mit Opennet-Patches kompiliert wurde. Für den Einsatz im Opennet wird die Variante mit Opennet-Patches empfohlen. Alle anderen User außerhalb des Opennet benutzen die OLSR-Variante ohne Opennet-Patches (ohne Änderungen kompiliert).

OLSRd aus dem Quellcode kompilieren

sudo mkdir -p /usr/local/src/olsr/; cd /usr/local/src/olsr
wget http://www.olsr.org/releases/0.6/olsrd-0.6.3.tar.bz2; tar xfvj olsrd-0.6.3.tar.bz2
patch -p1 <on_olsr_patchfile
make; make install;   #nur OLSR
make build_all; make install_all;   #inkl. aller Plugins

OLSRd einrichten

sudo vi /etc/olsrd.conf
sudo olsrd start
sudo killall olsrd

Windows Tutorial

Diskussion im Forum: [1]

Wir wollen im Folgenden einen Windows-Host als mobilen Knoten im Opennet konfigurieren. Dazu muss eine feste Opennet-Adresse unter Opennet Nodes reserviert werden. Anschließend wird die WLAN-Karte konfiguriert und der OLSR-Dienst installiert.

Im Verein solltet ihr für die mobile Teilnahme bereits Mitglied sein und einen Access Point betreiben bzw. sponsern.

Anleitung

Kurze Anleitung, wie man mit dem Notebook ins Opennet kommt:

Screenshots


Kanal Einstellung (Häufig auftretender Fehler!)

Screenshots

OLSR im Detail

OLSR (Optimized Link State Routing) ist ein Routing-Protokoll für MANETs (Mobile Ad-Hoc Networks), also Netze mit mobilen Stationen, die ohne jegliche feste Infrastruktur auskommen (müssen).

Es basiert darauf, dass eine Station regelmäßig mit jeder benachbarten Station Nachrichten austauscht, in denen die Nachbarn über andere Nachbarn der Station informiert werden (sog. HELLO-Messages). Somit wissen die Nachbarn, welche Stationen sie über 2 Hops erreichen können (einmal ihre direkten Nachbarn mit einem Hop, und über diese noch deren Nachbarn). Diese Informationen werden an alle Stationen im Netz verteilt, damit jede Station aus ihren eigenen Daten eine Route zu jeder anderen Station ermitteln kann (daher der Begriff Link State Routing).

Im normalen OLSR (wie in RFC3626 beschrieben) werden Routen nach der minimalen Anzahl Hops ausgesucht. Dieses ist nicht unbedingt die beste Route, da in einem drahtlosen Netz die Verbindungsqualität eine erhebliche Rolle spielt. Für OLSR gibt es deshalb eine Erweiterung, die die Verbindungsqualität als Kriterium für die Auswahl einer Route nutzt (LQ - Link Quality Extension). Die Verbindungsqualität ist in diesem Falle die Wahrscheinlichkeit, dass ein Paket korrekt übertragen wird. Es wird somit die Route gewählt, auf der die größte Wahrscheinlichkeit besteht, dass das Paket auf Anhieb fehlerfrei durchkommt.

Informationen über Gateways zu anderen Netzen (in unserem Falle das Internet) werden automatisch verbreitet. Gibt also ein großzügiger Teilnehmer mal seinen DSL/Infocity-Zugang frei, so wird das gesamte Netz darüber informiert (natürlich nur, wenn das auch gewünscht ist). Das könnte ganz praktisch sein weil so sehr einfach mal kurzfristig ein Gateway zugeschaltet werden kann, ohne dass es Probleme gibt wenn der wieder abgeschaltet wird.

So sagt es zumindest die Theorie ...

Fehlersuche

Packetmitschnitte

Analyse kann unter anderem mit tcpdump, tshark oder graphisch per wireshark erfolgen. Hier einige sinnvolle tshark Consolen Befehle.

Statistiken erzeugen:

# tshark -qz io,phs,udp.port=olsr -i <interface>
# tshark -qz io,stat,1,udp.port=olsr -i <interface>

Aktive Verbindungen anzeigen:

# tshark -qz conv,udp,port=olsr -i <interface>

Datenverkehr im Detail:

# tshark -i <interface> udp port 698

Debugging/GDB

Erzeugen von Stacktraces per GDB hilft den OLSRd Entwicklern, Hinweise siehe:

Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge