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
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
| Name | Type | Description |
|---|---|---|
| SAORSBase | simple module |
The Socially-Aware Opportunistic Routing System Base |
| 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 |
| Name | Value | Description |
|---|---|---|
| class | SAMPhO |
| Name | Direction | Size | Description |
|---|---|---|---|
| from_ip | input | ||
| to_ip | output |
| Name | Type | Unit |
|---|---|---|
| Betweenness | double |
| Name | Title | Source | Record | Unit | Interpolation Mode |
|---|---|---|---|---|---|
| Betweenness | Betweenness | Betweenness | vector | none |
// // <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: }