Simulazione di una connessione lenta con tc


9

Ho un box Linux (Centos 5.5) su cui voglio limitare il traffico di rete. Ho un'applicazione che distribuiamo ai clienti e voglio testarla sulla larghezza di banda minima consigliata di 256 Mbit / sec. Finora le esercitazioni TC che ho visto sembrano permetterti di limitare la larghezza di banda in base a determinati criteri, ma voglio limitare la larghezza di banda in tutte le situazioni (a / da tutti gli indirizzi IP, indipendentemente dall'aspetto dell'intestazione IP, ecc.).

Un tutorial mi ha suggerito di usare:

tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2

ma ottengo il seguente errore:

Unknown filter "flowid", hence option 10:2 is unparsable

Qualche idea su come limitare la larghezza di banda che entra / esce da eth0 in tutte le circostanze?

Risposte:


11

Se si desidera applicare la limitazione a tutto il traffico in uscita, non è necessario alcun filtro. Aggiungi il tuo qdisc all'handle di root dell'interfaccia in questo modo:

tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Se vuoi modellare / sorvegliare il traffico in entrata, è un po 'più complicato. Dovrai usare ad esempio un'interfaccia IFB:

modprobe ifb
ip link set dev ifb0 up
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#  ^- this is a dummy filter, match u32 0 0 matches all traffic
tc qdisc add dev ifb0 root handle 1: tbf rate 256mbit latency 1ms burst 1540

Ecco un approccio diverso, utilizzando due semplici filtri:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 root         protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 256mbit burst 10k drop flowid :1

Ho hackerato la tua soluzione ma non riesco a farlo funzionare. Sto eseguendo i tuoi comandi, aprendo Firefox, avviando un download e scaricandolo troppo velocemente. Quando eseguo un ifconfig dovrei vedere alcuni pacchetti RX e TX in ifb0 (perché non lo faccio)? Grazie.
rancidfishbreath,

Ho aggiunto un approccio diverso che funziona senza un'interfaccia ifb.
al.

Il secondo approccio che utilizza i due semplici filtri funziona alla grande! Grazie mille. Mi piace molto questa soluzione perché è semplice e facile da capire.
rancidfishbreath,

Impressionante Grazie, domanda newb, come posso eliminare il limite dopo l'esecuzione: tc qdisc add dev eth0 root handle 1: tbf rate 256mbit latency 1ms burst 1540? Grazie!
SSH Questo

Come disattivare la limitazione e ripristinarla com'era? Per favore, rispondi alla versione "approccio diverso usando due semplici filtri" se saresti così gentile. "Man tc" è ... travolgente come al solito.
Geoffrey Anderson,


0

Hai aggiunto 1 righello come questo tc qdisc aggiungi dev eth0 root handle 10: htb default 20

affliggi quello come il tuo

tc filter aggiungi dev protocollo eth0 ip parent 10: prio 2 flowid 10: 2

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.