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 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.
The Mobile Probe requires a modern Android device with root access in order to allow tstat to capture live traffic on the network interface.
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.
To install the probe the following steps are required:
*If installation fails you need to enable 'Unknown sources' that is found in Settings->Security
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:
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.
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.
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
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