¿Cuál es el algoritmo de control de congestión TCP?

Recientemente pasado algún tiempo en aprender el protocolo TCP / IP, la razón principal es debido a mi conocimiento de larga data de TCP / IP de tres vías se limitaría a cuatro veces el descanso, así que espero una mirada más cercana. Además, TCP / IP y el diseño de Linux a nivel de sistema se puede utilizar en muchas arquitectura del sistema middleware, tales como algoritmos de control de congestión TCP también puede ser utilizado en el tiempo de respuesta middleware para el límite de corriente. Un nivel más profundo, como el conocimiento básico del protocolo de principios y técnicas de TCP / IP, van a someterse a la prueba del tiempo, la cristalización de la sabiduría de sus predecesores, le puede dar un montón de inspiración y ayuda.

Este artículo aparecerá en algunas abreviaturas, debido a problemas de espacio, no se explican cada uno, si no entiende su significado, por favor vaya a su propia búsqueda de entender, tratar de hacer que el conocimiento de una persona.

protocolo TCP tiene dos algoritmo de control más importante es un control de flujo, control de congestión es otra.

control de flujo del protocolo TCP se realiza mediante una ventana deslizante, que es una tasa de transmisión de control del emisor para que el destinatario tuvo tiempo de recibir y procesar. Control de la congestión de la red general, que es para evitar que los paquetes excesivos se envían a la red, para evitar la carga de la red excesiva, congestión de la red se produce.

algoritmo de congestión tiene que agarrar la máquina de estados y los cuatro algoritmos . máquina de estados de control de congestión tiene cinco estados, a saber: "Abrir, trastorno, CWR, la recuperación y el estado de la pérdida" . Cuatro algoritmo ** "comienzo lento, para evitar la congestión, y el algoritmo de recuperación rápida cuando se produce la congestión." **.

Congestión de control de la máquina Estado

Y, como TCP algoritmo de control de congestión tiene su máquina de estados. Cuando el remitente recibe un ACK, máquina de estados Linux TCP está determinada por su conducta posterior, se debe reducir el tamaño de la ventana de congestión cwnd, Cwnd o permanecer sin cambios, o continuar para aumentar cwnd. Si no se maneja adecuadamente, podría dar lugar a la pérdida o tiempo de espera.

1, Estado abierto

Estado abierto es el estado por defecto de la máquina de estado de control de congestión. En este estado, cuando llega el ACK, el remitente de acuerdo a la ventana de congestión cwnd (ventana de congestión) es menor o mayor que el ssthresh de umbral de inicio lento (umbral de inicio lento), de acuerdo con inicio o la congestión del algoritmo de evitación lenta para ajustar la ventana de congestión.

2, el estado Trastorno

Cuando el remitente detecta la Dack (acuse de recibo duplicado), o el SACK (reconocimiento selectivo), la máquina transiciones de estado a un trastorno del estado. En este estado, el remitente sigue el vuelo (en vuelo) principio de conservación de paquetes que un nuevo paquete se envía solamente después de un viejo paquete fuera de la red, es decir, después de la edad remitente recibe el paquete ACK, se le enviará una el nuevo paquete.

3, el estado CWR

Remitente recibe una pantalla de notificación de congestión, y no va a disminuir inmediatamente la CWnd ventana de congestión, pero cada uno recibe un segmento ACK dos se reduce, hasta que el tamaño de la ventana se reduce a la mitad hasta el momento. Cuando el cwnd y la red se reduce cuando no hay retransmisión de paquetes, esta condición se llama el CWR (ventana de congestión reducida, ventana de congestión reducida) del estado. Estado CWR o se puede convertir en la pérdida Estado de recuperación.

4, Estado de recuperación

Cuando el emisor recibe suficiente (se recomienda tres) de Dack (duplicado reconocimiento) después de entrar en el estado. En este estado, la ventana de congestión para cada recibió dos ACK cnwd una reducida segmento (segmento), hasta ssthresh cwnd igual a ssthresh, cwnd está entrando Recuperar estado cuando la mitad del tamaño. Recuperación remitente para mantener el estado hasta que todos los segmentos de datos se envían al entrar en el estado de recuperación han confirmado con éxito, a continuación, restaurar el emisor al Estado de recuperación Estado abierto, tiempo de retransmisión puede ser interrumpido, introduzca el estado de pérdida.

5, el estado de Pérdida

Cuando un RTO (tiempo de retransmisión) expira, el remitente entra en estado de pérdida. Todas las etiquetas de datos que se envían se pierde, la ventana de congestión cwnd a un segmento (segmento), el remitente nuevo algoritmo de arranque lento para aumentar la ventana de congestión cwnd.

Pérdida Estado de recuperación y la diferencia es: Pérdida Bajo estado, la ventana de congestión se establece en el emisor después de un segmento aumenta, por debajo Estado de recuperación, la ventana de congestión sólo puede ser reducido. Después de la pérdida del estado no puede ser interrumpido por otro estado, por lo tanto, los datos del remitente sólo cuando todos están transmitiendo inicio Pérdida de éxito han sido confirmados a Abrir retiró estado.

cuatro algoritmos

los algoritmos de control de congestión son principalmente cuatro:

1) comienzo lento;

2) prevención de la congestión;

3) se produce la congestión;

4) recuperación rápida.

Este no es uno de los cuatro algoritmos se dediquen, este algoritmo Desarrollo IV ha experimentado una gran cantidad de tiempo, y hoy en día siguen siendo la optimización.

algoritmo de comienzo lento - lento de inicio

El llamado principio lento, que es sólo se establece una conexión TCP, poco a poco la velocidad, para poner a prueba la capacidad de la red, a fin de no perturbar el orden directamente al canal de la red.

algoritmo de comienzo lento :

  1. Conexión de la congestión cwnd tamaño de la ventana de inicio construida inicializado a 1, lo que indica que el SMS puede transmitir un tamaño de datos.

2) cada vez que un ACK recibido, el tamaño de cwnd más uno, aumenta linealmente.

3), cada vez después de un tiempo de retardo de ida y vuelta RTT (Round-Trip Time), el tamaño de cwnd se duplica directamente, multiplicado por 2, aumenta exponencialmente.

4), hay una ssthresh (umbral de inicio lento), es un límite superior, cuando cwnd> = ssthresh, van a entrar en el "algoritmo de evitación de la congestión" (más tarde diría que este algoritmo).

algoritmo de evitación de congestión - Congestion Avoidance

Como dijo delante, cuando la congestión cwnd tamaño de la ventana es mayor que ssthresh igual a ssthresh, entra en el algoritmo de evitación de la congestión. Algoritmo es como sigue:

1), un ACK recibido, la cwnd = cwnd + 1 / cwnd.

2), cada vez después de un tiempo de retardo de ida y vuelta RTT, el tamaño de cwnd más uno.

Después de un umbral de inicio lento, algoritmo de evitar la congestión de ventana ventana de evitar la congestión conduce a un crecimiento excesivo, pero lento aumento en el valor de la adaptación óptima a la red.

estado de congestión Algoritmo

Típicamente, el control de congestión de TCP por defecto considera la pérdida de paquetes de red debido a la congestión de la red causada, generalmente es la pérdida de la señal algoritmo de control de congestión de TCP en el estado de congestión de la red. Hay dos formas de pérdida de paquetes que determinan un tiempo de espera de retransmisión RTO [Retransmisión Tiempo de espera] expira, se recibieron otros tres acuses de recibo duplicados de ACK.

Tiempo de espera de retransmisión protocolo TCP es un mecanismo importante para asegurar la fiabilidad de los datos, el principio es el envío de datos después de que se activa un temporizador, si no envía los datagramas paquete ACK, a continuación, volver a enviar los datos dentro de un cierto período de tiempo, hasta que se ha enviado satisfactoriamente.

Sin embargo, si el remitente recibe tres o más ACK duplicado, TCP se dio cuenta de que los datos se pierde, es necesario retransmitir. Este mecanismo no tiene que esperar a que expire el temporizador de retransmisión, por lo que llamó retransmisión rápida sin necesidad de utilizar retransmisión rápida después de que el algoritmo de arranque lento, pero algoritmo de evitación de la congestión, por lo que también se denomina algoritmo de recuperación rápida.

Retransmisión RTO [Retransmisión Timeout] Tiempo de espera, TCP retransmite paquetes. TCP cree que esta situación relativamente pobre de reacción, relativamente fuerte:

  • Desde se produce la pérdida, el lento ssthresh de umbral de inicio se establece en la mitad de la cwnd actual, es decir, ssthresh = cwnd / 2.

  • cwnd se pone a 1

  • Introduzca comienzo lento

La mayoría algoritmo principios de TCP Tahoe en el uso del enfoque anterior, pero debido a una pérdida en todo de nuevo, lo que lleva a cwnd se pone a 1, no es propicio para la estabilidad de la red de transmisión de datos.

Por lo tanto, el algoritmo de TCP Reno está optimizado. Tras la recepción de tres acuses de recibo duplicados de ACK, Fast TCP retransmitir algoritmo de retransmisión rápida abierta, sin esperar a que el tiempo de retransmisión RTO y luego:

  • tamaño de cwnd se reduce a la mitad de la actual

  • ssthresh cwnd se establece en el tamaño de la reducida

  • A continuación, introduzca el algoritmo de recuperación rápida recuperación rápido.

algoritmo de recuperación rápida - Recuperación rápida

TCP Tahoe primeros algoritmos, así que no hay algoritmo de recuperación rápida, y el algoritmo de Reno. Antes de entrar en la rápida recuperación, cwnd y ssthresh se ha cambiado a la mitad de la Cwnd originales. algoritmo de recuperación rápida lógica es la siguiente:

  • Cwnd = Cwnd + 3 * MSS, más un 3 * MSS razón es debido a la recepción de tres ACK duplicado.

  • Dacks retransmisión de paquetes especificado.

  • Si recibe Dacks, a continuación, aumentar el tamaño de un Cwnd.

  • Si recibe un nuevo ACK, que indica que la retransmisión del paquete tiene éxito, entonces el algoritmo de recuperación rápida salida. El cwnd es ajustado a ssthresh, entonces entrar en el algoritmo de evitación de la congestión.

Como se muestra, la quinta pérdida de paquetes se produce, lo que resulta en el destinatario recibe el ACK se repite tres veces, es decir ACK5. Así el conjunto ssthresh a cwnd la mitad del tiempo, es decir 6/2 = 3, cwnd se establece en 3 + 3 = 6. A continuación, retransmite el quinto paquete. Cuando se recibe un nuevo ACK, es ACK11, fase de recuperación rápida salida, será re-set para el ssthresh Cwnd actual, que es de 3, y luego entrar en la etapa de algoritmo de evitar la congestión.

posdata

Este artículo describe algunos de los mecanismos de control de congestión por lo general, TCP, control de congestión, pero todavía tienen un montón de defectos y lugar para ser optimizado, la industria también ha introducido una nueva algoritmos de control de congestión, como BBR de Google. Vamos a seguir para explorar estos seguimiento, por favor continúe a prestar atención.

Escrito en los últimos:

Nº Doy la bienvenida a la atención de todos la apertura al público de la nueva [ tranquilo como código ], artículos relacionados con Java en masa, los materiales de aprendizaje serán actualizados en el interior, los materiales de acabado será en el interior.

Me siento bien para escribir en un punto de alabanza, más seguidores canto! Punto de atención, no se pierdan, actualiza continuamente! ! !

Supongo que te gusta

Origin juejin.im/post/5e73249bf265da573c0c9912
Recomendado
Clasificación