This software is an implementation of
the Licklider Transmission Protocol
(LTP), a communications protocol intended to support the Bundle Protocol
in Delay-Tolerant Network (DTN) operations.
LTP is designed to provide retransmission-
based reliability over links characterized
by extremely long message
round-trip times and/or frequent interruptions
in connectivity. Communication
in interplanetary space is the most
prominent example of this sort of environment,
and LTP is principally aimed at
supporting “long-haul” reliable transmission
over deep-space RF links.
Like any reliable transport service
employing ARQ (Automatic Repeat
reQuests), LTP is “stateful.” In order to
assure the reception of a block of data
it has sent, LTP must retain for possible
retransmission all portions of that block
which might not have been received
yet. In order to do so, it must keep track
of which portions of the block are
known to have been received so far, and
which are not, together with any additional
information needed for purposes
of retransmitting part, or all, of the
block. Long round-trip times mean substantial
delay between the transmission
of a block of data and the reception of
an acknowledgement from the block’s
destination, signaling arrival of the
block. If LTP postponed transmission
of additional blocks of data until it
received acknowledgement of the
arrival of all prior blocks, valuable
opportunities to use what little deep
space transmission bandwidth is available
would be forever lost.
For this reason, LTP is based in part on a notion of massive state retention. Any number of requested transmission conversations (sessions) may be concurrently “in flight” at various displacements along the link between two LTP engines, and the LTP engines must necessarily retain transmission status and retransmission resources for all of them. Moreover, if any of the data of a given block are lost en route, it will be necessary to retain the state of that transmission during an additional round trip while the lost data are retransmitted; even multiple retransmission cycles may be necessary.
LTP’s possible multiplicity of sessions per association makes it necessary for each segment of application data to include an additional demultiplexing token: a “session ID” that uniquely identifies the session in which the segment was issued and, implicitly, the block of data being conveyed by this session.
This software comprises a prototype implementation developed by Johns Hopkins University APL in cooperation with JPL, together with adaptations that improve the robustness, correctness, and operability of that implementation.
This work was done by Scott C. Burleigh
and Chris Krupiarz of JHU/APL for
NASA’s Jet Propulsion Laboratory.
This Brief includes a Technical Support Package (TSP).
Licklider Transmission Protocol Implementation (reference NPO-45208) is currently available for download from the TSP library.
Please Login at the top of the page to download.