Comment simuler la perte de paquets sur un appareil Android?

11

Je voudrais simuler la perte de paquets sur un appareil Android enraciné pour voir comment différents niveaux affectent la qualité du streaming vidéo. J'ai essayé netem et iptables, sans succès:

netem :

# tc qdisc change dev rmnet0 root netem loss 0.1%
tc qdisc change dev rmnet0 root netem loss 0.1%
Android does not support qdisc 'netem'
Garbage instead of arguments "loss ...". Try "tc qdisc help".

Le format est-il incorrect ou est-il possible d'ajouter le support netem d'une manière ou d'une autre?

iptables :

# iptables -A INPUT -m statistic --mode random --probability 0.01 -j DROP
iptables -A INPUT -m statistic --mode random --probability 0.01 -j DROP
iptables v1.3.7: Couldn't find match `statistic'

Try `iptables -h' or 'iptables --help' for more information.

Existe-t-il une autre alternative dans Android?

fejd
la source
3
Bonne question! Ma pensée: comme alternative, peut-être vous connecter à un routeur wifi et y limiter la connexion si votre routeur offre une qualité de service ou similaire?
Bryan Denny
En quelque sorte, voici comment capturer des paquets sur un appareil Android rooté: vbsteven.be/blog/…
Bryan Denny
La configuration du routeur est probablement la bonne façon de le faire, et j'ai cette simulation en place en utilisant WANem . Cependant, j'aimerais avoir un moyen portable qui ne dépende pas de la configuration réseau ou de l'interface réseau d'ailleurs. Fondamentalement, je veux faire un test unitaire où j'exécute le streaming vidéo, augmente la perte de paquets et réexécute la même vidéo.
fejd

Réponses:

2

Étant donné que votre appareil est enraciné, vous pouvez installer un proxy. J'ai utilisé TransparentProxy . Configurez ensuite un proxy sur une autre machine de votre réseau local. Pointez TransparentProxy sur ce proxy, puis définissez votre proxy sur la limitation. Quelques proxys qui pourraient fonctionner incluent CharlesProxy ou Service Capture .

Si cela ne fonctionne pas, vous pouvez y accéder à partir du niveau du routeur. Une machine exécutant BSD ou Linux peut fonctionner comme un routeur. Ou vous pouvez obtenir une appliance virtuelle ou un CD amorçable pour le faire pour vous.

Jim McKeeth
la source
2

Il est possible de définir la latence et la vitesse du réseau à l'aide des fonctions de contrôle de l'émulateur des outils de développement Android standard.

Si vous utilisez eclipse: Sélectionnez Window \ Open Perspective \ DDMS Sur l'écran, vous verrez un onglet nommé "Emulator Control". Dans cet onglet, vous trouverez les options de vitesse et de latence. Les «paramètres de téléphonie» tout en haut ont des sélections de vitesse et de latence.

Il existe d'autres façons de modifier ces paramètres (y compris les scripts dans la configuration de votre émulateur), mais c'est la façon la plus simple d'accéder aux paramètres.

crotte de nez
la source