Automatic Repeat Requests (ARQs)
Should the FEC of a packet fail to rebuild the packet, the repair layer will request a retransmission from the source automatically. This is known as an Automatic Repeat Request (ARQ). Specifically, we will be using a Selective Repeat ARQ algorithm, as the alternatives would clog the network with ACKs or requires a correct order of packets that we cannot guarantee, especially over dynamic routing paths like those in a mesh network. With ARQs, our FEC implementation can be dynamic similar to Type II Hybrid ARQ (HARQ), meaning it could be removed nearly entirely in particularly stable networks to help increase throughput.
This part of the repair layer is also partially responsible for the security of the network. Various attack surfaces are opened on a mesh network like ours, and the network could easily be flooded with requests for retransmissions (or numerous other attacks like fake route advertisements black holing or sink holing our mesh). The ARQ system will need to be able to detect and mitigate these attacks by dropping and ignoring illegitimate requests. This will be done by using a combination of cryptographic signatures (and potentially proof-of-work challenges, TBD) and statistical analysis to determine the legitimacy of a request. Signing packets (only on the sender and receiver side, not needed for each layer) will allow the repair layer to verify the source of a request and ignore unsigned or known-malicious nodes (as tracked through a sort of rolling Bloom filter).
More info on network security to come.