Wie simuliere ich Paketverlust auf einem Android-Gerät?

11

Ich möchte den Paketverlust auf einem gerooteten Android-Gerät simulieren, um zu sehen, wie sich verschiedene Ebenen auf die Video-Streaming-Qualität auswirken. Ich habe Netem und Iptables ohne Erfolg ausprobiert:

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".

Ist das Format falsch oder ist es möglich, Netem-Unterstützung hinzuzufügen?

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.

Gibt es eine andere Alternative in Android?

fejd
quelle
3
Gute Frage! Mein Gedanke: Alternativ können Sie eine Verbindung zu einem WLAN-Router herstellen und die Verbindung dort drosseln, wenn Ihr Router Servicequalität oder ähnliches bietet.
Bryan Denny
Hier erfahren Sie
Bryan Denny
Die Routerkonfiguration ist wahrscheinlich die richtige Methode, und ich habe diese Simulation mithilfe von WANem eingerichtet . Ich hätte jedoch gerne einen portablen Weg, der nicht von der Netzwerkkonfiguration oder der Netzwerkschnittstelle abhängt. Grundsätzlich möchte ich einen Komponententest durchführen, bei dem ich Video-Streaming ausführe, den Paketverlust erhöhe und dasselbe Video erneut ausführe.
2.

Antworten:

2

Da Ihr Gerät gerootet ist, können Sie einen Proxy installieren. Ich habe TransparentProxy verwendet . Richten Sie dann einen Proxy auf einem anderen Computer in Ihrem lokalen Netzwerk ein. Zeigen Sie TransparentProxy auf diesen Proxy und stellen Sie Ihren Proxy auf Gas. Einige Proxys, die möglicherweise funktionieren, sind CharlesProxy oder Service Capture .

Wenn das nicht funktioniert, können Sie es von der Router-Ebene aus erreichen. Ein Computer mit BSD oder Linux kann als Router fungieren. Oder Sie können eine virtuelle Appliance oder eine bootfähige CD erwerben, um dies für Sie zu tun.

Jim McKeeth
quelle
2

Es ist möglich, die Netzwerklatenz und -geschwindigkeit mithilfe der Emulatorsteuerungsfunktionen der Standard-Android-Entwicklertools festzulegen.

Bei Verwendung von Eclipse: Wählen Sie Fenster \ Perspektive öffnen \ DDMS. Auf dem Bildschirm wird eine Registerkarte mit dem Namen "Emulatorsteuerung" angezeigt. Auf dieser Registerkarte finden Sie die Optionen Geschwindigkeit und Latenz. In den Telefonieeinstellungen ganz oben können Sie zwischen Geschwindigkeit und Latenz wählen.

Es gibt andere Möglichkeiten, diese Einstellungen zu ändern (einschließlich Skripten in Ihrem Emulator-Setup). Dies ist jedoch die einfachste Möglichkeit, auf die Einstellungen zuzugreifen.

Popel
quelle