You are here

Mobile Probe (Android)

Description:

The Mobile Probe is a probe designed to detect video streaming QoE issues on mobile devices and perform root-cause analysis to expose the fault that caused the said issue. This is achieved by collecting multiple performance metrics from different layers, including network, hardware, link and OS, which are subsequently aggregated and sent to a remote server.

In more detail, the probe periodically launches a YouTube video from a list of videos with variable quality and length, while it logs network, hardware, link and OS measurements in the background. Measuring the performance of each layer allows not only the detection of QoE issues but also the identification of the root cause of the problem as it may originate from multiple points along the path (see figure below). When a number of measurements become available, they are aggregated and sent to a database on a remote server.

For the network measurements the application uses a tstat binary pre-compiled for Android devices which is packed inside the installation file. All of the remaining metrics are collected with functionality directly implemented in the application.

 The architecture

 
Usage Scenarios:

The Mobile Probe can be run on Android devices using either WiFi or cellular connectivity. Moreover, it is agnostic to video characteristics such as quality, codec, resolution, size and duration, while it is compatible with content delivered over HTTP or HTTPS.

 

Metrics and Capabilities:
  • Hardware: CPU usage, free memory, received/transmitted/dropped bytes from the network interface
  • Location: location information from GPS and WiFi
  • Wireless: Received Signal Strength, conncetivity state, wireless technology used, cell tower information
  • System: Playback state, re-buffering events, re-buffering duration, load time, HTTP requests, video decoder state
  • Network: statistics per tcp flow as provided by tstat
 
Probe execution environment:

The Mobile Probe requires a modern Android device with root access in order to allow tstat to capture live traffic on the network interface.

Prerequisites:

It is required to have the official YouTube application installed, which is available from Google Play Store. The separate installation of the pcap library is no longer required as it comes bundled with the installation file.

Installation:

To install the probe the following steps are required:

  • Download the application on the device
  • Install the application*
  • When the application starts it will ask for superuser permission which you need to grant
  • When prompted to complete action using Browser or YouTube, select YouTube and Always

*If installation fails you need to enable 'Unknown sources' that is found in Settings->Security


General Usage:

The probe's functionality is automated for the most part and little interaction with the user is required. When launched, the application will randomly select and launch a video from a predefined list and repeat the process when the playback is finished.

The user can select three options the application's menu:

  • Restart Monitoring
  • Stop Monitoring
  • Video Server URL
  • Exit

When clicking on the "Video Server URL" option of the menu, the user has to input the URL or the IP address of the Repository machine where the measurements are going to be sent. If this option remains empty, the default Repository used by TID is used. The function of the remaing options is self-explanatory.

Integration into an mPlane environment:

The data from the probes are collected in the remote server in a Mongo database as repository (the repository is part of D3.4). The proxy Interface is written in python and it sits on top of MongoDB. It exports the collections of mongoDB as capabilities using the Reference Implementation. Afterwards, the mPlane clients can pull the requested data.

 

New features:
  • Python based proxy compatible with the new Reference Implementation.
  • Separate installation of the pcap library is no longer required as it comes bundled with the application.
  • Received signal strength is now supported for 3G/LTE connections as well.
  • Byte counts on the network interface allows to calculate new features such as the interface utilization.
 
Repository Description:

The repository consists of a MongoDB database and a node.js interface. The Mobile Probe sends HTTP requests from the device to the server with the aggregated measurements. The node.js script is in turn responsible for receiving, parsing and storing the incoming data to the database. Each measurement is inserted with fields such as timestamp, the device's unique ID and IP address. In this way, the repository can handle concurrent reports from multiple devices. As can be seen in the provided sample below, a report contains the required performance metrics from the different layers that the probe is monitoring.

A detailed description of the data stored in the repository can be found here: https://www.ict-mplane.eu/public/mongo-db

 
mPlane proxy interface

The proxy can be found here: https://github.com/fp7mplane/components/blob/master/mongoDB-mobileProbe/

The proxy Interface is written in python and it sits on top of MongoDB. It exports the collections of mongoDB as capabilities using the Reference Implementation. Afterwards, the mPlane clients can pull the requested data. 

The mongoDB proxy can be used by any component that has data stored in a mongoDB database. For details on how to install and run the probe visit the github help file:

https://github.com/fp7mplane/components/blob/master/mongoDB-mobileProbe/README.md


Official version