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

Forward Error Correction #7

Open
wants to merge 62 commits into
base: development
Choose a base branch
from

Conversation

autumn-traveller
Copy link

@autumn-traveller autumn-traveller commented May 16, 2023

Overview

This PR adds support for forward error correction. Firstly, an abstract class for FEC schemes of any kind is added ("FEC Transformer"), which can be used to encode individual files and source blocks. Secondly, an instance of the class for a raptor-based FEC scheme is added. The mechanism used is very similar to the Raptor FEC encoding scheme but differs in the generation of random numbers for selecting symbol degrees, and in not generating Half symbols. The scheme used only generates LDPC symbols during the intermediate symbol generation.

Full list of Changes:

  • Abstract class for FEC schemes
  • New github workflow to test the build process on various ubuntu versions
  • Small improvements in example transmitter
  • Raptor-based FEC library as a git submodule
  • FEC build option
  • Fix bug where the default transport session id in the transmitter is different than the default in the receiver
  • Re-order the IPsec struct to prevent an error in the build process
  • Update the call to the SSL library to the latest version, to prevent a warning and to compy with future SSL versions

This PR (unintentionally) addresses Issue #1

Building with FEC

The library used for FEC is in a git submodule in another repository. To pull and build the raptor changes you need to pull the other submodule and then rebuild. Pull using git submodule update --init if you are in a previously checked out repsitory.

When building, raptor is enabled by default (but can be turned off) so build as usual.

Testing the changes

To test that everything works you need an environment with packet loss. One way to do this is to modify the loopback device so that it experiences packet loss. There is a script included - setup_packet_loss_on_loopback which uses the tc command to adjust the loopback device to experience packet loss, as well as adding a routing entry for the default mulitcast address used by libflute to make it go via the lo device. After testin you can rever the changes with the setup_packet_loss_on_loopback script.

autumn-traveller and others added 30 commits November 24, 2022 11:14
…eholders for future integration of Raptor FEC
…ebug mode by default, small fixes in readme,cmakelists,gitignore
…uct since its too difficult to directly replace it
autumn-traveller and others added 22 commits January 5, 2023 18:10
…and file, cleaned up cmakelistst for raptor build case
@dsilhavy dsilhavy added this to the 0.11.0 milestone May 16, 2023
@dsilhavy dsilhavy self-requested a review May 26, 2023 08:46
src/AlcPacket.cpp Outdated Show resolved Hide resolved
src/AlcPacket.cpp Show resolved Hide resolved
@dsilhavy dsilhavy requested a review from kuehnhammer June 9, 2023 11:16
Remove an unnecessary #ifdef in Receiver.h, and fix error messages
in AlcPacket.cpp
@dsilhavy
Copy link
Contributor

@autumn-traveller : @kuehnhammer is currently working on the FEC integration and harmonizing our two implementations (one of these is yours). Then we should be ready to merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

4 participants