wiki:HowTo/DelayTolerantNetworking

Version 4 (modified by tteixeir@bbn.com, 3 years ago) (diff)

--

Delay and Disruption Tolerant Networking

1. Introduction

Current Internet protocols work well in well-connected and low latency networks; however, not all scenarios experience those characteristics. For instance, when a mobile node moves out of the communication range of a base station and back in, the connection should be re-established. Another example is deep space communication, where the RTT between Mars rovers and Earth is in the order of ten minutes, making an ordinary TCP connection to time out. Below we present a list of possible uses for DTN, but not limited to.

Applications

  • Interplanetary Overlay Networks (IPN)
  • Rural Networks
  • Underwater Acoustic Communication
  • DIL Tactical Networks
  • Mobile Ad hoc Networks (MANET)
  • Vehicular Ad hoc Networks (VANET)
  • Disaster response

The goal of this instructions is to get the reader familiar with the concepts of DTN and to provide a stepping stone towards your DTN experiments. We provide an image with the DTN2 software installed. The VMs are capable of sending and receiving bundles (very large packets, usually in the order of GB, with very large time-out).

Delay vs. Disruption

DTN is commonly referred to as Delay Tolerant Networking or Disruption Tolerant Networking, depending on the application. The figure below depicts the two concepts.

Note
Source: Delay and Disruption Tolerant Networks (DTNs): A Tutorial.

2. Setting up the environment

  1. When creating your topology, please select the following image using the URL (all racks) or URN (Stanford rack). If you are using Jacks, copy and paste the URL into the Disk Image field.
    URN: urn:publicid:IDN+instageni.stanford.edu+image+ch-geni-net:dtnnode
    URL: https://www.instageni.stanford.edu/image_metadata.php?uuid=189d0191-4ac8-11e6-8cfa-000000000000
Note
Using a custom image.

3. Running an experiment

Make your dtn directory and copy the configuration file. (note: change <your_user> for your actual username)

mkdir /home/<your_user>/dtn
cp /local/DTN2/daemon/dtn.conf /home/<your_user>/dtn/dtn.conf

We will edit the configuration file we've just created.

  1. Set the directory to be used for bundle payload files
  2. payloaddir to /home/<your_user>/dtn/bundles

  3. Set the directory to be used for database files
  4. dbdir to /home/<your_user>/dtn/db

  5. Create a route to the deamon
  6. route local_eid dtn://<node_name>.dtn

  7. Interfaces
  8. By default, interfaces listen on port 4556. If you wish to use a different port you can override by using the local_port=<port_#> argument.

  9. Links
  10. link add link_name ip address[:port number] ONDEMAND tcp

  11. Route
  12. route add dtn://<remote_node_name>.dtn/* link_tcp

  13. Save and quit the configuration file

  14. Start the database
  15. $ daemon/dtnd -c /home/fred/dtn/dtn.conf --init-db

  16. Run the DTN daemon
  17. $ daemon/dtnd -c /home/fred/dtn/dtn.conf -l info

  18. Checking connectivity using DTN-Ping
  19. $ ./dtnping localhost

If you would like a more extensive documentation, please refer to the documentation on /local/DTN2/doc/manual or online at dtnrg.

4. Wrap-up

Your topology is able to send and receive bundles.