miércoles, 25 de noviembre de 2015

5.5 Mecanismos de detección y corrección de errores

5.5

Mecanismos de detección y corrección de errores


Las redes de computadores deben ser capaces de transmitir datos de un dispositivo a otro con cierto nivel de precisión. Para muchas aplicaciones, el sistema debe garantizar que los datos recibidos son iguales a los trasmitidos. Sin embargo, siempre que una señal electromagnética fluye de un punto a otro, está sujeta a interferencias impredecibles debido al calor, el magnetismo y diversas formas de electricidad. Esta interferencia puede cambiar la forma o la temporización de la señal. Si la señal transporta datos binarios codificados, tales cambios pueden alterar su significado.

Las aplicaciones requieren entonces un mecanismo que permita detectar y corregir los posibles errores ocurridos durante la transmisión. Algunas aplicaciones tienen cierta tolerancia de errores (ej. transmisión de  audio/video), mientras  que  para  otras  aplicaciones se  espera  un  alto  nivel  de precisión (ej. transmisión de archivos).

En este documento se discuten algunos conceptos relacionados con la detección y corrección de errores en la transmisión de datos, así como algunas técnicas que llevan a cabo estas tareas.

Tipos de Errores

Antes  de  estudiar  los  mecanismos  que  permiten  la  detección  y/o  corrección  de  errores,  es importante entender cuáles son esos posibles errores.

 Error de Bit

Este término significa que únicamente un bit de una unidad de datos determinada (byte, caracter, paquete, etc.) cambia de 0 a 1 o de 1 a 0 [1][2]. Para comprender el impacto de este cambio, podemos imaginar que cada grupo de 8 bits es un caracter ASCII con un 0 añadido a la izquierda. Un error de bit podría alterar completamente el caracter ASCII enviado (ej. ‘A’: ASCII 65) y en el receptor se obtendría un caracter completamente diferente (ej. ‘I’: ASCII 73).

Error de Ráfaga

Significa que dos o más bits de la unidad de datos han sido alterados. Es importante notar que los errores de ráfaga no implican que se afecten bits consecutivos. La longitud de la ráfaga se mide desde el primer hasta el último bit incorrecto

Redundancia

Una vez que se conocen los tipos de errores que pueden existir, es necesario identificarlos. En un entorno de comunicación de datos no se tendrá una copia de los datos originales que permita comparar los datos recibidos para detectar si hubo errores en la transmisión. En este caso, no habrá forma de detectar si ocurrió un error hasta que se haya decodificado la transmisión y se vea que no tienen sentido los datos recibidos. Si los computadores comprobaran errores de esta forma, sería un proceso muy  lento y  costoso. Es  necesario un  mecanismo que  sea  sencillo y  completamente efectivo.

Detección vs. Corrección

La corrección de errores es más difícil que la detección. En la detección sólo se quiere determinar si ha ocurrido un error, existiendo dos posibles respuestas: sí o no. La corrección como tal es sencilla, consiste tan solo en invertir los valores de los bits erróneos; sin embargo, es necesario previamente determinar la cantidad de bits erróneos, y aún más importante la ubicación de los mismos dentro de la unidad de datos.

La corrección de errores se puede conseguir de dos formas. En la primera, cuando se descubre un error, el receptor puede pedir al emisor que retransmita toda la unidad de datos (BEC, Backwards Error Correction). Con la segunda, el receptor puede usar un código corrector de errores, que corrija automáticamente determinados errores (FEC, Forward Error Correction).

En teoría, es posible corregir cualquier error automáticamente en un código binario. Sin embargo, los códigos correctores son más sofisticados que los códigos detectores y necesitan más bits de redundancia. El número de bits necesarios para corregir un error de ráfaga es tan alto que en la mayoría de los casos su uso no resulta eficiente .

FEC (Forward Error Correction) vs. Retransmisión

Como se mencionó previamente, existen dos mecanismos para la corrección de errores:

1.   FEC: Forward Error Correction.
2.   BEC: Backwards Error Correction.

FEC es el proceso en el que una vez detectado el error, el receptor trata de determinar el mensaje original, usando los bits de redundancia. Para esto es necesario incluir una mayor cantidad de bits de redundancia en la unidad de datos. BEC o retransmisión es la técnica en la que el receptor detecta la ocurrencia del error y solicita al emisor que reenvíe el mensaje. Se repite la retransmisión del mensaje hasta que el receptor compruebe que el mensaje ha llegado sin error (es posible que un error no sea detectado y el mensaje sea interpretado como correcto)

Cada una de estas técnicas ocupa su nicho diferente . En enlaces altamente confiables es más económico usar técnicas BEC, retransmitiendo los mensajes defectuosos que surjan eventualmente, sin  necesidad  de  agregar  una  gran  cantidad  de  bits  de  redundancia,  lo  que  acarrearía  una disminución de las prestaciones. Sin embargo, en enlaces poco confiables como los inalámbricos, puede resultar beneficioso agregar la redundancia suficiente a cada mensaje para que el receptor pueda reconstruir el mensaje original. Existen dos razones primordiales que sustentan el uso de las técnicas FEC:

1.   La tasa de errores por bit en un enlace poco confiable puede ser muy grande, lo que resultará en un gran número de retransmisiones.
2.   En algunos casos, el tiempo de propagación es muy elevado en comparación con el tiempo de transmisión. Por este motivo la retransmisión del mensaje resultaría muy costosa .

 Códigos de bloque

Para entender la manera en que pueden manejarse los errores, es necesario estudiar de cerca cómo se codifican los datos. Por lo general, una unidad de datos (generalmente llamada en este ambiente trama) consiste de m bits de datos y r bits redundantes usados para la verificación, siendo la longitud total de una trama n (n = m + r). A la unidad de n bits que contiene datos y bits de redundancia se le conoce como  palabra codificada. La cantidad de bits de redundancia y la robusteewz del proceso son factores importantes del esquema de codificación

Corrección de errores con códigos de bloque
En el caso discutido previamente (detección de errores), el receptor sólo necesita saber que la palabra codificada es inválida para detectar un error. En la corrección de errores, el receptor deberá descubrir  la  palabra  codificada  originalmente enviada.  La  idea  principal  es  la  misma  que  la empleada en la detección de errores, pero el verificador es mucho más complejo.

No hay comentarios:

Publicar un comentario