Se hablan de 4 algorítmos que son usados para evitar la congestión en TCP, los algorítmos son los siguientes: comienzo lento (slow start), evitación de congestión (congestion avoidance), retransmición rápida (fast retransmit) y recurperación rápida (fast recovery).
Comienzo Lento (Slow Start) / Evitación de Congestión (Congestion Avoidance).
Para los algorítmos de comienzo lento (slow start) y evitación de congestión (congestion avoidance) estos deben ser usados por un emisor de TCP para controlar la cantidad de datos son enviados por la red, se crean dos variables por cada transmisión creada al enviar datos, dichas variables son las siguientes congestion window (cwnd) y advertised window (rwnd), el cwnd es el que marca un limite a la cantidad a enviar de datos por medio de la red en el lado del emisor de datos, mientras que en el rwnd es un receptor que marca como limite la cantidad de datos que se reciben.
Existe otra variable en el algorítmo de comienzo lento (slow start) llamada the slow start threshold (ssthresh), el cual es usado para determinar si se esta usando el algorítmo slow start o congestion avoidance para hacer control de la transmisión de datos. Para comenzar la transmisión en la red con condiciones desconocidas esta requiere hacer una prueba usando la red con transmisiones lentas de datos para determinar la disponibilidad de transmisión de datos, esto con el fin de evitar una congestión en la red.
El algorítmo de slow start es usado con el propósito de comenzar una transferencia de datos o después de haber reparado una pérdida de datos y hacer una retransmisión de datos.
Rápida retransmisión (Fast Retransmit) / Rápida recuperación (Fast Recovery).
Al momento de recibir algún dato y hacer un ACK de confirmación este debe hacer un duplicado del mismo ACK cuando hay una falla en la transmisión cuando el segmento llega, el propósito del ACK es para informar al receptor que el segmente enviado ha sido roto y que número de secuencia es esperada, desde la prespectica del receptor el duplicado puede ser causado por un número de problemas en la red.
Estos pueden ser causados por un segmento roto, en dicho caso todos los segmentes después de haber pérdido el segmente de datos este hará un duplicado de ACK's hasta que la pérdida haya sido reparada. También el duplicado de los ACK's puede ser causado por una replicación de ACK o de segmentos de datos en la red. Adicionalmente un emisor TCP debe enviar un ACK inmediatamente cuando el segmento se encuentra lleno.
El TCP emisor debe usar el algorítmo de fast retransmit para detectar y reparar datos perdidos, todo en base a los ACK's duplicados. El algorítmo de fast retransmit usa la llegada del duplicado de 3 ACK's como indicación de que un segmento ha sido pérdido. Después de recibir 3 duplicados ACK's, TCP realiza una retransmisión de lo que parece ser el segmento faltante, sin tener un timeout.
Después el algorítmo de fast retransmit envía lo que parece ser el segmento faltante, el algorítmo de fast recovery es el que hace las decisiones de la transmisión de nuevos datos hasta que ningún dúplicado de ACK llegue.
La razón por la que no se usa el algorítmo de slow start es que el receptor de los dúplicados de los ACK's no solamente indica que el segmente de datos ha sido pérdido si no que también el segmentos de datos ha quedado fuera de la red.
En otras palabras desde que se reciben datos solo se pueden generar un dúplicado de ACK's cuando el segmento de datos ha sido recibido, el segmento se ha salido de la red y se ha quedado en el receptor del buffer, y ahora no consume datos de la red.
Referencia:
Title | TCP Congestion Control |
---|---|
Author | M. Allman, V. Paxson, E. Blanton |
Date | September 2009 |
Siento que gráficas o ejemplos pudieran haber sido de utilidad. Está algo corto. Falta la crítica propia. 5 pts.
ResponderEliminar