--------------------------------------------------------------------------- OOLSR Projet Hipercom, INRIA Rocquencourt Copyright 2004 Institut National de Recherche en Informatique et en Automatique. All rights reserved. Distributed only with permission. --------------------------------------------------------------------------- -------------------------------------------------- This software is available at http://hipercom.inria.fr/OOLSR/ -------------------------------------------------- I - Introduction ---------------- OOLSR is the INRIA re-implementation of the OLSR protocol in C++ (hence 'OO'LSR as in 'Object Oriented') II - License ------------ This code and files in this package are property of INRIA, project Hipercom. It is distributed under the GPL license, version 2 or later: see the file GPL-2. SPECIAL EXCEPTION: as a special exception, permission is granted to use the plugin (oolsr-plugin.so) with the NS-2 simulator: in that case the OOLSR files are still distributed under the GPL-2, but distributing the ns-2 simulator (w/ patches) along with OOLSR doesn't require you do distribute NS-2 under GPL. III - Compilation ----------------- In short: cd src && make Or better you may want to copy 'Makefile.private.template' to 'Makefile.private' and edit it a little first: cd src && cp Makefile.private.template Makefile.private \ && emacs Makefile.private && make By default the daemon is IPv4 only. Also IPv6 is supported only on Linux. The normal result of the compilation is: oolsrd (stripped version of daemon_core): the daemon itself oolsr_simul: a 'simulation' based on a topology plus intermediary libraries and plugins not used here. III.1 - Troubleshooting ....................... This was successfully compiled on Debian unstable (i.e. Debian Sid), with a compiler g++ 3.3 and g++ 2.95. Most problems come from not having installed (it is in 'linux-kernel-headers' package on Debian Sid), from not having a (same package), or from having a older glibc with missing network functions (it is glibc 2.3.2 on Debian Sid). IV - Running ------------ IV.1 - Running the daemon ......................... Then just run: ./oolsrd -i -i ... (with the cygwin version, you should probably first look at all the interfaces: ./oolsrd -i show and then use the indicated interface number to run OOLSR: ./oolsrd -i ) IV.2 - Running the daemon (IPv4) ................................ As you would pass: --use-ipv4 By default OLSR messages are sent on multicast address 224.0.0.1, (for consistency with IPv6, which uses multicast as well), you can change this with: --ipv4-multicast-address 255.255.255.255 for instance. IV.3 - Running the daemon (IPv6) ................................ As you would pass: --use-ipv6 1 (note: this will be changed to --use-ipv6 alone in further versions) By default OLSR messages are sent on multicast address ff02::1, you can change this with: --ipv6-multicast-address ff0e::1 for instance. IV.3.1 - IPv6, site-local addresses (or unique local addresses) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can configure IPv6 site-local addresses first on OLSR interfaces, since OOLSR uses them - the idea being to take the link-local address and replace the link-local prefix by a site-local prefix (i.e. fec0:...) (note: you can also use unique local IPv6 addresses, locally assigned, , i.e. fd00::/8 ) (Unix hint for setting site-local addresses: IFACE=eth0 ADDR=$(ip addr show ${IFACE} | grep inet6 | cut -d/ -f1 | cut '-d6' -f 2) ip addr add $(echo ${ADDR} | sed s/fe80:/fec0:/)/64 dev ${IFACE} ) IV.3.2 - IPv6, any address ~~~~~~~~~~~~~~~~~~~~~~~~~~ You can use the option --ipv6-address-filter
to specify the address that should be used on an interface, for instance: --ipv6-address-filter fe80::0/64 for link local addresses (which is a BAD idea for many reasons, including the fact that they should not be routed). IV.4 - Running the 'simulation' ............................... You can run a 'simulation' (no physical/MAC layer simulated, no data packets) with simul_static_plugee as: ./oolsr_simul --topology sample.topology or with something like: ./oolsr_simul 100 1 0.3 0.3 0.0 This feature is not yet documented. Another way to use this feature is to go in the tools/ subdirectory and look the Makefile, and read the tools/scenario/README file. IV.5 - Running the 'checks' ........................... You can run a simulations with a manually defined topologies. The format is described in tools/scenario/README, some examples are in tools/scenario. A way to run them is to go into directory tools/ and type "make". V - Plugin ---------- OOLSR can compile to a plugin (.so), used by the API presented in include/protocol-plugin-api.h . This plugin has been used in NS2. More on this in some future version. See also VII NS2. VI - Installation ----------------- The installation is manual, since it is sufficient to copy oolsrd in the proper place and add it to the start/stop scripts. VII - NS 2 ---------- You can use OOLSR as a plugin for NS-2. In that case, it is easier to take the ns-allinone distribution with integrated OOLSR. In that case, compilation is achieved, after extracting the .tar.gz with the command: ./install in ns-allinone-2.27-oolsr- directory. You can then run the OOLSR as an agent, using the test such as: cd ns-allinone-2.27-oolsr- cd ns-2.27/oolsr ../ns test-unicast.tcl You can then examine logs in directory test-unicast-result, and for information about using OOLSR in NS-2, just read the source 'test-unicast.tcl'. OOLSR is just a standard agent such as those used in wireless ad hoc networks (see NS-2 documentation). --------------------------------------------------------------------------- Misc about VC++ .cc setup: http://nebuladevice.sourceforge.net/doc2/doxydoc/nebula2/html/Nebula2Compiling.html ---------------------------------------------------------------------------