Unidad 5 · Un CRC frente a las ráfagas que pasan de su redundancia
Un CRC de bits de redundancia ve toda ráfaga de hasta bits. Con las más largas falla a veces, y uno esperaría que fallara más cuanto más larga es la ráfaga. No pasa. La ráfaga que más se escapa no es la más larga: es la que se pasa por uno, con el doble de fracción que cualquier otra. En el CRC CCITT de 16 bits se escapa una de cada ráfagas de largo 17, y una de cada de largo 18, 19 o cualquier otro. Con 32 bits, el peor caso es una de cada 2 147 483 648.
Un código cíclico escribe cada vector de bits como un polinomio, , y queda entero determinado por su polinomio generador , de grado y con . Las palabras de código son exactamente los múltiplos de de grado menor que .
Para detectar, se divide lo recibido por y se mira el resto, que es el síndrome: . Si lo recibido es , con el patrón de error, el resto de es cero y el síndrome sólo depende de . Un error pasa sin verse exactamente cuando es él mismo un múltiplo de : otra palabra de código. Un CRC es esto mismo, un cíclico, o un cíclico acortado, usado sólo para detectar.
Una ráfaga de largo es un patrón de error cuyos unos caben en posiciones consecutivas, con la primera y la última en error; las del medio pueden estar bien o mal. En polinomios, una ráfaga que empieza en la posición es
De los coeficientes de , dos están fijos y son libres: hay ráfagas de largo por cada lugar donde empezar. La fracción no detectada de un largo es cuántas de esas son múltiplos de , sobre el total. Si todas las ráfagas de un largo son igual de probables, es la probabilidad de que una ráfaga de ese largo pase sin verse.
Si la ráfaga fuera una palabra, la dividiría. Como , no es factor de , así que y no comparten nada y la división tiene que caer entera sobre . El lugar donde empieza la ráfaga no importa: lo único que cuenta es .
Y un múltiplo no nulo de tiene grado o más. Si , el grado de es , y no hay forma. Toda ráfaga de hasta bits se detecta, también las que dan la vuelta por el extremo del bloque: en el anillo de posiciones son una ráfaga común vista desde otro origen.
Que divida a es que exista un multiplicador con
Contar las ráfagas que se escapan es contar multiplicadores. Y el multiplicador tiene sus propias condiciones. El término independiente de es , y tiene que valer 1: . Para que tenga grado justo, tiene que tener grado justo: .
En , el grado del multiplicador es : es una constante, la única no nula es 1, y tiene que ser exactamente . De las ráfagas de ese largo, se escapa una sola: el propio generador, corrido a donde haya caído.
Con , el multiplicador tiene grado y coeficientes. Dos están fijos, y , y los del medio son libres. Cada elección da una ráfaga distinta que se escapa, así que son de :
El largo se cancela: alargar la ráfaga en un bit suma un bit libre a la ráfaga y uno al multiplicador, y las dos cuentas se duplican juntas. Por eso la fracción se queda quieta en para siempre.
Y de ahí sale el factor 2. La ráfaga paga siempre dos bits por sus extremos; el multiplicador también, salvo cuando es una constante, en la que el primer coeficiente y el último son el mismo bit. En el multiplicador se ahorra una condición que la ráfaga no se ahorra, y la fracción queda un bit arriba: en vez de . Si el conteo de arriba se aplicara a ciegas con , daría multiplicadores: medio. Hay uno entero.
Arranca con el generador del ejercicio 10 de la práctica, , con y una ráfaga de 4, que no se escapa nunca. Apostá antes de pasar de 5. El conteo no usa la fórmula: recorre las ráfagas y divide cada una por . Las que pasan se listan armadas como , y el aviso dice si las dos cuentas coinciden.
El CRC CCITT X-25 tiene , con . Se dividieron por todas las ráfagas de cada largo, de 15 a 22, y se contaron las de resto cero:
| largo | ráfagas | pasan | fracción |
|---|---|---|---|
| 15 | 8 192 | 0 | 0 |
| 16 | 16 384 | 0 | 0 |
| 17 | 32 768 | 1 | 2⁻¹⁵ |
| 18 | 65 536 | 1 | 2⁻¹⁶ |
| 19 | 131 072 | 2 | 2⁻¹⁶ |
| 20 | 262 144 | 4 | 2⁻¹⁶ |
| 21 | 524 288 | 8 | 2⁻¹⁶ |
| 22 | 1 048 576 | 16 | 2⁻¹⁶ |
Las filas de 17 y de 18 dejan pasar lo mismo, una sola ráfaga; lo que cambia es el total, que se duplica. En 17 la que pasa es el generador, 10000100000010001; en 18 es . Desde ahí, las que pasan y el total se duplican al mismo paso. El ANSI, , da la misma tabla fila por fila.
Da igual con cualquier generador, porque la cuenta no usó nada de salvo su grado y su . Se recorrieron los 1020 polinomios con de grado 3 a 10, cada uno con todos los largos de 1 a : en los 14 312 casos el recuento dio exactamente cero, o , donde la cuenta lo dice.
El tiene una lectura. Un patrón elegido al azar entre los cae sobre una de las palabras con probabilidad . Las ráfagas largas se le escapan al CRC como se le escaparía ruido sin forma. La de es el único largo que le va peor que al azar.
El CRC de IEEE 802.3 tiene . Ve toda ráfaga de hasta 32 bits. De las ráfagas de 33 se le escapa una sola, su propio generador, entre posibles: una en 2 147 483 648. De 34 bits en adelante, una en . El peor caso no es la ráfaga larga, que se ve casi como ruido, sino la que se pasa por un bit.
Ninguna de las dos cifras depende del largo de la trama: el lugar donde empieza la ráfaga se fue en la sección 02. Lo que la trama decide es cuántos lugares hay. Las garantías de un CRC se leen de a largo de ráfaga, y la del largo es la más floja de todas.