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 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.8 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:

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 (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, 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 2.5.1 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 an implementation of Bundle Authentication Blocks as defined by the Internet Draft for the Bundle Security Protocol.

POSTELLATION

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

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.

* Java DTN: There is also another Java implementation of DTN, currently being developed by Matt Bradbury. This version is fairly old at this point.

Code (last edited 2012-04-12 12:11:21 by alexmcmahon)