Simulazione di una connessione di rete a bassa larghezza di banda e latenza elevata su Linux


19

Vorrei simulare una connessione di rete ad alta latenza e larghezza di banda ridotta sulla mia macchina Linux.

La limitazione della larghezza di banda è stata discussa in precedenza, ad esempio qui , ma non riesco a trovare alcun post che indirizzi limitando la larghezza di banda e la latenza.

Posso ottenere latenza elevata o larghezza di banda ridotta utilizzando tc. Ma non sono stato in grado di combinare questi in una singola connessione. In particolare, lo script di controllo della velocità di esempio qui non funziona per me:

# 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

Come posso creare una connessione a bassa larghezza di banda, ad alta latenza, utilizzando tco qualsiasi altro strumento facilmente disponibile?


1
hai provato a combinare approcci dai tuoi link, ad es. usare tc per la latenza e gocciolare per la larghezza di banda? (È più brutto del semplice utilizzo di tc, ma potrebbe ancora funzionare;)
Andy,

Questa è una buona idea (e, in effetti, il gocciolamento aggiungerà persino la latenza), ma sfortunatamente Firefox non si carica sotto il gocciolamento, ed è quello che devo testare.
Justin L.,

Risposte:


15

Aha! Funziona se invertiamo l'ordine dei comandi.

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


Chiunque sia interessato al perché, sembra che netem qdisc non possa essere un genitore, quindi è necessario riorganizzare la gerarchia per averlo come nodo foglia.
Andy,

3
Si noti che il limite di larghezza di banda è solo in una direzione (in uscita). Devi fare un lavoro aggiuntivo per farlo accadere in entrambe le direzioni (apparentemente usando ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns,

Mi sono imbattuto in questo durante il tentativo di grok tc. Da quello che ho letto la prima riga crea 1: 0, ma la seconda riga fa riferimento a 1: 1? (probabilmente la mia comprensione è sbagliata - ma ho scrutato molte pagine cercando di capire come sono numerate le classi / qtdisc)
symcbean

1

Non è gratuito, ma il proxy di debug del Web Charles può simulare connessioni a bassa latenza e larghezza di banda ridotta

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


È interessante notare che sto effettivamente facendo questo per il debug web. Ma sicuramente ci deve essere un modo per farlo senza spendere soldi. :)
Justin L.,

Purtroppo Charles non sembra funzionare con il traffico locale. Muore quando provo ad accedere a 192.168.1.1 tramite il proxy.
Justin L.,

2
O semplicemente usa WANEm, gratuitamente: wanem.sourceforge.net
Nathan Kidd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.