La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Capa Transporte3-1 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP.

Presentaciones similares


Presentación del tema: "Capa Transporte3-1 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP."— Transcripción de la presentación:

1 Capa Transporte3-1 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP r 3.4 Principios de transferencia confiable de datos r 3.5 Transporte orientado a la conexión: TCP m Estructura de un segmento m Transferencia confiable de datos m Control de flujo m Gestión de la conexión r 3.6 Principios del control de congestión r 3.7 Control de congestión en TCP

2 Capa Transporte3-2 TCP: Generalidades RFCs: 793, 1122, 1323, 2018, 2581 r Transferencia full duplex (dos sentidos): m Flujo de datos bi- direccionales en la misma conexión m MSS: maximum segment size r Orientado a la conexión: m handshaking (intercambio de mensajes de control) inicializa al Tx y Rx antes del intercambio de datos r Usa control de flujo: m Tx no sobrecargará al Rx r Punto-a punto: m Un Tx y un Rx r confiable, en orden flujo de bytes: m no hay “límites de inicio/término de menaje” r Usa pipeline: m El tamaño de la ventana TCP es definido por el control de congestión y control de flujo r Usa buffer en Tx & Rx socket door TCP send buffer TCP receive buffer socket door segment application writes data application reads data

3 Capa Transporte3-3 Estructura de un segmento TCP # puerto origen # puerto dest. 32 bits Datos de la aplicación (largo variable) Número de secuencia Número de acknowledgement Ventana receptor Puntero dato urgente checksum F SR PAU largo head No usado Opciones (largo variable) URG: urgent data (generalmente no usado) ACK: ACK # válido PSH: push data now ( Indica entregar datos a aplic. ahora ) RST, SYN, FIN: Establecimiento de conexión (comandos de inicio y cierre) # bytes El Rx está dispuesto a aceptar Cuenta bytes de datos (no segmentos) checksum (como en UDP)

4 Capa Transporte3-4 # de sec. y ACKs en TCP # de Sec.: m “número” del byte dentro del flujo correspondiente al primer byte del segmento de datos ACKs: m # sec. del próximo byte esperado desde el otro lado m ACK es acumulativo Q: ¿Cómo el receptor maneja segmentos fuera de orden? m R: la especificación de TCP lo deja a criterio del implementador Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 User tipea ‘C’ host acusa recibo de eco ‘C’ host acusa recibo de ‘C’ y envía echo de ‘C’ tiempo Escenario telnet simple Con conexión ya establecida

5 Capa Transporte3-5 Round Trip Time y Timeout en TCP Q: ¿Cómo fijar valor de timeout en TCP? r Mayor que RTT m pero RTT varía r Muy corto: timeout prematuro m Retransmisiones innecesarias r Muy largo: lenta reacción a pérdidas de segmentos Q: ¿Cómo estimar el RTT?  SampleRTT : mide timepo desde tx del segmento hasta recibo de ACK m Ignora retransmisiones  SampleRTT varía, hay que suavizar el RTT estimado  Promediar varias medidas recientes, no considerar sólo el último SampleRTT

6 Capa Transporte3-6 Round Trip Time y Timeout en TCP EstimatedRTT = (1-  )*EstimatedRTT +  *SampleRTT r Promedio móvil ponderado exponencial r Influencia de las muestras pasadas decrece exponencialmente rápido  Valor típico:  = 0.125 = (1/8) = 3 right shifts

7 Capa Transporte3-7 Ejemplo de estimación de RTT:

8 Capa Transporte3-8 Round Trip Time y Timeout en TCP Definición del timeout  EstimtedRTT más un “margen de seguridad”  Si hay gran variación en EstimatedRTT -> usar gran margen r Primero estimamos cuánto el SampleRTT se desvía del EstimatedRTT: TimeoutInterval = EstimatedRTT + 4*DevRTT DevRTT = (1-  )*DevRTT +  *|SampleRTT-EstimatedRTT| (typically,  = 0.25) Entonces fijamos el timeout como:

9 Capa Transporte3-9 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP r 3.4 Principios de transferencia confiable de datos r 3.5 Transporte orientado a la conexión: TCP m Estructura de un segmento m Transferencia confiable de datos m Control de flujo m Gestión de la conexión r 3.6 Principios del control de congestión r 3.7 Control de congestión en TCP

10 Capa Transporte3-10 Transferencia confiable de datos en TCP r TCP crea un servicio de transferencia confiable sobre el servicio no confiable de IP r Usa segmentos en pipeline r Acks acumulativos r TCP usa un timer de retransmisión único r Retransmisiones son activadas por: m Eventos timeout m Acks duplicados r Inicialmente consideremos un Tx TCP simplificado: m ignora acks duplicados m ignora control de flujo y control de congestión

11 Capa Transporte3-11 Eventos del transmisor en TCP: Datos recibidos desde aplicación: r Crea segemto con # de sec. r # sec es el número dentro del flujo para el primer byte del segmento r inicia timer si no está ya corriendo (asociar el timer al segmento más viejo sin acuse de recibo)  Tiempo de expiración: TimeOutInterval timeout: r Retransmitir el segmento que causó el timeout r Re-iniciar el timer Recepción de Ack: r Si es el ack de un segmento previo sin acuse de recibo m Actualizar estado sobre acuses recibidos m Iniciar timer si hay segmentos sin acuses de recibo.

12 Capa Transporte3-12 Tx TCP (simplificado NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: datos recibidos desde la aplicación Crear segmento TCP con número de sec. NextSeqNum if (timer actualmente no está corriendo) iniciar timer pasar segmento a IP NextSeqNum = NextSeqNum + length(data) break; event: timeout del timer retransmitir segmento con menor # de sec. sin acuse iniciar timer break; event: recepción de ACK con campo ACK de valor y if (y > SendBase) { SendBase = y if (hay segmentos sin acuse de recibo aún) iniciar timer } } /* end of loop forever */ Comentarios: SendBase-1: último Byte con ACK Ejemplo: SendBase-1 = 71; y= 73, el Rx quiere bytes 73+ ; como y > SendBase, llegó acuse de recibo de nuevo dato

13 Capa Transporte3-13 TCP: escenarios de retransmisión Host A Seq=100, 20 bytes data ACK=100 time Timeout prematuro Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=92 timeout ACK=120 Host A Seq=92, 8 bytes data ACK=100 loss timeout Pérdida de ACK Host B X Seq=92, 8 bytes data ACK=100 time Seq=92 timeout SendBase = 100 SendBase = 120 SendBase = 120 Sendbase = 100

14 Capa Transporte3-14 TCP escenarios de retransmisión (más) Host A Seq=92, 8 bytes data ACK=100 loss timeout ACK acumulado Host B X Seq=100, 20 bytes data ACK=120 time SendBase = 120

15 Capa Transporte3-15 Generación de ACK en TCP [RFC 1122, RFC 2581] Evento en Receptor Llegada de segmento en orden con # sec. esperado. Ya se envió el ACK de todo lo previo. Llegada de segmento en orden con # sec. esperado. Algún segmento tiene ACK pendiente Llegada de segmento fuera de orden con # sec. mayor al esperado. Se detecta un vacío. Llegada de segmento que llena el vacío parcialmente o completamente TCP acción del receptor ACK retardado. Espera hasta 500ms por próximo segmento. Si no llega otro segmento enviar ACK Enviar inmediatamente un ACK acumulado se da acuse así a ambos segmentos en orden. Enviar inmediatamente un ACK duplicado, indicando # sec. Próximo byte esperado Enviar inmediatamente un ACK cuando segmento se ubique al inicio del vacío.

16 Capa Transporte3-16 Retransmisiones Rápidas r Periodo de Time-out es a menudo largo: m Largo retardo antes de re-envío de paquetes perdidos r Se detecta paquetes perdidos vía ACKs duplicados. m Tx a menudo envía muchos segmentos seguidos m Si un segmento es perdido, probablemente habrá muchos ACKs duplicados. r Si Tx recibe 3 ACKs de un mismo dato, éste supone que el segmento después de este dato se perdió: m Retransmisiones rápidas: reenviar el segmento antes que el timer expire.

17 Capa Transporte3-17 event: Llega ACK, con campo ACK de valor y if (y > SendBase) { SendBase = y if (hay segmentos sin acuse de recibo aún) iniciar timer } else { // y==SendBase incrementar cuenta de ACKs de y duplicados if (cuenta de ACKs de y duplicados = 3) { re-enviar segmento con # de secuencia y } Algoritmo de retransmisión rápida: ACK duplicado de un segmento con ACK recibido Retransmisión rápida

18 Capa Transporte3-18 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP r 3.4 Principios de transferencia confiable de datos r 3.5 Transporte orientado a la conexión: TCP m Estructura de un segmento m Transferencia confiable de datos m Control de flujo m Administración de conexión r 3.6 Principios del control de congestión r 3.7 Control de congestión en TCP


Descargar ppt "Capa Transporte3-1 Capítulo 3: Continuación r 3.1 Servicios de la capa transporte r 3.2 Multiplexing y demultiplexing r 3.3 Transporte sin conexión: UDP."

Presentaciones similares


Anuncios Google