Simple Module SAMPhO

Package: saors.SAMPhO
File: src/SAMPhO/SAMPhO.ned

C++ definition

Socially-Aware Multi Phase Opportunistic Routing

The Socially-Aware Multi Phase Opportunistic Routing (SAMPhO) is a more sophisticated version of DT-DYMO. It is also based on the SAORSBase classes but does not use PROPHET to determine the best carriers. Instead it uses multiple metrics such as beacons received, ego-betweenness and community similarity in order to determine the best one for the various stages of the routing proccess. Therefore, it can provide much better results than DTDYMO.

See also: SAORSBase, DTDYMO, EPDYMO, RDYMO

Author:: Nikolaos Vastardis

SAMPhO

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
METRIC string "BEACON"
BETW_THRESHOLD double 0.3
SIM_THRESHOLD double 0.3
SOCIAL_SENSITIVITY double 30
ANTISOCIAL_SENSITIVITY double 30

Properties:

Name Value Description
class SAMPhO

Gates:

Name Direction Size Description
from_ip input
to_ip output

Signals:

Name Type Unit
Betweenness double

Statistics:

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

Source code:

//
// <b> Socially-Aware Multi Phase Opportunistic Routing </b>
//
// The Socially-Aware Multi Phase Opportunistic Routing (SAMPhO) 
// is a more sophisticated  version of DT-DYMO. It is also based on 
// the SAORSBase classes but does not use PROPHET to determine the
// best carriers. Instead it uses multiple metrics such as 
// beacons received, ego-betweenness and community similarity
// in order to determine the best one for the various stages of
// the routing proccess. Therefore, it can provide much better 
// results than DTDYMO.
//
// @see SAORSBase, DTDYMO, EPDYMO, RDYMO
//
// @author: Nikolaos Vastardis
//
simple SAMPhO extends SAORSBase
{
    parameters:
        @class(SAMPhO);
        @signal[Betweenness](type="double");
        @statistic[Betweenness](title="Betweenness"; source="Betweenness"; record=vector; interpolationmode=none);
        string METRIC = default("BEACON");
        double BETW_THRESHOLD = default(0.3);
        double SIM_THRESHOLD = default(0.3);
        double SOCIAL_SENSITIVITY = default(30);
        double ANTISOCIAL_SENSITIVITY = default(30);
    gates:
}