Simple Module EPDYMO

Package: saors.EP_DYMO
File: src/EP_DYMO/EPDYMO.ned

C++ definition

The Epidemic DYMO

The Epidemic DYMO is a simple extention of the original DYMO MANET routing protocol that enables opportunistic routing as well. It is based on the SAORSBase system and extends the necessary hook functions. The methods used follow a epidemic forwarding technique. This method achieves the highest possible delivery in the current network configuration, with the tradeoff of very high traffic and high network congestion. This can cause multiple packet collisions, even in sparse MANETs.

See also: SAORSBase, SDDYMO, DTDYMO, RDYMO

Author:: Nikolaos Vastardis

EPDYMO

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends:

Name Type Description
SAORSBase simple module

The Socially-Aware Opportunistic Routing System Base

Parameters:

Name Type Default value Description
ExcludedInterfaces string ""

list of interfaces excluded by the manet routing protocol

interfaces string "prefix(wlan)"

list of routing interfaces were the routing protocol is active, the prefix(namei) indicate all the interfaces with "namei" in his names

usetManetLabelRouting bool true

the routing entries are marked IPRoute::MANET, this label force an exact search with independent of the mask

useICMP bool true

By default the module use the ICMP but it's necessary to activate with the method setSendToICMP(true)

setICMPSourceAddress bool false

set the datagram source address if the address is undefined to the address of node This parameter allow that the ICMP messages could arrive to the source applications

coreDebug bool false

debug switch for the core framework

RESPONSIBLE_ADDRESSES_PREFIX int -1

netmask of network this DYMO router is responsible for, -1 for self only

ROUTE_AGE_MIN_TIMEOUT double 1s

string DYMO_INTERFACES = default("wlan"); // list of interfaces to run DYMO on, separated by a single space character string AUTOASSIGN_ADDRESS_BASE = default("10.0.0.0"); // start of address range from which to automatically assign an address to the DYMO_INTERFACES

ROUTE_AGE_MAX_TIMEOUT double 60s
ROUTE_NEW_TIMEOUT double 5s
ROUTE_USED_TIMEOUT double 5s
ROUTE_DELETE_TIMEOUT double 10s
MIN_HOPLIMIT int 5

RREQs are first tried with this MsgHdr.HopLimit

MAX_HOPLIMIT int 10

MsgHdr.HopLimit for last RREQ, as well as other DYMO control messages

RREQ_RATE_LIMIT double 10

maximum average RREQs per second (token bucket)

RREQ_BURST_LIMIT int 3

maximum RREQs in a burst (token bucket)

RREQ_WAIT_TIME double 2s

how log to wait for a Route Request

RREQ_TRIES int 3

how many times to retry a routing request before declaring the node unreachable

BUFFER_SIZE_PACKETS int 50

maximum queue size in packets, -1 for no limit

BUFFER_SIZE_BYTES int 75000B

maximum queue size in bytes, -1 for no limit

BEACON_TIMEOUT double 30s
DTRT_DELETE_TIMEOUT double 5000s
DLT_OUTSTANDINGRREQ_TIMEOUT double 3s
NUM_COPIES int 1
SEND_COPIES int 0
SEND_COPIES_PC int 0
EPIDEMIC bool false

Properties:

Name Value Description
class EPDYMO

Gates:

Name Direction Size Description
from_ip input
to_ip output

Statistics:

Name Title Source Record Unit Interpolation Mode
RcvdDTMsgs RcvdDTMsgs RcvdDTMsgs vector none

Source code:

//
// <b> The Epidemic DYMO </b>
//
// The Epidemic DYMO is a simple extention of the original DYMO MANET
// routing protocol that enables opportunistic routing as well. It is
// based on the SAORSBase system and extends the necessary hook 
// functions. The methods used follow a epidemic forwarding technique.
// This method achieves the highest possible delivery in the current
// network configuration, with the tradeoff of very high traffic and
// high network congestion. This can cause multiple packet collisions,
// even in sparse MANETs.
//
// @see SAORSBase, SDDYMO, DTDYMO, RDYMO
//
// @author: Nikolaos Vastardis
//
simple EPDYMO extends SAORSBase
{
    parameters:
        @class(EPDYMO);

    gates:
}