jueves, julio 28, 2011

Optimizar la velocidad de modem 3g en Linux (ubuntu)





Espero que este post, sirva a más de alguno, aunque aún estoy en pruebas con estas modificaciones que he hecho a Linux (en Ubuntu 10.04.3) he notado si, una gran mejora respecto a la velocidad con la que responde el internet. Pasa que cuando usaba Windows xp y usaba Linux el modem 3g huawei e-166, era menos eficiente en Linux que Windows, lo cual me frustraba mucho y al final optaba por usar Windows.

No quiero que se mal entienda la entrada, porque estos dispositivos en horas pico trabajan muy mal dependiendo de que tan cargado esté la señal (al menos es lo que supongo yo), lo que quiero decir es que en Linux las páginas tardan más en cargar que en Windows y si se trata de esas horas pico era aún peor. Pues bien para que funcione igual o mejor que en Windows, hay que modificar 3 cosas.

1-Deshabilitar los protocolos de IP versión 6 o ipv6 (es lo mismo)
2- Configurar el archivo en el directorio /etc/sysctl.conf (el cual permite configurar los protocolos un poco)
3- Resetear el archivo con el comando sudo sysctl -p

Bien, lo que se necesita para hacer esos 3 pasos, es editar el archivo sysctl.conf, agregándole lo siguiente (todo como root)
#Deshabilita ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

#mejorar velocidad
net.core.rmem_default = 524288
net.core.rmem_max = 524288
net.core.wmem_default = 524288
net.core.wmem_max = 524288
net.ipv4.tcp_wmem = 4096 87380 524288
net.ipv4.tcp_rmem = 4096 87380 524288
net.ipv4.tcp_mem = 524288 524288 524288
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_ecn = 0
net.ipv4.route.flush = 1

  Donde las primeras lineas deshabilita el ipv6 (tranquilo que aun así podrás visitar páginas con ipv6). Y el segundo bloque configura algunas respuestas. Si por alguna razón te es inestable, entonces debes cambiar la linea net.ipv4.tcp_window_scaling = 1, con un “uno”.

Resetear el archivo con el comando sudo sysctl -p
Desde entonces me ha funcionado mucho mejor