This software package contains tools related to the Delay-Tolerant Networking Management Architecture (DTNMA), specifically an implementation of the DTNMA Agent and Manager.
The current tools are based on the following specifications:
:warning: These documents are not published standards and are subject to change over time as the standards are developed and finalized.
This project uses the CMake and Ninja build systems and relies on a few third-party commercial, off-the-shelf (COTS) libraries to build and run properly.
To perform a basic build and installation, including for dependencies, the following packages must be installed. This list is generated for Ubuntu but similar ones exist for other major OSes.
cmake
ninja-build
ruby
build-essential
autoconf
libtool
civetweb
libcivetweb-dev
libssl-dev
libcjson-dev
To use the systemd wrapper utility around the executables, also install the PIP package
systemd-python
Once dependencies are installed, the following scripts can be run to build and test the project:
./prep.sh
./build.sh check
After the build is successful, the following will install to a local prefix path ($PWD/testroot/usr
):
./build.sh install
For further details, see the example in testenv/Dockerfile, which builds a stand-alone test environment container image, along with the other files in testenv
.
The example agent and manager both rely on ION for message transport, so a prerequisite for both is a running ION BPA instance.
An example of all of this, including the use of systemd
scripts, is under the testenv directory.
To run the integrated test environment, the docker engine and compose must be installed per the Docker installation instructions and typically the user will need to be added to the docker
system group for access.
The installation can be validated by the ability to run simple introspection commands like docker ps
and see a successful result.
Once that is done, the images can be built and containers started with:
./testenv/start.sh
A checkout test can be run to ensure services are running and round-trip AMP control-to-report loop is closed with:
./testenv/check.sh
Finally, after test anything in the containers is finished they can be stopped and cleaned up with:
./testenv/stop.sh
As both a demonstration and a useful test fixture for AMP and ADMs, a stand-alone Agent which uses stdio (stdin
for commands and stdout
for reporting) with hex-encoded AMP messages is included as the stdio_agent.
This provides a minimum implementation of an Agent executable without requriring a specific underlying transport for AMP messages.
This is not a recommended way to use AMP in a networked environemnt but makes it easier to do things like exercising the Agent in a simple test fixture like what is done with test_stdio_agent.py.
The wiki for this project contains additional details outside of the source and API documentation, and the issue tracker for this project is used for defect reports and enhancement requests. Additional details are in the Contributing document.
See the separate Contributing document for details on contributing to this project.
Original authors of the DTNMA Agent and Manager within the NASA ION project are Ed Birrane, David Linko, Sarah Heiner.
This project uses the Apache-2.0 license.