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.
 
 
      * 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.
      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";
 
     "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.";
   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.";
   }
 
        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 {
   // 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";
   }
 
       "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 {
   typedef resource-type {
     type enumeration {
       enum prb {
@@ -512,6 +590,9 @@ module o-ran-sc-du-hello-world {
           "3GPP TS 38.213";
       }
     }
           "3GPP TS 38.213";
       }
     }
+    uses performance-monitoring-point-grp {
+      if-feature performance-measurement;
+    }
   }
 
   grouping connection-grp {
   }
 
   grouping connection-grp {
@@ -632,7 +713,7 @@ module o-ran-sc-du-hello-world {
       uses radio-resource-management-policy-ratio-grp;
     }
   }
       uses radio-resource-management-policy-ratio-grp;
     }
   }
-
+  
   grouping network-function {
     description
       "Represents telecommunications equipment or
   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
   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";
     }
   }
         "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
 
   grouping top-grp {
     description
@@ -910,6 +1097,7 @@ module o-ran-sc-du-hello-world {
          However, the network function stores the value persistently.";
     }
   }
          However, the network function stores the value persistently.";
     }
   }
+  
   // Data nodes
 
   container network-function {
   // Data nodes
 
   container network-function {
@@ -939,6 +1127,28 @@ module o-ran-sc-du-hello-world {
       uses top-grp;
       uses ntsc:ves-endpoint-g;
     }
       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;
     }
     uses network-function-grp {
       status deprecated;
     }