Friday, January 1, 2016

Happy New Year

A very happy and prosperous new year to you all! Hope you had a great year in 2015, and wish you have a still better one in 2016! May you do excellent research in this year, and may your citations increase manifold :D

Saturday, November 28, 2015

Book on Opportunistic Mobile Networks

Opportunistic Mobile Networks: Advances and Applications is our forthcoming book to be published by Springer in 2016. This book is a result of our years of experience in research and development in this domain. #TheOMNBook, if you may say, deals with fundamental challenges in OMNs as well as contemporary research issues. These include, but not limited to, routing, mobility, cooperation, heterogeneity, and emotions. An entire chapter is dedicated to protocol development and testing using the ONE simulator.

#TheOMNBook is shaped in a way to cater both beginning and advanced level readers. Contextual examples are provided to ensure better understanding of related topics. The chapters come with plenty of hands-on exercises. Several illustrations and other visual elements are used to make reading the book a pleasant experience. Whether you are a seasoned researcher looking for novel cross-dimensional ideas or a beginner to this field, give #TheOMNBook a try!

Learn more about our book at our website. Also, subscribe to the email list and get notified about the book's publication and other updates.

Friday, July 17, 2015

IllegalArgumentException in Simulations

At times, users have reported of runtime exceptions while running a simulation that uses PRoPHET. The error signature looks like the following.

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeHi(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.ArrayList.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)

It may be noted that the default sorting algorithm has changed since Java 7 — rather than Merge sort, Tim sort is now used by default. However, it seems like it is possible to override the default sorting algorithm in Java using the following argument to the JVM.


The execution command in the (or one.bat) file should be updated with the above argument to something like this:

java -Xmx512M -Djava.util.Arrays.useLegacyMergeSort=true -cp .:lib/ECLA.jar:lib/DTNConsoleConnection.jar core.DTNSim $*

I, however, do not have a Java 7 installation, and therefore, could not test it. Users facing the aforementioned runtime exception can try it out and share their experiences here.

Saturday, June 6, 2015

Specifying Source and Destination of Messages

One of the frequently asked questions in the community is how to specify which particular nodes would act as source(s) and destination(s) of the messages created in the ONE simulator. The simulator, in fact, provides a pair of settings (shown below in bold face) aimed for this particular purpose.

Let us consider that there are $n + 1$ nodes in an OMN.  Further, let the nodes with addresses from $x$ to $y$, both inclusive, would create messages. The nodes in the range $w$ to $z$, both inclusive, would be the destinations of those messages, where $0 \le x \le y \le n$, and $0 \le w \le z \le n$. Then, the corresponding simulation scenario can be configured as follows.

## Message creation parameters

# How many event generators
Events.nrof = 1
# Class of the first event generator
Events1.class = MessageEventGenerator
# (Following settings are specific for the MessageEventGenerator class)
# Creation interval in seconds (one new message every 25 to 35 seconds)
Events1.interval = 25,35
# Message sizes (500kB - 1MB)
Events1.size = 500k,1M
# The source nodes -- nodes that create the messages
# Lower bound is inclusive; upper bound is exclusive
Events1.hosts = x, y+1
# The destinations of the messages created
# Lower bound is inclusive; upper bound is exclusive
Events1.tohosts = w, z+1
 # Message ID prefix
Events1.prefix = M

Note that the expressions $y + 1$ and $z+ 1$ should be replaced with their actual values. For example, if nodes $10$ to $20$ would create messages (both inclusive), and node $25$ is their destination, then the settings would like the following.

Events1.hosts = 10, 21
Events1.tohosts = 25, 26

Update: An alternative approach toward message creation is discussed in Juliano's blog.

Sunday, March 22, 2015

50K Views of the DTN Blog

The DTN blog recently reached a milestone — it crossed 50,000 page views!

The journey of this blog — and that of mine with the ONE simulator — started in 2011. Back in those days, old-timers would recall, there were not much resources available on the ONE simulator. After spending some time with it, I was finally able to gain some understanding about its functionality and work flow. I realized that a short how-to document might benefit others.

What started as a humble effort to provide a quick tutorial on the ONE simulator soon became a popular resource in the community over the years. I'm thankful to all the users of the ONE mailing list who continuously kept me motivated to enrich this blog.

I took this opportunity to prepare an infographic on the usage of the DTN blog based on the statistics provided by Blogger. It has not been possible to include all statistics in the infographic. A few interesting observations are noted below.
  • Undoubtedly, the ONE tutorial is the most popular entry in this blog.
  • Among the different search keywords, the phrase "one simulator" has the highest frequency.
  • Strangely, 68% traffic comes from Windows machines! Frankly, I was not expecting that. Linux and Macintosh are at a tie with each driving 11% traffic.

Hope that in the coming years I could add more useful content to this blog. Keep reading!

Finally, thanks to all of you, once again, for your motivation and support that helps the DTN blog stay alive.

View the above inforgraphic in details.