Como simulo a perda de pacotes em um dispositivo Android?

11

Gostaria de simular a perda de pacotes em um dispositivo Android com raiz para ver como os diferentes níveis afetam a qualidade da transmissão de vídeo. Eu tentei netem e iptables, sem sucesso:

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

O formato está errado ou é possível adicionar suporte ao netem de alguma forma?

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 alguma outra alternativa no Android?

fejd
fonte
3
Boa pergunta! Meu pensamento: como alternativa, talvez conecte-se a um roteador wifi e estrangule a conexão lá se o seu roteador faz qualidade de serviço ou similar?
Bryan Denny
Tipo de relacionado, aqui é como capturar pacotes em um dispositivo Android enraizada: vbsteven.be/blog/...
Bryan Denny
A configuração do roteador é provavelmente a maneira correta de fazê-lo, e eu tenho essa simulação no local usando o WANem . No entanto, eu gostaria de ter uma maneira portátil que não dependa da configuração de rede ou da interface de rede. Basicamente, quero fazer um teste de unidade em que corro o streaming de vídeo, aumente a perda de pacotes e o mesmo vídeo novamente.
fejd

Respostas:

2

Como seu dispositivo está enraizado, você pode instalar um Proxy. Eu usei o TransparentProxy . Em seguida, configure um proxy em outra máquina na sua rede local. Aponte TransparentProxy para esse proxy e defina seu Proxy como acelerador. Alguns proxies que podem funcionar incluem CharlesProxy ou Service Capture .

Se isso não funcionar, você poderá encontrá-lo no nível do roteador. Uma máquina executando BSD ou Linux pode funcionar como um roteador. Ou você pode obter um appliance virtual ou um CD inicializável para fazer isso por você.

Jim McKeeth
fonte
2

É possível definir a latência e velocidade da rede usando as funções de controle do emulador das ferramentas padrão do desenvolvedor Android.

Se estiver usando o eclipse: Selecione Janela \ Abrir perspectiva \ DDMS Na tela, você verá uma guia chamada "Controle do emulador". Nesta guia, você encontrará as opções de Velocidade e latência. As 'Configurações de telefonia' na parte superior têm seleções de velocidade e latência.

Existem outras maneiras de modificar essas configurações (incluindo a criação de scripts na configuração do emulador), mas essa é a maneira mais simples de acessar as configurações.

Booger
fonte