移动弱网模拟调研
2019-12-06 本文已影响0人
Null_ice
在构建移动端性能测试工具的过程中,预期增加弱网模拟的功能,以解决应用在各种网络环境下的模拟测试,下面是针对该需求的调研情况。
iptables构建弱网模拟规则
基本原理
iptables是linux下的一个控制网络出入口规则的工具,android也集成了iptables,因此,可以利用iptables构建自定义的网络出入规则,变相达到控制设备进行弱网环境模拟的目的。
基本的使用方式是,在adb shell内,执行iptables命令,例如模拟丢包50%,就执行类似:
iptables -I INPUT -s x.x.x.x(IP地址) -m statistic --mode random --probability 0.5 -j DROP
类似这样的命令。
优点
底层执行,高效快速,开发门槛低。
缺点
需要root,需要启动adb server。
第三方代理工具弱网模拟
基本原理
第三方工具诸如fiddler、FaceBook ATC等,基本原理都是中间人代理,此类方式基本无需开发成本,只需要设定好client端和手机在统一网络下,然后按照工具说明设置即可。
优点
无需开发成本,操作简单。
缺点
需要一个端专门用于构建代理服务,且只能在wifi环境下模拟。
猥皮恩(和谐了)Service构建弱网模拟规则
基本原理
猥皮恩(和谐了)Service是android上用于构建自定义猥皮恩(和谐了)服务的api,启动该服务会创建一个类似于应用代理的服务,出入的包都会经过该服务的转发,因此,构建一个自定义的猥皮恩(和谐了)Service就可以实现对弱网环境的模拟。
优点
无需root
缺点
开发量大,在猥皮恩(和谐了)Service中,由于android的安全机制只能通过socket方式发送tcp/udp报文,因此所有通过tun收发的报文都需要解包和重新添加tcp/udp头,几乎等于重新实现一个tcp/udp栈。
猥皮恩(和谐了)Service的重要api存在兼容性问题,只能到android 5以上。