Add performance management to o-ran-sc-du-hello-world 25/6925/4
authordemx8as6 <martin.skorupski@highstreet-technologies.com>
Sun, 24 Oct 2021 10:34:10 +0000 (12:34 +0200)
committerMartin Skorupski <martin.skorupski@highstreet-technologies.com>
Mon, 1 Nov 2021 12:21:47 +0000 (12:21 +0000)
- measurement and its subcounter per Cell
- model description
- revision
- feature
- identities
-- base
-- avg-ue-thp-dl
-- avg-ue-thp-up
- groupings
- data nodes
  nf -> cell -> supported-measurements > subcounters per S-NSSAI

IssueID: OAM-232
Change-Id: Ic8b4e3b073b8db18b5a43ece369fae270d30076a
Signed-off-by: demx8as6 <martin.skorupski@highstreet-technologies.com>
data-model/yang/working/o-ran-sc/o-ran-du/o-ran-sc-du-hello-world.yang

index d0526a3..e0ba2af 100644 (file)
@@ -21,6 +21,11 @@ module o-ran-sc-du-hello-world {
 
      * VES Subscription parameters according to OPNFV and ONAP.
 
+     * Performance Management parameters per Cell and for the measurement types
+       * average user-equipment throughput-downlink
+       * average user-equipment throughput uplink
+       as defined in 3GPP TS 28.552.
+
      The module is inspired by 3GPP TS 28.541 5G Network Resource Model (NRM).
      The intent is to reduce the implementation efforts. It is not intended
      to fragment the industry.
@@ -48,6 +53,13 @@ module o-ran-sc-du-hello-world {
     "3GPP TS 28.541 5G Network Resource Model (NRM)
      OPNFV VES - https://wiki.opnfv.org/display/ves";
 
+  revision 2021-10-29 {
+    description
+      "Performance management added.";
+    reference
+      "3GPP TS 28.552
+       https://jira.o-ran-sc.org/browse/OAM-232";
+  }
   revision 2021-10-20 {
     description
       "Subscription management added.";
@@ -96,6 +108,59 @@ module o-ran-sc-du-hello-world {
        a subscription-function for sending notifications to a consumer.";
   }
 
+  feature snssai-subcounter {
+    description
+      "This feature indicates that the network-function implements
+       a performance measurement functions for single-network-slice-
+       selection-assistance-info (S-NSSAI).";
+    reference
+      "3GPP TS 28.552";
+  }
+
+  feature performance-measurement {
+    description
+      "This feature indicates that the network-function implements
+       a performance measurement function.";
+    reference
+      "3GPP TS 28.623
+       3GPP TS 28.622";
+  }
+
+  // Identities
+
+  identity performance-measurement-type-id {
+    description
+      "Base identity for performance measurement types. 
+       A unique identification of the measurement, not including the resource. 
+       Different resources can share measurement types.
+
+       A string-based qualifier can be used in addition to the
+       identity in order to have different measurement types based on
+       information not known at design-time.
+       Standards and vendors can define sub-identities to clearly
+       identify specific measurement types.
+
+       This identity is abstract and MUST NOT be used for measurements.";
+  }
+
+  identity user-equipment-average-throughput-downlink {
+    base performance-measurement-type-id;
+    description
+      "The identifier for a measurement value which indicates the average 
+       downlink-throughput for all user-equipment.";
+    reference
+      "3GPP TS 28.552";
+  }
+
+  identity user-equipment-average-throughput-uplink {
+    base performance-measurement-type-id;
+    description
+      "The identifier for a measurement value which indicates the average 
+       downlink-throughput for all user-equipment.";
+    reference
+      "3GPP TS 28.552";
+  }
+
   // Type definitions
 
   typedef administrative-state {
@@ -268,6 +333,19 @@ module o-ran-sc-du-hello-world {
       "3GPP TS 28.625 and ITU-T X.731 / ISO/IEC 10164-2";
   }
 
+  typedef performance-measurement-type-id {
+    type identityref {
+      base performance-measurement-type-id;
+    }
+    description
+      "Identifies an performance-measurement type. The description of the 
+       performance-measurement type id MUST indicate if the it is abstract or 
+       not. An abstract performance-measurement type is used as a base for other 
+       performance-measurement type ids and will not be used as a value for a 
+       performance-measurement or be present in an 
+       performance-measurement dictionary/inventory.";
+  }
+
   typedef resource-type {
     type enumeration {
       enum prb {
@@ -512,6 +590,9 @@ module o-ran-sc-du-hello-world {
           "3GPP TS 38.213";
       }
     }
+    uses performance-monitoring-point-grp {
+      if-feature performance-measurement;
+    }
   }
 
   grouping connection-grp {
@@ -632,7 +713,7 @@ module o-ran-sc-du-hello-world {
       uses radio-resource-management-policy-ratio-grp;
     }
   }
-
+  
   grouping network-function {
     description
       "Represents telecommunications equipment or
@@ -674,6 +755,88 @@ module o-ran-sc-du-hello-world {
     }
   }
 
+  grouping performance-measurement-job-grp {
+    description
+      "An abstract object class representing a performance-measurement-job";
+    leaf job-tag {
+      type string {
+        length "255";
+      }
+      description
+        "A job group identifier to combine several performance-measurement-jobs
+         to one logical job.";
+    }
+    leaf-list performance-metrics {
+      type instance-identifier;
+      min-elements 1;
+      description
+        "Performance metrics (or performance measurement counter values)
+         include measurements defined in TS 28.552 and KPIs defined in TS 28.554
+         and enhanced by O-RAN working groups.
+         Performance metrics are identified with their xPath including their
+         identity.
+
+         Example for average downlink user equipment throughput per cell
+         /network-function/distributed-unit-functions[id='<id-value>']/cell[id='<id-value']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']
+
+         Example for a specific slice-differentiator (here sd=12345) subcounter of average downlink user equipment throughput
+         /network-function/distributed-unit-functions[id='<id-value>']/cell[id='<id-value']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']/supported-snssai-subcounter-instances/slice-differentiator[.=12345]";
+      reference
+        "3GPP TS 28.552
+         3GPP TS 28.554
+         O-RAN WG10 PM-Coordination-Team";
+    }
+    leaf granularity-period {
+      type uint32 {
+        range "1..max";
+      }
+      units "s";
+      mandatory true;
+      description
+        "The interval time in seconds between the start of a measurement and the
+         end of a measurement.
+         If the network-function does not support the intended 
+         granularity-period, then the network-function SHOULD use the supported
+         granularity-period which is lower than the configured/intended period.";
+      reference
+        "3GPP TS 28.552
+         3GPP TS 28.554
+         O-RAN WG10 PM-Coordination";
+    }
+    leaf-list object-reference {
+      type instance-identifier;
+      description
+        "A list of reference to objects, which SHOULD measure the referred
+         performance-metrics values.";
+    }
+    leaf stream-target {
+      if-feature subscription-management;
+      type leafref {
+        path "/network-function/subscription-streams/id";
+      }
+      mandatory true;
+      description
+        "A reference to the subscriber of the stream. ";
+    }
+  }
+
+  grouping performance-monitoring-point-grp {
+    description 
+      "An abstract object class providing monitoring and control functions for
+       performance measurements. Such grouping should be used by the monitoring 
+       object.";
+    list supported-measurements {
+      config false;
+      key "performance-measurement-type";
+      uses supported-measurement-grp;
+      description
+        "A list of performance measurements object providing the 
+         measurement-types (counters) and its potential subcounters. The values
+         ar provided by the combination of the event subscription and 
+         performance-measurement-job concepts.";
+    }
+  }
+
   grouping public-land-mobile-network-id {
     description
       "The identity of a public land mobile network as complex type
@@ -866,6 +1029,30 @@ module o-ran-sc-du-hello-world {
         "3GPP TS 23.501";
     }
   }
+  
+  grouping supported-measurement-grp {
+    description
+      "An abstract object class for performance management. The object class
+       could be implemented by any kind of resource which can measure data
+       and expose the measured data for quality assurance.";
+    leaf performance-measurement-type {
+      type performance-measurement-type-id;
+      description
+        "A list of measurement types which are supported by this 
+         network-function for each slice.";
+    }
+    list supported-snssai-subcounter-instances {
+      if-feature "snssai-subcounter";
+      must "current()/../../../cell/id";
+      key "slice-differentiator slice-service-type";
+      uses single-network-slice-selection-assistance-info;
+      description
+        "A conditional list of S-NSSAIs used as an address to uniquely identify a 
+         measurement value. The 'must' statement ensures that this list only
+         exits, when the measurement-type is measured by an entity represented
+         as a 'cell' object. ";
+    }    
+  }
 
   grouping top-grp {
     description
@@ -910,6 +1097,7 @@ module o-ran-sc-du-hello-world {
          However, the network function stores the value persistently.";
     }
   }
+  
   // Data nodes
 
   container network-function {
@@ -939,6 +1127,28 @@ module o-ran-sc-du-hello-world {
       uses top-grp;
       uses ntsc:ves-endpoint-g;
     }
+    list performance-measurement-jobs {
+      if-feature "performance-measurement";
+      key "id";
+      description
+        "This list represents a performance measurement jobs for this
+         network-function.
+         To activate the production of the specified performance measurement,
+         the SMO needs to create a performance-measurement-job instance.
+         To completely deactivate a running performance-measurement-job the
+         SMO deletes the corresponding the performance-measurement-job in
+         this list.
+         For temporary deactivation of the performance-measurement-job, the SMO
+         SHALL set the administrative state value to 'locked'. In this situation
+         the network-function must indicated that the
+         performance-measurement-job is not functional by setting the
+         operational-state to 'disabled'.
+         Once the administrative state value is set back to 'unlocked', the
+         performance-measurement-job SHOULD start is function again and indicate
+         this situation by setting the operational-state to 'enabled'.";
+      uses top-grp;
+      uses performance-measurement-job-grp;
+    }
     uses network-function-grp {
       status deprecated;
     }