Olsr
adhoc wireless mesh routing daemon
Install / Use
/learn @brabander/OlsrREADME
+====================================================================+ | README - olsr.org OLSR daemon 0.5.4, 21.10.2007 | +====================================================================+
Authors: Andreas Tonnesen(andreto@olsr.org) Thomas Lopatic (thomas@lopatic.de) Aaron Kaplan (aaron@lo-res.org)
http://www.olsr.org
CONTENTS:
I. - GENERAL INFORMATION * ABOUT * GETTING HOLD OF OLSRD * RELEASE NOTES * RFC COMPLIANCE * PLUGINS * LINK QUALITY ROUTING * KNOWN PROBLEMS * FUTURE WORK
II. - BUILDING AND RUNNING OLSRD * GENERAL INFORMATION * PLUGINS * GUI FRONTENDS
* LINUX
* WINDOWS
* FREEBSD
* OSX
I. - GENERAL INFORMATION
=========
- ABOUT =========
The olsr.org OLSR daemon is an implementation of the Optimized Link State routing protocol. The protocol is documented in RFC3626. The website of olsrd is http://www.olsr.org
Olsrd is designed to be a modular an extensible implementation. It features a plugin interface, allowing for developers to extend OLSR operation without interfering with the core code. It also features a experimental link quality routing scheme.
To ask questions or make comments, join up with the mailing lists: olsr-dev@olsr.org - development discussion olsr-users@olsr.org - usage discussion
A bug tracker is also available at the sourceforge project site http://sourceforge.net/projects/olsrd/
Olsrd source or binaries can be downloaded from olsr.org. CVS is available for the cutting edge features ;-)
The current Olsrd work is done via http://olsr.funkfeuer.at/ in the OLSR-NG project.
=================
- RELEASE NOTES =================
==================
- RFC COMPLIANCE ==================
If olsrd is ran without using link-quality routing/MPR selection it is RFC3626 compliant in that it will inter-operate with other RFC3626 implementations. Internally there are a few things that are solved differently that proposed in the RFC. Check out the "Conclusions" section of the "Implementing And Extending The Optimized Link State routing Protocol" thesis available at olsr.org.
===========
- PLUGINS ===========
Olsrd supports dynamic loading of plugins (dynamically loaded libraries) for functions like generation and processing of private package types, setting olsrd configurations in run-time and much more. This design is chosen for amongst others, the following reasons:
- No need to change any code in the olsr daemon to add custom packages or functionality.
- Users are free to implement olsrd plugins and license them under whatever terms they like.
- The plugins can be written in any language that can be compiled as a dynamic library. Linux even allows scripts!
- No need for people with extended OLSR versions to rely on heavy patching to maintain functionality when new olsrd versions are released.
OLSR provides a default forwarding algorithm that allows for forwarding of OLSR messages of unknown types. This is really neat - because it means that even if only a subset of the nodes in the network actually known how to interpret a certain message type - all nodes will forward them according to the MPR pragma. A user may want to use the optimized flooding technique in OLSR to broadcast certain information, routing related or not, to all nodes that knows how to handle this message. Services that needs to broadcast/multicast data can encapsulate data in a private OLSR message type using a olsrd plugin.
The design of the various entities of OLSR allows one to easily add special functionality into most aspects of OLSR. One can both register functions and unregister them with the socket parser, packet parser, scheduler and HNA set etc. This opens up for possibilities like intercepting current operation and replacing it with custom actions.
Plugins that are part of this release(can be found in the lib/ directory):
-
Tiny Application Server (TAS).
-
HttpInfo. This plugin implements a simple HTTP server that serves dynamic pages with lots of information about the running olsrd process.
-
TxtInfo. This delivers output similar to the above. However, it is intended for external tools to use the output.
-
Mini.
-
Nameservice.
-
Dynamic Internet gateway. A plugin that dynamically adds and removes Internet HNA transmissions based on if there exists a default gateway to Internet with hop count = 0(non OLSR gateway). It has been extended to be able to ping Internet nodes to check for connectivity as well.
-
Dot draw. A plugin that produces output in the dot format representing the network topology.
-
Secure OLSR plugin. This plugin adds a signature to all messages to ensure data integrity. This way only nodes with access to the shared key can participate in the routing. You need to have the OpenSSL libs installed to use this plugin.
========================
- LINK QUALITY ROUTING ========================
Release 0.4.8 is the first version of olsrd that implements the ETX link quality metric. This enables olsrd to prefer routes that have a superior overall quality to routes that are worse but consist of less hops. Have a look at the README-Link-Quality.html file for details.
==================
- KNOWN PROBLEMS ==================
There is no synchronization concept (and thus - and for Gods sake - no code). Some plugins use threads for concurrency so this should be solved. ATM the bmf plugin is the only one using threads.
===============
- FUTURE WORK ===============
Future work concentrates on reduction of ressource (ab)use and to make it more scalable. Of course additional useful plugins are always appreciated.
The current track of development is documented in the OLSR-NG project: http://olsr.funkfeuer.at
II. - BUILDING AND RUNNING OLSRD
=======================
- GENERAL INFORMATION =======================
Olsrd is implemented in pure C with very few dependencies. Olsrd is known to run on various hardware like:
- x86 - your regular PC
- PPC - Macintosh hardware
- MIPSEL - Embedded systems like the LinkSys WRT54g
- ARM - Embedded systems like Compaq/HP iPaq A binary tarball featuring x86, MIPSEL and ARM binaries is available for download at olsr.org
Ports exist for all major operating systems:
- Linux
- Mac OS X
- NetBSD/OpenBSD/FreeBSD: ATM the main development occurs on Linux with GNU tools so occasionally it needs some minor tweaks to compile it on *BSD. Please send patches if you fix problems there.
- Win32: You need (the relevant parts of) cygwin to compile the daemon as such. The installer and GUI needs VisualC++ though. Win32 is the least supported port. Feel free to send patches!
Packages for the operating systems and various distributions are available at olsr.org. Feel free to package it and announce it on the mailing lists.
===========
- PLUGINS ===========
All the available plugins are also implemented in C and requires gcc/libc to build. the dot_draw plugin compiles for Windows and GNU/Linux. the rest of the plugins will only compile for GNU/Linux. Building the plugins are just a matter of executing: make while installing requires(as root): make install in the plugins top directory (i.e. "lib/$plugin/"). To use the plugins add them to the olsrd configuration file.
=====================
- OS SUPPORT STATUS =====================
COMPONENT/OS Linux Win32 FreeBSD NetBSD OpenBSD OSX
olsrd +/+ +/+ +/+ +/+ +/+ ?
PLUGINS bmf +/+ +/? +/+ +/+ +/+ - dot_draw +/+ +/? +/+ +/+ +/+ +/+ dyn_gw +/+ +/? +/- +/- +/- +/+ dyn_gw_plain +/+ +/? +/- +/- +/- +/+ httpinfo +/+ +/+ +/+ +/+ +/+ +/+ mini +/+ +/? +/+ +/+ +/+ +/+ nameservice +/+ +/? +/+ +/+ +/+ +/+ quagga +/+ -/- +/+ +/+ +/+ ? secure +/+ +/+ +/+ +/+ +/+ +/+ tas +/+ - - - - ? txtinfo +/+ +/+ +/+ +/+ +/+ +/+
LEGEND: +/+ = compiles/runs +/- = compiles/does not work - = does not compile ? = unknown
=================
- GUI FRONTENDS =================
A GUI front end for GNU/Linux using GTK is available in the gui/ directory. This implementation is no longer supported, and might not work any more. It will be completly removed in a future release.
There currently is, however, a native MFC-based Windows GUI. Unlike olsrd the GUI has to be compiled with Visual C++ 6. It can be found in the gui/win32/ directory. Simply open the "Frontend.dsw" workspace in the Visual C++ 6 IDE. Then compile "Frontend" and "Shim", which creates "Switch.exe" and "Shim.exe".
To run the Windows GUI simply make sure that "Switch.exe", "Shim.exe", "olsrd.exe", "olsrd_cfgparser.dll", and "Default.olsr" are located in the same directory and run "Switch.exe". "Shim.exe" is just an auxiliary console application that is required by "Switch.exe".
The GUI is pretty self-explanatory. The three buttons on the lower right of the GUI window start the OLSR server, stop the OLSR server, and exit the GUI.
Use the "Settings" tab to specify the options that the GUI uses to run the OLSR server "olsrd.exe". When you click "Start" the GUI generates a temporary configuration file from the information given by the "Settings" tab. This temporary configuration file is passed to the OLSR server via its "-f" option.
"Offer Internet connection" is only available if you have an Internet connection, i.e. if you have a default route configured. If you tick this option an HNA entry for the default route is added to th
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
