TCP Control de Congestión Teorı́a de la Comunicaciones 05 de Junio de 2012 Request for comments Internet Engineering Task Force Standards de Internet (ejemplo: rfc 1122 - Requirements for Internet Hosts ) Keywords: MUST, MUST NOT, SHOULD, SHOULD NOT, MAY (rfc 2119 - Key words for use in RFCs to Indicate Requirement Levels) rfc5681 - Teorı́a de la Comunicaciones rfc 5681: TCP Congestion Control Abstract This document defines TCP’s four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. rfc5681 - Teorı́a de la Comunicaciones Definiciones Segment: ”Paquete”TCP/IP Sender Maximum Segment Size (SMSS): Máximo payload puede tener cada segmento Receiver Maximum Segment Size (RMSS): Máximo que va a recibir el receptor Full-Sized Segment: Un segmento con la cantidad máxima (SMSS) de bytes rfc5681 - Teorı́a de la Comunicaciones Definiciones Reciever Window (RWND): Última Advertised Window recibida Congestion Window (CWND): Estimación de la congestión Initial Window (IW): Valor de CWND después del handshake Loss Window (LW): Valor de CWND después de un timeout Restart Window (RW): Valor de CWND después de un perı́odo idle. rfc5681 - Teorı́a de la Comunicaciones Definiciones Flight Size: (LastByte Sent - LastByte ACKed) Duplicate Acknowledgement: Un ACK es duplicado, si: El receptor tiene datos en vuelo. El ACK no tiene datos. No Hay SYN ni FIN. El número de ACK es igual al último recibido. La advertised window es igual a la última recibida. rfc5681 - Teorı́a de la Comunicaciones Algoritmos Additive Increase / Multiplicative Decrease rfc5681 - Teorı́a de la Comunicaciones Algoritmos de Control de Congestión Slow Start: Comenzar enviando pocos datos Congestion Avoidance: Aumentar un SMSS por RTT Fast Retransmit / Fast Recovery: No esperar al time out, para recuperarse de un error. rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Slow Start Inicialmente: CWND = IW = 2*SMSS SSTHRESH = alta Por cada ACK, si CWND < SSTHRESH, hacer: CWND += min(N,SMSS) N es la cantidad de bytes reconocidos por el ACK rfc5681 - Teorı́a de la Comunicaciones Ejercicio 17 Considere el efecto de usar Slow Start en una conexión TCP, que tiene un RTT de 10 mseg y sin congestión ni errores presentes en la red. La RWND es de 24 KB y el SMSS es de 2KB. Cuánto tiempo transcurre antes de que pueda ser enviada la primera ventana de recepción llena? Asuma los siguientes valores: initial window = 2 * SMSS SSTHRESH = muy alto rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Congestion Avoidance Si CWND > SSTHRESH, por cada ACK, hacer: CWND += SMSS*SMSS/CWND rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Slow Start + Congestion Avoidance rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Time out Ante un time-out se cambian los valores a: CWND = LW (1 SMSS) SSTHRESH = max(FlightSize/2, 2 ∗ SMSS) ⇒ Se comienza de nuevo con Slow Start rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Fast Recovery / Fast Retransmit En cuanto el receiver reciba un segmento fuera de orden, deberı́a enviar un ACK Duplicado inmediatamente. En cuanto el sender reciba el 3er ACK duplicado, deberı́a retransmitir inmediatamente el segmento perdido. SSTHRESH = max(FlightSize/2, 2 ∗ SMSS) CWND = SSTHRESH + 3 Mientras sigan llegando ACKs duplicados: CWND += SMSS (Congestion Avoidance) rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Fast Recovery / Fast Retransmit Termina cuando llega el primer ACK que reconoce nuevos datos. CWND = SSTHRESH ⇒ Congestion Avoidance rfc5681 - Teorı́a de la Comunicaciones Algoritmos: Fast Recovery / Fast Retransmit Sin FR/FR Con FR/FR rfc5681 - Teorı́a de la Comunicaciones Ejercicio 19 Dado el siguiente intercambio de mensajes TCP entre dos hosts 1 2 3 4 5 6 7 8 9 10 11 ORIG 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 DEST 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 192.168.1.1:80 192.168.1.100:5678 FLAGS S SA A A A A A A A A R SEQ 0 56589 1 56590 1 56590 56590 53 56791 54 57192 54 57323 ACK − 1 0 53 54 56791 0 54 57192 54 57323 − LENGTH 0 0 200 400 0 130 0 0 a) Cuánto vale la ventana de congestión del lado del receptor luego del segmento 10? Asuma que el ssthresh asi como la advertise window que el emisor informa son muy altos. b) En que estado se encuentra la conexión luego del último segmento? c) Si el RTT entre ambos hosts es de alrededor 0.330 milisegundos. Cuánto vale el RTO luego del segmento 10? rfc5681 - Teorı́a de la Comunicaciones