È possibile limitare la velocità del traffico utilizzando gli strumenti tc
e netem
, ma ciò limiterà la velocità dell'interfaccia di rete del computer. Suppongo che tu usi solo wget
o curl
e nessun'altra applicazione sta scambiando traffico attraverso l'interfaccia di rete.
tc
utilizza il Token Bucket Filter (TBF) per controllare la velocità.
Un esempio di TBF sarebbe il seguente (rif. Http://www.lartc.org/manpages/tc-tbf.html ):
Per collegare un TBF con una velocità massima sostenuta di 0,5 mbit / s, un picco di 1,0 mbit / s, un buffer da 5 kilobyte, con un limite di dimensione della coda pre-bucket calcolato in modo che il TBF causi al massimo 70 ms di latenza, con un comportamento di picco perfetto , problema:
# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540
Un altro esempio di usign tc e netem sarebbe il seguente (disponibile in http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):
Non esiste un controllo di velocità integrato nella disciplina netem, invece usa una delle altre discipline che fa il controllo di velocità. In questo esempio, utilizziamo Token Bucket Filter (TBF) per limitare l'output.
Per aggiungere il ritardo di ogni pacchetto che va / arriva attraverso l'interfaccia eth0
# tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
per aggiungere la velocità dei dati in tbf, la dimensione del buffer dei pacchetti e il limite massimo di burst
# tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
Per visualizzare l'elenco delle regole assegnate in tc per l'interfaccia eth0
# tc -s qdisc ls dev eth0
L'output del comando precedente sarebbe come di seguito
qdisc netem 1: limit 1000 delay 100.0ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
Controlla le opzioni per il buffer e il limite poiché potresti scoprire che hai bisogno di valori predefiniti più grandi di questi (sono in byte)