DTNMA Reference Tools v2.0.0 - 7.g88e232c
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
Introduction

This documentation is for the DTNMA reference tools application programming interface (API) in the C language and technical discussion of its command line tools and daemons. This is an implementation of DTNMA [4], its Application Management Model (AMM) [6] objects, values, and typing system, Application Resource Identifier (ARI) encoding [5], and Asynchronous Management Protocol (AMP) daemons [3].

The breakdown of this project source and built artifacts are shown below.

DTNMA Tools Artifacts

Command-Line Tools and Daemons

This section gives an overview of the executables built with a default project configuration. Some of these are command-line tools meant to be used either interactively or for batch processing (e.g. the cace_ari tool) and some are usable as headless daemons.

ARI Processing Library and Tool

The processing of encoded ARI values and the associated AMM typing system are built as the stand-alone cace library, which is used by all of the other portions of this project.

The tool cace_ari is for checking encoded ARI values (both URI text form and CBOR binary form) and for converting between the two forms.

More details are described in the CACE Library page.

Reference Agent Library and Bindings

The reference DTNMA Agent (REFDA) (with its default ADM implementations) is built as the refda library and has default daemons which bind it to the following transports:

  • The refda-socket which is a simple binding to Unix Domain Datagram Sockets used to transport AMP messages. This DA is intended to be usable for testing and interoperation with the refdm-socket daemon without needing complex transport parameters.
  • The refda-ion which is a binding to the ION BPv7 API, and is a drop-in replacement to the earlier ION-integrated DTNMA Agent.
  • The refda-stdio which is a binding to Process Standard Input/Output and is intended only as a test DA because it uses the process stdin and stdout for text-form ARI transport. This means that the exchange is not AMP messages and should not be used for interoperability testing.

More details are described in the Reference DTNMA Agent page.

Reference Manager Library and Bindings

The reference DTNMA Manager (REFDM) is built as the refdm library and has default daemons which bind it to the following transports:

  • The refdm-socket which is a simple binding to Unix Domain Datagram Sockets to transport AMP messages. This DA is intended to be usable for testing and interoperation with the refdm-socket daemon without needing complex transport parameters.
  • The refdm-ion which is a binding to the ION BPv7 API, and is a drop-in replacement to the earlier ION-integrated DTNMA Manager.
  • The refdm-proxy which is a binding to AMP Proxy Reliable Datagram Sockets connecting to an associated local AMP proxy daemon. The project contains an simple ion-app-proxy daemon to fulfill that purpose with limited configuration.

Each of the refdm daemons provides a REST API for user/application interaction.

More details are described in the Reference DTNMA Manager page.

Getting Started with the APIs

Details on conventions used by the APIs and expected of new development is defined in the Conventions page.

Depening on what you are trying to implement or integrate with, either the CACE Library, Reference DTNMA Agent, or Reference DTNMA Manager are a starting point for specific top-level APIs.

Build and Runtime Dependencies

The following third party libraries are needed at build time and runtime:

QCBOR : A small CBOR encoder/decoder.

M*LIB : A C11-compatible container library which is type-safe.

timespec : A set of supplemental struct timespec processing functions.

Civetweb : A minimal HTTP server library supporting the REFDM application interface (see Reference DTNMA Manager).

cJSON : A JSON CODEC library supporting the REFDM application interface (see Reference DTNMA Manager).

JPL ION: : A BPv7 Agent implementation with a C-language API for endpoint binding used as REFDA and REFDM transports.

The following are useful for development of new application models:

dtnma-camp : A Python library for automating the registration of ADM implementation. Also available directly from PIP with the package dtnma-camp.

The following are used for testing:

Unity : A C unit test fixture and assertion library.

dtnma-ace : A Python library for processing ARIs and ADMs for built-item testing. Also available directly from PIP with the package dtnma-ace.