Download this if you want a zip file containing my opportunistic routing protocols and example scenarios.

This page contains datasets of encounters logged using mobile wireless devices in different reality mining experiments.  Original encounter datasets downloaded from CRAWDAD have been converted to the ONE StandardEventsReader format. Please quote the original authors when using these datasets:


An encounter time between two mobile wireless devices (e.g. A and B) can be defined simply as "the time when device A becomes aware of device B". Also note that the time device A becomes aware of device B may be different from the time when device B discovers device A. Encounters are asynchronous. However, using the technique described later on this page this encounter information will be used to simulate synchronous connections.

Thanks to Tristan Henderson and Iain Parris from St Andrews for helping me understand the LocShare issue. As location sensors in that experiment were used when the accelerometer detected movement, the end time of some encounters may not have been detected correctly, hence the 10 seconds.

I should point out the accuracy of the end time of encounters is potentially different in ALL of these data-sets. It really depends on how the encounters were logged. So you should check individual data-sets and their respective papers for this information. For example, if encounters are logged using consecutive neighbour discovery requests which happen every 120 seconds, then the actual end to an encounter may not be spotted for another 120 seconds.

Furthermore, if the interval used to probe for nearby devices using neighbour discovery requests is very long (e.g. at least 60 seconds in many of the Bluetooth experiments), some potential encounters will not be logged at all. I wrote a paper on this issue which you might find interesting.


Thanks to Ari Keränen who posted these instructions to the ONE simulator mailing list some time ago. I've mostly just copied those instructions here so you can get started without asking on the mailing list.

These encounter datasets have been converted to the ONE StandardEventsReader format (simulationTime CONN node1 node2 up-or-down), e.g.,

974 CONN 12 7 up
1558 CONN 12 7 down

If you want to convert your own traces then the toolkit/ script might help to get you started.

Using the encounter traces in your own simulations

This is important. Before you start be aware that this method will create SYNCHRONOUS CONNECTIONS between devices in the simulator, not asynchronous encounters.

To use these encounter traces you should do something like the following:

  1. Copy the uncompressed files to your the ONE simulator directory. To keep things clean I usually put them in a new folder called traces.
  2. Write your simulation configuration file as normal, with the following important additions:
Scenario.simulateConnections = false
Group.movementModel = StationaryMovement
Group.nodeLocation = 0,1

Then you can use the ExternalEventsQueue to read in the connection information, e.g.,

Events.nrof = 1
Events1.class = ExternalEventsQueue
Events1.filePath = <<directory containing the trace file>>/mytracefile.txt

Note: if you want to also use the provided message generation classes with the external encounter traces then you can add another event to your simulation, e.g.,

Events.nrof = 2
Events1.class = StandardEventsReader
Events1.filePath = <<directory containing the trace file>>/mytracefile.txt

Events2.class = MessageEventGenerator
# change interval to have more or less messages, see javadocs for more information.
Events2.interval = 30,40
Events2.size = 1k
# range of message source/destination addresses
Events2.hosts = <<min node ID>>,<<max node ID>>
Events2.prefix = M

Depending how big your trace file is and how much memory you have, you may also want to play around with the nrofPreload setting.