Within the space community, there is a need to exchange a wide variety of data between partner organizations. The Framework software library can be used to exchange any type of data between partners. It provides these core capabilities:
- It allows a client and server to establish a trusted relationship.
- Once trust is established, it allows the client to request the transfer of a specific type of data.
- Once the server accepts the client’s request, it allows data to be transferred between the client and server.
This software library defines and implements a protocol that includes a set of message types, message formats, and rules for using the messages. It is a foundation on which higher-layer protocols are built. Each higher-layer protocol defines a specific type of data to be transferred. The name of the higher-layer protocol is part of the client’s request, telling the server what type of data is to be sent or received. This software library makes use of the Transport Control Protocol (tcp) to provide reliable delivery of its messages.
This software library also provides optional capabilities. It allows the client to control the server by setting configuration parameters, executing directives, requesting notification of events of interest, and requesting status reports. It defines the messages required to provide the optional capabilities, but does not specify the configuration parameters, directives, events, or content of status reports. Each higher-layer protocol specifies the details for the optional capabilities that it makes use of (e.g., if it uses the directive capability, then it defines the available directives).
In use, both the client and server build an application around the Framework software library. The messages defined within the Framework make extensive use of plain-text formats and support the embedding of opaque/binary data. The use of plaintext message formats allows an application built on the Framework software library to be validated by running a standard Linux utility (such as ‘netcat’) and typing simple text strings at the keyboard to simulate the partner application.
Higher-layer protocols have been defined for the transfer of several different types of data. Each of the higherlayer protocols has been successfully implemented by adding a small amount of source code around the Framework software library.