Can I get any code?
The bundle protocol and the Licklider 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 three LTP implementations available -- one from Ohio University (in Java), one from JPL (in C) and one from Trinity College Dublin, Ireland (in C++).
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 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.8 as a back-end database, and xerces 2.6+ for XML processing.
More documentation for DTN2 can be found on the DTN2 Documentation page.
You can also access the latest ("bleeding edge") version of the code using mercurial.
The various repositories are hosted at SourceForge and can be cloned using:
% 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 http://dtn.hg.sourceforge.net/hgweb/dtn/ 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 (Interplanetary Overlay Network) is an implementation of the Bundle Protocol, LTP, and the CCSDS File Delivery Protocol (CFDP) and Asynchronous Message Service (AMS). The intent of the ION distribution is to support high-speed, small-footprint deployment of DTN in embedded systems such as robotic spacecraft, but it also runs well in more resource-rich environments such as local area networks.
All of ION is written in C, with inter-task communication via shared memory. The distribution includes a simple embedded object database management system, facilities for efficient management of shared memory segments, and a zero-copy objects system. The software is additionally designed for easy porting to POSIX-based operating systems; ION currently runs on various Linux platforms, OS/X, FreeBSD, Solaris, uClibc, VxWorks, RTEMS, and Windows.
ION is a product of the Jet Propulsion Laboratory with important contributions by Ohio University, the Johns Hopkins University Applied Physics Laboratory, and the University of Colorado at Boulder. Ohio University also hosts community support mailing lists for ION.
The ION source code is available as open source from SourceForge at [http://sourceforge.net/projects/ion-dtn]. Version 3.1.2 is now released, including implementations of Contact Graph Routing and several convergence-layer adapters: TCPCL (interoperable with DTN2), UDP (likewise interoperable with DTN2), Bundle Relay Service, simplified TCP, and LTP. This version also includes implementations of Bundle Authentication Blocks, Payload Integrity Blocks, and Payload Confidentiality Block as defined by the Bundle Security Protocol specification RFC 6257. Several experimental features are supported including a multicast implementation, an Aggregate Custody Signal mechanism, an Extended Class of Service extension, and the proposed Bundle Age Extension. Also included is an implementation of Bundle Streaming Service, aimed at enabling DTN to carry real-time audio and video streams in reliable manner.
Postellation is a DTN implementation, running on Windows, MacOSX, Linux and RTEMS. It is packaged for easy installation and instant registration to the dtnbone for end-users. It also includes an http proxy enabling http/https browsing over dtn. Written in C for embedded systems, it also runs on real-time OS such as RTEMS for flight software requirements. Download and try it
IBR-DTN is a C++ implementation of the Bundle Protocol developed at the IBR. IBR-DTN supports the TCP and UDP convergence layers, the Bundle Security Protocol and IPND neighbor discovery specifications. Experimental support for a DHT naming service and a IEEE 802.15.4 convergence layer are included.
IBR-DTN aims to be very portable, and is designed to run on embedded systems using OpenWrt. It has been successfully tested on x86, MIPS and various ARM platforms. Additionally IBR-DTN supports standard x86/x64 Linux distributions, OS X and Android Smartphones. Source code and packages for various distributions are available at the IBR-DTN project page.
The JDTN implementation (in Java) is available from SourceForge and contains a Java-based DTN 'core' that runs on any platform that supports Java, as well as an set of UIs for Android.
There is also a simulator using user mode Linux located here.
* 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:email@example.com:/repository login
% cvs -d :pserver:firstname.lastname@example.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.