• Kirill Smelkov's avatar
    amari.kpi: New package with driver for Amarisoft LTE stack to retrieve... · 71087f67
    Kirill Smelkov authored
    amari.kpi: New package with driver for Amarisoft LTE stack to retrieve KPI-related measurements from logs
    
    amari.kpi provides LogMeasure that takes enb.xlog (TODO and enb.log) as
    input, and produces kpi.Measurements on output.
    
        enb.xlog     ─────────
        ─────────>  │   Log   │
                    │         │ ────> []kpi.Measurement
        ─────────>  │ Measure │
        enb.log      ─────────
    
    We read log data organizing periods around stats queries, and for now we
    build Measurement from stats' counters. To do so we take δ(stats_prev, stat)
    and process it mapping Amarisoft counters to 3GPP ones specified by
    kpi.Measurement.
    
    We emit measurement X after reading stats X+2 - i.e. we emit measurement
    for a period after reading data covering _next_ period. It is organized
    this way to account for init/fini correction:
    
                 fini adjust
                -------------
               '             '
         Sx    v     Sx+1    '   Sx+2
      ────|───────────|───────────|────
           Measurement Measurement
                X          X+1
    
    This approach has following limitations:
    
    - for most of the counters there is no direct mapping in between
      Amarisoft and 3GPP. For example we currently use s1_erab_setup_request for
      ERAB.EstabAddAtt.sum, but this mapping is not strictly correct and will
      break if corresponding S1 E-RAB SETUP REQUEST message contains multiple
      ERABs. The code has corresponding FIXME marks where such approximations
      are used.
    
    - it is not possible to implement init/fini correction precisely. From
      aggregated statistics we only get total amount for a fini value for a
      period - without knowing which part of it corresponds to init events
      from previous period, and which part to init events from current one.
      With that it is only possible to make a reasonable guess and try to
      preserve statistical properties, but not more. See m_initfini in the
      code for details.
    
    - it is possible to handle eNB with single cell only. This limitation
      comes from the fact that in Amarisoft LTE stack S1-related counters
      come as "globals" ones, while e.g. RRC-related counters are "per-cell".
      It is thus not possible to see how much S1 connection establishments
      are associated with one particular cell if there are several of them.
    
    TODO also parse enb.log to fix those issues.
    71087f67
kpi_test.py 16.6 KB