Search code examples
error-correctionreed-solomonforwarderrorcorrection

Reed solomon how many missing bytes can be corrected?


I have simple question? I have Data of 256 bytes including 32 parity bytes.

If I receive only 223 bytes including the 32 parity bytes. Am I still able to recover the 256 Block? If not, what if i know the location of the missing bytes?


Solution

  • Even if the locations of the missing bytes are known, the received message has 33 missing bytes and can't be recovered. If the received message was only missing 32 bytes, and assuming there are no errors in the received bytes, then the 32 missing bytes can be treated as erasures and corrected. It doesn't make any difference if the missing bytes are data bytes or parity bytes.

    Note that there are two different encoding schemes named Reed Solomon, "original view" and "BCH view". The question mentions a total size of 256 bytes, which would require "original view" Reed Solomon encoding (see link to Wiki article below). If using "BCH view" Reed Solomon encoding, the maximum message size (data + parity) is 255 bytes (assuming that the Galois Field is GF(2^8)).

    https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction#Constructions

    Raid 6 uses yet another encoding scheme. The parity bytes are the calculated "BCH view" syndromes of the data bytes, and can allow up to 255 data bytes plus 255 parity bytes (for a total of 510 bytes). It is intended to be an erasure only code where location of the error or missing bytes are known.