This software provides a library of middleware functions with a simple application programming interface, enabling implementation of distributed applications in conformance with the CCSDS AMS (Consultative Committee for Space Data Systems Asynchronous Message Service) specification.

The AMS service, and its protocols, implement an architectural concept under which the modules of mission systems may be designed as if they were to operate in isolation, each one producing and consuming mission information without explicit awareness of which other modules are currently operating. Communication relationships among such modules are selfconfiguring; this tends to minimize complexity in the development and operations of modular data systems.

A system built on this model is a “society” of generally autonomous, inter-operating modules that may fluctuate freely over time in response to changing mission objectives, modules’ functional upgrades, and recovery from individual module failure. The purpose of AMS, then, is to reduce mission cost and risk by providing standard, reusable infrastructure for the exchange of information among data system modules in a manner that is simple to use, highly automated, flexible, robust, scalable, and efficient.

The implementation is designed to spawn multiple threads of AMS functionality under the control of an AMS application program. These threads enable all members of an AMS-based, distributed application to discover one another in real time, subscribe to messages on specific topics, and to publish messages on specific topics. The query/reply (client/server) communication model is also supported.

Message exchange is optionally subject to encryption (to support confidentiality) and authorization. Fault tolerance measures in the discovery protocol minimize the likelihood of overall application failure due to any single operational error anywhere in the system. The multi-threaded design simplifies processing while enabling application nodes to operate at high speeds; linked lists protected by mutex semaphores and condition variables are used for efficient, inter-thread communication. Applications may use a variety of transport protocols underlying AMS itself, including TCP (Transmission Control Protocol), UDP (User Datagram Protocol), and message queues.

This work was done by Scott C. Burleigh of Santa Barbara Applied Research for NASA’s Jet Propulsion Laboratory.

This software is available for commercial licensing. Please contact Daniel Broderick of the California Institute of Technology at This email address is being protected from spambots. You need JavaScript enabled to view it.. NPO-42814



This Brief includes a Technical Support Package (TSP).
Document cover
Asynchronous Message Service Reference Implementation

(reference NPO-42814) is currently available for download from the TSP library.

Don't have an account?



Magazine cover
NASA Tech Briefs Magazine

This article first appeared in the October, 2011 issue of NASA Tech Briefs Magazine (Vol. 35 No. 10).

Read more articles from this issue here.

Read more articles from the archives here.


Overview

The document is a Programmer's Guide for the Asynchronous Message Service (AMS) implementation at the Jet Propulsion Laboratory (JPL), dated August 2010. It outlines the framework and operational principles of AMS, which is designed to facilitate efficient communication among autonomous data system modules in aerospace applications.

AMS operates within a defined structure where a "continuum" represents a closed set of entities that communicate using AMS protocols. Each continuum is identified by a unique name and number, with a special designation for "all known continua." The guide emphasizes the importance of standardization and reusability in the infrastructure to reduce mission costs and risks associated with data exchange.

Key definitions provided in the document include:

  • Application: A data system implementation that utilizes AMS procedures.
  • Authority: An entity responsible for the configuration and operation of an application.
  • Venture: A functioning instance of an application on one or more computers.
  • Message: An octet array exchanged between modules that conveys information relevant to the venture.

The AMS is designed to be flexible, robust, scalable, and efficient, allowing modules to adapt to changing mission objectives and recover from failures. The guide also discusses the concept of message spaces, which are necessary for the operation of AMS, while also highlighting the need to limit message traffic to conserve link resources during inter-continuum communication.

The document includes sections on application development, operations, troubleshooting, and acknowledgments, indicating that the research was conducted under NASA's sponsorship. It also provides contact information for further inquiries related to the technology and its applications.

Overall, the AMS Programmer's Guide serves as a comprehensive resource for developers and engineers involved in aerospace projects, offering insights into the design and implementation of a messaging system that enhances communication efficiency and reliability in complex, autonomous systems.