Child pages
  • TAPI Contributions and Presentations

Version 1.2 - 10 August 2020

Purpose of this document is to list the differences between YANG modules automatically generated from TAPI 2.1.3 and TAPI Next Major Release / Edge version.

Notes:

  1. 213: TAPI version 2.1.3
  2. E: Edge or Next Major Release
  3. resourceSpec removed from Edge, unclear how GlobalClass is inherited. Broken/ now restored .
  4. Local class is explicitly “used” in Edge: Rule, CSEP, Route, Switch
  5. E.g. SIP does not have the “uses global-class”, but in UML diagram there is inheritance. Note that Edge SIP has an “interface realization” while 213 SIP inherits ResourceSpec.
  6. Note that Edge does not have the “ interface realization ” association between context and service classes.
  7. Differences related to comments
  8. Modification for alignment
  9. For discussion
  10. New features for 2.1.x

1        Tapi Common

  1. Edge: copy streaming augment from 213
     
  2. 213: copy admin state pac comments from Edge
  3. 213: copy lifecycle state pac comments from Edge
  4. 213: copy global and local class comments from Edge
  5. 213: copy operational state pac comments from Edge
  6. 213: copy tapi-context and SIP class comments from Edge
  7. 213: copy capacity-pac and termination-pac comments from Edge
     
  8. 213: delete resource and service spec
    1. Resource-spec in 213 is used by SIP, Link, Node, Topology, NEP, InterRuleGroup, NodeRuleGroup, CEP, SwitchControl,  Connection
    2. Service-spec in 213 is used by: NetworkTopologyService, ConnectivityService
       
  9. 213: grouping service-interface-point, copy comments from Edge
  10. 213: grouping termination-pac, copy comments from Edge
     
  11. Edge: copy to 213, no because is enum in 213 .

    identity OBJECT_TYPE {

        description "none";

    }

    identity OBJECT_TYPE_SERVICE_INTERFACE_POINT {

        base OBJECT_TYPE;

        description "none";

    }

  1. 213: lifecycle-state copy comments from Edge
     
  2. Edge:  grouping bandwidth-profile and bandwidth-profile-type were defined in 213, correctly removed from Edge (as Ethernet specific).
     
  3. 213: missing the following types, which are defined in Edge.
    1. mac-address is a primitive type, duplicated in TapiEth with a different comment.
      Consider remove from Edge/TapiCommon
    2. binary and timeticks are not used, consider remove from Edge/TapiCommon

   typedef mac-address {

        type string;

        description "pattern '[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}'

            description

            'The mac-address type represents a MAC address in the canonical

            format and hexadecimal format specified by IEEE Std 802. The

            hexidecimal representation uses uppercase characters.'";

    }

    typedef binary {

        type string;

        description "Represents any binary data, i.e., a sequence of octets.

            A binary type can be restricted by a length which defines the number of octets it contains.";

    }

    typedef timeticks {

        type string;

        description "type uint32

            The timeticks type represents a non-negative integer that represents the time, modulo 2^32 (4294967296 decimal), in hundredths of a second between two epochs.";

    }

    typedef object-type {

        type identityref {

            base OBJECT_TYPE;

        }

        description "The list of TAPI Common Object types/classes.";

    }
 

  1. 213, rpc get/updated sip, copy UUID comments


2        Tapi Topology

  1. Edge: Link has protection-type and restoration-policy, while 2.1.3 has resilience-type.
    Edge: roll back to single attribute of 2.1.3
    https://github.com/OpenNetworkingFoundation/TAPI/issues/310
     
  2. Edge has Topology/boundary-node-edge-point (TopologyExposesBoundaryNEPs), 2.1.3 not.
    Consider adding to 2.1.3 or removing from Edge
     
  3. 213: copy comment of transitioned-layer-protocol-name from Edge
     
  4. Edge: NEP/availableCepLayerProtocol is richer than simple 213 supportedLayers
    Consider improve 2.1.x (otcc2020.AM.002-Transmission_Capability)
     
  5. E: all rpcs have comments on uuid
     
  6. Edge has topology-object-type enum/identity


3        Tapi Connectivity

  1. 2.1.3: copy connection/bounding-node from Edge
     
  2. 2.1.3: Node/_ownedNodeEdgePoint, Edge: Node/_nodeEdgePoint
    Edge: roll back the label to _ownedNodeEdgePoint
     
  3. 2.1.3: Connection class, copy container connection-spec-reference to Edge?
  4. 2.1.3: CEP/list CepRole (a string plus connection-spec-reference) while Edge: CEP/leaf protection-role
    • CepRole and ConnectionSpecReference not defined in Edge.
       
  5. ConnectivityConstraint, service-layer (layer-protocol-name) and connectivity-direction in 213, not in Edge.
    https://github.com/OpenNetworkingFoundation/TAPI/pull/411
    Add in Edge or set as “deprecated” in 2.1.x.
  6. Edge has ConnectivityService/direction attribute, 2.1.3 not
    https://github.com/OpenNetworkingFoundation/TAPI/issues/435
    Remove direction from Edge.
     
  7. 2.1.3: copy service-level comment from Edge.
  8. No change needed: Edge: ConnectivityService, all references (connectivity-constraint; routing-constraint; topology-constraint; resilience-constraint) are StrictComposite , 213 are ExtendedComposite

        container connectivity-constraint {

            uses connectivity-constraint;

            description "none";

        }

  uses connectivity-constraint;

  • Edge: Note that with local-id the key is mapped:

        list topology-constraint {

            key 'local-id';

            uses tapi-path-computation:topology-constraint;

            description "none";

        }

  1. ResilienceConstraint, different model of protection/resilience type.
    Edge: roll back to single attribute of 2.1.3
    https://github.com/OpenNetworkingFoundation/TAPI/issues/310
     
  2. 2.1.3: Selection control is in Switch class, while in Edge is in ResilienceConstraint class (more correct)
    2.1.x: add “deprecated” stereotype to selectionControl attrib of Switch class. Add the selectionControl attrib to ResilienceConstraint class. Edge: maybe add the “deprecated” selection control to Switch class to have full equivalence.
     
  3. 2.1.3: add fault-condition-determination to ResilienceConstraint class, plus related type
     

    typedef fault-condition-determination {

        type identityref {

            base FAULT_CONDITION_DETERMINATION;

        }

        description "ITU-T G.808-201611

            3.2.6.8 subnetwork connection protection

            Transport entity protection for the case where the transport entity is a subnetwork connection.

            The serial compound link connection within the subnetwork connection is protected by adding bridges and selectors

            in the connection functions at the edges of the protected domain and an additional serial compound link connection between these connection functions.

            The determination of a fault condition on a serial compound link connection within the protected domain can be performed as follows: see enum.";

    }

    identity FAULT_CONDITION_DETERMINATION {

        description "none";

    }

    identity FAULT_CONDITION_DETERMINATION_INHERENT {

        base FAULT_CONDITION_DETERMINATION;

        description "Inherent monitored (/I): The fault condition status of each link connection is derived from the status of the underlying server layer trail.";

    }

    identity FAULT_CONDITION_DETERMINATION_NON_INTRUSIVE {

        base FAULT_CONDITION_DETERMINATION;

        description "Non-intrusive monitored (/N): Each serial compound link connection is extended with a non-intrusive monitoring termination sink function to derive the fault condition status from the traffic signal that is present.";

    }

    identity FAULT_CONDITION_DETERMINATION_SUBLAYER {

        base FAULT_CONDITION_DETERMINATION;

        description "Sublayer monitored (/S): Each serial compound link connection is extended with tandem connection monitoring or segment termination/adaptation functions to derive the fault condition status independent of the traffic signal present.";

    }

    identity FAULT_CONDITION_DETERMINATION_TEST {

        base FAULT_CONDITION_DETERMINATION;

        description "Test monitored (/T): Each serial compound link connection's fault condition status is derived from an additional monitored serial compound link connection transported via the same serial compound link.";

    }

 

 

  1. ConnectivityObjectType not defined in 213 no change possible
     
  2. Edge: all rpcs have comment on uuid in Edge we may either remove all rpcs or enhance .
     
  3. create-connectivity-service, Edge adds input params:
    • uuid
    • name
    • layer protocol name
    • topology constraint becomes a list
  4. update-connectivity-service, Edge adds input params:
    • uuid
    • name
    • topology constraint becomes a list
  5. 2.1.3: full hierarchy (see below), while in Edge just uuid:

    rpc get-connection-end-point-details {

        description "none";

        input {

            leaf topology-id-or-name {

                type string;

                description "none";

            }

            leaf node-id-or-name {

                type string;

                description "none";

            }

            leaf nep-id-or-name {

                type string;

                description "none";

            }

            leaf cep-id-or-name {

                type string;

            }

        }

4        Tapi Equipment

No differences ( 12 July, in Edge fixed the SupportingPhysicalSpan augmentation of Link )

 


5        Tapi OAM

  1. 2.1.3 uses tapi-common:resource-spec, Edge uses tapi-common:global-class
     
  2. 2.1.3 no import tapi-notification
     
  3. 2.1.3: pmCurrentData, PmHistoryData – Edge: currentData, historyData
    1. Edge: granularityPeriod and suspectIntervalFlag moved to a new class PmDataPac, conditional of both current and historyData.
    2. 2.1.3 timestamp – Edge periodStartTime
    3. Edge historyData adds periodStartTime

Consider enhance 2.1.3 accordingly.

  1. 2.1.3: oam-service-end-point – Edge: oam-service-point
    Consider enhance 2.1.3 accordingly.
     
  2. Edge: MEP direction, mep-identifier and peer-mep-identifier moved to TapiEth.
    Consider enhance 2.1.3 accordingly.
     
  3. Edge: OamServicePoint direction, mep-identifier and peer-mep-identifier moved to TapiEth
    Consider enhance 2.1.3 accordingly.
     
  4. Edge: OamServicePoint has is-mip attribute
    Consider enhance 2.1.3 accordingly.
     
  5. 2.1.3 comment typo :

    grouping meg {

        list mep {

            key 'local-id';

            config false;

            uses mep;

            description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)

                2. ME may have 1 MEP (case of edge domaind

  1. Edge: OamService has layer-protocol-name attribute, and the list is oam-service-point rather than end-point
    Consider enhance 2.1.3 accordingly.
     
  2. 2.1.3 OamService has association to OamProfile “OamServiceAppliesProfile”, Edge does not.
    Consider enhance 2.1.3 regarding
    1. add OamProfile operations
    2. operation structure of Edge (OamJob and OamProfile in distinct interfaces)
       
  3. 2.1.3 OamConstraints – Edge: class removed, because its attributes
    1. layerProtocolName: in Edge is in OamService,
    2. direction, megLevel: in Edge are in EthOamService, EthOamMeg/MepServicePoint.
      Consider enhance 2.1.3 accordingly
       
  4. Edge OamProfile, pm-bin-data class removed (only attribute was granularityPeriod)
    Consider enhance 2.1.3 accordingly
     
  5. Edge PmThresholdData has applicable-job-type and threshold-parameter attributes.
    Consider enhance 2.1.3 accordingly
     
  6. Edge adds (to be evaluated feature parity with 2.1.3):
    1. grouping tca-info
          grouping tca-info {

        leaf is-transient {

        leaf perceived-severity {

        container threshold-parameter {

        leaf measurement-interval {

        leaf suspect-interval-flag {

        leaf oam-job {

 

  1. grouping  alarm-info

        grouping alarm-info {

        leaf is-transient {

        leaf probable-cause {

        leaf service-affecting {
 

  1. identity OAM_NOTIFICATION_TYPE

        identity OAM_NOTIFICATION_TYPE_ALARM_EVENT {

        identity OAM_NOTIFICATION_TYPE_THRESHOLD_CROSSING_ALERT {
 

  1. identity ALARM_CONDITION_NAME
     
  2. identity PM_PARAMETER_NAME
  3. identity OAM_OBJECT_TYPE

        identity OAM_OBJECT_TYPE_OAM_SERVICE {
        identity OAM_OBJECT_TYPE_MEG {
        identity OAM_OBJECT_TYPE_MEP {

        identity OAM_OBJECT_TYPE_MIP {

        identity OAM_OBJECT_TYPE_OAM_JOB {

        identity OAM_OBJECT_TYPE_OAM_PROFILE {

        identity OAM_OBJECT_TYPE_PM_THRESHOLD_DATA {

        identity OAM_OBJECT_TYPE_HISTORY_DATA {
 

  1. typedef perceived-tca-severity

       typedef perceived-tca-severity {

           type enumeration {

            enum WARNING {

            enum CLEAR {        



 

  1. typedef perceived-severity-type

      type enumeration {

            enum CRITICAL {

            enum MAJOR {

            enum MINOR {

            enum WARNING {

            enum CLEARED {
 

  1. typedef service-affecting
          type enumeration {

            enum SERVICE_AFFECTING {

            enum NOT_SERVICE_AFFECTING {

            enum UNKNOWN
 

  1. The following:
            grouping pm-parameter {

        leaf pm-parameter-name {

            type pm-parameter-name;

            description "none";

        }

        container pm-parameter-value {

            uses pm-parameter-value;

            description "none";

        }

        description "none";

    }

    typedef pm-parameter-name {

        type identityref {

            base PM_PARAMETER_NAME;

        }

        description "none";

    }

grouping threshold-parameter {

        leaf pm-parameter-name {

            type pm-parameter-name;

            description "none";

        }

        leaf threshold-location {

            type threshold-crossing-qualifier;

            description "none";

        }

        container pm-parameter-above-thrs {

            uses pm-parameter-value;

            description "none";

        }

        container pm-parameter-below-thrs {

            uses pm-parameter-value;

            description "none";

        }

        container pm-parameter-clear-thrs {

            uses pm-parameter-value;

            description "none";

        }

        description "none";

    }

 

typedef threshold-crossing-qualifier

    grouping pm-parameter-value {

        leaf pm-parameter-int-value {

            type uint64;

            description "none";

        }

        leaf pm-parameter-real-value {

            type decimal64 {

                fraction-digits 7;

            }

            description "none";

        }

        description "none";

    }

6        Tapi ODU

  1. 213 OduTcmMepPac/ codirectional is “config false”, while in Edge is readwrite because OduTcmMepPac augments, besides OduMepSpec/Mep, also OduOamMep Service Point/OamServicePoint (provisioning).
    Consider enhance 2.1.3 accordingly
     
  2. 213: OduTcmMepPac inherits from OduTcmMipPac (only one attribute, tcmField), while in Edge the OduTcmMepPac does not inherit from OduTcmMipPac, and includes its tcmField. This likely because in Edge the OduTcmMipPac also includes codirectional attribute. Note also that in Edge the TcmMep/Mip tcmField is readwrite, while in 213 is “config false”. Is tcmField provisionable? Comment is “This attribute indicates the tandem connection monitoring field of the ODU OH”.
    Consider enhance 2.1.3 accordingly
     
  3. Edge has ( consider enhance 2.1.3 accordingly):
    • odu-oam-service
    • odu-meg-spec
    • odu-measurement-job
    • odu-oam-mep-service-point
    • odu-oam-mip-service-point
    • odu-delay-performance-data
    • odu-fec-performance-data
       
  4. Edge: odu-csep-ttp-pac/ configured-client-type is readwrite, 213 is “config false” – which seems wrong as it should be provisionable (through OduConnectivityServiceEndPointSpec)
    Correct 2.1.3
     
  5. Edge has OTN_ALARM_CONDITION_NAME (all ODU related probable causes)
    Consider enhance 2.1.3 accordingly – adding it to TapiNotification
     
  6. Edge has OTN_FAULT_CONDITION_DETERMINATION, ODU_OAM_JOB_TYPE, c onsider enhance 2.1.3 accordingly

    typedef otn-fault-condition-determination {

        type identityref {

            base OTN_FAULT_CONDITION_DETERMINATION;

        }

        description "ITU-T-REC-G.873.1-201710

            Optical transport network: Linear protection";

    }

    typedef odu-oam-job-type {

        type identityref {

            base ODU_OAM_JOB_TYPE;

        }

        description "none";

    }


    identity OTN_FAULT_CONDITION_DETERMINATION {

        description "none";

    }

    identity OTN_FAULT_CONDITION_DETERMINATION_NON_INTRUSIVE_CLIENT {

        base OTN_FAULT_CONDITION_DETERMINATION;

        description "Non-intrusive monitoring of Client signal fail";

    }

    identity OTN_FAULT_CONDITION_DETERMINATION_NON_INTRUSIVE_E2E {

        base OTN_FAULT_CONDITION_DETERMINATION;

        description "Non-intrusive end-to-end monitoring";

    }

    identity OTN_FAULT_CONDITION_DETERMINATION_NON_INTRUSIVE_SUBLAYER {

        base OTN_FAULT_CONDITION_DETERMINATION;

        description "Non-intrusive Sublayer monitoring";

    }

    identity ODU_OAM_JOB_TYPE {

        description "none";

    }

    identity ODU_OAM_JOB_TYPE_DELAY {

        base ODU_OAM_JOB_TYPE;

        description "none";

    }

    identity ODU_OAM_JOB_TYPE_TCM {

        base ODU_OAM_JOB_TYPE;

        description "none";

    }

    identity ODU_OAM_JOB_TYPE_NCM {

        base ODU_OAM_JOB_TYPE;

        description "none";

    }
 

  1. Edge has (c onsider enhance 2.1.3 accordingly):

    grouping odu-counters {

        leaf bbe {

            type uint64;

            description "none";

        }

        leaf ses {

            type uint64;

            description "none";

        }

        leaf uas {

            type uint64;

            description "none";

        }

        description "none";

    }

 


7        Tapi Notification

  1. Edge adds notification/layer-protocol-qualifier
    Consider enhance 2.1.3 accordingly
     
  2. 2.1.3 has

        container tca-info {

            uses tca-info;

            description "none";

        }

        container alarm-info {

            uses alarm-info;

            description "none";

            }

while Edge has two classes (grouping tca-info and alarm-info), which augment Notification class.
2.1.3, not present in Edge classes:
 

leaf is-transient {

leaf perceived-severity {

leaf probable-cause {

leaf service-affecting {

 

 

leaf is-transient {

leaf threshold-crossing {above, below, cleared)

       leaf threshold-parameter {

leaf threshold-value {

leaf perceived-severity {

leaf measurement-interval {

leaf suspect-interval-flag {

 

 

  1. Edge has:


        identity NOTIFICATION_TYPE {

        description "none";

    }

    identity NOTIFICATION_TYPE_ OBJECT_CREATION {

        base NOTIFICATION_TYPE;

        description "Not a normal state. The system is unable to determine the correct value.";

    }

    identity NOTIFICATION_TYPE_ OBJECT_DELETION {

        base NOTIFICATION_TYPE;

        description "none";

    }

    identity NOTIFICATION_TYPE_ ATTRIBUTE_VALUE_CHANGE {

        base NOTIFICATION_TYPE;

        description "none";

    }

 

    identity NOTIFICATION_OBJECT_TYPE {

  

        description "none";

    }

    identity NOTIFICATION_OBJECT_TYPE_NOTIFICATION_SUBSCRIPTION_SERVICE {

        base NOTIFICATION_OBJECT_TYPE;

        description "none";

    }

    identity NOTIFICATION_OBJECT_TYPE_NOTIFICATION_FILTER {

        base NOTIFICATION_OBJECT_TYPE;
 

2.1.3 has:

 

    typedef notification-type {

        type enumeration {

            enum OBJECT_CREATION {

                description "Not a normal state. The system is unable to determine the correct value.";

            }

            enum OBJECT_DELETION {

                description "none";

            }

            enum ATTRIBUTE_VALUE_CHANGE {

                description "none";

            }

            enum ALARM_EVENT {

                description "none";

            }

            enum THRESHOLD_CROSSING_ALERT {

                description "none";

            }

        }

        description "List of supported Notifications types.";

    }
 

  1. 2.1.3 has

    typedef object-type {

        type enumeration {

            enum TOPOLOGY {

                description "none";

            }

            enum NODE {

                description "none";

            }

            enum LINK {

                description "none";

            }

            enum CONNECTION {

                description "none";

            }

            enum PATH {

                description "none";

            }

            enum CONNECTIVITY_SERVICE {

                description "none";

            }

            enum VIRTUAL_NETWORK_SERVICE {

                description "none";

            }

            enum PATH_COMPUTATION_SERVICE {

                description "none";

            }

            enum NODE_EDGE_POINT {

                description "none";

            }

            enum SERVICE_INTERFACE_POINT {

                description "none";

            }

            enum CONNECTION_END_POINT {

                description "none";

            }

            enum MAINTENANCE_ENTITY_GROUP {

                description "none";

            }

            enum MAINTENANCE_ENTITY {

                description "none";

            }

            enum MEG_END_POINT {

                description "none";

            }

            enum MEG_INTERMEDIATE_POINT {

                description "none";

            }

            enum SWITCH_CONTROL {

                description "none";

            }

            enum SWITCH {

                description "none";

            }

            enum ROUTE {

                description "none";

            }

            enum NODE_RULE_GROUP {

                description "none";

            }

            enum INTER_RULE_GROUP {

                description "none";

            }

            enum RULE {

                description "none";

            }

            enum OAM_JOB {

                description "none";

            }

            enum ACCESS_PORT {

                description "none";

            }

            enum EQUIPMENT {

                description "none";

            }

            enum HOLDER {

                description "none";

            }

            enum PHYSICAL_SPAN {

                description "none";

            }

            enum ABSTRACT_STRAND {

                description "none";

            }

            enum DEVICE {

                description "none";

            }

        }

        description "The list of TAPI Global Object Class types on which Notifications can be raised.";

    }

    typedef perceived-severity-type {

        type enumeration {

            enum CRITICAL {

                description "none";

            }

            enum MAJOR {

                description "none";

            }

            enum MINOR {

                description "none";

            }

            enum WARNING {

                description "none";

            }

            enum CLEARED {

                description "none";

            }

        }

        description "none";

    }

    typedef threshold-crossing-type {

        type enumeration {

            enum THRESHOLD_ABOVE {

                description "none";

            }

            enum THRESHOLD_BELOW {

                description "none";

            }

            enum CLEARED {

                description "none";

            }

        }

        description "none";

    }

    typedef service-affecting {

        type enumeration {

            enum SERVICE_AFFECTING {

                description "none";

            }

            enum NOT_SERVICE_AFFECTING {

                description "none";

            }

            enum UNKNOWN {

                description "none";

            }

        }

        description "none";

    }

    typedef perceived-tca-severity {

        type enumeration {

            enum WARNING {

                description "none";

            }

            enum CLEAR {

                description "none";

            }

        }

        description "none";

    }

 

 

  1. Edge has (also for update-notification-subscription-service, and other differences in delete and get/list):

 

    rpc create-notification-subscription-service {

        description "none";

        input {

            leaf uuid {

                type string;

                description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable.

                    An UUID carries no semantics with respect to the purpose or state of the entity.

                    UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.

                    Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

                    Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";

            }

            leaf name {

                type string;

                description "List of names. This value is unique in some namespace but may change during the life of the entity.

                    A name carries no semantics with respect to the purpose of the entity.";

            }

 

2.1.3 has:

 

   rpc update-notification-subscription-service {

        description "none";

        input {

            leaf subscription-id-or-name {

                type string;

                description "none";

            }