Rate Halving es el algoritmo de recuperación de pérdida de paquetes que supera el problema del algoritmo Fast Recovery. La reducción a la mitad de la tasa significa que reducirá a la mitad la tasa de transmisión de paquetes de modo que la aplicación del receptor no se detenga. Evita la media ventana de silencio que, de lo contrario, frustraría al receptor si no recibe los paquetes durante ese período. Por lo tanto, en lugar de esperar la mitad de la duración y luego enviar un paquete por DUP-ACK durante la mitad restante, la reducción a la mitad envía un paquete por cada dos llegadas de DUP-ACK. El número total de paquetes transmitidos es el mismo que el de Fast Recovery, pero el tiempo de espera se ha gestionado de forma inteligente. Permite que la red salga del estado de congestión gradualmente en lugar de quedarse en silencio durante la mitad de la duración y dejar que el vuelo caiga al valor cwnd.
A diferencia de la técnica Fast Recovery, Rate Halving no reduce el cwnd en un 50 % cuando el remitente entra en la fase de recuperación. Lo disminuye gradualmente en un 50%.
Técnica Rate Halving sin SACK
El estado inicial de la fase de recuperación rápida:
ssthresh = 5 cwnd = 10 inflight = 1
- Cuando llega DUP-ACK, pipe=10-1=9; el remitente no responde y guarda silencio.
- Cuando llega DUP-ACK, pipe=9-1=8; Ahora, el remitente envía un nuevo paquete a la red, pipe=8+1=9.
- Cuando llega DUP-ACK, pipe=9-1=8; el remitente no responde y guarda silencio.
- Cuando llega DUP-ACK, pipe=8-1=7; Ahora, el remitente envía un nuevo paquete a la red, pipe=7+1=8.
- Cuando llega DUP-ACK, pipe=8-1=7; el remitente no responde y guarda silencio.
- Cuando llega DUP-ACK, pipe=7-1=6; Ahora, el remitente envía un nuevo paquete a la red, pipe=6+1=7.
- Cuando llega DUP-ACK, pipe=7-1=6; el remitente no responde y guarda silencio.
- Cuando llega DUP-ACK, pipe=6-1=5; Ahora, el remitente envía un nuevo paquete a la red, pipe=5+1=6.
- Cuando llega DUP-ACK, pipe=6-1=5; el remitente no responde y guarda silencio.
- Cuando llega DUP-ACK, pipe=5-1=4; Ahora, el remitente envía un nuevo paquete a la red, pipe=4+1=5.
Por lo tanto, el remitente envía gradualmente los nuevos paquetes y no detiene la aplicación del receptor.
Esta técnica tiene el inconveniente de que no se puede utilizar con todos los tipos de TCP. Solo se puede usar cuando cwnd se reduce al 50 % cuando se produce una pérdida de paquetes. TCP como CUBIC, donde cwnd se reduce en un 30 %, no puede usar el algoritmo Rate Halving. Google inventó otro algoritmo optimizado para eso llamado Reducción de tasa proporcional (PRR).
Técnica Rate Halving con SACK
Cuando se produce la pérdida de paquetes,
pipe = 10, cwnd = 10, ssthresh = 5.
Luego, pipe y cwnd disminuyeron a 5 después de que el remitente obtuvo 9 ACK y transmitió 4 nuevos segmentos (ver el diagrama anterior).
SACK es enviado por el receptor cuando recibe un paquete fuera de servicio. Esto crea agujeros en el búfer del receptor y le informa al remitente y el remitente envía los paquetes perdidos para neutralizar la pérdida.
Escenario actual:
1 DUP-ACK viene con información SACK. SACK dice que se han perdido 2 paquetes.
pipe=5-1-2=2, -1 for DUP-ACK and -2 for lost packets. pipe = 2 segments cwnd = 5 segments Sender sends one new packet, pipe=2+1=3 1 DUP-ACK comes, pipe=3-1=2 Sender sends new packet, pipe=2+1=3
Este proceso continúa. El problema con este enfoque es que incluso cuando pipe <cwnd, se envía un nuevo segmento por cada DupACK recibido. Este problema conduce a un enfoque conservador de la transmisión si la tubería << cwnd.
Limitaciones de la reducción a la mitad de la tasa:
No es adecuado para TCP CUBIC y otros TCP que no reducen el cwnd en un 50 % cuando se produce una pérdida de paquetes. En ese caso, el remitente no puede enviar un nuevo paquete después de que lleguen 2 DUP-ACK. Todos los TCP no reducen el cwnd a la mitad en la pérdida de paquetes. Esto se puede solucionar con PRR (Reducción de Tasa Proporcional).
Publicación traducida automáticamente
Artículo escrito por pintusaini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA