Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las redes de computadores deben ser capaces de transmitir datos de un dispositivo a otro con cierto nivel de precisin. Para muchas aplicaciones, el sistema debe garantizar que los datos recibidos son iguales a los trasmitidos. Sin embargo, siempre que una seal electromagntica 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 temporizacin de la seal. Si la seal 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 transmisin. Algunas aplicaciones tienen cierta tolerancia de errores (ej. transmisin de audio/video), mientras que para otras aplicaciones se espera un alto nivel de precisin (ej. transmisin de archivos). En este documento se discuten algunos conceptos relacionados con la deteccin y correccin de errores en la transmisin de datos, as como algunas tcnicas que llevan a cabo estas tareas.
1 Tipos de Errores
Antes de estudiar los mecanismos que permiten la deteccin y/o correccin de errores, es importante entender cules son esos posibles errores.
Recibido:
En este caso, la longitud de la rfaga sera 5, porque es la distancia en bits desde el primer bit errneo hasta el ltimo. Dentro de la rfaga puede haber bits correctos y/o errneos. La presencia de errores de rfaga es ms probable en las transmisiones en serie. La duracin del ruido es normalmente mayor que la duracin del bit, lo que significa que cuando el ruido afecta los datos, afecta un conjunto de bits. El nmero de bits afectados depender de la tasa de datos y de la duracin del ruido.
2 Redundancia
Una vez que se conocen los tipos de errores que pueden existir, es necesario identificarlos. En un entorno de comunicacin de datos no se tendr una copia de los datos originales que permita comparar los datos recibidos para detectar si hubo errores en la transmisin. En este caso, no habr forma de detectar si ocurri un error hasta que se haya decodificado la transmisin y se vea que no tienen sentido los datos recibidos. Si los computadores comprobaran errores de esta forma, sera un proceso muy lento y costoso. Es necesario un mecanismo que sea sencillo y completamente efectivo. El concepto clave para detectar o corregir errores es la redundancia. Para esto es necesario enviar bits extra junto con los datos. Estos bits son aadidos por el emisor y eliminados por el receptor, permitiendo detectar y posiblemente corregir los bits afectados. Un mecanismo de deteccin de errores que podra satisfacer los requisitos antes expuestos sera enviar dos veces cada unidad de datos. El dispositivo receptor podra entonces comparar ambas copias bit a bit. Cualquier discrepancia indicara un error y se podra corregir mediante un mecanismo apropiado. Este sistema sera extremadamente lento. No solamente se doblara el tiempo de transmisin, sino que adems habra que aadir el tiempo necesario para comparar cada unidad bit a bit. El concepto de incluir informacin extra en la transmisin con el nico propsito de comparar es bueno. Pero en lugar de repetir todo el flujo de datos, se puede aadir un grupo ms pequeo de bits al final de cada unidad. Esta tcnica se denomina redundancia porque los bits extra son redundantes a la informacin, descartndose tan pronto como se ha comprobado la exactitud de la transmisin [1][2].
5 Cdigos de bloque
Para entender la manera en que pueden manejarse los errores, es necesario estudiar de cerca cmo 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 verificacin, 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 robustez del proceso son factores importantes del esquema de codificacin [1][2].
El emisor crea palabras codificadas a partir de palabras de datos usando un generador que aplica reglas y procedimientos de codificacin especficos del esquema empleado. Cada palabra codificada que es enviada al receptor puede variar durante la transmisin. Si la palabra codificada recibida no es vlida, es descartada. Sin embargo, si la palabra codificada es modificada como otra palabra codificada vlida durante la transmisin, el error no ser detectado.
Una vez que se recibe una palabra invlida, el receptor calcula la distancia Hamming entre la palabra recibida y las palabras vlidas. La menor de las distancias calculadas indica cual es la palabra codificada vlida que el emisor originalmente transmiti. Si dos o ms palabras vlidas
generan el mismo valor, que resulta ser el mnimo, entonces el error no puede ser corregido y la palabra recibida se descarta. En la mayora de las aplicaciones de transmisin 2m palabras son vlidas, pero como se ha visto, debido a la manera en que se codifican no se usan las 2n palabras codificadas posibles. Es viable entonces hacer una lista de las palabras codificadas vlidas y encontrar las dos cuya distancia Hamming sea mnima. Esta ser la distancia Hamming de todo el cdigo [1][4]. Las propiedades de deteccin y correccin de errores de un cdigo dependen de su distancia Hamming. Si dos palabras codificadas estn separadas una distancia Hamming d, se requerirn d errores de un bit para convertir una en otra. Para detectar d errores se necesita un cdigo de distancia d + 1, pues con tal cdigo no habr manera de que d errores de bit puedan cambiar una palabra codificada vlida a otra. Cuando el receptor encuentra una palabra codificada no vlida, sabe que ha ocurrido un error de transmisin. De manera similar, para corregir d errores se necesita un cdigo de distancia 2d + 1, pues as las palabras codificadas vlidas estarn tan separadas que, an con d cambios, la palabra codificada original sigue estando ms cercana que cualquier otra palabra codificada, por lo que puede determinarse de manera nica [4]. El Ejemplo 1 muestra dos sencillos cdigos de bloque para la deteccin y correccin de errores de un bit: Ejemplo 1: Cdigo para deteccin de errores Palabra de Datos Palabra Codificada 00 000 01 011 10 101 11 110 Cdigo para la correccin de errores Palabra de Datos Palabra Codificada 00 00000 01 01011 10 10101 11 11110
El ejemplo muestra la notable diferencia en la cantidad de bits de redundancia necesarios entre una tcnica de deteccin en contraste con los necesarios en una tcnica de correccin de errores.
6 Cdigos cclicos
Los cdigos cclicos son cdigos de bloque que cumplen varias propiedades: Al aplicar la operacin XOR sobre dos palabras codificadas vlidas, se genera otra palabra codificada vlida. Si una palabra codificada vlida es rotada en forma cclica, el resultado es otra palabra codificada vlida.
Por ejemplo, si se tiene la palabra codificada 1001101001, y se rota hacia la izquierda de forma cclica, entonces 0011010011 debe ser una palabra codificada vlida [1][3]. 6
Si el bit ms a la izquierda del resto es cero (0), no se puede usar el divisor compartido, sino que se debe usar una cadena de ceros de la misma longitud. Este proceso se mantiene hasta que se hayan usado todos los bits en el dividendo. Ejemplo 2: Datos = 100100 Datos + ceros extra = 100100000 Divisor = 1101 (Se comparte entre emisor y receptor)
100100000 1101 - 1000 1101 -1010 1101 - 1110 1101 - 0110 0000 - 1100 1101 - 001
En este caso, se divide por una secuencia de ceros porque el resultado de la divisin comienza con un bit cero.
sea su valor. La razn es que la entrada de la operacin del XOR sern dos bits iguales (1 o 0). Basndose en estos puntos, es posible disear un divisor cableado fijo que sea usado para un cdigo cclico si se conoce el patrn del divisor. Se construye un circuito de desplazamiento basndose en el divisor acordado, segn en los siguientes puntos [1][2]: 1. Se tiene un flip-flop para cada bit del divisor, excepto el ms significativo (r 1 flip-flops). 2. Se coloca una compuerta XOR en la entrada de cada flip-flop cuya posicin correspondiente en el divisor sea un bit 1. 3. Se hace una retroalimentacin de la salida del flip-flop correspondiente al segundo bit ms significativo (el primero no se representa con flip-flop) hacia todas las compuertas XOR presentes en el circuito. La Figura 5a muestra el diseo general del circuito para codificador; mientras que la 5b muestra el decodificador.
El proceso para obtener el resto mediante el uso del circuito se divide en los siguientes pasos [1][2]: 1. Se asume que el contenido original de los registros es cero. 2. En cada seal de reloj (llegada de un bit de la palabra de datos aumentada con ceros), se repiten las siguientes acciones: a. Se aplica XOR en cada compuerta presente con las entradas respectivas. b. Se desplazan las entradas de registro en registro hacia la izquierda. 3. Una vez que se han tratado todos los bits de la palabra de datos aumentada, el contenido final de los registros ser el resto CRC que debe concatenarse con la palabra de datos.
10
Ejemplo 3: Se asume que los datos a ser verificados son los siguientes: 0x0123456789ABCDEF (mostrados en hexadecimal por comodidad). Se dividen en bloques de 16 bits y se suman de la siguiente forma: 0123 4567 89AB CDEF 19E24 9E24 0001 9E25
Excede 16 bits
En el receptor, el clculo de la suma sera de la siguiente manera: 0123 4567 89AB CDEF 61DA 1FFFE FFFE 0001 FFFF
Excede 16 bits
Nota
Se recomienda revisar otras tcnicas de control de errores vistas en clase en la bibliografa de la materia.
Referencias
1. 2. 3. 4. Forouzan, B. Data Communications and Networking. Mc Graw Hill. 4thed. 2007. Stallings, W. Comunicaciones y Redes de Computadores. Prentice Hall. 7 ed. 2004. Stallings, W. Wireless Communications and Networks. Prentice Hall. 2001. Tanenbaum, A. Redes de Computadores. Prentice Hall. 4 ed. 2003.
11