You are here

EZ Repo


EZRepo is a repository Component, fully compatible with the mPlane software framework. This means that this repository is controlled and queried through the mPlane protocol.

The data processing/collapsing functionality provided by EZRepo makes is suitable for trouble/root causes analysys tasks in the first place.

The operation of the repository builds on the concept of periods. Periods are tuples of attributes describing the availability and access quality of some service (e.g network connectivity or availability of some piece of content) during a certain period.
Events are created based on some kind of qualification - i.e. "grading" - of some probe measurements, along various criteria.

As an example an OTT probe measuring a piece of content may experience "EXCELLENT" quality for a long time, then the quality may go down to "NOT_AVAILABLE", possibly going through a "POOR" period before that. (We recommend simple grading with only a few number of options (3..5).

Queries agains EZRepo will look for measurement records which matches some network criteria (e.g. measurement probe, measurement type, source IP, destination IP, network path, etc) and also matches some grade selection criteria (bandwidth or overall grade, grade level), etc. 

Results returned by EZRepo will provide the number of records which match the network selection criteria, and the number of records which match both the network and the grade selection criteria.

In the example figure given, the information collected by the GLIMPSE probes are queried from EZRepo. The specification defines a query from all UDP protocol based measurements done via GLIMPSE, where destination IP address is, and the source IP and network paths can be arbitrary. We are looking for all the records within this set, where the bandwith grade is in the range 3..5.
The result values will show us that 11 records has been found with the given selection criteria, from which 3 was graded in the given quality range.


EZRepo will collect measurement records from different probes (e.g. OTT probe, GLIMPSE, etc.), with different measurement scopes and capabilities.

EZRepo architecture

EZRepo has 3 main modules, the Data Store, the Query Engine and the Classifier

Probes send their data into the EZRepo with UDP protocol. (Other protocols like HTTP and SCP are under consideration/development).

The Classifier module will make the evaluation ("grading") of the input data, based on the threshold data stored in a JSON file ('Grading.json').
For practical reasons we use a 5 grades scale which complies to the common ('normal-warning-minor-major-critical') qualification and notification levels and conforms to the ITU standards as well. Thresholds can be published through the 'SetGrading' capability to the Supervisor.

The classified data, along with the original measurements are stored in the Data Store.

The Query Engine receives the specifications ('QueryByCriteria') and returns the matching results.


The Grading.json, which is downloadable from GitHub, contains the definitions for the different grades for the different measurement types. As en example, for GLIMPSE probe based ping measurements, the definitions are looking like that:

  "grading": [
      "gradeName": "overall",
      "appliesTo": {
            "recordType": "GLIMPSE",
            "recordSource": "*",
            "recordDest": "*",
            "recordContent": "ICMPECHO"
      "gradingRules": [
          "grade": "5",
          "if": [
              "metric": "",
              "rel": "<",
              "limit": "20"
              "metric": "",
              "rel": "<",
              "limit": "50"

Which resolves as: for the 'overall' grade we are searching ICMPECHO (ie. ping) measurement records collected with GLIMPSE, with any source, destination; and 'grade' will result value "5" if  the value of '' is smaller than 25 and the value of '' is smaller than 50.

Quick start

Download EZRepo package from github:

Copy to ~/protocol-ri/components
Change component.conf and the other config files accordingly if needed (certificates, authorization and roles settings, etc)
Register through the component module:

$ scripts/mpsup --config <supervisor\_config>
$ scripts/mpcom --config <component\_config>

Access it through the clientshell:

$ scripts/mpcli --config <client\_config>



Links to sources, binaries