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
To build Siphon datapath aggregator on any supported system (Mac OS X and Linux), run
./dependencies.sh
./build.shThe 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.protobufandgRPC: 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.
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).
It is fixed to be 300 bytes in application_local_simulation.cpp
It is fixed to be 361000 in /include/FEC_Macro.h
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
- The decoding delay parameter
T_INITIALis set to be10in/include/FEC_Macro.h - If the burst erasure parameter
B_INITIALand the arbitrary erasure parameterN_INITIALare set to be-1, then adaptive coding is used. - If
B_INITIAL=N_INTIAL=0, no coding is performed - If
B_INITIALandN_INITIALare positive integers such thatT_INITIAL>=B_INITIAL>=N_INITIAL>=1, then a fixed coding strategy is used. - If
adaptive_mode_MDSinapplication_local_simulation.cppis set to betrue, then the adaptive coding will be restricted to MDS codes that correct only arbitrary erasures. Ifadaptive_mode_MDS=false, then streaming codes that correct both burst and arbitrary erasures will be chosen adaptively.
The estimation window size is set to be 1000 packets in /include/FEC_Macro.h