Dos antes de la llegada de Googles BBR TCP control de la congestión velocidad del motor algoritmo de

  
cuatro tifones hipocampo noche a la mañana la noche, he usado un artículo sobre el algoritmo BBR para satisfacer el hipocampo! La compañía en Shenzhen ayer por la noche en respuesta a cerrar, cerró la oficina en el hogar lanzado llamada (tenga en cuenta, no un día de fiesta ...) aviso ... de hecho, creo que el poder es el rey, qué te parece? Un artículo sobre el algoritmo BBR ex "algoritmos de control de congestión TCP BBR de Google para resolver." (Esta puede ser la primera versión china del algoritmo BBR artículo artículos relacionados), esbocé un algoritmo BBR marco puede ser considerada como una introducción general a. En este artículo, quiero ahondar en alguna máquina de estados algoritmos detalle BBR tubería, pero no voy a seguir utilizando y " máquina de estados y " este término, he optado por usar motor de velocidad variable que argumento, para mostrar un moderno motores de velocidad TCP de alta velocidad cómo proporcionar un fuerte impulso para la transmisión de datos. Este conjunto de generada completamente abstracto del algoritmo del motor de BBR, la idea viene del proceso corremos o de conducción, de repente nos dimos cuenta de que la esencia del pensamiento algoritmo BBR es simple y se corre en la pista y las ideas concurrida durante la conducción en la carretera por completo ah coherente! No puedo dejar de suspirar y maldecir a la unidad de todas las cosas la nada, sensación de ardor en el estómago positivo Hey, cuando haya terminado con este artículo! Estamos a punto de comenzar! Después de

1.Linux TCP mecanismo de control de congestión
hasta ahora no sé otras plataformas algoritmo de control de congestión de TCP, pero sé Linux, hasta ahora, sólo ha sido introducido en el BBR, Linux algoritmos de control de congestión divididos en dos categorías:

antes de que el modo conservador
BBR con Reno-basados, incluyendo Reno, NewReno, ... casi el mismo principio, estos algoritmos tienen dos características: 1) falta de respuesta a Reno, por ejemplo, , congestión de TCP fase de evitar en el emisor después de recibir el ACK, incondicionalmente CWND aumentar 1 /cwnd, ACK después de recibir el aumento en el lento comienzo cwnd 1, es infundada, pero Reno y no hay mejor manera de Sólo adivinando! Más tarde Westwood, Las Vegas, algoritmos BIC, relativa Reno /NewReno paso más inteligente, pero sigue siendo un tonto! Más tarde, se dedican a CÚBICO mecanismo de la ventanilla de crecimiento en altura con convexas y cóncavas curvas opciones ecuación cúbica, parece muy suelo y " Dr " y fondo y " gerente y ", pero todavía no utiliza eficazmente el acceso gratuito a Internet Ancho de banda, en anomalías de encuentro de contraste, tales como la pérdida de paquetes, congestión, cuando la reacción es demasiado conservador, se hizo más intensa en la ruta conservadora, es decir, la reducción de la ventana de congestión feroz conservador, aún más por desgracia, este proceso de disminución y la ventana estos algoritmos no son controlados. 2) el algoritmo de congestión se toma sobre mecanismo de control de congestión TCP conocer la pérdida (es decir, n veces o RTO duplican ACK, etc.), TCP algoritmo de control de congestión se hará cargo completamente, la ventana de congestión controla a sí mismos. El problema es que esta supuesta pérdida puede en realidad no la pérdida de paquetes, TCP pensar que es sólo dejarlo caer, lo que era hace 30 años ... realmente una pérdida para determinar el mecanismo caer todavía? No necesariamente ah! Sin embargo, si una pérdida de paquetes TCP creen, se hace cargo de los algoritmos de control de congestión (al menos en Linux es tan ...). Esto me hace feliz no Yan! He modificado la lógica de Linux TCP PRR, justo en el procedimiento de ventana no es tan feroz que ... ventana Linux TCP de este descenso es el esfuerzo, se ha pasado a través de una variedad de programas, tales como reducir a la mitad Rate, PRR y así, por desgracia, seca Bueno, no directamente a la congestión de los algoritmos de control que tienen? ?

En general, la lógica de BBR control de la congestión antes de que el proceso de aplicación se divide en dos etapas, es decir, etapa normal y la etapa anormal. En la fase normal, TCP control de la congestión algoritmo de ajuste de la ventana dominante modular, en la fase anormal, el control de congestión TCP base de la máquina del estado desde donde algoritmo de control de congestión para hacerse cargo del cálculo de la ventana, en la implementación de Linux, que se compone de la siguiente lógica representado por:

 tcp_cong_control static void (* sk estructura calcetín, acuse de recibo u32, u32 acked_sacked, int flag) {if (tcp_in_cwnd_reduction (SK)) {//patrón anormal /* Reducir Cwnd si los mandatos del estado * ///dejar la lógica antes de entrar en la ventana, también es necesario reunir tcp_fastretrans_alert manejo de excepciones y procesar la información es una excepción. tcp_cwnd_reduction (sk, acked_sacked, bandera);} else if (tcp_may_raise_cwnd (sk, bandera)) {//el modo normal o el modo seguro excepción! /* Avance cwnd si el estado permite * /tcp_cong_avoid (sk, ack, acked_sacked);} tcp_update_pacing_rate (sk);} si se representa la tcp_cwnd_reduction modo excepción por la siguiente lógica para determinar la: 
 si (tcp_ack_is_dubious (sk, bandera)) {is_dupack = (bandera &(FLAG_SND_UNA_ADVANCED |!
  FLAG_NOT_DUP)); tcp_fastretrans_alert (sk, acked, is_dupack, &bandera, &rexmit);} Esto hace que los módulos de congestión TCP cómo pensar? ! Además de lanzar una Ssthresh fuera incapaz de lidiar con la excepción, de hecho, esto es simplemente nada que ver con eso! Después 

toda velocidad para
algoritmo basado en BBR BBR, el núcleo no es BBR en sí, sino con el fin de ejecutar BBR modificaciones algoritmo para las tramas TCP Linux! BBR no el algoritmo final, pero no es un mito, es sólo el principio, es el TCP de tcp_ack completamente cambiado, cambiado más adelante, si usted tiene alguna idea buena, que puede desempeñar un gratis! Hemos cambiado nada en absoluto? Nos fijamos en el know función básica tcp_cong_control (estoy aquí para hablar de kernel 2.6 y la versión 3.x del núcleo no se saca de cong_control):

 estática tcp_cong_control vacío (struct calcetín * sk, acuse de recibo u32, u32 acked_sacked, int flag , const struct rate_sample * rs) {const struct inet_connection_sock * ICSK = inet_csk (SK); //aquí es la nueva lógica, si la reclamación de devolución de llamada para tener la capacidad de resolver cualquier problema de la congestión, luego se lo! si (icsk- > > icsk_ca_ops-; cong_control) {icsk- > > icsk_ca_ops-; cong_control (sk, RS); //devuelve directamente! TCP núcleo ya no está involucrado. return;} //Esta es la vieja lógica. si (tcp_in_cwnd_reduction (SK)) {/* Reducir Cwnd si los mandatos del estado * ///Si no Estado abierto ... Recuerde, tcp_cwnd_reduction no sujeto a algoritmo de control de congestión! ! tcp_cwnd_reduction (sk, acked_sacked, bandera);} else if (tcp_may_raise_cwnd (sk, bandera)) {/* Avance cwnd si el estado permite * /tcp_cong_avoid (sk, ack, acked_sacked);} tcp_update_pacing_rate (sk);} algoritmo BBR de cong_control función de devolución, y es posible realizar una otra, escrita en cong_control en. Somos conscientes de la situación actual, por supuesto, se conoce el problema radica, BBR resolver el problema. Por supuesto, también Appex resolvió el problema, pero esas personas son lechón! No es lógico Jesús, Appex será maldecido. 

2.bbr no se basa en la previsión

predicción no se basa en datos de retroalimentación son falsas, falsa, engañosa. Esta es la razón por grandes volúmenes de datos en el terreno de la inteligencia artificial es más poderoso que el algoritmo basado en algoritmos de inteligencia artificial son una mierda de nuevo pronto, sólo los datos con el fin de entrenar el modelo inteligente. En el campo de los algoritmos de control de congestión TCP, función de perforación Cubic Cubic parecía tan oscuro se ha convertido en un hombre alto, la mayoría de las personas no pueden entrar en los detalles del algoritmo, sin embargo algoritmo BBR es una persona cualquiera puede entender ... .

BBR continuamente recogido y ancho de banda máximo max-bw mínimo RTT min-rtt en la ventana de tiempo de conexión interior (ver más abajo win_minmax), y de este modo calcula la velocidad de transmisión y la ventana de congestión, de acuerdo a la retroalimentación bw ancho de banda real y max-RTT ajustar el factor de ganancia. La idea detrás de esto es que una vez dentro de una ventana de tiempo para capturar un ancho de banda mayor y menor RTT, BBR se considera su producto de manera objetiva, es decir, puede BDP se llena la capacidad del gasoducto objetivo, usando esto como una referencia, Wan a no alcanzado, esto es considerado como BBR se produce congestión, para bajar el coeficiente de ganancia, pero no cambia dentro de una ventana de tiempo de un intervalo de referencia (localidad temporal dicta), ya que el coeficiente de ganancia es constante y la referencia ajustada retroalimentación BDP Una vez aliviar la congestión, BBR ser los primeros en descubrir y aumentar el factor de ganancia!
BBR capaz de hacer esto, y funciona bien, es todo acerca de la lógica de máquina de estado de control de congestión TCP no moleste a su comportamiento, y estos algoritmos es casi imposible antes del control de congestión, tales como el algoritmo cúbico, Una vez que la pérdida de paquetes, cúbica será llevado otra vez hasta Linux determinar su estado de congestión de TCP se ha restaurado al estado abierto, de acuerdo con las normas rígidas. Además, lo más importante, el algoritmo BBR utiliza el valor real, su ancho de banda BW es la verdadera medida fuera (métodos de medición, consulte "congestión TCP BBR desde el análisis de algoritmo de control de Google"), mientras que RTT contiene la RTT del paquete original y todo lo que se puede medir paquetes RTT RTT saco, etc., pero no podemos predecir un ciclo de vida de la conexión TCP en el extremo cuánto tiempo, con el fin de hacer el muestreo de resultados más suaves, casi todos los algoritmos adoptarán y " media móvil exponencial y " programa, RTO con el fin de demostrar el impacto de las fluctuaciones en el valor añadido de un SRTT varianza similar, pero estos no son verdaderas. BRR algoritmo utiliza el valor de verdad!

Copyright © Conocimiento de Windows All Rights Reserved