The olsr.org OLSR daemon is an implementation of the Optimized Link State Routing protocol. As such it allows mesh routing for any network equipment.
It runs on any wifi card that supports ad-hoc mode and of course on any ethernet device.
OLSR is next to AODV one of the main two internet standards for mesh networks. It is widely used and well tested.

Since OLSR is on layer 3, it is highly portable. So far it runs on

  • Windows (XP and Vista, Windows 7)
  • Linux (i386, arm, alpha, mips, xscale)
  • OS X (powerpc, intel, xscale, iPhone)
  • VxWorks
  • NetBSD
  • FreeBSD
  • OpenBSD
  • Nokia N900
  • Google phone (Android, G1)
  • linux wifi phones (WIP)
  • the $100 laptop ;-)
  • the Intel Classmate

OLSR is fast and uses very little CPU time thus saving valuable battery power on embedded and portable devices.

OLSR is highly scalable. It runs on community wireless mesh networks with 2000 nodes (Athens wireless network), ~ 600 nodes (berlin FreiFunk.net), Leipzig Freifunk net, ~ 400 nodes (FunkFeuer.at). As a deployed mesh routing protocol, it is regularly stress tested and we consider it quite solid since version 0.5.6-r7 despite what other competing protocols say. Of course there is always room for improvement.

OLSR is released under a BSD license. It is easy to integrate into your projects thanks to this very liberal license.

OLSR is an ongoing open source project and we encourage you to get involved. Just join the mailing lists.

In detail

OLSR is a routing protocol for mobile ad-hoc networks. The protocol is pro-active, table driven and utilizes a technique called multipoint relaying for optimized message flooding. olsrd also implements a popular optional link quality extension.

Olsrd is meant to be a well structured and well coded implementation that should be easy to maintain, expand and port to other platforms. It has a very flexible plugin architecture.

The implementation is RFC3626 compliant with respect to both core and auxiliary functioning.
Olsrd supports use of loadable plugins. These can be used to to handle and generate custom packettypes to be carried by OLSRs MPR flooding scheme or for any other desired functioning.