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. This is the beta release of version DTNME v1.2.0. As such it has only been through internal development testing and has not received any independent verification testing. This version includes updated support appplications, support for BPv6 and BPv7(including BIBE, mTCPCL, and TCPCLv4), and fixes to improve the stability of the BPv6 code. Any unfinished or unused code from DTN2 has been fully removed at this point. This code includes the Bundle Architectural Restaging Daemon (BARD) which is designed to offload bundles to an external storage mechanism to reduce the processing overhead caused by storing a large number of bundles on the main node. Due to the nature of this function it also provides a convenient method to inject and remove bundles from the DTN Network effectively allowing BARD to act as an air gap covergence layer. Compilation / Installation Instructions --------------------------------------- Dependencies libdb-dev g++ automake autotools-dev tk tk-dev tcl tcl-dev libboost-all-dev Building ./step_1_make_gcc_dtnme.sh or step_1_make_clang_dtnme.sh - By default use gcc This script will use gcc or clang to compile dtnme according to the default configuration ./step_2_install_dtnme.sh This script copies all of the binaries and places them in a defined directory structure ./step_3_clean_dtnme.sh This script removes all build files and links so the source can be copied over to a different machine 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/ dtn support applications daemon/ dtn router daemon sources ehsrouter/ specialized external router used MSFC servlib/ dtn router internals |-- bundling bundle management and forwarding logic |-- cmd tcl based command interface |-- contacts |-- conv_layers convergence layers |-- naming endpoint identifier schemes |-- reg local registrations |-- routing bundle routing logic |-- storage persistent storage management third_party/ holds all dependent libraries External Requirements --------------------- gcc/g++ Optional External Packages -------------------------- WolfSSL