Coder Social home page Coder Social logo

the-one's People

Contributors

akeranen avatar dogmgeen avatar ewertonsalvador avatar julianofischer avatar jxpro avatar kenog avatar linzhiqi avatar schmittner avatar tk721 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

the-one's Issues

Debug level

Suggestion:

When running MaxPropRouter, there is a snippet of code frequently called (from routing.maxprop.MeetingProbability, which prints some information in output stream.

if (probs.size() >= maxSetSize) {
            core.Debug.p("Probsize: " + probs.size() + " dropping " +
                    probs.remove(smallestEntry.getKey()));

        }
}

It is frequently annoying and could lead to performance degradation.
Perhaps the best default option for debugging is not debugging, actually.

Actually, in my code I changed the snippet in order to workaround:

if (probs.size() >= maxSetSize) {
            probs.remove(smallestEntry.getKey()));
            //core.Debug.p("Probsize: " + probs.size() + " dropping " +
           //         probs.remove(smallestEntry.getKey()));

        }
}

It would be nice a (not hardcoded) way to disable it (increase the debug level).
I could contribute with a pull request if the authors agree to reade the debug level from settings:

    Debug.level = x

undesirable behavior

Hi guys, how are you?

We have an undersirable problem regarding to the TTL calculation:

public int getTtl() {
		    if (this.initTtl == INFINITE_TTL) {
		    return Integer.MAX_VALUE;
	    }
	    else {
		    return (int)( ((this.initTtl * 60) -
				    (SimClock.getTime()-this.timeCreated)) /60.0 );
	    }
}

When a user enter a value greater than Integer.MAX_VALUE/60 occurs an integer overflow which results in negative values for TTL.

A possible workaround is to limit ttl maximum value to 35,791,394 which works fine.
35,791,395 leads to a negative value.

Assertions fail when running default settings

When running the default simulation with assertions enabled (-ea), two assertions fail:

java -ea -Xmx512M -cp target:lib/ECLA.jar:lib/DTNConsoleConnection.jar core.DTNSim $*

First this:

Running simulation 'default_scenario'
java.lang.AssertionError: No path from Nt2@(3253.28,2184.33) to Nt2@(1763.40,268.05). The simulation map isn't fully connected
        at movement.ShortestPathMapBasedMovement.getPath(ShortestPathMapBasedMovement.java:56)
        at core.DTNHost.setNextWaypoint(DTNHost.java:417)
        at core.DTNHost.move(DTNHost.java:395)
        at core.World.moveHosts(World.java:214)
        at core.World.update(World.java:164)
        at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
        at ui.DTNSimUI.start(DTNSimUI.java:77)
        at core.DTNSim.main(DTNSim.java:98)

If removed, then the second one is eventually fired:

Running simulation 'default_scenario'
java.lang.AssertionError: Already contained  a connection of t121 and t120
        at report.ContactTimesReport.addConnection(ContactTimesReport.java:74)
        at report.ContactTimesReport.hostsConnected(ContactTimesReport.java:56)
        at core.NetworkInterface.notifyConnectionListeners(NetworkInterface.java:413)
        at core.NetworkInterface.connect(NetworkInterface.java:320)
        at interfaces.SimpleBroadcastInterface.connect(SimpleBroadcastInterface.java:59)
        at interfaces.SimpleBroadcastInterface.update(SimpleBroadcastInterface.java:93)
        at core.DTNHost.update(DTNHost.java:343)
        at core.World.updateHosts(World.java:198)
        at core.World.update(World.java:167)
        at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
        at ui.DTNSimUI.start(DTNSimUI.java:77)
        at core.DTNSim.main(DTNSim.java:85)

Not sure why this happens, but I didn't have time to debug this.

Gnuplot version constraint

The use of named blocks ($data << EOD) which is used in src/report/NodeDensityReport.java requires Gnuplot version 5 (see FAQ 4.8).

I guess that should be documented somewhere.

Move project to an automated build tool

Hello,

Would it be helpful to move the project to an automated build tool?

I've started to look at the project for research purposes and I like to have well structured and semi-automated projects to ease my work. As I come from a scala-java background, I've forked the project and reworked it in order to add a dependency management tool. Here are the changes: https://github.com/vicaba/the-one/tree/sbt. See also: https://github.com/vicaba/the-one/blob/sbt/CHANGELOG.md.

I've you like it, I'll issue a pull request.

10 tests fail, but I've not changed almost any line of code. Can anyone confirm if these tests failed before the changes that I've applied?

Thank you,

problem when compiling theONE

Hi there
I when I try to run the ONE version 1.6.0 with dLife routing scheme I get this error and that happen for long time but now I really need that routing, though I did follow the readme file but I skip the Bubble RAP because I couldn't find it.
the error is shown before I even run the simulator and when I run it I get this in the console:
`Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method initialize(DTNHost, List) is undefined for the type MessageRouter

at core.DTNHost.setRouter(DTNHost.java:121)
at core.DTNHost.<init>(DTNHost.java:78)
at core.SimScenario.createHosts(SimScenario.java:425)
at core.SimScenario.<init>(SimScenario.java:171)
at core.SimScenario.getInstance(SimScenario.java:183)
at ui.DTNSimUI.initModel(DTNSimUI.java:93)
at ui.DTNSimUI.start(DTNSimUI.java:76)
at core.DTNSim.main(DTNSim.java:135)

`

Not able to compile: "error: option -extdirs not allowed with target 15"

When tiring to run the compile.bat (on the official release 1.6.0) I get:

error: option -extdirs not allowed with target 15

image

The master branch I get pretty much the same thing:

image

This problem seems similar to #74 but the proposed solution doesn't work or I'm doing something wrong.

What can I do about this? And BTW the last stable release is form 2015 and the master branch seems more or less active any updates coming?

Windows 10
JDK 15.0.1

Possible mistake with World class?

Hi I'm using the latest version of the simulator and while I was trying to import NCCU trace data to the simulator, I kept getting the following error:

~\One>one.bat -b 1 nccu_setting.txt
one.bat -b 1 nccu_setting.txt

~\One>java -Xmx512M -cp target;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim -b 1 nccu_setting.txt 
Run 1/1
Running simulation 'nccu_scenario'
core.SimError: No host for address 110. Address range of 0-14 is valid
        at core.World.getNodeByAddress(World.java:256)
    at input.MessageCreateEvent.processEvent(MessageCreateEvent.java:41)
    at core.World.update(World.java:159)
    at ui.DTNSimTextUI.runSim(DTNSimTextUI.java:29)
    at ui.DTNSimUI.start(DTNSimUI.java:77)
    at core.DTNSim.main(DTNSim.java:85)

---
All done in 0.49s`

And I took a look at the World class and found this at line 255:

    if (address < 0 || address >= hosts.size()) {
        throw new SimError("No host for address " + address + ". Address " +
                "range of 0-" + (hosts.size()-1) + " is valid");
    }

Here, I got confused, because from what I understand, the hosts would be the "nodes" (the NCCU students) and comparing if the address, which I presume to be the coordinate values as integer, is greater than the total number of hosts does not make sense at all to me. Is this how this is supposed to be?

Thanks.

DTN host buffer size is int

Currently buffer size of a node (defined at MessageRouter class) is a 32 bit integer. This might not be enough for some scenarios, so we could use long instead.

A Facebook Group for DTN

I leave a group http://facebook.com/groups/dtnrg Tip to be placed on the list of TheOne of user communities , it is a gurpo for those who use the social network and want to exchange knowledge and experiences with the use of TheOne in their research with DTN , I will be soon starting some studies and would like to have more people to exchange experiences in the use of RPC in NTDs.

Suggestion: Redirect the home page

I think that in order to help incoming users to get more updated and reliable information, it would be important redirect the old home page to the new one.

Since the top ranked result for popular queries like "theone simulator", "one simulator, and "opportunistic simulator" is still the old link, I think redirect it would be helpful to the new users.

Comparison method violates its general contract

I'm getting a weird error occurring when running the simulation with any of the Prophet or MaxProp routers. It appears to happen at random points in the simulation and I cannot spot any discernable pattern.

Full stack trace using ProphetV2Router:

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
	at java.util.TimSort.mergeLo(TimSort.java:777)
	at java.util.TimSort.mergeAt(TimSort.java:514)
	at java.util.TimSort.mergeCollapse(TimSort.java:441)
	at java.util.TimSort.sort(TimSort.java:245)
	at java.util.Arrays.sort(Arrays.java:1512)
	at java.util.ArrayList.sort(ArrayList.java:1454)
	at java.util.Collections.sort(Collections.java:175)
	at routing.ProphetV2Router.tryOtherMessages(ProphetV2Router.java:300)
	at routing.ProphetV2Router.update(ProphetV2Router.java:259)
	at core.DTNHost.update(DTNHost.java:346)
	at core.World.updateHosts(World.java:186)
	at core.World.update(World.java:167)
	at gui.DTNSimGUI.runSim(DTNSimGUI.java:113)
	at ui.DTNSimUI.start(DTNSimUI.java:77)
	at core.DTNSim.main(DTNSim.java:92)

Coloring nodes

Is there a way to color nodes in the gui? I want to color sub-groups created by a router to check its correct implementation.
Alternatively, what is the recommended way to check whether an implementation is correct?

Unit tests seem a bit too complicated as I'd have to access a host's interfaces as well and don't really know where I would have to start with that.

Compilation error on windows 10

Trying compile on windows 10, when I run the ./compile.bat

PS C:\Users\Faris\Desktop\lora\the-one> .\compile.bat

C:\Users\Faris\Desktop\lora\the-one>set targetdir=target

C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target" mkdir target

C:\Users\Faris\Desktop\lora\the-one>javac -sourcepath src -d target -extdirs lib/ src/core/*.java src/movement/*.java src/report/*.java src/routing/*.java src/gui/*.java src/input/*.java src/applications/*.java src/interfaces/*.java
error: option -extdirs not allowed with target 13

C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target\gui\buttonGraphics" (
mkdir target\gui\buttonGraphics
 copy src\gui\buttonGraphics\* target\gui\buttonGraphics\
)

After referring the #74 , changed the compile.bat file line 5 -extdirs to -cp and after that getting more errors.

PS C:\Users\Faris\Desktop\lora\the-one> .\compile.bat

C:\Users\Faris\Desktop\lora\the-one>set targetdir=target 

C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target" mkdir target

C:\Users\Faris\Desktop\lora\the-one>javac -sourcepath src -d target -cp lib/ src/core/*.java src/movement/*.java src/report/*.java src/routing/*.java src/gui/*.java src/input/*.java 
src/applications/*.java src/interfaces/*.java
src\core\DTN2Manager.java:20: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.Bundle;
                             ^
src\core\DTN2Manager.java:21: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
                             ^
src\core\DTN2Manager.java:32: error: cannot find symbol
        private static Map<DTNHost, CLAParser>  CLAs = null;
                                    ^
  symbol:   class CLAParser
  location: class DTN2Manager
src\core\DTN2Manager.java:36: error: cannot find symbol
        private static Map<String, Bundle>              bundles = null;
                                   ^
  symbol:   class Bundle
  location: class DTN2Manager
src\report\DTN2Reporter.java:12: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
                             ^
src\input\DTN2Events.java:8: error: package fi.tkk.netlab.dtn does not exist
import fi.tkk.netlab.dtn.DTNConsoleConnection;
                        ^
src\input\DTN2Events.java:9: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.Bundle;
                             ^
src\input\DTN2Events.java:10: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAInterface;
                             ^
src\input\DTN2Events.java:11: error: package fi.tkk.netlab.dtn.ecla does not exist
import fi.tkk.netlab.dtn.ecla.CLAParser;
                             ^
src\core\DTN2Manager.java:189: error: cannot find symbol
        public static CLAParser getParser(DTNHost host) {
                      ^
  symbol:   class CLAParser
  location: class DTN2Manager
src\core\DTN2Manager.java:212: error: cannot find symbol
        public static void addBundle(String id, Bundle bundle) {
                                                ^
  symbol:   class Bundle
  location: class DTN2Manager
src\core\DTN2Manager.java:221: error: cannot find symbol
        public static Bundle getBundle(String id) {
                      ^
  symbol:   class Bundle
  location: class DTN2Manager
src\input\DTN2Events.java:44: error: cannot find symbol
        private Map<String, Bundle>                     bundle_list;
                            ^
  symbol:   class Bundle
  location: class DTN2Events
src\input\DTN2Events.java:66: error: cannot find symbol
        public class ParserHandler implements CLAInterface {
                                              ^
  symbol:   class CLAInterface
  location: class DTN2Events
src\input\DTN2Events.java:230: error: cannot find symbol
        private void enqueMsg(int from, int to, Bundle bundle) {
                                                ^
  symbol:   class Bundle
  location: class DTN2Events
src\input\DTN2Events.java:243: error: cannot find symbol
        private void regMsg(Bundle bundle) {
                            ^
  symbol:   class Bundle
  location: class DTN2Events
src\input\DTN2Events.java:251: error: cannot find symbol
        private boolean isReg(Bundle bundle) {
                              ^
  symbol:   class Bundle
  location: class DTN2Events
src\input\DTN2Events.java:71: error: cannot find symbol
                private DTNConsoleConnection    console;
                        ^
  symbol:   class DTNConsoleConnection
  location: class DTN2Events.ParserHandler
src\input\DTN2Events.java:92: error: package CLAParser does not exist
                                CLAParser.BundleAttributes attributes) {
                                         ^
src\input\DTN2Events.java:91: error: cannot find symbol
                public BundleTransferReceipt incomingBundle(String location,
                       ^
  symbol:   class BundleTransferReceipt
  location: class DTN2Events.ParserHandler
src\core\DTN2Manager.java:71: error: cannot find symbol
                DTN2Manager.CLAs = new HashMap<DTNHost, CLAParser>();
                                                        ^
  symbol:   class CLAParser
  location: class DTN2Manager
src\core\DTN2Manager.java:73: error: cannot find symbol
                DTN2Manager.bundles = new HashMap<String, Bundle>();
                                                          ^
  symbol:   class Bundle
  location: class DTN2Manager
src\core\DTN2Manager.java:129: error: cannot find symbol
                                CLAParser p;
                                ^
  symbol:   class CLAParser
  location: class DTN2Manager
src\core\DTN2Manager.java:130: error: cannot find symbol
                                p = new CLAParser(dtnd_host, dtnd_port, "ONE");
                                        ^
  symbol:   class CLAParser
  location: class DTN2Manager
src\report\DTN2Reporter.java:74: error: cannot find symbol
                        CLAParser p = DTN2Manager.getParser(to);
                        ^
  symbol:   class CLAParser
  location: class DTN2Reporter
src\input\DTN2Events.java:52: error: cannot find symbol
                this.bundle_list = new HashMap<String, Bundle>();
                                                       ^
  symbol:   class Bundle
  location: class DTN2Events
src\input\DTN2Events.java:95: error: package CLAInterface does not exist
                        CLAInterface.BundleTransferReceipt r =
                                    ^
src\input\DTN2Events.java:96: error: package CLAInterface does not exist
                                new CLAInterface.BundleTransferReceipt();
                                                ^
src\input\DTN2Events.java:129: error: cannot find symbol
                        Bundle bundle = new Bundle(new_f);
                        ^
  symbol:   class Bundle
  location: class DTN2Events.ParserHandler
                        Bundle bundle = new Bundle(new_f);
                                            ^
  symbol:   class Bundle
  location: class DTN2Events.ParserHandler
src\input\DTN2Events.java:169: error: cannot find symbol
                        this.console = new DTNConsoleConnection(this.c_host, this.c_port);
                                           ^
  symbol:   class DTNConsoleConnection
  location: class DTN2Events.ParserHandler
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: src\gui\InfoPanel.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
31 errors

C:\Users\Faris\Desktop\lora\the-one>IF NOT EXIST "target\gui\buttonGraphics" (
mkdir target\gui\buttonGraphics  
 copy src\gui\buttonGraphics\* target\gui\buttonGraphics\ 
) 

Thanks 🙂

Support kiB, MiB and GiB as data units

  1. It is an enhancement.
  2. It is more cosmetic than it is functional.
  3. As a consequence of 1 and 2, it may have a low priority (if accepted).

Add support to kibibytes (1024 bytes), mebibyte (2^20 bytes), gibibyte (2^30 bytes) as information units.
The suffixes could be KiB, MiB, and GiB.

Another nice feature would be StandardEventsReader supporting the new and already existing units (k, M and G).

Examples:

10 C 1 4 6 1k

would create a message with 1000 bytes.

10 C 1 4 6 1kiB

would create a message with 1024 bytes.

MovementListener.initialLocation() does not get called

MovementListener.initialLocation() never gets called.

The reason seems to be that the listeners are invoked in the DTNHost constructor, but at that time the report modules have not yet been created so there are no listeners to invoke (see DTNSimUI.initModel()).

Reproducing

  1. Create a new Report subclass that implements MovementListener.
  2. Add an implementation of initialLocation().
  3. Observe that the implementation is never reached (e.g., break point or debug printing).

getInterface(interfaceNo) starts at 1

So, why does the counter for interfaces of the DTNHost getter getInterface(int interfaceNo) start at 1?
This is super confusing and lead to quite a few errors for me already. Where was this used so far?

MaxPropRouter causes "java.lang.OutOfMemoryError: GC overhead limit exceeded"

I have encountered an issue when running simulations for MaxPropRouter with 500 nodes in the simulator for 21600s or more. The simulation runs for a couple of seconds and then causes following error:
screen shot 2018-03-30 at 01 36 31

Simulator was able to run MaxPropRouter simulations with 100 nodes over 10800s (3h) , 21600s (6h) and 43200s (12h). I use MapBasedMovement and ShortesPathMapBasedMovement as moving models and MaxPropRouter.probSetMaxSize = 15 as only setting for this router model.

I have tried increasing the JVM memory to 1G in "java -Xmx1024M -cp target:lib/ECLA.jar:lib/DTNConsoleConnection.jar core.DTNSim $*", but the result was the same. Neither did affect anything changing the value of probSetMaxSize in range from 5 to 50.

Simulator works fine for the rest of the protocols (Epidemic, Prophet, etc.).

At this point I have no idea how to address this problem.

P.S. simulations executed on Mac OS and Linux.

Error while executing the ProphetV2Router

Hello Sir,
When i am executing the ProphetV2Router file its show the Error :

D:\the-one-1.6.0>java -Xmx512M -cp .;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim
Can't start: error in configuration file(s)
Can't find setting 'ProphetV2Router.secondsInTimeUnit'

Please help me to resolve the error.

natural-disaster-mobility

When i run natural-disaster-mobility, it shows
**
"found: java.lang.string"
"required: int"
"switch(role)"
**
Please solve the issue and guide me.
Thanks

unzip on win10 issue

Hello,
I downloaded the The ONE v1.6.0 on my win10 laptop. for some reason is it not able to unzip the files! also i have tried to download the old 1.4 version and there is issues with the compiling and when i doe compile. bat on the CLI, it just dissapears without starting the ONE platform! , it keep saying could not find the file ! i have followed all the steps for downloading. please need help with that. thanks

1.8JDK Can not run the one.Already compile

the exception:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/java/jdk1.8.0_152/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at java.awt.Toolkit$3.run(Toolkit.java:1636)
at java.awt.Toolkit$3.run(Toolkit.java:1634)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
at java.awt.Toolkit.(Toolkit.java:1668)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
at gui.DTNSimGUI.startGUI(DTNSimGUI.java:38)
at gui.DTNSimGUI.runSim(DTNSimGUI.java:101)
at ui.DTNSimUI.start(DTNSimUI.java:77)
at core.DTNSim.main(DTNSim.java:92)

data set with geographic coordinates

我正在用ONE实现路由协议,我使用的是带坐标位置的外部数据集,数据集中不包含up和down的信息,ONE支持吗?我看到ONE上是可以导入带有地理位置的数据集的,那么节点间什么时候相遇该怎么知道呢,如果是不含地理位置的数据集,里面是包含连接up和down,但是带有地理位置的数据集是不含这个信息的,那么怎么来判断相遇呢,是在什么类文件中有设置通信范围这样的设置吗? 我看到有个ExternalMovement.java和ExternalMovementReader.java,感觉ONE是支持这样的数据集的,但是这样的数据集还需要在节点间建立连接吗?怎么判断节点间相遇了呢?我的理解是我把数据集整理成输入格式的要求,然后是不是在配置文件里用一下就可以了呢,但是这样怎么建立连接呢?
我看到有个ExternalMovement.java和ExternalMovementReader.java,和这两个类也有关吧?ExternalMovement.java中有reader = new ExternalMovementReader(inputFileName);我把整理好的数据集放在根目录下然后把文件名字输入到inputFileName,然后ExternalMovement是在什么地方会被用到其中的方法呢?
I am a student and want to use the-one to implement a routing protocol. I want to use external data set with geographic coordinates.I find the-one support it.But I have some questions about it. So I am writing here to seek some help from you, and I will be appreciated if you could tell me some details of my questions.here are my questions:1)Do I need to establish a connection between nodes? and how to establish a connection or how to judge node meet the other? I am looking forward to your reply.thank you.

problem with compiling the .bat files

Hi! I will really appreciate your help in solving the following problem:
After downloading the ONE 1.6.0 , when I tried compile.bat and one.bat commands from the command prompt got the following error messages-(jdk10.0.1 and jre 10.0.1 are successfully installed and tested in the computer)
1.
H:\the-one-1.6.0>compile.bat

H:\the-one-1.6.0>javac -extdirs lib/ core/*.java
javac: option -extdirs not allowed with target 1.10

H:\the-one-1.6.0>javac -extdirs lib/ movement/*.java
javac: option -extdirs not allowed with target 1.10
............
2.
H:\the-one-1.6.0>one.bat

H:\the-one-1.6.0>java -Xmx512M -cp .;lib/ECLA.jar;lib/DTNConsoleConnection.jar core.DTNSim
Error: Could not find or load main class core.DTNSim
Caused by: java.lang.ClassNotFoundException: core.DTNSim
Thanks in advance.
-Anika

question about RandomWayPoint movement

Hello Sir,
When I set three groups of nodes all use RandomWayPoint movement model, how can I set different area for nodes to move in for different group.
Please help me to solve the preblom.

World size in default config mismatches actual Helsinki city?

The default config file has worldSize set to 4500 by 3400 (meters). However, the actual size of the corresponding street map of Helsinki, as specified in your ICST '09 paper (http://ai2-s2-pdfs.s3.amazonaws.com/904d/bf0173ad1ad4e718d77d142476cfd9430193.pdf), should be about 8300 by 7300 meters.

If I want to use the simulator, what is the correct setting/size of the simulated world?

Setting a different worldSize in config file will not resize the street map correspondingly -- the map (blue lines on white) still looks like 4500 by 3400 in GUI, and all nodes are on streets.

By the way, both the default setting and the paper says simulated cars run at 10-50 km/h, so I assume the unit used in the ONE is actually meter.

Trigring MessageDeleteEvent

it's no clear which parameters i need to write in the config file to trigger an MessageDeleteEvent.
i have tried ::
Events2.class = MessageDeleteEvent
Events2.interval = 10
Events2.size = 500k
Events2.hosts = 2,3
Events2.id=*

but i'm geting :
Can't start: error in configuration file(s)
Class 'input.MessageDeleteEvent' doesn't have a suitable constructor

some HELP?

Evening activity does not get ready for groups with small host counts

If the value of "probGoShoppingAfterWork" is low or "maxGroupSize" is high relative to "nrofHosts" in a group - we end up with nodes that do not return from shopping ;-)
Following is the suggest fix - please feel free to adapt as per your coding conventions.
Note updated the logic issue in my suggested fix on 20th April. Attaching the modified file as well. This may be a short term fix - actual fix may be needed from multiple other files.

--- a/src/movement/EveningActivityMovement.java
+++ b/src/movement/EveningActivityMovement.java
< import core.SimClock;
63d61
< private long nodeJoinFixTime =0; // ABHISHEK FIX
192d189
< nodeJoinFixTime = SimClock.getIntTime(); // ABHISHEK FIX
240,244d236
< long printCount =0;
< /* Abhishek - if the quorum is not being met - some times the evening
< * activity may block in non-ready mode
< * Because of randomization - on small group we may never have quorum
< /
249,264d240
< // ABHISHEK FIX - node join fix time
< if(ready)
< return true;
< double timeDelta = SimClock.getIntTime() - nodeJoinFixTime;
< if(timeDelta > 4
maxWaitTime){
< System.err.println("ABHISHEK FIX FINAL- too long a wait - aborting full list: full-check" + trip.isFull() +
< " allPresent:" + trip.allMembersPresent() + " last join time:" + nodeJoinFixTime);
< ready = true;
<
< } else if(timeDelta > maxWaitTime ){
< printCount++;
< if(printCount < 10 || printCount % 10000==0){
< System.err.println("ABHISHEK FIX AA- too long a wait - aborting full list: full-check" + trip.isFull() +
< " allPresent:" + trip.allMembersPresent() + " last join time:" + nodeJoinFixTime);
< }
< }

GUI crashes if node has no interface

The simulation GUI crashes if a node has no interface specified.

Exception in thread "AWT-EventQueue-0" core.SimError: No such interface: 1 at x0
    at core.DTNHost.getInterface(DTNHost.java:269)
    at core.DTNHost.isRadioActive(DTNHost.java:122)
    at gui.playfield.NodeGraphic.drawHost(NodeGraphic.java:71)
    at gui.playfield.NodeGraphic.draw(NodeGraphic.java:47)
    at gui.playfield.PlayField.paint(PlayField.java:195)

Minimal configuration to reproduce:

Scenario.name = MyScenario
Scenario.endTime = 600
Scenario.updateInterval = 0.1
Scenario.simulateConnections = false
MovementModel.worldSize = 1000,1000
Report.nrofReports = 0
Events.nrof = 0
Scenario.nrofHostGroups = 1
Group1.groupID = x
Group1.nrofHosts = 1
Group1.nrofInterfaces = 0
Group1.movementModel = RandomWalk
Group1.router = PassiveRouter

Expected behavior:

The node is drawn without a radio range, or exception is thrown before launching the simulation.

About sendQueue configuration

I know we are all consenting adults here, but I really think it would be easier to understand, particularly for beginners, the use of names to configure sendQueue.

Thus,
FIFO
fifo
FiFO
fIFO
...
would be mapped to 2

and Random (and variations) would be mapped to 1.

It is a cosmetic modification but I think it would improve the user experience.

Bug:Message Copy error

In Message.java , the function void copyFrom(Message m) copies propeties as
if (m.properties != null) { Set<String> keys = m.properties.keySet(); for (String key : keys) { updateProperty(key, m.getProperty(key)); } }
which add a reference to propeties of the original message instead of a clone of it when a property is such as List<Integer>.

Only one message can be transferred per host and simulation step

Dear community,

If I understand the code correctly, the tryMessagesToConnections() method in the ActiveRouter class returns once the first message has been transferred. The result is that only one message can be transferred in each simulation step for each node.
This leads to problems in my current simulations because I have a large network with many nodes communicating with one central node. Due to the behavior described above, the central node gets highly congested as the number of messages is in the order of magnitude of the simulation steps. I understand, that I could circumvent this issue by lowering the updateInterval, but this slows down the simulation considerably. Hence this is not a feasible solution for me.
Instead, my suggestion is to change the behavior of the tryMessagesToConnections() method to evaluate the updateInterval and the speed of the connection as well as the sizes of the messages sent. Then it could send as many messages in that interval as are theoretically possible to be sent within the respective simulation slot.
As this might change the simulation results rather severely in some cases, I would like to get some feedback to this before issuing a pull request. Does anyone share my opinion that the suggested behavior would be more realistic and thus suitable to be implemented in the ONE?

Cheers,
Keno

[suggestion] send queue and drop queue

Hi,
send queueing and drop queueing are wide researched in DTNs.

IMO it would be helpful and promising, facilitate the development of new send and drop policies for ONE. I think the implementation would be similar to the implementation used in Reports. That is trough the use of reflections.

If you agree, I could dedicate myself to developing and the modifications could be released in a new major version.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.