Domains supported by HV-VES

perf3gpp domain - delivery of equipment Performance Monitoring (PM) data, based on 3GPP specifications

The purpose of the perf3gpp domain is frequent periodic delivery of structured RAN PM data commonly referred to as Real Time PM (RTPM). The equipment sends an event right after collecting the PM data for a granularity period.

The characteristics of each event in the perf3gpp domain:

  • Single measured entity, for example, BTS

  • Single granularity period (collection begin time and duration)

  • Optional top-level grouping in one or more PM groups

  • Grouping in one or more measured objects, for example, cells

  • One or more reported PM values for each measured object

Due to the single granularity period per event, single equipment supporting multiple concurrent granularity periods might send more than one event at a given reporting time.

The perf3gpp domain is based on 3GPP specifications:

The event structure is changed in comparison to the one presented in 3GPP technical specifications. The 3GPP structure is enhanced to provide support for efficient transport.

Definitions for the perf3gpp domain are stored in Perf3gppFields.proto and MeasDataCollection.proto, listed below:

/*
 * ============LICENSE_START=======================================================
 * dcaegen2-collectors-veshv
 * ================================================================================
 * Copyright (C) 2018 NOKIA
 * ================================================================================
 * 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.
 * ============LICENSE_END=========================================================
 */
syntax = "proto3";
package org.onap.ves;
import "MeasDataCollection.proto";              // for 3GPP PM format

message Perf3gppFields
{
    string perf3gppFieldsVersion = 1;           // required, current value "1.0"
    MeasDataCollection measDataCollection = 2;  // required
    // Based on 3GPP TS 28.550
    // Logical mapping from 3GPP to ONAP header fields:
    // 3GPP MeasFileHeader     ONAP/VES CommonEventHeader
    // senderName              sourceName
    // senderType              nfNamingCode + nfcNamingCode
    // vendorName              nfVendorName
    // collectionBeginTime     startEpochMicrosec
    // timestamp               lastEpochMicrosec
    map<string, string> eventAddlFlds = 3;      // optional per-event data (name/value HashMap)
}
/*
 * ============LICENSE_START=======================================================
 * dcaegen2-collectors-veshv
 * ================================================================================
 * Copyright (C) 2018 NOKIA
 * ================================================================================
 * 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.
 * ============LICENSE_END=========================================================
 */
syntax = "proto3";
package org.onap.ves;

// Definition for RTPM, structure aligned with 3GPP PM format optimized for RTPM delivery pre-standard TS 28.550 V2.0.0 (2018-09).
// Some field details are taken from 3GPP TS 32.436 V15.0.0 (2018-06) ASN.1 file.
// Note (2018-09): work is in progress for 3GPP TS 28.550. Changes will be made, if needed, to align with final version.
// Differences/additions to 3GPP TS 28.550 are marked with "%%".

message MeasDataCollection                  // top-level message
{
    // %% Combined messageFileHeader, measData (single instance), messageFileFooter (not needed: timestamp = collectionBeginTime + granularityPeriod).
    string formatVersion = 1;               // required, current value "28.550 2.0"
    uint32 granularityPeriod = 2;           // required, duration in seconds, %% moved from MeasInfo (single reporting period per event)
    string measuredEntityUserName = 3;      // network function user definable name ("userLabel") defined for the measured entity in 3GPP TS 28.622
    string measuredEntityDn = 4;            // DN as per 3GPP TS 32.300
    string measuredEntitySoftwareVersion = 5;
    repeated string measObjInstIdList = 6; // %%: optional, monitored object LDNs as per 3GPP TS 32.300 and 3GPP TS 32.432
    repeated MeasInfo measInfo = 7;
}

message MeasInfo
{
    oneof MeasInfoId {                      // measurement group identifier
        uint32 iMeasInfoId = 1;             // identifier as integer (%%: more compact)
        string sMeasInfoId = 2;             // identifier as string (more generic)
    }

    oneof MeasTypes {                       // measurement identifiers associated with the measurement results
        IMeasTypes iMeasTypes = 3;          // identifiers as integers (%%: more compact)
        SMeasTypes sMeasTypes = 4;          // identifiers as strings (more generic)
    }
    // Needed only because GPB does not support repeated fields directly inside 'oneof'
    message IMeasTypes { repeated uint32 iMeasType = 1; }
    message SMeasTypes { repeated string sMeasType = 1; }

    string jobId = 5;
    repeated MeasValue measValues = 6;      // performance measurements grouped by measurement object
}

message MeasValue
{
    oneof MeasObjInstId {                   // monitored object LDN as per 3GPP TS 32.300 and 3GPP TS 32.432
        string sMeasObjInstId = 1;          // LDN itself
        uint32 measObjInstIdListIdx = 2;    // %%: index into measObjInstIdList (1-based)
    }
    repeated MeasResult measResults = 3;
    bool suspectFlag = 4;
    map<string, string> measObjAddlFlds = 5; // %%: optional per-object data (name/value HashMap)
}

message MeasResult
{
    uint32 p = 1;                           // Index in the MeasTypes array (1-based), needed only if measResults has fewer elements than MeasTypes
    oneof xValue {
        sint64 iValue = 2;
        double rValue = 3;
        bool isNull = 4;
    }
}

Selecting Complimentary fields for population of perf3gpp event

Context: at the upper level, VesEvent.eventFields is an opaque bytes field, and in the case of the perf3gpp domain (that is VesEvent.commonEventHeader.domain==”Perf3gpp”), eventFields maps to a structure defined by Perf3gppFields.

Perf3gppFields contains two main sub-structures:

  • eventAddlFlds: the usual optional VES per-event data (HashMap, name/value pairs)

  • measDataCollection: the actual payload, based on 3GPP specifications, but modified in order to optionaly reduce the size of the event

Usage of measDataCollection:

The measDataCollection structure offers flexibility in the way an equipment provides the Performance Monitoring (PM) data. The following table gives an outline of the two main options:

  • Following 3GPP standard as closely as possible

  • Reducing the message size

Each row of the table corresponds to one field where a choice is to be made. For each main option it describes whether an optional field is relevant or not, or which subfield to provide for a “oneof” GPB field.

MeasDataCollection field

Type

Focus 1: 3GPP compatibility (send textual IDs)

Focus 2: Minimum event size (send numerical IDs)

Notes

MeasData.measObjInstIdList

optional

<not provided>

<mandatory>

[1]

MeasValue.MeasObjInstId

oneof

sMeasObjInstId

measObjInstIdListIdx

[1]

MeasInfo.MeasInfoId

oneof

sMeasInfoId

iMeasInfoId

[2]

MeasInfo.MeasTypes

oneof

sMeasTypes

iMeasTypes

[2]

Notes:

Note

The division between focus 1 and focus 2 above is illustrative, and a mix of choices from both options is possible.

Note

MeasResult.p can be used to reduce the event size when more than half of the values in the event are zero values, and these values are not sent to ONAP. Only non-zero values are sent, together with their MeasInfo.MeasTypes index (MeasResult.p).

stndDefined domain

The purpose of ‘stndDefined’ domain was to allow collection of events defined by standard organizations using HV-VES, and providing them for consumption by analytics applications running on top of DCAE platform.

All events, except those with ‘stndDefined’ domain, are routed to DMaaP topics based on domain value. Events with ‘stndDefined’ domain are sent to proper topic basing on field ‘stndDefinedNamespace’.

This is the only difference from standard event routing, specific for ‘stndDefined’ domain. As in every other event routing value is being mapped for specific Kafka topic. Mappings to Kafka topics are located in HV-VES Helm Chart values.yaml file. Four of them are by default available in HV-VES:

Domain

StndDefinedNamespace

Kafka topic

stndDefined

ves-3gpp-fault-supervision

SEC_3GPP_FAULTSUPERVISION_OUTPUT

stndDefined

ves-3gpp-provisioning

SEC_3GPP_PROVISIONING_OUTPUT

stndDefined

ves-3gpp-heartbeat

SEC_3GPP_HEARTBEAT_OUTPUT

stndDefined

ves-3gpp-performance-assurance

SEC_3GPP_PERFORMANCEASSURANCE_OUTPUT