Cuando se desarrollan aplicaciones web se hace muy necesario para los programadores simular una conexión de internet que en la mayoría de las veces se asemeje a la conexión promedio del usuario promedio, aunque si bien es cierto que las velocidades de acceso a internet son cada vez mayores, no está demás comprobar el comportamiento de nuestra aplicación para velocidades más semejantes a las del usuario real promedio.
En mi caso particular, me gusta probar mis aplicaciones en conexiones promedio de 56kbps a 128kbps, aunque, por supuesto, el rendimiento será mucho mejor si en la realidad se supera este límite.
Generalmente mis desarrollos los mantengo alojados en un servidor en una red local o, en algunos casos, en mi propia PC en casa. Cuando se accesa a las direcciones locales o a "localhost/127.0.0.1" el rendimiento del sistema es vertiginoso. Cuando lo pruebo desde una conexión remota es cuando me doy cuenta que el rendimiento no es tan satisfactorio. Es por esto que me puse a indagar en internet sobre si existía algún "simulador" de redes lentas, o alguna herramienta en la cual se pudiera configurar la velocidad de la conexión.
Yo me he convertido en asíduo usuario de Linux, aunque sin mucha experticia, pero me ha dado resultados muy satisfactorios usar este sistema operativo para trabajar. Para este sistema operativo conseguí una herramienta perfecta para lo que deseaba según lo comentado arriba. Esta herramienta es la llamada tc (traffic control), la cual permite configurar los aspectos más "reales" de cualquier conexión promedio a internet (o inferior, o superior, según el gusto).
Sin agregar más detalles técnicos que pueden ser consultados en páginas especializadas en internet, les proveo los comandos de "tc" que me han resultado utilísimos y que se asemejan más a una conexión real:
Para la activación en direcciones locales (locahost/127.0.0.1) configuramos la interfaz de red "lo":
$> sudo tc qdisc add dev lo root handle 1: htb default 12
$> sudo tc class add dev lo parent 1:1 classid 1:12 htb rate 56kbps ceil 128kbps
$> sudo tc qdisc add dev lo parent 1:12 netem delay 200ms
Para la desactivación:
$> sudo tc qdisc del dev lo root
Para consultar el estado actual del control de tráfico:
$> sudo tc -s qdisc ls dev lo
Si se desea utilizar para otras interfaces de red, tales como eth0..ethn o wlan0..wlann, sólo sustituimos lo por la interfaz que nos interese. Por ejemplo para la wifi: wlan0, nos quedaría como sigue:
Activación:
$> sudo tc qdisc add dev wlan0 root handle 1: htb default 12
$> sudo tc class add dev wlan0 parent 1:1 classid 1:12 htb rate 56kbps ceil 128kbps
$> sudo tc qdisc add dev wlan0 parent 1:12 netem delay 200ms
Desactivación:
$> sudo tc qdisc del dev wlan0 root
Sé que no es difícil escribir un script para ejecutar estos comandos y pasar la interfaz de red como parámetro. Algo así como $> slownet eth0 on/off. Eso prefiero dejárselo a otros expertos (o inexpertos aventureros, jejeje).
Espero que sea de utilidad para programadores web.