Commit 07e31984 authored by lengyelb's avatar lengyelb
Browse files

Resolved merge conflict between CR-0485 and CR-0508 in ns-nrm-serviceprofile

parents 2d597129 87642336
Loading
Loading
Loading
Loading
+103 −82
Original line number Diff line number Diff line
openapi: 3.0.3
openapi: 3.0.2

info:
  title: coslaNrm
@@ -9,7 +9,7 @@ info:
    All rights reserved.

externalDocs:
  description: 3GPP TS 28.536 V16.4.0; 5G NRM, Slice NRM
  description: 3GPP TS 28.536 V16.4.0; Cosla NRM
  url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.536/

paths: {}
@@ -21,111 +21,132 @@ components:
#------------ Type definitions ---------------------------------------------------

    ControlLoopLifeCyclePhase:
      anyOf: 
        - type: string
      type: string
      enum:
        - PREPARATION
        - COMMISSIONING
        - OPERATION
        - DECOMMISSIONING
        - type: string

    TimeUnit:
      anyOf:
        - type: string
          enum:
            - SECOND
            - MINUTE
            - HOUR
            - DAY
        - type: string

    OperationalState:
      anyOf:
        - type: string
          enum: 
            - ENABLED
            - DISABLED
        - type: string

    AdministrativeState:
      anyOf:
        - type: string
          enum: 
            - LOCKED
            - SHUTTING_DOWN
            - UNLOCKED
        - type: string

    ObservationTime:
      type: integer

    ObservationTimePeriod:
      type: object
    AssuranceGoalStatusObserved:
      type: string
      enum:
        - FULFILLED
        - NOT_FULFILLED

    AssuranceControlLoopGoal:
      type: object
    AssuranceGoalStatusPredicted:
      type: string
      enum:
        - FULFILLED
        - NOT_FULFILLED

    AssuranceGoalStatus:
    AssuranceTarget:
      type: object
      properties:
        assuranceTargetName:
          type: string
        assuranceTargetValue:
          type: string
         
    AssuranceGoalStatusObserved:
      type: object
    AssuranceTargetList:
      type: array
      items:
         $ref: '#/components/schemas/AssuranceTarget'

    AssuranceGoalStatusPredicted:
      type: object

#-------- Definition of concrete IOCs --------------------------------------------

    AssuranceControlLoop-Single:
    SubNetwork-Single:
      allOf:
        - $ref: 'genericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - $ref: 'genericNrm.yaml#/components/schemas/SubNetwork-Attr'
        - $ref: 'genericNrm.yaml#/components/schemas/SubNetwork-ncO'
        - type: object
          properties:
            AssuranceClosedControlLoop:
              $ref: '#/components/schemas/AssuranceClosedControlLoop-Multiple'
 
    ManagedElement-Single:
      allOf:
        - $ref: 'genericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - $ref: 'genericNrm.yaml#/components/schemas/ManagedElement-Attr'
        - $ref: 'genericNrm.yaml#/components/schemas/ManagedElement-ncO'
        - type: object
          properties:
            AssuranceClosedControlLoop:
              $ref: '#/components/schemas/AssuranceClosedControlLoop-Multiple'

    AssuranceClosedControlLoop-Single:
      allOf:
        - $ref: 'genericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                    operationalState:
              $ref: '#/components/schemas/OperationalState'
                      $ref: 'genericNrm.yaml#/components/schemas/OperationalState'
                    administrativeState:
              $ref: '#/components/schemas/AdministrativeState'
                      $ref: 'genericNrm.yaml#/components/schemas/AdministrativeState'
                    controlLoopLifeCyclePhase:
                      $ref: '#/components/schemas/ControlLoopLifeCyclePhase'
            observationTimePeriod:
            AssuranceGoal:
              $ref: '#/components/schemas/AssuranceGoal-Multiple'

    AssuranceGoal-Single:
      allOf:
                - $ref: '#/components/schemas/ObservationTimePeriod'
        - $ref: 'genericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
                    observationTime:
                      $ref: '#/components/schemas/ObservationTime'
                    timeUnit:
                      $ref: '#/components/schemas/TimeUnit'    
            AssuranceGoalStatus:
            attributes:
              allOf:
                - $ref: '#/components/schemas/AssuranceGoalStatus'
                - type: object
                  properties:
                    observationTime:
                      $ref: '#/components/schemas/ObservationTime'
                    assuranceTargetList:
                      $ref: '#/components/schemas/AssuranceTargetList'
                    assuranceGoalStatusObserved:
                      $ref: '#/components/schemas/AssuranceGoalStatusObserved'
                    assuranceGoalStatusPredicted:
                      $ref: '#/components/schemas/AssuranceGoalStatusPredicted'
            managedEntity-Multiple:
              $ref: '#/components/schemas/ManagedEntity-Multiple'
            assuranceControlLoopGoal:
              $ref: '#/components/schemas/AssuranceControlLoopGoal'

    ManagedEntity-Single:
      oneOf:
        - $ref: 'sliceNrm.yaml#/components/schemas/NetworkSlice-Single'
        - $ref: 'sliceNrm.yaml#/components/schemas/NetworkSliceSubnet-Single'
        - $ref: 'genericNrm.yaml#/components/schemas/ManagedFunction-Attr'
        - $ref: 'genericNrm.yaml#/components/schemas/ManagedElement-Attr'
                    serviceProfileId:
                      type: string
                    sliceProfileId:
                      type: string
                    networkSliceRef:
                      $ref: 'comDefs.yaml#/components/schemas/Dn'
                    networkSliceSubnetRef:
                      $ref: 'comDefs.yaml#/components/schemas/Dn' 
                      
#-------- Definition of JSON arrays for name-contained IOCs ----------------------
                                
    AssuranceControlLoop-Multiple:
    AssuranceClosedControlLoop-Multiple:
      type: array
      items:
        $ref: '#/components/schemas/AssuranceControlLoop-Single'                 
        $ref: '#/components/schemas/AssuranceClosedControlLoop-Single'                 
               
    ManagedEntity-Multiple:
    AssuranceGoal-Multiple:
      type: array
      items:
        $ref: '#/components/schemas/ManagedEntity-Single'      
        $ref: '#/components/schemas/AssuranceGoal-Single'   

#------------ Definitions in TS 28.536 for TS 28.623 ----------------------------- 

    resources-coslaNrm:
      oneOf:
       - $ref: '#/components/schemas/AssuranceClosedControlLoop-Single'
       - $ref: '#/components/schemas/AssuranceGoal-Single'    
       - $ref: '#/components/schemas/SubNetwork-Single'
       - $ref: '#/components/schemas/ManagedElement-Single'
 No newline at end of file
+59 −124
Original line number Diff line number Diff line
@@ -75,49 +75,6 @@ components:
        - TWO
        - THREE
        - FOUR

    PerfReqEmbb:
      type: object
      properties:
        expDataRateDL:
          type: number
        expDataRateUL:
          type: number
        areaTrafficCapDL:
          type: number
        areaTrafficCapUL:
          type: number
        userDensity:
          type: number
        activityFactor:
          type: number
    PerfReqEmbbList:
      type: array
      items:
        $ref: '#/components/schemas/PerfReqEmbb'
    PerfReqUrllc:
      type: object
      properties:
        cSAvailabilityTarget:
          type: number
        cSReliabilityMeanTime:
          type: string
        expDataRate:
          type: number
        msgSizeByte:
          type: string
        transferIntervalTarget:
          type: string
        survivalTime:
          type: string
    PerfReqUrllcList:
      type: array
      items:
        $ref: '#/components/schemas/PerfReqUrllc'
    PerfReq:
      oneOf:
        - $ref: '#/components/schemas/PerfReqEmbbList'
        - $ref: '#/components/schemas/PerfReqUrllcList'
    Category:
      type: string
      enum:
@@ -166,34 +123,7 @@ components:
          $ref: '#/components/schemas/Support'
        periodicityList:
          type: string
    DLThptPerSlice:
      type: object
      properties:
        servAttrCom:
          $ref: '#/components/schemas/ServAttrCom'
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    DLThptPerUE:
      type: object
      properties:
        servAttrCom:
          $ref: '#/components/schemas/ServAttrCom'
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    ULThptPerSlice:
      type: object
      properties:
        servAttrCom:
          $ref: '#/components/schemas/ServAttrCom'
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    ULThptPerUE:
    XLThpt:
      type: object
      properties:
        servAttrCom:
@@ -202,34 +132,6 @@ components:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    DLThptPerSliceSubnet:
      type: object
      properties:
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    DLThptPerUEPerSubnet:
      type: object
      properties:
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    ULThptPerSliceSubnet:
      type: object
      properties:
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    ULThptPerUEPerSubnet:
      type: object
      properties:
        guaThpt:
          $ref: '#/components/schemas/Float'
        maxThpt:
          $ref: '#/components/schemas/Float'
    MaxPktSize:
      type: object
      properties:
@@ -314,27 +216,33 @@ components:
        latency:
          type: integer
        dLThptPerSliceSubnet:
          $ref: '#/components/schemas/DLThptPerSliceSubnet'
        dLThptPerUEPerSubnet:
          $ref: '#/components/schemas/DLThptPerUEPerSubnet'
          $ref: '#/components/schemas/XLThpt'
        dLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        uLThptPerSliceSubnet:
          $ref: '#/components/schemas/ULThptPerSliceSubnet'
        uLThptPerUEPerSubnet:
          $ref: '#/components/schemas/ULThptPerUEPerSubnet'
          $ref: '#/components/schemas/XLThpt'
        uLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        maxNumberOfPDUSessions:
          type: integer
        coverageAreaTAList:
          type: integer
        resourceSharingLevel:
          $ref: '#/components/schemas/SharingLevel'
        maxPktSize:
          type: integer
        delayTolerance:
          $ref: '#/components/schemas/DelayTolerance'
        sliceSimultaneousUse:
          $ref: '#/components/schemas/SliceSimultaneousUse'
        deterministicComm:
          $ref: '#/components/schemas/DeterministicComm'
    RANSliceSubnetProfile:
      type: object
      properties:
        coverageAreaTAList:
          type: integer
        MobilityLevel:
        uEMobilityLevel:
          $ref: '#/components/schemas/MobilityLevel'
        resourceSharingLevel:
          $ref: '#/components/schemas/SharingLevel'
@@ -342,10 +250,10 @@ components:
          type: integer
        activityFactor:
          type: integer
        dLThptPerUEPerSubnet:
          $ref: '#/components/schemas/ULThptPerUEPerSubnet'
        uLThptPerUEPerSubnet:
          $ref: '#/components/schemas/ULThptPerUEPerSubnet'
        dLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        uLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        uESpeed:
          type: integer
        reliability:
@@ -358,6 +266,12 @@ components:
          $ref: '#/components/schemas/DelayTolerance'
        sliceSimultaneousUse:
          $ref: '#/components/schemas/SliceSimultaneousUse'
        termDensity:
          $ref: '#/components/schemas/TermDensity'
        survivalTime:
          type: string
        deterministicComm:
          $ref: '#/components/schemas/DeterministicComm'
    TopSliceSubnetProfile:
      type: object
      properties:
@@ -368,19 +282,42 @@ components:
        maxNumberofUEs:
          type: integer
        dLThptPerSliceSubnet:
          $ref: '#/components/schemas/DLThptPerSliceSubnet'
        dLThptPerUEPerSubnet:
          $ref: '#/components/schemas/DLThptPerUEPerSubnet'
          $ref: '#/components/schemas/XLThpt'
        dLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        uLThptPerSliceSubnet:
          $ref: '#/components/schemas/ULThptPerSliceSubnet'
        uLThptPerUEPerSubnet:
          $ref: '#/components/schemas/ULThptPerUEPerSubnet'
          $ref: '#/components/schemas/XLThpt'
        uLThptPerUE:
          $ref: '#/components/schemas/XLThpt'
        maxPktSize:
          type: integer
        delayTolerance:
          $ref: '#/components/schemas/DelayTolerance'
        maxNumberOfPDUSessions:
          type: integer
        sliceSimultaneousUse:
          $ref: '#/components/schemas/SliceSimultaneousUse'
        delayTolerance:
          $ref: '#/components/schemas/DelayTolerance'
        termDensity:
          $ref: '#/components/schemas/TermDensity'
        activityFactor:
          type: integer
        coverageAreaTAList:
          type: integer
        resourceSharingLevel:
          $ref: '#/components/schemas/SharingLevel'
        uEMobilityLevel:
          $ref: '#/components/schemas/MobilityLevel'
        uESpeed:
          type: integer
        reliability:
          type: string
        serviceType:
          $ref: '#/components/schemas/ServiceType'
        deterministicComm:
          $ref: '#/components/schemas/DeterministicComm'
        survivalTime:
          type: string

    ServiceProfile:
      type: object
      properties:
@@ -405,13 +342,13 @@ components:
          deterministicComm:
            $ref: '#/components/schemas/DeterministicComm'
          dLThptPerSlice:
            $ref: '#/components/schemas/DLThptPerSlice'
            $ref: '#/components/schemas/XLThpt'
          dLThptPerUE:
            $ref: '#/components/schemas/DLThptPerUE'
            $ref: '#/components/schemas/XLThpt'
          uLThptPerSlice:
            $ref: '#/components/schemas/ULThptPerSlice'
            $ref: '#/components/schemas/XLThpt'
          uLThptPerUE:
            $ref: '#/components/schemas/ULThptPerUE'
            $ref: '#/components/schemas/XLThpt'
          maxPktSize:
            $ref: '#/components/schemas/MaxPktSize'
          maxNumberofPDUSessions:
@@ -456,8 +393,6 @@ components:
            type: string
          plmnInfoList:
            $ref: 'nrNrm.yaml#/components/schemas/PlmnInfoList'
          perfReq:
            $ref: '#/components/schemas/PerfReq'
          cNSliceSubnetProfile:
            $ref: '#/components/schemas/CNSliceSubnetProfile'
          rANSliceSubnetProfile:
+96 −0
Original line number Diff line number Diff line
module _3gpp-ns-nrm-common {
  yang-version 1.1;
  namespace urn:3gpp:sa5:_3gpp-ns-nrm-common;
  prefix ns3cmn;

  // import _3gpp-common-subnetwork { prefix subnet3gpp; }
  // import _3gpp-common-yang-types { prefix types3gpp; }
  // import _3gpp-common-top { prefix top3gpp; }

  organization "3GPP SA5";
  contact 
    "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Common network slice definitions";
  reference "3GPP TS 28.541
    Management and orchestration; 
    5G Network Resource Model (NRM);
    Information model definitions for network slice NRM (chapter 6)
    ";

  revision 2021-05-17 {
    description "Introduction of Common Data types";
    reference "CR-0485";
  }
  grouping XLThptGrp {
    list servAttrCom {
      description "This list represents the common properties of service 
        requirement related attributes.";
      reference "GSMA NG.116 corresponding to Attribute categories, 
        tagging and exposure";
      config false;
      key idx;
      max-elements 1;
      leaf idx {
        description "Synthetic index for the element.";
        type uint32;
      }
      uses ServAttrComGrp;
    }
    leaf guaThpt {
      description "This attribute describes the guaranteed data rate.";
      type uint64;
      units kbits/s;
    }
    leaf maxThpt {
      description "This attribute describes the maximum data rate.";
      type uint64;
      units kbits/s;
    }
  }
    typedef Tagging-enum {
    type enumeration {
      enum performance;
      enum function;
      enum operation;
    }
  }
  typedef Exposure-enum {
    type enumeration {
      enum API;
      enum KPI;
    }
  }
  typedef Category-enum {
    type enumeration {
      enum character;
      enum scalability;
    }
  }
  typedef Support-enum {
    type enumeration {
      enum NOT_SUPPORTED;
      enum SUPPORTED;
    }
  }
  grouping ServAttrComGrp {
    leaf category {
      description "This attribute specifies the category of a service 
        requirement/attribute of GST";
      type Category-enum;
    }
    leaf-list tagging {
      description "This attribute specifies the tagging of a service 
        requirement/attribute of GST in character category";
      when "../category = 'character'";
      type Tagging-enum;
    }
    leaf exposure {
      description "This attribute specifies exposure mode of a service 
        requirement/attribute of GST";
      type Exposure-enum;
    }
  }
  typedef DeterminCommAvailability {
    type Support-enum;
  } 
}
 No newline at end of file
+2 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ module _3gpp-ns-nrm-networkslicesubnet {
  import _3gpp-common-subnetwork { prefix subnet3gpp; }
  import _3gpp-common-measurements { prefix meas3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
  // import _3gpp-ns-nrm-common { prefix ns3cmn; }

  include _3gpp-ns-nrm-sliceprofile;
  
+0 −170
Original line number Diff line number Diff line
module _3gpp-ns-nrm-perfreq {
  yang-version 1.1;
  namespace urn:3gpp:sa5:_3gpp-ns-nrm-perfreq;
  prefix perf3gpp;

  organization "3GPP SA5";
  contact 
    "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "The performance requirements for the NSI in terms of the 
    scenarios defined in the 3GPP TS 22.261, such as experienced data rate, 
    area traffic capacity (density) information of UE density.";
  reference "3GPP TS 28.541
    Management and orchestration; 
    5G Network Resource Model (NRM);
    Information model definitions for network slice NRM (chapter 6)
    ";

  revision 2020-02-19 {
    description "Introduction of YANG definitions for network slice NRM";
    reference "CR-0458";
  }

  typedef data-rate {
    type uint32; 
    units kbits/s;
  }
  typedef integer-percentage {
    type uint8 {
      range 0..100;
    }
    units percent;
  }
  typedef reliability-string {
    description "Mean time between failures.
      E.g. '1 day', or '3 months'";
    type string {
      pattern "[0-9]+ (day|week|month|year)s?";
    }
    reference "3GPP TS 22.104 clause 5.2-5.5";
  }
  typedef message-size-string {
    description "Message size in bytes.
      E.g. '80', or '250-2000'";
    type string {
      pattern '[0-9]+(-[0-9]+)?';
    }
    units bytes;
    reference "3GPP TS 22.104 clause 5.2-5.5";
  }
  typedef transfer-interval-string {
    description "Transfer interval time.  If multiple values are given, 
    the first value is the application requirement, the other values are 
    the requirement with multiple transmission of the same information 
    two or three times, respectively).
    E.g. '40ms', or '0ms-5ms,0ms-2.5ms,0ms-1.7ms'";
    type string {
      pattern '[0-9]+(\.[0-9]+)?m?s-[0-9]+(\.[0-9]+)?m?s' +
        '(,[0-9]+(\.[0-9]+)?m?s-[0-9]+(\.[0-9]+)?){0,2}';
    }
    reference "3GPP TS 22.104 clause 5.2-5.5";
  }
  typedef survival-time-string {
    description "Survival time in milliseconds (ms) or in multiples of 
      the transfer interval (x).  If multiple values are given, 
    the first value is the application requirement, the other values are 
    the requirement with multiple transmission of the same information 
    two or three times, respectively). 
    E.g. '12ms', or '0x,2x'";
    type string {
      pattern '[0-9]+(x|ms)(,[0-9]+(x|ms)){0,2}';
    }
    reference "3GPP TS 22.104 clause 5.2-5.5";
  }

  grouping PerfReqGrp {
    //Stage2 issue: The perfReq object does not have any proper definition 
    //              in 28.541 chapter 6.
    //Stage2 issue: The text that exists on the perfReq mentions an sST
    //              element. There is potentially several sST elements in 
    //              the SliceProfile/sNSSAIList which could be used as basis
    //              for deciding which perfReq elements are relevant.
    //              Operators can construct their own sST values. It is not
    //              clear which of the perfReq elements below would be
    //              relevant in such a case. Leaving all perfReq elements
    //              available in all use cases for now.

    // eMBB leafs, SST = 1
    leaf expDataRateDL {
      description "User experienced data rate over downlink";
      //TODO: add when 'somepath/sST = 1';
      type data-rate;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }
    leaf expDataRateUL {
      description "User experienced data rate over uplink";
      //TODO: add when 'somepath/sST = 1';
      type data-rate;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }
    leaf areaTrafficCapDL { 
      description "Area traffic capacity over downlink";
      //TODO: add when 'somepath/sST = 1';
      type data-rate;
      units kbits/s/km2;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }
    leaf areaTrafficCapUL { 
      description "Area traffic capacity over uplink";
      //TODO: add when 'somepath/sST = 1';
      type data-rate;
      units kbits/s/km2;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }
    leaf overallUserDensity { 
      description "Overall user density";
      //TODO: add when 'somepath/sST = 1';
      type uint32; 
      units users/km2;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }
    leaf activityFactor {
      description "Percentage value of the amount of simultaneous active 
        UEs to the total number of UEs where active means the UEs are 
        exchanging data with the network.";
      //TODO: add when 'somepath/sST = 1';
      type integer-percentage;
      reference "3GPP TS 22.261 clause 7.1, table 7.1-1";
    }

    // uRLLC leafs, SST = 2
    leaf cSAvailabilityTarget {
      description "Reliability uptime target";
      //TODO: add when 'somepath/sST = 2';
      type decimal64 { 
        fraction-digits 6; // E.g. 99.999999
        range 0..100;
      }
      reference "3GPP TS 22.104 clause 5.2-5.5";
    }
    leaf cSReliabilityMeanTime {
      description "Mean time between failures";
      //TODO: add when 'somepath/sST = 2';
      type reliability-string;
    }
    leaf expDataRate {
      description "User experienced data rate";
      //TODO: add when 'somepath/sST = 2';
      type data-rate;
      reference "3GPP TS 22.104 clause 5.2-5.5";
    }
    leaf msgSizeByte {
      description "PDU size";
      //TODO: add when 'somepath/sST = 2';
      type message-size-string; 
    }
    leaf transferIntervalTarget {
      description "Time difference between two consecutive transfers 
        of application data from an application via the service interface 
        to 3GPP system";
      //TODO: add when 'somepath/sST = 2';
      type transfer-interval-string; 
    }
    leaf survivalTime {
      description "The time that an application consuming a communication 
        service may continue without an anticipated message";
      //TODO: add when 'somepath/sST = 2';
      type survival-time-string; 
    }
  }
}
 No newline at end of file
Loading