CONTROL DE ERRORES DETECCIÓN DE ERRORES • Ejecutada por el receptor y consiste en tener mecanismos para saber si lo que ha llegado está correcto o no. • Si está correcto debe ser procesada y enviada al nivel inmediatamento superior. • Si está mala, debe ignorarlo o tratarlo de corregir. • Se utilizan códigos detectores de errores • Algunas técnicas para la detección de errores son: – Duplicidad – Paridad – Códigos de Redundancia Cíclica Fundamentos de Protocolos Edwin Montoya 1 PARIDAD • Puede ser “par” o “impar” • Se adiciona un bit a cada caracter, y este bit completará un número “par” de 1´s o un número “impar” de 1´s. – Ej: Paridad “par”: 01011010[0], 11000100[1] – Ej: Paridad “impar”: 11011001[1], 10101101[0] • Su eficiencia es del 50% • Puede combinarse paridad horizontal o vertical Fundamentos de Protocolos Edwin Montoya CÓDIGO DE REDUNDANCIA CICLICA - CRC • Los mensajes en la red se tratan como POLINOMIOS con coeficientes 0 y 1. • Un mensaje de k bits, se considera un polinomio x^(k-1) a x^0. • Tanto transmisor como receptor deben tener un acuerdo respecto al POLINOMIO GENERADOR G(x) • Definamos M(x) el polinomio del mensaje original de longitud m bits y de grado m-1. • El grado de M(x) debe ser mayor que el de G(x). • El algoritmo para calcular la Suma de Comprobación es: • Sea r el grado de G(x), agrege r bits en 0 al final del mensaje, quedando x^rM(x) Fundamentos de Protocolos Edwin Montoya 2 CRC (cont.) • Divida x^rM(x) entre G(x) usando división módulo 2. • Reste el residuo a x^rM(x) usando resta modulo 2 • Este resultado llamado T(x) es el que se transmite por la red • En el lado del receptor al realizar la operación T(x) / G(x) el residuo debe ser 0, de lo contrario hubo un error Fundamentos de Protocolos Edwin Montoya CORRECCIÓN DE ERRORES • Estas acciones se toman cuando la unidad de datos esta mala. • Una de las técnicas más utilizadas es la de RETROALIMENTACIÓN, que consiste en avisarle al ORIGEN del éxito o fracaso de la transmisión. • La otra forma de corregir es en el mismo destino, generalmente se conocen como técnicas de Corrección de Errores Adelante (Forward Error Correction – FEC), se utilizan técnicas de códigos correctores de errores como el de Hamming y técnicas de Entrelazado Fundamentos de Protocolos Edwin Montoya 3 CÓDIGO CORRECTORES DE ERRORES - HAMMING • Se tiene unidades de datos de m bits, adicionamos r bits redundantes, entonces la longitud total es: n = m + r. • Palabra códido = datos + bits redundantes. • La cantidad de bits en los que difieren DOS palabras código, se le conoce como DISTANCIA HAMMING d. • Si dos palabras código están tienen una distancia d, se requieren d errores de bit para convertir una en la otra • Normalmente todas las combinaciones de 2^m son posibles, pero dependiendo de la forma en como se calculan los bits redundantes, no será posible que se de todas las 2^n combinaciones. Fundamentos de Protocolos Edwin Montoya HAMMING (cont.) • La propiedad de detección y corrección dependen de su distancia: • PARA DETECTAR d ERRORES se necesita un código con distancia d+1 • PARA CORREGIR d ERRORES se necesita un código con distancia 2d+1 • Por ejemplo con PARIDAD par o impar, que es un código de un bit, tiene una distancia 2. • Ejemplo de corrección: código con 4 palabras válidas: 00000000, 11110000, 00001111, 11111111. • El código tiene una distancia d = 5, lo que significa que puede corregir errores dobles Fundamentos de Protocolos Edwin Montoya 4 CORRECCIÓN DE ERRORES MEDIANTE RETRANSMISIÓN • Las técnicas de corrección mediante Retransmisión, consiste en que el receptor informa al transmisión por el éxito o fracaso de la transmisión. • Los protocolos en los cuales el receptor envia un reconocimiento POSITIVO, suele llamarse PAR (positive acknowledgment with retransmission) o ARQ (automatic repeat request) • El transmisor debe activar temporizadores de espera de ACKs o NAKs, si expira este timer, se procede a la retransmisión. • Para evitar Duplicados se deben numerar los mensajes. Fundamentos de Protocolos Edwin Montoya RETRANSMISIÓN (cont.) • Los temporizadores deben elegirse con suficiente tiempo para enviar datos y recibir el ACK. • Se pueden distinguir 3 protocolos de ventana deslizante. – Parada y espera: Tamaño de ventana transmisora = 1 – Repetición no selectiva o Regresar a n (GoBackN): Tamaño de ventana receptora = 1 – Repetición Selectiva: Tamaño de ventana receptora > 1. Fundamentos de Protocolos Edwin Montoya 5 PROTOCOLO SIMPLE DE PARADA Y ESPERA • Efecto del timeout corto Fundamentos de Protocolos Edwin Montoya Stop and Wait (cont) • En el protocolo anterior podemos distinguir las siguientes caracteristica: – El protocolo esta diseñado principalmente para canales simplex o cuando se utiliza en canales full-duplex, siempre los receptores deben enviar los ACKs respectivos, esto claramente congestion más la red. – Dependiendo del tiempo de ida (datos) y vuelta (ack), un transmisor pasará la mayor parte del tiempo esperando y por lo tanto la eficiencia del ancho de banda será muyt bajo (ejemplo: canal satelite). Fundamentos de Protocolos Edwin Montoya 6 Stop and Wait (cont) • Una primera mejora al protocolo, es aprovechar los canales fullduplex, es que cuando un receptor recibe los datos, no transmite un mensaje inmediatamente de ACK, sino que espera que el nivel superior le envie datos para a la vez que se envian estos al transmisor original (que ahora se convertirá en un receptor) se agregue un campo de control donde se indique el estado de la recepción pasada. Esto se conoce como Incorporación (piggybacking). • Con la técnica de incorporación, debemos manejar TIMERs para determinar el envio independiente de un ACK al no obtener un mensaje del nivel superior. • Respecto a la ineficiencia del uso del ancho de banda por parte del transmisor, se soluciona con la premisa que el transmisor podría enviar varios mensajes sin espera que lleguen los acks. Fundamentos de Protocolos Edwin Montoya FUNDAMENTOS DE VENTANAS DESLIZANTES • Cada marco debe ser numerado o secuenciado con un valor entre 0 y un máximo (2^n -1). • Se utiliza un campo de número de secuencia de n bits • Se tiene Ventana del Transmisor y Ventana del Receptor. • La Ventana del Transmisor, son todos los mensajes que puede ENVIAR sin esperar ACK. Los números de secuencia en la ventana del transmisor, son todos los mensajes que se han enviado y que no han sido reconocidos. • La Ventana del Receptor, son todos los mensajes que puede ACEPTAR Fundamentos de Protocolos Edwin Montoya 7 FUNDAMENTOS DE VENTANAS DESLIZANTES (cont.) • Ambas ventanas no tienen que tener el mismo tamaño ni rango. • En algunos protocolos los tamaños de las ventanas son fijos y en otras variable. • El transmisor debe mantener todos los mansajes no reconocidos en buffers. • En todos los mensajes debemos incorporar un campo para número de secuencia (seq) y un campo para número de acuse de recibo (ack) Fundamentos de Protocolos Edwin Montoya FUNDAMENTOS DE VENTANAS DESLIZANTES (cont.) Fundamentos de Protocolos Edwin Montoya 8 VENTANA DESLIZANTE DE PARADA Y ESPERA • Tamaño de ventana del transmisor de 1, n = 1. • Caso particular del protocolo de parada y espera REPETICIÓN NO SELECTIVA ó GOBACK-N • El protocolo anterior no tiene mayor problema, siempre que el tiempo de propagación sea bajo, pero esta es una situación no muy real, sobre todo en la parte MAN o WAN. • Por ejemplo un canal satelite a 50 Kbps, con un tiempo de ida y vuelta de 500 ms, si enviamos un mensaje de 1000 bits Fundamentos de Protocolos Edwin Montoya REPETICIÓN NO SELECTIVA ó GOBACK-N (cont.) • El tiempo de transmisión es 20 ms y solo despues de 520 ms estaremos recibiendo el ACK. Segun esto la eficiencia del canal es 20/520, aprox. 4 %. • La solución esta en permitir enviar w mensajes antes de bloquearse, en lugar de uno solo. • La idea es transmitir varios mensajes durante el tiempo de ida y vuelta. • El tamaño de la ventana del transmisor debe ser de (2^n -1 ), no como podria esperarse de un tamaño 2^n, porque?, porque con un tamaño de ventana de 2^n puede duplicarse totalmente los mensajes de una ventana. Fundamentos de Protocolos Edwin Montoya 9 REPETICIÓN NO SELECTIVA ó GOBACK-N (cont.) • Lógicamente antes que el transmisor pueda enterarse que sucedio con los paquetes enviados, pueden haber llegado muchos malos, es claro que los malos seran eliminados, pero que debe hacer un receptor con los mensajes que si han llegado buenos, pero que aún no se pueden enviar al nivel superior? hay dos soluciones, una planteada para el caso de GoBackN, en el cual, los mensajes buenos pero en desorden SON DESCARTADOS. El otro enfoque será el de la repetición selectiva en el cual el receptor no elimina los mensajes que llegan buenos despues de uno malo y además el transmisor solo retransmite los mensajes malos (aunque puede tardar algún tiempo para saber cuales son malos) y el receptor posee reconocimientos acumulativos. • Estos dos enfoques poseen un compromiso entre ancho de banda y buffers. Fundamentos de Protocolos Edwin Montoya REPETICIÓN SELECTIVA • Este esquema posee un mejor aprovechamiento del ancho de banda. • En este esquema se permite que el receptor almacene mensajes en desorden, siempre y cuando caigan en el rango de la ventana del receptor, pero a diferencia del anterior caso se presenta un problema que puede duplicar mensajes, esto se puede dar por el solape de dos ventanas de recepción consecutivas que pueden tener los mismos números de secuencia. • La solución a esto es tener tamaños de ventana del receptor no mayor a la mitad de la capacidad de secuenciamiento e igualmente este debe ser el número de buffers. • Cuando se detectan mensajes malos, podría reclamarse la retransmisión unicamente de un mensaje especificado, esto realiza mediante el envio de reconocimientos negativos (NAK) especificando que mensaje quiere que se le retransmita. Fundamentos de Protocolos Edwin Montoya 10