npapanik / adyton Goto Github PK
View Code? Open in Web Editor NEWAdyton: A Network Simulator for Opportunistic Networks
License: GNU General Public License v3.0
Adyton: A Network Simulator for Opportunistic Networks
License: GNU General Public License v3.0
Trace processing when running Adyton under Cygwin is not possible for all traces. In some traces, the processing script first compiles a helper file (implemented in C) that is used for the actual processing of the trace. The executable of the helper file is deleted after use. Currently, the processing script assumes that the name of the executable is "a.out" which is not true in Cygwin. As a result, the process fails. A quick workaround is to edit the script process.sh (located in utils\trace-processing\X\processing, X is the trace name) so that it uses "a.exe" instead of "a.out".
When importing the following traces, an invalid number error is raised.
Milan
MIT
Intel
Haggle
Infocom05
[-] Extracting original dataset.. [OK]
Step 1: Removing external nodes.. [OK]
Step 2: Searching for inactive nodes.. [OK]
Step 3: Sorting file.. [OK]
Step 4: Normalizing contact time - [OK]
Step 5: Searching for self-contacts - [OK]
Step 6: Searching for contact duplicates - [OK]
Step 7: Calculating node arrival time in the experiment - ./process.sh: line 122: printf: 2.00: invalid number
Adyton's Wiki is still incomplete. The following (constantly updated) list contains documentation that will be gradually added in the wiki.
If you have any suggestions/question/comments regarding Adyton's Wiki please feel free to reply to this issue.
When the "update" profile attribute is turned on in the DF protocol, a node is able to update its threshold if its local utility has improved over time. However, there is a bug in this update process when the "Sim" utility is used.
Hey, how are you?
Excuse me my ignorance, but what is "Cataclysm" deletion mechanism?
Thank you.
Add protocol steps and set the correct order of the protocol methods
1、The develop baranch of Adyton is needed.
2、 The scenario produced by BonnMotion has to be processed by the bm2adyton.
https://github.com/npapanik/Adyton/wiki/The-bm2adyton-tool
However, the command ./Adyton -h trace
tells me that the value for the TRACE is from 1 to 23.
The right command is following:
./Adyton -TRACE /home/doris/soft/Adyton-develop/trc/myscenario.adyton
,which needs to add the path of the scenario and the "adyton" extension.
Currently, when we generate a packet we create a "Transmission" event with the sender's ID equal to -1, the receiver's ID equal to the source's ID, and the packet's ID equal to the destination's ID.
We then check the sender's ID of each "Transmission" event and if it is equal to -1, we add it to the buffer of the source node.
Instead of using the "Transmission" event for the generation of packets and actual transmission of packets, we could just create a new event that will used solely for the generation of packets.
This method can be significantly simplified. All single-copy protocols by default return false since they don not use replicas. Furthermore, this change will also simplify the process of adding a new routing protocol in Adyton.
Adyton fails to compile under windows (using cygwin). The message output is the following.
core/Results.cc: In member function ‘void Results::writeSimulationSettings()’:
core/Results.cc:117:34: error: ‘popen’ was not declared in this scope
if((setFile = popen(command, "r")) == NULL)
^
core/Results.cc:133:19: error: ‘pclose’ was not declared in this scope
if(pclose(setFile) == -1)
^
make: *** [Makefile:39: core/Results.o] Error 1
We can fix this issue by either using an alternative compiler or by using another function instead of popen()/pclose(). I'm going to try the latter approach since popen() is not standard ISO C++.
Currently, the implementation of CnR does not support the use of SimBet and SimBetTS utilities.
In SimBet, SimBetTS and BubbleRap the function "Stats->incReps" is used to log the average replication by each protocol, i.e., when a new replica is created the function is called. However, currently, the function is not used correctly.
We almost never check the return value of the malloc function.
If the malloc function fails to allocate the requested block of memory it returns a NULL pointer.
It would be nice to allow SimBet to operate on a spray-based multi-copy mode similar to SimBetTS.
It would be useful for protocols such as DF and CnR when using a specific utility to be able to inherit the customization options that are available for this utility. For example, there are two customization parameters (i.e., the "AggregationType" and the "Density") for the SimBet utility through the -PROFILE
option. It would be useful for the user to be able to use this customization also when the SimBet utility is used under CnR.
In Vaccine every node uses an infinite data structure to keep track of the delivered packets and inform other network nodes. This approach is rather unrealistic. We have to implement a new version of Vaccine that will use a data structure of finite size. In this case, new update methods should be implemented, e.g., how to discard packet entries when the data structure is full. A good idea is to use one or more bloom filter(s) (take advantage of the low cost read/write operations) to store this information.
Currently, BubbleRap supports a multi-copy operation, activated through the PROFILE option. When multi-copy operation is activated the protocol uses a "dynamic replication" scheme. It would be nice if there was a choice between "dynamic replication" and "spray-based replication". For example, it would be nice to enable "dynamic replication" when we use -REP 1 along with the PROFILE "multi-copy" option and enable "spray-based replication" when we use -REP k (k>1) along with the PROFILE "multi-copy" option.
After the release of the windows 10 anniversary update and the "ubuntu bash on windows" that comes with it,you can run adyton without any problems.So there is no need for ubuntu(or any linux based os) installation.Furthermore the compiling and the execution is exact the same as mentioned in the installation details.
When an old compiler version is used, there is a compilation error in Settings.cc and UserInteraction.cc of the develop branch (and possibly the master one).
How to include a parameter of MR, MF in SimBET.
Reading settings from a file using the -PROFILE
option may cause issues in the following routing protocols: SimBet, SimBetTS, BubbleRap and Delegation Forwarding. More specifically, a specific setting may be loaded even if the user provides an incorrect statement in the profile file.
The BUBBLE protocol can operate on a multi-copy mode if a suitable profile file is used to activate the mode. However, if the multi-copy mode is activated, Adyton does not recognize the protocol as a multi-copy one. This impacts the correct operation of the chosen deletion mechanism.
In DF protocol it is possible to use both SimBet and SimBetTS utilities. However, in several functions within those protocols, there is the need to differentiate between SimBet and SimBetTS.
Most routing protocols do not compare floating-point numbers properly.
For example, see the following code used by the Compare & Replicate routing protocol.
if(myUtil < Utils[i])
{
runner++;
BetterFw[runner]=Requests[i];
}
The above condition returns true for many "0 < 0" comparisons, increasing the number of replicas in the network significantly.
We can solve this problem by replacing it with the following code:
if(Utils[i] - myUtil > DBL_EPSILON)
{
runner++;
BetterFw[runner]=Requests[i];
}
It would be nice if the trace import system could remember crawdad credentials.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.