C'è un modo per limitare la larghezza di banda su una scheda NIC in Linux? Mi piacerebbe essere in grado di simulare una connessione arbitrariamente lenta.
C'è un modo per limitare la larghezza di banda su una scheda NIC in Linux? Mi piacerebbe essere in grado di simulare una connessione arbitrariamente lenta.
Risposte:
Il modulo del kernel netem , controllato da iproute.
Devi compilare Netem con il kernel:
Networking -->
Networking Options -->
QoS and/or fair queuing -->
Network emulator
Una volta caricato il modulo netem, iproute's tc ti consente cose come:
tc qdisc add dev tap0 root netem delay 50ms loss 50%
(Perdita di pacchetti del 50%, ritardo aggiuntivo di 50 ms)
sch_netem
. Generalmente non è necessario caricarlo manualmente, verrà caricato automaticamente secondo necessità.
rate
opzione di: tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
. Si noti che per alcuni dispositivi come lo
(per l'accesso localhost), è necessario impostare la lunghezza della coda pure: ifconfig lo txqueuelen 1000
. Vedi serverfault.com/a/394949/76090
Lato client, giusto?
il gocciolamento dovrebbe fare quello che vuoi. Se stai usando Ubuntu (o Debian, penso), puoi installarlo sudo apt-get install trickle
e quindi eseguirlo. trickle -s -d 10 -u 10 firefox
(o giù di lì, non l'ho usato da un po 'di tempo) avrebbe eseguito Firefox, limitando la sua velocità di download e upload a 10 kilobyte al secondo.
Ho trovato un modo per evitare che la mia scatola mangiasse tutta la larghezza di banda disponibile sulla rete usando uno strumento chiamato 'Wondershaper' in Ubuntu. Spero che esista anche in altre destinazioni Linux. Posso limitare la larghezza di banda di ciò che il mio pc di casa Linux può consumare usando il seguente comando.
sudo wondershaper eth0 1000 200
Ciò limita il limite di download a 1000 kilobit e il uplaod a 200 kilobit. Per ulteriori informazioni / opzioni, consultare le pagine man di Wondershaper.
wondershaper
in Debian.
sudo wondershaper clear eth0
NIST crea un simulatore di rete chiamato NistNet.
http://snad.ncsl.nist.gov/nistnet/ (il link sembra morto)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet ti consente di creare un router che emula un collegamento di comunicazione di tua scelta.
Per un funzionamento più semplice, è disponibile su una scatola con due schede NIC tra due reti.
Ad esempio, avevo un'applicazione che doveva funzionare su un collegamento satellitare.
I dati potrebbero passare attraverso un collegamento a 2 Mbps con latenza BIG. Il controllo doveva passare su un collegamento a 128 kbps, con la stessa latenza.
NistNet ha contribuito a far funzionare tutto a 128kbps.
Usando NistNet ho potuto simulare non solo la larghezza di banda, ma anche la latenza, e anche far cadere pacchetti per te, simulando un collegamento occupato o inaffidabile.
Se si desidera simulare una connessione abitraria, non limitarsi solo alla larghezza di banda, ma anche alla latenza.
Non dimenticare di frammentare i pacchetti. Puoi impostare dei piccoli MTU sul collegamento fasullo.
L'aggiunta di jitter di pacchetti IIRC ti consentirà di scoprire se riesci a far fronte a pacchetti fuori ordine.
Ho usato personalmente Wondershaper in passato per questo, sebbene sia stato scritto per un caso d'uso opposto, sfruttando al massimo la tua connessione ADSL.
Dovrò provare gli altri citati qui però.
È possibile utilizzare il proxy squid installato localmente per limitare la larghezza di banda, ad esempio per testare una pagina Web su collegamento lento:
Installa squid proxy dalla tua distribuzione - sul mio Fedora è stato facile come yum install squid
.
Aggiungi quanto segue a /etc/squid/squid.conf
:
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
Ciò limiterà la larghezza di banda a circa 128 kbps (16000 Bps).
Inizia calamari :/etc/init.d/squid start
Configura il tuo browser per utilizzare la localhost
porta del server proxy 3128
.
Nessuno ha ancora menzionato ip_relay , chiamato "iprelay" nei repository Debian. Funziona come un proxy TCP, piuttosto che intercettare le chiamate come fa il gocciolamento e funzionerà con qualsiasi applicazione che può usare un proxy (ad esempio un browser Web) o accettare una porta di destinazione definita dall'utente (telnet, ssh, ftp, curl, eccetera ).
È un po 'più difficile da configurare, ma spesso funziona in situazioni in cui il gocciolamento non lo farà.