miércoles, 7 de diciembre de 2016

5.4.3 Control de congestión en TCP

El método utilizado por TCP para control de la congestión es el basado en la regulación del tráfico inyectado a la red. Esto supone que implementa funciones que le permiten estudiar cuándo es posible enviar más tráfico por el enlace, y cuándo se ha superado la capacidad del mismo y se debe disminuir la carga.


TCP emplea 4 algoritmos relacionados entre sí a los efectos de efectuar el control de congestión [2, 5, 7, 8]. Ellos son conocidos con slow start, congestion avoidance, fast retransmit y fast recovery.




Los algoritmos slow start y congestion avoidance, deben ser utilizados por la fuente TCP a los efectos de controlar la cantidad de tráfico inyectado en la red.

Para esto se cuenta con tres variables de estado delprotocolo. Estas son cwnd (congestion window), que controla del lado de la fuente la cantidad de datos que se puede enviar sin haber recibido un ACK, rwnd (receiver’s advertised window) que indica la cantidad de datos que puede recibir el destino y ssthresh (slow start threshold) que indica en que fase de control de congestión se encuentra el transmisor (slow start si es mayor que cwnd o congestion avoidance si es menor; de ser iguales, se puede utilizar cualquiera de los dos algoritmos). El mínimo de cwnd y rwnd gobierna la transmisión. El algoritmo slow start es utilizado al comienzo de una transmisión a los efectos de que TCP pueda testear la red y conocer su capacidad evitando congestionarla. También es utilizado en el momento de recuperación ante la pérdida de algún segmento, indicada por timeout. Luego del three-way handshake, el tamaño de la ventana inicial de envío (IW: initial window) debe ser menor o igual que2 x SMSS1 bytes y no mayor a dos segmentos. El valor de ssthresh debería ser lo más alto posible al comienzo (por ejemplo, igual a rwnd) y deberá reducirse en caso de congestión. Durante la fase slow start se aumenta cwnd en a lo sumo SMSS bytes por cada ACK recibido de datos nuevos entregados al receptor. Esta fase culmina cuando cwnd alcanza a ssthresh o cuando se detecta congestión.

A partir de allí se inicia la fase de congestion avoidance donde cwnd se incrementa en un segmento por round-triptime (tiempo que transcurre entre que sale un segmento y llega el ACK asociado). Esta fase continua hasta que se alcanza la congestión nuevamente.

No hay comentarios:

Publicar un comentario