Satellite networkingVersoSat
IP networking and CCSDS packet handling
Built C modules connecting Linux applications to a packet transport, with IPv4/IPv6 addressing and CCSDS Space Packet reception.
Source code is private.
Result
Verified bidirectional IPv4/IPv6 traffic through a CCSDS packet adapter in QEMU, with exact payload recovery.
The challenge
Satellite applications need an IP interface that maps peer identities to addresses and carries packets between endpoints. The receiver must preserve packet boundaries, validate incoming data and deliver each packet to the intended application.
My contribution
- Connected the Linux IPv4/IPv6 stack to a packet transport through a TUN interface, with explicit peer mappings, host routes, MTU checks and backpressure handling.
- Implemented an incremental CCSDS Space Packet receiver in C, with header validation and dispatch by application identifier and packet type. It handles fragmented reads, consecutive packets and malformed input.
- Built a bidirectional IP-to-CCSDS adapter for an explicit laboratory packet profile, with sequence handling and cleanup when the transport closes.
- Tested ICMP, UDP and TCP between isolated Linux network namespaces in QEMU. Checked exact payload recovery, source addresses, MTU limits, interface ownership and session restart.
- Added independent packet vectors, malformed-input tests, sanitiser checks and static analysis. Cross-compiled with the Vitis/PetaLinux SDK and ran the AArch64 tests in QEMU user emulation.
Results and validation
The software carried bidirectional IPv4 and IPv6 traffic through both the direct packet path and the CCSDS adapter. Tests confirmed exact data recovery, rejection of invalid packets and removal of the TUN interface after shutdown or adapter loss. Native tests and AArch64 tests in emulation passed.
Technical details
Packet-level software was tested over local socket transport in an isolated Linux/QEMU virtual machine, using a laboratory CCSDS profile. ARM tests used the PetaLinux loader and libraries in user emulation. RF/modem reception, the final FPGA payload interface and physical-board validation remain separate integration work. The receiver dispatches packet data; it does not execute mission commands.
C · Linux · IPv4/IPv6 · TUN · CCSDS · QEMU · AArch64 · PetaLinux SDK