Compiling DTN2

Compilation / Installation Instructions

---------------------------------------

At the moment, DTN2 comes in source form only. Before you can install it and start using it, you need to compile it.

On Unix

First, download DTN2 and ensure it has met all requirements. For released versions, see the SourceForge DTN2 release Page and unpack the release.

$ gunzip -c DTN2-X.Y.Z.tgz | tar xvf -

For the latest ("bleeding edge") version of the code see the section on Mercurial

Next, configure and compile DTN2: (the -C argument to configure enables the cache which speeds up the process)

$ cd DTN2
$ sh configure -C
$ make

Note that by default, the configure script will also run configure inside the oasys/ subdirectory. The -C argument enables the autoconf variable cache, which speeds up configuration.

Note that if you need to make changes to the configure.ac script or one of the helper scripts in aclocal/*.ac, run build-configure.sh to recreate configure and then check in both your changes as well as the newly generated configure script.

If you just want to play with DTN2 to learn how it works, you can stop here. You can use all the programs as a regular user, with them in the source code directories. There's no need to do a full install into the public part of the filesystem. However, if you are deploying DTN2, you'll want to take a look at the tools/install.sh script. You might want to customize it, as it currently puts the files into /usr, and some people prefer to put files in /usr/local.

Mercurial

You can also access the latest ("bleeding edge") version of the code using mercurial. The various repositories are hosted at the DTNRG SourceForge repositories 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 Using Mercurial 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. 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.

Please report any bugs to the Bugs tracker.

Getting Started

---------------

A good place to start for playing around with DTN is to look at the manual and tutorials (see doc/manual/index.html). This set of documentation explains some of the configuration and applications. If you find omissions or errors, please feel free to post updates and corrections to dtn-users@mailman.dtnrg.org.

Reporting Bugs / Other Help

---------------------------

A bug tracking system is in place. Please direct bug reports to and direct questions to dtn-bugs@mailman.dtnrg.org.

DTN2 Directory Structure

------------------------

applib/		    application interface library and ipc layer
|-- perl	    Perl interface adaptor
|-- python	    Python interface adaptor
|-- tcl		    TCL interaface adaptor
apps/		    example dtn applications
doc/		    documentation
daemon/		    dtn router daemon sources
ideas/		    temporary code idea repository
servlib/	    dtn router internals
|-- bundling	    bundle management and forwarding logic
|-- cmd		    tcl based command interface
|-- contacts
|-- conv_layers	    convergence layers
|-- discovery
|-- gcm
|-- naming	    endpoint identifier schemes
|-- prophet	    prophet router 
|-- reg		    local registrations
|-- routing	    bundle routing logic
|-- security	    bundle security protocol
|-- session
`-- storage	    persistent storage management
sim/		    simulation framework
test/		    unit tests and other test files
test-utils/	    test scripts and utilities

External Requirements

---------------------

Optional External Packages

--------------------------

Optional Internal Packages

--------------------------

Note - Oasys/

--------------------------

Before compiling DTN2 please compile Oasys-1.3.0+ (must be installed or located in DTN2 or ../). For released versions, see the SourceForge DTN2 release Page and unpack the release.

$ gunzip -c oasys-X.Y.Z.tgz | tar xvf -

For the latest ("bleeding edge") version of the code see the section on Mercurial

Next, configure and compile oasys:

$ cd oasys (or oasys-X.Y.Z)
$ sh configure
$ make

Support for the following DTN2 options should be specified when configuring oasys

specify location / support of:

compile with or without support for:

enable or disable:

Installation of BSP

--------------------------

The standard ciphersuites require, amongst other things, an implementation of sha-256 message digest algorithm.

The DTN reference code uses OpenSSL for cryptographic and related functions. Unfortunately, some versions of OpenSSL do not include sha-256.

The "configure" process checks for the availability of sha-256 and provides an error if it is not found.

If your system's OpenSSL does not have sha-256 then you can either upgrade it or build and use a local version of OpenSSL. OpenSSL can be obtained from openssl.org

OpenSSL 0.9.8 version include sha-256 by default. If your system uses version 0.9.7 and you do not wish to upgrade then you can enable sha-256 in later versions of 0.9.7, such as 0.9.7l and 0.9.7m. To enable sha-256, specify "fips" when running "Configure".

If you wish to leave your system installation untouched and build against a local version, then configure dtn using ./configure --with-bsp --with-openssl=/path/to/openssl

Mac OS X note: for Mac OS X users ONLY. If you build dtn against a local OpenSSL using "--with-openssl=/path/to/openssl" you MUST also specify with it LDFLAGS="-Wl,-search_paths_first". The configuration for OS X users would then be ./configure --with-bsp --with-openssl=/path/to/openssl LDFL

Installation of norm

--------------------------

Please see the norm installation instructions.

On Windows

DTN2 does not yet work as a native Windows application. It might, however, work with the Cygwin environment.

Install Cygwin

The first step is to install Cygwin on your computer. The best way to do this is to download setup.exe from their website. We suggest storing it on your computer in a new directory you make named c:\cygwin\download.

Start setup.exe and choose "Install from Internet". (Always think carefully before running an executeable you downloaded from the Internet, even if a nice manual like this told you to do it! Is your virus checker running? Is it up to date? Did the file come from the website you think it did?) Use the default root directory, c:\cygwin. Make the "Local Package Directory" c:\cygwin\download. Cygwin will ask you to choose a mirror, so choose one that is close to you on the Internet. It will then ask you to "Select Packages". The defaults here are pretty good, but you need to make a few changes:

Continue with the installation. When it is done, you'll have a working Cygwin installation and be ready to proceed. If you are asked to reboot, please do so. This ensures the correct version of Cygwin will be used.

Compile using Cygwin

Once you have installed Cygwin, you'll have a new item in your Start -> All Programs menu called Cygwin, and inside that, one called Bash. When you select it, you get a bash shell, which is like a CMD window, only cooler. You start out in your home directory, which in Cygwin is /home/$user, but in Windows, it is c:\cygwin\home\$user. Now that you have a Unix-like window, follow the Unix instructions above. Cygwin comes with CVS, so you can even use CVS to fetch the source code, as described above.