Broadwan icon
 An IPv6-Patch for AODV-UU 0.9

Contents


About the IPv6 Patch for AODV-UU

AODV-UU is a Linux-based implementation for AODV (short for Ad-hoc On-demand Distance Vector Routing) developed at the Uppsala University. The original code is based on IPv4 and can use wireless as well as ordinary network interfaces.

The IPv6 patch for AODV-UU version 0.9 aims to make the source code compilable either for IPv4 or for IPv6 networks. This is done by adding a layer for IP-version abstraction, called iplib. Within the AODV code all types and calls to the Linux kernel or socket interfaces specific to the IP-version are replaced by calls to the respective iplib types and functions.


Building Instructions

To build the code with IPv6 support, the source code needs to be updated to contain the patch. This can be achieved most easily by downloading the full source archive with the IPv6 patch already applied from the download section. If this is not possible for some reason, the patch can be applied to the untared 0.9 source tree:


  % tar xzf aodv-uu-0.9_4.tar.gz
  % zcat aodv-uu-ipv6-0.9_4.dif.gz | patch -p0
  patching file aodv-uu-0.9/Makefile
  patching file aodv-uu-0.9/aodv_hello.c
  [...]
  patching file aodv-uu-0.9/run_aodvd6
  patching file aodv-uu-0.9/seek_list.c
  patching file aodv-uu-0.9/seek_list.h
  % _

Before building, the IP-version to be supported can be set in the Makefile by setting/unsetting a hash before the line: IPV6 = -D_IPV6 (without a hash the code will compile with IPv6 support). Then refer to the documentation provided with the original AODV-UU code for building. Usually, simply doing make should do the trick.


Running AODV6

Before running the code, the AODV kernel module must be loaded. Also make sure the kernel provides the some functionality needed by AODV6. The shell script load_modules6 attemps to load all the necessary kernel modules. If running the script leads to error messages, this either means that some kernel functionality is missing or it was not compiled as a module but straight into the kernel. In the latter case, these warnings can be ignored. Note that after loading the aodv kernel module the normal network traffic (either IPv4 or IPv6) is blocked until the module is unloaed.

A good starting point for running the program is using the script run_aodv6. It will print plenty of messages to the screen and also write the log files /var/log/aodvd6.log and /var/log/aodvd6.rtlog. Of course it will make most sense to run the program on more than one machine.


Recent Changes

29.03.2005:  [minor fix] Fixed compilation problem on some Linux systems on which directly including `asm/byteorder.h' results in a warning.
09.03.2005:  [BUGFIX] Additional fixes to the kernel module to handle link-local traffic properly. Without this fix, some routes can not be setup.
03.03.2005:  [BUGFIX] Fixed the kernel module to not generate errors on traffic from/for link local addresses and IPv6 multicast addresses. Without this fix, the routes are not set correctly!


Download

The AODV for IPv6 code can be downloaded here:

 

[top of page] [parent page]
University of Buckingham icon

Last change: 03/29/05
©   Webmaster