Capa de Transporte
Servicios Servicios parecidos a la capa de red Orientados a conexión No orientados a conexión ¿ Porqué dos capas distintas ? La capa de transporte sólo depende de los usuarios finales y la de red no Puede haber varias capas de transporte especializadas en tipos de tráfico.
Relación entre capas
Anidado de TPDU
Calidad de servicio La capa de transporte debe mejorar la QoS de la subred Posibles parámetros de QoS Negociación de opciones
Primitivas Lo más interesante es el servicio orientado a conexión Se trata de brindar un flujo confiable de datos de extremo a extremo Ejemplo de primitivas de una capa de transporte:
Diagrama de estados cliente: línea sólida - servidor: línea punteada
Primitivas con Berkeley sockets
Capas de Enlace y Transporte Las funciones de capa de transporte son similares a las de capa de enlace de datos Control de errores Secuenciamiento Control de flujo Pero hay diferencias...
Capas de Enlace y Transporte Diferencias: Direccionamiento Complejidad en el establecimiento de conexión Capacidad de almacenamiento en la red Diferencias de retardos
Direccionamiento Necesidad de conocer la máquina destino Necesidad de identificar el servicio Ej en TCP/IP dirección IP + puerto TCP Puertos bien conocidos Servidor de procesos (escucha en todos los puertos) Servidor de nombres (ej. DNS)
Direcciones: TSAP NSAP
Servidor de procesos
Establecimiento de conexión Más difícil de lo que parece Problema de los duplicados retardados Posible repetición de conexiones Posibles soluciones: Direcciones por una única vez Identificación de conexión (y caídas ?) Vida limitada de los paquetes subred restringida, contador de saltos, timestamp
Establecimiento de conexión (Tomlinson) Establecer conexión Reloj de tiempo real en cada máquina que no se apaga Tiempo T=múltiplo de tiempo de vida de los paquetes Zona prohibida Conexión en tres tiempos con secuencias independientes para cada extremo
Números de secuencia Zona prohibida
Establecimiento en 3 fases
Fin de conexión Terminar conexión simétrica asimétrica se cierran separadamente ambos sentidos complicación del problema de los dos ejércitos asimétrica puede provocar pérdida de datos
Desconexión con pérdida de información
Problema de los dos ejércitos
Diferentes escenarios de corte
Buffers y control de flujo Máquinas con muchas conexiones simultáneas ¿ Cómo optimizar el buffer ? Políticas Buffer dinámico Posible deadlock si se pierde actualización Limitaciones por capacidad de la red Ventana dependiendo de la carga: W = c.r c = capacidad de la red en paquetes por segundo. r = tiempo de ida y vuelta.
Diferentes políticas de manejo de buffers
Posible deadlock
Multiplexado Multiplexado Upward multiplexing Downward multiplexing políticas de precios en las conexiones de red varias conexiones de transporte sobre una de red Downward multiplexing enlaces rápidos pero la ventana limita una conexión de transporte abre varias conexiones de red y reparte la carga
Multiplexado: Upward y downward
Recuperación de caídas Recuperación frente a problemas Caídas de la red con circuitos virtuales vs. datagramas Caídas en las máquinas de los extremos No se puede hacer transparente a las capas superiores Existen casos donde se pueden duplicar o perder según las políticas del transmisor y el receptor
Caídas en las máquinas Según estrategia del servidor y el cliente A - Ack, W - Write, C - Crash
Transmission Control Protocol TCP Objetivo: Flujo confiable de bytes sobre una red no confiable Diferentes tecnologías de red en el medio Robusto frente a problemas de la red Entidad TCP y protocolo TCP Recibe flujo de la capa superior y lo parte en trozos que envía en paquetes IP El receptor lo reensambla
Modelo de servicio de TCP Conexión entre 2 sockets Identificación de los sockets formada por dirección IP + puerto (puerto=TSAP) Las conexiones se identifican con las direcciones de los sockets de ambos extremos Puertos 0 - 256: puertos bien conocidos (RFC 1700) Full duplex y punto a punto
TCP Las conexiones TCP son un flujo de bytes, no de mensajes (capas superiores) Puede esperar para enviarlo según su política de buffer (Pero existe push) También datos urgentes. (Ejemplo ^C)
Mensajes y bytes Un mensaje (ABCD) es enviado en 4 paquetes IP separados, pero devuelto a la aplicación destino como un conjunto de bytes ABCD
Protocolo TCP Número de secuencia de 32 bits Unidad de datos = Segmento Encabezado de de 20 bytes Máximo del segmento carga del paquete IP 64 Kbytes MTU de la red. Típico 1500 bytes Usa protocolo de ventanas deslizantes de tamaño de ventana variable
Problemas con los segmentos Pérdidas de segmentos por rutas congestionadas o enlaces caídos Segmentos llegan fuera de orden Segmentos se duplican por retardos que obligan a la retransmisión
Encabezado TCP
Pseudo-encabezado para cálculo del checksum
Opciones Escala de la ventana. Repetición selectiva (nak)
Manejo de conexiones
Estados de la conexión
Significado de los estados
Política de transmisión en TCP El que recibe informa sobre el tamaño de la ventana (tamaño de buffer disponible) Ventana 0 y siguiente anuncio se pierde bloqueo urgentes y prueba para reanuncio de ventana Posibilidad de retardar el envío (hasta 500 ms) para esperar a llenar ventana del receptor
Manejo de ventana en TCP
Problemas de performance Algoritmo de Nagle esperar el ack del primer byte y luego bufferear se puede enviar también cuando se llena media ventana o el tamaño máximo del segmento Malo en aplicaciones tipo X-Windows (mouse) Síndrome de la ventana tonta Aviso de ventana de 1 byte Clark: No avisar disponibilidad de ventana hasta segmento máximo o mitad del buffer libre
Ventana tonta
Control de congestión en TCP Hipótesis: las pérdidas de paquetes son por congestión (los enlaces son buenos ahora) Ventana de congestión Comienza con la mitad del tamaño máximo de segmento (64Kbytes) como umbral Aumenta duplicando tamaño desde un segmento a cada ACK (slow start !) A partir del umbral sigue lineal Pérdida o ICMP Source Quench: nivel a la mitad de la ventana y ventana 1 segmento.
Control de flujo y congestión
Ventana de congestión
Gestión de temporizadores Varios temporizadores el más importante es el de retransmisión Jacobson: RTT = a RTT + ( 1 - a ) M a = 7/8 D = a D + ( 1 - a ) |RTT - M| Timeout = RTT + 4 * D Karn: No calcular sobre retransmisiones Se duplica el timeout a cada pérdida. Otros: persistencia, mantener vivo, espera al cerrar
Dispersión de retardos en capa de enlace y de transporte
UDP UDP no orientado a conexión Básicamente es un paquete IP con un encabezado mínimo de capa de transporte