Simulación de una conexión de red de bajo ancho de banda y alta latencia en Linux

19

Me gustaría simular una conexión de red de alta latencia y bajo ancho de banda en mi máquina Linux.

La limitación del ancho de banda se ha discutido anteriormente, por ejemplo, aquí , pero no puedo encontrar ninguna publicación que aborde la limitación del ancho de banda y la latencia.

Puedo obtener alta latencia o bajo ancho de banda usando tc. Pero no he podido combinarlos en una sola conexión. En particular, el script de control de velocidad de ejemplo aquí no funciona para mí:

# tc qdisc add dev lo root handle 1:0 netem delay 100ms 
# tc qdisc add dev lo parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
RTNETLINK answers: Operation not supported

¿Cómo puedo crear una conexión de bajo ancho de banda y alta latencia, utilizando tco cualquier otra herramienta fácilmente disponible?

Justin L.
fuente
1
¿Has intentado combinar enfoques de tus enlaces, por ejemplo. usa tc para latencia y goteo para ancho de banda? (Es más feo que solo usar tc, pero aún podría funcionar;)
Andy
Esa es una buena idea (y, de hecho, el goteo incluso agregará latencia), pero desafortunadamente Firefox no se carga bajo goteo, y eso es lo que necesito probar.
Justin L.

Respuestas:

15

¡Ajá! Funciona si invertimos el orden de los comandos.

tc qdisc add dev lo root handle 1: htb default 12 
tc class add dev lo parent 1:1 classid 1:12 htb rate 20kbps ceil 20kbps 
tc qdisc add dev lo parent 1:12 netem delay 1000ms 

https://lists.linux-foundation.org/pipermail/netem/2010-May/001388.html

Justin L.
fuente
Cualquiera que esté interesado en saber por qué, parece que netem qdisc no puede ser padre, por lo que debe reorganizar la jerarquía para tenerla como un nodo hoja.
Andy
3
Tenga en cuenta que el límite de ancho de banda es solo en una dirección (saliente). Tienes que hacer un trabajo adicional para que suceda en ambas direcciones (aparentemente usando ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns
Encontré esto cuando intentaba asimilar tc. Por lo que he leído, la primera línea crea 1: 0, pero la segunda línea se refiere a 1: 1. (probablemente entiendo que está mal, pero he examinado muchas páginas tratando de entender cómo se numeran las clases / qtdiscs)
symcbean
1

No es gratuito, pero el proxy de depuración web de Charles puede simular conexiones de baja latencia y alto ancho de banda

http://www.charlesproxy.com/documentation/proxying/throttling/

Matthew Lock
fuente
Curiosamente, en realidad estoy haciendo esto para la depuración web. Pero seguramente debe haber una manera de hacerlo sin gastar dinero. :)
Justin L.
Lamentablemente, Charles no parece trabajar con el tráfico local. Muere cuando intento acceder a 192.168.1.1 a través del proxy.
Justin L.
2
O simplemente use WANEm, gratis: wanem.sourceforge.net
Nathan Kidd