Cada segmento enviado por TCP, lleva asociado un reloj de descuento o expiración (timeout) que, si se agota sin que se reciba un segmento cuyo Número de ACK cubra los datos transportados en el segmento transmitido, dispara la retransmisión. El tiempo se asocia a una variable conocida como Expiración de Retransmisión (RTO, Retransmission Timeout). La estrategia significa que el reloj debe ajustarse de manera de dar tiempo a bajar el segmento a la red, que ésta lo transporte encapsulado en IP hacia destino, que el destino lo levante de la red y verifique sus errores y, de ser correcto, que edite un segmento ACK para que viaje de regreso hacia la fuente. Todo este tiempo se conoce como Tiempo de Viaje de Ida y Vuelta (RTT, Round Trip Time).
Existe un tiempo de expiración asociado al inicio de una conexión. Su naturaleza es del tipo retroceso exponencial, manejado por dos variables: la cantidad de reintentos y el tiempo total antes de proceder a un aviso de imposibilidad de comunicación. Estos valores podrían fijarse de antemano, en términos generales, suficientes para cubrir cualquier tipo de conexión.
Lo interesante, durante la fase de transmisión de datos para una conexión particular, y aún dentro de una misma conexión, es cómo fijar el valor del RTO, ya que el propio RTT puede llegar a variar por diversos motivos, muchos de los cuales se encuentran asociados directamente a la situación de carga de tráfico en la red.
La estrategia más inteligente en todos los casos sería fijar el valor del RTO en base a una medición del RTT. Esto es lógico cuando se piensa que, si se fijara el valor del RTO en un tiempo menor que el RTT promedio para la conexión particular, probablemente se producirían retransmisiones innecesarias. De la misma manera, si se fija un valor superior, se podría perder capacidad de reacción, trabajándose de manera ineficiente en el caso de una red congestionada. Por este motivo, el valor fijado para el RTO debe seguir las propias fluctuaciones del RTT.
Para cada conexión, el protocolo TCP toma muestras del valor del RTT, midiendo el tiempo que transcurre entre la transmisión de un segmento de datos con un Número de Secuencia dado y la recepción de un segmento de ACK, cuyo Número de ACK lo reconozca como recibido correctamente. Dentro de una misma conexión, se pueden obtener muchas muestras que pueden servir para estimar las variaciones del RTT, para el ajuste apropiado del RTO.
La estimación debe ser lo más cercana posible a la realidad para no generar retransmisiones disparadas prematuramente, innecesarias, o tardías, por falta de capacidad de reacción a las variaciones.
0 comentarios:
Publicar un comentario