From 9b604aeefe0126a54dccf312cb24c2649f221a4a Mon Sep 17 00:00:00 2001 From: vlad shkapenyuk Date: Mon, 11 Nov 2019 15:29:31 -0500 Subject: [PATCH] Adding additional KPIs, adding required documentation Signed-off-by: vlad shkapenyuk Change-Id: If4cc7a0bd64a4509ab70908f1094bdee77c1f57d --- .gitignore | 2 + .readthedocs.yaml | 36 +++ docs/_static/logo.png | Bin 0 -> 2455 bytes docs/conf.py | 10 + docs/conf.yaml | 3 + docs/favicon.ico | Bin 0 -> 15086 bytes docs/index.rst | 16 + docs/readme.rst | 469 ++++++++++++++++++++++++++++++ docs/requirements-docs.txt | 5 + mc-core/Dockerfile | 2 +- mc-core/mc/cfg/packet_schema.txt | 62 +++- mc-core/mc/cfg/packet_schema.txt.fragment | 62 +++- mc-core/mc/local_datasource/rts_proto.c | 8 +- mc-core/mc/queries/addn_req_time.gsql | 8 +- mc-core/mc/queries/addreq_pdf.gsql | 8 +- mc-core/mc/queries/addreq_stats.gsql | 8 +- mc-core/mc/queries/admitted_erabs.gsql | 8 +- mc-core/mc/queries/dc_conn_stats.gsql | 40 ++- mc-core/mc/queries/debug.gsql | 16 +- mc-core/mc/queries/mod_req_failure.gsql | 19 ++ mc-core/mc/queries/output_spec.cfg | 5 + mc-core/mc/queries/reconfig_status.gsql | 36 ++- mc-core/mc/queries/release_req_time.gsql | 20 +- mc-core/mc/queries/rrcx_pdf_cell.gsql | 66 ++++- mc-core/mc/queries/rrcx_stats.gsql | 73 ++++- mc-core/mc/queries/runall | 5 + mc-core/mc/queries/throughput.gsql | 12 +- tox.ini | 48 +++ 28 files changed, 987 insertions(+), 60 deletions(-) create mode 100644 .gitignore create mode 100644 .readthedocs.yaml create mode 100644 docs/_static/logo.png create mode 100644 docs/conf.py create mode 100644 docs/conf.yaml create mode 100644 docs/favicon.ico create mode 100644 docs/index.rst create mode 100644 docs/readme.rst create mode 100644 docs/requirements-docs.txt create mode 100644 mc-core/mc/queries/mod_req_failure.gsql create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..71d7636 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.tox +docs/_build/* diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..959edc2 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,36 @@ +#================================================================================== +## Copyright (c) 2018-2019 AT&T Intellectual Property. +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +##================================================================================== + +--- +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Required +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py diff --git a/docs/_static/logo.png b/docs/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a016d420d07316c18c1fc771b0a4a6e0f218a1 GIT binary patch literal 2455 zcmd5-XEYlO7mi&jb`i6J*A79g+JeNcz4xfSiCQhCu?00+qtT#6wUoAMZ`Bc_RBbg| zB}S}Q!mIE9@5lH3`tCXRKIhJJ?>YC}n`UOB52WLw0{{R(1RQ35iNlv%c!lCp){`qr zTmo6RxxO}_;S0~tONG)$%UBBlXw11vbfW?QC;(%^si|pb zXlQ9^>FDU_>FI$$AOiyf6B83NGcyYd3o9!t8ynlTYuDJ>**Q2kI5{~%AP^T97dJOI z4-XG7FE1Y-pMZb>7z`E^6ciE?5*8K~5fKp;6%`j3mynQR#sL~QBhS@RZ~+_S6A24($dz}*3r>{!C-oNdT=-# zfj}4-7#JEF8XFs%nwpxKnccc|%iP@D!otGR($dPx%G%o6#>U3Z&d%Q6-oe4a(b3V# z$;sK-*~P`h)z#I_&CT82-NVDf)6>(-%gfu_+sDV}_U+q#et!P`{s932fq{WRK|#U6 z!66|bp`oE+VPWCn;gOM%QBhGyBr+x@CN?%UE-o%UK0YBKAu%!W?%lih?%hjDN=i;n zzJLFIN=iy+0(2>+4^~1%F4>>>gw9s+Q!Dl=H}+FU%$4twzjvo@p%01?(W{+-oe2Efj~Gs zJUl)=K0Q4p5{V=d>HPfs;^N|R!Tz5~J|Mv7vOn4oxLr5^z|i-H$%cZTd0rYhBXn&e zEP}lwqTRy003mL^K@pH3uZZjN5GX`}WJ0?M08kMTFfB`@^Y){&B4aPkA%1h?_ds(@ zsJ~u>fR13A!FX0s5L*7jrZy)AWaKF;ELNR~9yP{ZLCe>QwRR+0;m_I^!;jR%qwLR` z3VrNw8xOu5kUC?P@jhiA7ko@TA_0kdUXqQtvsbGw#H(Pcws&vKn zq5s)$9eQL1qdw}=IYGo0?ue$JFwl%fur1AL+A#bLf*NHx^zh{OgV$w`vDq!6D*N~2 zAMcX!!n{LUfzNY`evjCF+Ji&Fgz-b;jJh-?(^WljnwVjcIb*$FDAK-PA7_pw*tlI} z234KwSGhkM)1is&D5_J@?P%nwLnUQvi2Ct(phnyIla26z3LW}j+2Z@sH8U9gNw;# z9qVdTUJc>r_t^O{nLF$Zxy|R!7A@V&lv4mkA_mXIVZoKggY+Adxo{~Cg0ef?HZl`o zk3J)QIp1|EfAQuuqaYG0B%7CU-$sB#=*1P2UEB!-CsTRnY)Lwl0v+|mGObwHSNBs{ zLa^i7_Xq3F&R1bkq1B-%yFB~V+{Ia*ov=)iM|eIGw=|RQ60xG@P#((;C6U&V)Pb$4 zg+=7di6y$yU~j}7v~^djJwtg347axnkfs73sf;%QpoZfa(;0O7X^fd!A~COmp@!FG zQ{^TFyb)YzNJ6*tfnJ5AA!_G%0_IE$`(0Gx!R20vW&Y4{<*22R0QnWO^d_IrT zFGqs~4SKGhkha%cUz+UWo5bd5z=x$j1^Oisg5xw6JHnvBa1d3OXmvP0Dz2|Y@A{w4 z&Wrc)@zENgT_oNu!wfZyEjc>8tabC>a^f6HL=?S>G#ENe?hSg>%4Bbx=?O&EBOI3zWT@wPFS710S_@Ls_6nR3}_H2y5^= zoU3wrZ{yv^uTU{%6871){nqwLVtgfO0sGuoeKaU>u}-s}erad_RWOP|jrd(u!520n z6SGUPI0##iQnpLj*2;t;Amb?p(3q*c^V(e1;1ESB+JN;uYF5*^i**I^o9DlI(Mr??lsHiy> zSbyVWcBFsqp~mYAFM}Pl?dm8~8~OuAgWzC*n(`pD|2%dea%}XSE6R*@S4o{)B*yjK zu54m2XGOz2apjEuB$v_HZwc+OBKF5#vlRJI{iEjk@{u7WaT|F&{RP#x;=}nyHurTG zTO(~2W>x9U)F~$w$bjc330vUit_FSScNq+;b+NM?Se*!k6G0#DS{P57X7j~OWO-f7 td3nO+9$@`w~^E~HS=Nvd315SI6Sj<7m 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

4K$ruCE1 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 XY+}&}KC=mD;X?Iq*l*cA?B4$ePY*3q literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..80e0ce5 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,16 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +RIC Measurement Campaign (MC) xApp +================================== + + +.. toctree:: + :maxdepth: 1 + :caption: Documents: + + readme.rst + + +* :ref:`search` diff --git a/docs/readme.rst b/docs/readme.rst new file mode 100644 index 0000000..3b84a97 --- /dev/null +++ b/docs/readme.rst @@ -0,0 +1,469 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +RIC Measurement Campaign (MC) supported KPIs +============================================ + +name: throughput_ue +description: throughput experienced by UE over a measurement interval. "Active" throughput is throughput while actively downloading, "average" averages bytes transfered over the measurement interval +- ULLONG TS +- LLONG e_RAB_ID +- LLONG UE_ID +- V_STR GNB_ID +- FLOAT measurementInterval +- LLONG active_throughput +- LLONG average_throughput +- LLONG min_throughput +- LLONG max_throughput + + +name: addreq_success_stats +description: statistics on the time to successfully make a DC connection + +- V_STR GNB_ID +- ULLONG TS +- FLOAT measurementInterval +- FLOAT min_success_time +- FLOAT max_success_time +- FLOAT avg_success_time +- FLOAT pctl_05_success_time +- FLOAT pctl_95_success_time +- FLOAT stddev_success_time + + +name: addreq_pdf_nr_cell +description : histogram of neighboring cell RSRP, aggregated by cell id + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: addreq_pdf_nr_gnb +description : histogram of neighboring cell RSRP, aggregated by GNB, as computed from addition request events. + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: addreq_stats_nr_cell +description : statistics about neighboring cell RSRP aggregated by cell id + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: addreq_stats_nr_gnb +description : statistics about neighboring cell RSRP aggregated by GNB, as computed from addition request events. + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: erab_stats +description: number of admitted bearers and the distribution of their qCI + +- ULLONG TS +- FLOAT measurementInterval +- INT total_erabs +- UINT qCI_1 +- UINT qCI_2 +- UINT qCI_3 +- UINT qCI_4 +- UINT qCI_5 +- UINT qCI_6 +- UINT qCI_7 +- UINT qCI_8 +- UINT qCI_9 +- UINT qCI_other + + +name: mc_connected_cnt +description: Number of dual connected users + +- ULLONG TS +- FLOAT measurementInterval +- INT count_connected_ue + + +name: mc_connection_stats +description : statistics about the length of dual connected sessions + +- ULLONG TS +- FLOAT measurementInterval +- FLOAT min_connected_time +- FLOAT max_connected_time +- FLOAT avg_connected_time +- FLOAT pctl_05_connected_time +- FLOAT pctl_95_connected_time +- FLOAT stddev_connected_time + + +name: mc_connects_cnt +description: number of DC connection requests + +- ULLONG TS +- FLOAT measurementInterval +- INT count_ue_connects + + +name: mc_disconnects_cnt +description: number of DC connection releases + +- ULLONG TS +- FLOAT measurementInterval +- INT count_ue_disconnects + + +name: mc_unique_ue_cnt +description: Number of distinct UEs making a DC request or release + +- ULLONG TS +- FLOAT measurementInterval +- INT count_unique_ue + + +name: mod_req_failure_distribution +description: distribution of causes of a modification requet failure + +- ULLONG TS +- FLOAT measurementInterval +- INT cnt +- UINT count_protobuf_unspecified +- UINT count_t310_Expiry +- UINT count_randomAccessProblem +- UINT count_rlc_MaxNumRetx +- UINT count_synchReconfigFailure_SCG +- UINT count_scg_reconfigFailure +- UINT count_srb3_IntegrityFailure + + +name: reconfig_status_success_rate +description: fraction of DC connect requests which are successful + +- V_STR GNB_ID +- ULLONG TS +- FLOAT measurementInterval +- INT total_reconfiguration_requests +- UINT successful_reconfiguration_requests +- FLOAT success_rate + + +name: reconfig_status_reject_cause +description: distribution of causes for DC rejection + +- V_STR gnb_id +- ULLONG TB +- INT total_reconfig_reject +- UINT count_radio_network +- UINT count_transport +- UINT count_protocol +- UINT count_misc + + +name: mod_status_refuse_cause +description: distribution of causes for a sgnb modification refusal + +- V_STR GNB_ID +- ULLONG TS +- FLOAT measurementInterval +- INT total_reconfig_refuse +- UINT count_radio_network +- UINT count_transport +- UINT count_protocol +- UINT count_misc + + +name: release_cause +description: distribution of the causes of a DC release + +- V_STR GNB_ID +- ULLONG TS +- FLOAT measurementInterval +- INT total_reconfig_refuse +- UINT count_radio_network +- UINT count_transport +- UINT count_protocol +- UINT count_misc + + +name: release_req_success_stats +description: statistics on the time to delease a DC connection + +- V_STR GNB_ID +- ULLONG TS +- FLOAT measurementInterval +- FLOAT min_success_time +- FLOAT max_success_time +- FLOAT avg_success_time +- FLOAT pctl_05_success_time +- FLOAT pctl_95_success_time +- FLOAT stddev_success_time + + +name: rrcx_pdf_neigh_cell_csi +description: distribution of the beam csi rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_neigh_gnb_csi +description: distribution of the beam csi rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_neigh_cell_ssb +description: distribution of the beam ssb rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_neigh_gnb_ssb +description: distribution of the beam ssb rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_serv_cell +description: distribution of the ssb rsrp of serving cell aggregated by cell id, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_neighbor_cell +description: distribution of the ssb rsrp of neighbor cells aggregated by cell id, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_serv_gnb +description: distribution of the ssb rsrp of serving cell aggregated by gnb, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_pdf_neighbor_gnb +description: distribution of the ssb rsrp of serving cell aggregated by cell id, computed from rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- UINT rsrp_vbad +- UINT rsrp_bad +- UINT rsrp_medium +- UINT rsrp_good +- UINT rsrp_vgood + + +name: rrcx_stats_neigh_cell +description: statistics on ssb RSRP on the beams of nrighboring cells, aggregated by cell ID, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: rrcx_stats_neigh_gnb +description: statistics on ssb RSRP on the beams of nrighboring cells, aggregated by gNB, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: rrcx_stats_serv_cell +description: statistics on the ssb rsrp of the serving cell, aggregated by cell id, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: rrcx_stats_neighbor_cell +description: statistics on the ssb rsrp of the neighbor cells, aggregated by cell id, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- UINT CELL_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: rrcx_stats_serv_gnb +description: statistics on the ssb srp of the serving cell, aggregated by gNB, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: rrcx_stats_neighbor_gnb +description: statistics on the ssb rsrp of the neighbor cells, aggregated by gNB, computed using rrc transfer + +- ULLONG TS +- FLOAT measurementInterval +- V_STR GNB_ID +- INT cnt +- INT min_rsrp +- INT pctl_05_rsrp +- INT median_rsrp +- INT pctl_95_rsrp +- FLOAT stddev_rsrp +- INT max_rsrp + + +name: throughput_rollup +description: statistics on the per-UE throughput + +- ULLONG TS +- LLONG e_RAB_ID +- V_STR GNB_ID +- FLOAT measurementInterval +- INT count_ues +- UINT average_throughput_percentile_05 +- UINT average_throughput_percentile_50 +- FLOAT average_average_throughput +- UINT average_throughput_percentile_95 +- UINT active_throughput_percentile_05 +- UINT active_throughput_percentile_50 +- FLOAT average_active_throughput +- UINT active_throughput_percentile_95 + + +name: throughput_gnb +description: throughput experienced by a GNB over a measurement interval. "Active" throughput is throughput while actively downloading, "average" averages bytes transfered over the measurement interval + +- ULLONG TS +- LLONG e_RAB_ID +- V_STR GNB_ID +- FLOAT measurementInterval +- LLONG active_throughput +- LLONG average_throughput +- LLONG min_throughput +- LLONG max_throughput +- UINT extr_quant_hfta0_fcn_quant_udaf_hfta0 +- UINT extr_quant_hfta0_fcn_quant_udaf_hfta01 + + + diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt new file mode 100644 index 0000000..09a0c1c --- /dev/null +++ b/docs/requirements-docs.txt @@ -0,0 +1,5 @@ +sphinx +sphinx-rtd-theme +sphinxcontrib-httpdomain +recommonmark +lfdocs-conf diff --git a/mc-core/Dockerfile b/mc-core/Dockerfile index 8cf8916..0c5c14a 100644 --- a/mc-core/Dockerfile +++ b/mc-core/Dockerfile @@ -46,7 +46,7 @@ RUN make install RUN ldconfig RUN pip install protobuf WORKDIR ${STAGE_DIR} -RUN git clone https://gerrit.o-ran-sc.org/r/com/gs-lite +RUN git clone -b release/0.1.0 https://gerrit.o-ran-sc.org/r/com/gs-lite WORKDIR ${STAGE_DIR}/gs-lite COPY mc/cfg ${STAGE_DIR}/gs-lite/cfg COPY mc/local_datasource ${STAGE_DIR}/gs-lite/src/lib/gscprts/local_datasource diff --git a/mc-core/mc/cfg/packet_schema.txt b/mc-core/mc/cfg/packet_schema.txt index 36ddd71..f3cde05 100644 --- a/mc-core/mc/cfg/packet_schema.txt +++ b/mc-core/mc/cfg/packet_schema.txt @@ -246,7 +246,7 @@ PROTOCOL serv_nr_cell (base){ uint sinr get_serv_nr_cell__sinr; } -// Cell-wide CSI-RS measurement tuple and SSB measurement (from neighbor cells) +// Cell-wide SSB measurement (from neighbor cells) // Defined in rrc_metrics.json on rrctransfer.proto // schemaId = 4, interface RRCXFER PROTOCOL nr_neighbor (base){ @@ -857,6 +857,8 @@ PROTOCOL sgnb_mod_req (base){ llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req__id_MeNB_UE_X2AP_ID (required); // default=-1 llong cause_transport get_sgnb_mod_req__cause_transport (required); +// default=-1 + llong failureType get_sgnb_mod_req__failureType (required); // default=-1 llong cause_radio_network get_sgnb_mod_req__cause_radio_network (required); // UE_ID assigned by gNB for the UE over the X2. Is mandatory @@ -865,6 +867,64 @@ PROTOCOL sgnb_mod_req (base){ llong cause_misc get_sgnb_mod_req__cause_misc (required); } +// ??? +// Defined in sgnb_mod_req_ack.json on sgnb_modification_request_acknowledge.proto +// schemaId = 1701, interface SGNBMODREQACK +PROTOCOL sgnb_mod_req_ack (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_req_ack__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_req_ack__gnb_id (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_MeNB_UE_X2AP_ID (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_SgNB_UE_X2AP_ID (required); +} + +// ??? +// Defined in sgnb_mod_req_reject.json on sgnb_modification_request_reject.proto +// schemaId = 1801, interface SGNBMODREQREJECT +PROTOCOL sgnb_mod_req_reject (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_req_reject__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_req_reject__gnb_id (required); +// default=-1 + llong cause_protocol get_sgnb_mod_req_reject__cause_protocol (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_MeNB_UE_X2AP_ID (required); +// default=-1 + llong cause_transport get_sgnb_mod_req_reject__cause_transport (required); +// default=-1 + llong cause_radio_network get_sgnb_mod_req_reject__cause_radio_network (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_SgNB_UE_X2AP_ID (required); +// default=-1 + llong cause_misc get_sgnb_mod_req_reject__cause_misc (required); +} + +// ??? +// Defined in sgnb_mod_rqd.json on sgnb_modification_required.proto +// schemaId = 1901, interface SGNBMODREQUIRED +PROTOCOL sgnb_mod_required (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_required__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_required__gnb_id (required); +// default=-1 + llong cause_protocol get_sgnb_mod_required__cause_protocol (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_required__id_MeNB_UE_X2AP_ID (required); +// default=-1 + llong cause_transport get_sgnb_mod_required__cause_transport (required); +// default=-1 + llong cause_radio_network get_sgnb_mod_required__cause_radio_network (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_required__id_SgNB_UE_X2AP_ID (required); +// default=-1 + llong cause_misc get_sgnb_mod_required__cause_misc (required); +} + // ??? // Defined in sgnb_modification_refuse.json on sgnb_modification_refuse.proto // schemaId = 1401, interface SGNBMODREFUSE diff --git a/mc-core/mc/cfg/packet_schema.txt.fragment b/mc-core/mc/cfg/packet_schema.txt.fragment index 21eb397..c89f40a 100644 --- a/mc-core/mc/cfg/packet_schema.txt.fragment +++ b/mc-core/mc/cfg/packet_schema.txt.fragment @@ -240,7 +240,7 @@ PROTOCOL serv_nr_cell (base){ uint sinr get_serv_nr_cell__sinr; } -// Cell-wide CSI-RS measurement tuple and SSB measurement (from neighbor cells) +// Cell-wide SSB measurement (from neighbor cells) // Defined in rrc_metrics.json on rrctransfer.proto // schemaId = 4, interface RRCXFER PROTOCOL nr_neighbor (base){ @@ -851,6 +851,8 @@ PROTOCOL sgnb_mod_req (base){ llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req__id_MeNB_UE_X2AP_ID (required); // default=-1 llong cause_transport get_sgnb_mod_req__cause_transport (required); +// default=-1 + llong failureType get_sgnb_mod_req__failureType (required); // default=-1 llong cause_radio_network get_sgnb_mod_req__cause_radio_network (required); // UE_ID assigned by gNB for the UE over the X2. Is mandatory @@ -859,6 +861,64 @@ PROTOCOL sgnb_mod_req (base){ llong cause_misc get_sgnb_mod_req__cause_misc (required); } +// ??? +// Defined in sgnb_mod_req_ack.json on sgnb_modification_request_acknowledge.proto +// schemaId = 1701, interface SGNBMODREQACK +PROTOCOL sgnb_mod_req_ack (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_req_ack__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_req_ack__gnb_id (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_MeNB_UE_X2AP_ID (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_SgNB_UE_X2AP_ID (required); +} + +// ??? +// Defined in sgnb_mod_req_reject.json on sgnb_modification_request_reject.proto +// schemaId = 1801, interface SGNBMODREQREJECT +PROTOCOL sgnb_mod_req_reject (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_req_reject__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_req_reject__gnb_id (required); +// default=-1 + llong cause_protocol get_sgnb_mod_req_reject__cause_protocol (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_MeNB_UE_X2AP_ID (required); +// default=-1 + llong cause_transport get_sgnb_mod_req_reject__cause_transport (required); +// default=-1 + llong cause_radio_network get_sgnb_mod_req_reject__cause_radio_network (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_SgNB_UE_X2AP_ID (required); +// default=-1 + llong cause_misc get_sgnb_mod_req_reject__cause_misc (required); +} + +// ??? +// Defined in sgnb_mod_rqd.json on sgnb_modification_required.proto +// schemaId = 1901, interface SGNBMODREQUIRED +PROTOCOL sgnb_mod_required (base){ +// timestamp in milliseconds + ullong timestamp_ms get_sgnb_mod_required__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_sgnb_mod_required__gnb_id (required); +// default=-1 + llong cause_protocol get_sgnb_mod_required__cause_protocol (required); +// UE_ID assigned by eNB for the UE over an X2. Is mandatory + llong id_MeNB_UE_X2AP_ID get_sgnb_mod_required__id_MeNB_UE_X2AP_ID (required); +// default=-1 + llong cause_transport get_sgnb_mod_required__cause_transport (required); +// default=-1 + llong cause_radio_network get_sgnb_mod_required__cause_radio_network (required); +// UE_ID assigned by gNB for the UE over the X2. Is mandatory + llong id_SgNB_UE_X2AP_ID get_sgnb_mod_required__id_SgNB_UE_X2AP_ID (required); +// default=-1 + llong cause_misc get_sgnb_mod_required__cause_misc (required); +} + // ??? // Defined in sgnb_modification_refuse.json on sgnb_modification_refuse.proto // schemaId = 1401, interface SGNBMODREFUSE diff --git a/mc-core/mc/local_datasource/rts_proto.c b/mc-core/mc/local_datasource/rts_proto.c index e39381a..7f763b7 100644 --- a/mc-core/mc/local_datasource/rts_proto.c +++ b/mc-core/mc/local_datasource/rts_proto.c @@ -875,8 +875,8 @@ gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ if(node_0_10->measresult){ node_0_12 = node_0_11->cellresults; if(node_0_11->cellresults){ - node_0_13 = node_0_12->resultscsi_rs_cell; - if(node_0_12->resultscsi_rs_cell){ + node_0_13 = node_0_12->resultsssb_cell; + if(node_0_12->resultsssb_cell){ if(node_0_13->rsrq){ serv_nr_cell->rsrq = node_0_13->rsrq->value; serv_nr_cell->rsrq_exists = 1; @@ -951,8 +951,8 @@ gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ if(node_1_9->measresult){ node_1_11 = node_1_10->cellresults; if(node_1_10->cellresults){ - node_1_12 = node_1_11->resultscsi_rs_cell; - if(node_1_11->resultscsi_rs_cell){ + node_1_12 = node_1_11->resultsssb_cell; + if(node_1_11->resultsssb_cell){ if(node_1_12->rsrq){ nr_neighbor->rsrq = node_1_12->rsrq->value; nr_neighbor->rsrq_exists = 1; diff --git a/mc-core/mc/queries/addn_req_time.gsql b/mc-core/mc/queries/addn_req_time.gsql index a36420d..764642d 100644 --- a/mc-core/mc/queries/addn_req_time.gsql +++ b/mc-core/mc/queries/addn_req_time.gsql @@ -29,7 +29,9 @@ from add_req_start p1, add_req_success p2 ; -DEFINE{query_name 'addreq_success_time';} +DEFINE{query_name 'addreq_success_time'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select eUE_ID, gnb_id, TB, UINT(max(end_time)-max(start_time)) as success_time @@ -38,7 +40,9 @@ group by eUE_ID, gnb_id, timestamp / $window as TB having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time) ; -DEFINE{query_name 'addreq_success_stats';} +DEFINE{query_name 'addreq_success_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, diff --git a/mc-core/mc/queries/addreq_pdf.gsql b/mc-core/mc/queries/addreq_pdf.gsql index b976656..a06d137 100644 --- a/mc-core/mc/queries/addreq_pdf.gsql +++ b/mc-core/mc/queries/addreq_pdf.gsql @@ -1,4 +1,6 @@ -DEFINE{ query_name 'addreq_pdf_nr_cell'; } +DEFINE{ query_name 'addreq_pdf_nr_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -16,7 +18,9 @@ where schemaId = 410 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'addreq_pdf_nr_gnb'; } +DEFINE{ query_name 'addreq_pdf_nr_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. diff --git a/mc-core/mc/queries/addreq_stats.gsql b/mc-core/mc/queries/addreq_stats.gsql index 966cdb3..84bfd8e 100644 --- a/mc-core/mc/queries/addreq_stats.gsql +++ b/mc-core/mc/queries/addreq_stats.gsql @@ -1,4 +1,6 @@ -DEFINE{ query_name 'addreq_stats_nr_cell'; } +DEFINE{ query_name 'addreq_stats_nr_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 @@ -20,7 +22,9 @@ where schemaId = 410 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'addreq_stats_nr_gnb'; } +DEFINE{ query_name 'addreq_stats_nr_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 diff --git a/mc-core/mc/queries/admitted_erabs.gsql b/mc-core/mc/queries/admitted_erabs.gsql index 4ce30f2..1e15232 100644 --- a/mc-core/mc/queries/admitted_erabs.gsql +++ b/mc-core/mc/queries/admitted_erabs.gsql @@ -3,7 +3,9 @@ // Compromise between ensuring that most add_req_ack-recon_complete pairs // are caught while avoiding duplicates due to short sessions // NB: $window should be a multiple of 10. -DEFINE{query_name 'erab_stats_join';} +DEFINE{query_name 'erab_stats_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select e.timestamp_ms/10000 as TB10, e.id_SgNB_UE_X2AP_ID, e.e_RAB_ID, e.qCI INNER_JOIN from SGNB_ADDITION_REQ_ACK.eRABs_acked_for_admit_for_ue e, @@ -13,7 +15,9 @@ and r.id_SgNB_UE_X2AP_ID = e.id_SgNB_UE_X2AP_ID and r.timestamp_ms/10000 = e.timestamp_ms/10000 ; -DEFINE{query_name 'erab_stats';} +DEFINE{query_name 'erab_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select (TB*$window)/1000 as TS, $window/1000.0 as measurementInterval, diff --git a/mc-core/mc/queries/dc_conn_stats.gsql b/mc-core/mc/queries/dc_conn_stats.gsql index 3090fb5..1551869 100644 --- a/mc-core/mc/queries/dc_conn_stats.gsql +++ b/mc-core/mc/queries/dc_conn_stats.gsql @@ -1,4 +1,6 @@ -DEFINE{query_name 'dc_connect';} +DEFINE{query_name 'dc_connect'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select timestamp_ms as timestamp, UINT(id_MeNB_UE_X2AP_ID) as eUE_ID, @@ -8,7 +10,9 @@ from RECONCOMPLETE.reconfig_success where schemaId=101 ; -DEFINE{query_name 'dc_terminate';} +DEFINE{query_name 'dc_terminate'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select timestamp_ms as timestamp, UINT(id_Old_eNB_UE_X2AP_ID) as eUE_ID, @@ -25,7 +29,9 @@ from dc_connect p1, dc_terminate p2 ; -DEFINE{ query_name 'mc_connected_ues'; } +DEFINE{ query_name 'mc_connected_ues'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT TB, UE_ID, ((TB+1)*$window-LAST(timestamp))/1000.0 as connected_time @@ -35,7 +41,9 @@ HAVING LAST(event_type) = 1 CLOSING_WHEN LAST(event_type) = 0 ; -DEFINE{ query_name 'mc_connected_cnt'; } +DEFINE{ query_name 'mc_connected_cnt'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, // standard_name @@ -44,7 +52,9 @@ FROM mc_connected_ues GROUP BY TB ; -DEFINE{ query_name 'mc_disconnected_ues'; } +DEFINE{ query_name 'mc_disconnected_ues'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT TB_1000, UE_ID, UINT((LAST(timestamp) - FIRST(timestamp))) as connected_time @@ -55,7 +65,9 @@ CLOSING_WHEN LAST(event_type) = 0 ; -DEFINE{ query_name 'mc_connection_stats'; } +DEFINE{ query_name 'mc_connection_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, // standard_name @@ -72,7 +84,9 @@ GROUP BY (TB_1000 * 1000) / $window as TB ; -DEFINE{ query_name 'mc_connects_cnt'; } +DEFINE{ query_name 'mc_connects_cnt'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, // standard_name @@ -82,7 +96,9 @@ WHERE event_type = 1 GROUP BY timestamp / $window as TB ; -DEFINE{ query_name 'mc_disconnects_cnt'; } +DEFINE{ query_name 'mc_disconnects_cnt'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, // standard_name @@ -92,14 +108,18 @@ WHERE event_type = 0 GROUP BY timestamp / $window as TB ; -DEFINE{ query_name 'mc_unique_ues'; } +DEFINE{ query_name 'mc_unique_ues'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT TB, UE_ID FROM dc_events GROUP BY timestamp / $window as TB, gUE_ID as UE_ID ; -DEFINE{ query_name 'mc_unique_ue_cnt'; } +DEFINE{ query_name 'mc_unique_ue_cnt'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, // standard_name diff --git a/mc-core/mc/queries/debug.gsql b/mc-core/mc/queries/debug.gsql index 5d92fb1..69661b6 100644 --- a/mc-core/mc/queries/debug.gsql +++ b/mc-core/mc/queries/debug.gsql @@ -1,4 +1,6 @@ -DEFINE{ query_name 'reconfig_all_debug'; } +DEFINE{ query_name 'reconfig_all_debug'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select 'reconfig_all_debug' as name, count(*) as cnt, ($window*(TB+1))/1000 as TS, @@ -8,7 +10,9 @@ where schemaId=103 group by timestamp_ms / $window as TB ; -DEFINE{ query_name 'reconfig_success_debug'; } +DEFINE{ query_name 'reconfig_success_debug'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select 'reconfig_success_debug' as name, count(*) as cnt, ($window*(TB+1))/1000 as TS, @@ -18,7 +22,9 @@ where schemaId=101 group by timestamp_ms / $window as TB ; -DEFINE{ query_name 'reconfig_reject_debug'; } +DEFINE{ query_name 'reconfig_reject_debug'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select 'reconfig_reject_debug' as name, count(*) as cnt, ($window*(TB+1))/1000 as TS, @@ -28,7 +34,9 @@ where schemaId=102 group by timestamp_ms / $window as TB ; -DEFINE{ query_name 'dc_release_debug'; } +DEFINE{ query_name 'dc_release_debug'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select 'dc_release_debug' as name, count(*) as cnt, ($window*(TB+1))/1000 as TS, diff --git a/mc-core/mc/queries/mod_req_failure.gsql b/mc-core/mc/queries/mod_req_failure.gsql new file mode 100644 index 0000000..96a274e --- /dev/null +++ b/mc-core/mc/queries/mod_req_failure.gsql @@ -0,0 +1,19 @@ +DEFINE{ query_name 'mod_req_failure_distribution'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint;} + +select ($window*(tb+1))/1000 as TS, + $window/1000.0 as measurementInterval, + count(*) as cnt, + sum(EQ(UINT(failureType),0)) as count_protobuf_unspecified, + sum(EQ(UINT(failureType),1)) as count_t310_Expiry, + sum(EQ(UINT(failureType),2)) as count_randomAccessProblem, + sum(EQ(UINT(failureType),3)) as count_rlc_MaxNumRetx, + sum(EQ(UINT(failureType),4)) as count_synchReconfigFailure_SCG, + sum(EQ(UINT(failureType),5)) as count_scg_reconfigFailure, + sum(EQ(UINT(failureType),6)) as count_srb3_IntegrityFailure +From SGNBMODREQ.sgnb_mod_req +where schemaId=1201 +group by timestamp_ms/$window as tb + diff --git a/mc-core/mc/queries/output_spec.cfg b/mc-core/mc/queries/output_spec.cfg index 6a2e303..b28ade5 100644 --- a/mc-core/mc/queries/output_spec.cfg +++ b/mc-core/mc/queries/output_spec.cfg @@ -8,10 +8,14 @@ rrcx_pdf_neigh_cell_ssb,stream,,,,, rrcx_pdf_neigh_gnb_ssb,stream,,,,, rrcx_pdf_serv_cell,stream,,,,, rrcx_pdf_serv_gnb,stream,,,,, +rrcx_pdf_neighbor_cell,stream,,,,, +rrcx_pdf_neighbor_gnb,stream,,,,, rrcx_stats_neigh_cell,stream,,,,, rrcx_stats_neigh_gnb,stream,,,,, rrcx_stats_serv_cell,stream,,,,, rrcx_stats_serv_gnb,stream,,,,, +rrcx_stats_neighbor_cell,stream,,,,, +rrcx_stats_neighbor_gnb,stream,,,,, mc_connected_cnt,stream,,,,, mc_connection_stats,stream,,,,, mc_connects_cnt,stream,,,,, @@ -31,3 +35,4 @@ dc_release_debug,stream,,,,, throughput_ue,stream,,,,, throughput_rollup,stream,,,,, throughput_gnb,stream,,,,, +mod_req_failure_distribution,stream,,,,, diff --git a/mc-core/mc/queries/reconfig_status.gsql b/mc-core/mc/queries/reconfig_status.gsql index 99cfd78..d7ff5c1 100644 --- a/mc-core/mc/queries/reconfig_status.gsql +++ b/mc-core/mc/queries/reconfig_status.gsql @@ -29,7 +29,9 @@ from reconfig_status_start p1, reconfig_status_success p2 ; -DEFINE{query_name 'reconfig_status_merge';} +DEFINE{query_name 'reconfig_status_merge'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select eUE_ID, gnb_id, TB, max(start_time) as max_start_time, @@ -38,7 +40,9 @@ from reconfig_status_events group by eUE_ID, gnb_id, timestamp / $window as TB ; -DEFINE{query_name 'reconfig_status_success_rate';} +DEFINE{query_name 'reconfig_status_success_rate'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, @@ -52,7 +56,9 @@ group by gnb_id, TB // ---------------------------------------------- // Merge in reconfig_reject causes and aggregate with this. -DEFINE{query_name 'reconfig_status_reject_cause';} +DEFINE{query_name 'reconfig_status_reject_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id, TB, count(*) as total_reconfig_reject, @@ -65,7 +71,9 @@ where schemaId=701 group by gnb_id, timestamp_ms / $window as TB ; -DEFINE{query_name 'reconfig_complete_reject_cause';} +DEFINE{query_name 'reconfig_complete_reject_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id, TB, count(*) as total_reconfig_reject, @@ -84,7 +92,9 @@ merge p1.TB : p2.TB from reconfig_status_reject_cause p1, reconfig_complete_reject_cause p2 ; -DEFINE{query_name 'reconfig_reject_cause';} +DEFINE{query_name 'reconfig_reject_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, @@ -99,7 +109,9 @@ group by gnb_id, TB // ---------------------------------------------- -DEFINE{query_name 'mod_status_refuse_cause';} +DEFINE{query_name 'mod_status_refuse_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, @@ -114,7 +126,9 @@ group by gnb_id, timestamp_ms / $window as TB ; // ---------------------------------------------- -DEFINE{query_name 'release_rqd_cause';} +DEFINE{query_name 'release_rqd_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id, TB, count(*) as total_reconfig_refuse, @@ -127,7 +141,9 @@ where schemaId=1001 group by gnb_id, timestamp_ms / $window as TB ; -DEFINE{query_name 'release_request_cause';} +DEFINE{query_name 'release_request_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id, TB, count(*) as total_reconfig_refuse, @@ -146,7 +162,9 @@ merge p1.TB : p2.TB from release_rqd_cause p1, release_request_cause p2 ; -DEFINE{query_name 'release_cause';} +DEFINE{query_name 'release_cause'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, diff --git a/mc-core/mc/queries/release_req_time.gsql b/mc-core/mc/queries/release_req_time.gsql index 91e4b53..9b4c64d 100644 --- a/mc-core/mc/queries/release_req_time.gsql +++ b/mc-core/mc/queries/release_req_time.gsql @@ -1,4 +1,6 @@ -DEFINE{query_name 'release_req_start';} +DEFINE{query_name 'release_req_start'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select timestamp_ms as timestamp, non_temporal(timestamp_ms) as start_time, @@ -11,7 +13,9 @@ from RELREQ.release_req where schemaId=801 ; -DEFINE{query_name 'release_req_success';} +DEFINE{query_name 'release_req_success'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select timestamp_ms as timestamp, 0ULL as start_time, @@ -24,14 +28,18 @@ from CONRELEASE.dc_release where schemaId=201 ; -DEFINE{query_name 'release_req_events';} +DEFINE{query_name 'release_req_events'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } merge p1.timestamp : p2.timestamp from release_req_start p1, release_req_success p2 ; -DEFINE{query_name 'release_req_success_time';} +DEFINE{query_name 'release_req_success_time'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select gUE_ID, gnb_id, TB, UINT(max(end_time)-max(start_time)) as success_time @@ -40,7 +48,9 @@ group by gUE_ID, gnb_id, timestamp / $window as TB having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time) ; -DEFINE{query_name 'release_req_success_stats';} +DEFINE{query_name 'release_req_success_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, diff --git a/mc-core/mc/queries/rrcx_pdf_cell.gsql b/mc-core/mc/queries/rrcx_pdf_cell.gsql index 68171f7..4ecb20b 100644 --- a/mc-core/mc/queries/rrcx_pdf_cell.gsql +++ b/mc-core/mc/queries/rrcx_pdf_cell.gsql @@ -1,5 +1,7 @@ -DEFINE{ query_name 'rrcx_pdf_neigh_cell_csi'; } +DEFINE{ query_name 'rrcx_pdf_neigh_cell_csi'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -17,7 +19,9 @@ where schemaId = 5 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'rrcx_pdf_neigh_gnb_csi'; } +DEFINE{ query_name 'rrcx_pdf_neigh_gnb_csi'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -36,7 +40,9 @@ group by timestamp_ms/$window as tb, gnb_id ; -DEFINE{ query_name 'rrcx_pdf_neigh_cell_ssb'; } +DEFINE{ query_name 'rrcx_pdf_neigh_cell_ssb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -54,7 +60,9 @@ where schemaId = 5 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'rrcx_pdf_neigh_gnb_ssb'; } +DEFINE{ query_name 'rrcx_pdf_neigh_gnb_ssb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -74,7 +82,9 @@ group by timestamp_ms/$window as tb, gnb_id -DEFINE{ query_name 'rrcx_pdf_serv_cell'; } +DEFINE{ query_name 'rrcx_pdf_serv_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -92,7 +102,30 @@ where schemaId = 1 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'rrcx_pdf_serv_gnb'; } +DEFINE{ query_name 'rrcx_pdf_neighbor_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint;} +// rsrp, rsrq, sinr ranges are 0 .. 127 +// for now divide into 5 bins. + +select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, + physCellId as CELL_ID, + count(*) as cnt, + sum(GEQ(rsrp, 0)*LEQ(rsrp,21)) as rsrp_vbad, + sum(GEQ(rsrp,22)*LEQ(rsrp,36)) as rsrp_bad, + sum(GEQ(rsrp,37)*LEQ(rsrp,51)) as rsrp_medium, + sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good, + sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood +from RRCXFER.nr_neighbor +where schemaId = 4 +group by timestamp_ms/$window as tb, physCellId +; + + +DEFINE{ query_name 'rrcx_pdf_serv_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // for now divide into 5 bins. @@ -108,4 +141,25 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, from RRCXFER.serv_nr_cell where schemaId = 1 group by timestamp_ms/$window as tb, gnb_id +; + +DEFINE{ query_name 'rrcx_pdf_neighbor_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint;} +// rsrp, rsrq, sinr ranges are 0 .. 127 +// for now divide into 5 bins. + +select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, + gnb_id as GNB_ID, + count(*) as cnt, + sum(GEQ(rsrp, 0)*LEQ(rsrp,21)) as rsrp_vbad, + sum(GEQ(rsrp,22)*LEQ(rsrp,36)) as rsrp_bad, + sum(GEQ(rsrp,37)*LEQ(rsrp,51)) as rsrp_medium, + sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good, + sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood +from RRCXFER.nr_neighbor +where schemaId = 4 +group by timestamp_ms/$window as tb, gnb_id + diff --git a/mc-core/mc/queries/rrcx_stats.gsql b/mc-core/mc/queries/rrcx_stats.gsql index 5629680..edb7215 100644 --- a/mc-core/mc/queries/rrcx_stats.gsql +++ b/mc-core/mc/queries/rrcx_stats.gsql @@ -1,4 +1,6 @@ -DEFINE{ query_name 'rrcx_stats_neigh_cell'; } +DEFINE{ query_name 'rrcx_stats_neigh_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 @@ -15,12 +17,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*) ) / count(*) as stddev_rsrp, INT(max(rsrp))-INT(157) as max_rsrp -from RRCXFER.neighbor_beam_csi -where schemaId = 5 and rsrp<128 +from RRCXFER.neighbor_beam_ssb +where schemaId = 6 and rsrp<128 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'rrcx_stats_neigh_gnb'; } +DEFINE{ query_name 'rrcx_stats_neigh_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 @@ -37,13 +41,15 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*) ) / count(*) as stddev_rsrp, INT(max(rsrp))-INT(157) as max_rsrp -from RRCXFER.neighbor_beam_csi -where schemaId = 5 and rsrp<128 +from RRCXFER.neighbor_beam_ssb +where schemaId = 6 and rsrp<128 group by timestamp_ms/$window as tb, gnb_id ; -DEFINE{ query_name 'rrcx_stats_serv_cell'; } +DEFINE{ query_name 'rrcx_stats_serv_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 @@ -65,7 +71,34 @@ where schemaId = 1 and rsrp<128 group by timestamp_ms/$window as tb, physCellId ; -DEFINE{ query_name 'rrcx_stats_serv_gnb'; } +DEFINE{ query_name 'rrcx_stats_neighbor_cell'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint;} +// rsrp, rsrq, sinr ranges are 0 .. 127 +// to convert rsrp to dbm, subtract 157 + +select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, + physCellId as CELL_ID, + count(*) as cnt, + INT(min(rsrp))-INT(157) as min_rsrp, + INT(quantile_of(rsrp, .05)) - INT(157) as pctl_05_rsrp, + INT(median_of(rsrp)) - INT(157) as median_rsrp, + INT(quantile_of(rsrp, .95)) - INT(157) as pctl_95_rsrp, + sqrt( + sum( (FLOAT(rsrp)-157)*(FLOAT(rsrp)-157)) - + sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*) + ) / count(*) as stddev_rsrp, + INT(max(rsrp))-INT(157) as max_rsrp +from RRCXFER.nr_neighbor +where schemaId = 4 and rsrp<128 +group by timestamp_ms/$window as tb, physCellId +; + + +DEFINE{ query_name 'rrcx_stats_serv_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint;} // rsrp, rsrq, sinr ranges are 0 .. 127 // to convert rsrp to dbm, subtract 157 @@ -85,4 +118,28 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, from RRCXFER.serv_nr_cell where schemaId = 1 and rsrp<128 group by timestamp_ms/$window as tb, gnb_id +; + +DEFINE{ query_name 'rrcx_stats_neighbor_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint;} +// rsrp, rsrq, sinr ranges are 0 .. 127 +// to convert rsrp to dbm, subtract 157 + +select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, + gnb_id as GNB_ID, + count(*) as cnt, + INT(min(rsrp))-INT(157) as min_rsrp, + INT(quantile_of(rsrp, .05)) - INT(157) as pctl_05_rsrp, + INT(median_of(rsrp)) - INT(157) as median_rsrp, + INT(quantile_of(rsrp, .95)) - INT(157) as pctl_95_rsrp, + sqrt( + sum( (FLOAT(rsrp)-157)*(FLOAT(rsrp)-157)) - + sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*) + ) / count(*) as stddev_rsrp, + INT(max(rsrp))-INT(157) as max_rsrp +from RRCXFER.nr_neighbor +where schemaId = 4 and rsrp<128 +group by timestamp_ms/$window as tb, gnb_id diff --git a/mc-core/mc/queries/runall b/mc-core/mc/queries/runall index c7a5f95..fa2207e 100755 --- a/mc-core/mc/queries/runall +++ b/mc-core/mc/queries/runall @@ -77,10 +77,14 @@ else /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neigh_gnb_ssb window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_serv_cell window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_serv_gnb window=$WINDOW & + /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neighbor_cell window=$WINDOW & + /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neighbor_gnb window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neigh_cell window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neigh_gnb window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_serv_cell window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_serv_gnb window=$WINDOW & + /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neighbor_cell window=$WINDOW & + /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neighbor_gnb window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connected_cnt window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connection_stats window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connects_cnt window=$WINDOW & @@ -96,6 +100,7 @@ else /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_ue window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_rollup window=$WINDOW & /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_gnb window=$WINDOW & + /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mod_req_failure_distribution window=$WINDOW & fi sleep 1 diff --git a/mc-core/mc/queries/throughput.gsql b/mc-core/mc/queries/throughput.gsql index 246d3ca..0e5c9eb 100644 --- a/mc-core/mc/queries/throughput.gsql +++ b/mc-core/mc/queries/throughput.gsql @@ -1,4 +1,6 @@ -DEFINE{query_name 'throughput_ue';} +DEFINE{query_name 'throughput_ue'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID, $window/1000.0 as measurementInterval, @@ -33,7 +35,9 @@ group by e_RAB_ID, id_SgNB_UE_X2AP_ID as UE_ID, gnb_id as GNB_ID, timestamp_ms/$ // (((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24)) -DEFINE{query_name 'throughput_rollup';} +DEFINE{query_name 'throughput_rollup'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select TS, e_RAB_ID, GNB_ID, $window/1000.0 as measurementInterval, @@ -50,7 +54,9 @@ from throughput_ue group by TS, e_RAB_ID, GNB_ID ; -DEFINE{query_name 'throughput_gnb';} +DEFINE{query_name 'throughput_gnb'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} PARAM{ window uint; } select ($window*(TB+1))/1000 as TS, e_RAB_ID, GNB_ID, $window/1000.0 as measurementInterval, diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..1eb2928 --- /dev/null +++ b/tox.ini @@ -0,0 +1,48 @@ +#================================================================================== +# Copyright (c) 2018-2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#================================================================================== + +[tox] +minversion = 2.0 +envlist = + docs, + docs-linkcheck, + +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = + sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf + +commands = + sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + + echo "Generated docs available in {toxinidir}/docs/_build/html" + +whitelist_externals = echo + +[testenv:docs-linkcheck] +basepython = python3 +deps = sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf +commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck -- 2.16.6