El estudio de TCP / IP señala el control de congestión del 9-tcp

antecedentes

TCP/IPLos protocolos son la base de la era actual de Internet. Todos los productos de red, o lenguajes de desarrollo y marcos de desarrollo se basan en tcp/ipprotocolos. Por lo tanto, aprender bien tcp/ipserá de gran ayuda para las personas de la industria de Internet en el futuro.

Pero este es un curso teórico básico, al igual que el curso de sistema operativo, después de aprenderlo puede que no tenga mucho impacto en ti, y no te permitirá tener de inmediato las habilidades para poner en práctica. Pero precisamente porque se trata de un curso de teoría básica, todas las tecnologías de Internet se basan en él. Entonces, si comprende el tcp/ipacuerdo, tendrá un efecto positivo en su desarrollo futuro o en la resolución de problemas en el trabajo.

control de congestión tcp

El control de flujo mencionado en el artículo anterior tuvo lugar entre C y S sin considerar el impacto del entorno de la red pública. Si la calidad de la red pública actual es particularmente mala y es probable que se produzcan pérdidas de paquetes, el remitente debe prestarle atención. Y este es exactamente el problema con el que debe lidiar el control de la congestión.

Ventana de congestión: evita que el remitente envíe demasiado rápido, lo que hace que la red sea demasiado tarde para procesar, lo que resulta en una congestión de la red. !

Para el control de la congestión, tcpcada conexión debe mantener 2un estado central:

  • Ventana de congestión
  • Umbral de inicio lento

Los algoritmos involucrados son los siguientes:

  • Comienzo lento
  • Evitación de la congestión
  • Retransmisión rápida
  • Respuesta rápida

A continuación, veremos estos estados y algoritmos uno por uno.


estado

Ventana de congestión (cwnd)

La ventana de congestión se refiere a la cantidad de datos que aún puede transmitir. Hay algunas diferencias con la ventana de recepción:

  • La ventana de recepción (rwnd) es el límite dado por el extremo receptor
  • La ventana de congestión (cwnd) es el límite del remitente en sí, y el valor predeterminado es 1 segmento

Nota:

  • Ambos son iguales, se utilizan para limitar el tamaño de la ventana de envío
  • 发送窗口大小 = min(rwnd, cwnd). Tome el mínimo de los dos, y el control de congestión se usa para controlar los cwndcambios.
Umbral de inicio lento (ssthresh)

El tamaño predeterminado es 65536byte. Cuando ocurre un tiempo de espera, el umbral se establece en 发送窗口的一般, se cwndestablece en 1y luego se reinicia el algoritmo de inicio lento.


algoritmo

Comienzo lento

Cuando empezó a transferir datos, no sabía si la red pública actual era estable o estaba congestionada. Si lo hace de manera demasiado agresiva y envía los paquetes demasiado rápido, puede ocurrir una pérdida de paquetes loca y causar un desastre de red por avalancha. Al mismo tiempo, es un desperdicio de recursos de la red pública.

Por lo tanto, el control de la congestión debe adoptar primero un algoritmo conservador para adaptarse lentamente a toda la red. Este algoritmo se denomina algoritmo de inicio lento. El proceso es el siguiente:

  1. Primero, tres apretones de manos, rwndel tamaño anunciado por ambas partes
  2. Ambas partes inicializan su propio cwndtamaño
  3. Al comienzo del período de transmisión, cada vez que el remitente recibe uno ACK, el cwndtamaño aumenta 1. En otras palabras, cada vez que uno pasa RTT, el cwndtamaño de la ventana se duplica. Si la ventana inicial es 10, luego 10de que se transmite la primera ronda de mensajes y el remitente recibe 10un ACKacuse de recibo, el cwndtamaño pasa a ser 20; la segunda ronda se convierte en 40; la tercera ronda 80...

cwndEl tamaño no puede crecer indefinidamente, cuando cwndllega al umbral ( cwnd > ssthresh), ¿cómo controlar cwndel tamaño de la ventana? Esto es lo que se debe hacer para evitar la congestión.

Evitación de la congestión

Resulta que cada vez que ACKse recibe una confirmación, el cwndtamaño aumenta 1. Ahora se alcanza el umbral, cwndsólo se puede añadir un poco de: 1/cwnd. En otras palabras, antes de que una RTTbaja cwndde tamaño doble. Ahora uno RTTabajo, el cwndtamaño aumenta1

El diagrama para evitar la congestión es el siguiente, donde AIMDse adopta el método
Inserte la descripción de la imagen aquí

AIMD(La suma aumenta, la multiplicación disminuye)

  • Reducción multiplicada
    Ya sea en la fase de inicio lento o en la fase de control de congestión, siempre que se agote el tiempo de espera de la red, se ssthreshestablecerá en la cwndmitad y luego cwnden 1un segmento. Luego inicie el algoritmo de inicio lento
  • Aumento aditivo
    Cuando la red se desconecta con frecuencia, se ssthreshreducirá rápidamente. Para reducir la cantidad de paquetes inyectados en la red, el aumento aditivo significa que después de que se implementa la prevención de la congestión, la ventana de congestión aumenta lentamente para evitar que se produzcan prematuramente en la red congestión

Nota:

  • La cantidad de paquetes de datos enviados en la fase de inicio lento aumenta exponencialmente y la fase de evitación de la congestión aumenta linealmente
  • Los algoritmos para evitar la congestión no pueden evitar completamente la congestión de la red. Al controlar el tamaño de la ventana de congestión, la red no es propensa a la congestión.
Retransmisión rápida

tcpSi la pérdida de paquetes ocurre durante la transmisión, es decir, cuando el extremo receptor encuentra que el segmento de datos no llega en orden, el método de procesamiento del extremo receptor es enviar repetidamente el paquete de datos anterior ACK. Por ejemplo, si 4se ha recibido el paquete anterior y el primer 5paquete se pierde, incluso si 6、7llega al extremo receptor en este momento , el extremo receptor siempre devolverá el 4primer paquete ACK. Cuando el remitente recibe >=3un duplicado, ACKse da cuenta de que el paquete se ha perdido, por lo que lo retransmite de inmediato y no tiene que esperar una RTOvez para retransmitirlo.

Se trata de una retransmisión rápida, que resuelve el problema de si es necesaria una retransmisión .

Retransmisión selectiva

Con base en la situación anterior, ¿deberíamos retransmitir el primer 5paquete o el 5、6、7segundo paquete?

Ahora 6、7que ha llegado la bolsa, el tcpdiseñador no es tonto, se ha pasado, ¿por qué todavía la pasas? Simplemente registre cuáles de los siguientes paquetes llegaron y cuáles no, y vuelva a transmitirlos en consecuencia.

Después de recibir el remitente del mensaje, el receptor responde a un ACKmensaje, luego las opciones de encabezado del mensaje, puede agregar SACKeste atributo left edgee right edgeinformar al remitente que ha recibido los datos en qué rango. Por lo tanto, incluso si 5se pierde el primer paquete, cuando 6、7se reciba el primer paquete, el extremo receptor le dirá al extremo emisor que estos dos paquetes han llegado, y el 5paquete se retransmitirá si el primer paquete no ha llegado.

Este proceso se denomina retransmisión selectiva ( SACK), que resuelve el problema de la retransmisión .

Rápida recuperación

El remitente recibió 3este duplicado ACKy encontró la pérdida de paquetes. Consideró que la red actual ya estaba un poco congestionada y entraría en la fase de recuperación rápida. como sigue:

  1. ssthreshEl valor se reduce a la cwndmitad
  2. cwndValor igual assthresh
  3. cwndIncremento lineal (incremento aditivo)

para resumir

Este es el octavo artículo de la serie tcp / ip. Lo anterior son los conceptos y algoritmos en el control de la congestión. Habrá más explicaciones de la escena de uso más detalladas más adelante, esta serie de artículos será muy larga.
Comencemos con el siguiente artículo.

Supongo que te gusta

Origin blog.csdn.net/Free_time_/article/details/107444617
Recomendado
Clasificación