TCP Inicio lento y control de congestión, y cómo modificarlos


2

Estoy tratando de cambiar el comportamiento del protocolo de inicio lento tcp en un cuadro CentOS5 (uname -r => 2.6.18-238.12.1.el5). He leído que el siguiente comando cambiará mi icwnd a 8:

ip route change default via 1.2.3.4 dev eth1 initcwnd 8
echo "4094 $((8*16384)) 4194304" > /proc/sys/net/ipv4/tcp_wmem

(Nota: la parte tcp_wmem es más o menos una suposición de mi parte, creo que el número exacto no es muy importante siempre que sea lo suficientemente grande)

Sin embargo, por sí solo, esto no parece tener ningún efecto. En lugar de enviar inicialmente 8 segmentos, solo envía 3. Después de leer más, descubrí que tcp slow start funciona en paralelo con el control de congestión, de modo que si ssthresh <cwnd, se usa el protocolo de control de congestión, de lo contrario se usa el inicio lento (al menos , este fue mi entendimiento). Hice lo siguiente para averiguar en qué estaba configurado mi ssthresh predeterminado:

[root@host ~]# cat /proc/sys/net/ipv4/tcp_congestion_control 
bic
[root@host ~]# cat /sys/module/tcp_bic/parameters/initial_ssthresh 
0

Al ver que ssthresh es 0, me gustaría aumentarlo para que sea mayor que icwnd, lo que a su vez haría que el núcleo use un inicio lento, que usaría su valor predeterminado de 8 ventanas. Entonces hice lo siguiente:

[root@host ~]# echo 13140 > /sys/module/tcp_bic/parameters/initial_ssthresh

Pero todavía no hay ningún cambio en el comportamiento. ¿Alguien sabe lo que estoy haciendo mal?

(Estoy reiniciando el proceso de apache que estoy usando para probar esto después de cada cambio). EDITAR: también estoy haciendo ip route flush cache entre cambios también

Respuestas:


2

Estaba leyendo un poco sobre el tema y creo que se necesita la versión del kernel 2.6.33 para configurar un cwnd personalizado. Lo encontré mencionado en esta publicación de blog: http://www.igvita.com/2011/10/20/faster-web-vs-tcp-slow-start/

Si el inicio lento de TCP es, bueno, lento, ¿no podríamos simplemente hacerlo más rápido? Resulta que, hasta hace muy poco, la pila TCP de Linux en sí estaba codificada para comenzar con la ventana de congestión (cwnd) de solo 3 o 4 paquetes, lo que equivale a aproximadamente 4kb (~ 1360 bytes por paquete).

También hay una discusión acerca de cómo se agrega al núcleo aquí: http://kerneltrap.org/mailarchive/linux-netdev/2009/10/26/6258693

No puedo encontrar ninguna buena información sobre cómo configurar esto, pero esto es lo que encontré hoy ...


0

Tendrás que actualizar a centos6.2.

Según rhel doc:

Ventana de congestión inicial de TCP predeterminada

En Red Hat Enterprise Linux 6.2, el valor predeterminado de la ventana de congestión inicial de TCP ahora se establece en 10, de acuerdo con RFC 5681. Además, el código de ventana inicial común a TCP y CCID-2 se ha consolidado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.