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
fuente