# Extensive Experiments on Opportunistic Routing in Wireless Sensor Networks
## 2 Related Work
### Error Codes  
An Erasure Code (EC) is a forward error correction code that, operating in the application layer [21; 36], assumes that a packet is either received without errors or completely dropped. ECs enhance data transmission reliability by introducing redundancy, without the overhead of strict replication.  
One major concern for EC mechanisms is the complexity of the mechanism itself. For instance, in [16], authors investigate the trade-off between reliability achieved and the energy and delay overhead for different EC techniques. They proved that ECs improve the communication reliability considerably with a small delays increase. In [17], authors conducted a theoretical study and real experiments on solar power sensors to dynamically adjust the redundancy of erasure codes regarding the energy level of sensors. The objective is to maximize end-to-end packet delivery without decreasing the network lifetime. The paper [18] focuses on body WSNs to investigate the decoding power consumption of LDPC codes [37]. The authors propose a scheme to determine the number of this code iterations to allow sensors to save energy while reaching a specific bit error rate.  
In WMSNs, reliability is a major concern. A lost packet may dramatically degrade video or still image quality. In [19], authors analysed the impact of retransmission and wireless application-layer redundancy by using packet arrival probability and average energy consumption. They concluded that using the erasure code is more reliable and energy efficient than retransmission when the packet loss probability is low, but the performance of the erasure code deteriorates when high packet loss conditions occur. Similarly, authors in [38] evaluate the performance of conventional error control schemes (EC, ARQ (Automatic Repeat Request), etc.) in WMSNs as a function of the bit error rate. They find that the best strategy is to use cross-layer scheme in low bit error rates and link-layer hybrid schemes in high bit error rates.  
All works in [39; 40; 41; 42] proposed distributed erasure code methods where nodes inside the network perform coding unlike our work where only the source node needs to perform coding. The encoding scheme used differs from paper to another. For instance, in [39], authors use erasure codes to ensure data retrieval in case of node failure inside a distributed storage WSN. They use the systematic optimal locally recoverable codes proposed by [43] (locally recoverable means few symbols are encoded to obtain a new symbol). Both works in [40; 41] combine Reed-Solomon-based erasure coding with selective retransmissions in order to achieve higher reliability. In particular, ref. [41] applies its scheme to under water acoustic sensor networks. Furthermore, in case of packet loss, receivers send negative acknowledgements along with information about the number of packets received correctly. This enables senders to determine which packets a receiver is waiting for, and thus to retransmit them. Retransmissions are stopped after receiving a sufficient number of packets, that is a number that enables original lost packets decoding. This condition optimizes the number of retransmissions. [PERSON] et al. [42] introduced the concept of survivability which is defined as the maximum fraction of sensor nodes that can fail without compromising the recoverability of the native data. The authors proposed an energy efficient distributed erasure codes for data survivability. Then, they enrich their initial proposal using the random linear network coding.