Suplemento del protocolo TCP

En la introducción anterior a la capa de transporte, se introdujeron los protocolos UDP y TCP en la capa de transporte . TCP es un protocolo de comunicación confiable y orientado a la conexión. ¿Qué mecanismo utiliza TCP para garantizar la calidad de la comunicación y cómo manejar las excepciones?
Entre ellos, TCP garantiza su calidad de comunicación a través de mecanismos tales como retransmisión automática (ARQ), control de flujo y control de congestión . DondeLa retransmisión automática significa que el remitente no recibe el mensaje de confirmación de la otra parte dentro del tiempo especificado, y retransmitirá el mensaje anterior (el mensaje que no recibió la confirmación). El control de flujo significa que el remitente debe ajustar el tamaño de los datos enviados de acuerdo con el tamaño de la ventana de recepción del receptor para evitar que el remitente envíe demasiados datos y descarte el receptor. El control de congestión es controlar la cantidad de paquetes que ingresan a la red, de modo que demasiados paquetes en la red causen carga de red y pierdan paquetes

Control de congestión TCP

Lo primero que hay que entender es la congestión, que se refiere al fenómeno de que muchos paquetes fluyen hacia la red, excediendo la carga máxima que la red puede soportar y causando una comunicación anormal de la red. La capacidad de enlace en la red, el búfer en el nodo de conmutación y la velocidad de procesamiento del procesador son todos recursos de la red. Incrementar los recursos de la red no es simplemente aumentar uno de estos recursos o estos recursos (banda ancha, caché, velocidad de procesamiento). Debido a que estos recursos se afectan entre sí, es necesario aumentar los recursos de manera equilibrada. Si la capacidad del búfer de un nodo es demasiado pequeña, los paquetes que llegan al nodo no deben descartarse porque no hay espacio de almacenamiento temporal. Ahora la capacidad del nodo se expande a un tamaño muy grande, por lo que los paquetes que llegan al nodo se pueden almacenar en la caché sin restricciones. Dado que la velocidad y el ancho de banda del procesador no mejoran, el tiempo de espera de los paquetes aumentará considerablemente, el emisor tiene que retransmitirlos y los paquetes retransmitidos continúan en cola una y otra vez ... para que el rendimiento de la comunicación de la red sea menor.
La congestión tiende a empeorar. Si el enrutador no tiene suficiente espacio de búfer, descartará algunos paquetes recién llegados. Cuando se descarta un paquete, la fuente que envió el paquete retransmitirá el paquete e incluso puede retransmitirlo varias veces, lo que hará que fluyan más paquetes a la red y que los enrutadores lo descarten. Se puede ver que las retransmisiones causadas por la congestión no aliviarán la congestión de la red, pero aumentarán la congestión de la red.
El control de congestión es para evitar que se inyecten datos excesivos en la red, de modo que los enrutadores o enlaces en la red no se sobrecarguen . El control de congestión es un proceso global que involucra la capacidad de todos los hosts, todos los enrutadores y enlaces. Hay un avance en el control de congestión, es decir, la red puede soportar la carga de red existente . El control de congestión tiene un precio, que primero tiene que obtener información acerca de la distribución del tráfico dentro de la red, en la implementación del control de congestión, necesidad de intercambiar información y diferentes comandos entre el nodo y para seleccionar la estrategia de control de controlar, por lo tanto la generación de Gastos generales adicionales . El control de congestión a veces necesita reservar algunos recursos para que los usuarios individuales (administradores de red) los usen solos, y usar estos recursos para el control de congestión. La comunicación en la red es la siguiente:
Inserte la descripción de la imagen aquí
hay cuatro algoritmos de control de congestión en TCP, a saber , inicio lento, prevención de congestión, retransmisión rápida y recuperación rápida. El remitente mantiene una variable de estado llamada ventana de congestión, cuyo valor depende del grado de congestión de la red y cambia dinámicamente. El remitente mantiene su ventana de envío no más que la ventana de congestión.
El principio del remitente que controla la ventana de congestión es: mientras la red no tenga congestión, la ventana de congestión se puede aumentar para enviar más paquetes, lo que puede mejorar la utilización de la red. Pero mientras la red esté congestionada oPosible congestión, Es necesario reducir la ventana de congestión para reducir el número de paquetes inyectados en la red, aliviando así la congestión en la red . Entre ellos, la base para juzgar la congestión de la red es el tiempo de espera, porque la calidad de transmisión de las líneas de comunicación es generalmente muy buena y la probabilidad de descartar paquetes debido a errores de transmisión es muy pequeña (menos del 1%). La idea del
algoritmo de inicio lento es la siguiente: el host envía datos de pequeño a grande y aumenta gradualmente la ventana de envío , es decir, primero sondea el tráfico en la red, y cuando el segmento de mensaje se acaba de enviar, la ventana de congestión inicial cwnd se establece en no El valor de más de 2 a 4 SMSS, el valor específico está relacionado con SMSS, de hecho, es limitar el número de bytes de la ventana de congestión inicial. Después de recibir un acuse de recibo de un nuevo mensaje, la ventana de congestión puede agregar hasta un valor de SMSS. Cada vez que la ventana de congestión CWND aumenta = min (N, SMSS), N es el número de bytes confirmados para el nuevo segmento. Incrementar lentamente la ventana de control de congestión aumenta exponencialmente. Por lo tanto, la lentitud no significa que la tasa de crecimiento de cwnd sea lenta, sino que el valor de la ventana de congestión establecido cuando TCP comienza a enviar el segmento de paquetes es pequeño.
Para evitar que la ventana de congestión crezca demasiado y cause congestión en la red, se debe establecer una variable de estado de umbral de inicio lento . El algoritmo de evitación de congestión se usa cuando la ventana de congestión es mayor que el umbral de inicio lento, y el algoritmo de inicio lento se usa cuando la ventana de congestión es menor que el umbral de inicio lento. La idea del
algoritmo para evitar la congestión es la siguiente: deje que la ventana de congestión aumente lentamente, y cada vez que un tiempo de ida y vuelta RTT aumente el valor de la ventana de congestión del emisor en 1 smss , en lugar de duplicar el crecimiento como en la fase de inicio lento. La ventana de congestión de este algoritmo crece lentamente de acuerdo con la ley lineal. Esto hace que la red sea menos propensa a la congestión. La idea del
algoritmo de retransmisión rápida es la siguiente: informe al remitente lo antes posible que se produce la pérdida de segmentos individuales, es decir, el receptor no utiliza el reconocimiento de piggyback, sino que envía el reconocimiento de inmediato. Incluso si se recibe el segmento fuera de secuencia, se debe emitir inmediatamente una doble confirmación del segmento recibido. Después de recibir la confirmación del mensaje, el remitenteRetransmitir de inmediato, Para que no se agote el tiempo. El algoritmo de retransmisión rápida puede evitar el fenómeno de que los paquetes individuales se pierdan en la red debido a otras razones y cree erróneamente que la red está congestionada. Esto puede mejorar la eficiencia de la red. La idea del
algoritmo de recuperación rápida es la siguiente: cuando se encuentra la pérdida de paquetes en la red, el inicio lento no se inicia, pero el umbral del remitente se ajusta a la mitad de la ventana de congestión en este momento y se inicia el algoritmo para evitar la congestión. El propósito de esto es hacer que la red sea más eficiente.
Inserte la descripción de la imagen aquí
En aplicaciones prácticas, el límite superior de la ventana del remitente = MIn [rwnd, cwnd], donde rwnd es el valor de la ventana de recepción retroalimentado por el receptor, y cwnd es el valor de la ventana de congestión del remitente.
Gestión activa de colas AQM . Las colas en los enrutadores generalmente procesan los paquetes entrantes de acuerdo con las reglas de FIFO primero en entrar, primero en salir . Dado que la longitud de la cola siempre es limitada, los paquetes nuevos se descartarán cuando la cola esté llena. Después de que se pierde el paquete, el remitente tiene una retransmisión de tiempo de espera, lo que hace que TCP ingrese al inicio lento del control de congestión. Sin embargo, generalmente hay muchas conexiones TCP en la red, por lo que puede afectar a múltiples conexiones TCP. Como resultado, muchas conexiones TCP de repente entran en el estado de inicio lento al mismo tiempo, y después de que la red vuelve a la normalidad, su tráfico aumenta de repente mucho. . Esta es la sincronización global en TCP .
Para evitar la ocurrencia de sincronización global en la red, enCapa de redSe propone el algoritmo de gestión activa de la cola (AQM) . El significado de activo es no esperar a que la longitud de la cola del enrutador alcance el valor máximo antes de tener que descartar los paquetes que llegan más tarde. En cambio, cuando la longitud de la cola alcanza un cierto valor que es digno de vigilancia, Eliminará activamente los paquetes que llegan. AQM puede tener diferentes métodos de implementación, como la detección temprana aleatoria de RED, que ha sido popular durante muchos años. RED requiere que el enrutador mantenga dos parámetros, el umbral de longitud de cola mínima y el valor de umbral máximo. Después de que llega el paquete, si la longitud de cola promedio actual es menor que el umbral mínimo, se coloca en la cola; si la longitud de cola promedio excede el umbral máximo, el paquete recién llegado se descarta ; Entre los umbrales mínimo y máximo, los paquetes se descartan probabilísticamente. El algoritmo ROJO ya no se usa.

Control de flujo medio TCP

El control de flujo es hacer que la velocidad de envío del remitente no sea demasiado rápida, pero permite que el receptor tenga tiempo de aceptar . La ventana deslizante se puede utilizar para controlar fácilmente el flujo del remitente en la conexión TCP. La ventana de envío del remitente no puede exceder el valor de la ventana de recepción dada por el receptor, y la unidad de ventana es byte. Hay un temporizador continuo en TCP utilizado para detectar la ventana cero. Después de recibir la notificación de cero ventana de la otra parte, se iniciará un temporizador conveniente. Si el tiempo establecido por el temporizador continuo expira, se enviará un segmento de detección de cero ventana. La otra parte dará el valor de la ventana actual, si aún es 0 Luego, el remitente restablece el temporizador de duración, si no es cero, se comunicará. Este temporizador de duración es para romper el punto muerto . Después de que el receptor envía una ventana 0 al remitente, el remitente no está enviando datos. Después de un período de tiempo, se procesan los datos en el búfer del receptor y hay espacio para recibir los datos. La ventana de cero desea continuar transmitiendo datos, pero este mensaje de ventana que no es cero se pierde nuevamente y esperará la conveniencia del envío. Este es un punto muerto.
Después de que la aplicación transfiere los datos al búfer de envío de TCP, TCP controla las tareas de envío restantes. El cliente selecciona el mecanismo de envío específico ( existen mecanismos como la longitud máxima del segmento de mensaje MSS, PUSH, temporizador, etc. ). Para mejorar la eficiencia del uso de la red, TCP utiliza ampliamente el algoritmo de Nagle. El algoritmo nagle es el siguiente: si el proceso de la aplicación de envío envía los datos que se enviarán al búfer de envío TCP byte por byte, el remitente enviará primero el primer byte de datos; los datos posteriores se almacenarán en caché y esperarán la confirmación de la otra parte Después de enviarlo nuevamente, continúe en la memoria caché ... Solo después de recibir el mensaje de confirmación, continuará enviándose. Nagle también estipula que cuando los datos en caché han alcanzado la mitad del tamaño de la ventana de transmisión o la longitud máxima del segmento de mensaje, se envía un segmento de mensaje inmediatamente . El mismo problema existe para el receptor ( síndrome de ventana de confusión), Cuando el caché de la parte receptora está lleno, si la capa superior solo acepta un byte de datos en el caché a la vez, la eficiencia de comunicación de la red será muy baja. Solución: deje que el receptor espere un período de tiempo, de modo que el caché del receptor tenga suficiente espacio para acomodar un segmento de mensaje más largo, o espere hasta que el caché del receptor tenga la mitad del espacio libre. El receptor enviará un mensaje de confirmación. Intente utilizar el método de transporte en la comunicación para mejorar la eficiencia de la comunicación.

Tiempo de retransmisión de tiempo de espera

El mecanismo ARQ (solicitud de retransmisión automática) es muy simple, pero la confirmación del tiempo de retransmisión es realmente muy complicada. Si el ajuste de tiempo es demasiado corto, se convertirá en muchas retransmisiones innecesarias, lo que aumentará la carga de la red, pero si el tiempo de retransmisión de tiempo de espera también se establece Si es largo, aumentará el tiempo de inactividad de la red y reducirá la eficiencia de la transmisión. TCP adopta un algoritmo adaptativo, que registra el tiempo de ida y vuelta RTT de cada mensaje. TCP retiene un tiempo de viaje de ida y vuelta promedio ponderado de RTT (esta vez es más suave). Nuevo RTT S = (1-a) x (antiguo RTT S ) + ax (nueva muestra de RTT). El RFC recomienda un valor de 1/8.
Obviamente temporizador de tiempo de espera es el período de tiempo de espera de conjunto retransmisión debe ser ligeramente mayor RTO por encima de la RTT S , que es el valor recomendado de la RTT = RTO S 4 el RTT X D . Donde RTT D es el promedio ponderado de las desviaciones de RTT, RTT nuevo D = (1-b) x (RTT antiguo D ) + bx | RTT S- RTT nuevo |, el valor recomendado de b es 1/4. Para la retransmisión de paquetes, se incrementa el tiempo de retransmisión de tiempo de espera RTO. El enfoque típico es tomar el nuevo tiempo de retransmisión para que sea el doble del tiempo de retransmisión anterior. Esto puede evitar efectivamente los problemas causados ​​por la retransmisión.

Publicado 35 artículos originales · Me gusta1 · Visitas 1870

Supongo que te gusta

Origin blog.csdn.net/lzj_linux188/article/details/105004337
Recomendado
Clasificación