martes, 28 de septiembre de 2010

HUAWEI E166 lento en UBUNTU (SOLUCIONADO)

Saludos amigos, esta entrada la público como respuesta a una inquietud que me presento un amigo que vive en Costa Rica y tiene un contrato de Internet Movil ICE Kolbi 3G. Para conectarse a Internet utiliza un MODEM USB HUAWEI E166.
La situación es que con este MODEM desde UBUNTU no conseguía navegar a más de 1Kbs. Sin más preámbulo a continuación la solución.

Paso 1: Crear la conexión: (Básico)
Conectamos el MODEM USB a un puerto libre de nuestra PC, luego vamos al icono de "Network Manager" (El de conexiones de red) y elegimos "Conexión móvil de banda ancha (GSM) nueva".  A continuación adjunto las imágenes donde se aprecian los pasos necesarios para configurar la conexión.




En la siguiente  captura se ve donde ingresamos el APN (Access Point Name), en Costa Rica, los planes actuales del ICE usan el APN: "kolbi3g" sin comillas.



En el paso siguiente ingresamos el PIN de nuestro servicio kolbi3g, desde luego debe ingresar el suyo (que probablemente es diferente a 5119).


La conexión ahora esta establecida pero faltan algunos ajustes, hacer clic en "Network Manager" (El icono que se ve abajo), y clic en desconectar.  Ahí mismo clic derecho y "Editar conexiones de red"


Con los pasos anteriores llegamos al siguiente cuadro de dialogo, ahora elegimos la pestaña "Banda ancha móvil", luego clic en el botón "Editar". (Seguir ilustraciones para hacer los ajustes adicionales).









Paso 2: Solucionar el problema de baja velocidad (Avanzado)
Desconectamos la conexión que acabamos de crear para hacer estos pasos adicionales.

IPv6 es un protocolo de Internet. En la actualidad la mayoría de las aplicaciones utilizan IPv4 y utilizar habilitado este protocolo ha causado parte del conflicto que tiene mi amigo para lograr conectarse a la velocidad contratada.

Para deshabilitarlo vamos a modificar un archivo así: (Abrimos una terminal y ejecutamos el siguiente comando para editar el archivo)
sudo gedit /etc/modprobe.d/bad_list

Y agregamos la siguiente linea de código y guardamos.
alias net-pf-10 off

Ahora, además es necesario ajustar el rendimiento de la conexión. Las computadoras se comunican mediante el envío de paquetes de datos de ida y vuelta. Cuando se conectan entre sí para enviar estos paquetes utilizan el protocolo TCP (Transmission Control Protocol).
Un mal ajuste en los parámetros que controlan este protocolo ocasionaría que dos equipos que están tratando de transmitirse paquetes pierdan demasiado tiempo en ponerse de acuerdo sobre cual es el tamaño máximo, o peor aún, llegar a una conclusión que va en deterioro de la velocidad.

Por eso vamos a configurar manualmente un archivo para controlar esta situación. (Abrimos una terminal y ejecutamos el siguiente comando para editar el archivo)
sudo gedit /etc/sysctl.conf

Entonces nos vamos al final del archivo y agregamos las siguientes lineas de código y guardamos.
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 = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_ecn = 0
net.ipv4.route.flush = 1


Para no tener que reiniciar, mejor ejecutamos el siguiente comando. (Desde la misma terminal ejecutar el siguiente comando).
sudo sysctl -p

Una vez hecho esto podemos hacer clic en el icono del Network-Manager y conectar con "IceCelular conection1". Ya deberíamos notar una buena diferencia al punto de alcanzar la velocidad máxima de descarga contratada.

Sino tiene una mejoría, regrese a editar el archivo anterior y pruebe otros valores para las cuatro primeras lineas que son las que determinan el tamaño del marco del paquete TPC. Otros valores que podría probar son: 524288, 262144, 131072.

Sobre los parámetros que agregamos al archivo:
# net.core.rmem_max: Ajusta el máximo de bufer de recepción para todos los protocolos.
# net.core.wmem_max: Ajusta el máximo de bufer de envío para todos los protocolos.
# net.ipv4.tcp_rmem: Ajusta el máximo del bufer de recepción para el protocolo TCP.
# net.ipv4.tcp_wmem: Ajusta el máximo del bufer de envío para el protocolo TCP.
Mizaq's Blog

Entradas populares