Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
DTN Marshal Enterprise Implementation ============================ This is the Delay Tolerant Networking reference implementation managed by Marshal Space Flight Center. Please bear with us as we get this repo up and running. We have worked hard to clean up the code to remove unused or half finsihed classes from the original DTN2 implementation in an attempt to stabilize the code. It is expected that with v0.1 there will be some things that we missed, but should be caught by the time we reach v1.0. See the file STATUS for an overview of the state of the code, particularly in reference to the various internet drafts and (someday) RFCs that describe the bundling protocol. Also, the file RELEASE-NOTES describes major changes in each release. This implementation is based on DTN2, but also includes all the changes that Marshal Space Flight Center has made over the years. As such intermediary version DTNME v0.1 will include some things that will not be in the final version DTNME v1.0 Compilation / Installation Instructions --------------------------------------- Dependencies libdb-dev g++ automake autotools-dev tk tk-dev tcl tcl-dev libssl-dev <core> can be replaced with the number of cores you would like to use to in conjunction with the make -j option to try to speed up the build process. First Time Building ./init_dtnme.sh <cores> Subsequent Times Building ./make_dtnme.sh <cores> Installing ./install_dtnme.sh <Desired Installation Directory> Note that by default, the configure script will also run configure inside the oasys/ subdirectory. Note that if you need to make changes to the configure.ac script or one of the helper scripts in aclocal/*.ac, run make_dtnme.sh to recreate configure and then check if both your changes as well as the newly generated configure script are ready. Reporting Bugs / Other Help --------------------------- A bug tracking system is in place. Please direct bug reports to https://github.com/nasa/DTNME. DTNME Directory Structure ------------------------ applib/ application interface library and ipc layer apps/ example dtn applications daemon/ dtn router daemon sources 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 |-- 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 --------------------- oasys-1.3.0+ (see Note - Oasys) gcc/g++ Optional External Packages -------------------------- bonjour Optional Internal Packages -------------------------- NORM convergence layer support Bundle Security Protocol support (see Note BSP) LTP convergence layer support via TCD's LTPlib Internet Draft Compliant IP Neighbor Discovery (see README.IPND) Note - Oasys -------------------------- Before compiling DTNME please compile Oasys-1.3.0+ (must be installed or located in DTNME or ../). Support for the following DTNME options should be specified when configuring oasys specify location / support of: Python tcl google perftools expat xerces-c xsd tool Berkeley DB mysql postgres compile with or without support for: bluetooth zlib tclreadline profiling google profiling assembly-based atomic functions enable or disable: oasys debugging oasys memory debugging oasys lock debugging oasys optimization Note - 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 http://www.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 you 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 LDFLAGS="-Wl,-search_paths_first" Note that the quotes are required for the LDFLAGS argument.