viernes, 20 de febrero de 2015

DETECCIÓN DE ERRORES.

Los mecanismos de detección de errores se basan en la inclusión de información redundante en la trama, es decir, una serie de bits adicionales que representan de algún modo el contenido del mensaje transmitido, y que se envían conjuntamente con el propio mensaje. Aunque ningún método puede asegurar al cien por cien la detección de todos los errores que se pueden producir, un método muy efectivo podría ser la retransmisión de la trama una o varias veces, para ser comparada. Incluso se podrían corregir los errores detectados mediante la comparación de un número impar de transmisiones de la misma trama. Esto, lógicamente, reduce enormemente la capacidad del enlace, por lo que se buscan otras técnicas que mantengan unas buenas prestaciones pero con una cantidad menor de información redundante. 

Paridad horizontal y vertical. Un mecanismo de paridad horizontal, como el utilizado en las transmisiones asíncronas, consiste en añadir a un grupo de bits de datos (entre 5 y 8), un bit más con valor 0 ó 1 según corresponda para que el número de bits 1 total sea par (paridad par) o impar (paridad impar). Así por ejemplo, si se trabaja con paridad impar, el dato “0100001” se transforma en el “01000011” porque se necesita el último 1 para que el byte tenga un número impar de unos. Por el contrario, si trabajásemos con paridad par el resultado sería “01000010”.

Mediante este método se pueden detectar todos los errores de un único bit en el grupo. Sin embargo, la probabilidad de detectar un error que afecte a varios bits es sólo 0.5, lo que no es mucho. En concreto, la paridad puede detectar únicamente errores que afectan a un número impar de bits. 

La detección de errores se puede mejorar considerablemente añadiendo a cada grupo de Q caracteres que se envían sucesivamente, uno más que contenga bits de paridad para los bits que ocupan la misma posición en los Q caracteres transmitidos. A esto se le conoce como paridad vertical.

Este método combinado es capaz de detectar todos los errores de 1, 2 ó 3 bits en el bloque, todos los errores con un número impar de bits erróneos y algunos con número par, ya que por ejemplo, no detectaría un error de cuatro bits como el señalado con las “X” en la figura. Detectará también todas las ráfagas de bits erróneos de longitud igual o inferior a 8. 

Chequeo por suma: checksum. 

El emisor de la trama realiza la suma de los bytes o caracteres a transmitir en todos o en determinados campos de la trama. Esta suma realizada habitualmente en módulo 256 ó 65536, generará 8 ó 16 bits respectivamente de información para el control de errores, que se añadirán al final de la trama o del campo que se supervisa. Generalmente, si el tamaño del bloque a comprobar es suficientemente largo, el byte extra resulta insignificante comparado con el margen adicional de seguridad que se logra. 

Substituye generalmente al método de paridad horizontal proporcionando un nivel de detección de errores similar. Esta técnica detecta errores de 2 bits en una fila o dos filas, pero falla en la detección de un número par de bits erróneos en una columna. También es importante señalar que esta técnica no es capaz de detectar errores de secuencia: es decir, se produce una suma idéntica cuando el mensaje se envía en cualquier otro orden al azar.



Códigos de redundancia cíclica (CRC). 

El uso del código polinomial, más conocido como redundancia cíclica (CRC), está muy extendido. Proporciona una buena detección de errores con poca información redundante adicional. Normalmente se le añaden a la trama 16 ó 32 bits de información para la detección de errores mediante el CRC. 

El método consiste básicamente en que el emisor trata la información a transmitir como una cadena de bits, y la convierte en un polinomio binario (donde los valores de los coeficientes son cero o uno). Este polinomio binario se multiplica por el grado del polinomio generador que es conocido tanto por el emisor como por el receptor, y posteriormente se divide por él en modulo 2 (no se llevan acarreos en la suma ni la división), generándose un resto de grado una unidad inferior al polinomio generador. Los coeficientes (ceros o unos) de este resto se añaden a la trama como código de detección de errores. Un polinomio generador de orden Q generará un código de Q bits.






El receptor tratará a toda la trama como un polinomio (información y código de detección de errores conjuntamente) y lo dividirá en módulo dos por el mismo polinomio generador que uso el emisor. Si el resto de la división es cero, no se habrán detectado errores en la transmisión. 

El ejemplo anterior muestra el proceso en el emisor utilizando un polinomio generador de orden 4 que genera un código de detección de errores de 4 bits. Se puede comprobar que el polinomio correspondiente a la trama transmitida es divisible por el polinomio generador utilizado en el método anterior y que, por lo tanto, la transmisión estará libre de errores si, al hacer la división el receptor, el resto obtenido es cero. 

No hay comentarios.:

Publicar un comentario