Skip to content

GKasperF/FEC_Erasure_Code_Unit_Test_Relay

 
 

Repository files navigation

FEC Erasure Code Unit Test

This repository hosts the source code for the FEC Erasure Code. It works as a unit test for Application_Layer_Sender.cpp and Application_Layer_Receiver in /src. The test program is written to application_local_simulation.cpp

Build the Project

To build Siphon datapath aggregator on any supported system (Mac OS X and Linux), run

./dependencies.sh
./build.sh

The first script will install all dependencies to the local machine. These include:

  • cmake: The building system used by this project.
  • g++: GNU Compiler.
  • boost: Library that many important modules depend on.
  • protobuf and gRPC: Library used to build user interfaces. Compiling and installing them will take some time.

The second script will run cmake and make to build the executable. The final executable will be found in ./bin/FEC_Erasure_Code_Local.

Running in CLion (easier)

The preferred way of testing is to use CLion to open the project and build and run FEC_Erasure_Code_Local (./dependencies.sh has to be run first).

Packet size

It is fixed to be 300 bytes in application_local_simulation.cpp

Number of packets

It is fixed to be 361000 in /include/FEC_Macro.h

Generating artifical erasures

Modify the ERASURE_TYPE Macro in /include/FEC_Macro.h to generate artificial erasures. Set ERASURE_RECORDER to 1 if you want to save the erasure pattern to erasure.bin (generated by the receiver). In case you want to simulate a saved erasure pattern, place the erasure.bin file inside /bin and set ERASURE_TYPE=5

Encoding parameters

  • The decoding delay parameter T_INITIAL is set to be 10 in /include/FEC_Macro.h
  • If the burst erasure parameter B_INITIAL and the arbitrary erasure parameter N_INITIAL are set to be -1, then adaptive coding is used.
  • If B_INITIAL=N_INTIAL=0, no coding is performed
  • If B_INITIAL and N_INITIAL are positive integers such that T_INITIAL>=B_INITIAL>=N_INITIAL>=1, then a fixed coding strategy is used.
  • If adaptive_mode_MDS in application_local_simulation.cpp is set to be true, then the adaptive coding will be restricted to MDS codes that correct only arbitrary erasures. If adaptive_mode_MDS=false, then streaming codes that correct both burst and arbitrary erasures will be chosen adaptively.

Adaptive algorithm

The estimation window size is set to be 1000 packets in /include/FEC_Macro.h

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rich Text Format 84.1%
  • C++ 12.0%
  • Makefile 3.2%
  • Other 0.7%