En casa tengo la típica línea ADSL, y ya llevaba tiempo dándole vueltas a varios problemas de latencia y velocidad que estaba sufriendo cuando conectaba aMule, Transmission o similares. Cuando estaba usando estos programas P2P, la navegación se ralentizaba hasta extremos desesperantes, muchas veces lo que más le costaba era la resolución DNS de las páginas, algo que tendría que ser lo más rápido posible.
Para mejorar la situación he creado un script basándome en el fantástico Wonder Shaper, un script que usa el algoritmo HTB para asegurar un ancho de banda a las clases que definamos. La principal diferencia es que wonder shaper está pensando para un equipo que tenga conexión directa a Internet con una IP pública asignada, y mi script está diseñado para un equipo con una IP privada dentro de la LAN, que es la configuración habitual de los routers ADSL. Por supuesto, esta aproximación solo funciona bien si nuestro equipo es el único en la red local, ya que si otros hosts están generando tráfico, llenaremos el buffer del router y no conseguiremos nada.
Podéis descargar la última versión aquí: https://raw.github.com/jorti/wondershaper/master/90-wshaper O clonar el repositorio con: git clone git://github.com/jorti/wondershaper.git
Para instalarlo hay que copiar el script en /etc/NetworkManager/dispatcher.d y hacerlo ejecutable. También hay que editarlo y configurar las variables adecuadas, como el interfaz, el rango IP de nuestra red interna y los anchos de banda de la LAN y de Internet, este último es especialmente importante que esté ajustado a un valor algo menor que el real, para no usar el buffer del router si no el de nuestra máquina y de este modo poder controlar la latencia.
Si se ejecuta con el parámetro status, nos muestra toda la información de los qdiscs, classes, filters y reglas iptables. De esta forma podemos ver las estádisticas de uso y asegurarnos que está funcionando bien. Me gustaría también configurar algún tipo de monitorización, pero esto será para más adelante.
Con este script he conseguido reducir la latencia considerablemente y puedo navegar de forma fluida mientras hago uso de programas P2P. Si queréis profundizar más en el tema, es imprescindible el howto de Linux advanced routing and traffic control. Espero que os sirva.