Department of Systems and Computer Engineering Carleton University, CANADA Copyright (c) 2004 Liang Qin, Department of Systems and Computer Engineering, Carleton University 1. Ported CRC's OLSR with QoS support to XORP 1.0, this release enables OLSR to add and delete route entries to RIB in XORP, instead of to Linux kernel. ============================================================================== COMMUNICATION RESEARCH CENTER, CANADA Copyright (c) 2004 Ying Ge, Communication Research Center Canada. Copyright (c) 2002, 2003 Maoyu Wang, Communication Research Center Canada. By Ying Ge: 1. Changed the OLSR packet format and message processing procedure based on the OLSR RFC (RFC 3636, Sept. 2003). 2. Added support for multiple interfaces to OLSR, including MID message creation and processing as specified in the OLSR RFC. 3. Added QoS Support to OLSR By Maoyu Wang: 1. Ported OLSR from IPv4 to IPv6, 2. Added HNA functionality into OLSR IPv6 version 3. Added the default gateway functionality into OLSR by extending the HNA message usage. The default gateway functionality supported the mobility by cooperating with Mobile IPv6 for a mobile node as well as supported Internet access for MANET nodes CRCOLSR6DS_QoS HOWTO Version 1.0 =============================================================================== This document describes how to install and use CRCOLSR6DS_QOS with XORP 1.0. CRCOLSR6DS_QOS implements both the RFC version as well as some QoS extensions of the Optimized Link State Routing (OLSR) protocol for mobile ad hoc networks in IPv6 network. The original CRCOLSR6DS_QOS was implemented by Communication Research Center Canada. More detailed information can be found in CRCOLSR6DS_QoS HOWTO file in the olsr directory. Please note, the installation and execution should follow the instructions listed here. If you'd like to run the original CRCOLSR6DS_QOS code, please contact Communication Research Center Canada TABLE OF CONTENTS 1. SYSTEM REQUIREMENTS 2. INSTALLATION 3. EXECUTION 4. OTHER ISSUES ------------------------------------------------------------------------------ 1. SYSTEM REQUIREMENTS 1) The OLSR module has been ported and tested on XORP 1.0. Though XORP keeps updating in CVS server, we'd like to keep the consistency of the parameters in XRLs. 2) The operating system is Red Hat 9.0, kernel version: 2.4.20-8. For Fedora Core 2 and 3, we found some stability issues when running OLSR with XORP 1.0. 3) All nodes running CRCOLSR6DS_QOS must be configured as router. To turn on routing capability,open /etc/sysconfig/network, and add the following setting: NETWORKING_IPV6=yes IPV6FORWARDING=yes IPV6_ROUTER=yes (after adding these entry, please reboot your machine before proceeding) ------------------------------------------------------------------------------ 2. INSTALLATION I put several Makefile.am files and configure, configure.in in the different folders as examples, which may help you adding entries to these files. There are two ways to make modifications: - Search olsr in the sample files, you can find where changes have been made and copy the entries to the corresponding file. It will help if you would like to make modification for newer XORP version but it takes time to modify. - The easier way is copy the files to the corresponding directories after you compiled XORP, as per the following instructions: 1) Download XORP 1.0 from XORP web site: www.xorp.org, 2) Unpack it in the home directory 3) In xorp-1.0 directory (we will refer it to it as the "top directory" in the following instructions) ./configure --without-snmp gmake (you can simply run ./configure if it is OK afterwards) 4) Unpack olsrXORP in a temp directory (called TEMP) 5) Copy olsr folder under the top directory 6) Copy olsr.xif and Makefile.am in the interfaces folder to the xrl/interfaces directory 7) Copy olsr.tgt and Makefile.am in the targets folder to the xrl/targets directory 8) Copy olsr.tp and Makefile.am in templates folder to the etc/templates directory 9) Copy configure.in and Makefile.am in TEMP to top directory 10) Open rib.cc in the rib directory, search for _admin_distances["ibgp"] = 200; add _admin_distances["olsr"] = 222; (after it) 11) Go to the xrl/scripts, run cpp ../interfaces/olsr.xif | python clnt-gen cpp ../targets/olsr.tgt | python tgt-gen (Note: on systems that still use a version of python prior to 2.0, try python2 or download and install the latest version of python) 12) Go to top directory: automake ./configure --without-snmp (you may need run aclocal before automake) 13) Open Makefile in olsr directory, remove -Wxxx after both -W parameters (there are two places) because most of the OLSR code is written in C 14) gmake ------------------------------------------------------------------------------ 3. EXECUTION 1) You must enable the interface(s) used for OLSR, I have an example called runOlsr. Note: you have to specify ip route add ::/0 dev eth1 2) There are some parameters which users can set both in the template file olsr.tp and configure file. In the provided olsr.tp, some parameters are not practical because I'd like to test if the configure file works correctly when launching XORP. I provide config.olsr and config.olsr2 examples for configurations with single and two wireless interfaces respectively. Please change it before use based on the interface settings of your own system. 3) When launching OLSR, go to rtrmgr director, ./xorp_rtrmgr -b config.olsr if there is only one interface in your system, use config.olsr2 for two interfaces. Please note I set some timer so that OLSR module will launch after all the required modules in XORP start. ------------------------------------------------------------------------------ 4. OTHER ISSUES 1) The multiple interfaces case is not throughly tested, though we did some tests with two machines with two wireless interfaces each. 2) The QoS functionality has been turned off during testing. 3) Further work will continue while XORP keeps evolving as well. 4) Related questions can be sent to lqin@sce.carleton.ca, please include "olsr" in the title of email so that I can put them in the same folder.