Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement CCSDS File Delivery Protocol #2768

Open
12 tasks
chownw opened this issue Jun 10, 2024 · 2 comments
Open
12 tasks

Implement CCSDS File Delivery Protocol #2768

chownw opened this issue Jun 10, 2024 · 2 comments
Assignees
Labels
CCB-approved Call for Comments has been approved for implementation. enhancement EPIC Container for related issues

Comments

@chownw
Copy link
Contributor

chownw commented Jun 10, 2024

F´ Version
Affected Component

Feature Description

This feature introduces to F' the core file delivery capabilities from the latest CCSDS File Delivery Protocol (CFDP).

The goal is to implement CFDP in several stages. The recommend standard describes two service classes: Class 1 CFDP (unreliable transfer) and Class 2 CFDP (reliable transfer). The following subtasks only implement CFDP features required for core file delivery. Filestore requests, user operations, and other optional convenience features are not currently within the goals of this feature.

Recommended Standard:
https://public.ccsds.org/Pubs/727x0b5.pdf

Informational Reports:
https://public.ccsds.org/Pubs/720x1g4.pdf
https://public.ccsds.org/Pubs/720x2g4.pdf

For each subtask there is a corresponding task for implementing the change on the GDS side.

Subtasks

Rationale

This feature moves F' towards CCSDS compliance, allowing interoperability with other CCSDS compliant systems. By itself, Class 1 CFDP provides a base file transfer capability. Class 2 CFDP provides reliable file transfer over unreliable connections and simplifies operations through automated retransmission.

@thomas-bc
Copy link
Collaborator

Preliminary work is located here: https://github.com/thomas-bc/fprime/tree/issue-2769

@matt392code
Copy link
Contributor

Proposed initial design for implementing the core Class 2 CFDP protocol in F Prime:
cfdp-class2.txt

Here's an explanation of the key aspects:

  1. Core CFDP Class 2 Features
  • File transmission with acknowledgment and retransmission
  • Modular file checksum calculation (as specified in section 4.2.5)
  • Support for segmented file data PDUs with offset tracking
  • PDU acknowledgment and negative acknowledgment handling
  • Transaction state and retransmission buffer management
  1. Key Design Elements
  • CfdpClass2Sender: Primary component implementing the sending side of Class 2 CFDP
  • TransactionState: Tracks ongoing transaction details including file info and progress
  • RetransmitBuffer: Stores PDUs for potential retransmission
  • Follows F' component patterns and integrates with F' ports and timing

The implementation sketch provides the core framework needed for reliable file transfer per the CFDP spec. Here are the next recommended steps:

  1. Review and refine the core Class 2 implementation design
  2. Complete the implementation including integration with F' ports/timing
  3. Implement matching receiver-side component
  4. Add transaction closure per section 4.6.3.2.2
  5. Integrate updated checksum logic per section 4.2
  6. Add optional Keep Alive for progress monitoring

@LeStarch LeStarch added the CCB-approved Call for Comments has been approved for implementation. label Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CCB-approved Call for Comments has been approved for implementation. enhancement EPIC Container for related issues
Projects
None yet
Development

No branches or pull requests

4 participants