D.2 Modules

28.6233GPPGeneric Network Resource Model (NRM) Integration Reference Point (IRP)Release 17Solution Set (SS) definitionsTelecommunication managementTS

D.2.1 module _3gpp-common-ep-rp.yang

<CODE BEGINS>

module _3gpp-common-ep-rp {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-ep-rp";

prefix "eprp3gpp";

import _3gpp-common-yang-types { prefix types3gpp ; }

import ietf-inet-types { prefix inet; }

import _3gpp-common-measurements { prefix meas3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Common/basic class/grouping to be inherited/reused.

This IOC represents an end point of a link used across a reference

point between two network entities.";

reference

"3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)

3GPP TS 28.620

Umbrella Information Model (UIM)";

revision 2020-06-08 { reference "CR-0092"; }

revision 2019-06-17 {

description "Initial revision";

}

grouping EP_RPGrp {

description "Abstract class, represents an end point of a link used

across a reference point between two network entities.

For naming the subclasses of EP_RP, the following rules shall apply:

– The name of the subclassed IOC shall have the form ’EP_<rp>’,

where <rp> is a string that represents the name of the reference point.

Thus, two valid examples of EP_RP subclassed IOC names would be:

EP_S1 and EP_X2.";

leaf userLabel {

type string;

description "A user-friendly (and user assignable) name of this object.";

}

leaf farEndEntity {

config false;

type types3gpp:DistinguishedName;

}

}

grouping EP_Common {

uses EP_RPGrp;

uses meas3gpp:SupportedPerfMetricGroupGrp;

list localAddress {

description "Local IP address and VLAN ID.";

key "ipAddress vlanId";

min-elements 1;

max-elements 1;

uses types3gpp:AddressWithVlan;

}

leaf remoteAddress {

description "Remote IP address.";

mandatory true;

type inet:ip-address;

}

}

}

<CODE ENDS>

D.2.2 module _3gpp-common-managed-element.yang

<CODE BEGINS>

module _3gpp-common-managed-element {

yang-version 1.1;

namespace urn:3gpp:sa5:_3gpp-common-managed-element;

prefix "me3gpp";

import _3gpp-common-yang-types { prefix types3gpp ; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-measurements { prefix meas3gpp; }

import _3gpp-common-subscription-control { prefix subscr3gpp; }

import _3gpp-common-fm { prefix fm3gpp; }

import _3gpp-common-trace { prefix trace3gpp; }

import _3gpp-5gc-nrm-configurable5qiset { prefix conf5QIs3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines ManagedElement which will be augmented

by other IOCs";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)

3GPP TS 28.620

Umbrella Information Model (UIM)";

revision 2022-07-26 { reference CR-0180 ; }

revision 2021-01-16 { reference "CR-0120"; }

revision 2020-08-06 { reference "CR-0102"; }

revision 2020-08-03 { reference "CR-0095"; }

revision 2020-06-08 { reference "CR-0092"; }

revision 2020-05-12 { reference "CR0084"; }

revision 2020-02-24 { reference "S5-201365"; }

revision 2019-06-17 { reference " S5-203316"; }

revision 2019-05-08 { reference "Initial revision"; }

feature Configurable5qisetUnderManagedElement {

description "The Configurable5qiset shall be contained under ManagedElement";

}

feature MeasurementsUnderManagedElement {

description "The MeasurementSubtree shall be contained under

ManagedElement";

}

feature SubscriptionControlUnderManagedElement {

description "The SubscriptionControlSubtree shall be contained under

ManagedElement";

}

feature FmUnderManagedElement {

description "The FmSubtree shall be contained under ManagedElement";

}

feature TraceUnderManagedElement {

description "The TraceSubtree shall be contained under ManageElement";

}

feature DESManagementFunction {

description "Class representing Distributed SON or Domain-Centralized SON

Energy Saving feature. The DESManagementFunction shall be contained under

ManagedElement.";

}

feature DMROFunction {

description "Class representing D-SON function of MRO feature. The

DMROFunction shall be contained under ManagedElement.";

}

feature DRACHOptimizationFunction {

description "Class representing D-SON function of RACH optimization

feature. The DRACHOptimizationFunction shall be contained under

ManagedElement.";

}

feature DPCIConfigurationFunction {

description "Class representing Distributed SON or Domain-Centralized SON

function of PCI configuration feature. The DPCIConfigurationFunction shall

be contained under ManagedElement.";

}

feature CPCIConfigurationFunction {

description "Class representing Cross Domain-Centralized SON function of PCI

configuration feature. The CPCIConfigurationFunction shall be contained

under ManagedElement.";

}

feature CESManagementFunction {

description "Class representing Cross Domain-Centralized SON Energy Saving

feature. The CESManagementFunction shall be contained under

ManagedElement.";

}

grouping ManagedElement_Grp {

description "Abstract class representing telecommunications resources.

An ME communicates with a manager (directly or indirectly) for the

purpose of being monitored and/or controlled. MEs may perform element

management functionality.

An ME (and its contained Function_(s)) may or may not be geographically

distributed. An ME (and its contained Function_(s)) is often referred

to as a Network Element";

leaf dnPrefix {

description "Provides naming context that allows the Managed

Elements to be partitioned into logical domains.

A Distingushed Name(DN) is defined by 3GPP TS 32.300,

which splits the DN into a DN Prefix and Local DN";

type types3gpp:DistinguishedName;

}

leaf userLabel {

description "A user-friendly (and user assignable) name of this object.";

type string;

}

leaf locationName {

description "The physical location (e.g. an address) of an entity

represented by a (derivative of) ManagedElement_. It may contain no

information to support the case where the derivative of

ManagedElement_ needs to represent a distributed multi-location NE.";

config false;

type string;

}

leaf-list managedBy {

description "Relates to the role played by ManagementSystem_ in the

between ManagedSystem_ and ManagedElement_. This attribute contains

a list of the DN(s) of the related subclasses of

ManagementSystem_ instance(s).";

config false;

type types3gpp:DistinguishedName;

}

leaf-list managedElementTypeList {

description "The type of functionality provided by the ManagedElement.

It may represent one ME functionality or a combination of

more than one functionality.

1) The allowed values of this attribute are the names of the IOC(s)

that are (a) derived/subclassed from ManagedFunction and (b) directly

name-contained by ManagedElement IOC (on the first level below

ManagedElement), but with the string ’Function’ excluded.

2) If a ManagedElement contains multiple instances of a ManagedFunction

this attribute will not contain repeated values.

3) The capitalisation (usage of upper/lower case) of characters in this

attribute is insignificant. Thus, the NodeB should be case insensitive

when reading these values.

4) Two examples of allowed values are:

– NodeB;

– HLR, VLR.";

config false;

min-elements 1;

type string;

}

}

grouping ManagedElementGrp {

description "Represents telecommunications equipment or

TMN entities within the telecommunications network providing support

and/or service to the subscriber.";

uses ManagedElement_Grp;

uses meas3gpp:SupportedPerfMetricGroupGrp;

leaf vendorName {

config false;

type string;

}

leaf userDefinedState {

type string;

description "An operator defined state for operator specific usage";

}

leaf swVersion {

config false;

type string;

}

leaf priorityLabel {

type uint32;

mandatory true;

}

}

list ManagedElement {

description "Represents telecommunications equipment or TMN entities within

the telecommunications network providing support and/or service to the

subscriber. An ManagedElement IOC is used to represent a Network Element

defined in TS 32.101 including virtualizeation or non-virtualization

scenario. An ManagedElement instance is used for communicating with a

manager (directly or indirectly) over one or more management interfaces

for the purpose of being monitored and/or controlled. ManagedElement may

or may not additionally perform element management functionality.

An ManagedElement contains equipment that may or may not be geographically

distributed.

A telecommunication equipment has software and hardware components. The

ManagedElement IOC described above represents following two case:

– In the case when the software component is designed to run on dedicated

hardware component, the ManagedElement IOC description includes both

software and hardware components.

– In the case when the software is designed to run on ETSI NFV defined

NFVI [15], the ManagedElement IOC description would exclude the NFVI

component supporting the above mentioned subject software.

A ManagedElement may be contained in either a SubNetwork or in a MeContext

instance. A single ManagedElement may also exist stand-alone with no

parent at all.

The relation of ManagedElement IOC and ManagedFunction IOC can be

described as following:

– A ManaagedElement instance may have 1..1 containment relationship to a

ManagedFunction instance. In this case, the ManagedElement IOC may be

used to represent a NE with single functionality. For example, a

ManagedElement is used to represent the 3GPP defined RNC node;

– A ManagedElement instance may have 1..N containment relationship to

multiple ManagedFunction IOC instances. In this case, the ManagedElement

IOC may be used to represent a NE with combined ManagedFunction

funcationality (as indicated by the managedElementType attribute and the

contained instances of different ManagedFunction IOCs).For example, a

ManagedElement is used to represent the combined functionality of 3GPP

defined gNBCUCPFuntion, gNBCUUPFunction and gNBDUFunction";

key id;

uses top3gpp:Top_Grp;

container attributes {

uses ManagedElementGrp;

}

uses meas3gpp:MeasurementSubtree {

if-feature MeasurementsUnderManagedElement;

}

uses subscr3gpp:SubscriptionControlSubtree {

if-feature SubscriptionControlUnderManagedElement;

}

uses fm3gpp:FmSubtree {

if-feature FmUnderManagedElement;

}

uses trace3gpp:TraceSubtree {

if-feature TraceUnderManagedElement;

}

uses conf5QIs3gpp:Configurable5QISetSubtree {

if-feature Configurable5qisetUnderManagedElement;

}

}

}

<CODE ENDS>

D.2.3 module _3gpp-common-managed-function.yang

<CODE BEGINS>

module _3gpp-common-managed-function {

yang-version 1.1;

namespace urn:3gpp:sa5:_3gpp-common-managed-function;

prefix mf3gpp;

import _3gpp-common-yang-types { prefix types3gpp; }

import _3gpp-common-yang-extensions { prefix yext3gpp; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-measurements { prefix meas3gpp; }

import _3gpp-common-trace { prefix trace3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "The module defines a base class/grouping for major 3GPP

functions.";

reference

"3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)

3GPP TS 28.620

Umbrella Information Model (UIM)";

revision 2022-10-31 { reference CR-0195; }

revision 2022-01-07 { reference "CR-0146"; }

revision 2021-01-25 { reference "CR-0122"; }

revision 2020-09-30 { reference "CR-bbbb"; }

revision 2020-08-06 { reference "CR-0102"; }

revision 2020-08-03 { reference "CR-0095"; }

revision 2020-06-23 { reference "CR-085"; }

revision 2020-06-08 { reference "CR-0092"; }

revision 2019-11-21 { reference "S5-197275, S5-197735"; }

revision 2019-10-28 { reference S5-193518 ; }

revision 2019-06-18 { reference "Initial revision"; }

feature MeasurementsUnderManagedFunction {

description "The MeasurementSubtree shall be contained under ManageElement";

}

feature TraceUnderManagedFunction {

description "The TraceSubtree shall be contained under ManagedFunction";

}

grouping Operation {

description "This data type represents an Operation.";

reference "3gpp TS 28.622";

leaf name {

type string;

mandatory true;

yext3gpp:notNotifyable;

}

leaf-list allowedNFTypes {

type string;

min-elements 1;

description "The type of the managed NF service instance

The specifc values allowed are described in TS 23.501";

}

leaf operationSemantics {

type enumeration {

enum REQUEST_RESPONSE;

enum SUBSCRIBE_NOTIFY;

}

config false;

mandatory true;

description "Semantics type of the operation.";

reference "3GPP TS 23.502";

}

}

grouping ManagedNFServiceGrp {

description "A ManagedNFService represents a Network Function (NF) service.";

reference "Clause 7 of 3GPP TS 23.501.";

leaf userLabel {

type string;

description "A user-friendly (and user assignable) name of this object.";

}

leaf nFServiceType {

config false;

mandatory true;

type string;

description "The type of the managed NF service instance

The specifc values allowed are described in clause 7.2 of TS 23.501";

yext3gpp:notNotifyable;

}

list sAP {

key "host port";

min-elements 1;

max-elements 1;

description "The service access point of the managed NF service instance";

uses types3gpp:SAP;

}

list operations {

key name;

min-elements 1;

uses Operation ;

description "Set of operations supported by the managed NF

service instance";

}

leaf administrativeState {

type types3gpp:AdministrativeState;

mandatory true;

description "Permission to use or prohibition against using the instance";

}

leaf operationalState {

type types3gpp:OperationalState;

config false;

mandatory true;

description "Describes whether the resource is installed and working";

}

leaf usageState {

type types3gpp:usageState ;

config false;

mandatory true;

description "Describes whether the resource is actively in use at a

specific instant, and if so, whether or not it has spare

capacity for additional users.";

}

leaf registrationState {

type enumeration {

enum REGISTERED;

enum DEREGISTERED;

}

config false;

}

}

grouping Function_Grp {

description "A base grouping for 3GPP functions.";

leaf userLabel {

type string;

description "A user-friendly (and user assignable) name of this object.";

}

}

grouping ManagedFunctionGrp {

description "Abstract root class to be inherited/reused by classes

representing 3GPP functions.

Anywhere this grouping is used by classes inheriting from ManagedFunction

the list representing the inheriting class needs to include all

contained classes of ManagedFunction too. Contained classes are

either

– augmented into the Function class or

– shall be included in the list representing the inheriting class

using the grouping ManagedFunctionContainedClasses:

1) EP_RP solved using augment

2) uses mf3gpp:ManagedFunctionContainedClasses;

";

uses Function_Grp;

list vnfParametersList {

key vnfInstanceId;

description "Contains the parameter set of the VNF

instance(s) corresponding to an NE.

The presence of this list indicates that the ManagedFunction

represented is realized by one or more VNF instance(s). Otherwise it

shall be absent.

The presence of a vnfParametersList entry, whose vnfInstanceId with a

string length of zero, in createMO operation can trigger the

instantiation of the related VNF/VNFC instances.";

leaf vnfInstanceId {

type string ;

description "VNF instance identifier";

reference "ETSI GS NFV-IFA 008 v2.1.1:

Network Functions Virtualisation (NFV); Management and Orchestration;

Ve-Vnfm reference point – Interface and Information Model Specification

section 9.4.2

ETSI GS NFV-IFA 015 v2.1.2: Network Functions Virtualisation (NFV);

Management and Orchestration; Report on NFV Information Model

section B2.4.2.1.2.3";

}

leaf vnfdId {

type string ;

description "Identifier of the VNFD on which the VNF instance is based.

The absence of the leaf or a string length of zero for vnfInstanceId

means the VNF instance(s) does not exist (e.g. has not been

instantiated yet, has already been terminated).";

reference "ETSI GS NFV-IFA 008 v2.1.1:

Network Functions Virtualisation (NFV); Management and Orchestration;

Ve-Vnfm reference point – Interface and Information Model Specification

section 9.4.2";

}

leaf flavourId {

type string ;

description "Identifier of the VNF Deployment Flavour applied to this

VNF instance.";

reference "ETSI GS NFV-IFA 008 v2.1.1:

Network Functions Virtualisation (NFV) Management and Orchestration";

}

leaf autoScalable {

type boolean ;

mandatory true;

description "Indicator of whether the auto-scaling of this

VNF instance is enabled or disabled.";

}

}

list peeParametersList {

key idx;

description "Contains the parameter set for the control

and monitoring of power, energy and environmental parameters of

ManagedFunction instance(s).";

leaf idx { type uint32; }

leaf siteIdentification {

type string;

mandatory true;

description "The identification of the site where the

ManagedFunction resides.";

}

leaf siteLatitude {

type decimal64 {

fraction-digits 4;

range "-90.0000..+90.0000";

}

description "The latitude of the site where the ManagedFunction

instance resides, based on World Geodetic System (1984 version)

global reference frame (WGS 84). Positive values correspond to

the northern hemisphere. This attribute is optional

for BTSFunction, RNCFunction, GNBDUFunction and

NRSectorCarrier instance(s).";

}

leaf siteLongitude {

type decimal64 {

fraction-digits 4;

range "-180.0000..+180.0000";

}

description "The longitude of the site where the ManagedFunction

instance resides, based on World Geodetic System (1984 version)

global reference frame (WGS 84). Positive values correspond to

degrees east of 0 degrees longitude. This attribute is optional

for BTSFunction, RNCFunction, GNBDUFunction and

NRSectorCarrier

instance(s).";

}

leaf siteAltitude {

type decimal64 {

fraction-digits 4;

}

description "The altitude of the site where the ManagedFunction

instance resides, in the unit of meter. This attribute is

optional for BTSFunction, RNCFunction, GNBDUFunction and

NRSectorCarrier instance(s).";

}

leaf siteDescription {

type string;

mandatory true;

description "An operator defined description of the site where

the ManagedFunction instance resides.";

}

leaf equipmentType {

type string;

mandatory true;

description "The type of equipment where the managedFunction

instance resides.";

reference "clause 4.4.1 of ETSI ES 202 336-12";

}

leaf environmentType {

type string;

mandatory true;

description "The type of environment where the managedFunction

instance resides.";

reference "clause 4.4.1 of ETSI ES 202 336-12";

}

leaf powerInterface {

type string;

mandatory true;

description "The type of power.";

reference "clause 4.4.1 of ETSI ES 202 336-12";

}

}

leaf priorityLabel {

mandatory true;

type uint32;

}

uses meas3gpp:SupportedPerfMetricGroupGrp;

}

grouping ManagedFunctionContainedClasses {

description "A grouping used to containe classes (lists) contained by

the abstract IOC ManagedFunction";

list ManagedNFService {

description "Represents a Network Function (NF)";

reference "3GPP TS 23.501";

key id;

uses top3gpp:Top_Grp;

container attributes {

uses ManagedNFServiceGrp;

}

}

uses meas3gpp:MeasurementSubtree {

if-feature MeasurementsUnderManagedFunction ;

}

uses trace3gpp:TraceSubtree {

if-feature TraceUnderManagedFunction ;

}

}

}

<CODE ENDS>

D.2.4 module _3gpp-common-measurements.yang

<CODE BEGINS>

module _3gpp-common-measurements {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-measurements";

prefix "meas3gpp";

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types { prefix types3gpp; }

import _3gpp-common-yang-extensions { prefix yext3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines Measurement and KPI related groupings

Any list/class intending to use this should include 2 or 3 uses statements

controlled by a feature:

A)

+++ feature MeasurementsUnderMyClass {

+++ description ‘Indicates whether measurements and/or KPIs are supported

+++ for this class.’;

+++ }

B) include the attribute measurementsList and/or kPIsList indicating the

supported measurment and KPI types and GPs. Note that for classes

inheriting from ManagedFunction, EP_RP or SubNetwork these attributes are

already inherited, so there is no need to include them once more. E.g.

+++ grouping MyClassGrp {

+++ uses meas3gpp:SupportedPerfMetricGroup;

+++ }

C) include the class PerfmetricJob to control the measurements/KPIs. E.g.

list MyClass {

container attributes {

uses MyClassGrp;

}

+++ uses meas3gpp:MeasurementSubtree {

+++ if-feature MeasurementsUnderMyClass ;

+++ }

}

Measurements can be contained under ManagedElement, SubNetwork, or

any list representing a class inheriting from Subnetwork or

ManagedFunction. Note: KPIs will only be supported under SubNetwork";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)";

revision 2022-11-03 { reference "CR-0193"; }

revision 2022-10-31 { reference CR-0195; }

revision 2021-07-22 { reference "CR-0137"; }

revision 2020-11-06 { reference "CR-0118"; }

revision 2020-09-04 { reference "CR-000107"; }

revision 2020-06-08 { reference "CR-0092"; }

revision 2020-05-31 { reference "CR-0084"; }

revision 2020-03-11 { reference "S5-201581, SP-200229"; }

revision 2019-11-21 { reference "S5-197275, S5-197735"; }

revision 2019-10-28 { reference "S5-193516"; }

revision 2019-06-17 { reference " "; }

grouping ThresholdInfoGrp {

description "Defines a single threshold level.";

leaf-list measurementTypes {

type string;

description "The Measurement type can be those specified in TS 28.552,

TS 32.404 and can be those specified by other SDOs or can be

vendor-specific.";

}

leaf thresholdLevel {

type uint64;

mandatory true;

description "Number (key) for a single threshold in the threshold list

applicable to the monitored performance metric.";

}

leaf thresholdDirection {

type enumeration {

enum UP;

enum DOWN;

enum UP_AND_DOWN;

}

must ‘. = "UP_AND_DOWN" or not(../hysteresis)’ {

error-message "In case a threshold with hysteresis is configured, the "

+"threshold direction attribute shall be set to ‘UP_AND_DOWN’.";

}

mandatory true;

description "Direction of a threshold indicating the direction for which

a threshold crossing triggers a threshold.

When the threshold direction is configured to ‘UP’, the associated

treshold is triggered only when the performance metric value is going

up upon reaching or crossing the threshold value. The treshold is not

triggered, when the performance metric is going down upon reaching or

crossing the threshold value.

Vice versa, when the threshold direction is configured to ‘DOWN’, the

associated treshold is triggered only when the performance metric is

going down upon reaching or crossing the threshold value. The treshold

is not triggered, when the performance metric is going up upon reaching

or crossing the threshold value.

When the threshold direction is set to ‘UP_AND_DOWN’ the treshold is

active in both direcions.

In case a threshold with hysteresis is configured, the threshold

direction attribute shall be set to ‘UP_AND_DOWN’.";

}

leaf thresholdValue {

type union {

type int64;

type decimal64 {

fraction-digits 2;

}

}

mandatory true;

description "Value against which the monitored performance metric is

compared at a threshold level in case the hysteresis is zero";

}

leaf hysteresis {

type union {

type uint64;

type decimal64 {

fraction-digits 2;

range "0..max";

}

}

description "Hysteresis of a threshold. If this attribute is present

the monitored performance metric is not compared against the

threshold value as specified by the thresholdValue attribute but

against a high and low threshold value given by

threshold-high = thresholdValue + hysteresis

threshold-low = thresholdValue – hysteresis

When going up, the threshold is triggered when the performance metric

reaches or crosses the high threshold value. When going down, the

hreshold is triggered when the performance metric reaches or crosses

the low threshold value.

A hysteresis may be present only when the monitored performance

metric is not of type counter that can go up only. If present

for a performance metric of type counter, it shall be ignored.";

}

}

grouping SupportedPerfMetricGroupGrp {

list SupportedPerfMetricGroup {

config false;

description "Captures a group of supported performance metrics and

associated parameters related to their production and reporting.

A SupportedPerfMetricGroup attribute which is part of an MOI may

define performanceMetrics for any MOI under the subtree contained

under that MOI, e.g. SupportedPerfMetricGroup on a ManagedElement

can specify supported metrics for contained ManagedFunctions

like a GNBDUFunction.";

leaf-list performanceMetrics {

type string;

min-elements 1;

description "Performance metrics include measurements defined in

TS 28.552 and KPIs defined in TS 28.554. Performance metrics can

also be specified by other SDOs or be vendor specific.

Performance metrics are identfied with their names.

For measurements defined in TS 28.552 the name is constructed as

follows:

– ‘family.measurementName.subcounter’ for measurement types with

subcounters

– ‘family.measurementName’ for measurement types without subcounters

– ‘family’ for measurement families

For KPIs defined in TS 28.554 the name is defined in the KPI

definitions template as the component designated with e).

A name can also identify a vendor specific performance metric or a

group of vendor specific performance metrics.";

}

leaf-list granularityPeriods {

type uint32 {

range 1..max ;

}

units seconds;

}

leaf-list reportingMethods {

type enumeration {

enum FILE_BASED_LOC_SET_BY_PRODUCER;

enum FILE_BASED_LOC_SET_BY_CONSUMER;

enum STREAM_BASED;

}

min-elements 1;

}

leaf-list monitorGranularityPeriods {

type uint32 {

range 1..max ;

}

units seconds;

description "Granularity periods supported for the monitoring of

associated measurement types for thresholds";

}

}

}

grouping PerfMetricJobGrp {

description "Represents the attributtes of the IOC PerfMetricJob";

leaf administrativeState {

default UNLOCKED;

type types3gpp:AdministrativeState ;

description "Enable or disables production of the metrics";

}

leaf operationalState {

config false;

mandatory true;

type types3gpp:OperationalState ;

description "Indicates whether the PerfMetricJob is working.";

}

leaf jobId {

type string;

description "Id for a PerfMetricJob job.";

}

leaf-list performanceMetrics {

type string;

min-elements 1;

description "Performance metrics include measurements defined in

TS 28.552 and KPIs defined in TS 28.554. Performance metrics can

also be those specified by other SDOs or vendor specific metrics.

Performance metrics are identfied with their names. A name can also

identify a vendor specific group of performance metrics.

For measurements defined in TS 28.552 the name is constructed as

follows:

– ‘family.measurementName.subcounter’ for measurement types with

subcounters

– ‘family.measurementName’ for measurement types without subcounters

– ‘family’ for measurement families

For KPIs defined in TS 28.554 the name is defined in the KPI

definitions template as the component designated with e).";

}

leaf granularityPeriod {

type uint32 {

range 1..max ;

}

units seconds;

mandatory true;

description "Granularity period used to produce measurements. The value

must be one of the supported granularity periods for the metric.";

}

leaf-list objectInstances {

type types3gpp:DistinguishedName;

}

leaf-list rootObjectInstances {

type types3gpp:DistinguishedName;

description "Each object instance designates the root of a subtree that

contains the root object and all descendant objects.";

}

uses types3gpp:ReportingCtrl {

refine "reportingCtrl/file-based-reporting/fileReportingPeriod" {

must ‘(number(.)*"60") mod number(../granularityPeriod) = "0"’ {

error-message

"The time-period must be a multiple of the granularityPeriod.";

}

}

}

}

grouping ThresholdMonitorGrp {

description "A threshold monitor that is created by the consumer for

the monitored entities whose measurements are required by consumer

to monitor.";

leaf administrativeState {

default UNLOCKED;

type types3gpp:AdministrativeState ;

description "Enables or disables the ThresholdMonitor.";

}

leaf operationalState {

config false;

mandatory true;

type types3gpp:OperationalState ;

description "Indicates whether the ThresholdMonitor is working.";

}

list thresholdInfoList {

key idx;

min-elements 1;

leaf idx { type uint32 ; }

uses ThresholdInfoGrp;

}

leaf monitorGranularityPeriod {

type uint32 {

range "1..max";

}

units second;

mandatory true;

description " Granularity period used to monitor measurements for

threshold crossings. ";

}

leaf-list objectInstances {

type types3gpp:DistinguishedName;

yext3gpp:notNotifyable;

}

leaf-list rootObjectInstances {

type types3gpp:DistinguishedName;

description "Each object instance designates the root of a subtree that

contains the root object and all descendant objects.";

yext3gpp:notNotifyable;

}

}

grouping MeasurementSubtree {

description "Contains classes that define measurements.

Should be used in all classes (or classes inheriting from)

– SubNnetwork

– ManagedElement

– ManagedFunction

If a YANG module wants to augment these classes/list/groupings they must

augment all user classes!

If a class uses this grouping in its list it shall also use the

grouping SupportedPerfMetricGroupGrp to add SupportedPerfMetricGroup as

an attribute to its grouping";

list PerfMetricJob {

description "This IOC represents a performance metric production job. It

can be name-contained by SubNetwork, ManagedElement, or ManagedFunction.

To activate the production of the specified performance metrics, a MnS

consumer needs to create a PerfMetricJob instance on the MnS producer.

For ultimate deactivation of metric production, the MnS consumer should

delete the job to free up resources on the MnS producer.

For temporary suspension of metric production, the MnS consumer can

manipulate the value of the administrative state attribute. The MnS

producer may disable metric production as well, for example in overload

situations. This situation is indicated by the MnS producer with setting

the operational state attribute to disabled. When production is resumed

the operational state is set back to enabled.

The jobId attribute can be used to associate metrics from multiple

PerfMetricJob instances. The jobId can be included when reporting

performance metrics to allow a MnS consumer to associate received

metrics for the same purpose. For example, it is possible to configure

the same jobId value for multiple PerfMetricJob instances required to

produce the measurements for a specific KPI.

The attribute performanceMetrics defines the performance metrics to be

produced and the attribute granularityPeriod defines the granularity

period to be applied.

All object instances below and including the instance name-containing

the PerfMetricJob (base object instance) are scoped for performance

metric production. Performance metrics are produced only on those object

instances whose object class matches the object class associated to the

performance metrics to be produced.

The attributes objectInstances and rootObjectInstances allow to restrict

the scope. When the attribute objectInstances is present, only the object

instances identified by this attribute are scoped. When the attribute

rootObjectInstances is present, then the subtrees whose root objects are

identified by this attribute are scoped. Both attributes may be present

at the same time meaning the total scope is equal to the sum of both

scopes. Object instances may be scoped by both the objectInstances and

rootObjectInstances attributes. This shall not be considered as an error

by the MnS producer.

When the performance metric requires performance metric production on

multiple managed objects, which is for example the case for KPIs, the

MnS consumer needs to ensure all required objects are scoped. Otherwise

a PerfMetricJob creation request shall fail.

The attribute reportingCtrl specifies the method and associated control

parameters for reporting the produced measurements to MnS consumers.

Three methods are available: file-based reporting with selection of the

file location by the MnS producer, file-based reporting with selection

of the file location by the MnS consumer and stream-based reporting.

For file-based reporting, all performance metrics that are produced

related to a ‘PerfMetricJob’ instance for a reporting period shall be

stored in a single reporting file.

When the administrative state is set to ‘UNLOCKED’ after the creation

of a ‘PerfMetricJob’ the first granularity period shall start. When

the administrative state is set to ‘LOCKED’ or the operational state

to ‘DISABLED’, the ongoing reporting period shall be aborted, for

streaming the ongoing granularity period. When the administrative

state is set back to ‘UNLOCKED’ or the operational state to ‘ENABLED’

a new reporting period period shall start, in case of streaming a new

granularity period.

Changes of all other configurable attributes shall take effect only at

the beginning of the next reporting period, for streaming at the

beginning of the next granularity period.

When the ‘PerfMetricJob’ is deleted, the ongoing reporting period shall

be aborted, for streaming the ongoing granularity period.

A PerfMetricJob creation request shall fail, when the requested

performance metrics, the requested granularity period, the requested

repoting method, or the requested combination thereof is not supported

by the MnS producer.

Creation and deletion of PerfMetricJob instances by MnS consumers is

optional; when not supported, PerfMetricJob instances may be created and

deleted by the system or be pre-installed.";

key id;

uses top3gpp:Top_Grp ;

container attributes {

uses PerfMetricJobGrp ;

}

}

list ThresholdMonitor {

key id;

description "Represents a threshold monitor for performance metrics.

It can be contained by SubNetwork, ManagedElement, or ManagedFunction.

A threshold monitor checks for threshold crossings of performance metric

values and generates a notification when that happens.

To activate threshold monitoring, a MnS consumer needs to create a

ThresholdMonitor instance on the MnS producer. For ultimate deactivation

of threshold monitoring, the MnS consumer should delete the monitor to

free up resources on the MnS producer.

For temporary suspension of threshold monitoring, the MnS consumer can

manipulate the value of the administrative state attribute. The MnS

producer may disable threshold monitoring as well, for example in

overload situations. This situation is indicated by the MnS producer with

setting the operational state attribute to disabled. When monitoring is

resumed the operational state is set again to enabled.

All object instances below and including the instance containing the

ThresholdMonitor (base object instance) are scoped for performance

metric production. Performance metrics are monitored only on those

object instances whose object class matches the object class associated

to the performance metrics to be monitored.

The optional attributes objectInstances and rootObjectInstances allow to

restrict the scope. When the attribute objectInstances is present, only

the object instances identified by this attribute are scoped. When the

attribute rootObjectInstances is present, then the subtrees whose root

objects are identified by this attribute are scoped. Both attributes may

be present at the same time meaning the total scope is equal to the sum

of both scopes. Object instances may be scoped by both the objectInstances

and rootObjectInstances attributes. This shall not be considered as an

error by the MnS producer.

Multiple thresholds can be defined for multiple performance metric sets

in a single monitor using thresholdInfoList. The attribute

monitorGranularityPeriod defines the granularity period to be applied.

Each threshold is identified with a number (key) called thresholdLevel.

A threshold is defined using the attributes thresholdValue ,

thresholdDirection and hysteresis.

When hysteresis is absent or carries no information, a threshold is

triggered when the thresholdValue is reached or crossed. When hysteresis

is present, two threshold values are specified for the threshold as

follows: A high treshold value equal to the threshold value plus the

hysteresis value, and a low threshold value equal to the threshold value

minus the hysteresis value. When the monitored performance metric

increases, the threshold is triggered when the high threshold value is

reached or crossed. When the monitored performance metric decreases, the

threshold is triggered when the low threshold value is reached or crossed.

The hsyteresis ensures that the performance metric value can oscillate

around a comparison value without triggering each time the threshold when

the threshold value is crossed.

Using the thresholdDirection attribute a threshold can be configured in

such a manner that it is triggered only when the monitored performance

metric is going up or down upon reaching or crossing the threshold.

A ThresholdMonitor creation request shall be rejected, if the performance

metrics requested to be monitored, the requested granularity period, or

the requested combination thereof is not supported by the MnS producer.

A creation request may fail, when the performance metrics requested to be

monitored are not produced by a PerfMetricJob.

Creation and deletion of ThresholdMonitor instances by MnS consumers is

optional; when not supported, ThresholdMonitor instances may be created

and deleted by the system or be pre-installed.";

uses top3gpp:Top_Grp ;

container attributes {

uses ThresholdMonitorGrp ;

}

}

}

}

<CODE ENDS>

D.2.5 module _3gpp-common-subnetwork.yang

<CODE BEGINS>

module _3gpp-common-subnetwork {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-subnetwork";

prefix "subnet3gpp";

import _3gpp-common-yang-types { prefix types3gpp; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-measurements { prefix meas3gpp; }

import _3gpp-common-subscription-control { prefix subscr3gpp; }

import _3gpp-common-fm { prefix fm3gpp; }

import _3gpp-common-trace { prefix trace3gpp; }

import ietf-yang-schema-mount { prefix yangmnt; }

import _3gpp-5gc-nrm-configurable5qiset { prefix conf5QIs3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines basic SubNetwork which will be augmented by other IOCs";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)

3GPP TS 28.620

Umbrella Information Model (UIM)";

revision 2022-07-26 { reference CR-0180 ; }

revision 2021-01-16 { reference "CR-0120"; }

revision 2020-08-06 { reference "CR-0102"; }

revision 2020-06-08 { reference "CR-0092"; }

revision 2020-05-08 {

reference "S5-203316";

}

revision 2020-03-11 {

description "Added KPIs and corrections";

reference "S5-201365, S5-201581, SP-200229";

}

revision 2020-02-24 {

reference "S5-201365";

}

revision 2019-06-17 {

reference "Initial revision";

}

feature Configurable5qisetUnderSubNetwork {

description "The Configurable5qiset shall be contained under SubNetwork";

}

feature ExternalsUnderSubNetwork {

description "Classes representing external entities like EUtranFrequency,

ExternalGNBCUCPFunction, ExternalENBFunction

are contained under a Subnetwork list/class.";

}

feature MeasurementsUnderSubNetwork {

description "The MeasurementSubtree shall be contained under SubNetwork";

}

feature SubscriptionControlUnderSubNetwork {

description "The SubscriptionControlSubtree shall be contained under

SubNetwork";

}

feature FmUnderSubNetwork {

description "The FmSubtree shall be contained under SubNetwork";

}

feature TraceUnderSubNetwork {

description "The TraceSubtree shall be contained under SubNetwork";

}

feature DESManagementFunction {

description "Class representing Distributed SON or Domain-Centralized SON

Energy Saving feature. The DESManagementFunction shall be contained under

SubNetwork.";

}

feature DMROFunction {

description "Class representing D-SON function of MRO feature. The

DMROFunction shall be contained under SubNetwork.";

}

feature DRACHOptimizationFunction {

description "Class representing D-SON function of RACH optimization feature.

The DRACHOptimizationFunction shall be contained under SubNetwork.";

}

feature DPCIConfigurationFunction {

description "Class representing Distributed SON or Domain-Centralized SON

function of PCI configuration feature. The DPCIConfigurationFunction shall

be contained under SubNetwork.";

}

feature CPCIConfigurationFunction {

description "Class representing Cross Domain-Centralized SON function of PCI

configuration feature. The CPCIConfigurationFunction shall be contained

under SubNetwork.";

}

feature CESManagementFunction {

description "Class representing Cross Domain-Centralized SON Energy Saving

feature. The CESManagementFunction shall be contained under SubNetwork.";

}

grouping Domain_Grp {

description "A domain is a partition of instances of managed entities

such that :

– the group represents a topological structure which describes the

potential for connectivity

– Subject to common administration

– With common characteristics";

leaf dnPrefix {

type types3gpp:DistinguishedName;

reference "Annex C of 32.300 ";

}

leaf userLabel {

type string;

description "A user-friendly (and user assignable) name of this object.";

}

leaf userDefinedNetworkType {

type string;

description "Textual information indicating network type, e.g. ‘UTRAN’.";

}

}

grouping SubNetworkGrp {

uses Domain_Grp;

uses meas3gpp:SupportedPerfMetricGroupGrp;

leaf-list setOfMcc {

description "Set of Mobile Country Code (MCC).

The MCC uniquely identifies the country of domicile

of the mobile subscriber. MCC is part of the IMSI (3GPP TS 23.003)

This list contains all the MCC values in subordinate object

instances to this SubNetwork instance.

See clause 2.3 of 3GPP TS 23.003 for MCC allocation principles.

It shall be supported if there is more than one value in setOfMcc

of the SubNetwork. Otherwise the support is optional.";

type types3gpp:Mcc;

}

leaf priorityLabel {

mandatory true;

type uint32;

}

}

list SubNetwork {

key id;

description "Represents a set of managed entities";

uses top3gpp:Top_Grp;

container attributes {

uses SubNetworkGrp;

leaf-list parents {

description "Reference to all containg SubNetwork instances

in strict order from the root subnetwork down to the immediate

parent subnetwork.

If subnetworks form a containment hierarchy this is

modeled using references between the child SubNetwork and the parent

SubNetworks.

This reference MUST NOT be present for the top level SubNetwork and

MUST be present for other SubNetworks.";

type leafref {

path "../../../SubNetwork/id";

}

}

leaf-list containedChildren{

description "Reference to all directly contained SubNetwork instances.

If subnetworks form a containment hierarchy this is

modeled using references between the child SubNetwork and the parent

SubNetwork.";

type leafref {

path "../../../SubNetwork/id";

}

}

}

uses meas3gpp:MeasurementSubtree {

if-feature MeasurementsUnderSubNetwork;

}

uses subscr3gpp:SubscriptionControlSubtree {

if-feature SubscriptionControlUnderSubNetwork;

}

uses fm3gpp:FmSubtree {

if-feature FmUnderSubNetwork;

}

uses trace3gpp:TraceSubtree {

if-feature TraceUnderSubNetwork;

}

uses conf5QIs3gpp:Configurable5QISetSubtree {

if-feature Configurable5qisetUnderSubNetwork;

}

yangmnt:mount-point children-of-SubNetwork {

description "Mountpoint for ManagedElement";

reference "RFC8528 YANG Schema Mount";

}

// augment external parts here

}

}

<CODE ENDS>

D.2.6 module _3gpp-common-top.yang

<CODE BEGINS>

module _3gpp-common-top {

yang-version 1.1;

namespace urn:3gpp:sa5:_3gpp-common-top;

prefix top3gpp;

organization "3gpp SA5";

description "The model defines a YANG mapping of the top level

information classes used for management of 5G networks and

network slicing.";

reference

"3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)

3GPP TS 28.620

Umbrella Information Model (UIM)";

revision 2019-06-17 {

description "Initial revision";

}

grouping Top_Grp {

description "Abstract class supplying a naming attribute";

reference "3GPP TS 28.620";

leaf id {

type string;

description "Key leaf (namingAttribute) for a class/list.

Should be used as a key leaf for lists representing

stage 2 classes.";

reference "3GPP TS 32.300 Name convention for managed objects";

}

}

}

<CODE ENDS>

D.2.6a module _3gpp-common-subscription-control.yang

<CODE BEGINS>

module _3gpp-common-subscription-control {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-subscription-control";

prefix "subscr3gpp";

import _3gpp-common-yang-extensions { prefix yext3gpp; }

import _3gpp-common-top { prefix top3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines IOCs for subscription and heartbeat control.";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.623";

revision 2022-10-31 { reference CR-0195; }

revision 2021-01-16 { reference "CR-0120"; }

revision 2020-08-26 { reference "CR-0106"; }

revision 2019-11-29 { reference "S5-197648 S5-197647 S5-197829 S5-197828"; }

grouping NtfSubscriptionControlGrp {

description "Attributes of a specific notification subscription";

leaf notificationRecipientAddress {

type string;

mandatory true;

}

leaf-list notificationTypes {

type string;

description "Defines the types of notifications that are candidates

for being forwarded to the notification recipient.

If the notificationFilter attribute is not supported or not present

all candidate notifications types are forwarded to the notification;

discriminated by notificationFilter attribute.";

}

list scope {

key "scopeType";

min-elements 1;

max-elements 1;

description "Describes which object instances are selected with

respect to a base object instance.";

leaf scopeType {

type enumeration {

enum BASE_ONLY;

enum BASE_ALL;

enum BASE_NTH_LEVEL;

enum BASE_SUBTREE;

}

description "If the optional scopeLevel parameter is not supported

or absent, allowed values of scopeType are BASE_ONLY and BASE_ALL.

The value BASE_ONLY indicates only the base object is selected.

The value BASE_ALL indicates the base object and all of its

subordinate objects (incl. the leaf objects) are selected.

If the scopeLevel parameter is supported and present, allowed

values of scopeType are BASE_ALL, BASE_ONLY, BASE_NTH_LEVEL

and BASE_SUBTREE.

The value BASE_NTH_LEVEL indicates all objects on the level,

which is specified by the scopeLevel parameter, below the base

object are selected. The base object is at scopeLevel zero.

The value BASE_SUBTREE indicates the base object and all of its

subordinate objects down to and including the objects on the level,

which is specified by the scopeLevel parameter, are selected.

The base object is at scopeLevel zero.";

}

leaf scopeLevel {

when ‘../scopeType = "BASE_NTH_LEVEL" or ../scopeType = "BASE_SUBTREE"’;

type uint16;

mandatory true;

description "See description of scopeType.";

}

}

leaf notificationFilter {

type string;

description "Defines a filter to be applied to candidate notifications

identified by the notificationTypes attribute.

If notificationFilter is present, only notifications that pass the

filter criteria are forwarded to the notification recipient; all other

notifications are discarded.

The filter can be applied to any field of a notification.";

}

}

grouping HeartbeatControlGrp {

description "Attributes of HeartbeatControl.";

leaf heartbeatNtfPeriod {

type uint32;

mandatory true;

units seconds;

description "Specifies the periodicity of heartbeat notification emission.

The value of zero has the special meaning of stopping the heartbeat

notification emission.";

}

leaf triggerHeartbeatNtf {

type boolean;

default false;

description "Setting this attribute to ‘true’ triggers an immediate

additional heartbeat notification emission. Setting the value to

‘false’ has no observable result.

The periodicity of notifyHeartbeat emission is not changed.

After triggering the heartbeat the system SHALL set the value

back to false.";

yext3gpp:notNotifyable;

}

}

grouping SubscriptionControlSubtree {

description "Contains notification subscription related classes.

Should be used in all classes (or classes inheriting from)

– SubNetwork

– ManagedElement

If some YAM wants to augment these classes/list/groupings they must

augment all user classes!";

list NtfSubscriptionControl {

description "A NtfSubscriptionControl instance represents the

notification subscription of a particular notification recipient.

The scope attribute is used to select managed object instances.

The base object instance of the scope is the object instance

name-containing the NtfSubscriptionControl instance.

The notifications related to the selected managed object instances

are candidates to be sent to the address specified by the

notificationRecipientAddress attribute.

The notificationType attribute and notificationFilter attribute

allow MnS consumers to exercise control over which candidate

notifications are sent to the notificationRecipientAddress.

If the notificationType attribute is supported and present, its

value identifies the

types of notifications that are candidate to be sent to the

notificationRecipientAddress. If the notificationType attribute is

not supported or not present, all types of notifications are

candidate to be sent to notificationRecipientAddress.

If supported, the notificationFilter attribute defines a filter that

is applied to the set of candidate notifications. Only candidate

notifications that pass the filter criteria are sent to the

notificationRecipientAddress. If the notificationFilter attribute is

not supported all candidate notificatios are sent to the

notificationRecipientAddress.

To receive notifications, a MnS consumer has to create

NtfSubscriptionControl object instancess on the MnS producer.

A MnS consumer can create a subscription for another MnS consumer

since it is not required the notificationRecipientAddress be his own

address.

When a MnS consumer does not wish to receive notifications any more

the MnS consumer shall delete the corresponding NtfSubscriptionControl

instance.

Creation and deletion of NtfSubscriptionControl instances by MnS

consumers is optional; when not supported, the NtfSubscriptionControl

instances may be created and deleted by the system or be

pre-installed.";

key id;

uses top3gpp:Top_Grp;

container attributes {

uses NtfSubscriptionControlGrp;

}

list HeartbeatControl {

description "MnS consumers (i.e. notification recipients) use heartbeat

notifications to monitor the communication channels between them and

data reporting MnS producers emitting notifications such as

notifyNewAlarm and notifyFileReady.

A HeartbeatControl instance allows controlling the emission of

heartbeat notifications by MnS producers. The recipients of heartbeat

notifications are specified by the notificationRecipientAddress

attribute of the NtfSubscriptionControl instance containing the

HeartbeatControl instance.

Note that the MnS consumer managing the HeartbeatControl instance

and the MnS consumer receiving the heartbeat notifications may not be

the same.

As a pre-condition for the emission of heartbeat notifications, a

HeartbeatControl instance needs to be created. Creation of an instance

with an initial non-zero value of the heartbeatNtfPeriod attribute

triggers an immediate heartbeat notification emission. Creation of an

instance with an initial zero value of the heartbeatPeriod attribute

does not trigger an emission of a heartbeat notification. Deletion of

an instance does not trigger an emission of a heartbeat notification.

Once the instance is created, heartbeat notifications are emitted with

a periodicity defined by the value of the heartbeatNtfPeriod

attribute. No heartbeat notifications are emitted if the value is

equal to zero. Setting a zero value to a non zero value, or a non zero

value to a different non zero value, triggers an immediate heartbeat

notification, that is the base for the new heartbeat period. Setting a

non zero value to a zero value stops emitting heartbeats immediately;

no final heartbeat notification is sent.

Creation and deletion of HeartbeatControl instances by MnS Consumers

is optional; when not supported, the HeartbeatControl instances may be

created and deleted by the system or be pre-installed.

Whether and when to emit heartbeat notifications is controlled by

HeartbeatControl. Subscription for heartbeat is not supported via the

NtfSubscriptionControl.";

max-elements 1;

key id;

uses top3gpp:Top_Grp;

container attributes {

uses HeartbeatControlGrp;

}

}

}

}

}

<CODE ENDS>

D.2.7 module _3gpp-common-yang-extensions.yang

<CODE BEGINS>

module _3gpp-common-yang-extensions {

yang-version 1.1;

namespace urn:3gpp:sa5:_3gpp-common-yang-extensions ;

prefix yext3gpp ;

organization "3GPP SA5";

description "The module defines YANG extensions needed

3GPP YANG modeling.

Copyright (c) 2019 3GPP. All rights reserved.

Extensions MUST be defined with the following structure in the

description statement:

– What is this statement.

– Newline,

– This statement can be a substatement of the xxx statements with

cardinality x..y.

– This statement can have the following substatements with

cardinality x..y.

– Newline

– Is changing this statement an editorial, BC(backwards compatible)

or NBC(non-BC) change?

– Newline.

– The argument its meaning and type. Preferably use YANG types and

constraints to define the argument’s type.

Any extension statement can be added with a

deviation/deviate add statement. In this case the restriction about

the parent statement of the extension SHALL be evaluated based on the

target of the deviation statement.

Support for this module does not mean that a YANG server implements

support for each of these extensions.

Implementers of each specific module using an extensions MUST check

if the server implements support for the used extension.

Note: modules use many extensions which individual

implementations MAY or MAY NOT support.

If support for an extension is missing the extension statement needs

individual handling or it SHOULD be removed from the module using

the extension e.g. with a deviation.

";

revision 2022-10-31 { reference CR-0195; }

revision 2019-06-23 { reference "Initial version"; }

extension notNotifyable {

description

"Indicates that data change notifications shall not be sent

for this attribute. If the extension is not present and other

conditions are fulfilled data change notification should be sent.

If a list or container already has the notNotifyable

extension, that is also valid for all contained data nodes.

The statement MUST only be a substatement of a leaf, leaf-list, list,

container statement that is contained within the ‘attributes’

container of an IOC and that represents an attribute or sub-parts of

an attribute .

Zero or one notNotifyable statement is allowed per parent statement.

NO substatements are allowed.

Adding this statement is an NBC change, removing it is BC.";

}

extension inVariant {

description

"Indicates that the value for the data node can only be set when its

parent data node is being created. To change the value after that, the

parent data node must be deleted and recreated with the data node

having the new value.

It is unnecessary to use and MUST NOT be used for key leafs.

The statement MUST only be a substatement of a leaf, leaf-list, list

statements that is config=true.

Zero or one inVariant statement is allowed per parent statement.

NO substatements are allowed.

Adding this statement is an NBC change, removing it is BC.";

}

extension initial-value {

description "Specifies a value that the system will set for a leaf

leaf-list if a value is not specified for it when its parent list

or container is created. The value has no effect in any other

modification e.g. changing or removing the value.

The description statement of the parent statement SHOULD contain

the label ‘Initial-value: ‘ followed by the text from the argument.

The statement MUST only be a substatement of a leaf or leaf-list.

The statement MUST NOT be present if the leaf or the leaf-list

has a default statement or the type used for the data node

has a default value.

The statement MUST NOT be used for config=false data or in an

action, rpc or notification.

Zero or one initial-value statements are allowed for a leaf parent

statement. Zero or more initial-value statements are allowed for a

leaf-list parent statement. If the leaf-list is ordered-by user, the

initial values are stored in the order they appear in the YANG definition.

NO substatements are allowed.

Always consider using a YANG-default statement instead.

Modification of the initial-value is a non-backwards-compatible change.

The argument specifies a single initial value for a leaf or leaf-list.

The value MUST be part of the valuespace of the leaf/leaf-list.

It follows the same rules as the argument of the default statement.";

argument "initial-value";

}

}

<CODE ENDS>

D.2.8 module _3gpp-common-yang-types.yang

<CODE BEGINS>

module _3gpp-common-yang-types {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-yang-types";

prefix "types3gpp";

import ietf-inet-types { prefix inet; }

import ietf-yang-types { prefix yang; }

import _3gpp-common-yang-extensions { prefix yext3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "The model defines a YANG mapping of the top level

information classes used for management of 5G networks and

network slicing.";

reference "3GPP TS 28.623";

revision 2022-11-03 { reference "CR-0193"; }

revision 2022-10-31 { reference CR-0195; }

revision 2022-07-26 { reference CR-0180 ; }

revision 2022-02-09 { reference "CR-0144"; }

revision 2021-11-01 { reference "CR-0141"; }

revision 2021-09-30 {

description "Added Longitude, Latitude, TenthOfDegrees, OnOff.";

reference "CR-0138";

}

revision 2020-11-06 {

description "Removed incorrect S-NSSAI definitions.";

reference "CR-0118";

}

revision 2020-03-10 {

description "Removed faulty when statements.";

reference "SP-200229";

}

revision 2019-10-25 {

description "Added ManagedNFProfile.";

reference "S5-194457";

}

revision 2019-10-16 {

description "Added SAP and usageState.";

reference "S5-193518";

}

revision 2019-06-23 {

reference "Initial version.";

}

typedef EnabledDisabled {

type enumeration {

enum DISABLED ;

enum ENABLED ;

}

}

grouping ProcessMonitor {

description "Provides attributes to monitor the progress of processes

with specific purpose and limited lifetime running on MnS producers.

It may be used as data type for dedicated progress monitor attributes

when specifying the management representation of these processes.

The attributes in this clause are defined in a generic way.

For some attributes specialisations may be provided when specifying a

concrete process representation.

If a management operation on some IOCs triggers an associated

asynchronous process (whose progress shall be monitored), this should

also result in creating an attribute named ‘processMonitor’ (of type

‘ProcessMonitor’) in these IOC(s). The processMonitor attribute may be

accompanied by use-case specific additional data items.

The progress of the process is described by the ‘status’ and

‘progressPercentage’ attributes. Additional textual qualifications for

the ‘status’ attribute may be provided by the ‘progressStateInfo’ and

‘resultStateInfo’ attributes.

When the process is instantiated, the ‘status’ is set to ‘NOT_RUNNING’

and the ‘progressPercentage’ to ‘0’. The MnS producer decides when to

start executing the process and to transition into the ‘RUNNING’ state.

This time is captured in the ‘startTime’ attribute. Alternatively, the

process may start to execute directly upon its instantiation. One

alternative must be selected when using this data type.

During the ‘RUNNING’ state the ‘progressPercentage’ attribute may be

repeatedly updated. The exact semantic of this attribute is subject to

further specialisation. The ‘progressInfo’ attribute may be used to

provide additional textual information in the ‘NOT_RUNNING’, ‘CANCELLING’

and ‘RUNNING’ states. Further specialisation of

‘progressStateInfo’ may be provided where this data type is

used.

Upon successful completion of the process, the ‘status’ attribute is set

to ‘FINISHED’, the ‘progressPercentage’ to 100%. The time is captured in

the ‘endTime’ attribute. Additional textual information may be provided

in the ‘resultStateInfo’ attribute. The type of

‘resultStateInfo’ in this data type definition is ‘String’.

Further specialisation of ‘resultStateInfo’ may be provided

where this data type is used.

In case the process fails to complete successfully, the ‘status’

attribute is set to ‘FAILED’ or ‘PARTIALLY_FAILED’, the current value of

‘progressPercentage’ is frozen, and the time captured in ‘endTime’. The

‘resultStateInfo’ specifies the reason for the failure.

Specific failure reasons may be specified where the data type defined in

this clause is used. The exact semantic of failure may be subject for

further specialisation as well.

In case the process is cancelled, the ‘status’ attribute is first set to

‘CANCELLING’ and when the process is really cancelled then to ‘CANCELLED’.

The transition to ‘CANCELLED’ is captured in the ‘endTime’ attribute.

The value of ‘progressPercentage’ is frozen. Additional textual

information may be provided in the ‘resultStateInfo’ attribute.

The ‘resultStateInfo’ attribute is provided only for additional textual

qualification of the states ‘FINISHED’, ‘FAILED’, ‘PARTIALLY_FAILED’ or

‘CANCELLED’. It shall not be used for making the outcome, that the

process may produce in case of success, available.

The process may have to be completed within a certain time after its

creation, for example because required data may not be available any

more after a certain time, or the process outcome is needed until a

certain time and when not provided by this time is not needed any more.

The time until the MnS producer automatically cancels the process is

indicated by the ‘timer’ attribute.";

leaf id {

type string;

mandatory true;

description "Id of the process. It is unique within a single

multivalue attribute of type ProcessMonitor.";

}

leaf status {

type enumeration {

enum NOT_STARTED ;

enum RUNNING ;

enum CANCELLING ;

enum FINISHED ;

enum FAILED ;

enum PARTIALLY_FAILED ;

enum CANCELLED ;

}

config false;

default RUNNING;

description "Represents the status of the associated process,

whether it fails, succeeds etc.

It does not represent the returned values of a successfully finished

process. ";

}

leaf progressPercentage {

type uint8 {

range 0..100;

}

config false;

description "Progress of the associated process as percentage";

}

leaf-list progressStateInfo {

type string;

config false;

description "Additional textual qualification of the states

‘NOT_STARTED’, ‘CANCELLING’ and ‘RUNNING’.

For specific processes, specific well-defined strings (e.g. string

patterns or enums) may be defined as a specialisation.";

}

leaf resultStateInfo {

type string;

config false;

description "Additional textual qualification of the states

‘FINISHED’, ‘FAILED’, ‘PARTIALLY_FAILED and ‘CANCELLED’.

For example, in the ‘FAILED’ or ‘PARTIALLY_FAILED’ state this

attribute may be used to provide error reasons.

This attribute shall not be used to make the outcome of the process

available for retrieval, if any. For this purpose, dedicated

attributes shall be specified when specifying the representation of

a specific process.

For specific processes, specific well-defined strings (e.g. string

patterns or enums) may be defined as a specialisation.";

}

leaf startTime {

type yang:date-and-time;

config false;

description "Start time of the associated process, i.e. the time when the

status changed from ‘NOT_STARTED’ to ‘RUNNING’.";

}

leaf endTime {

type yang:date-and-time;

config false;

description "Date and time when status changed to ‘SUCCESS’, ‘CANCELLED’,

‘FAILED’ or ‘PARTIALLY_FAILED’.

If the time is in the future, it is the estimated time

the process will end.";

}

leaf timer {

type uint32;

units minutes;

description "Time until the associated process is automatically cancelled.

If set, the system decreases the timer with time. When it reaches zero

the cancellation of the associated process is initiated by the

MnS_Producer.

If not set, there is no time limit for the process.

Once the timer is set, the consumer can not change it anymore.

If the consumer has not set the timer the MnS Producer may set it.";

yext3gpp:notNotifyable;

}

}

typedef TenthOfDegrees {

type uint16 {

range 0..3600;

}

units "0.1 degrees";

description "A single integral value corresponding to an angle in degrees

between 0 and 360 with a resolution of 0.1 degrees.";

}

typedef Latitude {

type decimal64 {

fraction-digits 4;

range "-90.0000..+90.0000";

}

description "Latitude values";

}

typedef Longitude {

type decimal64 {

fraction-digits 4;

range "-180.0000..+180.0000";

}

description "Longitude values";

}

typedef OnOff {

type enumeration {

enum ON;

enum OFF;

}

}

// grouping ManagedNFProfile will be removed as it is

// being moved to _3gpp-5gc-nrm-nfprofile

grouping ManagedNFProfile {

description "Defines profile for managed NF";

reference "3GPP TS 23.501";

leaf idx { type uint32 ; }

leaf nfInstanceID {

config false;

mandatory true;

type yang:uuid ;

description "This parameter defines profile for managed NF.

The format of the NF Instance ID shall be a

Universally Unique Identifier (UUID) version 4,

as described in IETF RFC 4122 " ;

}

leaf-list nfType {

config false;

min-elements 1;

type NfType;

description "Type of the Network Function" ;

}

leaf hostAddr {

mandatory true;

type inet:host ;

description "Host address of a NF";

}

leaf authzInfo {

type string ;

description "This parameter defines NF Specific Service authorization

information. It shall include the NF type (s) and NF realms/origins

allowed to consume NF Service(s) of NF Service Producer.";

reference "See TS 23.501" ;

}

leaf location {

type string ;

description "Information about the location of the NF instance

(e.g. geographic location, data center) defined by operator";

reference "TS 29.510" ;

}

leaf capacity {

mandatory true;

type uint16 ;

description "This parameter defines static capacity information

in the range of 0-65535, expressed as a weight relative to other

NF instances of the same type; if capacity is also present in the

nfServiceList parameters, those will have precedence over this value.";

reference "TS 29.510" ;

}

leaf nFSrvGroupId {

type string ;

description "This parameter defines identity of the group that is

served by the NF instance.

May be config false or true depending on the ManagedFunction.

Config=true for Udrinfo. Config=false for UdmInfo and AusfInfo.

Shall be present if ../nfType = UDM or AUSF or UDR. ";

reference "TS 29.510" ;

}

leaf-list supportedDataSetIds {

type enumeration {

enum SUBSCRIPTION;

enum POLICY;

enum EXPOSURE;

enum APPLICATION;

}

description "List of supported data sets in the UDR instance.

May be present if ../nfType = UDR";

reference "TS 29.510" ;

}

leaf-list smfServingAreas {

type string ;

description "Defines the SMF service area(s) the UPF can serve.

Shall be present if ../nfType = UPF";

reference "TS 29.510" ;

}

leaf priority {

type uint16;

description "This parameter defines Priority (relative to other NFs

of the same type) in the range of 0-65535, to be used for NF selection;

lower values indicate a higher priority. If priority is also present

in the nfServiceList parameters, those will have precedence over

this value. Shall be present if ../nfType = AMF ";

reference "TS 29.510" ;

}

}

typedef usageState {

type enumeration {

enum IDLE;

enum ACTIVE;

enum BUSY;

}

description "It describes whether or not the resource is actively in

use at a specific instant, and if so, whether or not it has spare

capacity for additional users at that instant. The value is READ-ONLY.";

reference "ITU T Recommendation X.731";

}

grouping SAP {

leaf host {

type inet:host;

mandatory true;

}

leaf port {

type inet:port-number;

mandatory true;

}

description "Service access point.";

reference "TS 28.622";

}

typedef Mcc {

description "The mobile country code consists of three decimal digits,

The first digit of the mobile country code identifies the geographic

region (the digits 1 and 8 are not used):";

type string {

pattern ‘[02-79][0-9][0-9]’;

}

reference "3GPP TS 23.003 subclause 2.2 and 12.1";

}

typedef Mnc {

description "The mobile network code consists of two or three

decimal digits (for example: MNC of 001 is not the same as MNC of 01)";

type string {

pattern ‘[0-9][0-9][0-9]|[0-9][0-9]’;

}

reference "3GPP TS 23.003 subclause 2.2 and 12.1";

}

grouping PLMNId {

leaf mcc {

mandatory true;

type Mcc;

}

leaf mnc {

mandatory true;

type Mnc;

}

reference "TS 23.658";

}

typedef Nci {

description "NR Cell Identity. The NCI shall be of fixed length of 36 bits

and shall be coded using full hexadecimal representation.

The exact coding of the NCI is the responsibility of each PLMN operator";

reference "TS 23.003";

type union {

type string {

length 36;

pattern ‘[01]+’;

}

type string {

length 9;

pattern ‘[a-fA-F0-9]*’;

}

}

}

typedef OperationalState {

reference "3GPP TS 28.625 and ITU-T X.731";

type enumeration {

enum DISABLED {

value 0;

description "The resource is totally inoperable.";

}

enum ENABLED {

value 1;

description "The resource is partially or fully operable.";

}

}

}

typedef BasicAdministrativeState {

reference "3GPP TS 28.625 and ITU-T X.731";

type enumeration {

enum LOCKED {

value 0;

description "The resource is administratively prohibited from performing

services for its users.";

}

enum UNLOCKED {

value 1;

description "The resource is administratively permitted to perform

services for its users. This is independent of its inherent

operability.";

}

}

}

typedef AdministrativeState {

reference "3GPP TS 28.625 and ITU-T X.731";

type enumeration {

enum LOCKED {

value 0;

description "The resource is administratively prohibited from performing

services for its users.";

}

enum UNLOCKED {

value 1;

description "The resource is administratively permitted to perform

services for its users. This is independent of its inherent

operability.";

}

enum SHUTTINGDOWN {

value 2;

description "Use of the resource is administratively permitted to

existing instances of use only. While the system remains in

the shutting down state the manager or the managed element

may at any time cause the resource to transition to the

locked state.";

}

}

}

typedef AvailabilityStatus {

type enumeration {

enum IN_TEST;

enum FAILED;

enum POWER_OFF;

enum OFF_LINE;

enum OFF_DUTY;

enum DEPENDENCY;

enum DEGRADED;

enum NOT_INSTALLED;

enum LOG_FULL;

}

}

typedef CellState {

type enumeration {

enum IDLE;

enum INACTIVE;

enum ACTIVE;

}

}

typedef Nrpci {

type uint32;

description "Physical Cell Identity (PCI) of the NR cell.";

reference "TS 36.211 subclause 6.11";

}

typedef Tac {

type int32 {

range 0..16777215 ;

}

description "Tracking Area Code";

reference "TS 23.003 clause 19.4.2.3";

}

typedef AmfRegionId {

type union {

type uint8 ;

type string {

length 8;

pattern ‘[01]*’;

}

}

reference "clause 2.10.1 of 3GPP TS 23.003";

}

typedef AmfSetId {

type union {

type uint16 {

range ‘0..1023’;

}

type string {

length 8;

pattern ‘[01]*’;

}

}

reference "clause 2.10.1 of 3GPP TS 23.003";

}

typedef AmfPointer {

type union {

type uint8 {

range ‘0..63’;

}

type string {

length 6;

pattern ‘[01]*’;

}

}

reference "clause 2.10.1 of 3GPP TS 23.003";

}

grouping AmfIdentifier {

leaf amfRegionId {

type AmfRegionId;

}

leaf amfSetId {

type AmfSetId;

}

leaf amfPointer {

type AmfPointer;

}

description "The AMFI is constructed from an AMF Region ID,

an AMF Set ID and an AMF Pointer.

The AMF Region ID identifies the region,

the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and

the AMF Pointer uniquely identifies the AMF within the AMF Set. ";

}

// type definitions especially for core NFs

typedef NfType {

type enumeration {

enum NRF;

enum UDM;

enum AMF;

enum SMF;

enum AUSF;

enum NEF;

enum PCF;

enum SMSF;

enum NSSF;

enum UDR;

enum LMF;

enum GMLC;

enum 5G_EIR;

enum SEPP;

enum UPF;

enum N3IWF;

enum AF;

enum UDSF;

enum BSF;

enum CHF;

}

}

typedef NotificationType {

type enumeration {

enum N1_MESSAGES;

enum N2_INFORMATION;

enum LOCATION_NOTIFICATION;

}

}

typedef Load {

description "Latest known load information of the NF, percentage ";

type uint8 {

range 0..100;

}

}

typedef N1MessageClass {

type enumeration {

enum 5GMM;

enum SM;

enum LPP;

enum SMS;

}

}

typedef N2InformationClass {

type enumeration {

enum SM;

enum NRPPA;

enum PWS;

enum PWS_BCAL;

enum PWS_RF;

}

}

grouping DefaultNotificationSubscription {

leaf notificationType {

type NotificationType;

}

leaf callbackUri {

type inet:uri;

}

leaf n1MessageClass {

type N1MessageClass;

}

leaf n2InformationClass {

type N2InformationClass;

}

}

grouping Ipv4AddressRange {

leaf start {

type inet:ipv4-address;

}

leaf end {

type inet:ipv4-address;

}

}

grouping Ipv6PrefixRange {

leaf start {

type inet:ipv6-prefix;

}

leaf end {

type inet:ipv6-prefix;

}

}

typedef NsiId {

type string;

}

typedef UeMobilityLevel {

type enumeration {

enum STATIONARY;

enum NOMADIC;

enum RESTRICTED_MOBILITY;

enum FULLY_MOBILITY;

}

}

typedef ResourceSharingLevel {

type enumeration {

enum SHARED;

enum NOT_SHARED;

}

}

typedef TxDirection {

type enumeration {

enum DL;

enum UL;

enum DL_AND_UL;

}

}

grouping AddressWithVlan {

leaf ipAddress {

type inet:ip-address;

}

leaf vlanId {

type uint16;

}

}

typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ?

type string {

pattern ‘([a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])’

+ ‘((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,])*’

+ ‘(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?’

+ ‘[,\+])*[a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])’

+ ‘((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})’

+ ‘|[^\\><;"+,])*(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?’;

}

description "Represents the international standard for the representation

of Distinguished Name (RFC 4512).

The format of the DistinguishedName REGEX is:

{AttributeType = AttributeValue}

AttributeType consists of alphanumeric and hyphen (OIDs not allowed).

All other characters are restricted.

The Attribute value cannot contain control characters or the

following characters : \\ > < ; \" + , (Comma) and White space

The Attribute value can contain the following characters if they

are excaped : \\ > < ; \" + , (Comma) and White space

The Attribute value can contain control characters if its an escaped

double digit hex number.

Examples could be

UID=nobody@example.com,DC=example,DC=com

CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US";

reference "RFC 4512 Lightweight Directory Access Protocol (LDAP):

Directory Information Models";

} // recheck regexp it doesn’t handle posix [:cntrl:]

typedef QOffsetRange {

type int8 {

range "-24 | -22 | -20 | -18 | -16 | -14 | -12 | -10 | -8 | -6 | " +

" -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | " +

" 12 | 14 | 16 | 18 | 20 | 22 | 24";

}

units dB;

}

grouping ReportingCtrl {

choice reportingCtrl {

mandatory true;

description "

This choice defines the method for reporting collected performance

metrics to MnS consumers as well as the parameters for configuring the

reporting function. It is a choice between the control parameter

required for the reporting methods, whose presence selects the

reporting method as follows:

– When only the fileReportingPeriod attribute is present, the MnS

producer shall store files on the MnS producer at a location selected

by the MnS producer and, on condition that an appropriate subscription

is in place, inform the MnS consumer about the availability of new

files and the file location using the notifyFileReady notification.

In case the preparation of a file fails, ‘notifyFilePreparationError’

shall be sent instead.

– When the ‘fileReportingPeriod’ and ‘notificationRecipientAddress’

attributes are present, then the MnS producer shall behave like

described for the case that only the ‘fileReportingPeriod’ is present.

In addition, the MnS producer shall create on behalf of the MnS

consumer a subscription, using ‘NtfSubscriptionControl’, for the

notification types ‘notifyMOICreation’ and ‘notifyMOIDeletion’ related

to the ‘File’ instances that will be produced later. In case an existing

subscription does already include the ‘File’ instances to be produced,

no new subscription shall be created. The

‘notificationRecipientAddress’ attribute in the created

‘NtfSubscriptionControl’ instance shall be set to the value of the

‘notificationRecipientAddress’ in the related ‘PerfMetricJob’. This

feature is called implicit notification subscription, as opposed to the

case where the MnS consumer creates the subscription (explicit

notification subscription). When the related ‘PerfMetricJob’ is

deleted, the ‘NtfSubscriptionControl’ instance created due to the

request for implicit subscription shall be deleted as well.

– When only the fileReportingPeriod and fileLocation attributes are

present, the MnS producer shall store the files on a MnS consumer, that

can be any entity such as a file server, at the location specified by

fileLocation. No notification is emitted by the MnS producer.

– When only the streamTarget attribute is present, the MnS producer

shall stream the data to the location specified by streamTarget.

For the file-based reporting methods the fileReportingPeriod attribute

specifies the time window during which collected measurements are

stored into the same file before the file is closed and a new file is

opened.";

case file-based-reporting {

leaf fileReportingPeriod {

type uint32 {

range 1..max;

}

units minutes;

mandatory true;

description "For the file-based reporting method this is the time

window during which collected measurements are stored into the same

file before the file is closed and a new file is opened.

The time-period must be a multiple of the granularityPeriod.

Applicable when the file-based reporting method is supported.";

}

choice reporting-target {

case file-target {

leaf fileLocation {

type string ;

description "Applicable and must be present when the file-based

reporting method is supported, and the files are stored on the MnS

consumer.";

}

}

case notification-target {

leaf notificationRecipientAddress {

type string;

description "Must be present when the notification-based reporting

method is supported, and the the files are available as

notifications for the MnS consumer to subscribe to.";

}

}

description "When netiher fileLocation or notificationRecipientAddress

are present, the files are stored and available to the MnS consumer

if the MnS subscribes to the notifyFileReady notification.";

}

}

case stream-based-reporting {

leaf streamTarget {

type string;

mandatory true;

description "Applicable when stream-based reporting method is

supported.";

}

}

}

}

}

<CODE ENDS>

D.2.9 module _3gpp-common-fm.yang

<CODE BEGINS>

module _3gpp-common-fm {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-fm";

prefix "fm3gpp";

import ietf-yang-types { prefix yang; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types { prefix types3gpp; }

import _3gpp-common-yang-extensions { prefix yext3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines a Fault Management model";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)";

revision 2022-10-31 { reference CR-0195; }

revision 2021-08-08 { reference "CR-0132"; }

revision 2021-06-02 { reference "CR-0130"; }

revision 2020-06-03 { reference "CR-0091"; }

revision 2020-02-24 {

reference "S5-201365";

}

typedef eventType {

type enumeration {

enum COMMUNICATIONS_ALARM {

value 2;

}

enum QUALITY_OF_SERVICE_ALARM {

value 3;

}

enum PROCESSING_ERROR_ALARM {

value 4;

}

enum EQUIPMENT_ALARM {

value 5;

}

enum ENVIRONMENTAL_ALARM {

value 6;

}

enum INTEGRITY_VIOLATION {

value 7;

}

enum OPERATIONAL_VIOLATION {

value 8;

}

enum PHYSICAL_VIOLATIONu {

value 9;

}

enum SECURITY_SERVICE_OR_MECHANISM_VIOLATION {

value 10;

}

enum TIME_DOMAIN_VIOLATION {

value 11;

}

}

description "General category for the alarm.";

}

typedef severity-level {

type enumeration {

enum CRITICAL { value 3; }

enum MAJOR { value 4; }

enum MINOR { value 5; }

enum WARNING { value 6; }

enum INDETERMINATE { value 7; }

enum CLEARED { value 8; }

}

description "The possible alarm serverities.

Aligned with ERICSSON-ALARM-MIB.";

}

grouping AlarmRecordGrp {

description "Contains alarm information of an alarmed object instance.

A new record is created in the alarm list when an alarmed object

instance generates an alarm and no alarm record exists with the same

values for objectInstance, alarmType, probableCause and specificProblem.

When a new record is created the MnS producer creates an alarmId, that

unambiguously identifies an alarm record in the AlarmList.

Alarm records are maintained only for active alarms. Inactive alarms are

automatically deleted by the MnS producer from the AlarmList.

Active alarms are alarms whose

a) perceivedSeverity is not CLEARED, or whose

b) perceivedSeverity is CLEARED and its ackState is not ACKNOWLEDED.";

leaf alarmId {

type string;

mandatory true;

description "Identifies the alarmRecord";

yext3gpp:notNotifyable;

}

leaf objectInstance {

type string;

config false ;

mandatory true;

yext3gpp:notNotifyable;

}

leaf notificationId {

type int32;

config false ;

mandatory true;

yext3gpp:notNotifyable;

}

leaf alarmRaisedTime {

type yang:date-and-time ;

config false ;

yext3gpp:notNotifyable;

}

leaf alarmChangedTime {

type yang:date-and-time ;

config false ;

description "not applicable if related alarm has not changed";

yext3gpp:notNotifyable;

}

leaf alarmClearedTime {

type yang:date-and-time ;

config false ;

description "not applicable if related alarm was not cleared";

yext3gpp:notNotifyable;

}

leaf alarmType {

type eventType;

config false ;

description "General category for the alarm.";

yext3gpp:notNotifyable;

}

leaf probableCause {

type string;

config false ;

yext3gpp:notNotifyable;

}

leaf specificProblem {

type string;

config false ;

reference "ITU-T Recommendation X.733 clause 8.1.2.2.";

yext3gpp:notNotifyable;

}

leaf perceivedSeverity {

type severity-level;

description "This is Writable only if producer supports consumer

to set perceivedSeverity to CLEARED";

yext3gpp:notNotifyable;

}

leaf backedUpStatus {

type string;

config false ;

description "Indicates if an object (the MonitoredEntity) has a back

up. See definition in ITU-T Recommendation X.733 clause 8.1.2.4.";

yext3gpp:notNotifyable;

}

leaf backUpObject {

type string;

config false ;

yext3gpp:notNotifyable;

}

leaf trendIndication {

type string;

config false ;

description "Indicates if some observed condition is getting better,

worse, or not changing. ";

reference "ITU-T Recommendation X.733 clause 8.1.2.6.";

yext3gpp:notNotifyable;

}

grouping ThresholdPackGrp {

leaf thresholdLevel {

type string;

}

leaf thresholdValue {

type string;

}

leaf hysteresis {

type string;

description "The hysteresis has a threshold high and a threshold

low value that are different from the threshold value.

A hysteresis, therefore, defines the threshold-high and

threshold-low levels within which the measurementType value is

allowed to oscillate without triggering the threshold crossing

notification.";

}

}

grouping ThresholdInfoGrp {

leaf measurementType {

type string;

mandatory true;

}

leaf direction {

type enumeration {

enum INCREASING;

enum DECREASING;

}

mandatory true;

description "

If it is ‘Increasing’, the threshold crossing notification is

triggered when the measurement value equals or exceeds a

thresholdValue.

If it is ‘Decreasing’, the threshold crossing notification is

triggered when the measurement value equals or below a

thresholdValue.";

}

uses ThresholdPackGrp;

}

list thresholdInfo {

config false ;

uses ThresholdInfoGrp;

yext3gpp:notNotifyable;

}

leaf stateChangeDefinition {

type string;

config false ;

description "Indicates MO attribute value changes. See definition

in ITU-T Recommendation X.733 clause 8.1.2.11.";

yext3gpp:notNotifyable;

}

leaf monitoredAttributes {

type string;

config false ;

description "Indicates MO attributes whose value changes are being

monitored.";

reference "ITU-T Recommendation X.733 clause 8.1.2.11.";

yext3gpp:notNotifyable;

}

leaf proposedRepairActions {

type string;

config false ;

description "Indicates proposed repair actions. See definition in

ITU-T Recommendation X.733 clause 8.1.2.12.";

yext3gpp:notNotifyable;

}

leaf additionalText {

type string;

config false ;

yext3gpp:notNotifyable;

}

anydata additionalInformation {

config false ;

yext3gpp:notNotifyable;

}

leaf rootCauseIndicator {

type enumeration {

enum YES;

enum NO;

}

config false ;

description "It indicates that this AlarmInformation is the root cause

of the events captured by the notifications whose identifiers are in

the related CorrelatedNotification instances.";

yext3gpp:notNotifyable;

}

leaf ackTime {

type yang:date-and-time ;

config false ;

description "It identifies the time when the alarm has been

acknowledged or unacknowledged the last time, i.e. it registers the

time when ackState changes.";

yext3gpp:notNotifyable;

}

leaf ackUserId {

type string;

description "It identifies the last user who has changed the

Acknowledgement State.";

yext3gpp:notNotifyable;

}

leaf ackSystemId {

type string;

description "It identifies the system (Management System) that last

changed the ackState of an alarm, i.e. acknowledged or unacknowledged

the alarm.";

yext3gpp:notNotifyable;

}

leaf ackState {

type enumeration {

enum ACKNOWLEDGED {

description "The alarm has been acknowledged.";

}

enum UNACKNOWLEDGED {

description "The alarm has unacknowledged or the alarm has never

been acknowledged.";

}

}

yext3gpp:notNotifyable;

}

leaf clearUserId {

type string;

description "Carries the identity of the user who invokes the

clearAlarms operation.";

yext3gpp:notNotifyable;

}

leaf clearSystemId {

type string;

yext3gpp:notNotifyable;

}

leaf serviceUser {

type string;

config false ;

description "It identifies the service-user whose request for service

provided by the serviceProvider led to the generation of the

security alarm.";

yext3gpp:notNotifyable;

}

leaf serviceProvider {

type string;

config false ;

description "It identifies the service-provider whose service is

requested by the serviceUser and the service request provokes the

generation of the security alarm.";

yext3gpp:notNotifyable;

}

leaf securityAlarmDetector {

type string;

config false ;

yext3gpp:notNotifyable;

}

}

grouping AlarmListGrp {

description "Represents the AlarmList IOC.";

leaf administrativeState {

type types3gpp:AdministrativeState ;

default LOCKED;

description "When set to UNLOCKED, the alarm list is updated.

When the set to LOCKED, the existing alarm records are not

updated, and new alarm records are not added to the alarm list.";

}

leaf operationalState {

type types3gpp:OperationalState ;

default DISABLED;

config false;

description "The producer sets this attribute to ENABLED, indicating

that it has the resource and ability to record alarm in AlarmList

else, it sets the attribute to DISABLED.";

}

leaf numOfAlarmRecords {

type uint32 ;

config false;

mandatory true;

description "The number of alarm records in the AlarmList";

yext3gpp:notNotifyable;

}

leaf lastModification {

type yang:date-and-time ;

config false;

description "The last time when an alarm record was modified";

yext3gpp:notNotifyable;

}

list alarmRecords {

key alarmId;

description "List of alarmRecords";

uses AlarmRecordGrp;

yext3gpp:notNotifyable;

}

}

grouping FmSubtree {

description "Contains FM related classes.

Should be used in all classes (or classes inheriting from)

– SubNetwork

– ManagedElement

If some YAM wants to augment these classes/list/groupings they must

augment all user classes!";

list AlarmList {

key id;

max-elements 1;

description "The AlarmList represents the capability to store and manage

alarm records. The management scope of an AlarmList is defined by all

descendant objects of the base managed object, which is the object

name-containing the AlarmList, and the base object itself.

AlarmList instances are created by the system or are pre-installed.

They cannot be created nor deleted by MnS consumers.

When the alarm list is locked or disabled, the existing alarm records

are not updated, and new alarm records are not added to the alarm list";

uses top3gpp:Top_Grp ;

container attributes {

uses AlarmListGrp ;

}

}

}

}

<CODE ENDS>

D.2.10 module _3gpp-common-trace.yang

<CODE BEGINS>

module _3gpp-common-trace {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-trace";

prefix "trace3gpp";

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types {prefix types3gpp; }

import ietf-inet-types { prefix inet; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Trace handling";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)";

revision 2022-04-27 { reference "CR-0159"; }

revision 2021-10-18 { reference "CR-0139"; }

revision 2021-07-22 { reference "CR-0137"; }

revision 2021-01-25 { reference "CR-0122"; }

revision 2020-11-16 { reference "CR-0117"; }

revision 2020-08-06 { reference "CR-0102"; }

grouping TraceJobGrp {

leaf tjJobType {

type enumeration {

enum IMMEDIATE_MDT_ONLY;

enum LOGGED_MDT_ONLY;

enum TRACE_ONLY;

enum IMMEDIATE_MDT_AND_TRACE;

enum RLF_REPORT_ONLY;

enum RCEF_REPORT_ONLY;

enum LOGGED_MBSFN_MDT;

}

default TRACE_ONLY;

description "Specifies the MDT mode and it specifies also whether the

TraceJob represents only MDT, Logged MBSFN MDT, Trace or a combined

Trace and MDT job. The attribute is applicable for Trace, MDT, RCEF and

RLF reporting.";

reference "Clause 5.9a of 3GPP TS 32.422 for additional details on the

allowed values.";

}

list tjListOfInterfaces {

key idx;

must ‘count(MSCServerInterfaces)+count(MGWInterfaces)+count(RNCInterfaces)’

+’+count(SGSNInterfaces)+count(GGSNInterfaces)+count(S-CSCFInterfaces)’

+’+count(P-CSCFInterfaces)+count(I-CSCFInterfaces)+count(MRFCInterfaces)’

+’+count(MGCFInterfaces)+count(IBCFInterfaces)+count(E-CSCFInterfaces)’

+’+count(BGCFInterfaces)+count(ASInterfaces)+count(HSSInterfaces)’

+’+count(EIRInterfaces)+count(BM-SCInterfaces)+count(MMEInterfaces)’

+’+count(SGWInterfaces)+count(PDN_GWInterfaces)+count(eNBInterfaces)’

+’+count(en-gNBInterfaces)+count(AMFInterfaces)+count(AUSFInterfaces)’

+’+count(NEFInterfaces)+count(NRFInterfaces)+count(NSSFInterfaces)’

+’+count(PCFInterfaces)+count(SMFInterfaces)+count(SMSFInterfaces)’

+’+count(UDMInterfaces)+count(UPFInterfaces)+count(ng-eNBInterfaces)’

+’+count(gNB-CU-CPInterfaces)+count(gNB-CU-UPInterfaces)’

+’+count(gNB-DUInterfaces)’;

description "Specifies the interfaces that need to be traced in the given

ManagedEntityFunction.The attribute is applicable only for Trace. In

case this attribute is not used, it carries a null semantic.";

reference "Clause 5.5 of 3GPP TS 32.422 for additional details on the

allowed values.";

leaf idx { type uint32 ; }

leaf-list MSCServerInterfaces {

type enumeration {

enum A ;

enum Iu-CS ;

enum Mc ;

enum MAP-G ;

enum MAP-B ;

enum MAP-E ;

enum MAP-F ;

enum MAP-D ;

enum MAP-C ;

enum CAP ;

}

}

leaf-list MGWInterfaces {

type enumeration {

enum Mc ;

enum Nb-UP ;

enum Iu-UP ;

}

}

leaf-list RNCInterfaces {

type enumeration {

enum Iu-CS ;

enum Iu-PS ;

enum Iur ;

enum Iub ;

enum Uu ;

}

}

leaf-list SGSNInterfaces {

type enumeration {

enum Gb ;

enum Iu-PS ;

enum Gn ;

enum MAP-Gr ;

enum MAP-Gd ;

enum MAP-Gf ;

enum Ge ;

enum Gs ;

enum S6d ;

enum S4 ;

enum S3 ;

enum S13 ;

}

}

leaf-list GGSNInterfaces {

type enumeration {

enum Gn ;

enum Gi ;

enum Gmb ;

}

}

leaf-list S-CSCFInterfaces {

type enumeration {

enum Mw ;

enum Mg ;

enum Mr ;

enum Mi ;

}

}

leaf-list P-CSCFInterfaces {

type enumeration {

enum Gm ;

enum Mw ;

}

}

leaf-list I-CSCFInterfaces {

type enumeration {

enum Cx ;

enum Dx ;

enum Mg ;

enum Mw ;

}

}

leaf-list MRFCInterfaces {

type enumeration {

enum Mp ;

enum Mr ;

}

}

leaf-list MGCFInterfaces {

type enumeration {

enum Mg ;

enum Mj ;

enum Mn ;

}

}

leaf-list IBCFInterfaces {

type enumeration {

enum Ix ;

enum Mx ;

}

}

leaf-list E-CSCFInterfaces {

type enumeration {

enum Mw ;

enum Ml ;

enum Mm ;

enum Mi-Mg ;

}

}

leaf-list BGCFInterfaces {

type enumeration {

enum Mi ;

enum Mj ;

enum Mk ;

}

}

leaf-list ASInterfaces {

type enumeration {

enum Dh ;

enum Sh ;

enum ISC ;

enum Ut ;

}

}

leaf-list HSSInterfaces {

type enumeration {

enum MAP-C ;

enum MAP-D ;

enum Gc ;

enum Gr ;

enum Cx ;

enum S6d ;

enum S6a ;

enum Sh ;

}

}

leaf-list EIRInterfaces {

type enumeration {

enum MAP-F ;

enum S13 ;

enum MAP-Gf ;

}

}

leaf-list BM-SCInterfaces {

type enumeration {

enum Gmb ;

}

}

leaf-list MMEInterfaces {

type enumeration {

enum S1-MME ;

enum S3 ;

enum S6a ;

enum S10 ;

enum S11 ;

enum S13 ;

}

}

leaf-list SGWInterfaces {

type enumeration {

enum S4 ;

enum S5 ;

enum S8 ;

enum S11 ;

enum Gxc ;

}

}

leaf-list PDN_GWInterfaces {

type enumeration {

enum S2a ;

enum S2b ;

enum S2c ;

enum S5 ;

enum S6b ;

enum Gx ;

enum S8 ;

enum SGi ;

}

}

leaf-list eNBInterfaces {

type enumeration {

enum S1-MME ;

enum X2 ;

}

}

leaf-list en-gNBInterfaces {

type enumeration {

enum S1-MME ;

enum X2 ;

enum Uu ;

enum F1-C ;

enum E1 ;

}

}

leaf-list AMFInterfaces {

type enumeration {

enum N1 ;

enum N2 ;

enum N8 ;

enum N11 ;

enum N12 ;

enum N14 ;

enum N15 ;

enum N20 ;

enum N22 ;

enum N26 ;

}

}

leaf-list AUSFInterfaces {

type enumeration {

enum N12 ;

enum N13 ;

}

}

leaf-list NEFInterfaces {

type enumeration {

enum N29 ;

enum N30 ;

enum N33 ;

}

}

leaf-list NRFInterfaces {

type enumeration {

enum N27 ;

}

}

leaf-list NSSFInterfaces {

type enumeration {

enum N22 ;

enum N31 ;

}

}

leaf-list PCFInterfaces {

type enumeration {

enum N5 ;

enum N7 ;

enum N15 ;

}

}

leaf-list SMFInterfaces {

type enumeration {

enum N4 ;

enum N7 ;

enum N10 ;

enum N11 ;

enum S5-C ;

}

}

leaf-list SMSFInterfaces {

type enumeration {

enum N20 ;

enum N21 ;

}

}

leaf-list UDMInterfaces {

type enumeration {

enum N8 ;

enum N10 ;

enum N13 ;

enum N21 ;

}

}

leaf-list UPFInterfaces {

type enumeration {

enum N4 ;

}

}

leaf-list ng-eNBInterfaces {

type enumeration {

enum NG-C ;

enum Xn-C ;

enum Uu ;

}

}

leaf-list gNB-CU-CPInterfaces {

type enumeration {

enum NG-C ;

enum Xn-C ;

enum Uu ;

enum F1-C ;

enum E1 ;

enum X2-C ;

}

}

leaf-list gNB-CU-UPInterfaces {

type enumeration {

enum E1 ;

}

}

leaf-list gNB-DUInterfaces {

type enumeration {

enum F1-C ;

}

}

}

leaf-list tjListOfNeTypes {

type enumeration {

enum MSC_SERVER;

enum SGSN;

enum MGW;

enum GGSN;

enum RNC;

enum BM_SC;

enum MME;

enum SGW;

enum PGW;

enum ENB;

enum EN_GNB;

enum GNB_CU_CP;

enum GNB_CU_UP;

enum GNB_DU;

}

description "Specifies in which type of ManagedFunction the trace should

be activated. The attribute is applicable only for Trace with

Signalling Based Trace activation. In case this attribute is not used,

it carries a null semantic";

reference "Clause 5.4 of 3GPP TS 32.422 for additional details on the

allowed values";

}

leaf tjPLMNTarget {

type string;

mandatory true;

description "Specifies which PLMN that the subscriber of the session to

be recorded uses as selected PLMN. PLMN Target might differ from the

PLMN specified in the Trace Reference";

reference "Clause 5.9b of 3GPP TS 32.422";

}

leaf tjStreamingTraceConsumerURI {

when ‘../tjTraceReportingFormat = "STREAMING"’;

type inet:uri;

mandatory true;

description "URI of the Streaming Trace data reporting MnS consumer

(a.k.a. streaming target).

This attribute shall be present if file based trace data reporting is

supported and tjTraceReportingFormat set to ‘file based’ or when

tjJobType is set to Logged MDT or Logged MBSFN MDT.";

reference "Clause 5.9 of 3GPP TS 32.422";

}

leaf tjTraceCollectionEntityAddress {

when ‘../tjTraceReportingFormat = "FILE_BASED" or ‘

+’../tjJobType = "LOGGED_MDT_ONLY" or ../tjJobType = "LOGGED_MBSFN_MDT"’;

type union {

type inet:uri;

type inet:ip-address;

}

mandatory true;

description "Specifies the address of the Trace Collection Entity when

the attribute tjTraceReportingFormat is configured for the file-based

reporting. The attribute is applicable for both Trace and MDT.";

reference "Clause 5.9 of 3GPP TS 32.422";

}

leaf tjTraceDepth {

when ‘../tjJobType = "TRACE_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type enumeration {

enum MINIMUM;

enum MEDIUM;

enum MAXIMUM;

enum VENDORMINIMUM;

enum VENDORMEDIUM;

enum VENDORMAXIMUM;

}

default MAXIMUM;

description "Specifies how detailed information should be recorded in the

Network Element. The Trace Depth is a paremeter for Trace Session level,

i.e., the Trace Depth is the same for all of the NEs to be traced in

the same Trace Session.

The attribute is applicable only for Trace, otherwise it carries a null

semantic.";

reference "Clause 5.3 of 3GPP TS 32.422";

}

leaf tjTraceReference {

type uint64;

mandatory true;

description "A globally unique identifier, which uniquely identifies the

Trace Session that is created by the TraceJob.

In case of shared network, it is the MCC and MNC of the Participating

Operator that request the trace session that shall be provided.

The attribute is applicable for both Trace and MDT.";

}

leaf tjTraceRecordSessionReference {

type string;

mandatory true;

description "An identifier, which identifies the Trace Recording Session.

The attribute is applicable for both Trace and MDT.

See the clause 5.7 of 3GPP TS 32.422 for additional details on the

allowed values.";

}

leaf tjTraceReportingFormat {

type enumeration {

enum FILE_BASED;

enum STREAMING;

}

default FILE_BASED;

description "Specifies the trace reporting format – streaming trace

reporting or file-based trace reporting";

reference "3GPP TS 32.422 clause 5.11";

}

list tjTraceTarget {

key "targetIdType targetIdValue";

max-elements 1;

leaf targetIdType {

type enumeration {

enum IMSI;

enum IMEI;

enum IMEISV;

enum PUBLIC_ID;

enum UTRAN_CELL;

enum E_UTRAN_CELL;

enum NG_RAN_CELL;

enum ENB;

enum RNC;

enum GNB;

enum SUPI;

}

}

leaf targetIdValue {

type string;

}

description "Specifies the target object of the Trace and MDT. The

attribute is applicable for both Trace and MDT. This attribute

includes the ID type of the target as an enumeration and the ID value.

The tjTraceTarget shall be public ID in case of a Management Based

Activation is done to an ScscfFunction. The tjTraceTarget shall be

cell only in case of the UTRAN cell traffic trace function.

The tjTraceTarget shall be E-UtranCell only in case of E-UTRAN cell

traffic trace function.The tjTraceTarget shall be either IMSI or

IMEI(SV) if the Trace Session is activated to any of the following

ManagedEntity(ies):

– HssFunction

– MscServerFunction

– SgsnFunction

– GgsnFunction

– BmscFunction

– RncFunction

– MmeFunction

The tjTraceTarget shall be IMSI if the Trace Session is activated to a

ManagedEntity playing a role of ServinGWFunction.

In case of signaling based Trace/MDT, the tjTraceTarget attribute shall

be able to carry (IMSI or IMEI(SV)or SUPI), the tjMDTAreaScope attribute

shall be able to carry a list of (cell or E-UtranCell or NRCellDU or

TA/LA/RA).

In case of management based Immediate MDT, the tjTraceTarget attribute

shall be null value, the tjMDTAreaScope attribute shall carry a list of

(Utrancell or E-UtranCell or NRCellDU).

In case of management based Logged MDT, the tjTraceTarget attribute

shall carry an eBs or a RNC or gNBs. The Logged MDT should be initiated

on the specified eNB or RNC or gNB in tjTraceTarget. The tjMDTAreaScope

attribute shall carry a list of (Utrancell or E-UtranCell or NRCellDU or

TA/LA/RA).

In case of RLF reporting, or RCEF reporting, the tjTraceTarget

attribute shall be null value, the tjMDTAreaScope attribute shall carry

one or list of eNBs/gNBs";

reference "3GPP TS 32.422";

}

leaf tjTriggeringEvent {

when ‘../tjJobType = "TRACE_ONLY" or ‘ +

‘../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type string ;

mandatory true;

description "Specifies the triggering event parameter of the trace session.

The attribute is applicable only for Trace. In case this attribute is

not used, it carries a null semantic.";

reference "Clause 5.1 of 3GPP TS 32.422";

}

leaf tjMDTAnonymizationOfData {

when ../tjMDTAreaScope ;

type enumeration {

enum NO_IDENTITY;

enum TAC_OF_IMEI;

}

default NO_IDENTITY;

description "Specifies level of MDT anonymization.";

reference "3GPP TS 32.422 clause 5.10.12.";

}

list tjMDTAreaConfigurationForNeighCell {

when ‘../tjJobType = "LOGGED_MDT_ONLY"’;

key "idx";

min-elements 1;

leaf idx { type uint32 ; }

description "It specifies the area for which UE is requested to perform

measurement logging for neighbour cells which have list of frequencies.

If it is not configured, the UE shall perform measurement logging for

all the neighbour cells.

Applicable only to NR Logged MDT.";

reference "3GPP TS 32.422 clause 5.10.26.";

leaf frequency {

type string;

}

leaf cell {

type string;

}

}

leaf-list tjMDTAreaScope {

type string;

description "specifies MDT area scope when activates an MDT job.

For RLF and RCEF reporting it specifies the eNB or list of eNBs where the

RLF or RCEF reports should be collected.

List of cells/TA/LA/RA for signaling based MDT or management based Logged

MDT.

List of cells for management based Immediate MDT.

Cell, TA, LA, RA are mutually exclusive.

One or list of eNBs for RLF and RCEFreporting";

reference "Clause 5.10.2 of 3GPP TS 32.422";

}

leaf tjMDTCollectionPeriodRrmLte {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "250|500|1000|2000|3000|4000|6000|8000|12000|16000|20000|"

+"24000|28000|32000|64000";

}

units milliseconds;

description "Specifies the collection period for collecting RRM configured

measurement samples for M2, M3 in LTE. The attribute is applicable only

for Immediate MDT. In case this attribute is not used, it carries a

null semantic.";

reference "Clause 5.10.20 of 3GPP TS 32.422";

}

leaf tjMDTCollectionPeriodM6Lte {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "1024|2048|5120|10240";

}

units milliseconds;

description "Specifies the collection period for the Packet Delay

measurement (M6) for MDT taken by the eNB. The attribute is applicable

only for Immediate MDT. In case this attribute is not used,

it carries a null semantic.";

reference "Clause 5.10.32 of TS 32.422 ";

}

leaf tjMDTCollectionPeriodM7Lte {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint16 {

range 1..60 ;

}

description "It specifies the collection period for the Data Volume (M6)

and Throughput measurements (M7) for UMTS MDT taken by RNC. The

attribute is applicable only for Immediate MDT. In case this attribute

is not used, it carries a null semantic.";

reference "Clause 5.10.22 of TS 32.422 .";

}

leaf tjMDTCollectionPeriodRrmUmts {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "1024|1280|2048|2560|5120|"

+"10240|60000";

}

units milliseconds;

description "Specifies the collection period for collecting RRM configured

measurement samples for M3, M4, M5 in UMTS. The attribute is applicable

only for Immediate MDT. In case this attribute is not used, it carries

a null semantic";

reference "Clause 5.10.21 of 3GPP TS 32.422";

}

leaf tjMDTCollectionPeriodRrmNR {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "1024|2048|5120|10240|60000";

}

units milliseconds;

description "Specifies the collection period for collecting RRM

configured measurement samples for M4, M5 in NR. The attribute is

applicable only for Immediate MDT. In case this attribute is not

used, it carries a null semantic.";

reference "Clause 5.10.30 of 3GPP TS 32.422";

}

leaf tjMDTCollectionPeriodM6NR {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type enumeration {

enum 120ms;

enum 240ms;

enum 480ms;

enum 640ms;

enum 1024ms;

enum 2048ms;

enum 5120ms;

enum 10240ms;

enum 20480ms;

enum 40960ms;

enum 1min;

enum 6min;

enum 12min;

enum 30min;

}

description "It specifies the collection period for the Packet Delay

measurement (M6) for NR MDT taken by the gNB. The attribute is

applicable only for Immediate MDT. In case this attribute is not used,

it carries a null semantic.";

reference "clause 5.10.34 of TS 32.422";

}

leaf tjMDTCollectionPeriodM7NR {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "1..60";

}

description "It specifies the collection period for the Packet Loss Rate

measurement (M7) for NR MDT taken by the gNB. The attribute is

applicable only for Immediate MDT. In case this attribute is not used,

it carries a null semantic.";

reference "clause 5.10.35 of TS 32.422";

}

leaf tjMDTEventListForTriggeredMeasurement {

when ‘../tjJobType = "LOGGED_MDT_ONLY"’;

type enumeration {

enum OUT_OF_COVERAGE ;

enum A2_EVENT ;

}

mandatory true;

description "Specifies event types for event triggered measurement in the

case of logged NR MDT. Each trace session may configure at most one

event. The UE shall perform logging of measurements only upon certain

condition being fulfilled:

– Out of coverage.

– A2 event.";

reference "Clause 5.10.28 of 3GPP TS 32.422";

}

leaf tjMDTEventThreshold {

type int64;

description "Specifies the threshold which should trigger the reporting

in case A2 event reporting in LTE or 1F/1l event in UMTS. The attribute

is applicable only for Immediate MDT and when reportingTrigger is

configured for A2 event in LTE or 1F event or 1l event in UMTS. In

case this attribute is not used, it carries a null semantic.";

reference "Clauses 5.10.7 and 5.10.7a of 3GPP TS 32.422";

}

leaf tjMDTListOfMeasurements {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’;

type int64;

mandatory true;

description "It specifies the UE measurements that shall be collected in

an Immediate MDT job. The attribute is applicable only for Immediate MDT.

In case this attribute is not used, it carries a null semantic.";

reference "3GPP TS 32.422 clause 5.10.3";

}

leaf tjMDTLoggingDuration {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or’

+ ‘ ../tjJobType = "LOGGED_MBSFN_MDT"’;

type uint32 {

range "600|1200|2400|3600|5400|7200";

}

units seconds;

mandatory true;

description "Specifies how long the MDT configuration is valid at the

UE in case of Logged MDT. The attribute is applicable only for

Logged MDT and Logged MBSFN MDT. In case this attribute is not used, it

carries a null semantic.";

reference "5.10.9 of 3GPP TS 32.422";

}

leaf tjMDTLoggingInterval {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or’

+ ‘ ../tjJobType = "LOGGED_MBSFN_MDT"’;

type uint32 {

range "1280|2560|5120|10240|20480|"

+"30720|40960|61440";

}

units milliseconds;

mandatory true;

description "Specifies the periodicty for Logged MDT. The attribute is

applicable only for Logged MDT and Logged MBSFN MDT. In case this

attribute is not used, it carries a null semantic";

reference "5.10.8 of 3GPP TS 32.422";

}

leaf tjMDTLoggingEventThreshold {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or’

+ ‘ ../tjJobType = "LOGGED_MBSFN_MDT"’;

type uint32 {

range "0..127";

}

description "It specifies the threshold which should trigger

the reporting in case of event based reporting of logged NR MDT.

The attribute is applicable only for Logged MDT and when tjMDTReportType

is configured for event triggered reporting and when

tjMDTEventListForTriggeredMeasurement is configured for L1 event.

In case this attribute is not used, it carries a null semantic.";

reference "clause 5.10.36 of TS 32.422";

}

leaf tjMDTLoggedHysteresis {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or ‘

+ ‘../tjJobType = "LOGGED_MBSFN_MDT"’;

type uint32 {

range "0..30";

}

description "It specifies the hysteresis used within the entry and leave

condition of the L1 event based reporting of logged NR MDT.

The attribute is applicable only for Logged MDT, when tjMDTReportType

is configured for event triggered reporting and when

tjMDTEventListForTriggeredMeasurement is configured for L1 event.

In case this attribute is not used, it carries a null semantic.";

reference "clause 5.10.37 of TS 32.422";

}

leaf tjMDTLoggedTimeToTrigger {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or ‘

+ ‘../tjJobType = "LOGGED_MBSFN_MDT"’;

type int32 ;

description "It specifies the threshold which should trigger

the reporting in case of event based reporting of logged NR MDT.

The attribute is applicable only for Logged MDT, when tjMDTReportType

is configured for event triggered reporting and when

tjMDTEventListForTriggeredMeasurement is configured for L1 event.

In case this attribute is not used, it carries a null semantic.";

reference "clauses 5.10.38 of TS 32.422";

}

leaf-list tjMDTMBSFNAreaList {

when ‘../tjJobType = "LOGGED_MBSFN_MDT"’;

type string;

min-elements 1;

max-elements 8;

description "The MBSFN Area consists of a MBSFN Area ID and Carrier

Frequency (EARFCN). The target MBSFN area List can have up to 8 entries.

This parameter is applicable only if the job type is Logged MBSFN MDT.";

reference "5.10.25 of 3GPP TS 32.422";

}

leaf tjMDTMeasurementPeriodLTE {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "1024|1280|2048|2560|5120|"

+"10240|60000";

}

units milliseconds;

mandatory true;

description "It specifies the measurement period for the Data Volume and

Scheduled IP throughput measurements for MDT taken by the eNB.

The attribute is applicable only for Immediate MDT. In case this

attribute is not used, it carries a null semantic.";

reference "Clause 5.10.23 of 3GPP TS 32.422";

}

leaf tjMDTMeasurementPeriodUMTS {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint32 {

range "250|500|1000|2000|3000|4000|6000|8000|12000|16000|20000|"

+"24000|28000|32000|64000";

}

units milliseconds;

mandatory true;

description "It specifies the measurement period for the Data Volume and

Throughput measurements for MDT taken by RNC.

The attribute is applicable only for Immediate MDT. In case this

attribute is not used, it carries a null semantic.";

reference "Clause 5.10.22 of 3GPP TS 32.422";

}

leaf tjMDTMeasurementQuantity {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint64 ;

mandatory true;

description "It specifies the measurements that are collected in an MDT

job for a UMTS MDT configured for event triggered reporting.";

reference "Clause 5.10.15 of 3GPP TS 32.422";

}

leaf tjMDTM4ThresholdUmts {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type uint16 {

range 0..31 ;

}

description "It specifies the threshold which should trigger

the reporting in case of event-triggered periodic reporting for M4

(UE power headroom measurement) in UMTS. In case this attribute is

not used, it carries a null semantic.";

reference "3GPP TS 32.422 clause 5.10.A";

}

list tjMDTPLMList {

when ‘../tjJobType = "LOGGED_MDT_ONLY"’;

key "mcc mnc";

uses types3gpp:PLMNId;

min-elements 1;

max-elements 16;

description "It indicates the PLMNs where measurement collection, status

indication and log reporting is allowed.";

reference "Clause 5.10.24 of 3GPP TS 32.422";

}

leaf tjMDTPositioningMethod {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ or ../tjJobType = "IMMEDIATE_MDT_AND_TRACE"’;

type enumeration {

enum GNSS;

enum E_CELL_ID;

}

mandatory true;

description "It specifies what positioning method should be used in the

MDT job.";

reference "Clause 5.10.19 of 3GPP TS 32.422";

}

leaf tjMDTReportAmount {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ and ../tjMDTReportingTrigger = "PERIODICAL"’;

type union {

type uint32 {

range "1|4|8|16|32|64" ;

}

type enumeration {

enum INFINITY;

}

}

mandatory true;

description "It specifies the number of measurement reports that shall be

taken for periodic reporting while the UE is in connected.

The attribute is applicable only for Immediate MDT and when

tjMDTReportingTrigger is configured for periodical measurements. In

case this attribute is not used, it carries a null semantic.";

reference "Clause 5.10.6 of 3GPP TS 32.422";

}

leaf tjMDTReportingTrigger {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’;

type enumeration {

enum PERIODICAL;

enum A2_FOR_LTE;

enum 1F_FOR_UMTS;

enum 1I_FOR_UMTS_MCPS_TDD;

enum A2_TRIGGERED_PERIODIC_FOR_LTE;

enum ALL_CONFIGURED_RRM_FOR_LTE;

enum ALL_CONFIGURED_RRM_FOR_UMTS;

}

description "It specifies whether periodic or event based measurements

should be collected.

The attribute is applicable only for Immediate MDT and when the

tjMDTListOfMeasurements is configured for M1 (for both UMTS and LTE)

or M2 (only for UMTS). In case this attribute is not used, it carries

a null semantic.";

reference "Clause 5.10.4 of 3GPP TS 32.422";

}

leaf tjMDTReportInterval {

when ‘../tjJobType = "IMMEDIATE_MDT_ONLY"’

+ ‘ and ../tjMDTReportingTrigger = "PERIODICAL"’;

type uint32 {

range "120|240|250|480|500|640|1000|1024|2000|2048|3000|4000|"

+"5120|6000|8000|10240|12000|16000|20000|"

+"24000|28000|32000|60000|64000|"

+"360000|720000|1800000|3600000";

}

units milliseconds;

mandatory true;

description "It specifies the interval between the periodical measurements

that shall be taken when the UE is in connected mode.

The attribute is applicable only for Immediate MDT and when

tjMDTReportingTrigger is configured for periodical measurements. In case

this attribute is not used, it carries a null semantic.";

reference "5.10.5 of 3GPP TS 32.422";

}

leaf tjMDTReportType {

when ‘../tjJobType = "LOGGED_MDT_ONLY"’;

type enumeration {

enum PERIODICAL;

enum EVENT_TRIGGERED;

}

mandatory true;

description "It specifies report type for logged NR MDT";

reference "Clause 5.10.27 of 3GPP TS 32.422";

}

leaf tjMDTSensorInformation {

type bits {

bit BAROMETRIC_PRESSURE;

bit UE_SPEED;

bit UE_ORIENTATION;

}

default "";

description "It specifies which sensor information shall be included in

logged NR MDT and immediate NR MDT measurement if they are available.

The following sensor measurement can be included or excluded for

the UE.";

reference "Clause 5.10.29 of 3GPP TS 32.422";

}

leaf tjMDTTraceCollectionEntityID {

when ‘../tjJobType = "LOGGED_MDT_ONLY" or ‘

+ ‘../tjJobType = "LOGGED_MBSFN_MDT"’;

type uint8;

mandatory true;

description "It specifies the TCE Id which is sent to the UE in

Logged MDT.";

reference "Clause 5.10.11 of 3GPP TS 32.422";

}

}

grouping TraceSubtree {

description "Contains classes that manage Tracing.

Should be used in all classes (or classes inheriting from)

– SubNnetwork

– ManagedElement

– ManagedFunction

If a YANG module wants to augment these classes/list/groupings they must

augment all user classes!";

list TraceJob {

description "Represents the Trace Control and Configuration parameters of a

particular Trace Job (see TS 32.421 and TS 32.422 for details).

It can be name-contained by SubNetwork, ManagedElement, ManagedFunction

or NetworkSliceSubnet.

To activate Trace Jobs, a MnS consumer has to create TraceJob object

instances on the MnS producer. A MnS consumer can activate a Trace Job

for another MnS consumer since it is not required the value of

tjTraceCollectionEntityAddress or tjStreamingTraceConsumerUri to be his

own.

When a MnS consumer wishes to deactivate a Trace Job, the MnS consumer

shall delete the corresponding TraceJob instance.

For details of management Trace Job activation/deactivation see clause

4.1.1.1.2 of TS 32.422.

The attribute tjJobType specifies the kind of data to collect. Dependent

on the selected type various parameters shall be available. The

attributes tjJobType, tjTraceReference, tjTraceRecordSessionReference,

tjTraceCollectionEntityAddress and tjTraceReportingFormat are mandatory

for all job types. If streaming reporting is selected for

tjTraceReportingFormat, tjStreamingTraceConsumerURI shall be present

additionally. The attribute tjPLMNTarget shall be present if trace

activation method is management based.

For the different job types the attributes are differentiated as follows:

– In case of TRACE_ONLY additionally the following attributes shall be

available: tjListOfNeTypes, tjTraceDepth, tjTraceTarget and

tjTriggeringEvent.

For this case the optional attribute tjListOfInterfaces allows to

specify the interfaces to be recorded.

– In case of IMMEDIATE_MDT_ONLY additionally the following attributes

shall be available:

– tjTraceTarget

– tjMDTAnonymizationOfData,

– tjMDTListOfMeasurements,

– tjMDTCollectionPeriodRrmUmts (conditional for M3, M4 and M5 in UMTS),

– tjMDTMeasurementPeriodUMTS (conditional for M6 and M7 in UMTS),

– tjMDTCollectionPeriodRrmLte (conditional for M2 and M3 in LTE),

– tjMDTMeasurementPeriodLTE (conditional for M4 and M5 in LTE),

– tjMDTCollectionPeriodM6Lte (conditional for M6 in LTE),

– tjMDTCollectionPeriodM7Lte (conditional for M7 in LTE),

– tjMDTCollectionPeriodRrmNR (conditional for M4 and M5 in NR),

– tjMDTCollectionPeriodM6NR (conditional for M6 in NR),

– tjMDTCollectionPeriodM7NR (conditional for M7 in NR),

– tjMDTReportInterval (conditional for M1 in LTE or NR and M1/M2 in

UMTS),

– tjMDTReportAmount (conditional for M1 in LTE or NR and M1/M2 in

UMTS),

– tjMDTReportingTrigger (conditional for M1 in LTE or NR and M1/M2 in

UMTS),

– tjMDTEventThreshold (conditional for A2 event reporting or A2 event

triggered periodic reporting),

– tjMDTMeasurementQuantity (conditional for 1F event reporting).

For this case the optional attribute tjMDTAreaScope allows to specify

the area in terms of cells or Tracking Area/Routing Area/Location area

where the MDT data collection shall take place and the optional

attributes tjMDTPositioningMethod, tjMDTSensorInformation allow to

specify the positioning methods to use or the sensor information to

include.

– In case of IMMEDIATE_MDT_AND_TRACE both additional attributes of

TRACE_ONLY and IMMEDIATE_MDT_ONLY shall apply.

– In case of LOGGED_MDT_ONLY additionally the following attributes

shall be available: tjTraceTarget, tjMDTAnonymizationOfData,

tjMDTTraceCollectionEntityID, tjMDTLoggingInterval,

tjMDTLoggingDuration, tjMDTReportType,

tjMDTEventListForTriggeredMeasurements.

For this case the optional attribute tjMDTAreaScope allows to specify

the area in terms of cells or Tracking Area/Routing Area/Location area

where the MDT data collection shall take place, the optional attribute

tjMDTPLMNList allows to specify the PLMNs where measurement collection,

status indication and log reporting is allowed, the optional attribute

tjMDTAreaConfigurationForNeighCell allows to specify the area for

which UE is requested to perform measurements logging for neighbour

cells which have list of frequencies and the optional attribute

tjMDTSensorInformation allows to specify the sensor information to

include.

– In case of RLF_REPORT_ONLY and RCEF_REPORT_ONLY additionally the

attribute tjTraceTarget shall be available, the optional attribute

tjMDTAreaScope allows to specify the eNB or list of eNBs or gNB or

list of gNBs where the reports should be collected.

– In case of LOGGED_MBSFN_MDT additionally the following attributes

shall be available: tjMDTAnonymizationOfData, tjMDTLoggingInterval,

tjMDTLoggingDuration, tjMDTMBSFNAreaList.

Creation and deletion of TraceJob instances by MnS consumers is optional;

when not supported, the TraceJob instances may be created and deleted by

the system or be pre-installed.";

key id;

uses top3gpp:Top_Grp ;

container attributes {

uses TraceJobGrp ;

}

}

}

}

<CODE ENDS>

D.2.11 module _3gpp-common-mnsregistry.yang

<CODE BEGINS>

module _3gpp-common-mnsregistry {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-mnsregistry";

prefix "mnsregist3gpp";

import _3gpp-common-subnetwork { prefix subnet3gpp; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types { prefix types3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines the YANG mapping of the MNSRegistry Information Object

Class (IOC) that is part of the Generic Network Resource Model (NRM).";

reference "3GPP TS 28.623 Generic Network Resource Model (NRM)";

revision 2021-11-23 { reference "S5-216090"; }

revision 2021-10-18 { reference "S5-215263"; }

revision 2021-08-29 { reference "Initial revision, S5-214388"; }

grouping MnsInfoGrp {

description "Represents the MnsInfo IOC.";

leaf mnsLabel {

description "Human-readable name of management service.";

mandatory true;

type string;

}

leaf mnsType {

description "Type of management service.";

type enumeration {

enum ProvMnS;

enum FaultSupervisionMnS;

enum StreamingDataReportingMnS;

enum FileDataReportingMnS;

}

}

leaf mnsVersion {

description "Version of management service.";

type string;

}

leaf mnsAddress {

description "Addressing information for Management Service operations.";

mandatory true;

type string;

}

leaf-list mnsScope {

description "List of the managed object instances that can be accessed

using the MnS. If a complete SubNetwork can be accessed using the MnS,

this attribute may contain the DN of the SubNetwork instead of the

DNs of the individual managed entities within the SubNetwork.";

min-elements 1;

type types3gpp:DistinguishedName;

}

}

augment "/subnet3gpp:SubNetwork" {

list MNSRegistry {

description "Represents the MNSRegistry IOC.

The IOC is instantiated by the system.";

uses top3gpp:Top_Grp;

key id;

max-elements 1;

list MNSInfo {

description "This IOC represents an available Management Service (MnS)

and provides the data required to support its discovery.

It is name-contained by MnsRegistry.

This information is used by the consumer to discover the producers

of specific Management Services and to derive the addresses of the

Management Service.

Attributes mnsLabel, mnsType, and mnsVersion are used to describe

the Management Service.

Attribute mnsAddress is used to provide addressing information for

the Management Service operations.

Attribute mnsScope is used to provide information about the

management scope of the Management Service. The management scope is

defined as the set of managed object instances that can be accessed

using the Management Service.";

uses top3gpp:Top_Grp;

key "mnsType mnsVersion mnsAddress";

uses MnsInfoGrp;

}

}

}

}

<CODE ENDS>

D.2.12 Void

D.2.13 module _3gpp-common-filemanagement.yang

<CODE BEGINS>

module _3gpp-common-filemanagement {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-filemanagement";

prefix "filemgmt3gpp";

import _3gpp-common-subnetwork { prefix subnet3gpp; }

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types { prefix yang3gpp; }

import _3gpp-common-yang-extensions { prefix yext3gpp; }

import _3gpp-common-managed-element { prefix me3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Defines the YANG mapping of the FileDownloadJob Information Object

Class (IOC) that is part of the Generic Network Resource Model (NRM).";

reference "3GPP TS 28.623 Generic Network Resource Model (NRM)";

revision 2022-10-31 { reference CR-0195; }

revision 2022-02-10 { reference "Initial revision, S5-221757"; }

grouping FileDownloadProcessMonitor {

description "Provides specialisations of the ProcessMonitor datatype.";

uses yang3gpp:ProcessMonitor {

refine resultStateInfo {

description "If status is FAILED resultStateInfo will be one of

the following or empty.";

must ‘../status != "FAILED"

or . = "UNKNOWN"

or . = "NO_STORAGE"

or . = "LOW_MEMORY"

or . = "NO_CONNECTION_TO_REMOTE_SERVER"

or . = "FILE_NOT_AVAILABLE"

or . = "DNS_CANNOT_BE_RESOLVED"

or . = "TIMER_EXPIRED"

or . = "OTHER"

or . = "NULL" ‘;

}

refine status {

description "Status must not be ‘PARTIALLY_FAILED’.";

must ‘. != "PARTIALLY_FAILED" ‘;

}

}

}

grouping FileDownloadJobGrp {

description "Represents the FileDownloadJob IOC.";

reference "3GPP TS 28.622";

uses top3gpp:Top_Grp;

leaf fileLocation {

description "Provides the location of a file.

allowedValues: File URI (See RFC 8089)";

mandatory true;

type string;

yext3gpp:notNotifyable;

}

leaf notificationRecipientAddress {

description "Address of the notification recipient.";

type string;

yext3gpp:notNotifyable;

}

leaf cancelJob {

description "Setting this attribute to TRUE cancels the file download job.

As specified in the definition of ProcessMonitor, cancellation is

possible in the NOT_STARTED and RUNNING state. Setting the attribute

to FALSE has no observable result.";

type boolean;

mandatory true;

}

list jobMonitor {

key "id";

description "Provides monitoring for the file download job.";

uses FileDownloadProcessMonitor;

}

}

grouping FileDownloadJobSubtree {

description "Helps augmenting FileDownloadJob into multiple places.";

list FileDownloadJob {

description "Specifies the FileDownloadJob IOC, see 3GPP TS 28.622.";

key "id";

uses top3gpp:Top_Grp;

container attributes {

uses FileDownloadJobGrp;

}

}

}

augment "/subnet3gpp:SubNetwork" {

uses FileDownloadJobSubtree;

}

augment "/me3gpp:ManagedElement" {

uses FileDownloadJobSubtree;

}

}

<CODE ENDS>

D.2.14 module _3gpp-common-managementdatacollection.yang

<CODE BEGINS>

module _3gpp-common-managementdatacollection {

yang-version 1.1;

namespace "urn:3gpp:sa5:_3gpp-common-managementdatacollection";

prefix "mgtdatcol3gpp";

import _3gpp-common-top { prefix top3gpp; }

import _3gpp-common-yang-types {prefix types3gpp; }

//import ietf-inet-types { prefix inet; }

import ietf-yang-types { prefix yang; }

import _3gpp-common-subnetwork { prefix subnet3gpp; }

organization "3GPP SA5";

contact "https://www.3gpp.org/DynaReport/TSG-WG–S5–officials.htm?Itemid=464";

description "Handling management data collection";

reference "3GPP TS 28.623

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Solution Set (SS) definitions

3GPP TS 28.622

Generic Network Resource Model (NRM)

Integration Reference Point (IRP);

Information Service (IS)";

revision 2022-11-03 { reference "CR-0193"; }

grouping Tai {

list plmnId {

description "PLMN Identity.";

min-elements 1;

max-elements 1;

key "mcc mnc";

uses types3gpp:PLMNId;

}

leaf tac { type types3gpp:Tac; }

}

grouping NodeFilterGrp {

list areaOfInterest {

key idx;

leaf idx {

type string;

}

uses Tai; // (Maybe type: types3gpp:Tai,if we define Tai there.)

// mandatory false

min-elements 1;

description "It specifies a location(s) from where the management data

shall be collected. It is defined in terms of TAI(s).";

}

leaf networkDomain {

type enumeration {

enum CN;

enum RAN;

}

// mandatory false

description "It specifies the network domain of the target node. This

will also result in collecting appropriate management data from the

nodes belonging to the specified domain.";

}

leaf cpUpType {

type enumeration {

enum CP;

enum UP;

}

// mandatory false

description "It specifies the traffic type of the target node. This will

also result in collecting appropriate management data from the nodes

handling the specified traffic (e.g AMF for CP and UPF for UP).";

}

leaf sst {

type uint8; // TS 28.003 clause 28.4.

//mandatory false;

description "It specifies the slice service type (SST) of which the slice

subnet should be targeted. Please refer to 3GPP TS 23.501: ‘System

Architecture for the 5G System’";

}

}

typedef mgtDataCategoryType {

type enumeration {

enum COVERAGE;

enum CAPACITY;

enum ENERGY_EFFICIENCY;

enum MOBILITY;

enum ACCESSIBILITY;

}

description "";

}

grouping TimeWindowGrp {

leaf startTime {

type yang:date-and-time;

}

leaf endTime {

type yang:date-and-time;

}

}

grouping ManagementDataCollectionGrp {

choice managementData {

case mgtDataCategory {

leaf-list category {

type mgtDataCategoryType;

min-elements 1;

max-elements 5; // The ENUM contains 5 possible values

description "This attributes defines the type of management data that

are requested.

Allowed values for data category are COVERAGE, CAPACITY,

ENERGY_EFFICIENCY, MOBILITY, ACCESSIBILITY. The data categories

will map to certain measurement families defined in TS 28.552, see

below. In addition to the below mappings, MnS producer may map the

provided categories to any additional proprietary management data,

as appropriate.

– The COVERAGE category will map to measurement families of MR

(measurements related to Measurement Report) and L1M (measurements

related to Layer 1 Measurement).

– The CAPACITY category will map to measurement family RRU

(measurements related to Radio Resource Utilization).

– The ENERGY_EFFICIENCY category will map to measurement family PEE

(measurements related to Power, Energy and Environment).

– The MOBILITY category will map to measurement family MM

(measurements related to Mobility Management).

– The ACCESSIBILITY category will map to measurement family CE

(measurements related to Connection Establishment).";

}

}

case mgtDataName {

leaf-list name {

type string;

min-elements 1;

description "The list may include metrics or set of metrics defined

in TS 28.552, TS 28.554 and TS 32.422.

The metrics are identified with their names/identifiers.

For performance measurements defined in TS 28.552 the name is

constructed as follows:

– ‘family.measurementName.subcounter’ for measurement types with

subcounters

– ‘family.measurementName’ for measurement types without

subcounters

– ‘family’ for measurement families

For KPIs defined in TS 28.554 the name is defined according to the

KPI definitions template as the component designated with a).

For trace metrics (including trace messages, MDT measurements

(Immediate MDT, Logged MDT, Logged MBSFN MDT), RLF and RCEF

reports) defined in TS 32.422, the name (metric identifier) is

defined in clause 10 of TS 32.422.";

}

}

mandatory true;

}

list targetNodeFilter {

key idx;

leaf idx {

type string;

}

min-elements 1;

description "Set of information to target the Object Instance to collect

the measurements from.";

uses NodeFilterGrp;

}

list collectionTimeWindow {

key "startTime endTime";

max-elements 1;

description "Collection time window for which the management data

should be reported.";

uses TimeWindowGrp;

}

list reportingCtrl {

key idx;

leaf idx {

type string;

}

min-elements 1;

max-elements 1;

uses types3gpp:ReportingCtrl;

description "Selecting the reporting method and defining associated

control parameters.";

}

leaf dataScope {

type enumeration {

enum SNSSAI;

enum 5QI;

}

// mandatory false; [Implicit]

description "It specifies whether the required data is reported per

S-NSSAI or per 5QI.";

}

}

augment /subnet3gpp:SubNetwork {

list ManagementDataCollection {

key id;

uses top3gpp:Top_Grp ;

container attributes {

uses ManagementDataCollectionGrp;

}

description "This IOC represents a management data collection request

job. The requested data could be of kind Trace, MDT (Minimization

of Drive Test), RLF (Radio Link Failure) report, RCEF (RRC Connection

Establishment Failure) report, PM (performance measurements), KPI

(end-to-end key performance indicators) or a combination of these.

The attribute ‘managementData’ defines the management data which shall

be reported. This may either include a list of data categories or a

list of management data identified with their name. For further details

see TS 28.622 clause 4.3.50. The ‘targetNodeFilter’ attribute can be

used to target object instance(s) producing the required management

data. It is assumed that the consumer may not have detailed knowledge

of the network and hence may not identify the exact object instance

producing the required management data. In this case consumer can

request management data, specified by 3GPP, produced by certain network

function(s) based on a particular location, the domain (CN or RAN) of

the network function, and the handled traffic (CP or UP) of the network

function.

To activate the production of the requested data, a MnS consumer has to

create a ‘ManagementDataCollection’ object instance on the MnS producer.

The MnS producer will derive multiple jobs (‘PerfMetricJob’,

‘TraceJob’) from a single ‘ManagementDataCollection’ job for collecting

the required management data. Once it receives the measurement from

multiple sources, it consolidates the data into a set of management data

for reporting.

The attribute ‘collectionTimeWindow’ specifies the time window for which

the management data should be reported.

The attribute ‘reportingCtrl’ specifies the method and associated

control parameters for reporting the produced management data to MnS

consumers. Three methods are available: file-based reporting with

selection of the file location by the MnS producer, file-based

reporting with selection of the file location by the MnS consumer and

stream-based reporting.

The attribute ‘dataScope’ configures, whether the management data

should be reported per S-NSSAI or per 5QI, if applicable.";

}

}

}

<CODE ENDS>