Forward Error Correction (FEC) is a type of error correction that involves encoding a message in a redundant way, which allows the receiver to reconstruct lost bits without the need for retransmission.
How Forward Error Correction Works
FEC works by adding “check bits” to the outgoing data stream. Adding more check bits reduces the amount of available bandwidth by increasing the overall block size of the outgoing data, but also enables the receiver to correct for more errors without receiving any additional transmitted data.
This dynamic makes FEC ideal when bandwidth is plentiful, but retransmission is costly or impossible.
The “check bits,” or redundant bits, that the sender adds to the data stream are coded into the data in a very specific way, which allows for efficient error correction by the receiving device.
Many different types of FEC coding have been developed.
A simplistic example would be a triple redundancy code, also known as (3,1) repetition code, where each bit of data is simply transmitted 3 times. The results of each triplet are averaged together to account for noise in the transmission, and a corrected result is decided on.
Other more advanced coding systems that are in use today include Reed-Solomon coding, a customizable coding scheme that is often used in DVB.
Applications of Forward Error Correction
Reed-Solomon coding is notable for its use in CD, DVD, and hard disk drives. Although these drives are not transmitting data in the traditional sense, FEC coding allows for error correction on bits that become corrupted through damage to the physical medium of the drive.
Many types of multicast transmissions also make use of FEC.
Forward Error Correction is particularly well suited for satellite transmissions, both for consumer and space exploration applications, where bandwidth is reasonable but latency is significant.
Forward Error Correction vs. Backward Error Correction
Forward Error Correction protocols impose a greater bandwidth overhead than backward error correction protocols, but are able to recover from errors more quickly and with significantly fewer retransmissions.
Forward Error Correction also places a higher computational demand on the receiving device because the redundant information in the transmission must be interpreted according to a predetermined algorithm.
Overall, Forward Error Correction is more suitable for single, long-distance, and relatively high-noise transmissions, rather than situations where smaller batches of information can be sent repeatedly and easily. In these cases, Backward Error Correction is much more likely to be suitable.