The JAS Reliable Data Delivery Protocol (JRDDP) is a reliable packet transmission protocol that can be used to send messages between applications over a SpaceWire data link. It is based on a protocol created by the National Aeronautics and Space Administration (NASA) at the Goddard Spaceflight Center in Greenbelt, Maryland, for the Geostationary Operational Environment Satellite known as GOES-R RDDP (GRDDP).
JRDDP provides a number of features that are useful for communication in a network. It provides a retransmission capability in the case of corrupt or missing data. It provides a segmentation capability to promote fairness between all applications needing to communicate on the network. And, it provides the ability to send multiple types of data across a SpaceWire network. An optional secondary header can be used by projects to help further characterize the data that is being transported and to aid in the delivery of the data to applications. This allows any type of application specific data to be transported with JRDDP.
The JRDDP protocol consists of essentially two Transport End Points (TEPs), a sender and a receiver. The sender accepts data from a user application, segments it into smaller pieces in accordance with the Maximum Transmission Unit (MTU) of SpaceWire, packetizes it for transmission, and then sends it over the data link. Transmission includes a closed loop acknowledgement packet that is returned to the sender to confirm correct delivery of the packet to the remote application. The receiver accepts SpaceWire packets read from the network and reassembles them to create the original data message. Once reassembled, the data is delivered to the receiving application in the identical form as originally sent. If any errors occur in this transmission, timers will expire on the transmission side, and the sender will try to resend the data for a user definable number of times. If the sender is still unable to send the data, the link will be reset and the software will try to reestablish the connection.
JRDDP is defined in more detail in the Communication Specification.