Ingeniero en Informática
TCP (Transmission Control Protocol)
CONTROL DE CONGESTIONAMIENTO CON TCP
¿Qué es congestionamiento?
Cuando una red recibe una carga mayor a la que puede manejar se forma lo que se llama congestionamiento. Para minimizar este problema se hizo lo que se conoce como control de congestionamiento.
Como es sabido cualquier red se ve afectada por el congestionamiento, incluso la Internet es afectada por este fenómeno. Y aunque la capa de red trata de manejar este problema, gran parte del trabajo recae sobre el TCP, ya que la “solución” real al congestionamiento es la disminución de la tasa de datos.
El TCP trata de manejar dinámicamente el tamaño de la ventana. Lo que se trata es de no enviar un paquete nuevo hasta que no se haya terminado de enviar uno viejo.
Pasos para el manejo de congestionamiento:
Detección: Antes era difícil detectar un congestionamiento, ya que afectaba mucho el ruido y otros problemas ocasionados por el cableado. Ahora hay una gran probabilidad de que si hay un paquete perdido fue debido al congestionamiento.
Evitar el Congestionamiento: Cuando se establece una conexión se debe tener un tamaño de ventana apropiado. Así de esta manera el receptor puede dar la especificación del tamaño de su ventana por medio de buffers en la terminal receptora, aunque aún podrían ocurrir congestionamientos por problemas internos en la red.
Realmente podemos decir que tenemos dos problemas principales aquí:
Capacidad de la red
Capacidad del receptor.
Para poder combatir el congestionamiento, hay que manejar estos dos problemas por separado. Para esto cada transmisor debe tener dos ventanas (la que se le otorga al receptor y una segunda ventana, la de congestionamiento); cada una de estas ventanas refleja la cantidad de bytes que puede enviar el transmisor. De manera tal que la cantidad de mayor de bytes que pueden enviarse será la cifra menor entre las dos ventanas.
De manera que si el receptor dice “envía 8K” pero el transmisor sabe que las ráfagas de más de 4K saturan la red, enviará solo 4K.. Pero por otro lado, si el receptor dice “envía 8K” y el transmisor sabe que las ráfagas de hasta 32K pueden llegar sin problemas, envía solo los 8K solicitados.
Al establecerse una conexión, el transmisor asigna a la ventana de congestionamiento el tamaño de segmento máximo usado por la conexión; entonces envía un segmento máximo. Si se recibe el acuse de recibo de este segmento antes de terminar el temporizador, el transmisor, el transmisor agrega el equivalente en bytes de este segmento a la ventana de congestionamiento para hacerla de dos segmentos de tamaño máximo, y envía dos segmentos. A medida que se reconoce cada uno de estos segmentos, se aumenta el tamaño de la ventana de congestionamiento en un segmento máximo. Cuando la ventana de congestionamientos es de n segmentos, si de todos los n se reciben acuses de recibo a tiempo, se aumenta el tamaño de la ventana de congestionamiento en la cuenta de bytes correspondiente a n segmentos. De hecho, cada ráfaga reconocida con éxito duplica la ventana de congestionamiento.
GESTION DE TEMPORIZADORES DEL TCP
El TCP utiliza varios temporizadores. Aunque el mas importante de ellos es el temporizador de retransmisión. El cual funciona de la siguiente manera:
Si se envía un mensaje y el acuse del mensaje llega antes de que se termine el temporizador, este se detiene; pero si se envía un mensaje y el acuse no ha llegado antes de que se termine el temporizador, este hace un reenvío del mensaje y se vuelve a iniciar el temporizador.
El problema que surge con este sistema es el de la interrogante ¿Qué tan grande debe ser el intervalo de terminación del temporizador?
Es complicada la determinación del tiempo de ida y vuelta al destino. Aún cuando se conoce, la selección del intervalo de terminación de temporización también es difícil. Si se hace demasiado corto, ocurrirán retransmisiones innecesarias. Si se hace demasiado largo, el desempeño sufrirá debido al gran retardo de retransmisión de cada paquete perdido. Es mas, la varianza y la medida de la distribución de llegadas de acuses de recibo pueden variar con rapidez en unos cuantos segundos, a medida que se generan y se resuelven congestionamientos.
La solución es usar un algoritmo muy dinámico que ajuste constantemente el intervalo de terminación de temporización, con base en mediciones continuas del desempeño de la red. El algoritmo que generalmente usa el TCP lo debemos a Jacobson (1988) y funciona así:
Por cada conexión, el TCP mantiene una variable, RTT(round-trip time), que es la mejor estimación actual del tiempo de ida y vuelta al destino en cuestión. Al enviarse un segmento, se inicia un temporizador, tanto para ver el tiempo que tarda el acuse de recibo como para disparar una retransmisión si se tarda demasiado. Si llega el acuse de recibo antes de expirar el temporizador, el TCP mide el tiempo que tardó el acuse de recibo, digamos M. Entonces actualiza RTT de acuerdo con la fórmula:
RTT = "RTT+(1 - ") M
donde " es un factor de amortiguamiento que determina el peso que se le da al valor anterior. Por la común, " = 7/8.
El segundo temporizador utilizado por TCP es el temporizador de persistencia, este funciona cuando el receptor envía un acuse de recibo de tamaño de ventana de 0, indicando al transmisor que espere. Después, el receptor actualiza la ventana, pero se pierde el paquete con la actualización. Ahora tanto el transmisor como el receptor están esperando que el otro haga algo. Cuando termina el temporizador de persistencia, el transmisor envía una prueba al receptor. La respuesta de la prueba indica el tamaño de la ventana. Si aún es de cero, se inicia el temporizador de persistencia nuevamente, repitiéndose el ciclo. Si es diferente de cero, pueden enviarse datos.
El tercer temporizador utilizado es el temporizador de seguir con vida (keepalive). Cuando una conexión ha estado ociosa durante demasiado tiempo, el temporizado de seguir con vida puede terminar, haciendo que un lado compruebe que el otro aún está ahí. Si no se recibe respuesta, se termina la conexión. Esta característica es motivo de controversias porque agrega carga extra y puede terminar una conexión por lo demás saludable debido a una partición temporal de la red.
El último temporizador utilizado en cada conexión TCP es el que se usa en el estado TIMED WAIT durante el cierre; opera durante el doble del tiempo máximo de vida de paquete para asegurar que, al cerrarse una conexión, todos los paquetes creados por ella hayan muerto.
UDP
Internet maneja también un protocolo de transporte, el UDP (Protocolo de Datos de Usuario). Este ofrece a las aplicaciones un mecanismo para enviar datagramas IP en bruto encapsulados sin tener que establecer una conexión.
Un segmento UDP consiste en una cabecera de 8 bytes seguida de los datos. Tiene dos puertos que sirven para lo mismo que en el TCP: para identificar los puntos terminales de las máquinas de origen y destino. El campo de longitud UDP incluye la cabecera de 8 bytes y los datos.
Descargar
Enviado por: | Cucha |
Idioma: | castellano |
País: | España |