Adyton is an event-driven network simulator, written in C++, for Opportunistic Networks (a.k.a. Delay-Tolerant Networks) that is capable of processing contact traces. The Adyton simulator supports a plethora of routing protocols and real-world contact traces, while also providing several congestion control mechanisms and buffer management policies.
Adyton was developed by Nikolaos Papanikos and Dimitrios-Georgios Akestoridis during their graduate studies in the Department of Computer Science and Engineering at University of Ioannina, Greece under the supervision of Prof. Evangelos Papapetrou.
Adyton was a restricted area within Ancient Greek temples, where oracles and priests gave their oracular responses.
Supported Contact Traces1
- Milan PMTR
- MIT Reality Mining
- Intel
- Haggle-Cam
- INFOCOM 2005
- INFOCOM 2006
- SASSY
- SIGCOMM 2009
- Cambridge
- RollerNet
- Nodobo
- UCSD
- Cabspotting
- Lyon Primary School
- Stanford High School
- DieselNet
- Dartmouth
Supported Routing Protocols
- Direct Delivery
- Epidemic Routing
- PRoPHET
- SimBet
- SimBetTS
- Bubble Rap
- Spray and Wait
- LSF Spray and Wait
- MSF Spray and Wait
- PRoPHET Spray and Wait
- LSF Spray and Focus
- Compare and Replicate
- Encounter-Based Routing
- Delegation Forwarding
- Coordinated Delegation Forwarding
- Optimal Routing
Supported Congestion Control Mechanisms2
- Avoid Overflow
- Autonomous Congestion Control (ACC)
- FairRoute (FR)
- Buffer Space Advertisements (BSA)
- Context-Aware Congestion Control (CACC)
- Congestion Control with Adjustable Fairness (CCAF)
Supported Scheduling Policies2
Supported Dropping Policies
- Drop Front
- Drop Tail
- Drop Oldest
- Drop Youngest
- Drop Front - Avoid Source Packets
- Drop Tail - Avoid Source Packets
- Drop Oldest - Avoid Source Packets
- Drop Youngest - Avoid Source Packets
Supported Deletion Mechanisms3
1: Note that the original traces are not directly supported by Adyton. Further processing is required for each trace in order to be compatible with Adyton. More instructions about trace processing can be found in the utils/trace-processing directory. For any questions or special requests please contact us.
2: Currently all congestion control mechanisms and some scheduling policies are supported only by single-copy routing protocols. Their use in multi-copy protocols is still experimental.
3: Deletion mechanisms are used only in the case of multi-copy routing protocols where multiple packet replicas exist throughout the network.
Requirements
Adyton currently supports only Linux-based systems with a proper C++ compiler. All the required third-party libraries are included in the ext/ directory.
Compiling
To compile Adyton from source code, just execute the following command inside the src/ directory:
$ make
Execution
After compiling Adyton from source code, you can use the executable file to run a simulation with the default settings with the following command:
$ ./Adyton
Syntax
$ ./Adyton -TRACE <contact trace> -RT <routing protocol> -CC <congestion control mechanism> -SP <scheduling policy> -DP <dropping policy> -DM <deletion mechanism> -OUTPUT <output type> -TRAFFIC_TYPE <traffic type> -TRAFFIC_LOAD <number of packets> -TTL <time to live> -BUFFER <buffer size> -REP <replication number> -SPLIT <number of pieces> -SEED <seed number> -PROFILE <text file> -RES_DIR <results directory> -TRC_DIR <trace directory> -BATCH <batch mode>
Options
<contact trace>
options:
Contact Trace | Arithmetic Value | String Value |
---|---|---|
Milan PMTR | 1 | MILAN |
MIT Reality Mining | 2 | REALITY |
Intel | 3 | INTEL |
Haggle-Cam | 4 | HAGGLE-CAM |
INFOCOM 2005 | 5 | INFOCOM-2005 |
INFOCOM 2006 | 6 | INFOCOM-2006 |
INFOCOM 2006 (Short Range) | 7 | INFOCOM-2006-SR |
SASSY | 8 | SASSY |
SIGCOMM 2009 | 9 | SIGCOMM-2009 |
Cambridge | 10 | CAMBRIDGE |
Cambridge Students | 11 | CAMBRIDGE-STUDENTS |
RollerNet | 12 | ROLLERNET |
Nodobo | 13 | NODOBO |
UCSD | 14 | UCSD |
UCSD (3 Weeks) | 15 | UCSD-3-WEEKS |
Cabspotting | 16 | CABS |
Cabspotting (2 Days) | 17 | CABS-2-DAYS |
Lyon Primary School | 18 | LYON |
Stanford High School | 19 | STANFORD |
DieselNet | 20 | DIESELNET |
Dartmouth | 21 | DARTMOUTH |
Dartmouth (2 Weeks) | 22 | DARTMOUTH-2-WEEKS |
Debugging | 23 | DEBUG |
<routing protocol>
options:
Routing Protocol | Arithmetic Value | String Value |
---|---|---|
Direct Delivery | 1 | DIRECT |
Epidemic Routing | 2 | EPIDEMIC |
PRoPHET | 3 | PROPHET |
SimBet | 4 | SIMBET |
SimBetTS | 5 | SIMBETTS |
Bubble Rap | 6 | BUBBLE |
Spray and Wait | 7 | SNW |
LSF Spray and Wait | 8 | LSF-SNW |
MSF Spray and Wait | 9 | MSF-SNW |
PRoPHET Spray and Wait | 10 | PROPHET-SNW |
LSF Spray and Focus | 11 | LSF-SNF |
Compare and Replicate | 12 | CNR |
Encounter-Based Routing | 13 | EBR |
Delegation Forwarding | 14 | DF |
Coordinated Delegation Forwarding | 15 | COORD |
Optimal Routing | 16 | OPTIMAL |
<congestion control mechanism>
options:
Congestion Control Mechanism | Arithmetic Value | String Value |
---|---|---|
None | 1 | NONE |
Avoid Overflow | 2 | AVOID-OVERFLOW |
ACC | 3 | ACC |
FairRoute | 4 | FR |
BSA | 5 | BSA |
CACC | 6 | CACC |
CCAF | 7 | CCAF |
<scheduling policy>
options:
Scheduling Policy | Arithmetic Value | String Value |
---|---|---|
FIFO | 1 | FIFO |
LIFO | 2 | LIFO |
GRTRMax | 3 | GRTRMAX |
GRTRSort | 4 | GRTRSORT |
HNUV | 5 | HNUV |
<dropping policy>
options:
Dropping Policy | Arithmetic Value | String Value |
---|---|---|
Drop Front | 1 | DF |
Drop Tail | 2 | DT |
Drop Oldest | 3 | DO |
Drop Youngest | 4 | DY |
Drop Front - Avoid Source Packets | 5 | DF-ASP |
Drop Tail - Avoid Source Packets | 6 | DT-ASP |
Drop Oldest - Avoid Source Packets | 7 | SO-ASP |
Drop Youngest - Avoid Source Packets | 8 | DY-ASP |
<deletion mechanism>
options:
Deletion Mechanism | Arithmetic Value | String Value |
---|---|---|
Just TTL | 1 | JUST-TTL |
No Duplicates - Delete Replicas | 2 | NO-DUPS |
No Duplicates - Keep Replicating | 3 | KEEP-REP |
Vaccine | 4 | VACCINE |
Cataclysm | 5 | CATACLYSM |
<output type>
options:
Output Type | Arithmetic Value | String Value |
---|---|---|
Type 1 | 1 | T1 |
Type 2 | 2 | T2 |
Type 3 | 3 | T3 |
Type 4 | 4 | T4 |
Type 5 | 5 | T5 |
<traffic type>
options:
Traffic Type | Arithmetic Value | String Value |
---|---|---|
Uniform | 1 | UNIFORM |
Burst | 2 | BURST |
Sample | 3 | SAMPLE |
Predefined | 4 | PREDEFINED |
<number of packets>
is the number of packets that will be created.
<time to live>
is defined as a timeout value, which specifies when a packet is no longer useful and should be deleted (if is equal to 0, the TTL value will be infinite).
<buffer size>
is defined as the maximum number of packets that each node can store (if is equal to 0, infinite buffers will be used).
<replication number>
is the replicas of each original packet (used only for multi-copy protocols).
<number of pieces>
is the number of pieces to split the contact trace file, before uploading to memory.
<seed number>
is used by the pseudo-random number generator algorithm.
<text file>
is the name of a text file with additional parameter arguments.
<results directory>
is the name of the directory that will store the results of the simulation.
<trace directory>
is the name of the directory that stores the contact trace files.
<batch mode>
options:
- ON = the results will not be printed
- OFF = all the results will be printed
Default Settings
<contact trace>
= MILAN<routing protocol>
= DIRECT<congestion control mechanism>
= NONE<scheduling policy>
= FIFO<dropping policy>
= DF<deletion mechanism>
= JUST-TTL<output type>
= Τ1<traffic type>
= UNIFORM<number of packets>
= 10000<time to live>
= 0<buffer size>
= 0<replication number>
= 1<number of pieces>
= 100<seed number>
= time(NULL)<text file>
= ""<results directory>
= "../res/"<trace directory>
= "../trc/"<batch mode>
= OFF
When you write a paper that involves the use of Adyton, we would appreciate it if you can cite our tool using the following entry.
-
N. Papanikos, D.-G. Akestoridis, E. Papapetrou, "Adyton: A network simulator for opportunistic networks", 2015. [Online]. Available: https://github.com/npapanik/Adyton.
-
BibTeX entry:
@misc{Adyton,
author = {Papanikos, Nikolaos and Akestoridis, Dimitrios-Georgios and Papapetrou, Evangelos},
title = {Adyton: A Network Simulator for Opportunistic Networks},
howpublished = {[Online]. Available: https://github.com/npapanik/Adyton},
year = {2015}
}
Adyton has been used in the following publications:
- D.-G. Akestoridis, N. Papanikos, and E. Papapetrou, "Exploiting Social Preferences for Congestion Control in Opportunistic Networks", in Proceedings of the 10th IEEE International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob), 2014, pp. 413-418. DOI: 10.1109/WiMOB.2014.6962204.
- N. Papanikos, and E. Papapetrou, "Coordinating Replication Decisions in Multi-copy Routing for Opportunistic Networks", in Proceedings of the 10th IEEE International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob), 2014, pp. 8-13. DOI: 10.1109/WiMOB.2014.6962142.
Copyright (C) 2015 Nikolaos Papanikos, Dimitrios-Georgios Akestoridis, and Evangelos Papapetrou
Adyton is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Adyton is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Adyton. If not, see http://www.gnu.org/licenses/.