Capa de enlace 1 Capa de enlace Se encarga de controlar la comunicación entre dos máquinas “adyacentes” Adyacentes significa conectadas mediante un “cable” o algo que actúa como tal Los principales problemas son: errores del medio físico retardo de los canales Esta unidad refiere principalmente a enlaces punto a punto, los problemas específicos de los medios compartidos se abordan en la unidad específica de sub-capa MAC 2 Objetivos de la capa de enlace Brindar servicios a la capa de red Entramado Control de errores Control de flujo 3 Servicios posibles sin conexión ni confirmación cuando hay baja tasa de error cuando datos atrasados son peores que datos erróneos (tiempo real=voz, video) Servicio típico en LANs sin conexión con confirmación en casos de canales con alta tasa de errores (ej. inalámbricos) con conexión y confirmación se sabe si los mensajes llegan o no se numeran y se hacen llegar en orden se asegura que llegan solo una vez con conexión y sin confirmación Poco común (poco razonable) 4 Entramado La capa 2 para dar el servicio a la capa de red debe valerse de la capa física Como hay errores en la capa física hay que detectar y eventualmente corregir errores División en tramas y hacer un control de error en cada trama La división en tramas no es tan sencilla 5 Métodos de entramado Conteo de caracteres Caracteres de delimitación Banderas de delimitación Violaciones del código de línea de la capa física 6 Conteo de caracteres 7 Problemas Si se corrompe el encabezado de la trama se pierden las fronteras de tramas No se puede re-sincronizar 8 Caracteres de principio y fin Orientado a caracteres Insertar banderas para delimitar el comienzo y fin de la trama Comúnmente se delimita con caracteres ASCII especiales (de control) DLE STX = bandera de comienzo DLE ETX = bandera de fin Se transmite DLE STX Datos de capa de red DLE ETX Qué pasa si aparece DLE STX (o DLE ETX) entre los datos de capa de red? 9 Caracteres de principio y fin (inserción de caracteres, para lograr transparencia) Recibido de la capa de red en el Tx: A DLE B Inserción de caracteres: A DLE DLE B Inserción de banderas (lo que se transmite): DLE STX A DLE DLE B DLE ETX En el receptor se procesa de modo que: DLE STX = bandera de comienzo DLE DLE = se saca un DLE DLE ETX = bandera de fin Se entrega a la capa de red en el Rx: A DLE B 10 Problema Muy pensado para caracteres de 8 bits Y contenido ASCII 11 Banderas e inserción de bits (Orientado a bits, se insertan bits para transparencia) Misma idea pero con banderas definidas como patrones de bits Bandera típica 01111110 = 7E hexa Se insertan bits de relleno 12 Inserción de bits Se define la bandera 01111110 Se debe evitar que la bandera aparezca en los datos En transmisión: Se interrumpe cualquier secuencia de 6 “1”s seguidos insertando un “0” luego del quinto “1” Sin importar lo que venga después!!! Se insertan las banderas y se envía al receptor En recepción: Se reconocen las banderas 01111110 Si se ven 5 “1” y un “0” se saca el “0” Sin importar lo que venga después!!! 13 Violaciones del código de línea de la capa física El código de línea de la capa física tiene un alfabeto para representar el “1” y el “0” lógicos con niveles de amplitud o frecuencias o fases Se puede usar para representar el comienzo y fin de trama una combinación de amplitud, frecuencia o fase que no corresponda ni a “0” ni a “1” Problema: viola la independencia de capas 14 Control de errores Detectar errores en la trama recibida Descartar la trama Eventualmente comunicar a la entidad par la existencia de errores Corrección de errores 15 Códigos correctores y detectores de error (1) Qué es un error ? Una trama tiene m bits y se agregan r bits de redundancia o de chequeo Los datos a transmitir serán n = m + r Distancia de Hamming es el número de bits en que difieren dos palabras del código La mínima es la distancia del código En general hay 2m mensajes válidos pero no todos los 2n lo son 16 Códigos correctores y detectores de error (2) Distancia 2 entre palabras válidas Distancia 4 entre palabras válidas Un error de un bit no permite determinar de cuál palabra válida proviene Un error de un bit permite suponer de cuál palabra válida proviene 17 Códigos correctores y detectores de error (3) La detección y corrección se basa en la distancia de Hamming del código Para detectar d errores necesito un código de distancia d+1 Para corregir d errores necesito un código de distancia 2d+1 Ej: un bit de paridad agregado a los datos es de distancia 2, un error invalida la palabra sirve para detectar errores simples 18 Códigos correctores y detectores de error (4) Si queremos un código para corregir errores simples con n = m + r Si invertimos cada uno de los n bits de una palabra de código tenemos n palabras de código ilegales a distancia 1 de la correcta Entonces cada uno de los 2m mensajes legales, debe tener n+1 palabras dedicadas que puedan ser unívocamente asignadas a él Para que se pueda realizar: (n+1) 2m <= 2n => (m + r +1) <= 2r dado m hay un límite inferior para r 19 Códigos de Hamming Ejemplo real del límite teórico Las posiciones 2i son ocupadas por los bits de chequeo (1,2,4,8, etc) Las restantes se ubican los datos Ejemplo: Palabras de 7 bits, se codifican en 7+4=11 bits ya que 7+4+1 <= 24 (menos de 4 no cumple) 20 Códigos de Hamming (2) Palabra 1011001 queda ab1c011d001 hay unos en posición 3,6,7 y 11 11=1011 7=0111 6=0110 3=0011 suma=1001=dcba transmito 10100111001 en recepción sumo el índice de los que tienen 1 y si da 0 está bien, sino tengo la ubicación del error 21 Códigos de Hamming 22 Ráfagas y Matrices Hamming funciona para errores de un bit Hay una “pisada” para que sirvan para errores en ráfagas Agrupar en forma de matriz y mandar por columnas Consideraciones: largo de la ráfaga el mensaje llega retardado 23 Códigos detectores de error Si la tasa de error es baja conviene detectar y retransmitir en vez de corregir En trama de 1000 bits se necesitan 10 bits de test para corregir y alcanza con 1 bit para detectar Intuitivamente: si tengo tasa de error de 10-6 con corrección: 10*1000=10000 bits de más con detección y retransmisión: envió 1*1000+1001=2001 bits de más 24 Códigos detectores de error El problema con lo anterior es que con 1 bit la probabilidad de detección de una ráfaga es 0.5 Se pueden hacer matrices que mejora Se usan en general códigos polinómicos llamados también códigos de redundancia cíclica (CRC) 25 Códigos polinómicos Se tratan los mensajes de bits como coeficientes de un polinomio Si tengo un mensaje de k bits, ck-1ck-2...c0 lo puedo ver como un polinomio de grado k-1 ck-1xk-1 +ck-2xk-2+...+c0x0 Ej: 110001 se representa como x5+x4+x0 La aritmética se hace en módulo 2, no hay acarreos y tanto la suma como la resta son idénticas al XOR 26 Códigos polinómicos (2) El transmisor y receptor deben ponerse de acuerdo en el uso del llamado polinomio generador P(x) Los coeficientes más y menos significativos de P(x) deben ser 1 El mensaje de m bits se representa como M(x) y la trama a transmitir es más larga que el largo de P(x) 27 Códigos polinómicos (3) La idea es agregar una suma de comprobación al final de la trama de modo tal que el polinomio representado por el conjunto sea divisible entre P(x) El receptor divide lo que recibe entre P(x), si el resto es 0 no hay errores. Si es distinto de 0 es porque hubo errores en la transmisión 28 Códigos polinómicos (4) El algoritmo es: Si r es el grado de P(x), agrego r bits en 0 en la parte menos significativa de la trama. Lo que tengo entonces es la representación de xr M(x) Divido xr M(x) entre P(x) con aritmética módulo 2 y obtengo un resto R(x) (con menos de r bits) Resto a R(x) a xr M(x) y el resultado es lo que se transmite G(x) que obviamente es divisible entre P(x) 29 Códigos polinómicos (5) Supongamos que hay un error y el receptor recibe G(x)+E(x) donde E(x) es el error (tiene un 1 en cada bit que se invirtió) El receptor divide (G(x)+E(x))/P(x) y calcula el resto de la división Como: Resto[(G(x)+E(x))/P(x)] = Resto[G(x)/P(x)] + Resto[E(x))/P(x)] y Resto[G(x)/P(x)] = 0 => el resultado es Resto[E(x)/P(x)] Solo se escapan los patrones de error que correspondan a un polinomio divisible entre P(x) 30 Códigos polinómicos (6) El problema pasa a ser entonces elegir adecuadamente el P(x) Se hace en base a propiedades de los polinomios, por ejemplo: Para detectar error simple: E(x)=xi (*) se necesita que P(x) tenga al menos dos términos Para detectar dos errores: E(x)=xi+xj=xj(xi-j+1) Si P(x) no es divisible por x (condición *) se necesita que P(x) no divida a xk+1 para cualquier k<i-j (largo de la trama) etc... 31 Códigos polinómicos (7) Polinomios generadores estandarizados: CRC-16 (16 bits) x16+x15+x2+1 CRC-CCITT (16 bits) x16+x12+x5+1 IEEE 802 (32 bits) x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1 Los de 16 bits detectan: 100% simples y dobles 100% los de número impar de bits 100% de ráfagas de largo 16 o menos 99.99% de ráfagas de 17 bits o más bits 32 Protocolos elementales de enlace Formato de la trama básica: Tx Rx tipo, seq, ack, información Protocolo Simplex Datos en una sola dirección Capas siempre prontas Tiempo de procesamiento nulo Buffer infinito Canal perfecto (sin ruido) t 33 Protocolo simple stop-and-wait o parada y espera Velocidad de recepción, finita o lo que es equivalente tamaño máximo de buffer en RX Solución 1: insertar retardo Tx Rx Como se calcula el retardo ? si es demasiado corto retransmito de más, si es muy largo uso bajo del canal t Puede haber variaciones según la carga del receptor Solución 2: reconocimiento positivo (ACK) uso half-duplex del canal 34 Protocolo simple sobre canal con ruido (1) Las tramas se pueden corromper o perder totalmente Se agrega código detector de errores Si se corrompen la suma de comprobación lo detecta Temporizadores para recuperación de errores si no llega el reconocimiento Reconocimientos positivos o negativos 35 Protocolo simple sobre canal con ruido (2) Problema: se pierde ACK y se duplica una trama Necesidad de números de secuencia Cuantos números de secuencia se necesitan ? En stop & wait solo 2: 0 y 1 pues hasta no recibir reconocimiento del 0 no intento mandar el 1 Cuando se espera la trama 0 se rechazan las que no sean 0 y al recibirse se espera por la 1 36 Piggybacking Es interesante el uso del canal para datos en ambas direcciones Como el campo ACK es parte del encabezado, puedo mandar información en la misma trama de ACK Esto se llama piggybacking Problema: Cuanto esperar ? POCO: debo mandar trama solo con ACK MUCHO: el TX da timeout 37 Protocolos de ventana deslizante y control de flujo En el caso de protocolos de transmisión confiables, se utilizan protocolos de ventana deslizante de modo que se pueda garantizar que se recibe todo correctamente Permiten mejorar el uso del canal e implementar control de flujo En los protocolos de transmisión no confiables, no hay acuse de recibo y no hay mecanismos para el control de flujo 38 Ventanas deslizantes En el caso general el transmisor tendrá: Un conjunto de números de secuencia que puede usar para numerar las tramas que envía Un conjunto de buffers destinados a almacenar las tramas que le van llegando para enviar y las tramas que ya envió pero que aún no fueron confirmadas En el caso general el receptor tendrá: Un conjunto de números de secuencia que está dispuesto a aceptar Un conjunto de buffers destinados a almacenar las tramas que le van llegando A medida que vaya completando la secuencia, las enviará a la capa superior 39 Ventanas deslizantes Dato desde la capa superior Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Dato hacia la capa superior Una vez que el Tx recibe el ACK corre su ventana porque sabe que la trama 0 fue recibida correctamente y no tendrá que retransmitirla Una vez que el Rx envía el ACK corre su ventana para no vover a recibir una repetición de la trama 0 40 Ventanas deslizantes Dato desde la capa superior Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Dato hacia la capa superior 41 Ventanas deslizantes (cuando los reconocimientos demoran) Datos desde la capa superior Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Este dato no puede aceptarse porque no hay espacio en la ventana A medida que el Tx comienza a recibir los ACKs puede correr su ventana y aceptar nuevos datos de la capa superior 42 Ventanas deslizantes (cuando hay errores y se pierden datos) Datos desde la capa superior Tx 0 1 2 3 4 5 Rx 0 1 2 3 4 5 Este dato NO lo puedo pasar a la capa superior porque me falta 6701234567 la trama 2. Acá mando un Cuando me ACK_2 repetido o llegue la mando un NACK_2 retransmisión enviaré un ACK_3 y podré pasar a la capa superior 6701234567 el contenido de las tramas 2 y 3 Estos datos los puedo pasar a la capa superior porque están en secuencia 43 Ventanas deslizantes (nomenclatura) Cuando la ventana del receptor es de tamaño 1, entonces se obliga a recibir en orden y si se pierde una trama, habrá que retransmitir desde la perdida en adelante: go-back-n (volver n para atrás) Si la ventana es mayor que 1 se retransmite la trama perdida y se asume que las siguientes ya transmitidas llegarán bien: repetición selectiva 44 Especificación y verificación de Protocolos Alta complejidad en la implementación de protocolos Se buscan técnicas para la especificación y verificación de protocolos Problemas bloqueo (deadlock) recepción de eventos inesperados Diagrama de estados Redes de Petri 45 Diagrama de estados 46 Redes de Petri 47 Ejemplos HDLC High-level Data Link Control Origen SDLC de IBM modificado por ANSI a ADCCP, modificado por ISO a HDLC HDLC modificado por ITU-T a LAP y remodificado luego a LAPB para hacerlo más compatible con las últimas versiones de HDLC Usado en X25, enlaces punto a punto, etc Orientado a bits y usa relleno de bits para transparencia de datos 48 Trama básica de HDLC Formato de trama y campo de control Information supervisory unnumbered 49 Tipos de tramas de supervisión (campo Type) 0 Receive ready (ACK) 1 Reject (NACK) 2 Receive not ready (reconoce hasta pero sin incluir Next) 3 Selective Reject (restransmisión de trama en particular) 50 Tipos de tramas no numeradas (campo Type+Modifier) No se usan todas las combinaciones de 5 bits Comandos típicos: Disconnect (DIS) Set Asynchronous Balance Mode (SABM) Frame Reject (FRMR) Unnumbered Acknowledgement (UA) Etc. 51 Enlace de Datos en Internet en enlaces punto a punto SLIP Serial Link IP Objetivo: conectarse a una red con TCP/IP PPP Point to Point Protocol Objetivo: generalizar SLIP 52 Conexión a Internet 53 Protocolo SLIP Flag 0xC0 al final 0xC0 => 0xD0 0xC0 0xD0 => 0xD0 0xD0 Compresión de encabezamiento Problemas: No detecta errores Sólo soporta IP Se debe conocer la dirección IP No hay autentificación de usuario 54 Protocolo PPP Provee de: Entramado (framming) con detección de error LCP (Link Control Protocol): para conectarse, testear la línea, negociar opciones y terminar una conexión NCP (Network Control Protocol): una manera de negociar opciones a nivel de capa de red (por ej. la dirección) 55 Formato de trama en PPP 56 Diagrama simplificado 57 Ejemplo de detección de celdas en ATM 5 48 58