Skip to content

Protocol coverage

Space CCSDS is the link component of the Parsimoni Platform: an OCaml implementation of the CCSDS and delay-tolerant networking protocols that carry releases, commands, and results between a node and its ground segment.

Coverage

ProtocolStandardStatusTested by
Space PacketCCSDS 133.0-B-2ImplementedFuzzing
TM Space Data LinkCCSDS 132.0-B-3ImplementedFuzzing
TC Space Data LinkCCSDS 232.0-B-4ImplementedFuzzing
AOS Space Data LinkCCSDS 732.0-B-4ImplementedFuzzing
USLPCCSDS 732.1-B-3ImplementedFuzzing
COP-1 (FOP and FARM)CCSDS 232.1-B-2ImplementedFuzzing
SDLSCCSDS 355.0-B-2ImplementedFuzzing
CFDP Class 1 and 2CCSDS 727.0-B-5ImplementedFuzzing, interoperability
SLE (RAF, RCF, CLTU, FSP, ROCF, ISP1)CCSDS 911 and 912 seriesImplementedFuzzing
BPv7RFC 9171ImplementedFuzzing, interoperability
BPSecRFC 9172ImplementedFuzzing, interoperability
LTPRFC 5326ImplementedFuzzing
PUS-CECSS-E-ST-70-41CPartialFuzzing

Implemented means the protocol is complete against its standard. Partial means a subset is available; for PUS-C, the services a mission actually uses vary widely, and support is limited to the services exercised by mission tests.

Test coverage

Fuzzing. The stack has more than 60 fuzz targets covering protocol parsing, serialization, state-machine transitions, and error paths. Each layer is written as a pure function from input events to output events, with no mutable state carried across calls, which is what makes generating random inputs and checking invariants practical.

Interoperability. Where a protocol has a widely used reference implementation, the OCaml one is tested against it rather than only against itself: the eu.dariolucia.ccsds Java suite and the Python spacepackets library for CFDP, and the Rust bp7 implementation for BPv7 and BPSec. A protocol marked Fuzzing alone has no external implementation in the test loop, so it is checked against the standard and its own invariants.

Verified parsers. For selected formats, Microsoft’s EverParse generates formally verified C parsers with proofs of memory safety, round-trip correctness between parser and serializer, and non-malleability, meaning a valid message has exactly one binary encoding. The OCaml and generated C implementations are differentially tested against each other where that path exists.

Ground-system interoperability

These protocols are the interoperability boundary. A ground system that speaks them needs no Parsimoni software: CCSDS-compatible tools such as Yamcs and OpenC3 COSMOS interoperate at the protocol level. SLE is the usual interface to a ground-station network through the CCSDS 911 and 912 series.