Simulando uma conexão de rede de baixa latência e alta largura de banda no Linux

19

Gostaria de simular uma conexão de rede de alta latência e baixa largura de banda na minha máquina Linux.

A limitação da largura de banda já foi discutida antes, por exemplo, aqui , mas não consigo encontrar nenhuma postagem que trate de limitar a largura de banda e a latência.

Posso obter alta latência ou baixa largura de banda usando tc. Mas não consegui combiná-los em uma única conexão. Em particular, o exemplo de script de controle de taxa aqui não funciona para mim:

# 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

Como criar uma conexão de baixa largura de banda e alta latência, usando tcou qualquer outra ferramenta prontamente disponível?

Justin L.
fonte
1
você tentou combinar abordagens de seus links, por exemplo. usar tc para latência e gotejar para largura de banda? (É mais feio do que apenas usar o tc, mas ainda pode funcionar;) #
315 Andy Andy
É uma boa ideia (e, de fato, o gotejamento adicionará latência), mas infelizmente o Firefox não carrega sob o gotejamento, e é isso que eu preciso testar.
Justin L.

Respostas:

15

Aha! Funciona se revertermos a ordem dos 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.
fonte
Qualquer pessoa interessada no motivo, parece que o netem qdisc não pode ser um pai, então você precisa reorganizar a hierarquia para tê-lo como um nó folha.
Andy
3
Observe que o limite da largura de banda está em apenas uma direção (de saída). Você precisa fazer um trabalho adicional para que isso aconteça nas duas direções (aparentemente usando o ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns
Deparei com isso ao tentar grok tc. Pelo que li, a primeira linha cria 1: 0, mas a segunda linha se refere a 1: 1? (provavelmente o meu entendimento que é errado - mas eu já olhou para muitas páginas que tentam compreender como classes / qtdiscs são numerados)
symcbean
1

Não é gratuito, mas o Charles Web Debugging Proxy pode simular conexões de alta latência e baixa largura de banda

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

Matthew Lock
fonte
Curiosamente, na verdade, estou fazendo isso para depuração da web. Mas certamente deve haver uma maneira de fazer isso sem gastar dinheiro. :)
Justin L.
Infelizmente, Charles parece não funcionar com o tráfego local. Ele morre quando tento acessar 192.168.1.1 através do proxy.
Justin L.
2
Ou apenas use WANEm, gratuitamente: wanem.sourceforge.net
Nathan Kidd