如何在Android设备上模拟数据包丢失?


11

我想在扎根的Android设备上模拟数据包丢失,以了解不同级别如何影响视频流质量。我尝试过netem和iptables,但没有成功:

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

格式错误还是可以通过某种方式添加netem支持?

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.

Android中还有其他选择吗?


3
好问题!我的想法:作为替代方案,如果您的路由器具有服务质量或类似功能,也许可以连接到wifi路由器并在该位置限制连接?
布莱恩丹尼

有点相关,这里是如何在已扎根的Android设备上捕获数据包:vbsteven.be/blog/…–
Bryan Denny

路由器配置可能是正确的方法,我确实使用WANem进行了模拟。但是,我想拥有一种不依赖于网络配置或网络接口的可移植方式。基本上,我想在运行视频流的地方进行单元测试,增加丢包率,然后再次运行相同的视频。
2011年

Answers:


2

由于设备已植根,因此可以安装代理。我用过TransparentProxy。然后在本地网络上的另一台计算机上设置代理。将TransparentProxy指向该代理,然后将您的Proxy设置为节流。可能有用的一些代理包括CharlesProxyService Capture

如果这不起作用,那么您可以从路由器级别入手。运行BSD或Linux的计算机可以充当路由器。或者,您可以获取虚拟设备或可启动CD来为您执行此操作。


2

可以使用标准Android Developer工具的仿真器控制功能设置网络延迟和速度。

如果使用月食,请执行以下操作:选择Window \ Open Perspective \ DDMS在屏幕上,您将看到一个名为“仿真器控件”的选项卡。在此选项卡中,您将找到“速度”和“延迟”选项。最顶部的“电话设置”具有速度和延迟选择。

还有其他修改这些设置的方法(包括在仿真器设置中编写脚本),但这是访问设置的最简单方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.