Licklider Transmission Protocol (CCSDS 734.1-B) for reliable DTN links
OCaml 94.4%
Dune 1.7%
Other 3.9%
22 1 0

Clone this repository

https://tangled.org/gazagnaire.org/ocaml-ltp https://tangled.org/did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-ltp
git@git.recoil.org:gazagnaire.org/ocaml-ltp git@git.recoil.org:did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-ltp

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

ltp#

Pure OCaml implementation of Licklider Transmission Protocol (RFC 5326) for reliable data delivery over high-delay and disruption-prone links.

Overview#

LTP is designed for deep-space communications where round-trip times can be minutes to hours. It provides selective acknowledgment and retransmission with support for both reliable and unreliable data segments.

Features#

  • SDNV (Self-Delimiting Numeric Value) encoding/decoding
  • Session management with engine/session IDs
  • Data segment types:
    • Red segments - reliable with acknowledgment
    • Green segments - best-effort delivery
  • Control segments:
    • Report segments (acknowledge received ranges)
    • Report-ack segments
    • Cancel segments
  • Checkpoint and report-based flow control

Installation#

opam install ltp

Usage#

open Ltp

(* Create a session ID *)
let session = { originator = 1L; number = 42L }

(* Encode an SDNV value *)
let encoded = encode_sdnv 127L

(* Decode an SDNV value *)
match decode_sdnv encoded 0 with
| Ok (value, _offset) -> Printf.printf "Value: %Ld\n" value
| Error msg -> Printf.printf "Error: %s\n" msg
  • ION - NASA/JPL DTN with LTP
  • µD3TN - Lightweight DTN with LTP support

References#

Licence#

ISC License. See LICENSE.md for details.