Come limitare / limitare la velocità dei dati WiFi sul mio dispositivo Android?


9

Sto testando un'applicazione Android e devo capire come si comporta l'app a diverse velocità di Internet. Un esempio di test case è: 1. imposta la larghezza di banda massima su 20kbps e controlla come funziona; 2. imposta la larghezza di banda massima su 50kbps e controlla come funziona ... ecc.

Il problema è: non ho idea di come limitare il traffico.

Sto usando WiFi e Charles Proxy . Uso Charles per verificare come reagisce l'app. Sfortunatamente, non riesco a limitare l'utilizzo di Charles, per qualche ragione i limiti di Charles non influiscono affatto sulla mia app.

Ad ogni modo, qualcuno può aiutarmi con questo problema? Hai idee su come limitare la larghezza di banda?

Grazie in anticipo.


Sembra che staresti meglio usando un proxy diverso che supporti la limitazione.
GAThrawn

Risposte:


8

PER DISPOSITIVO ROOTED (copiato dalla risposta di Mansour su questo post )

Acquista BradyBound . È uno shaper / limitatore di velocità di download a livello di sistema. Poche cose da notare:

  • L'app richiede l'accesso come root.
  • Funziona facendo cadere i pacchetti usando iptables. Questo spreca un po 'di traffico - quanto dipende dal tipo di traffico (ad es. Download di lunga durata, navigazione web).
  • La misurazione della velocità viene eseguita per numero di pacchetti anziché per byte, quindi il limite di velocità non sarà preciso.
  • Ciò limita solo il traffico TCP (non ha senso eliminare i pacchetti UDP).

Nota anche che sono l'autore di questa app.

Modifica n. 1:

Spiegazione:

I dati sono divisi in piccole parti chiamate Pacchetti da trasmettere attraverso la rete.

Può essere trasmesso tramite TCP (Transmission Control Protocol) o UDP (User Datagram Protocol)

Facciamo un esempio:

Supponiamo che tu sia il server e io sia l'host e voglio scaricare un file, quindi prima ti invierò una richiesta per esso, dopodiché elaborerai, e invece di inviare l'intero file, dividerai il file grande in piccoli pacchetti.

Ora ogni pacchetto che è stato creato conterrà informazioni come l'IP di origine (il tuo) e l'IP di destinazione (il mio), insieme ad alcuni dati aggiuntivi (numero di sequenza, dimensione dei dati, tempo di vita, ecc.)

Invierai quei pacchetti e loro potranno raggiungermi tramite router. Non è necessario che tutti i pacchetti vengano da me attraverso lo stesso percorso. Possono venire da me attraverso diversi percorsi disponibili.

Quando mi raggiungono, TCP / UDP appare in foto.

Se hai utilizzato TCP per la trasmissione, quando un pacchetto mi raggiunge, ti viene inviato un riconoscimento che indica che il pacchetto mi ha raggiunto.

Questa funzionalità non è disponibile in UDP. Se hai utilizzato UDP, a differenza di TCP, non ti invia riconoscimenti. Ciò significa che tu, come server, non hai idea se i pacchetti mi stanno raggiungendo o meno. Nel caso in cui venga perso durante la trasmissione, viene perso per sempre.

Pacchetti che cadono

Far cadere i pacchetti significa scartare i pacchetti. Quindi, fondamentalmente, quando lascerò cadere il pacchetto inviato da te, ti verrà inviato un avviso (nel caso di TCP) che il pacchetto è stato perso durante la trasmissione, quindi dovrai inviarlo di nuovo.

In questo modo, spreca traffico e limita la velocità nello stesso momento in cui ottengo l'intero file.

Se lascerò cadere i pacchetti UDP, non riceverò l'intero file. Questo è il motivo per cui l'app non controlla il traffico UDP.

E sì, il privilegio di root è un must, poiché iptable è accessibile solo con accesso da superutente.


È possibile limitare la velocità di download da solo non caricare?
rakki s

Sembra difficile controllare solo la velocità di download ... ma cercherò di aggiornare la risposta non appena troverò un modo per farlo.
Ash-Ishh ..

È del tutto impossibile far funzionare l'app anche su dispositivi non rootati? hai detto che cadere pacchetti usando iptables spreca un po 'di traffico, cosa intendi con rifiuti? So che il limite di velocità non sarà esattamente preciso, ma ho ancora bisogno che sia abbastanza preciso, diciamo una deviazione del 10%. cosa intendi con "questo limita solo il traffico TCP (non i pacchetti UDP)"? Mi dispiace non so cosa siano TCP e UDP.
rakki s

0

Se sei su mac os x puoi usare "Network Link Conditioner".

Puoi installarlo in xcode da:

Xcode> Apri strumento per sviluppatori> Altri strumenti per sviluppatori

Si aprirà una pagina Web di risorse da Apple (potrebbe essere necessario effettuare il login). Nell'elenco delle risorse, cercare gli ultimi "Hardware IO Tools" e scaricarli. Quindi installare "Network Link Conditioner", aggiungerà un'opzione nel riquadro delle preferenze del Mac.

L'idea è di portare il tuo mac su Ethernet. Condividi la sua connessione su wifi. Limitare il traffico con Network Link Conditionner. E collega il tuo Android sul tuo Mac WiFi.

modifica: sembra throttling della rete di supporto di squid-cache. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html


0

Puoi controllare la larghezza di banda con il tuo router (se supportato).

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.