Come posso simulare un ambiente a bassa larghezza di banda e latenza elevata?


201

Devo simulare una connessione a larghezza di banda ridotta e latenza elevata a un server per emulare le condizioni di una VPN in un sito remoto. La larghezza di banda e la latenza dovrebbero essere modificabili in modo da poter scoprire la migliore combinazione per eseguire il nostro pacchetto software.


7
Ottima domanda! Mi piacerebbe sentire alcune risposte relative allo sviluppo web di ASP .NET.
Carl,

Risposte:


79

Per macOS , esiste il Network Link Conditioner che simula larghezza di banda, latenza e perdita di pacchetti configurabili. È contenuto nel pacchetto Strumenti aggiuntivi per Xcode . Immagine dello schermo


12
Il riquadro delle preferenze "Network Link Conditioner" fa parte di Hardware IO Tools per XCode, che è possibile scaricare da developer.apple.com/downloads
avernet

non sembra funzionare con Genymotion. (Schermo nero)
Bruno,

1
Link per il download per le versioni XCode più recenti: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31

@ jstorm31 Grazie. Ho aggiornato la risposta con il nome corrente del pacchetto e il collegamento corrente.
Jon Colverson,

37

C'è un eccellente resoconto della configurazione di una macchina FreeBSD per fare proprio questo: prendi il tuo vecchio desktop standard, aggiungi un'altra scheda di interfaccia di rete e costruisci.

Il writeup è disponibile su http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

Nel passaggio 5 delle istruzioni precedenti, stai abilitando un firewall. Per simulare una diversa connessione IP, è possibile (ad esempio) effettuare le seguenti operazioni:

Creare un file /etc/rc.firewall.56kche contiene quanto segue:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

E cambia /etc/rc.conf... sostituisci la linea

firewall_type="open"

con

firewall_type="/etc/rc.firewall.56k"

riavvia e avrai un bridge a 56K!

Se ti capita di lavorare da un Macintosh, quel sistema operativo ha ipfw integrato per impostazione predefinita. Ho fatto la stessa cosa instradando il traffico di rete sull'aeroporto e attraverso la rete Ethernet, configurandolo in modo che qualsiasi cosa arrivi all'aeroporto abbia le stesse caratteristiche di qualsiasi cosa stia cercando di emulare. È possibile richiamare i comandi ipfw direttamente dal terminale e ottenere gli stessi effetti.


27

In passato ho usato un bridge usando la funzionalità Linux Netem (Network Emulation). È altamente configurabile, consentendo l'introduzione di ritardi (il primo esempio è per una WAN), perdita di pacchetti, corruzione, ecc.

EDIT: c'è anche l' interfaccia web MasterShaper per controllare le impostazioni.

Sto notando che Netem ha funzionato molto bene per le mie applicazioni, ma alla fine ho anche usato WANem diverse volte. L'ISO di avvio fornito (e le immagini dell'appliance virtuale) lo hanno reso abbastanza utile.


Perfetto per le mie esigenze e disponibile immediatamente sul mio server Ubuntu 14.04!
RobM,

21

Charles

Mi sono imbattuto in Charles l'applicazione proxy di debug web e ho avuto un grande successo nell'emulazione della latenza di rete. Funziona su Windows, Mac e Linux.

Charles su Mac

Acceleratore di larghezza di banda / simulatore di larghezza di banda

Charles può essere utilizzato per regolare la larghezza di banda e la latenza della connessione Internet. Ciò consente di simulare le condizioni del modem utilizzando la connessione ad alta velocità.

La larghezza di banda può essere limitata a qualsiasi byte arbitrario al secondo. Ciò consente di simulare qualsiasi velocità di connessione.

La latenza può anche essere impostata su qualsiasi numero arbitrario di millisecondi. Il ritardo di latenza simula la latenza riscontrata su connessioni più lente, ovvero il ritardo tra l'esecuzione di una richiesta e la richiesta ricevuta dall'altra parte.

DummyNet

Puoi anche usare vmware per eseguire BSD o Linux e provare questo articolo (DummyNet) o questo.


2
Charles è un proxy HTTP, quindi adatto solo per testare applicazioni HTTP. A ciascuno il suo, ma secondo me è probabilmente uno dei peggiori software che abbia mai usato. L'ho usato solo per poco tempo mentre dovevo lavorare su un Mac. Per gli utenti Windows, consiglierei Fiddler se hai bisogno di un proxy di debug HTTP. Sfortunatamente, non ho trovato altro che Charles per OSX.
Brad,

6
Ciao Brad Puoi dire che tipo di problemi hai avuto?
Ante,

17

Ho trovato questo piccolo programma pulito per Windows chiamato goffo . È in una specie di stato alfa, ma sembra funzionare bene per me ed è open source.

Modifica: altri hanno notato che non è possibile limitare la larghezza di banda con goffo, ed è vero. È possibile aggiungere solo latenza e un paio di altri errori relativi alla rete. Questo squalificherà questa risposta come una risposta valida alla domanda, tuttavia poiché ne ho fatto buon uso quando volevo simulare una rete difettosa, quindi la lascerò qui finché avrà> 0 voti o simili.


Come si controlla la larghezza di banda con il maldestro?
user3731622

3
Programma eccellente. Proprio quello di cui avevo bisogno. Lo consiglio. Funziona come un fascino ed è super facile.
Jh62,

1
Quando la maggior parte delle persone dice "limitare la larghezza di banda", sono probabilmente più che felici semplicemente aggiungendo enormi quantità di latenza e perdita di pacchetti, poiché queste limitano effettivamente la larghezza di banda. Anche questo programma è incredibilmente semplice da usare, batte tutto il resto che ho provato su Windows.
lancia l'

13

Prova WANem

WANem è un emulatore di rete di area ampia, pensato per fornire una vera esperienza di una rete di area ampia / Internet, durante lo sviluppo / il test di applicazioni in un ambiente LAN.


1
Ho provato questo e non riesco a farlo funzionare. Non otterrà un indirizzo IP dalla nostra rete per qualche motivo mentre qualsiasi altro computer non ha problemi con esso.
Michael Beck,


7

Vorrei provare a utilizzare netem su Linux. Con esso è possibile simulare ulteriori ritardi, corruzione, perdita di pacchetti e duplicazione. Funziona anche sul dispositivo di loopback.


Ehi, hai un comando equivalente per Windows come netem?
Shashi Ranjan,

6

Un altro programma lato client (solo Windows) è NetLimiter - http://www.netlimiter.com


2
Netlimiter è buono, ma penso che abbia solo una bassa larghezza di banda - non può cambiare la latenza?
Nathan,

La beta prevede la simulazione della latenza elencata v3 come funzionalità pianificata. È stato recentemente rilasciato e non l'ho ancora usato per vedere se quella funzionalità è
arrivata

Quella funzionalità non è arrivata alla versione beta 9. Ugh.
cacba,

4
Anche la versione beta corrente (NetLimiter 4) non consente di modificare la latenza.
influente

5

Uso NetBalancer sul mio computer Windows.

http://seriousbit.com/netbalancer/

Aggiornamenti del 07-10-2017 : l'ultima versione gratuita di NetBalancer è 9.2.7. Il programma ha una data di scadenza codificata. Prima di avviare il servizio NetBalancer, è necessario ripristinare l'orologio di sistema prima del 18-10-2016. Vedi questo articolo per i dettagli.


Grazie!! NetBalancer è l'unico strumento elencato in questa pagina che sono stato in grado di mettermi al lavoro e che può controllare la latenza.
influente



3

Per simulare una connessione a larghezza di banda ridotta per testare i siti Web, utilizzare Google Chrome, è possibile accedere alla scheda Rete in Strumenti F12 e selezionare un livello di larghezza di banda per simulare o creare larghezza di banda personalizzata per simulare.


1
Grazie! Se non riesci a trovarlo, si trova nella console di Chrome, scheda Rete, sul lato destro del pulsante "Disabilita cache". Il valore predefinito è "Nessuna limitazione".
Alan Willms,



1

Esiste un prodotto di http://www.shunra.com chiamato VE Desktop che può essere utilizzato per simulare condizioni di rete variabili. Ti consente di modificare latenze, larghezza di banda e perdita di pacchetti con una semplice interfaccia utente. L'unico avvertimento è che non è gratuito. Spero che questo ti aiuti.


1

Sto cercando uno strumento facile da usare per questo tipo di test da un po 'di tempo. L'ho appena visto l'altro giorno: Network Delay Simulator

Se stai utilizzando Windows, dovresti verificarlo. È stato semplicissimo da installare e iniziare, e sembra funzionare davvero bene. Consente di definire larghezza di banda, latenza e perdita di pacchetti in ciascuna direzione. L'altra cosa davvero interessante è che puoi definire "Condizioni di corrispondenza del flusso" in modo che influisca solo sul traffico che desideri. Oh sì, ed è gratuito.



1

Dai un'occhiata all'emulatore di rete NE-ONE che ti consente di configurare larghezza di banda, latenza, perdita di pacchetti, riordino dei pacchetti, duplicazione dei pacchetti, frammentazione dei pacchetti, congestione della rete e molti altri problemi in modo da poter creare condizioni di rete reali in laboratorio . Diverse limitazioni possono essere configurate per up e downlink in modo da poter avere un uplink davvero buono ma un'esperienza downlink davvero negativa, ottima per vedere come l'app gestisce la coda TCP perché gli ack non tornano in modo tempestivo e la latenza generale quindi aumenta!

C'è un video di panoramica qui http://www.youtube.com/watch?v=DwtqlE7LcrQ specificamente rivolto agli sviluppatori di giochi, ma mostra di cosa si tratta. NE-ONE è configurato utilizzando un browser Web, quindi è davvero facile installarlo e configurarlo - non è necessario essere un guru della rete :-)

Esiste una versione hardware - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - oppure puoi scaricare una versione dell'appliance virtuale (software) che gira su VMware ESXi Server. L'appliance virtuale può essere scaricata dallo scambio di soluzioni VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator



0

LANforge ICE è un emulatore di rete con enfasi su routing virtuale, jitter, corruzione e ritardo. I progetti lo hanno utilizzato per emulare collegamenti via satellite, via cavo e modem ed emulazione wan ad alta velocità (10 Gbit). È possibile utilizzare una GUI Java per creare reti virtuali e generare report molto dettagliati sul flusso di traffico. I prodotti LANforge forniscono anche funzionalità di generazione del traffico: frame, ethernet, layer 3 e traffico stateful (NFS, http). Le recenti edizioni di LANforge hanno anche sofisticate funzionalità di test WiFi.


0

Puoi provare questo: CovenantSQL / GNTE basta scrivere YAML in questo modo:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

correre ./generate scripts/your.yaml

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.