Mobilyzer: An open platform for controllable mobile network measurements

May 11, 2018

Measuring Internet performance as perceived by the end-user requires considering the device state and the resources used to do so.
Mobilyzer can conduct network measurements experiments in mobile devices, it provides:

  1. Tightly controlled access to devices resources.
  2. A global view of device resources and experiments.
  3. A library, to enable new class of measurements for mobile devices, Isolated measurements and incentives for researchers and developers.
The performance the user perceive depends on multiple factors, the phone hardware's ability, the 4g connection, the wireless connection, distance from cell tower...
Also some dynamic factors like when the user is moving, device power constraints, and so on.
The existing solutions to measure Internet performance from the user phones are lacking: scalability, consistency and coordination. Toward this goal, they designed Mobilyzer, a unified platform for conducting network measurements.

How it works

The mobilyzer architecture is quite simple, while there is a library to be integrated in developers app, there is a server that will deploy, receive and orchestrate measurements.
Mobilyzer also provides active measurement and coordination to avoid duplicate measurements, and most important is resource consumption management (so a task won't run unless its required resource or pre-conditions  are available).
Mobilyzer measurements aim at providing realtime feedback to the researcher, to the carrier and to the app developer.
They aim at proposing a standardised open source solution that can be widely used by researchers as a reference to compare results between experiments, which is much simpler when they are relying on the same tool to collect these data.


For example, to achieve a simple Ping measurement :
// in onCreate class of your Activity
this.clientKey = "myapp";
this.api = API.getAPI(this, clientKey);
MeasurementTask task = null;
params.put("target", "");
task = api.createTask(API.TaskType.PING
        , Calendar.getInstance().getTime(), null, 120, 1
        , MeasurementTask.USER_PRIORITY, 1, params);

And to retrieve the results through an broadcast receiver using an intent:

  public void onReceive(Context context, Intent intent) {
    if ( intent.getAction().equals(api.userResultAction)) {
      Parcelable[] parcels = intent.getParcelableArrayExtra(UpdateIntent.RESULT_PAYLOAD);
      MeasurementResult[] results = null;
      if ( parcels != null ) {
        results = new MeasurementResult[parcels.length];
        for ( int i = 0; i < results.length; i++ ) {
          results[i] = (MeasurementResult) parcels[i];

Incentive Schema

Mobilyzer follows ad-library incentive schema, so developers or researchers that uses this library will get as much data as their users participate (instead of click to pay, the plan is participate to get data).


Nikravesh, Ashkan, et al. "Mobilyzer: An open platform for controllable mobile network measurements.Proceedings of the 13th Annual International Conference on Mobile Systems, Applications, and Services. ACM, 2015.
Mobilyzer website.

You Might Also Like


recent posts

Like me on facebook

Total Pageviews