teo 07: L4: Performance en TCP Flashcards
¿Cuál es el objetivo de SS? (slow start)
+ Alcanzar el punto de funcionamiento lo antes posible
+ Antes: La menor cantidad de rounds (RTT) posibles
- ¿Cuál es el valor máximo de IW? ¿Puede ser infinito?
- ¿Cuál es el problema si IW muy grande? ¿y si es muy chica?
- ¿Cuál es el valor usado en las implementaciones de TCP?
+ El valor de IW depende de la capacidad de los enlaces
+ moda(MSS) ~ 1500B
+ moda(BW_enlaces)»_space; 1 MSS / RTT
Limite superior
+ Si IW muy grande induce congestión (en la primera ráfaga)
Que IW se usa ahora? Se uso siempre el mismo?
Evolución histórica
- RFC2001 (1988) —> IW=1
- RFC2414 (1998) —> IW=2
- RFC3390 (2002) —> IW=4
- RFC6928 (2010) —> IW=10
¿Por qué IW=10?
+ Tamaño colas en routers (se verá más adelante)
+ Más de 10 puede congestionar y perderse en la primer ráfaga
+ IW > 3 —> Fast Recovery si hay pérdidas en la primera ráfaga
Que conclusion se puede sacar a partir de lo publicado por Mathis et al?
En CA + Fast recovery (RENO) el throughput depende unicamente de la latencia (los otros parametros son fijos).
Entonces, la latencia sera siempre un parametro a minimizar.
Delayed ack. Para que sirve?
Delayed ACK (RFC1122) \+ ACK (cuando corresponde) no se envía inmediatamente \+ ¿Cuánto se espera? - En la RFC1122: máx = 500ms - En la práctica: máx = 200ms - Hasta el arribo del segundo segmento de tamaño MSS
Pros, contras y neutros de delayed ack.
Pros
• Menor cantidad de ACKs generados por dst
• Menor cantidad de ACKs enviados a la red
Neutro
• Como ACK acumulativo no afecta confiabilidad
Contras
• Si tiempo para enviar ACK muy prolongando, afectará estimación de RTT en src
• Disminución de señales de pérdida de segmentos fast reTx (RFC5827)
Selective ack (SACK).
- para que se usa (pros)
- contras
- implementacion
Problema
> Con delayed ack, no tenemos tantos acks duplicados, por lo que es mas probable que haya que esperar a rto para darse cuenta que algo anda mal.
Solución
> Añadir Selective Repeat (SR) usando Opciones de TCP (RFC2018)
Implementación
> Permitir el uso de SACK el momento del SYN
> Enviar en las opciones los segmentos faltantes
Problemas de SACK TCP
> Vulnerabilidad SACK PANIC
A que se les llama Elefantes? (Long fat pipes)
LFN son aquellas conexiones de alto BW · RT T
Ejemplo de LFN (RFC3649) RTT = 100ms M SS = 1500B BW = 10Gbps BW · RT T = 83.333 segmentos = 12.500.000B
Limitaciones de TCP en LFN
- Máxima cantidad de bytes en vuelo por rwnd
2. Bajo throughput de Reno en LFT
Limitaciones de TCP en LFN: Máxima cantidad de bytes en vuelo por rwnd
+ rwnd 16 bits —> máximo en vuelo: 65536 bytes
+ Notar que en ejemplo anterior ~12MB
Solución: Window scaling
> Junto al SYN se envía el factor de escalamiento (potencias de 2)
Conclusiones de TCP en LFN
\+ Reno con baja perfomance \+ Es necesario usar otros algoritmos, ejemplo -> CUBIC, -> TCP SACK -> etc
Google QUIC: ¿Por qué necesitamos un nuevo protocolo de L4?
- Osificación
• TCP sumamente desplegado
• Conservadurismo: No se pueden hacer cambios en TCP
• Por ejemplo, ¿Podríamos pasar de ACK a NAK? NO! - Aceleración del proceso de innovación
• TCP manejado por el kernel del SO
• Demora hasta publicación de upgrades del OS kernels
• Mayor demora aún que los usuarios migren al nuevo kernel
Que soluciones trae QUIC?
Solución
- > QUIC a nivel de App (sobre UDP)
- > Updates de por fuera del kernel del SO
- > Update QUIC = Update de Apps con QUIC
- > Mayor velocidad de innovación
Que “side fx” trae QUIC?
Otras mejoras de QUIC
1. Lidiar con NATs
> No existían cuando TCP fue ideado!
- Minimizar tiempo de establecimiento de conexión
> Agregar autenticación que tampoco existían cuando TCP fue ideado! - Reducir HOL Blocking
Que propone Google QUIC?
- Reducción del establecimiento de conexión
- Cambios en control de congestión
- Multiplexación
- Identificador de conexión
- Loss Recovery