= 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 ==== {{{ #!html }}} 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 [https://sites.google.com/site/dtnresgroup/ 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. {{{ #!html
Note
Source: Delay and Disruption Tolerant Networks (DTNs): A Tutorial.
}}} == 2. Setting up the environment == {{{ #!html
  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. ^([#hn note: change for your actual username])^ {{{ mkdir /home//dtn cp /local/DTN2/daemon/dtn.conf /home//dtn/dtn.conf }}} We will edit the configuration file we've just created. {{{ #!html
  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://george.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 [https://sites.google.com/site/dtnresgroup/ dtnrg]. == 4. Wrap-up == Your topology is able to send and receive bundles.