KPI analyzers

This document provides a tutorial on how to use the MobileInsight built-in KPI analyzers.

KPI analyzer overview

Key performance indicators (KPI) are designed to reflect network performance. Operators use these KPIs evaluate the perceived quality of provided network services in several aspects, for example, accessibility, mobility, retainability and integrity. As an effort to standardize KPIs to evaluate UMTS/LTE networks, 3GPP standards defined essential KPI metrics with details on how to calculate them [TS32.450 and TS32.355]. Traditionally, these KPIs are calculated and aggregated at network side. Now Mobileinsight provides these KPIs at user side, offering user viewed KPIs.

Available KPIs

MobileInsight now provides KPI analyzers to analyze KPIs for both online monitor and offline collected logs. In order to manage KPI analyzers, we have a KPI manager class to provide a centralized view of all available KPIs, and provides query interfaces for the KPIs. Then we name each KPI and manage KPIs with the KPImanager. All provided KPIs are listed as below with the name to refer it. Here is a list of standardized KPIs.

  • Accessibility:

    • RRC connection establishment success rate (KPI.Accessibility.RRC_SR)

    • Attach success rate (KPI.Accessibility.ATTACH_SR)

    • Dedicated EPS bearer setup success rate (KPI.Accessibility.DEDICATED_BEARER_SR_QCIx_SR)

    • Service request success rate (KPI.Accessibility.SR_SR)

  • Mobility:

    • Tracking area update success rate (KPI.Mobility.TAU_SR)

    • Intra RAT handover success rate (KPI.Mobility.HO_SR)

  • Retainability:

    • Abnormal RRC connection release rate (KPI.Retainability.RRC_AB_REL)

  • Integrity:

    • IP throughput (KPI.Integrity.DL_TPUT)

In addition, Mobileinsight provides experimental KPIs that are indicators of mobility performance and data plane performances. These KPIs are not standardized but help to evaluate and understand network performance. We also developed latency breakdown analyzers for both uplink access network and downlink access network, which is released as standalone analyzers [1].

  • Mobility:

    • Handover disruption time (KPI.Mobility.HANDOVER_LATENCY)

    • Handover prediction (KPI.Mobility.HANDOVER_PREDICTION)

    • Handover head of line blocking (KPI.Mobility.HANDOVER_HOL)

  • Data plane (L1/L2):

    • Downlink PDCP packet loss (KPI.Wireless.UL_PDCP_LOSS)

    • Uplink PDCP packet loss (KPI.Wireless.UL_PDCP_LOSS)

    • Block Error Ratio (KPI.Wireless.BLER)

How to use KPI analyzers

We provide an example of online monitoring (included in mobileinsight-mobile/app/plugins/KPIManager/) and offline analysis (included in mobileinsight-core/examples/ In order to manger KPI, we need to declare a KPI manager. We can use list_kpis to list all suported KPIs. Then we call enable_kpi to enable a KPI by its name. Once invoked, this function will declare KPIAnalyzer that is responsible for this KPI, and start the monitoring functions. The following code shows how to declare KPIs.:

from mobile_insight.monitor import OfflineReplayer
from mobile_insight.analyzer.kpi import KPIManager

# Initialize a replayer and set input log
src = OfflineReplayer()
path = "./logs/attach_sample.mi2log"

# Initialize the KPI manager
kpi_manager = KPIManager()

# Test Accessibility KPIs

# Test Mobility KPIs

# Test Retainability KPIs

# Test Integrity KPIs


# Start analysis

When this code is executed, we can see the KPI of the analyzed logs.


We also offer per cell/user KPI query and customized KPI monitoring periodicity. When we enable a KPI the default mode is per user query, which means every KPI is calculated based on the user. If we only need to enable the query for a specific cell, we can specify the argument ‘cell’ with cell global ID, e.g.

kpi_manager.enable_kpi("KPI.Accessibility.RRC_SR", cell='22205186')

In order to set the periodicity, we need to add the periodicity argument. The periodicity argument needs to be a string ended with ‘s’, ‘m’, or ‘h’, indicating the number of seconds, minutes and hours. For example, we can set the periodicity of the KPI as ‘1h’:

kpi_manager.enable_kpi("KPI.Accessibility.RRC_SR", periodicity='1h')