PRIMERA PARTE Tema 1: Capítulo 2 Nivel de Transporte Javier Yágüez Profesor Titular de Universidad 1 NIVEL DE TRANSPORTE TRANSPORTE FIABLE TCP Soy TCP © 2012 Cisco and/or its affiliates. All rights reserved. 2 REDES DE COMPUTADORES Transporte y Aplicación NIVELES SUPERIORES TCP/IP NIVELES EXTREMO a EXTREMO NIVELES NIVELES SUPERIORES SUPERIORES SISTEMA FINAL APLICACIÓN TCP/UDP EXTREMO A EXTREMO EXTREMO A EXTREMO IP SISTEMA FINAL APLICACIÓN TCP/UDP IP IP IP INTERFAZ DE INTERFAZ INTERFAZ INTERFAZ INTERFAZ INTERFAZ DE RED DE RED DE RED DE RED DE RED RED WiFi Ethernet NIVELES ROUTER ROUTER NIVELES INFERIORES (SISTEMA INTERMEDIO) (SISTEMA INTERMEDIO) INFERIORES Nivel de Transporte 3 REDES DE COMPUTADORES PROTOCOLO TCP (Transmission Control Protocol) RFC-793, STD 0007 Transporte fiable de los mensajes de aplicación encapsulados en segmentos TCP Responsable de la recuperación de todos los segmentos perdidos en el nivel de enlace y red Las unidades de datos del protocolo TCP (“PDUs TCP”) se denominan segmentos TCP SISTEMA FINAL SISTEMA FINAL mensajes APLICACIÓN APLICACIÓN ORIENTADO A CONEXIÓN y FIABLE (control de errores y flujo) TCP ROUTER IP … IP TCP ROUTER IP IP INTERFAZ DE INTERFAZ INTERFAZ INTERFAZ INTERFAZ INTERFAZ DE RED DE RED DE RED DE RED DE RED RED Ethernet Ethernet Ethernet CRC (Errores Físicos) Ethernet CRC (Errores Físicos) … • ERRORES: IPv4 checksum, destino inalcanzable, TTL = 0, … • CONGESTIÓN: Desborde del buffer del interfaz de salida Nivel de Transporte • … 4 REDES DE COMPUTADORES Las Pérdidas de los segmentos TCP, o de los paquetes IP que los encapsulan, se suelen ocasionar en los Routers por congestión La congestión en Internet es la pérdida de 1 o más paquetes IP debido al desborde del buffer de la cola del interfaz de salida de un router cuando las tasas de entrada superan las capacidades de salida enlaces de entrada … Caudal IP IP IP IP IP buffer de la cola enlaces del interfaz de salida de entrada … enlace de salida Descarte del último paquete CONGESTIONES O PERDIDAS DE PAQUETES IP EN UN ROUTER DE ACCESO, ESPECIALMENTE CRÍTICO EN ENLACES DE ENTRADA DE ALTA CAPACIDAD Y ENLACES DE SALIDA DE MENOR CAPACIDAD Nivel de Transporte 5 REDES DE COMPUTADORES Ejemplo Gráfico de los potenciales enlaces en algunos routers en el núcleo de Internet SITUACIÓN ESPECIALMENTE CRÍTICA Red Troncal (backbone) de Internet TCP recupera el contenido de los paquetes en caso de errores IP Nivel de Transporte 6 REDES DE COMPUTADORES FIABILIDAD TCP CONTROL DE ERRORES CONTROL DE FLUJO Nivel de Transporte 7 REDES DE COMPUTADORES Control de Errores TCP Fallos en la Comunicación TODOS LOS OCTETOS DE DATOS contenidos en el CAMPO DE DATOS de cada segmento de información VAN NUMERADOS (cada octeto tiene su propio nº de secuencia) y dichos octetos tienen asociados – Una CONFIRMACIÓN • Las confirmaciones, por parte de la entidad receptora TCP, reconocen octetos de datos recibidos correctamente y no los segmentos de información que los contienen porque éstos no van numerados – Un TEMPORIZADOR de espera de CONFIRMACIÓN Al vencimiento del temporizador, al no llegar la confirmación, durante el plazo de espera establecido, se produce una retransmisión Nivel de Transporte 8 REDES DE COMPUTADORES Diseño Operacional TCP Todo proceso o protocolo de aplicación montado sobre TCP se despreocupa de delimitar sus mensajes – El proceso de aplicación pasa el “chorro” o flujo de octetos (byte-stream) de su mensaje de aplicación a su entidad TCP – A medida que va recibiendo octetos del proceso de aplicación, la entidad TCP va, RECOGIENDO, (buffer de transmisión), ALMACENADO NUMERANDO y, posteriormente, AGRUPANDO dichos octetos en segmentos de datos TCP en función del tamaño de su MSS (campo datos) y de la MTU (1500 octetos) de salida – Por esta razón, TCP no numera los segmentos de datos sino los octetos de datos transmitidos Nivel de Transporte 9 REDES DE COMPUTADORES 3 MECANISMOS DE CONTROL DE ERRORES Fallos en la Comunicación Números de secuencia: Todos los octetos del campo datos de un segmento de información disponen de un número de secuencia – Los números de secuencia permiten pasar al nivel de aplicación los octetos de datos (cabecera de aplicación + campo datos de usuario o carga útil) ordenadamente y detectar octetos duplicados si han llegado las confirmaciones con errores físicos o simplemente no han llegado Confirmaciones: Todos los octetos del campo datos de un segmento de información tienen asociados una confirmación Temporizadores: Todos los octetos del campo datos de un segmento de información disponen de un plazo de espera para la confirmación de dichos octetos de datos y al vencimiento sin confirmación se produce una retransmisión Nivel de Transporte 10 REDES DE COMPUTADORES MECANISMOS DE CONTROL DE ERRORES Los TEMPORIZADORES permiten controlar las pérdidas de segmentos de información en un router Temporizadores: Todos los octetos del campo datos de un segmento de información disponen de un plazo de espera para la confirmación de dichos octetos de datos y al vencimiento sin confirmación se produce una retransmisión Pérdida del paquete IP en un router Temporizador de Retransmisión Nivel de Transporte 11 REDES DE COMPUTADORES MECANISMOS DE CONTROL DE ERRORES Los TEMPORIZADORES permiten controlar las pérdidas de segmentos de información por errores de transmisión en el destinatario Checksum al segmento completo Segmento con errores físicos Temporizador de OJO!!! Se elimina cualquier segmento de información con errores físicos Retransmisión Nivel de Transporte 12 REDES DE COMPUTADORES MECANISMOS DE CONTROL DE ERRORES También, los TEMPORIZADORES permiten controlar las pérdidas de confirmaciones ya sean por pérdidas en un router o por errores de transmisión detectados en el destinatario Temporizador de Retransmisión Confirmaciones Todos los octetos del campo datos de un segmento de información tienen asociados una confirmación Nivel de Transporte 13 REDES DE COMPUTADORES MECANISMOS DE CONTROL DE ERRORES Los NÚMEROS DE SECUENCIA PERMITEN CONTROLAR OCTETOS DE DATOS PERDIDOS, DESORDENADOS Y DUPLICADOS SOLUCIÓN PARA DETECTAR DUPLICIDAD EN PÉRDIDAS DE CONFIRMACIONES Números de secuencia: Cada octeto del campo datos de un segmento de información dispone de un número de secuencia Pasar Octeto de Datos al nivel Superior Temporizador de Retransmisión DETECCIÓN DE DUPLICIDAD Para evitar una nueva retransmisión innecesaria por “timeout” Nivel de Transporte 14 REDES DE COMPUTADORES FIABILIDAD TCP CONTROL DE ERRORES CONTROL DE FLUJO Nivel de Transporte 15 REDES DE COMPUTADORES MECANISMO DE CONTROL DE FLUJO Hablas muy deprisa, no te entiendo. Repite!!! Nivel de Transporte 16 REDES DE COMPUTADORES MECANISMO DE CONTROL DE FLUJO CADA PROCESO o ENTIDAD TCP DISPONE DE 2 BUFFERS y 2 VENTANAS DESLIZANTES WT (buffer de transmisión) y WR (buffer de recepción) A B Aplicación Envío Aplicación TCP Recepción Buffer de Transmisión (Ventana de Transmisión) Envío Buffer de Transmisión (Ventana de Transmisión) Buffer de Recepción (Ventana de Recepción) IP Nº SEC = n Primer octeto Buffer de Recepción (Ventana de Recepción) IP Control de los números VENTANA DESLIZANTE DE TRANSMISIÓN del buffer Lista de números de secuencia consecutivos de los octetos de datos que, en un momento dado, el emisor ha enviado pendientes de confirmación BUFFER DE TRANSMISIÓN Los octetos de datos procedentes del proceso de aplicación se recogen, almacenan y numeran en el buffer de transmisión TCPRecepción Nº SEC = n+1 Nº SEC = n+2 Segundo octeto Tercer octeto ... TCP va creando segmentos de datos y los va transmitiendo sin esperar a que se llene el buffer de transmisión Nivel de Transporte 17 REDES DE COMPUTADORES MECANISMO DE CONTROL DE FLUJO CADA PROCESO o ENTIDAD TCP DISPONE DE 2 BUFFERS y 2 VENTANAS DESLIZANTES WT (buffer de transmisión) y WR (buffer de recepción) B A Aplicación Envío Aplicación TCP Buffer de Transmisión (Ventana de Transmisión) Recepción Envío Buffer de Recepción (Ventana de Recepción) Buffer de Transmisión (Ventana de Transmisión) IP Los octetos de datos procedentes de la entidad TCP emisora y que espera recibir la entidad TCP receptora, se recogen y almacenan por su nº de secuencia, en el buffer de recepción TCPRecepción IP Control de los números Primer octeto VENTANA DESLIZANTE DE RECEPCIÓN Lista de números de secuencia consecutivos de los octetos de datos que, en un momento dado, el receptor puede aceptar Nº SEC = n+1 Nº SEC = n+2 BUFFER DE RECEPCIÓN Nº SEC = n Buffer de Recepción (Ventana de Recepción) Segundo octeto del buffer Tercer octeto ... TCP va pasando octetos de datos,, si llegan correctamente a partir del límite inferior sin esperar a que se llene el buffer de recepción Nivel de Transporte 18 REDES DE COMPUTADORES Funcionamiento de la Entidades TCP Emisora y Receptora RFC-793 – CUANDO SE LLENA EL BUFFER DE TRANSMISIÓN, LA ENTIDAD TCP EMISORA VA CREANDO SEGMENTOS DE DATOS – CUANDO SE LLENA EL BUFFER DE RECEPCIÓN, LA ENTIDAD TCP RECEPTORA VA PASANDO LOS DATOS AL PROCESO DE APLICACIÓN CUANDO ÉSTE LO SOLICITE Proliferación en Internet de aplicaciones en tiempo real – Aplicaciones interactivas (VoIP, juegos en red, etc) y no interactivas (streamings de audio y video, p.ej., en HTTP) en tiempo real Mayores velocidades de transmisión en Internet Riesgo de que se llene inmediatamente un buffer de recepción Excepciones: – No se espera a que se llene el BUFFER DE TRANSMISIÓN para enviar segmentos de datos – No se espera a que se llene el BUFFER DE RECEPCIÓN para pasar octetos de datos al proceso de aplicación receptor, es decir, se pasan inmediatamente, DE FORMA ORDENADA, siempre y cuando el proceso de aplicación lo solicite Los procesos receptores de aplicación suelen estar de manera continúa a la espera de recepción de datos, es decir, solicitando datos Nivel de Transporte 19 REDES DE COMPUTADORES El Control de Flujo TCP Características El Control de Flujo lo ejerce el proceso TCP receptor, a través de su WR, sobre el proceso TCP emisor para evitar que éste desborde el buffer del receptor WT en el lado emisor es ESCLAVA de WR en el lado receptor WT va variando puntualmente, en fase de transferencia de datos, en función de la WR del otro extremo Nivel de Transporte 20 REDES DE COMPUTADORES Sincronización de WR y WT para un Correcto Control de Flujo Las implementaciones TCP son muy diferentes en cuanto a los algoritmos auxiliares empleados (p.ej., algoritmos de gestión de ventanas), dependiendo del sistema operativo y su distribución o versión WR inicial = Tamaño máximo del buffer de recepción – Posteriormente, en fase de transferencia de datos, WR va variando, puntualmente, en función de los octetos libres de su buffer de recepción – Límite inferior de WR = Primer octeto de datos esperado – Límite superior de WR = Último octeto de datos esperado – WR = Límite superior – Límite Inferior + 1 – Los datos correctos se almacenan en el buffer de recepción cuando llegan y se entregan al proceso de aplicación por una llamada de solicitud de datos (read) o cuando lo considera conveniente la propia entidad TCP CUANDO LLEGAN OCTETOS DE DATOS CORRECTOS (primer octeto coincide con el límite inferior de WR) • La entidad TCP receptora: – ALMACENA los octetos de datos recibidos – CONFIRMA los octetos de datos recibidos – PASA los octetos de datos recibidos al proceso de aplicación – Se DESLIZA WR (límites inferior y superior) en función del tamaño máximo (inicial) del buffer de recepción (WR inicial) Nivel de Transporte 21 REDES DE COMPUTADORES Sincronización de WR y WT para un Correcto Control de Flujo WT inicial = Tamaño máximo del buffer de transmisión WT inicial = WR inicial (tamaño máximo del buffer de recepción del otro extremo) – Límite inferior de WT = Primer octeto de datos enviado pendiente de confirmación – Límite superior de WT = Último octeto de datos enviado pendiente de confirmación – WT= Límite superior – Límite Inferior + 1 – WT variando en fase de transferencia de datos en función de la WR del otro extremo – CONFIRMACIÓN (ACK) de la entidad TCP receptora: Primer octeto del campo de datos del siguiente segmento de información que se espera recibir, con lo cual los octetos anteriores están todos confirmados SIEMPRE INDICA EL LÍMITE INFERIOR DE WT • El ACTUAL si ha habido SEGMENTOS PERDIDOS – La entidad TCP emisora NO REALIZA NINGUNA ACCIÓN • Uno NUEVO si NO ha habido segmentos perdidos – La entidad TCP emisora: – DESACTIVA el temporizador asociado a los octetos confirmados – ELIMINA copia de los octetos confirmados en el buffer de transmisión – DESLIZA WT (límites inferior y superior) en función del tamaño máximo (inicial) del buffer de recepción (WR inicial) Nivel de Transporte 22 REDES DE COMPUTADORES WR = 6 (MSS =2) Nº SEC=0 CONF=1 LI=1 2 3 4 PREVIO CONF=1 5 LS=6 WR = 6 LI=1 2 3 4 5 LS=6 MSS=2 ALARMA WT = 6 LI=1 2 3 4 SIN ERRORES 5 LS=6 A L 0,1 AL APLICACIÓN LI=1 2 5 6 AR GIRO WT LI=5 6 MA 9 LS=10 9 6 7 LS=8 GIRO WR LI=3 4 5 6 7 LS=8 AR 8 GIRO WR 9 LS=10 A R 7 CONF=5, WR = 6 MA GIRO LI=7 8 WT 5 LS=6 A L APLICACIÓN LI=5 6 8 5 7 LS=8 CONF=3, W = 6 R AR 7 4 A L LI=3 4 GIRO WT LI=3 4 3 LI=5 6 MA 10 11 LS=12 CONF=7, WR = 6 LI=7 8 7 8 9 LS=10APLICACIÓN MA GIRO 9 10 11 LS=12 WR Nivel de Transporte 23 REDES DE COMPUTADORES Nº SEC=0 WT = 6 CONF=1 LI=1 2 3 4 PREVIO CONF=1 5 LS=6 WR = 6 WR = 6 (MSS =2) LI=1 2 3 4 5 LS=6 MSS=2 ALARMA LI=1 2 3 4 A L A R 5 LS=6 ERRORES Hasta que no lleguen “A” “L” permanecen en buffer ENTREGA ORDENADA AL LI=1 2 3 4 A L A R 4 CONF=1, WR = 4 5 LS=6 AL (“timeout”) LI=1 2 3 4 A L A R LI=5 6 GIRO WT LI=5 6 7 M A GIRO LI=7 8 WT 8 7 APLICACIÓN 5 LS=6 ALAR 8 GIRO 9 LS=10 WR 8 9 LS=10 9 LS=10 CONF=5, WR = 6 MA 9 5 LS=6 AR AR LI=1 2 3 LI=5 6 MA 10 11 LS=12 CONF=7, WR = 6 LI=7 8 7 APLICACIÓN MA GIRO 9 10 11 LS=12 WR Nivel de Transporte 24 REDES DE COMPUTADORES Servicio Multiplexado TCP SIMULTÁNEO y DIFERENCIADO a través de los números de puerto, aplicando mecanismos y recursos de fiabilidad por separado Aplicación multimedia en tiempo real SMTP Telnet FTP .... DNS HTTP ICMP IP Routers Avanzados (OSPF) ARP RTP .... UDP TCP Protocolos entre DHCP ICMP INTERFAZ DE LA RED DE ACCESO Ethernet, WiFi HARDWARE PPP RED DE ACCESO Nivel de Transporte 26 REDES DE COMPUTADORES TCP ofrece un SERVICIO ORIENTADO A CONEXIÓN FIABLE a los Procesos del Nivel de Aplicación Un SERVICIO ORIENTADO A CONEXIÓN dispone de TRES FASES 1. ESTABLECIMIENTO DE CONEXIÓN 2. TRASFERENCIA DE DATOS 3. LIBERACIÓN DE LA CONEXIÓN LA ¿Cómo accede la entidad de aplicación al servicio TCP? – Haciendo uso tanto en el código del cliente como en el código del servidor de unas funciones de comunicaciones estándares pertenencientes a un API de Programación de Aplicaciones en red (API de Red o API de Sockets) denominado INTERFAZ DE SOCKETS Nivel de Transporte 27 REDES DE COMPUTADORES INTERFAZ DE SOCKETS IMPLEMENTACIÓN DEL SERVICIO TCP APLICACIÓN TCP Localización conceptual Interfaz de sockets IP RED DE ACCESO ETHERNET HARDWARE Nivel de Transporte 28 REDES DE COMPUTADORES INTERFAZ DE SOCKETS Universidad de Berkeley Aplicación El programador tiene que trabajar a bajo nivel y llamar directamente a las funciones de comunicaciones del API de programación proporcionado por un sistema basado en un interfaz de sockets de Usuario Interfaz de Sockets UDP TCP IP Interfaz de Acceso y Hardware Red Nivel de Transporte 29 REDES DE COMPUTADORES PROTOCOLO TCP (RFC-793) Formato de un Segmento TCP Engloba dos tipos de información: Cabecera + Datos INFORMACIÓ DE CONTROL CABECERA (Variable) 20 octetos sin opciones CARGA ÚTIL para TCP DATOS (Variable) Hasta un máximo conocido como MSS TCP calcula un MSS de tal forma Maximum Segment Size (MSS) = Carga Útil = que los datagramas IP = SDU del Nivel de Aplicación = 1024 octetos (MSS por omisión) resultantes se correspondan con la MTU de la red de acceso MSS = MTU (1500 octetos)- cabecera IP - cabecera TCP Nivel de Transporte 30 REDES DE COMPUTADORES Cabecera TCP + DATOS Primer octeto del campo de datos del segmento de información que se va a enviar= Nº de secuencia= 32 bits= Primer octeto del campo de datos del siguiente segmento de información que se espera recibir (LOS OCTETOS ANTERIORES Módulo 232= 0, 1, 2, …232-1, 0, 1, …, 232-1, 0,1… 15 16 0 Proceso de aplicación emisor (cliente o servidor) CABECERA TCP Mínima por Omisión =20 octetos Máxima=60 octetos DESP = Nº de bloques de 4 octetos que ocupa la cabecera ESTÁN CONFIRMADOS) 31 Proceso de aplicación receptor (cliente o servidor) PUERTO ORIGEN PUERTO DESTINO NÚMERO DE SECUENCIA NÚMERO DE CONFIRMACIÓN (ACK) 4 bits 6 bits DESP RESERVADO URG ACK PSH RST SYN FIN VENTANA (Buffer de recepción MÁX = 65.535 octetos) SUMA DE COMPROBACIÓN Por omisión 5 bloques (0101), como máximo 15 bloques (1111) PUNTERO A DATOS URGENTES DE CONTROL (caracteres de control de la aplicación) RELLENO OPCIONES (Bits que se añaden al campo Opciones para que la cabecera tenga longitud total múltiplo de 32 bits) DATOS (variable en función de la MTU) SYN=1 ACK=0, Solicitud conexión SYN=1 ACK=1, Respuesta OK! Nivel de Transporte Ventana deslizante de recepción: Nº de octetos de datos que el emisor de esta Cantidad de octetos libres información puede manejar en función del que se pueden almacenar tamaño puntual de su buffer de recepción = en el buffer de recepción = 0 octetos (descanso), 1 octeto, 2 octetos hasta 216-1 octetos (65.535 octetos ) 31 REDES DE COMPUTADORES Bit Push El bit PSH se utiliza en TCP para forzar el envío de datos en segmentos de datos cortos e independientes Cuando el proceso de aplicación emisor desea que los datos entregados a TCP salgan inmediatamente, sin que la ENTIDAD TCP EMISORA espere más datos de la aplicación, lo indica en la llamada solicitando una operación PUSH – De esta forma, no se corre el riesgo de que TCP esté se quede esperando más octetos de datos de la aplicación para construir un segmento mayor LA ENTIDAD TCP RECEPTORA debe pasar cuanto antes los octetos de datos de un segmento con el bit PUSH = 1 Nivel de Transporte 32 REDES DE COMPUTADORES Fase de Transferencia de Datos Casos excepcionales Datos ‘Pushed’ (bit PSH) – El proceso de aplicación envía un “CHORRO DE BYTES” (BYTE STREAM) y solicita mediante una llamada a su entidad TCP (parámetro indicador PUSH en la llamada) que los envíe lo antes posible en un segmento de datos con el bit PSH = 1 – A su vez, la entidad TCP receptora los pondrá a disposición del proceso de aplicación en el momento en que dicho proceso lo solicite a través de la correspondiente llamada – No modifica el orden de cómo se procesan los datos en la aplicación Datos Urgentes (bit URG y Urgent Offset = Puntero a Datos Urgentes de Control) – Los datos se quieren entregar a la aplicación remota sin esperar a que esta los pida Ejemplo: Abortar un programa con CTRL-C en una sesión telnet – Modifica el orden, ya que “cuela” unos datos por delante de otros Nivel de Transporte 33 REDES DE COMPUTADORES Opciones TCP 15 16 0 PUERTO ORIGEN 31 PUERTO DESTINO NÚMERO DE SECUENCIA NÚMERO DE CONFIRMACIÓN (ACK) CABECERA TCP 4 bits 6 bits DESP RESERVADO URG ACK PSH RST SYN FIN VENTANA (Buffer de recepción MÁX = 65.535 octetos) SUMA DE COMPROBACIÓN OPCIONES PUNTERO A DATOS URGENTES DE CONTROL (caracteres de control de la aplicación) RELLENO (Bits que se añaden al campo Opciones para que la cabecera tenga longitud total múltiplo de 32 bits) DATOS (Variable) Nivel de Transporte 34 REDES DE COMPUTADORES Formato de las Opciones TCP Campo de Información de Control de Longitud Variable para Servicios Adicionales RFC-793 y RFC-1323 Formato TLV: Tipo-Longitud-Valor o Datos TIPO 8 bits LONGITUD DATOS…OPCIÓN 8 bits (variable) Longitud completa de la opción en octetos (TIPO + LONGITUD + DATOS) Nivel de Transporte 35 REDES DE COMPUTADORES Opciones TCP más Relevantes Descripción TIPO LONGITUD (octetos) DATOS Descripción 2 4 Valor MSS MSS 3 3 Tamaño de la Ventana Escala de la Ventana 4 2 - SACK PERMITTED (Fase de establecimiento) 5 Variable - SACK (Fase de transferencia de datos) 8 10 Valor actual reloj emisor (4 octetos) + Respuesta Eco (4 octetos) Marca de Tiempo … … … … Nivel de Transporte 36 REDES DE COMPUTADORES CAMPO DE OPCIONES DE INFORMACIÓN DE CONTROL (LONGITUD VARIABLE DE HASTA 40 OCTETOS) Según la implementación TCP que disponga el sistema operativo, habrá más o menos opciones SE ESPECIFICAN EN LA FASE DE ESTABLECIMIENTO DE LA CONEXIÓN (sólo en aquellos segmentos de control con el bit SYN = 1) Tamaño Máximo de Segmento (MSS): Nº máximo de octetos de la carga útil (campo de datos) que el receptor (emisor de esta información) desea recibir para un procesado más óptimo de dicha carga – Por omisión: 1024 octetos (otros: 512, 256, 128, 64, … ) – No confundir MSS con el tamaño del buffer de recepción Factor de Escala de la Ventana (RFC-1323): – Permite ampliar el campo VENTANA de 16 bits (65.536 octetos) hasta un máximo de 230 = 1 Gbyte Por omisión, el tamaño máximo de la ventana de recepción es de 216-1 octetos (65.535 octetos) Marca o sello de tiempo (timestamp): Tipo =8 Longitud = 10 Valor actual del reloj emisor Eco del valor actual del reloj emisor – No es lo mismo que el destino esté ubicado en la misma Ethernet o WiFi que disperso geográficamente por Internet – Permite al emisor configurar sus TEMPORIZADORES DE ESPERA DE CONFIRMACIÓN mediante el cálculo del valor RTT (Round Trip Time): TIEMPO DE IDA Y VUELTA desde que se envía un segmento de información hasta que se recibe su ACK – El emisor pone el valor de su reloj – El receptor pone el valor de su reloj y devuelve el mismo valor (eco) en el ACK del segmento Valor actual del reloj del emisor = valor monótamente creciente (formato UT = nº de mseg después de medianoche) – El eco es válido si el bit ACK = 1 en la cabecera del segmento Nivel de Transporte 37 REDES DE COMPUTADORES Temporizadores: Valores de Timeout Los valores de los temporizadores de espera de respuesta se establecen dinámicamente mediante ALGORITMOS AUTOADAPTATIVOS que ajustan los valores a la dispersión geográfica y al estado de la red, según es percibido éste por la entidad de transporte emisora Algoritmo autoadaptativo de Karn para el cálculo del RTT (Round Trip Time) – Se toma una muestra RTT de cada segmento de información transmitido (opción Marca de Tiempo) – Se obtiene un promedio de dichas muestras – Se le añade un margen de seguridad Nivel de Transporte 38 REDES DE COMPUTADORES Fase de Establecimiento de una Conexión TCP Intercambio de 3 segmentos CLIENTE APLICACIÓN TCP “A” Con SYN = 1, se negocian los números de secuencia, las WR y las opciones deseadas (p.ej., MSS) SERVIDOR APLICACIÓN TCP “B” Las confirmaciones de SEC en segmentos SYN consumen un nº de secuencia CONF = último nºSEC recibido + 1 SEC = última CONF CONF = último nºSEC recibido + 1 Nivel de Transporte 39 REDES DE COMPUTADORES Imposición de WR y MSS WR y MSS no se negocian, se imponen La WR MÁXIMA INICIAL, al principio, se indica mediante el bit SYN = 1 La WR MÁXIMA INICIAL de hasta 65.535 bytes (y a partir de 65.536 hasta 1 Gbyte con escalado de ventana) puede variar en cualquier momento aumentando o disminuyendo Dependen de los recursos (espacio en buffer) de cada entidad TCP y puede ser diferente para cada sentido El valor por omisión de MSS es de 1024 bytes Nivel de Transporte El MSS elegido puede ser mayor o menor que el valor por omisión y se indica mediante una opción de la cabecera TCP con el bit SYN = 1 Cada entidad TCP indica a su entidad par que MSS está dispuesto a aceptar, y el otro debe obedecer (puede usar ese valor u otro menor, pero no mayor) El MSS se mide en bytes y sólo toma en cuenta los datos, no la cabecera TCP 40 REDES DE COMPUTADORES Identificadores de conexión (ISN: Initial Sequence Number) Cuando una entidad TCP va a establecer una conexión TCP elige un ISN El ISN evita el riesgo de que un segmento de datos duplicado y retrasado de una conexión anterior provoque una conexión espúria Cada TCP elige independientemente el ISN que utilizará para esa conexión, por tanto siempre hay dos ISN asociados, uno por cada ‘lado’ de la conexión Nivel de Transporte 41 REDES DE COMPUTADORES Elección del ISN Según el RFC 793 (TCP), el ISN debe ser un entero de 32 bits sin signo que se incremente en 1 cada 4 microsegundos Así un ISN puede reaparecer al cabo de unas 4 horas, tiempo más que suficiente para que los posibles duplicados retrasados que utilicen el mismo ISN ya hayan desaparecido En la práctica los sistemas operativos (Unix) utilizan generalmente algoritmos más sencillos para construir los ISN, con el fin de consumir menos CPU UNIX BSD incrementa el ISN en 64000 cada medio segundo Además, el ISN se incrementa en 64000 cada vez que se establece una conexión, de modo que dos conexiones consecutivas siempre tendrán diferente ISN, aunque ocurran muy próximas en el tiempo Nivel de Transporte 42 REDES DE COMPUTADORES Establecimiento de una conexión TCP TCP “A” TCP “B” 10.0.0.2:1304 10.0.0.1:80 (estados) LISTEN (estados) SYN-SENT (ISN 100) SYN-RECEIVED ← Tiempo (ISN 300) ESTABLISHED ESTABLISHED Nivel de Transporte 43 REDES DE COMPUTADORES Fase de Transferencia de Datos 2 Tipos de Tráfico TRÁFICO INTERACTIVO – Generado por aplicaciones que transmiten los datos en pequeñas cantidades Generalmente crean segmentos de tamaños muy pequeños en los dos sentidos con el bit PSH = 1 • P. ej., SSH, telnet, rlogin, etc, TRÁFICO MASIVO – Generado por aplicaciones que transmiten los datos en grandes cantidades Generalmente crean segmentos de tamaños muy pequeños en un sentido con el bit PSH = 1 (solicitudes, p.ej., GET en FTP y HTTP) y de tamaño máximo en el otro sentido con el bit PSH = 0 • P. ej., FTP, HTTP (Web), … Nivel de Transporte 44 REDES DE COMPUTADORES Datos Pushed (bit PSH) en Emisión y Recepción El proceso de aplicación emisor envía un “CHORRO DE BYTES” (BYTE STREAM) y solicita mediante una llamada a su entidad TCP emisora (parámetro indicador PUSH en la llamada) que los envíe lo antes posible en un segmento de datos con el bit PSH = 1 – Sin esperar a que se llene el buffer de transmisión Por ejemplo, solicitudes GET y respuestas HTTP 1.1 200 OK del HTTP La entidad TCP receptora los pondrá a disposición de dicho proceso de aplicación – Sólo cuando el proceso de aplicación solicite datos a través de una llamada – Sin esperar a que se llene el buffer de recepción – Siempre y cuando el primer byte coincida con el límite inferior de WR ENTREGA ORDENADA: No modifica el orden de cómo se procesan los datos en la aplicación, es decir, no “cuela” unos datos por delante de otros Nivel de Transporte 45 REDES DE COMPUTADORES EJEMPLO de Fase de Establecimiento de una Conexión TCP Intercambio de 3 segmentos con la Opción MSS en un extremo (“B”) Con VENTANA en “A” de 300 octetos y en “B” de 900 octetos y MSS de 300 en “B” CLIENTE SERVIDOR APLICACIÓN APLICACIÓN TCP “A” TCP “B” MSS=300 Tamaño máximo de VENTANA DE RECEPCIÓN que desea “A” CONF = SEC + 1 WT = 900 bytes LI = 3 LS = 902 Tamaño máximo de VENTANA DE RECEPCIÓN que desea “B” SEC = última CONF CONF = SEC + 1 Nivel de Transporte 46 REDES DE COMPUTADORES Ejemplo de Transferencia de Datos sin Errores Transmisión unidireccional de datos (de “A” a “B”) sin errores y con VENTANA en “A” de 300 octetos y en “B” de 900 octetos CLIENTE APLICACIÓN TCP “A” SERVIDOR APLICACIÓN TCP “B” MSS=300 CONF (enviada)= SEC+ DATOS (del último segmento recibido) SEC (enviado) = SEC+ DATOS (del último segmento enviado) CONF (enviada)= SEC+ DATOS (del último segmento recibido) ¡¡¡OJO!!! EN SEMIDÚPLEX PARA UNA MAYOR COMPRENSIÓN … Nivel de Transporte 47 REDES DE COMPUTADORES Ejemplo de Transferencia de Datos con Errores Transmisión unidireccional de datos (de “A” a “B”) con errores (pérdidas de paquetes IP) y con VENTANA en “A” de 300 octetos y en “B” de 900 octetos “A” transmite un primer segmento de 300 octetos pendientes de confirmación TCP “A” WT = 900 octetos LI = 3 LS = 902 Si se recibe UNA CONF NUEVA, se DESACTIVA el temporizador, se ELIMINA COPIA y se DESLIZA WT CONFIRMACIÓN DUPLICADA No produce ningún efecto TCP “B” MSS=300 ”B” ante la llegada de los 300 primeros octetos procede a almacenarlos, confirmarlos, pasarlos al nivel superior y deslizar WR “B” vuelve a confirmar los 300 primeros octetos (NO CONF=903 porque se confirmarían los octetos del 2º segmento) time-out time-out Si se recibe UNA CONF NUEVA, se DESACTIVA el temporizador, se ELIMINA COPIA y se DESLIZA WT CONFIRMACIÓN DUPLICADA No produce ningún efecto Nivel de Transporte DETECCIÓN DE DUPLICACIÓN Si los dos segmentos vienen seguidos, se envía una única CONF una vez recibido el 2º (MENOS TRÁFICO Y PROCESO) 48 REDES DE COMPUTADORES Temporizador de Espera de Datos (ACK “piggybacked”) Cuando una entidad TCP recibe uno o varios segmentos de datos y, a su vez, no tiene datos que enviar de vuelta, no envía el ACK inmediatamente – Espera “un poco” por si el proceso de aplicación genera datos y de ese modo aprovecha para enviar el ACK en el segmento de datos (ACK “piggybacked”) • En muchos sistemas ese temporizador (espera de datos de la aplicación) suele ser de unos 200 ms – Si se agota el timer sin que la aplicación haya producido datos se envía un segmento sin datos con el ACK Nivel de Transporte 49 REDES DE COMPUTADORES Timer de ACK Retrasado en Servidor Rápido Timer de Espera de Datos = 200 ms Cliente Aplicación TCP Servidor Aplicación TCP 200 bytes 50 ms (antes de 200 ms) ACK ‘piggybacked’ 200 ms Nivel de Transporte 50 REDES DE COMPUTADORES Opciones TCP más Relevantes Descripción TIPO LONGITUD (octetos) DATOS Descripción 2 4 Valor MSS MSS 3 3 Tamaño de la Ventana Escala de la Ventana 4 2 - SACK PERMITTED (Fase de establecimiento) 5 Variable - SACK (Fase de transferencia de datos) 8 10 Valor actual reloj emisor (4 octetos) + Respuesta Eco (4 octetos) Marca de Tiempo … … … … Nivel de Transporte 51 REDES DE COMPUTADORES TCP SACK TCP de Reconocimiento Selectivo Selective Acknowledgment (SACK) Definido en el RFC-2018 y, posteriormente, extendido en el RFC-2883 Se recomienda la opción SACK, especialmente, cuando hay múltiples pérdidas de segmentos TCP – En la actual Red Internet, es una opción TCP por omisión Evita innecesarias retransmisiones de los octetos de datos de segmentos de información no contiguos que ya fueron entregados al receptor Nivel de Transporte 52 REDES DE COMPUTADORES TCP SACK TCP de Reconocimiento Selectivo Selective Acknowledgment (SACK) Para poder hacer uso de la opción Tipo 5 SACK en fase de transferencia de datos hay que indicarlo previamente en fase de establecimiento de la conexión TCP – Se indica mediante la opción Tipo 4 TCP SACK-PERMITTED en la fase de establecimiento de la conexión TCP en un segmento SYN = 1 – Si el receptor no ha recibido la opción Tipo 4 TCP SACKPERMITTED en el establecimiento de la conexión, no debe usar la opción Tipo 5 TCP SACK-PERMITTED en la fase de transferencia de datos Nivel de Transporte 53 REDES DE COMPUTADORES RETRANSMISIÓN INNECESARIA DE SEGMENTOS NO CONTIGUOS TCP “A” TCP “B” SEGMENTOS NO CONTIGUOS LLEGÓ CORRECTAMENTE time-out time-out RETRANSMISIÓN INNECESARIA Nivel de Transporte 54 REDES DE COMPUTADORES Ejemplo de un Paquete SACK TCP “A” TCP “B” SEGMENTO CONTIGUO (al último recibido correctamente) SEGMENTO NO CONTIGUO “B” emplea SACK PRIMER OCTETO DE DATOS QUE SE ESPERA RECIBIR DEL SIGUIENTE SEGMENTO DE INFORMACIÓN NO CONTIGUO Y CONSECUTIVO SE DESACTIVA EL TEMPORIZADOR PRIMER OCTETO DE DATOS RECIBIDO DEL PRIMER SEGMENTO DE INFORMACIÓN NO timeout CONTIGUO QUE HA HECHO ENVIAR EL PRIMER PAQUETE SACK última CONF realizada Nivel de Transporte 55 REDES DE COMPUTADORES Paquete SACK con “1 Bloque” para Segmentos No Contiguos y Consecutivos (Sin Pérdidas) USO DE LA OPCIÓN SACK CON CAMPO DATOS OPCIÓN DE UN ÚNICO BLOQUE TIPO=5 LONGITUD (variable) DATOS OPCIÓN X1 – Y1 “X1” (32 bits) = BORDE IZQUIERDO DEL BLOQUE “1” = “PRIMER” OCTETO DE DATOS RECIBIDO DEL “PRIMER” SEGMENTO DE INFORMACIÓN NO CONTIGUO • X1 es el mismo valor para todos los paquetes SACK siempre que los siguientes segmentos de información no contiguos recibidos sean consecutivos “Y1” (32 bits) = BORDE DERECHO DEL BLOQUE “1” = PRIMER OCTETO DE DATOS QUE SE ESPERA RECIBIR DEL SIGUIENTE SEGMENTO DE INFORMACIÓN NO CONTIGUO Y CONSECUTIVO • Si los octetos de datos recibidos, de los siguientes segmentos de información no contiguos, son consecutivos, entonces, se agrupan éstos en el mismo bloque X1-Y1 Nivel de Transporte 56 REDES DE COMPUTADORES Extensión con “N” Bloques del Paquete SACK para Segmentos No Contiguos y No Consecutivos (Con Pérdidas) TIPO=5 LONGITUD (variable) Informa del segmento recibido más recientemente DATOS OPCIÓN X1 – Y1 …X n– Yn Se pueden enviar hasta 4 bloques NO CONSECUTIVOS SACK (32 octetos) • Se recuerda que si los nuevos octetos de datos son consecutivos con los anteriores ya recibidos, entonces, se agrupan en un mismo primer bloque X1-Y1 El bloque 1 (X1 – Y1) debe informar del segmento recibido más recientemente Asegura que el ACK con la opción SACK refleje el cambio más reciente en el buffer de recepción. Así el emisor tiene información actualizada del estado de la red y del estado de la cola de recepción Después del primer bloque SACK, los siguientes pueden estar listados en orden arbitrario Nivel de Transporte 57 REDES DE COMPUTADORES Extensión con “N” Bloques del Paquete SACK para Segmentos No Contiguos y No Consecutivos (Con Pérdidas) (RESUMEN) Si hay espacio en el campo de opciones TCP (máximo 60 octetos), se pueden enviar hasta 4 bloques de información de control TIPO=5 LONGITUD (variable) DATOS OPCIÓN X1 – Y1 …X n– Yn RECORDATORIO DE UN SEGMENTO DE INFORMACIÓN NO CONTIGUO YA RECIBIDO El bloque (X1 – Y1) debe informar del segmento no contiguo recibido más recientemente Nivel de Transporte 58 REDES DE COMPUTADORES TCP “A” TIMEOUT TCP “B” SEGMENTOS NO CONTIGUOS Y CONSECUTIVOS Se intenta agrupar el máximo de octetos de datos consecutivos en cada paquete SACK CONF = última CONF realizada Nivel de Transporte 59 REDES DE COMPUTADORES TCP “A” TCP “B” CONFIRMACIONES A SEGMENTOS NO CONTIGUOS Y NO CONSECUTIVOS TIMEOUTS última CONF realizada Nivel de Transporte 60 REDES DE COMPUTADORES 2 Tipos de Liberación de la Conexión Ordenada o consensuada (simétrica) – La mayoría de los programas al terminar intentan cerrar ordenadamente todas las conexiones abiertas – Bit FIN en los dos sentidos (FIN = invitación al otro extremo a cerrar también) – Aunque las conexiones son dúplex, para entender mejor la liberación total de la conexión, ésta se considera formada por dos conexiones o circuitos simplex (en un solo sentido) y cada equipo solo puede desconectar el sentido en el que él emite datos – La desconexión puede iniciarla cualquiera de los dos equipos (el cliente o el servidor) invitando al otro a cerrar – El cierre de un sentido por parte de un equipo se interpreta como una ‘invitación’ a cerrar al otro – El que toma la iniciativa realiza un cierre activo o ‘active close’ y el otro lleva a cabo un cierre pasivo o ‘passive close’ – La desconexión simétrica de TCP ofrece una seguridad razonable (pero no absoluta) de que no se pierden datos de la aplicación – Una vez efectuada la desconexión el equipo que realizó el “active close” mantiene un cierto tiempo (2 MSL) la conexión viva por si aparecen segmentos retrasados Desordenada o abrupta o unilateral (asimétrica) Bit RST sin datos en un sentido Un equipo termina y cierra sin esperar a recibir confirmación No da oportunidad al otro equipo de enviar los datos que tuviera pendientes de la aplicación, por lo que puede provocar la pérdida de información Nivel de Transporte 61 REDES DE COMPUTADORES Liberación Ordenada de la Conexión 4 envíos LA CONEXIÓN TCP SE LIBERA COMPLETAMENTE cuando cada entidad TCP, después de haber transmitido todos sus datos, envía en cada sentido un SEGMENTO SIN DATOS con el bit FIN activado La confirmación al FIN=1 recibido, SIEMPRE CON UN SEGMENTO SIN DATOS Nivel de Transporte 62 REDES DE COMPUTADORES Liberación Ordenada de la Conexión TCP “A” (cierre activo) 10.0.0.1:80 ESTABLISHED (estados) Las confirmaciones de SEC en segmentos FIN (al igual que en los segmentos SYN) consumen un nº de secuencia TCP “B” (cierre pasivo) 10.0.0.2:1030 ESTABLISHED (estados) FIN-WAIT-1 CLOSE-WAIT Conexión medio cerrada Conexión medio FIN-WAIT-2 cerrada LAST-ACK TIME-WAIT CLOSED 2 MSL Confirmación al FIN=1 recibido, siempre con un segmento sin datos CLOSED MSL: Maximum Segment Lifetime Nivel de Transporte 63 REDES DE COMPUTADORES CLIENTE Fase de Liberación de la Conexión APLICACIÓN TCP “B” TCP “A” close SERVIDOR APLICACIÓN Fase de transferencia de datos (SEC=m+DATOS=0) SEC = última CONF SEC = última CONF CONF = SEC + 1 CONEXIÓN CERRADA en “A” close SEC = última CONF CONF = SEC + 1 LIBERA LA CONEXIÓN, CONFIRMA y ESPERA TEMPORIZADOR Eliminación de segmentos retrasados (2 VECES el promedio del RTT = MSL (Maximum Segment Lifetime)) CONEXIÓN CERRADA en “B” CONEXIÓN LIBERADA Nivel de Transporte 64 REDES DE COMPUTADORES Ejemplo de la Fase de Liberación de la Conexión SERVIDOR CLIENTE TCP “B” TCP “A” APLICACIÓN APLICACIÓN close Fase de transferencia de datos (SEC=1501+DATOS=0) CONF = SEC (último)+ DATOS (último) SEC = última CONF CONF = SEC + 1 close SEC = última CONF CONF = SEC + 1 CONEXIÓN LIBERADA en “A” CONEXIÓN LIBERADA en “B” Nivel de Transporte 65 REDES DE COMPUTADORES Ejemplo de la Fase de Liberación de la Conexión Con Datos Conexión “cerrada” en “A” pero “abierta” en “B” CLIENTE APLICACIÓN TCP “A” TCP “B” SERVIDOR APLICACIÓN close FASE DE TRANSFERENCIA DE DATOS CONF (enviada)= SEC+ DATOS (del último segmento recibido) SEC = última CONF CONF = SEC + 1 CONEXIÓN CERRADA en “A” FASE DE TRANSFERENCIA DE DATOS SEC = última CONF Entrega por parte de “B” de 300 octetos de datos CONF = SEC + 1 CONF (enviada)= SEC+ DATOS (del último segmento recibido) SEC = última CONF Fase de transferencia de datos (SEC=904+DATOS=0) close CONF (enviada)= SEC+ DATOS (del último segmento recibido) SEC = última CONF SEC = última CONF CONF = SEC + 1 Nivel de Transporte CONEXIÓN LIBERADA CONEXIÓN CERRADA en “B” 66 REDES DE COMPUTADORES Desconexión Ordenada del Cliente con 3 mensajes TCP “A” El Servidor envía un FIN en lugar de un ACK previo TCP B (cierre activo) (cierre pasivo) 10.0.0.1:80 ESTABLISHED 10.0.0.2:1030 ESTABLISHED (estados) (estados) FIN-WAIT-1 CLOSE-WAIT Conexión medio cerrada Conexión medio LAST-ACK cerrada TIME-WAIT CLOSED 2 MSL CLOSED MSL: Maximum Segment Lifetime Nivel de Transporte 67 REDES DE COMPUTADORES Desconexión ordenada del Servidor con 3 mensajes y 1 mensaje Equipo 1 Equipo 2 Equipo 2 Inactividad Inactividad Libera conexión Equipo 1 Envía FIN y arranca timer Envía FIN y arranca timer (Timeout) CLOSED libera conexión CLOSED Nivel de Transporte 68 REDES DE COMPUTADORES Pérdida de Segmentos en la Desconexión Equipo 1 Envía FIN y arranca timer Libera conexión Equipo 2 Envía FIN y arranca timer Equipo 1 Equipo 2 Envía FIN y arranca timer Envía FIN y arranca timer (Timeout) Envía ACK (Timeout) libera conexión Pérdida del ACK final envía FIN y arranca timer Libera conexión Envía ACK Envía FIN y arranca timer Libera conexión Pérdida del segundo FIN Equipo 1 Equipo 2 Equipo 1 Equipo 2 Envía FIN y arranca timer Envía FIN y arranca timer Envía FIN y arranca timer Conectado (timeout) (timeout) envía FIN y arranca timer envía FIN y arranca timer (N timeouts) Libera conexión (Timeout) libera conexión Pérdida del segundo y tercer FIN Conexión medio abierta (N timeouts) Libera conexión Conectado Cable cortado o desconectado Nivel de Transporte 69 REDES DE COMPUTADORES Desconexión Desordenada o Abrupta o Unilateral Ocurre cuando uno de los dos equipos quiere cerrar inmediatamente la conexión, sin esperar la confirmación del otro Se lleva a cabo enviando un segmento con el bit RST sin datos – El equipo que emite el RST pasa inmediatamente al estado CLOSED perdiéndose los datos que pudieran venir de camino del otro equipo – No se espera 2MSL – El equipo que recibe el RST pasa también a estado CLOSED de manera inmediata Nivel de Transporte 70 ← Tiempo REDES DE COMPUTADORES Desconexión Desordenada o Abrupta TCP “A” TCP “B” 10.0.0.2:1039 10.0.0.1:80 ESTABLISHED ESTABLISHED (estados) (estados) Proceso abortado CLOSED CLOSED Datos perdidos Nivel de Transporte 71 NIVEL DE TRANSPORTE TCP CONTROL DE LA CONGESTIÓN © 2012 Cisco and/or its affiliates. All rights reserved. 72 REDES DE COMPUTADORES Congestión en Internet RFC-5681: TCP Congestión Control Congestión = Pérdida de 1 o más paquetes o datagramas IP Causa posible: Desborde del buffer de la cola del interfaz de salida de un ROUTER – Exceso de tráfico de entrada en alguna o algunas redes de Internet: Tasas de paquetes de entrada superan las capacidades de los enlaces salida La situación se complica si los enlaces de salida son de menor capacidad que los enlaces de entrada En principio, no se puede conocer el estado de todos los sistemas intermedios Cuando los paquetes llegan a la parte congestionada de la red, como el router de acceso no puede aceptar todo el tráfico entrante, empezará a acumularlos en su buffer de la cola del interfaz de salida y cuando éste se llene, empezará a descartar Basta que uno de los enlaces del trayecto se vea afectado por la congestión para limitar el tráfico en todo el camino y, por tanto, el rendimiento de la comunicación entre los sistemas finales Las aplicaciones se bloquean o dejan de funcionar La congestión se detecta en TCP por vencimiento de temporizadores o “timeouts” (alta probabilidad de congestión) – La entidad TCP receptora recibirá sólo una parte de los segmentos por lo que la entidad TCP emisora retransmitirá por timeout aquéllos que no hayan sido confirmados Nivel de Transporte 73 REDES DE COMPUTADORES Pérdidas de Paquetes en los Routers La congestión en Internet es la pérdida de 1 o más paquetes IP debido al desborde del buffer de la cola del interfaz de salida de un router cuando las tasas de entrada superan las capacidades de salida enlaces de entrada … Proceso IP Caudal IP IP IP IP buffer de la cola enlaces del interfaz de salida de entrada … enlace de salida Descarte del último CONGESTIONES O PERDIDAS DE PAQUETES IP EN UN ROUTER DE ACCESO, ESPECIALMENTE CRÍTICO EN ENLACES DE ENTRADA DE ALTA CAPACIDAD Nivel de Transporte Y ENLACES DE SALIDA DE MENOR CAPACIDAD 74 REDES DE COMPUTADORES Flujo y Congestión: Conceptos Diferentes RECORDATORIO La VENTANA DE RECEPCIÓN WR garantiza que no se inunde al receptor ejerciendo un CONTROL DE FLUJO sobre el emisor Sin embargo, los problemas podrían estar en Internet: Muchas veces el “cuello de botella” está en la red y no en el receptor – Los buffers de las colas de salida de los routers pueden desbordarse Además, del CONTROL DE FLUJO necesitamos un CONTROL DE CONGESTIÓN ¿Cómo notificar a la entidad TCP emisora de que hay una saturación en algún punto del trayecto y de que debe bajar el ritmo de transmisión? – Respuesta: Mediante una VENTANA DE CONGESTIÓN WC que indica el número de segmentos que el emisor puede enviar en un momento dado sin congestionar a ningún router en Internet La WC actúa simultáneamente y en paralelo con WR En cada momento, el emisor tomará en consideración la más pequeña de las dos ventanas para asegurarse de que no satura al receptor ni provoca, o contribuye a agravar, una situación de congestión en la red Nivel de Transporte WT = min (WR , WC ) 75 REDES DE COMPUTADORES Flujo y Congestión: Conceptos Diferentes La WR se notifica al emisor por el receptor: EL CONTROL DE FLUJO LO EJERCE LA ENTIDAD TCP RECEPTORA La WC la calcula el emisor a partir de la cantidad de retransmisiones (pérdidas de segmentos TCP o “timeouts”) que tiene que realizar: EL CONTROL DE LA CONGESTIÓN LO EJERCE LA ENTIDAD TCP EMISORA – El emisor va tanteando la red, transmitiendo tan rápido como sea posible hasta que se produzca un “timeout”, a partir de ahí reduce, drásticamente, el ritmo de sus envíos (WC y, por tanto WT) y va aumentando dicho ritmo, paulatinamente, hasta un nuevo “timeout” (nueva pérdida y retransmisión), repitiendo de nuevo el proceso Nivel de Transporte 76 REDES DE COMPUTADORES Mecanismos de Control de la Congestión RFC-5681 Implemetados en cualquier distribución actual TCP/IP y utilizados por el protocolo TCP cuando los routers en Internet descartan o pierden paquetes IP al desbordarse la capacidad de almacenamiento de los buffers asociados a las colas de los interfaces de salida 1. 2. 3. 4. Comienzo Lento (Slow Start) Prevención de la Congestion (Congestion Avoidance) Retransmisión Rápida (Fast Retransmit) Recuperación Rápida (Fast Recovery) Nivel de Transporte 77 REDES DE COMPUTADORES Mecanismo de Control de la Congestión Comienzo Lento o SS (Slow Start) Con SS se transmiten segmentos de información de forma exponencial (1, 2, 4, 8, ...) al ritmo al que se reciben los ACK desde el otro extremo – WC , que SE MIDE EN SEGMENTOS con un campo datos, por omisión, de 1024 octetos (1 segmento = 1 MSS, por omisión, de 1Kbyte o 1024 octetos), crece exponencialmente sólo si todos los segmentos de información enviados han sido confirmados Si hay un ACK retrasado, el incremento, en el tamaño de WC, no es exponencial – Se denomina COMIENZO LENTO porque se empieza a transmitir lentamente, primero 1 segmento, luego 2 segmentos y, así, sucesivamente; pero en realidad se transmite muy rápido (exponencialmente): 1, 2, 4, 8, 16, 32, 64) y en sólo 7 interacciones (envío de un grupo de 64 segmentos de información) se llega a 65.535 octetos (asumiendo un MSS típico de 1024 octetos) que es el valor máximo por omisión de TCP para WR y que coincide con el VALOR INICIAL DEL UMBRAL DE CONGESTIÓN o UMBRAL DE PELIGRO o LÍMITE DE CRECIMIENTO DE WC impuesto por TCP, el cual va variando posteriormente en función de la congestión en Internet Nivel de Transporte 78 78 REDES DE COMPUTADORES Inicio de la Fase de Transferencia de Datos con Comienzo Lento o SS (Slow Start): Sin Congestión en la Red Con SS se envían segmentos de información a la red de forma exponencial (1, 2, 4, 8, etc.) al ritmo al que se reciben los ACK desde el otro extremo TCP “A” WC = 1 TCP “B” ACK WC = 2 Cada ráfaga confirmada ACKs duplica WC WC = 4 Si hay un ACK retrasado ACKs el incremento en el … tamaño de la ventana es menor que la potencia de 2 Nivel de Transporte 79 REDES DE COMPUTADORES Comienzo Lento o SS (Slow Start) Sin Congestión en la Red 1ª interacción WC SE MIDE EN SEGMENTOS con 1 MSS, por omisión, de 1Kbyte o 1024 octetos. Por tanto, 1 segmento = 1024 octetos WC se inicializa a 1 segmento o 1 MSS de 2ª interacción 1 Kbyte (1024 octetos) A su vez, p.ej., WR = 65.535 octetos Todos los segmentos tienen un MSS por omisión = 1024 octetos = 1Kbyte y se activa el primer timer. WT = min (WR =65.535 octetos, WC = 1) 3ª interacción Si ACK llega antes del timeout WT = WC = 2 Kbytes y se envían 2 segmentos y se activan 2 timers. Si llegan los ACK a tiempo WT = WC = 4 Kbytes y se envían 4 segmentos y se activan 4 timers. WC va creciendo EXPONENCIALMENTE duplicándose en cada envío. 4ª interacción Sin congestión, WC crece rápidamente y en sólo 7 interacciones (1, 2, 4, 8, 16, 32, 64) se llegaría a 65.535 octetos (valor máximo de TCP para WR) … Nivel de Transporte 80 REDES DE COMPUTADORES Mecanismo de Control de la Congestión Comienzo Lento o SS (Slow Start) 1. WC = 1 (inicialmente 1 segmento o 1 MSS del tamaño máximo para la conexión) 2. Valor inicial del umbral de congestión = 64 segmentos o 65.535 octetos (valor máximo de WR ) 3. WC = 1, 2, 4, 8, …, (WT = WC) va creciendo exponencialmente (mientras se reciben todos los ACK) hasta superar: 4. – – La WR actual y puntual en el otro extremo TCP (se establece un control de flujo) El valor inicial del umbral de congestión o umbral de peligro o límite de crecimiento máximo impuesto por TCP inicialmente para WR de 65.535 octetos – El buffer de algún router y se produzca la primera pérdida de paquete o “timeout” Cada vez que se detecta un “timeout” o pérdida se obtiene un nuevo UMBRAL DE CONGESTIÓN, que toma como valor la mitad del tamaño actual de WC . A su vez, WC se reduce de una manera drástica al valor inicial de 1 segmento. Ahora, WC empieza a crecer exponencialmente como antes (WC = 1, 2, 4, 8, …, ) pero sólo hasta el nuevo umbral de congestión donde permanece aunque no haya pérdidas – Nuevo umbral de congestión o límite de crecimiento de WC = WC (actual)/2 – WC = 1 (y, luego, 2, 4, 8, …) Reducción rápida y significativa del tráfico para que el router se recupere Mientras el tamaño máximo de WC permanezca en el umbral de congestión, no se enviará una ráfaga de mayor longitud, sin importar la cantidad de espacio de WR ofrecida por el receptor en el supuesto de ser superior Nivel de Transporte 81 REDES DE COMPUTADORES Mecanismo de Control de la Congestión Prevención de la Congestion o CA (Congestion Avoidance) Para aumentar el rendimiento en la transferencia, se combina SS y CA con el objetivo de seguir transmitiendo a partir de donde SS finaliza, es decir, desde el nuevo umbral de congestión calculado en SS Para ello, se incrementa WC LINEALMENTE (de “1 en 1”) desde el nuevo umbral hasta que se supere el tamaño actual de WR en el otro extremo TCP (control de flujo) o el buffer de algún router (vencimiento de temporizador), REPITIÉNDOSE EL PROCESO Una nueva pérdida (congestión), momento a partir del cual se aplica de nuevo SS, obteniéndose un nuevo umbral de congestión, en un valor igual a la mitad del tamaño actual de WC. A su vez, WC se reduce de una manera drástica al valor inicial de 1 segmento. Ahora, WC de nuevo empieza a crecer exponencialmente, pero sólo hasta el nuevo umbral de congestión a partir del cual se vuelve a aplicar CA – El objetivo es no quedarse bloqueado en el nuevo umbral (SS) sino seguir transmitiendo lentamente desde dicho nuevo umbral dando tiempo a que el router se recupere Nivel de Transporte 82 REDES DE COMPUTADORES Prevención de la Congestión (Congestion Avoidance) y Comienzo Lento (Slow Start) Funcionamiento conjunto Objetivo de cada algoritmo: –Comienzo Lento o SS (Slow Start): Tantear la red, transmitiendo, tan rápido como sea posible, hasta que se produce una congestión, momento a partir del cual se calcula el nuevo umbral, se reduce WC = 1 y se transmite exponencialmente hasta el nuevo umbral –Prevención de la Congestión o CA (Congestion Avoidance) = Una vez que se ha producido la congestión, y en combinación con SS, sigue transmitiendo linealmente a partir de donde SS finaliza (nuevo umbral de congestión), dando tiempo a que el router se recupere Nivel de Transporte 83 REDES DE COMPUTADORES Ejemplo de Funcionamiento Conjunto de SS y CA: Se producen perdidas de segmentos de información cuando WC es mayor de 20 segmentos o 20 Kbytes (1 segmento = 1 MSS de 1 Kbyte) FASE UMBRAL DE CONGESTIÓN en KBytes WC en KBytes (VENTANA DE CONGESTIÓN) 64 segmentos Primera (valor inicial) Segunda Tercera Nivel de Transporte 84 REDES DE COMPUTADORES Ejemplo de Funcionamiento Conjunto de SS y CA: Se producen perdidas de segmentos de información cuando WC es mayor de 20 segmentos o 20 Kbytes (1 segmento = 1 MSS de 1 Kbyte) FASE UMBRAL DE CONGESTIÓN en KBytes WC en KBytes (VENTANA DE CONGESTIÓN) SS Primera 64 (valor inicial) 1,2,4,8,16,32 Se produce un timeout cuando WC = 32 A partir del umbral =16, WC se incrementa de 1 en 1 Segunda 16 1,2,4,8,16,17,18,19,20,21 SS CA A partir del umbral =10,5, WC se incrementa de 1 en 1 Tercera 10,5 Umbral de congestión = 10 porque si se envían 11 segmentos > 10,5 1,2,4,8,10,11,12,13,14,15, 16,17,18,19,20,21 Nivel de Transporte 85 REDES DE COMPUTADORES 2 Tipos de Retransmisiones TCP En las implementaciones actuales TCP, hay una RETRANSMISIÓN si: –Expira un temporizador de retransmisión = PÉRDIDA SEGURA DE SEGMENTO = Alta seguridad de que haya congestión en Internet –Llegan 3 CONFIRMACIONES (ACKs) duplicadas = PÉRDIDA PROBABLE DE SEGMENTO = No hay seguridad de que haya congestión en Internet “PERO, POR SI ACASO”, no se espera al vencimiento del temporizador y se aplica el mecanismo de Retransmisión Rápida Nivel de Transporte 86 REDES DE COMPUTADORES 2 Tipos de Control de la Congestión Si la detección se debe a un vencimiento de temporizador = ALTA SEGURIDAD DE CONGESTIÓN y se aplica SS y CA – CONTROL DE LA CONGESTIÓN (Comienzo Lento y Prevención de la Congestión) A PARTIR DE UN “TIMEOUT” Si la detección de debe a 3 ACKs duplicados = BAJA SEGURIDAD DE CONGESTIÓN y, en principio, se aplica RETRANSMISIÓN RÁPIDA – CONTROL DE LA CONGESTIÓN (Prevención de la Congestión) A PARTIR DE 3 ACKs DUPLICADOS que implica como ventaja adicional una recuperación más rápida del potencial segmento de información perdido sin esperar a que expire su temporizador – Puede ser que a lo mejor no se ha perdido el segmento, es decir, no hay congestión y no es necesario que WC = 1 Nivel de Transporte 87 REDES DE COMPUTADORES Mecanismo de Control de la Congestión: Retransmisión Rápida (Fast Retransmit) Retransmisión de un segmento después de la recepción de 3 ACKs duplicados, sin esperar al “timeout” 3 ACKs duplicados significa que, probablemente, se ha perdido 1 segmento RETRANSMISIÓN Si se han recibido 3 ACKs hay una probabilidad baja de congestión, se puede haber perdido un segmento pero 3 segmentos ya han llegado ya que se han recibido 3 ACKs 3 ACKs duplicados = 4 ACKs idénticos en secuencia Por si acaso, no se espera a que se “dispare” el temporizador de retransmisión de “b” Si se reciben 3 ACKs duplicados seguidos, retransmitir de inmediato Nivel de Transporte 88 REDES DE COMPUTADORES Retransmisión Rápida No es un mecanismo estricto de control de la congestión en Internet Es un mecanismo de retransmisión de la forma más rápida posible (sin esperar el vencimiento del temporizador) de un segmento de información y que, posiblemente (no es seguro), se ha perdido debido a una presumible congestión en un router por la llegada de 3 confirmaciones duplicadas Pero en combinación, a su vez, con el mecanismo de Prevención de la Congestión (CA) da origen a un nuevo mecanismo de control de la congestión denominado Recuperación Rápida (Fast Recovery) Nivel de Transporte 89 REDES DE COMPUTADORES Mecanismo de Control de la Congestión: Recuperación Rápida (Fast Recovery) Si la probable congestión se debe a 3 ACKs DUPLICADOS = Se hace una Recuperación Rápida = Retransmisión rápida y CA (a partir del nuevo umbral) Se retransmite inmediatamente el segmento afectado (RETRANSMISIÓN RÁPIDA), se calcula el nuevo umbral de congestión y se comienza DIRECTAMENTE en una nueva fase de CA a partir del nuevo umbral (sin comenzar desde 1 segmento a crecer exponencialmente hasta el nuevo umbral y, luego, linealmente) P. ej., si se han recibido 3 ACKs, se calcula el nuevo umbral = 6, se retransmite inmediatamente el segmento afectado y se comienza linealmente a partir de 7, 8, 9, … (y no a partir de 1, 2, 4, 6, 7, 8, 9, …, etc., porque tal vez no hay congestión y no es necesario que WC = 1) Nivel de Transporte 90 REDES DE COMPUTADORES Ejemplo de Recuperación Rápida: Se produce “timeout” cuando WC = 20 segmentos y el nuevo umbral de congestión = 16 segmentos. Posteriormente, se reciben 3 ACKs cuando se envían 12 segmentos WC máxima en FASE UMBRAL DE CONGESTIÓN En un momento anterior, WC =32, se produjo timeout y el nuevo umbral de congestión pasó a valer 16 Primera 16 segmentos (VENTANA DE CONGESTIÓN) =32 SS CA… 1, 2, 4, 8, 16, 17, 18, 19, 20 (timeout) CA… SS Segunda 10 1, 2, 4, 8, 10, 11, 12 (3 ACKs) CA Tercera 6 … 7, 8, 9, …, 20 (timeout) Nivel de Transporte 91 REDES DE COMPUTADORES Implementaciones TCP RFC-793, STD 0007 (1981): – TCP Sin control de congestión RFC-5681 (1999): – TCP con control de la congestión Implementación TCP Tahoe (1988) – Algoritmo básico de control de congestión (Comienzo lento) Implementación TCP Reno (1990) – Tahoe + Prevención de la congestión + Retransmisión rápida + Recuperación rápida Implementación TCP New Reno (1996) – El Reno optimizado es la implementación, por omisón, que se encuentra en la mayoría de las distribuciones TCP/IP e incluye los cuatro mecanismos de control de la congestión Nivel de Transporte 92 REDES DE COMPUTADORES 2 Notificaciones de Congestion en TCP Notificación o señalización implícita por: • Vencimiento de temporizador (“timeout”) – Mecanismos: SS y CA • Recepción de 3 ACKs duplicados – Mecanismos: Recuperación rápida = Retransmisión rápida y CA (a partir del nuevo umbral) Notificación o señalización explícita por indicación del router ECN (Explicit Congestion Notification): RFC-3168 y RFC-2884 La transmisión se ajusta en la entidad TCP emisora sólo cuando una entidad IP intermedia, que empieza a acercarse a su umbral de congestión, se lo notifica explícitamente a la entidad TCP receptora y ésta se lo comunica, finalmente, a la entidad TCP emisora • VENTAJA: En vez de descartar, y que se produzcan timeouts, el router señaliza al receptor antes de que los buffers se llenen • Despúes, el receptor avisa al emisor y éste disminuye el ritmo de envío Ya hay algunas implementaciones de ECN (Linux) Alternativa de señalización explícita: Mensaje ICMPv4 de frenado en el origen (Tipo=4 Código=0): No se usa por seguridad (prevención de ataque a un router). Además, no existe el mensaje ICMPv6 de frenado en el origen Nivel de Transporte 93 REDES DE COMPUTADORES DATAGRAMA IPv4 Recordatorio Los 2 bits de menor orden del campo ToS de la cabecera IPv4 se usan para la notificación explícita de congestión 4 4 VERSIÓN 8 Longitud Cabecera 16 TIPO DE SERVICIO 0 IDENTIFICADOR TIEMPO DE VIDA (TTL) LONGITUD TOTAL 000 R C F 00 D M F F PROTOCOLO DESPLAZAMIENTO SUMA DE COMPROBACIÓN (CABECERA) CABECERA DIRECCIÓN ORIGEN DIRECCIÓN DESTINO OPCIONES RELLENO DATOS Nivel de Transporte 94 REDES DE COMPUTADORES Cabecera IPv4:DSCP-ECN Punto de Código de Servicios Diferenciados Differentiated Services Code Point 4 4 TIPO DE SERVICIO VERSIÓN EC (Experienced Congestion) = Bit de Detección de Congestión DSCP TIEMPO DE VIDA 16 E E C T C LONGITUD TOTAL 0 IDENTIFICADOR (TTL) ECT (Explicit Congestion Notification) Capable Transport = Bit de Transporte de Notificación Explícita de Congestión 8 Longitud Cabecera Para control de la congestión D M F F PROTOCOLO DESPLAZAMIENTO SUMA DE COMPROBACIÓN (CABECERA) CABECERA DIRECCIÓN ORIGEN DIRECCIÓN DESTINO OPCIONES RELLENO DATOS Nivel de Transporte 70 95 REDES DE COMPUTADORES Cabecera Fija IPv6:DSCP-ECN Punto de Código de Servicios Diferenciados Differentiated Services Code Point 0 4 12 ECT/EC 31 Prioridad (8bits) Versión xxxxxxxx Longitud de la carga útil Etiqueta de flujo (20 bits) Cabecera siguiente Dirección de origen (16 octetos) Límite de saltos 40 octetos Dirección de destino (16 octetos) Nivel de Transporte 96 REDES DE COMPUTADORES Formato de un Segmento TCP-ECN (Explicit Congestion Notification) Los 2 bits de menor orden del campo RESERVADO de la cabecera TCP se usan para el control de la congestión 15 16 0 PUERTO ORIGEN 31 PUERTO DESTINO NÚMERO DE SECUENCIA NÚMERO DE CONFIRMACIÓN (ACK) RESERVADO 4 BITS DESP C W R E C N VENTANA URG ACK PSH RST SYN FIN SUMA DE COMPROBACIÓN PUNTERO URGENTE RELLENO OPCIONES DATOS (Variable) Explicit Congestion Notification-Echo = = Bit de Eco de Notificación Explícita de Congestión Congestion Window Reduced = = Bit de Ventana de Congestión Reducida Nivel de Transporte 97 REDES DE COMPUTADORES Cabecera Fija IPv6:DSCP-ECN 0 Differentiated Services Punto de Código Code Point de Servicios Diferenciados 4 Prioridad (8bits) 12 Versión xxxxxxxx Longitud de la carga útil ECT/EC 31 Etiqueta de flujo (20 bits) Cabecera Límite siguiente de saltos Dirección de origen (16 octetos) 40 octetos Dirección de destino (16 octetos) Nivel de Transporte 98 REDES DE COMPUTADORES Cabecera TCP-ECN El uso de ECN en fase de transferencia de datos obliga a indicarlo previamente en fase de establecimiento de la conexión TCP El EMISOR activa los 2 bits (CWR y ECN-ECHO) en el segmento de solicitud de establecimiento de la conexión y el RECEPTOR activa el bit ECN-ECHO en el segmento de respuesta SYN =1, ACK =0 – SYN = 1, ACK = 0 (SOLICITUD con los bits CWR = 1 y ECN-ECHO = 1) – SYN = 1, ACK = 1 (RESPUESTA con los bits CWR = 0 y ECN-ECHO = 1) Nivel de Transporte 99 REDES DE COMPUTADORES Control de la Congestion en TCP Metodología por Señalización Explícita ECN (Explicit Notification Congestion): RFC-3168 y RFC-2884 – El emisor activa el bit de Transporte de Notificación Explícita de Congestión o ECT (ECN Capable Transport) de la cabecera IP solicitando bit de Eco de Notificación Explícita de Congestión (ECN) para dicho paquete a cualquier router que detecte congestión – El router, al empezar a acercarse a su umbral de congestión, activa el bit EC=1, activa el bit de Detección de Congestión o EC (Experienced Congestion) de la cabecera IP y lo encamina a la entidad TCP receptora – La entidad receptora TCP, al recibir dicha cabecera IP, detecta que hay principio de congestión en el camino y activa el bit de Eco de Notificación Explícita de Congestión (ECN-ECHO) de la cabecera TCP y se lo envía a la entidad TCP emisora para que ésta active el control de la congestión – La entidad emisora TCP, al recibir ECN-ECHO = 1, activa el bit de Ventana de Congestión Reducida o CWR (Congestion Window Reduced) de la cabecera TCP y se lo envía a la entidad TCP receptora para indicar que ya se enterado, que ya ha activado el control de congestión, que ya ha reducido su ritmo de transmisión y que no es necesario que le vuelva a enviar un ECN-ECHO = 1 Nivel de Transporte 100 REDES DE COMPUTADORES Esquema IP-ECN/TCP-ECN Bit de Transporte de Bit de Notificación Explícita de Congestión Detección de Congestión Transmisor Router (cercano a la congestión) ECT 1 IP ECT EC EC 0 1 1 1 TCP 0 0 CWR CWR 2 Receptor 1 TCP ECN-ECHO TCP 3 1 CWR Bit de Ventana de de Congestión Reducida 4 Bit de Eco de Notificación Explícita de Congestión Nivel de Transporte 101 NIVEL DE TRANSPORTE TRANSPORTE RÁPIDO UDP © 2012 Cisco and/or its affiliates. All rights reserved. 102 REDES DE COMPUTADORES Problemática de la Fiabilidad TCP Problema con TCP: Si se desea rapidez en el transporte, TCP retarda dicho transporte porque ofrece un servicio orientado a conexión FIABLE (tres fases y mecanismos de FIABILIDAD) Hay aplicaciones que no toleran el retardo extremo a extremo producido por los ACKs, los temporizadores, las retransmisiones y controles de TCP Además, el control de congestión TCP reduce la tase de envío (throughput o rendimiento o velocidad real) en el emisor Si la aplicación requiere un transporte rápido se monta sobre UDP Las retransmisiones TCP son inaceptables para aplicaciones en tiempo real, al incrementar el retardo extremo a extremo Cada vez hay más aplicaciones sobre UDP – Tráfico interactivo en tiempo real Vídeoconferencias o vídeollamadas, VoIP – Tráfico no interactivo en tiempo real Streaming de audio y vídeo Nivel de Transporte 103 REDES DE COMPUTADORES Protocolo UDP (User Datagram Protocol) RFC-768, STD 0006 Se utiliza en los siguientes escenarios: En Aplicaciones interactivas (vídeoconferencias o vídeollamadas, VoIP, etc.) y no interactivas (streaming de audio y vídeo, etc.) en tiempo real Cuando el intercambio de mensajes es muy escaso y los mensajes son cortos, por ejemplo, consultas al DNS Los mensajes se envían en una RAL del tipo Ethernet (sin errores físicos): DHCP, SNMP, … Cuando los mensajes se producen regularmente y no importa si se pierde alguno: SNMP, NTP, … Cuando se envía tráfico de broadcast/multicast Nivel de Transporte 104 REDES DE COMPUTADORES Protocolo UDP (User Datagram Protocol) RFC-768, STD 0006 Transporte NO FIABLE PERO RÁPIDO de los mensajes de aplicación encapsulados en datagramas UDP SIN CONTROLES SISTEMA FINAL EXTREMO A EXTREMO mensajes APLICACIÓN SISTEMA FINAL APLICACIÓN SERVICIO NO ORIENTADO A CONEXIÓN y NO FIABLE PERO RÁPIDO UDP ROUTER IP … IP UDP ROUTER IP IP INTERFAZ DE INTERFAZ INTERFAZ INTERFAZ INTERFAZ INTERFAZ DE RED DE RED DE RED DE RED DE RED RED Ethernet … WiFi Las unidades de datos del protocolo UDP (“PDUs UDP”) se denominan datagramas UDP o mensajes UDP Nivel de Transporte 105 REDES DE COMPUTADORES Protocolo UDP (User Datagram Protocol) RFC-768, STD 0006 Protocolo muy sencillo que añade un mínimo de sobrecarga Añade muy poco al servicio de IP como es proporcionar comunicación proceso a proceso en lugar de máquina a máquina SERVICIO NO ORIENTADO A CONEXIÓN y NO FIABLE – Con detección (opcional) y no recuperación de errores físicos – Sin control (detección y recuperación) de errores lógicos (datagramas UDP perdidos y desordenados) – Sin control de flujo Multiplexación/Demultiplexación Transferencias simúltáneas en los dos sentidos (fulldúplex) Nivel de Transporte 106 REDES DE COMPUTADORES UDP ofrece un SERVICIO NO ORIENTADO A CONEXIÓN y NO FIABLE a los Procesos del Nivel de Aplicación Un SERVICIO NO ORIENTADO A CONEXIÓN dispone de UNA FASE 1. TRASFERENCIA DE DATOS ¿Cómo accede la entidad de aplicación al servicio UDP? – Haciendo uso tanto en el código del cliente como en el código del servidor de unas funciones de comunicaciones estándares pertenencientes a un API de programación de aplicaciones en red (API de Red o API de Sockets) denominado INTERFAZ DE SOCKETS Nivel de Transporte 107 REDES DE COMPUTADORES INTERFAZ DE SOCKETS IMPLEMENTACIÓN DEL SERVICIO UDP APLICACIÓN UDP Localización conceptual Interfaz de sockets IP RED DE ACCESO ETHERNET HARDWARE Nivel de Transporte 108 REDES DE COMPUTADORES INTERFAZ DE SOCKETS Universidad de Berkeley El programador tiene que trabajar a bajo nivel Aplicación y llamar directamente de Usuario a las funciones de comunicaciones del API de programación proporcionado por un sistema Interfaz de Sockets basado en un interfaz de sockets UDP TCP IP Interfaz de Acceso y Hardware Red Nivel de Transporte 109 REDES DE COMPUTADORES PROTOCOLO UDP Formato de un Datagrama UDP RFC-768, STD 0006 Engloba dos tipos de información: Cabecera + Datos Longitud Máxima Teórica 65.535 octetos INFORMACIÓ DE CONTROL CABECERA Longitud Fija CARGA ÚTIL para UDP Longitud variable en función del tamaño de los mensajes de aplicación, los cuales deben estar delimitados, a su vez, en función de la MTU de salida DATOS (Variable) 8 octetos SDU del Nivel de Aplicación = La aplicación debe encargarse de delimitar el tamaño máximo del campo DATOS en función de la MTU de salida ) Nivel de Transporte 110 REDES DE COMPUTADORES Formato de un Datagrama UDP 0Proceso de aplicación emisor CABECERA UDP PUERTO ORIGEN LONGITUD UDP (8 octetos) 15 16 Proceso de aplicación receptor 31 PUERTO DESTINO SUMA DE COMPROBACIÓN DATOS (Variable) A todo el datagrama UDP (cabecera y datos) Uso opcional: Si la entidad UDP emisora pone “todo a ceros” = No usar Longitud en octetos del datagrama UDP (cabecera + datos) = = Longitud mínima de 8 octetos (cabecera sin datos) = Longitud máxima TEÓRICA de 65.535 octetos pero la longitud total debe ser menor debido a que la MTU = 1500 octetos Nivel de Transporte 111