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