InFlux DB schema (E Release)
This page documents the inFlux DB schema used in the E Release for the KPM (and other) information collected from E2 Simulator.
Version | Author | Comments | Date |
---|---|---|---|
0.1 | Initial DRAFT, calling for comment! |
|
DRAFT / Proposal
This schema is open for discussion and contribution from the O-RAN community
Summary / Goals
The goal is to have a generic schema definition for xApps to access timeseries data obtained via E2SM/KPM and possibly the other E2SM protocols.
References
- E2SM-KPM specs
- TS 28.552 "5G performance measurements"
- InfluxDB glossary - https://docs.influxdata.com/influxdb/v1.8/concepts/glossary
- Viavi RIC Test User Manual
Glossary
- SDL: Shared Data Layer, a term referring to the services and schemas used to share data among xApps
Essential InfluxDB terms:
- Database: the highest level unit of storage
- Measurement: a table inside a database
- Data point: a row inside a Measurement table.
- Field: a sort of column of a Measurement table, with name and type of data.
- Note that not all fields need to be present in all data points
- Tag: a metadata field that is indexed so queries on them are performant
Guidelines
- For items not explicitly defined in O-RAN specs, look for relevant 3GPP specs.
- Field and tag names should be brief because the may pose a direct impact on InfluxDB performance at high loads.
- For proprietary/enrichment data fields, use a brief vendor prefix e.g. "Viavi."
Proposed Schema for E2SM/KPM data
- Database name: “E2SM-KPM”
For the labelling of fields we will be using names from E2SM/KPM v2.0 (MeasurementLabel) and TS 28.552 "5G performance measurements" as much as possible.
Following the general ideas in from TS 28.552, using short labels, organized in hierarchical form <topic>[.<subtopic>].<name>
KPM Measurement tables:
"CellReports" table containing the following fields:
Timestamp
- PLMN (tag)
- KPMNodeID (tag) - The KPM Node identification in string form to accomodate the many binary variants (maybe an hex dump?)
- S-NSSAI (tag?) - useful to identify slices?
NRCellIdentity (tag?)
Any of the fields defined for cell reports in TS 28.552, for example the following are provided by RIC Test scenario generator:DRB.UEThpDl - Average DL throughput in Kb/s
RRU.PrbUsedDl / RRU.PrbAvailDl
RRU.PrbUsedUl / RRU.PrbAvailUl
QosFlow.PdcpPduVolumeUl - UL PDCP PDU Data Volume (amount of kilobytes in the reporting period)
QosFlow.PdcpPduVolumeDl - DL PDCP PDU Data Volume (amending inconsistency in the case of the final "L" in TS 28.552)
And proprietary extensions:Viavi.Geo.x - Non standard / Viavi proprietary extension / External enrichment
Viavi.Geo.y
- Viavi.Geo.z
"UeReports" measurement table containing the following fields:
Timestamp
UE.Id - String representation to accomodate the many forms.
Note: A "UE id resolution" xApp may be needed to match the same UE on different measurements and possibly producing unique ids for this fieldSlice.Id
DRB.UEThpDl - TS 28.552 Average DL UE throughput
RRU.PrbUsedDl - TS 28.552 DL PRB used for data traffic
Viavi.Geo.x”, .y, .z... Viavi proprietary extensions
RF.serving.Id - May be just the PCI or resolved into NRCellIdentity
RF.serving.RSRP (Loosely based on LTE specs)
RF.serving.RSRQ
RF.serving.RSSINR
RF.nb1.CellId - 1st neighbour id
RF.nb1.RSRP, etc. 1st neighbour signal levels
RF.nb2.CellId - 2nd neighbour id
RF.nb2.RSRP, etc. 2nd neighbour signal levels
- "cellMeasReport" cell load measurement table has the following fields:
- Timestamp
- DLOccupyPRBNum – 3GPP supported
- CellDLMACRate – proprietary
- ULSINR – proprietary
- MCS – proprietary
- PDCPOccupBuffer – proprietary
- PDCPUnusedBuffer – proprietary
- DLPacketDiscardNum – proprietary
- DLPacketSDUNum – 3GPP supported
- DLPacketLossNum – 3GPP supported
- DLMACRate – proprietary