Astro~/0.3
** Conformance / Licklider Transmission Protocol * PAGE 04 / 23
** Astro * Conformance
** /conformance/ltp

Licklider Transmission Protocol

PICS proforma: what this package implements, clause by clause.

Conformance Statement for pkg/ltp, RFC 5326

Conformance is claimed against RFC 5326 only. CCSDS 734.1-B-1 profiles that RFC for space links; this implementation contains no profile-specific behavior, so no claim is made against the profile itself, see A1.5.


A1.1 GENERAL INFORMATION

A1.1.1 Identification of PICS

FieldValue
Date of Statement (DD/MM/YYYY)23/08/2026
PICS Serial NumberASTRO-LTP-PICS-001
System Conformance Statement Cross-ReferenceThis document

A1.1.2 Identification of Implementation Under Test (IUT)

FieldValue
Implementation Nameastro/pkg/ltp, with astro/pkg/sdnv
Implementation VersionSee go.mod / latest commit on main
Special ConfigurationReceiverConfig.MaxBlockSize bounds an assembled block; serial number seeds are caller-supplied
Other InformationGo library implementing the LTP segment codecs and caller-pumped sender and receiver session machines. The library owns no goroutines and no clock: every timer is the caller's, matching the shape of pkg/cop's FOP-1.

A1.1.3 Identification of Supplier

FieldValue
SupplierRavi Suhag
Contact Point for QueriesGitHub, github.com/ravisuhag/astro
Implementation Name(s) and Version(s)astro/pkg/ltp, astro/pkg/sdnv (Go packages)
System Name(s)Astro

A1.1.4 Identification of Specification

FieldValue
SpecificationRFC 5326 (Licklider Transmission Protocol, Specification, September 2008). CCSDS 734.1-B-1 profiles this RFC; no conformance to the profile's own requirements is claimed, see A1.5
Have any exceptions been required?Yes [X] No [ ], see A1.5

A1.2 SEGMENT STRUCTURE

FeatureReferenceStatusSupport
Segment headerclause 3.1MY
Version number 0clause 3.1MY: other versions rejected on decode
Segment type flags: CTRL, EXC, Flag 1, Flag 0clause 3.1.1MY
Segment type codes 0 to 15clause 3.1.2MY: codes 5, 6, 10, 11 rejected as undefined
Segment class masks: CP, EORP, EOB, RS, RA, CS, CAS, CR, CARclause 3.1.3MY: exposed as predicates on SegmentType
Session ID: engine ID and session numberclause 3.1MY: both SDNV
Extensions field, counts octetclause 3.1.4MY: 0 to 15 header, 0 to 15 trailer
Extension TLV: tag, SDNV length, valueclause 3.1.4OY
Header extensions before contentclause 3.1.4MY
Trailer extensions after contentclause 3.1.4MY
Self-Delimiting Numeric Valuesclause 1.6 item 20MY: pkg/sdnv, rejects values past 64 bits (ErrOverflow) and encodings past ten octets (ErrTooLong, RFC 6256 clause 3.2 padding included)

A1.3 SEGMENT CONTENT

FeatureReferenceStatusSupport
Data segment: client service ID, offset, lengthclause 3.2.1MY: all SDNV
Checkpoint serial number on checkpoints onlyclause 3.2.1MY: non-checkpoints carry neither serial
Report serial number on checkpointsclause 3.2.1MY: a checkpoint closing a retransmission cycle carries the prompting report's serial; zero when no report prompted it
Checkpoint serial number never zeroclause 3.2.1MY: enforced on encode and decode
Report segment: serials, bounds, claim count, claimsclause 3.2.2OY
Report serial number never zeroclause 3.2.2MY
Claim offsets relative to the lower boundclause 3.2.2MY: ClaimedRanges() converts to block offsets
Claim length at least 1, within the boundsclause 3.2.2MY: validated on encode and decode
Claims in ascending order, non-overlapping, at least oneclause 3.2.2MY: validated on encode and decode; zero-claim reports are neither emitted nor accepted
Report acknowledgment segmentclause 3.2.3OY
Cancel segment reason codeclause 3.2.4OY: codes 0 to 5; 6 to 255 rejected as reserved
Cancel acknowledgment has no contentclause 3.2.5OY

A1.4 SESSION PROCEDURES

FeatureReferenceStatusSupport
Red-part reliable deliveryclause 6MY
Green-part best-effort deliveryclause 6OY
Mixed red and green blocksclause 3.1.1OY: no segment straddles the boundary
Checkpoint at end of red partclause 3.1.1MY
End-of-block flaggingclause 3.1.3MY
Reception reporting on checkpointclause 6.13MY: report upper bound covers the checkpoint's own end even before the EORP arrives
Duplicate checkpoints answered with the same reportclause 6.11MY: deduplicated on checkpoint serial; the original report is resent
Asynchronous reception reportingclause 6.2OY: RequestReport, checkpoint serial zero
Retransmission of unclaimed rangesclause 6.13MY
Retransmission cycle ends with a checkpointclause 6.9MY: the cycle's last segment is a checkpoint wherever it sits in the block
Report acknowledgmentclause 6.14MY: every report acknowledged, including the final one after the sender's session closes
Receiver closure gated on report acknowledgmentclause 6.11, clause 6.16MY: the session stays open until every report is acknowledged; an all-green session closes on the green EOB
Miscolored block detectionclause 3.2.4MY: cancels with reason MISCOLORED
Session cancellation from either endclause 6.19, clause 6.20OY
Cancel acknowledgmentclause 6.21MY: the sender acknowledges a cancel from the receiver, and the receiver one from the sender
Segments for other sessions ignoredclause 6MY: filtered on session ID

A1.5 EXCEPTIONS AND UNSUPPORTED FEATURES

FeatureReferenceSupportRationale
CCSDS 734.1-B-1 profile requirements734.1-B-1NThe implementation follows RFC 5326 as written and contains no profile-specific behavior (managed parameters, profile PICS items). Conformance to the Blue Book's own requirements is therefore not claimed.
Timers: checkpoint, report, cancel retransmissionclause 6.7, clause 6.8N by designThe library owns no clock. Exposed as ResendCheckpoint and RequestReport for the caller's scheduler to drive. On a light-hour link only the mission can pick a timeout.
Session multiplexingclause 6NOne Sender and one Receiver per session; managing many is the caller's.
Authentication extensionclause 3.1.4, [LTPEXT]PThe TLV encodes and decodes; no cryptographic processing.
Cookie extensionclause 3.1.4, [LTPEXT]PSame.
Random serial number generationclause 3.2.1, clause 3.2.2N by designThe spec says the first serials must be random. The caller supplies them; a zero is rejected. A library should not pick a mission's randomness source.
Deferred transmission and link-state cuesclause 6.5NScheduling policy the caller owns.
CLI subcommands-NA follow-up once the API settles.

A1.6 IMPLEMENTATION LIMITS

LimitValueSource
SDNV value range0 to 2^64 - 1pkg/sdnv, 10 octets maximum
Header extensions per segment154-bit count, clause 3.1.4
Trailer extensions per segment154-bit count, clause 3.1.4
Assembled block sizeMaxBlockSize, default 64 MiBImplementation choice; RFC 5326 states no ceiling, but a segment offset is an SDNV reaching 2^64 and would otherwise size an allocation
Cancel reason codes accepted0 to 5clause 3.2.4; 6 to 255 reserved