Download Simulating network speed and latency for Android devices

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Piggybacking (Internet access) wikipedia , lookup

Lag wikipedia , lookup

List of wireless community networks by region wikipedia , lookup

Airborne Networking wikipedia , lookup

Network tap wikipedia , lookup

Cracking of wireless networks wikipedia , lookup

Zero-configuration networking wikipedia , lookup

Transcript
Simulating network speed and latency for Android devices
First, let us define speed and latency:
Speed: This is the perceived speed of a network connection we all experience. It is usually assumed
the result of bandwidth (such as a 2 Mbps connection vs 512 Kbps connection). Bandwidth is the
maximum data rate supported by a connection.
Latency: It is the time from the source sending a packet to the destination receiving it. A good
example would be a satellite internet connection. It has a high bandwidth and also a high latency. A
delay of 500ms is considered normal in satellite connections (<25ms latency is ideal for DSL
connections) Even though the network has high bandwidth, a webpage would take a few seconds to
start loading and quickly load completely after that. The delay here is due to latency and not
bandwidth.
Latency can be because of propagation delays such as satellite or transmission delays due to the
physical properties of the medium used for communication.
Having dealt with the concepts of speed and latency, we will now see how to test Android
applications on different networks and see how our applications to conditions similar to those of
actual use.
Android SDK ships with device emulator. The emulator can be found in the android-sdk /tools folder
of your SDK directory. A virtual device can be created that emulates the phone. Android Virtual
Device or AVD for short can be launched both from command line and from within Eclipse IDE.


Every AVD is assigned a separate port, starting from port number 5554
Any AVD runs behind a firewall and is shielded from the network on which the host system
runs. The IP address assigned to emulator’s gateway, primary DNS (as well secondary and
tertiary), and each instance of AVD, has an IP address of scheme 10.0.2.X
To manipulate network of the emulator, we need to set up redirection. In this tutorial, we will do
this via command line after connecting to an AVD’s console. There is another method which can be
used using Android Debug Bridge (ADB). Once you are comfortable with command line, you are
welcome to explore the method using ADB.
Following steps need to be taken:
1.
2.
3.
4.
5.
6.
Create AVD
Run AVD
Enable Telnet (for Windows 7 or 8)
Connect to AVD’s console
Set up redirection
Change network speed and latency
Step 1: Create an AVD from Eclipse or Device Manager
Step 2: Run AVD
You can run via right clicking project > Run As> Android Application
OR
You can ran via command line
<Your android SDK> tools> emulator @<AVD –NAME-HERE>
Don’t forget to ‘@’ symbol otherwise the emulator tool would give an error. You can also give
network command here at the time of starting the AVD or continue with the rest of the tutorial to
issue commands to an already started AVD.
For setting speed at start up:
emulator @deviceName -netspeed gsm
emulator @deviceName -netspeed 14.4 80
Step 3: Enable Telnet on Windows 7 or 8
Open ‘Control Panel’
Click on ‘Programs and Features’
Click on ‘Turn Windows features on or off’
Select ‘Telnet Client’ from the list that appears.
Step 4: Connect to AVD’s Console
After starting your AVD, you would see a port number before its name in followed by colon like this:
5554:MyDevice
You can also use ‘adb’ tool to find out the port number by using the following command:
adb devices
which will list the virtual devices along with their port numbers
List of devices attached
emulator-5554
device
You have the information you need to connect to the AVD.
Just type the following command now
telnet localhost <emulator’s port number5554>
For example, for the above emulator, we would type
telnet localhost 5554
Step 5: Set up redirection
This is a simple process. You need to:
Use redir command
Decide port number for incoming traffic (your machine)
Decide port number for passing traffic to (AVD)
The subcommand we will use is ‘add’
add <protocol>:<host-port>:<guest-port>
where <protocol> is the one of ‘tcp’ or ‘udp’
redir add tcp:5000:6000
Step 6: Change network speed and latency
Once you have connected to the console and also set up redirection, you can now set speed and
latency levels:
For speed:
network <speed>
You can select one of the available networks
Value
Description
Comments
Gsm
GSM/CSD
(Up: 14.4, down: 14.4)
hscsd
HSCSD
(Up: 14.4, down: 43.2)
Gprs
GPRS
(Up: 40.0, down: 80.0)
Edge
EDGE/EGPRS
(Up: 118.4, down: 236.8)
Umts
UMTS/3G
(Up: 128.0, down: 1920.0)
hsdpa
HSDPA
(Up: 348.0, down:
14400.0)
Full
no limit
(Up: 0.0, down: 0.0)
<num>
Set an exact rate used for
both upload and
download.
<up>:<down>
Set exact rates for upload
and download separately.
You can also specify the speed yourself:
network <speed> 14.4 80
For latency:
network delay <type>
Where type can be any of the following:
Value
Description
Comments
gprs
GPRS
(min 150, max 550)
edge
EDGE/EGPRS
(min 80, max 400)
umts
UMTS/3G
(min 35, max 200)
none
No latency
(min 0, max 0)
<num>
Emulate an exact latency
(milliseconds).
<min>:<max>
Emulate an specified
latency range (min, max
milliseconds).
Once you have set the speed and latency, you are would see a remarkable difference in the
emulator’s usage!
Happy testing everyone.
References:
http://developer.android.com/tools/devices/emulator.html
http://www.techrepublic.com/blog/software-engineer/simulate-a-cellular-network-over-wi-fi-usingandroids-emulator/