Can I get any code?
The bundle protocol and the Lickider transmission protocol (LTP)
The DTNRG are currently working on two protocols for which there is code publicly available. The bundle protocol is a general overlay network protocol, and is the focus of most of the implementation effort in DTNRG. There is a reference implementation of the bundle protocol which is called DTN2 and is documented below.
The Licklider transmission protocol (LTP - sometimes called the longhaul transmission protocol) is a point-to-point protocol intended for over very high delay links such as those used in deep space communications. There are two LTP implementations available -- one from Ohio University (in Java) and one from Trinity College Dublin, Ireland (in C++).
DTN2
The goal of this implementation is to clearly embody the components of the DTN architecture, while also providing a robust and flexible software framework for experimentation, extension, and real-world deployment.
The DTN2 source code and associated libraries are now hosted on SourceForge.
For released versions, see the SourceForge DTN2 release Page.
The latest release has been tested on Linux (x64 and 64-bit x86) and Mac OS X (x86 and ppc). Limited support has been tested on Solaris, FreeBSD, and Linux on arm.
Before you configure and compile you will need GCC 3.3 or newer, and development packages of TCL 8.3-8.5. Optionally, you may also want BerkeleyDB 4.2-4.7 as a back-end database, and xerces 2.6+ for XML processing.
Mercurial
You can also access the latest ("bleeding edge") version of the code using mercurial.
The various repositories are hosted at http://dtn.hg.sourceforge.net/hgweb/dtn/ and can be cloned using:
% hg clone http://dtn.hg.sourceforge.net/hgweb/dtn/oasys
% hg clone http://dtn.hg.sourceforge.net/hgweb/dtn/DTN2
See UsingMercurial for more information on using mercurial. Please be aware this code may be under frequent developmental changes, so your mileage may vary. For detailed information on using mercurial with the SourceForge repositories please see the mercurial access mechanisms at SourceForge. In addition, if you grab the development copy in this way, any README files or other docs may not be quite up to date.
If you plan on contributing code changes, please read the CONTRIBUTING file that describes the coding conventions for the project. For detailed information on using DTN2 see the DTN2 manual. Doxygen generated files are located here
Please report any bugs to the Bugs tracker.
ION
ION is an implementation of the Bundling Protocol, AMS, and LTP. ION is produced by the Jet Propulsion Laboratory and partially maintained by Ohio University, which also hosts the software distribution site and the support mailing lists. It is written in standard C using a shared memory architecture. Version 1.0 supports UDP as both an LTP and a bundling convergence layer, as well as two TCP convergence layers (simplified-TCP and the Bundle Relay Service). Of these, the UDP convergence layer interoperates with DTN2. ION version 1.0 supports Contact Graph Routing.
Simulation
Waterloo has written the DTNSim2 Simulator based on the java-based simulator (gzip/tar) developed by Sushant Jain (who is now at Google).
There is also a simulator using user mode Linux located here.
Other Implementations
* IBR-DTN: A C++ implementation which aims to be very portable, slim and extensible. It's tested on x86 and MIPS versions of Linux, but should run on every system with OpenWrt.
* Kurtis Heimerl has released an alpha version of a pure python dtn implementation has been released. It's available by doing the following:
Kurtis says: "It has been tested to interoperate with the DTN 2.6 reference implementation, sending and receiving bundles of arbitrary size over the tcpcl. however, it has not been extensively tested, and there are no doubt many bugs. Feel free to find those for me! Also, as it's alpha software, it's not a terribly elegant implementation in places. I hope to remedy that in time. My current work is to port this to the pys60 environment on the Symbian operating system."
* Java BP-RI: A Java implementation of the bundling protocol that is based significantly on the design of DTN2. The BP-RI supports just LTP as a convergence layer, currently, interfacing with the LTP-RI implementation in Java.
* DASM: A DTN implementation for Symbian phones (tested with Nokia Communicators 9300i and 9500). This is an independent implementation tailored to the particular needs of the Symbian OS.
* DTN1: This is a prototype implementation of the DTN architecture, written in C, and tested on both x86 and StrongARM versions of Linux. Please read the top-level README.txt file for details on how to build and use it.
- You can access the code for this version via anonymous CVS:
% cvs -d :pserver:anonymous@code.dtnrg.org:/repository login
% cvs -d :pserver:anonymous@code.dtnrg.org:/repository checkout DTN1
The first code release was accomplished as of 30-Mar-2003 and is available here: dtn-release-0.1.tgz
* Java DTN: There is also another Java implementation of DTN, currently being developed by Matt Bradbury. This version is fairly old at this point.