6. Corrección de errores

Corrección de errores  ≠  Detección de errores

La detección de errores es una técnica útil, incorporada en la mayoría de los protocolos de control del enlace, como por ejemplo HDLC, al igual que en los protocolos de transporte, como por ejemplo TCP.

No obstante, la corrección de errores mediante el uso de códigos para la detección de errores exige retransmitir (como se explicará posteriormente), bloques de datos. 

Este enfoque puede no ser del todo apropiado en aplicaciones inalámbricas por las dos razones siguientes:

  1. La tasa de errores por bit en un enlace inalámbrico puede ser bastante elevada, lo que resultará en un gran número de retransmisiones.
  2. En algunos casos, especialmente en enlaces satelitales, el retardo de propagación es muy elevado, comparado con el tiempo de transmisión de la trama. Como consecuencia, se obtiene un sistema muy poco eficaz.

Como se estudiará mas adelante en la materia, la aproximación más habitual es retransmitir la trama errónea además de las tramas siguientes.

En enlaces de datos de gran longitud, un error en una trama aislada requerirá, por tanto, la retransmisión de muchas tramas. 

En su lugar, sería deseable habilitar al receptor para que fuera capaz de corregir errores usando exclusivamente los bits recibidos en la transmisión.

En la Figura 1 se muestra, en términos genéricos, cómo llevar a cabo este procedimiento.

En el extremo del emisor, usando un codificador con corrección de errores hacia delante FEC (Forward Error Correction), para cada bloque de datos de k bits se genera uno de n bits (n> k) denominado palabra-código, que es transmitido. Durante la transmisión, la señal es susceptible de ser afectada por diversos contratiempos, los cuales pueden producir errores en los bits de la señal. En el receptor, la señal de entrada se demodula para obtener una cadena de bits similar a la palabra-código original, pero posiblemente con errores.  => REDUNDANCIA!

 Figura 1

  1. Si no ha habido errores, la entrada al decodificador FEC es idéntica a la palabra-código original, por lo que el decodificador generará el bloque de datos original.
  2. Para ciertos patrones de error, es posible que el decodificador detecte y corrija esos errores. por tanto, aunque los bloques de datos recibidos difieran de la palabra-código transmitida, el decodificador FEC será capaz de asociar el bloque recibido al bloque de datos original.
  3. Para ciertos patrones de error, el decodificador podrá detectarlos pero no corregirlos. En este caso, el decodificador simplemente informará sobre la detección de un error irrecuperable.

  4. Para ciertos, aunque raros, patrones de error, el decodificador no detectará la ocurrencia de  dichos errores y asignará el bloque de datos recibido, de n bits, a un bloque de k bits que será distinto al bloque original de k bits.