Personal website of Christoph Sommer

DYMO-FAU: Dynamic MANET On Demand (DYMO) routing for OMNeT++

This patch adds support for the Dynamic MANET On Demand (DYMO) routing protocol, as of draft-ietf-manet-dymo-10, to the OMNeT++ 3.4b2 / INET 20061020 simulation environment, as well as the OMNeT++ 4.0rc2 / INET Framework simulation environment.

(Note that there is now also a second way to simulate DYMO in OMNeT++: by means of a wrapper by Alfonso Ariza Quintana for the DYMO-UM ns-2 modules. In the INETMANET Framework, the DYMO-FAU modules can be found as DYMOFAU.ned)

Introduction

DYMO is a new reactive (on-demand) routing protocol, which is currently developed in the scope of the Internet Engineering Task Force's MANET working group. DYMO builds upon experience with previous approaches to reactive routing, especially with the routing protocol AODV. It aims at a somewhat simpler design, helping to lower the nodes' system requirements and simplifying the protocol's implementation. DYMO retains proven mechanisms of previously explored routing protocols like the use of sequence numbers to enforce loop freedom. At the same time, DYMO provides enhanced features, such as covering possible MANET-Internet gatewaying scenarios and implementing path accumulation.

Description

The implementation is available in two different variants:

  • In the "DYMO" variant, DYMO was implemented as an application-layer module. It uses a node's UDP module to communicate with other instances of DYMO and comes with two additional helper modules to support DYMO operation on the network layer. The first helper module is able to queue outbound packets before routing in the network layer occurs, so that a route can be set up by DYMO. The queue can then be signaled to release buffered packets for a given destination -- either in order to have them routed to the first hop or to have them discarded because no route could be found. The second helper module is installed as a hooking function in the inbound packets' path. It notifies DYMO of the arrival of packets, so it can refresh routing table entries or send route error messages. The model is thus suited to examine in detail the interaction of DYMO and Internet protocols.
  • In the "DYMOnet" variant, the transport and network layers are meant to be completely replaced by a single module, "DYMOnet__DYMO", which just directly routes raw messages received from higher layers through the network. The model is thus suited to examine DYMO without side effects introduced by a transport or network layer.


Host using "DYMO"


Host using "DYMOnet"

Both variants share the same implementation of DYMO, which has the following characteristics: We outfitted our model of DYMO with the capability to queue payload messages received from the application layer, should no usable route be known at the time the data is received. Our model will in this case repeatedly try to establish a route as specified, then dequeue the messages for delivery to the destination or for destruction if no route could be found. Regarding route maintenance we chose the simplest of the proposed models for our implementation. Established routes are not actively monitored, but just time out if they are not actively used.

Our DYMO model has the following configuration parameters:

parameter example value
RESPONSIBLE_ADDRESSES_PREFIX 32
DYMO_INTERFACES wlan0, eth0
AUTOASSIGN_ADDRESS_BASE 10.0.0.0
MIN_HOPLIMIT 5
MAX_HOPLIMIT 10
ROUTE_AGE_MIN_TIMEOUT 1 (NET_TRAVERSAL_TIME)
ROUTE_AGE_MAX_TIMEOUT 60
ROUTE_NEW_TIMEOUT 5 (ROUTE_TIMEOUT)
ROUTE_USED_TIMEOUT 5 (ROUTE_TIMEOUT)
ROUTE_DELETE_TIMEOUT 10 (2x ROUTE_TIMEOUT)
RREQ_RATE_LIMIT 10
RREQ_BURST_LIMIT 3
RREQ_WAIT_TIME 2 (2x NET_TRAVERSAL_TIME)
RREQ_TRIES 3

An in-depth discussion of the "DYMOnet" variant's design, its implementation characteristics, as well as an extensive performance evaluation of DYMO (draft version 06) can be found in the technical report listed under "Publications" below.

Installation (for OMNeT++ 4.0rc2)

To install the DYMO application layer or network layer modules as part of an INET framework module set, download and unpack either of the following complete, patched source trees:

The new modules "DYMO" or "DYMOnet__DYMO" will be located in directories "src/applications/dymo" and "src/networklayer/dymo", dependent on which variant you downloaded.

Also included is a short simulation sample, located in "examples/dymo" or "examples/dymonet", which uses DYMO on five wireless hosts, an access point and a static host to create an Internet gatewaying scenario.

This is our latest implementation of the DYMO routing protocol. Note that it was not tested as thoroughly as our implementation basing on draft version 06.

If you are interested in following the development, you can also...

Installation (for OMNeT++ 3.4b2)

To install the DYMO modules as part of an INET framework 20061020 module set, download and unpack the provided patch file, then extract a fresh version of the source tree and apply the patch (e.g. by running "patch -p1 < INET-20061020-sommer_dymo06.diff" in the root directory of the source tree, i.e. the directory where the "makemakefiles" file is located). After the patch is applied, the modified source tree can be built just like the regular one. The new modules "DYMO" and "DYMOnet__DYMO" will be located in directories "FAU/Network/DYMO" and "FAU/Network/DYMOnet", respectively, and can be used independently from each other.

The accompaining .zip file contains a short simulation sample that uses DYMO on five wireless hosts, an access point and a static host to create an Internet gatewaying scenario.

Downloads for DYMO as of draft version 10

This is our latest implementation of the DYMO routing protocol. Note that it was not tested as thoroughly as our implementation basing on draft version 06.

Downloads for DYMO as of draft version 06

This is the DYMO version we conducted the aforementioned evaluations with.

Publications

Links