lunes, 8 de octubre de 2012

CRC - Mauro Omar Hernandez Montes


Mauro Omar Hernandez Montes

La verificación de redundancia cíclica consiste en la protección de los datos en bloques, denominados tramas. A cada trama se le asigna un segmento de datos denominado código de control (al que se denomina a veces FCS, secuencia de verificación de trama, en el caso de una secuencia de 32 bits, y que en ocasiones se identifica erróneamente como CRC). El código CRC contiene datos redundantes con la trama, de manera que los errores no sólo se pueden detectar sino que además se pueden solucionar.
La verificación de redundancia cíclica (abreviado, CRC) es un método de control de integridad de datos de fácil implementación. Es el principal método de detección de errores utilizado en las telecomunicaciones
El control de redundancia cíclica es una función diseñada para detectar cambios accidentales en datos de computadora y es comúnmente usada en redes digitales y dispositivos de almacenamiento, como por ejemplo discos duros
El CRC se utiliza como una detección de errores de código, el cual tiene una serie de aplicaciones usadas cuando se implementa mediante normas, convirtiéndolo así en un sistema práctico.
Estas son algunas de las aplicaciones:
Se usa un patrón de prefijos de bit para comprobar su autenticidad. Esto es útil cuando la trama podría tener errores en los bits de delante de un mensaje, una alteración que, de otro modo dejaría sin cambios al CRC. A veces un envío agrega n bits (n es el tamaño de la CRC) al mensaje que se debe controlar ya que se cogería un polinomio que no sería el correcto para la división. Esto tiene la conveniencia de que el CRC del mensaje original con el CRC adjunto es exactamente cero, por lo que el CRC se puede comprobar simplemente por la división polinómica y comparando con el resto cero. A veces se realiza una implementación del CRC con OR exclusivos en el resto de la división polinómica.
Orden de los bits: en ocasiones, el orden en el que se envían las tramas de datos no corresponden exactamente con la posición que tendrán los bits en la división polinómica; es decir, que puede que el primer bit enviado sea el de más peso o viceversa. Este convenio tiene sentido cuando las tramas a enviar se envían por puertos series ya que el CRC es comprobado por el hardware de cada máquina, y cada uno tendrá un convenio conjunto de lectura y posicionamiento de paquetes para el envió a la capa siguiente.
Omisión del orden del bit de más peso del polinomio divisor: algunos escritores proponen omitir esto, puesto que el bit mayor peso es siempre 1, y ya que el bit CRC debe ser definido por un (n + 1) bits del divisor, es innecesario mencionar el divisor mayor peso en el mensaje y en el CRC.
El algoritmo utilizado por el control de redundancia cíclica es el siguiente
Se añaden bits “0” a la derecha del mensaje (esto es, se añaden tantos ceros como grado tenga el polinomio generador
Se divide el polinomio obtenido por el polinomio generador. La división se realiza en modulo 2, que es igual que la división binaria, con dos excepciones:
Ø  1 + 1 = 0 (no hay acarreo)
Ø  0 – 1 = 1 (no hay acarreo)
Después se añade el resto de la división al polinomio original
La elección del polinomio generador es esencial si queremos detectar la mayoría de los errores que ocurran. Uno de los polinomios generadores que más se suelen utilizar es el estándar CCITT:
X16 + x12 + x5 + 1
Este polinomio permite la detección de:
Ø  100% de errores simples
Ø  100% de errores dobles
Ø  100% de errores de un número impar de bits
Ø  100% de errores en ráfaga (en una serie sucesiva de bits) de 16 o menos bits
Ø  99.99% de errores en ráfagas de 18 o más bits

No hay comentarios:

Publicar un comentario