Skip to content

ssloxford/spaceQUIC

Repository files navigation

spaceQUIC

An implementation of the QUIC protocol as a library for the core Flight System, replacing SDLS and/or CryptoLib. This repo provides a working demo of the library as a Docker container.

ℹ️ To use spaceQUIC standalone in an existing cFS project, take the library from /code/libs/space_quic.

Requirements

Running the container requires setting kernel parameters (--sysctl) and ulimits (--ulimit) which do not work on the Mac OS Docker host. The container is currently untested on the Windows host; Linux is recommended.

To build natively, ensure the requirements for each of the following is met:

Setup

The following instructions assume the use of Docker for building dependencies and compiling cFS. See the Dockerfile for the full build process.

Clone the repo:

git clone --recurse-submodules https://github.com/ssloxford/spaceQUIC.git
cd spaceQUIC

ℹ️ Make sure to use the --recurse-submodules flag, or dependencies will be missing.

Build the container:

./build.sh

Generate a self-signed TLS certificate and key:

mkdir cert
cd cert
openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out certificate.crt -keyout private.key

ℹ️ To change the certificate/key location: Modify the certificate info in /code/libs/space_quic/fsw/src/quic/serv.c.

Usage

Run cFS and the benchmark ground system:

./run-interactive.sh
cd /code/build/exe/cpu1
./core-cpu1 &
cd /code/build/tools/benchmark
./benchmark

Run cFS only:

./run-sat.sh

Run the benchmark ground system only:

./run-ground.sh

Run the container with an interactive shell:

./run-interactive.sh

ℹ️ To run the ground system in a separate container/machine: Modify the CFS_HOST IP address in /code/tools/benchmark/benchmark.c.

Contribute

Code is provided as-is, as a starting point for future work. This project is no longer actively maintained, but pull requests for bug fixes and new features are welcomed. We will try to review any pull requests in a timely manner.

Planned Features

The following features have not yet been implemented:

  • cFS with QUIC running in Docker
  • CLI ground system
  • Easier OpenSSL/WolfSSL switch
  • Custom certificate/key files
  • Remove hardcoded paths from build process (particularly CMakeLists.txt files)

About

An implementation of QUIC as a library for cFS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published