Simple Module SAORSBase

Package: saors.Base
File: src/Base/SAORSBase.ned

The Socially-Aware Opportunistic Routing System Base

The Socially-Aware Opportunistic Routing System (SAORS) enables the easy developement of opportunistic routing schemes in OMNET++. It extends the DYMO MANET routing protocol implementation of Christoph Sommer (DYMOFAU) that is found in the inetment framework. By using a MANET protocol as its base, it provide instant communication where a path can be found between tw nodes. On the other hand, if not, it has the ability to store the messages until the destination of a better carrier is found. To use SAORSBase in order to create a new opportunistic protocol, all that needs to be done is the extention of the hooks provided. In the C++ code of the module these are the following functions:

* sendBeacon() * handleBeacon(SAORS_BEACON* my_beacon) * findEncounterProb(const SAORSBase_RoutingEntry* routeToNode) * compareEncounterProb(const SAORSBase_RoutingEntry* dtEntry, const SAORS_RREP* rrep) * sendEncounterProb(SAORS_RREQ* rreq, const SAORSBase_RoutingEntry* dtEntry)

These five function will provide all the opportunistic functionality needed for the creation of almost any probabilistic or epidemic routing scheme.

See also: DTDYMO, DSDYMO

Author:: Nikolaos Vastardis

SAORSBase

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
DYMO simple module

Dynamic MANET On-demand (DYMO) Routing

Known subclasses:

Name Type Description
DTDYMO simple module

The Delay-Tolerant DYMO

EPDYMO simple module

The Epidemic DYMO

RDYMO simple module

The Random DYMO

SAMPhO simple module

Socially-Aware Multi Phase Opportunistic Routing

SimBetTS simple module

The SimBetTS Version of DYMO

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 DYMO

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 Socially-Aware Opportunistic Routing System Base </b>
//
// The Socially-Aware Opportunistic Routing System (SAORS) enables 
// the easy developement of opportunistic routing schemes in OMNET++.
// It extends the DYMO MANET routing protocol implementation of
// Christoph Sommer (DYMOFAU) that is found in the inetment framework.
// By using a MANET protocol as its base, it provide instant communication
// where a path can be found between tw nodes. On the other hand, if not,
// it has the ability to store the messages until the destination
// of a better carrier is found. To use SAORSBase in order to create
// a new opportunistic protocol, all that needs to be done is the
// extention of the hooks provided. In the C++ code of the module
// these are the following functions:
//
// * sendBeacon()
// * handleBeacon(SAORS_BEACON* my_beacon)
// * findEncounterProb(const SAORSBase_RoutingEntry* routeToNode)
// * compareEncounterProb(const SAORSBase_RoutingEntry* dtEntry, const SAORS_RREP* rrep)
// * sendEncounterProb(SAORS_RREQ* rreq, const SAORSBase_RoutingEntry* dtEntry)
// 
// These five function will provide all the opportunistic functionality
// needed for the creation of almost any probabilistic or epidemic
// routing scheme. 
//
// @see DTDYMO, DSDYMO
//
// @author: Nikolaos Vastardis
//
simple SAORSBase extends DYMO
{
    parameters:
        double BEACON_TIMEOUT @unit("s") = default(30s);
        double DTRT_DELETE_TIMEOUT @unit("s") = default(5000s);
        double DLT_OUTSTANDINGRREQ_TIMEOUT @unit("s") = default(3s);
        int NUM_COPIES = default(1);
        int SEND_COPIES = default(0);
        int SEND_COPIES_PC = default(0);
        bool EPIDEMIC = default(false);
        @statistic[RcvdDTMsgs](title="RcvdDTMsgs"; source="RcvdDTMsgs"; record=vector; interpolationmode=none);

    gates:
}