| < draft-ietf-lime-yang-connectionless-oam-09.txt | draft-ietf-lime-yang-connectionless-oam-10.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Kumar | Network Working Group D. Kumar | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track M. Wang | Intended status: Standards Track M. Wang | |||
| Expires: March 4, 2018 Q. Wu | Expires: March 19, 2018 Q. Wu | |||
| Huawei | Huawei | |||
| R. Rahman | R. Rahman | |||
| S. Raghavan | S. Raghavan | |||
| Cisco | Cisco | |||
| August 31, 2017 | September 15, 2017 | |||
| Generic YANG Data Model for Connectionless Operations, Administration, | Generic YANG Data Model for Connectionless Operations, Administration, | |||
| and Maintenance(OAM) protocols | and Maintenance(OAM) protocols | |||
| draft-ietf-lime-yang-connectionless-oam-09 | draft-ietf-lime-yang-connectionless-oam-10 | |||
| Abstract | Abstract | |||
| This document presents a base YANG Data model for connectionless | This document presents a base YANG Data model for connectionless | |||
| Operations Administration, and Maintenance(OAM) protocols. It | Operations Administration, and Maintenance(OAM) protocols. It | |||
| provides a technology-independent abstraction of key OAM constructs | provides a technology-independent abstraction of key OAM constructs | |||
| for connectionless protocols. The base model presented here can be | for connectionless protocols. The base model presented here can be | |||
| extended to include technology specific details. This is leading to | extended to include technology specific details. This is leading to | |||
| uniformity between OAM protocols and support both nested OAM | uniformity between OAM protocols and support both nested OAM | |||
| workflows (i.e., performing OAM functions at different or same levels | workflows (i.e., performing OAM functions at different or same levels | |||
| through a unified interface). | through a unified interface) and interacting OAM workflows ( i.e., | |||
| performing OAM functions at same levels through a unified interface). | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 4, 2018. | This Internet-Draft will expire on March 19, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Conventions used in this document . . . . . . . . . . . . . . 3 | |||
| 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Overview of the Connectionless OAM Model . . . . . . . . . . 4 | 3. Overview of the Connectionless OAM Model . . . . . . . . . . 4 | |||
| 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 6 | 3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 6 | |||
| 3.4. Test Point Locations Information . . . . . . . . . . . . 7 | 3.4. Test Point Locations Information . . . . . . . . . . . . 7 | |||
| 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 | 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 | |||
| 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 8 | 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | |||
| skipping to change at page 4, line 25 ¶ | skipping to change at page 4, line 34 ¶ | |||
| RPC - A Remote Procedure Call | RPC - A Remote Procedure Call | |||
| RPC operation - A specific Remote Procedure Call. | RPC operation - A specific Remote Procedure Call. | |||
| CC - Continuity Check [RFC7276] , Continuity Checks are used to | CC - Continuity Check [RFC7276] , Continuity Checks are used to | |||
| verify that a destination is reachable and therefore also referred to | verify that a destination is reachable and therefore also referred to | |||
| as reachability verification | as reachability verification | |||
| 3. Overview of the Connectionless OAM Model | 3. Overview of the Connectionless OAM Model | |||
| The model is augmented to "/nd:networks/nd:network/nd:node" using | The model is augmented to "/nd:networks/nd:network/nd:node" | |||
| 'test-point-locations' defined below. 'tp-tools' grouping defined in | [I-D.ietf-i2rs-yang-network-topo] using 'test-point-locations' | |||
| this model supports both proactive and on-demand activation. | defined in Section 3.5. The tool attribute 'tp-tools' grouping | |||
| defined in this model is corresponding to technology-independent | ||||
| retrieval procedures (RPC operations) defined in | ||||
| [I-D.ietf-lime-yang-connectionless-oam-methods] and supports one of | ||||
| two basic types of activation: proactive and on-demand (determined by | ||||
| 'session-type' grouping defined in this model, see section 3.2). | ||||
| At the top of the model, there is an 'cc-oper-data' container for | At the top of the model, there is an 'cc-oper-data' container for | |||
| session statistics. Grouping is also defined for common session | session statistics. Grouping is also defined for common session | |||
| statistics and these are only applicable for proactive OAM sessions. | statistics and these are only applicable for proactive OAM sessions. | |||
| Multiple 'test-point-locations' keyed using technology specific keys | Multiple 'test-point-locations' keyed using technology specific keys | |||
| (eg., IPv4 address for IPv4 locations) are augmented into network | (eg., IPv4 address for IPv4 locations) are augmented into network | |||
| nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] to | nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] to | |||
| describe the network hierarchies and the inventory of nodes contained | describe the network hierarchies and the inventory of nodes contained | |||
| in a network. Each test point location under 'test-point-locations | in a network. Each test point location under 'test-point-locations | |||
| skipping to change at page 5, line 28 ¶ | skipping to change at page 5, line 42 ¶ | |||
| o IPv4 or IPv6 address | o IPv4 or IPv6 address | |||
| o TP-attribute | o TP-attribute | |||
| o System-id to represent the device or | o System-id to represent the device or | |||
| node.[I-D.ietf-spring-sr-yang] | node.[I-D.ietf-spring-sr-yang] | |||
| To define a forwarding treatment of a test packet, the 'tp- | To define a forwarding treatment of a test packet, the 'tp- | |||
| address'grouping needs to be associated with additional parameters, | address'grouping needs to be associated with additional parameters, | |||
| e.g. DSCP for IP or EXP for MPLS. In generic connectionless OAM | e.g. DSCP for IP or EXP (renamed to Traffic Classic in RFC5462) for | |||
| YANG model, these parameters are not explicit configured. The model | MPLS. In generic connectionless OAM YANG model, these parameters are | |||
| user can add corresponding parameters according to their | not explicit configured. The model user can add corresponding | |||
| requirements. | parameters according to their requirements. | |||
| 3.2. Tools | 3.2. Tools | |||
| The different OAM tools may be used in one of two basic types of | The different OAM tools may be used in one of two basic types of | |||
| activation: proactive and on-demand. The proactive OAM refers to OAM | activation: proactive and on-demand. The proactive OAM refers to OAM | |||
| actions which are carried out continuously to permit proactive | actions which are carried out continuously to permit proactive | |||
| reporting of fault. The proactive OAM method requires persistent | reporting of fault. The proactive OAM method requires persistent | |||
| configuration. The on-demand OAM refers to OAM actions which are | configuration. The on-demand OAM refers to OAM actions which are | |||
| initiated via manual intervention for a limited time to carry out | initiated via manual intervention for a limited time to carry out | |||
| diagnostics. The on-demand OAM method requires only transient | diagnostics. The on-demand OAM method requires only transient | |||
| skipping to change at page 6, line 15 ¶ | skipping to change at page 6, line 29 ¶ | |||
| 3.3. OAM neighboring layers | 3.3. OAM neighboring layers | |||
| As typical networks have a multi-layer architecture, the set of OAM | As typical networks have a multi-layer architecture, the set of OAM | |||
| protocols similarly take a multi-layer structure; each layer may has | protocols similarly take a multi-layer structure; each layer may has | |||
| its own OAM protocol [RFC7276] and is corresponding to specific | its own OAM protocol [RFC7276] and is corresponding to specific | |||
| administrative domain and has associated test points. OAM- | administrative domain and has associated test points. OAM- | |||
| neighboring-layers is referred to a list of neighboring test points | neighboring-layers is referred to a list of neighboring test points | |||
| in the upstream layer and/or downstream layer and the same layer that | in the upstream layer and/or downstream layer and the same layer that | |||
| are related to current test point. This allows users to easily | are related to current test point. This allows users to easily | |||
| navigate between related neighboring layer to efficiently | navigate between related neighboring layer to efficiently | |||
| troubleshoot a defect. In this model, we have kept level default as | troubleshoot a defect. In this model, we have kept technology-level | |||
| 0, when a list of neighboring test points under 'oam-neighboring- | default as 0, when a list of neighboring test points under 'oam- | |||
| layers' list are located at the same layer as the current test point. | neighboring-layers' list are located at the same layer as the current | |||
| 'Technology-Level'leaf defines the relative technology level of | test point. 'Technology-Level'leaf defines the relative technology | |||
| neighboring test point corresponding to the current test point in | level of neighboring test point corresponding to the current test | |||
| multi-layer and multi-technology networks , and is provided to allow | point in multi-layer and multi-technology networks , and is provided | |||
| correlation of faults at different administrative and technology | to allow correlation of faults at different administrative and | |||
| layers . If there is one neighboring test point at higher layer of | technology layers . If there is one neighboring test point at higher | |||
| the current test point, 'Technology-level'leaf is set to 1. If there | layer of the current test point, 'Technology-level'leaf is set to 1. | |||
| is one neighboring test point at lower layer of the current test | If there is one neighboring test point at lower layer of the current | |||
| point, 'Technology-level'leaf is set to -1. | test point, 'Technology-level'leaf is set to -1. | |||
| list oam-neighboring-layers { | list oam-neighboring-layers { | |||
| key "index"; | key "index"; | |||
| leaf index { | leaf index { | |||
| type uint8 { | type uint8 { | |||
| range "0..128"; | range "0..128"; | |||
| } | } | |||
| description | description | |||
| "Index of a list of neighboring test points | "Index of a list of neighboring test points | |||
| in the upstream layer and/or downstream layer | in the upstream layer and/or downstream layer | |||
| skipping to change at page 9, line 21 ¶ | skipping to change at page 9, line 21 ¶ | |||
| | +--rw ni routing-instance-ref | | +--rw ni routing-instance-ref | |||
| | +--rw (technology)? | | +--rw (technology)? | |||
| | | +--:(technology-null) | | | +--:(technology-null) | |||
| | | +--rw tech-null? empty | | | +--rw tech-null? empty | |||
| | +--rw tp-tools | | +--rw tp-tools | |||
| | | +--rw continuity-check boolean | | | +--rw continuity-check boolean | |||
| | | +--rw path-discovery boolean | | | +--rw path-discovery boolean | |||
| | +--rw root? | | +--rw root? | |||
| | +--rw oam-neighboring-layers* [index] | | +--rw oam-neighboring-layers* [index] | |||
| | +--rw index uint8 | | +--rw index uint8 | |||
| | +--rw level? int8 | | +--rw technology-level? int8 | |||
| | +--rw (tp-location)? | | +--rw (tp-location)? | |||
| | +--:(mac-address) | | +--:(mac-address) | |||
| | | +--rw mac-address-location? yang:mac-address | | | +--rw mac-address-location? yang:mac-address | |||
| | +--:(ipv4-address) | | +--:(ipv4-address) | |||
| | | +--rw ipv4-address-location? inet:ipv4-address | | | +--rw ipv4-address-location? inet:ipv4-address | |||
| | +--:(ipv6-address) | | +--:(ipv6-address) | |||
| | | +--rw ipv6-address-location? inet:ipv6-address | | | +--rw ipv6-address-location? inet:ipv6-address | |||
| | +--:(as-number) | | +--:(as-number) | |||
| | | +--rw as-number-location? inet:as-number | | | +--rw as-number-location? inet:as-number | |||
| | +--:(system-id) | | +--:(system-id) | |||
| skipping to change at page 9, line 47 ¶ | skipping to change at page 9, line 47 ¶ | |||
| | +--rw ni routing-instance-ref | | +--rw ni routing-instance-ref | |||
| | +--rw (technology)? | | +--rw (technology)? | |||
| | | +--:(technology-null) | | | +--:(technology-null) | |||
| | | +--rw tech-null? empty | | | +--rw tech-null? empty | |||
| | +--rw tp-tools | | +--rw tp-tools | |||
| | | +--rw continuity-check boolean | | | +--rw continuity-check boolean | |||
| | | +--rw path-discovery boolean | | | +--rw path-discovery boolean | |||
| | +--rw root? | | +--rw root? | |||
| | +--rw oam-neighboring-layers* [index] | | +--rw oam-neighboring-layers* [index] | |||
| | +--rw index uint8 | | +--rw index uint8 | |||
| | +--rw level? int8 | | +--rw technology-level? int8 | |||
| | +--rw (tp-location)? | | +--rw (tp-location)? | |||
| | +--:(mac-address) | | +--:(mac-address) | |||
| | | +--rw mac-address-location? yang:mac-address | | | +--rw mac-address-location? yang:mac-address | |||
| | +--:(ipv4-address) | | +--:(ipv4-address) | |||
| | | +--rw ipv4-address-location? inet:ipv4-address | | | +--rw ipv4-address-location? inet:ipv4-address | |||
| | +--:(ipv6-address) | | +--:(ipv6-address) | |||
| | | +--rw ipv6-address-location? inet:ipv6-address | | | +--rw ipv6-address-location? inet:ipv6-address | |||
| | +--:(as-number) | | +--:(as-number) | |||
| | | +--rw as-number-location? inet:as-number | | | +--rw as-number-location? inet:as-number | |||
| | +--:(system-id) | | +--:(system-id) | |||
| skipping to change at page 10, line 23 ¶ | skipping to change at page 10, line 23 ¶ | |||
| | +--rw mac-address-location yang:mac-address | | +--rw mac-address-location yang:mac-address | |||
| | +--rw (technology)? | | +--rw (technology)? | |||
| | | +--:(technology-null) | | | +--:(technology-null) | |||
| | | +--rw tech-null? empty | | | +--rw tech-null? empty | |||
| | +--rw tp-tools | | +--rw tp-tools | |||
| | | +--rw continuity-check boolean | | | +--rw continuity-check boolean | |||
| | | +--rw path-discovery boolean | | | +--rw path-discovery boolean | |||
| | +--rw root? | | +--rw root? | |||
| | +--rw oam-neighboring-layers* [index] | | +--rw oam-neighboring-layers* [index] | |||
| | +--rw index uint8 | | +--rw index uint8 | |||
| | +--rw level? int8 | | +--rw technology-level? int8 | |||
| | +--rw (tp-location)? | | +--rw (tp-location)? | |||
| | +--:(mac-address) | | +--:(mac-address) | |||
| | | +--rw mac-address-location? yang:mac-address | | | +--rw mac-address-location? yang:mac-address | |||
| | +--:(ipv4-address) | | +--:(ipv4-address) | |||
| | | +--rw ipv4-address-location? inet:ipv4-address | | | +--rw ipv4-address-location? inet:ipv4-address | |||
| | +--:(ipv6-address) | | +--:(ipv6-address) | |||
| | | +--rw ipv6-address-location? inet:ipv6-address | | | +--rw ipv6-address-location? inet:ipv6-address | |||
| | +--:(as-number) | | +--:(as-number) | |||
| | | +--rw as-number-location? inet:as-number | | | +--rw as-number-location? inet:as-number | |||
| | +--:(system-id) | | +--:(system-id) | |||
| skipping to change at page 10, line 49 ¶ | skipping to change at page 10, line 49 ¶ | |||
| | +--rw ni? routing-instance-ref | | +--rw ni? routing-instance-ref | |||
| | +--rw (technology)? | | +--rw (technology)? | |||
| | | +--:(technology-null) | | | +--:(technology-null) | |||
| | | +--rw tech-null? empty | | | +--rw tech-null? empty | |||
| | +--rw tp-tools | | +--rw tp-tools | |||
| | | +--rw continuity-check boolean | | | +--rw continuity-check boolean | |||
| | | +--rw path-discovery boolean | | | +--rw path-discovery boolean | |||
| | +--rw root? | | +--rw root? | |||
| | +--rw oam-neighboring-layers* [index] | | +--rw oam-neighboring-layers* [index] | |||
| | +--rw index uint8 | | +--rw index uint8 | |||
| | +--rw level? int8 | | +--rw technology-level? int8 | |||
| | +--rw (tp-location)? | | +--rw (tp-location)? | |||
| | +--:(mac-address) | | +--:(mac-address) | |||
| | | +--rw mac-address-location? yang:mac-address | | | +--rw mac-address-location? yang:mac-address | |||
| | +--:(ipv4-address) | | +--:(ipv4-address) | |||
| | | +--rw ipv4-address-location? inet:ipv4-address | | | +--rw ipv4-address-location? inet:ipv4-address | |||
| | +--:(ipv6-address) | | +--:(ipv6-address) | |||
| | | +--rw ipv6-address-location? inet:ipv6-address | | | +--rw ipv6-address-location? inet:ipv6-address | |||
| | +--:(as-number) | | +--:(as-number) | |||
| | | +--rw as-number-location? inet:as-number | | | +--rw as-number-location? inet:as-number | |||
| | +--:(system-id) | | +--:(system-id) | |||
| skipping to change at page 11, line 27 ¶ | skipping to change at page 11, line 27 ¶ | |||
| +--rw ni? routing-instance-ref | +--rw ni? routing-instance-ref | |||
| +--rw (technology)? | +--rw (technology)? | |||
| | +--:(technology-null) | | +--:(technology-null) | |||
| | +--rw tech-null? empty | | +--rw tech-null? empty | |||
| +--rw tp-tools | +--rw tp-tools | |||
| | +--rw continuity-check boolean | | +--rw continuity-check boolean | |||
| | +--rw path-discovery boolean | | +--rw path-discovery boolean | |||
| +--rw root? | +--rw root? | |||
| +--rw oam-neighboring-layers* [index] | +--rw oam-neighboring-layers* [index] | |||
| +--rw index uint8 | +--rw index uint8 | |||
| +--rw level? int8 | +--rw technology-level? int8 | |||
| +--rw (tp-location)? | +--rw (tp-location)? | |||
| +--:(mac-address) | +--:(mac-address) | |||
| | +--rw mac-address-location? yang:mac-address | | +--rw mac-address-location? yang:mac-address | |||
| +--:(ipv4-address) | +--:(ipv4-address) | |||
| | +--rw ipv4-address-location? inet:ipv4-address | | +--rw ipv4-address-location? inet:ipv4-address | |||
| +--:(ipv6-address) | +--:(ipv6-address) | |||
| | +--rw ipv6-address-location? inet:ipv6-address | | +--rw ipv6-address-location? inet:ipv6-address | |||
| +--:(as-number) | +--:(as-number) | |||
| | +--rw as-number-location? inet:as-number | | +--rw as-number-location? inet:as-number | |||
| +--:(system-id) | +--:(system-id) | |||
| +--rw system-id-location? router-id | +--rw system-id-location? router-id | |||
| 4. OAM YANG Module | 4. OAM YANG Module | |||
| <CODE BEGINS> file "ietf-connectionless-oam@2017-08-30.yang" | <CODE BEGINS> file "ietf-connectionless-oam@2017-09-06.yang" | |||
| module ietf-connectionless-oam { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; | ||||
| prefix coam; | ||||
| import ietf-yang-schema-mount { | ||||
| prefix yangmnt; | ||||
| } | ||||
| import ietf-network { | ||||
| prefix nd; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix yang; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| import ietf-network-instance { | ||||
| prefix ni; | ||||
| } | ||||
| organization | module ietf-connectionless-oam { | |||
| "IETF LIME Working Group"; | yang-version 1.1; | |||
| contact | namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; | |||
| "Deepak Kumar dekumar@cisco.com | prefix coam; | |||
| Qin Wu bill.wu@huawei.com | import ietf-yang-schema-mount { | |||
| S Raghavan srihari@cisco.com | prefix yangmnt; | |||
| Zitao Wang wangzitao@huawei.com | } | |||
| R Rahman rrahman@cisco.com"; | import ietf-network { | |||
| prefix nd; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix yang; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| import ietf-network-instance { | ||||
| prefix ni; | ||||
| } | ||||
| import ietf-routing-types { | ||||
| prefix rt; | ||||
| } | ||||
| organization | ||||
| "IETF LIME Working Group"; | ||||
| contact | ||||
| "Deepak Kumar dekumar@cisco.com | ||||
| Qin Wu bill.wu@huawei.com | ||||
| S Raghavan srihari@cisco.com | ||||
| Zitao Wang wangzitao@huawei.com | ||||
| R Rahman rrahman@cisco.com"; | ||||
| description | ||||
| "This YANG module defines the generic configuration, | ||||
| data model, statistics for connectionless OAM to be | ||||
| used within IETF in a protocol independent manner. | ||||
| It is assumed that each protocol maps corresponding | ||||
| abstracts to its native format. Each protocol may | ||||
| extend the YANG model defined here to include protocol | ||||
| specific extensions"; | ||||
| revision 2017-09-06 { | ||||
| description | description | |||
| "This YANG module defines the generic configuration, | " Base model for Connectionless | |||
| data model, statistics for connectionless OAM to be | Operations, Administration, | |||
| used within IETF in a protocol independent manner. | and Maintenance(OAM) "; | |||
| It is assumed that each protocol maps corresponding | reference | |||
| abstracts to its native format.Each protocol may | " RFC XXXX: Connectionless | |||
| extend the YANG model defined here to include protocol | Operations, Administration, and | |||
| specific extensions"; | Maintenance(OAM)YANG Data Model"; | |||
| } | ||||
| revision 2017-08-30 { | feature connection-less { | |||
| description | description | |||
| " Base model for Connectionless | "This feature indicates that OAM solution is connection less."; | |||
| Operations, Administration, | } | |||
| and Maintenance(OAM) "; | feature continuity-check { | |||
| reference | description | |||
| " RFC XXXX: Connectionless | "This feature indicates that the server supports | |||
| Operations, Administration, and | executing continuity check OAM command and | |||
| Maintenance(OAM)YANG Data Model"; | returning a response. Servers that do not advertise | |||
| } | this feature will not support executing | |||
| continuity check command or rpc operation model for | ||||
| feature connection-less { | continuity check command."; | |||
| description | } | |||
| "This feature indicates that OAM solution is connection less."; | feature path-discovery { | |||
| } | description | |||
| feature continuity-check { | "This feature indicates that the server supports | |||
| description | executing path discovery OAM command and | |||
| "This feature indicates that the server supports | returning a response. Servers that do not advertise | |||
| executing continuity check OAM command and | this feature will not support executing | |||
| returning a response. Servers that do not advertise | path discovery command or rpc operation model for | |||
| this feature will not support executing | path discovery command."; | |||
| continuity check command or rpc operation model for | } | |||
| continuity check command."; | typedef router-id { | |||
| type yang:dotted-quad; | ||||
| description | ||||
| "A 32-bit number in the dotted quad format assigned to each | ||||
| router. This number uniquely identifies the router within an | ||||
| Autonomous System."; | ||||
| } | ||||
| typedef routing-instance-ref { | ||||
| type leafref { | ||||
| path "/ni:network-instances/ni:network-instance/ni:name"; | ||||
| } | } | |||
| description | ||||
| feature path-discovery { | "This type is used for leafs that reference a routing instance | |||
| description | configuration."; | |||
| "This feature indicates that the server supports | } | |||
| executing path discovery OAM command and | identity address-attribute-types { | |||
| returning a response. Servers that do not advertise | description | |||
| this feature will not support executing | "This is base identity of address | |||
| path discovery command or rpc operation model for | attribute types which are ip-prefix, | |||
| path discovery command."; | bgp, tunnel, pwe3, vpls, etc."; | |||
| } | ||||
| typedef address-attribute-type { | ||||
| type identityref { | ||||
| base address-attribute-types; | ||||
| } | } | |||
| description | ||||
| "Target address attribute type."; | ||||
| } | ||||
| identity time-resolution { | ||||
| description | ||||
| "Time interval resolution"; | ||||
| typedef router-id { | } | |||
| type yang:dotted-quad; | identity hours { | |||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Hours"; | ||||
| } | ||||
| identity minutes { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Minutes"; | ||||
| } | ||||
| identity seconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Seconds"; | ||||
| } | ||||
| identity milliseconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Milliseconds"; | ||||
| } | ||||
| identity microseconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Microseconds"; | ||||
| } | ||||
| identity nanoseconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Nanoseconds"; | ||||
| } | ||||
| grouping cc-session-statistics { | ||||
| description | ||||
| "Grouping for session statistics."; | ||||
| container cc-session-statistics { | ||||
| description | description | |||
| "A 32-bit number in the dotted quad format assigned to each | "cc session counters"; | |||
| router. This number uniquely identifies the router within an | leaf session-count { | |||
| Autonomous System."; | type uint32; | |||
| } | default "0"; | |||
| description | ||||
| typedef routing-instance-ref { | "Number of Continuity Check sessions. | |||
| type leafref { | A value of zero indicates that no session | |||
| path "/ni:network-instances/ni:network-instance/ni:name"; | count is sent."; | |||
| } | } | |||
| description | leaf session-up-count { | |||
| "This type is used for leafs that reference a routing instance | type uint32; | |||
| configuration."; | default "0"; | |||
| } | description | |||
| "Number of sessions which are up. | ||||
| identity address-attribute-types { | A value of zero indicates that no up | |||
| description | session count is sent."; | |||
| "This is base identity of address | } | |||
| attribute types which are ip-prefix, | leaf session-down-count { | |||
| bgp, tunnel, pwe3, vpls, etc."; | type uint32; | |||
| } | default "0"; | |||
| description | ||||
| typedef address-attribute-type { | "Number of sessions which are down. | |||
| type identityref { | A value of zero indicates that no down | |||
| base address-attribute-types; | session count is sent."; | |||
| } | ||||
| leaf session-admin-down-count { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Number of sessions which are admin-down. | ||||
| A value of zero indicates that no admin | ||||
| down session count is sent."; | ||||
| } | } | |||
| description | ||||
| "Target address attribute type."; | ||||
| } | ||||
| identity time-resolution { | ||||
| description | ||||
| "Time interval resolution"; | ||||
| } | ||||
| identity hours { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Hours"; | ||||
| } | ||||
| identity minutes { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Minutes"; | ||||
| } | ||||
| identity seconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Seconds"; | ||||
| } | ||||
| identity milliseconds { | ||||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Milliseconds"; | ||||
| } | } | |||
| } | ||||
| identity microseconds { | grouping session-packet-statistics { | |||
| base time-resolution; | description | |||
| "Grouping for per session packet statistics"; | ||||
| container session-packet-statistics { | ||||
| description | description | |||
| "Time resolution in Microseconds"; | "Per session packet statistics."; | |||
| leaf rx-packet-count { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total number of received OAM packet count. | ||||
| A value of zero indicates that no received | ||||
| OAM packet count number is sent."; | ||||
| } | ||||
| leaf tx-packet-count { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total number of transmitted OAM packet count. | ||||
| A value of zero indicates that no transmitted | ||||
| OAM packet count number is sent."; | ||||
| } | ||||
| leaf rx-bad-packet { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total number of received bad OAM packet. | ||||
| A value of zero indicates that no received bad | ||||
| OAM packet count number is sent."; | ||||
| } | ||||
| leaf tx-packet-failed { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total number of failed sending OAM packet. | ||||
| A value of zero indicates that no failed | ||||
| sending OAM packet count number is sent."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| identity nanoseconds { | grouping cc-per-session-statistics { | |||
| base time-resolution; | description | |||
| "Grouping for per session statistics"; | ||||
| container cc-per-session-statistics { | ||||
| description | description | |||
| "Time resolution in Nanoseconds"; | "per session statistics."; | |||
| leaf create-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date when session is created."; | ||||
| } | ||||
| leaf last-down-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date last time session is down."; | ||||
| } | ||||
| leaf last-up-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date last time session is up."; | ||||
| } | ||||
| leaf down-count { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total Continuity Check sessions down count. | ||||
| A value of zero indicates that no | ||||
| down count per session is sent."; | ||||
| } | ||||
| leaf admin-down-count { | ||||
| type uint32; | ||||
| default "0"; | ||||
| description | ||||
| "Total Continuity Check sessions admin down count. | ||||
| A value of zero indicates that no | ||||
| admin down count per session is sent."; | ||||
| } | ||||
| uses session-packet-statistics; | ||||
| } | } | |||
| } | ||||
| grouping cc-session-statistics { | grouping session-error-statistics { | |||
| description | ||||
| "Grouping for per session error statistics"; | ||||
| container session-error-statistics { | ||||
| description | description | |||
| "Grouping for session statistics."; | "Per session error statistics."; | |||
| leaf packet-drops-count { | ||||
| container cc-session-statistics { | type uint32; | |||
| default "0"; | ||||
| description | description | |||
| "cc session counters"; | "Total received packet drops count. | |||
| leaf session-count { | A value of zero indicates that no | |||
| type uint32; | packet drops count is sent."; | |||
| description | } | |||
| "Number of Continuity Check sessions."; | leaf packet-reorder-count { | |||
| } | type uint32; | |||
| leaf session-up-count { | default "0"; | |||
| type uint32; | description | |||
| description | "Total received packet reordered count. | |||
| "Number of sessions which are up."; | A value of zero indicates that no packet | |||
| } | reorder count is sent."; | |||
| leaf session-down-count { | } | |||
| type uint32; | leaf packets-out-of-seq-count { | |||
| description | type uint32; | |||
| "Number of sessions which are down."; | description | |||
| } | "Total received out of sequence count. | |||
| leaf session-admin-down-count { | A value of zero indicates that no packet | |||
| type uint32; | out of sequence count is sent."; | |||
| description | } | |||
| "Number of sessions which are admin-down."; | leaf packets-dup-count { | |||
| } | type uint32; | |||
| description | ||||
| "Total received packet duplicates count. | ||||
| A value of zero indicates that no packet | ||||
| duplicates count is sent."; | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping session-delay-statistics { | ||||
| description | ||||
| "Grouping for per session delay statistics"; | ||||
| grouping session-packet-statistics { | container session-delay-statistics { | |||
| description | description | |||
| "Grouping for per session packet statistics"; | "Session delay summarised information."; | |||
| container session-packet-statistics { | leaf time-resolution-value { | |||
| description | type identityref { | |||
| "Per session packet statistics."; | base time-resolution; | |||
| leaf rx-packet-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total number of received OAM packet count."; | ||||
| } | ||||
| leaf tx-packet-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total number of transmitted OAM packet count."; | ||||
| } | ||||
| leaf rx-bad-packet { | ||||
| type uint32; | ||||
| description | ||||
| "Total number of received bad OAM packet."; | ||||
| } | ||||
| leaf tx-packet-failed { | ||||
| type uint32; | ||||
| description | ||||
| "Total number of send OAM packet failed."; | ||||
| } | } | |||
| default "milliseconds"; | ||||
| description | ||||
| "Time units among choice of s,ms,ns etc."; | ||||
| } | ||||
| leaf min-delay-value { | ||||
| type uint32; | ||||
| description | ||||
| "Minimum delay value observed."; | ||||
| } | ||||
| leaf max-delay-value { | ||||
| type uint32; | ||||
| description | ||||
| "Maximum delay value observed."; | ||||
| } | ||||
| leaf average-delay-value { | ||||
| type uint32; | ||||
| description | ||||
| "Average delay value observed."; | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping cc-per-session-statistics { | grouping session-jitter-statistics { | |||
| description | ||||
| "Grouping for per session jitter statistics"; | ||||
| container session-jitter-statistics { | ||||
| description | description | |||
| "Grouping for per session statistics"; | "Session jitter summarised information."; | |||
| container cc-per-session-statistics { | leaf time-resolution-value { | |||
| description | type identityref { | |||
| "per session statistics."; | base time-resolution; | |||
| leaf create-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date when session is created."; | ||||
| } | ||||
| leaf last-down-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date last time session is down."; | ||||
| } | ||||
| leaf last-up-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Time and date last time session is up."; | ||||
| } | ||||
| leaf down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total Continuity Check sessions down count."; | ||||
| } | ||||
| leaf admin-down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total Continuity Check sessions admin down count."; | ||||
| } | } | |||
| uses session-packet-statistics; | default "milliseconds"; | |||
| description | ||||
| "Time units among choice of s,ms,ns etc."; | ||||
| } | ||||
| leaf min-jitter-value { | ||||
| type uint32; | ||||
| description | ||||
| "Minimum jitter value observed."; | ||||
| } | ||||
| leaf max-jitter-value { | ||||
| type uint32; | ||||
| description | ||||
| "Maximum jitter value observed."; | ||||
| } | ||||
| leaf average-jitter-value { | ||||
| type uint32; | ||||
| description | ||||
| "Average jitter value observed."; | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping session-error-statistics { | grouping session-path-verification-statistics { | |||
| description | ||||
| "Grouping for per session path verification statistics"; | ||||
| container session-path-verification-statistics { | ||||
| description | description | |||
| "Grouping for per session error statistics"; | "OAM per session path verification statistics."; | |||
| container session-error-statistics { | leaf verified-count { | |||
| type uint32; | ||||
| description | description | |||
| "Per session error statistics."; | "Total number of OAM packets that | |||
| went through a path as intended. | ||||
| leaf packet-drops-count { | A value of zero indicates that no | |||
| type uint32; | verified count is sent."; | |||
| description | } | |||
| "Total received packet drops count."; | leaf failed-count { | |||
| } | type uint32; | |||
| leaf packet-reorder-count { | description | |||
| type uint32; | "Total number of OAM packets that | |||
| description | went through an unintended path. | |||
| "Total received packet reordered count."; | A value of zero indicates that no | |||
| } | failed count is sent."; | |||
| leaf packets-out-of-seq-count { | } | |||
| type uint32; | } | |||
| } | ||||
| grouping session-type { | ||||
| description | ||||
| "This object indicates which kind | ||||
| of activation will be used by the current | ||||
| session."; | ||||
| leaf session-type { | ||||
| type enumeration { | ||||
| enum "proactive" { | ||||
| description | description | |||
| "Total received out of sequence count."; | "The current session is proactive session."; | |||
| } | } | |||
| leaf packets-dup-count { | enum "on-demand" { | |||
| type uint32; | ||||
| description | description | |||
| "Total received packet duplicates count."; | "The current session is on-demand session."; | |||
| } | } | |||
| } | } | |||
| default "on-demand"; | ||||
| description | ||||
| "Indicate which kind of activation will be used | ||||
| by the current session"; | ||||
| } | } | |||
| } | ||||
| grouping session-delay-statistics { | identity tp-address-technology-type { | |||
| description | ||||
| "Test point address type"; | ||||
| } | ||||
| identity mac-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "MAC address type"; | ||||
| } | ||||
| identity ipv4-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IPv4 address type"; | ||||
| } | ||||
| identity ipv6-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IPv6 address type"; | ||||
| } | ||||
| identity tp-attribute-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Test point attribute type"; | ||||
| } | ||||
| identity system-id-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "System id address type"; | ||||
| } | ||||
| identity as-number-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "AS number address type"; | ||||
| } | ||||
| identity route-distinguisher-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Route Distinguisher address type"; | ||||
| } | ||||
| grouping tp-address { | ||||
| leaf tp-location-types { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | ||||
| mandatory true; | ||||
| description | description | |||
| "Grouping for per session delay statistics"; | "Test point address type."; | |||
| container session-delay-statistics { | } | |||
| description | container mac-address { | |||
| "Session delay summarised information."; | when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" { | |||
| leaf time-resolution-value { | ||||
| type identityref { | ||||
| base time-resolution; | ||||
| } | ||||
| description | description | |||
| "Time units among choice of s,ms,ns etc."; | "MAC address type"; | |||
| } | } | |||
| leaf min-delay-value { | leaf mac-address { | |||
| type uint32; | type yang:mac-address; | |||
| mandatory true; | ||||
| description | description | |||
| "Minimum delay value observed."; | "MAC Address"; | |||
| } | } | |||
| leaf max-delay-value { | description | |||
| type uint32; | "MAC Address based MP Addressing."; | |||
| } | ||||
| container ipv4-address { | ||||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" { | ||||
| description | description | |||
| "Maximum delay value observed."; | "IPv4 address type"; | |||
| } | } | |||
| leaf average-delay-value { | leaf ipv4-address { | |||
| type uint32; | type inet:ipv4-address; | |||
| mandatory true; | ||||
| description | description | |||
| "Average delay value observed."; | "IPv4 Address"; | |||
| } | } | |||
| } | ||||
| } | ||||
| grouping session-jitter-statistics { | ||||
| description | ||||
| "Grouping for per session jitter statistics"; | ||||
| container session-jitter-statistics { | ||||
| description | description | |||
| "Session jitter summarised information."; | "IP Address based MP Addressing."; | |||
| leaf time-resolution-value { | } | |||
| type identityref { | container ipv6-address { | |||
| base time-resolution; | when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" { | |||
| } | ||||
| description | description | |||
| "Time units among choice of s,ms,ns etc."; | "IPv6 address type"; | |||
| } | } | |||
| leaf min-jitter-value { | leaf ipv6-address { | |||
| type uint32; | type inet:ipv6-address; | |||
| mandatory true; | ||||
| description | description | |||
| "Minimum jitter value observed."; | "IPv6 Address"; | |||
| } | } | |||
| leaf max-jitter-value { | description | |||
| type uint32; | "ipv6 Address based MP Addressing."; | |||
| } | ||||
| container tp-attribute { | ||||
| when "derived-from-or-self(../tp-location-type, 'coam:tp-attribute-type')" { | ||||
| description | description | |||
| "Maximum jitter value observed."; | "Test point attribute type"; | |||
| } | } | |||
| leaf average-jitter-value { | leaf tp-attribute-type { | |||
| type uint32; | type address-attribute-type; | |||
| description | description | |||
| "Average jitter value observed."; | "Test point type."; | |||
| } | } | |||
| } | choice tp-attribute-value { | |||
| } | ||||
| grouping session-path-verification-statistics { | ||||
| description | ||||
| "Grouping for per session path verification statistics"; | ||||
| container session-path-verification-statistics { | ||||
| description | ||||
| "OAM per session path verification statistics."; | ||||
| leaf verified-count { | ||||
| type uint32; | ||||
| description | description | |||
| "Total number of OAM packets that | "Test point value."; | |||
| went through a path as intended."; | case ip-prefix { | |||
| leaf ip-prefix { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "IP prefix."; | ||||
| } | ||||
| } | ||||
| case bgp { | ||||
| leaf bgp { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "BGP Labeled Prefix "; | ||||
| } | ||||
| } | ||||
| case tunnel { | ||||
| leaf tunnel-interface { | ||||
| type uint32; | ||||
| description | ||||
| "VPN Prefix "; | ||||
| } | ||||
| } | ||||
| case pw { | ||||
| leaf remote-pe-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Remote pe address."; | ||||
| } | ||||
| leaf pw-id { | ||||
| type uint32; | ||||
| description | ||||
| "Pseudowire ID is a non-zero 32-bit ID."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| case vpls { | ||||
| leaf route-distinguisher { | ||||
| type rt:route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher is an 8 octets identifier | ||||
| used to distinguish information about various | ||||
| L2VPN advertised by a node."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| leaf sender-ve-id { | ||||
| type uint16; | ||||
| description | ||||
| "Sender's VE ID. The VE ID (VPLS Edge Identifier) | ||||
| is a 2-octet identifier."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| leaf receiver-ve-id { | ||||
| type uint16; | ||||
| description | ||||
| "Receiver's VE ID.The VE ID (VPLS Edge Identifier) | ||||
| is a 2-octet identifier."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| case mpls-mldp { | ||||
| choice root-address { | ||||
| description | ||||
| "Root address choice."; | ||||
| case ip-address { | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address."; | ||||
| } | ||||
| leaf group-ip-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Group ip address."; | ||||
| } | ||||
| } | ||||
| case vpn { | ||||
| leaf as-number { | ||||
| type inet:as-number; | ||||
| description | ||||
| "The AS number represents autonomous system | ||||
| numbers which identify an Autonomous System."; | ||||
| } | ||||
| } | ||||
| case global-id { | ||||
| leaf lsp-id { | ||||
| type string; | ||||
| description | ||||
| "LSP ID is an identifier of a LSP | ||||
| within a MPLS network."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | } | |||
| leaf failed-count { | description | |||
| type uint32; | "Test Point Attribute Container"; | |||
| } | ||||
| container system-info { | ||||
| when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" { | ||||
| description | description | |||
| "Total number of OAM packets that | "System id address type"; | |||
| went through an unintended path."; | ||||
| } | } | |||
| } | leaf system-id { | |||
| } | type rt:router-id; | |||
| description | ||||
| grouping session-type { | "System ID assigned to this node."; | |||
| description | ||||
| "This object indicatesindicate which kind | ||||
| of activation will be used by the current | ||||
| session."; | ||||
| leaf session-type { | ||||
| type enumeration { | ||||
| enum "proactive" { | ||||
| description | ||||
| "The current session is proactive session."; | ||||
| } | ||||
| enum "on-demand" { | ||||
| description | ||||
| "The current session is on-demand session."; | ||||
| } | ||||
| } | } | |||
| default "on-demand"; | ||||
| description | description | |||
| "Indicate which kind of activation will be used | "system ID container."; | |||
| by the current session"; | ||||
| } | } | |||
| } | description | |||
| "TP Address"; | ||||
| identity tp-address-technology-type { | } | |||
| description | grouping tp-address-ni { | |||
| "Test point address type"; | description | |||
| } | "Test point address with VRF."; | |||
| leaf ni { | ||||
| identity mac-address-type { | type routing-instance-ref; | |||
| base tp-address-technology-type; | ||||
| description | ||||
| "MAC address type"; | ||||
| } | ||||
| identity ipv4-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IPv4 address type"; | ||||
| } | ||||
| identity ipv6-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IPv6 address type"; | ||||
| } | ||||
| identity tp-attribute-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Test point attribute type"; | ||||
| } | ||||
| identity system-id-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "System id address type"; | ||||
| } | ||||
| identity as-number-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "AS number address type"; | ||||
| } | ||||
| identity route-distinguisher-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | description | |||
| "Route Distinguisher address type"; | "The ni is used to describe virtual resource partitioning | |||
| that may be present on a network device.Example of common | ||||
| industry terms for virtual resource partitioning is VRF | ||||
| instance."; | ||||
| } | } | |||
| uses tp-address; | ||||
| grouping tp-address { | } | |||
| leaf tp-location-type { | grouping connectionless-oam-layers { | |||
| type identityref { | list oam-neighboring-layers { | |||
| base tp-address-technology-type; | key "index"; | |||
| leaf index { | ||||
| type uint8{ | ||||
| range "0..128";} | ||||
| description | ||||
| "Index of a list of neighboring test points | ||||
| in the upstream layer and/or downstream layer | ||||
| and/or same layer"; | ||||
| } | ||||
| leaf technology-level { | ||||
| type int8 { | ||||
| range "-1..1"; | ||||
| } | } | |||
| default "0"; | ||||
| description | description | |||
| "Test point address type."; | "The relative technology level | |||
| of neighboring test point | ||||
| corresponding to the current | ||||
| test point.Level 0 indicates default level, | ||||
| -1 means downstream layer related to current layer and +1 | ||||
| means upstream layer related to current layer. | ||||
| In relationship 0 means same layer."; | ||||
| } | } | |||
| container tp-address { | choice tp-location { | |||
| container mac-address { | case mac-address { | |||
| when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { | leaf mac-address-location { | |||
| description | ||||
| "MAC address type"; | ||||
| } | ||||
| leaf mac-address { | ||||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "MAC Address"; | "MAC Address"; | |||
| } | } | |||
| description | description | |||
| "MAC Address based MP Addressing."; | "MAC Address based MP Addressing."; | |||
| } | } | |||
| container ipv4-address { | case ipv4-address { | |||
| when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" { | leaf ipv4-address-location { | |||
| description | ||||
| "IPv4 address type"; | ||||
| } | ||||
| leaf ipv4-address { | ||||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "IPv4 Address"; | "Ipv4 Address"; | |||
| } | } | |||
| description | description | |||
| "IP Address based MP Addressing."; | "IP Address based MP Addressing."; | |||
| } | } | |||
| container ipv6-address { | case ipv6-address { | |||
| when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" { | leaf ipv6-address-location { | |||
| description | ||||
| "IPv6 address type"; | ||||
| } | ||||
| leaf ipv6-address { | ||||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "IPv6 Address"; | "IPv6 Address"; | |||
| } | } | |||
| description | description | |||
| "ipv6 Address based MP Addressing."; | "IPv6 Address based MP Addressing."; | |||
| } | } | |||
| container tp-attribute { | case as-number { | |||
| when "derived-from-or-self('../tp-location-type', 'tp-attribute-type')" { | leaf as-number-location { | |||
| description | type inet:as-number; | |||
| "Test point attribute type"; | ||||
| } | ||||
| leaf tp-attribute-type { | ||||
| type address-attribute-type; | ||||
| description | ||||
| "Test point type."; | ||||
| } | ||||
| choice tp-attribute-value { | ||||
| description | description | |||
| "Test point value."; | "AS number location"; | |||
| case ip-prefix { | ||||
| leaf ip-prefix { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "IP prefix."; | ||||
| } | ||||
| } | ||||
| case bgp { | ||||
| leaf bgp { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "BGP Labeled Prefix "; | ||||
| } | ||||
| } | ||||
| case tunnel { | ||||
| leaf tunnel-interface { | ||||
| type uint32; | ||||
| description | ||||
| "VPN Prefix "; | ||||
| } | ||||
| } | ||||
| case pw { | ||||
| leaf remote-pe-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Remote pe address."; | ||||
| } | ||||
| leaf pw-id { | ||||
| type uint32; | ||||
| description | ||||
| "Pseudowire ID is a non-zero 32-bit ID."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| case vpls { | ||||
| leaf route-distinguisher { | ||||
| type uint64; | ||||
| description | ||||
| "Route Distinguisher is an 8 octets identifier | ||||
| used to distinguish information about various | ||||
| L2VPN advertised by a node."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| leaf sender-ve-id { | ||||
| type uint16; | ||||
| description | ||||
| "Sender's VE ID. The VE ID (VPLS Edge Identifier) | ||||
| is a 2-octet identifier."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| leaf receiver-ve-id { | ||||
| type uint16; | ||||
| description | ||||
| "Receiver's VE ID.The VE ID (VPLS Edge Identifier) | ||||
| is a 2-octet identifier."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| case mpls-mldp { | ||||
| choice root-address { | ||||
| description | ||||
| "Root address choice."; | ||||
| case ip-address { | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "IP address."; | ||||
| } | ||||
| leaf group-ip-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Group ip address."; | ||||
| } | ||||
| } | ||||
| case vpn { | ||||
| leaf as-number { | ||||
| type inet:as-number; | ||||
| description | ||||
| "The AS number represents autonomous system | ||||
| numbers which identify an Autonomous System."; | ||||
| } | ||||
| } | ||||
| case global-id { | ||||
| leaf lsp-id { | ||||
| type string; | ||||
| description | ||||
| "LSP ID is an identifier of a LSP | ||||
| within a MPLS network."; | ||||
| reference | ||||
| "RFC 4379 :Detecting Multi-Protocol Label | ||||
| Switched (MPLS) Data Plane Failures"; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | } | |||
| description | description | |||
| "Test Point Attribute Container"; | "AS number for point to multipoint OAM"; | |||
| } | } | |||
| container system-info { | case system-id { | |||
| when "derived-from-or-self('../tp-location-type', 'system-id-address-type')" { | leaf system-id-location { | |||
| description | ||||
| "System id address type"; | ||||
| } | ||||
| leaf system-id { | ||||
| type router-id; | type router-id; | |||
| description | description | |||
| "System ID assigned to this node."; | "System id location"; | |||
| } | } | |||
| description | description | |||
| "system ID container."; | "System ID"; | |||
| } | } | |||
| description | description | |||
| "TP Addressing."; | "TP location."; | |||
| } | } | |||
| description | description | |||
| "TP Address"; | "List of neighboring test points in the upstream layer and/or | |||
| downstream layer or same layer that are related to current test | ||||
| point. If neighboring test-point in the upstream layer exist, the | ||||
| technology-level is specified as +1. If neighboring test-point | ||||
| in the downstream layer exist, the technology-level is specified | ||||
| as -1, if neighboring test-points are located at the same layer | ||||
| as the current test-point, the technology-level is specified as | ||||
| 0."; | ||||
| } | } | |||
| description | ||||
| grouping tp-address-ni { | "Connectionless related OAM neighboring layer"; | |||
| description | } | |||
| "Test point address with VRF."; | grouping tp-technology { | |||
| leaf ni { | choice technology { | |||
| type routing-instance-ref; | default "technology-null"; | |||
| case technology-null { | ||||
| description | description | |||
| "The ni is used to describe virtual resource partitioning | "This is a placeholder when no technology is needed."; | |||
| that may be present on a network device.Example of common | leaf tech-null { | |||
| industry terms for virtual resource partitioning is VRF | type empty; | |||
| instance."; | description | |||
| "There is no technology define"; | ||||
| } | ||||
| } | } | |||
| uses tp-address; | description | |||
| "Technology choice."; | ||||
| } | } | |||
| description | ||||
| "OAM Technology"; | ||||
| } | ||||
| grouping tp-tools { | ||||
| description | ||||
| "Test Point OAM Toolset."; | ||||
| container tp-tools { | ||||
| leaf continuity-check { | ||||
| type boolean; | ||||
| mandatory true; | ||||
| description | ||||
| "A flag indicating whether or not the | ||||
| continuity check function is supported."; | ||||
| reference | ||||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | ||||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | ||||
| for the Internet Protocol Version 6 (IPv6) Specification. | ||||
| RFC 5880: Bidirectional Forwarding Detection. | ||||
| RFC 5881: BFD for IPv4 and IPv6. | ||||
| RFC 5883: BFD for Multihop Paths. | ||||
| RFC 5884: BFD for MPLS Label Switched Paths. | ||||
| RFC 5885: BFD for PW VCCV. | ||||
| RFC 6450: Multicast Ping Protocol."; | ||||
| } | ||||
| leaf path-discovery { | ||||
| type boolean; | ||||
| mandatory true; | ||||
| description | ||||
| "A flag indicating whether or not the | ||||
| path discovery function is supported."; | ||||
| reference | ||||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | ||||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | ||||
| for the Internet Protocol Version 6 (IPv6) Specification. | ||||
| grouping connectionless-oam-layers { | RFC 4884: Extended ICMP to Support Multi-part Message. | |||
| list oam-neighboring-layers { | RFC 5837:Extending ICMP for Interface | |||
| key "index"; | and Next-Hop Identification. | |||
| leaf index { | RFC 4379: LSP-PING."; | |||
| type uint8{ | } | |||
| range "0..128";} | description | |||
| description | "Container for test point OAM tools set."; | |||
| "Index of a list of neighboring test points | } | |||
| in the upstream layer and/or downstream layer | } | |||
| and/or same layer"; | grouping test-point-location-info { | |||
| } | uses tp-technology; | |||
| leaf technology-level { | uses tp-tools; | |||
| type int8 { | anydata root { | |||
| range "-1..1"; | yangmnt:mount-point "root"; | |||
| } | description | |||
| default "0"; | "Root for models supported per | |||
| test point"; | ||||
| } | ||||
| uses connectionless-oam-layers; | ||||
| description | ||||
| "Test point Location"; | ||||
| } | ||||
| grouping test-point-locations { | ||||
| description | ||||
| "Group of test point locations."; | ||||
| leaf tp-location-type { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | ||||
| description | ||||
| "Test point location type."; | ||||
| } | ||||
| container ipv4-location-type { | ||||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" { | ||||
| description | description | |||
| "The relative technology level | "When test point location type is equal to ipv4 address."; | |||
| of neighboring test point | ||||
| corresponding to the current | ||||
| test point.Level 0 indicates default level, | ||||
| -1 means downstream layer related to current layer and +1 | ||||
| means upstream layer related to current layer. | ||||
| In relationship 0 means same layer."; | ||||
| } | } | |||
| choice tp-location { | container test-point-ipv4-location-list { | |||
| case mac-address { | list test-point-locations { | |||
| leaf mac-address-location { | key "ipv4-location ni"; | |||
| type yang:mac-address; | leaf ipv4-location { | |||
| description | ||||
| "MAC Address"; | ||||
| } | ||||
| description | ||||
| "MAC Address based MP Addressing."; | ||||
| } | ||||
| case ipv4-address { | ||||
| leaf ipv4-address-location { | ||||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Ipv4 Address"; | "IPv4 Address."; | |||
| } | } | |||
| description | leaf ni { | |||
| "IP Address based MP Addressing."; | type routing-instance-ref; | |||
| } | ||||
| case ipv6-address { | ||||
| leaf ipv6-address-location { | ||||
| type inet:ipv6-address; | ||||
| description | description | |||
| "IPv6 Address"; | "The ni is used to describe the | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| description | description | |||
| "IPv6 Address based MP Addressing."; | "List of test point locations."; | |||
| } | } | |||
| case as-number { | description | |||
| leaf as-number-location { | "Serves as top-level container | |||
| type inet:as-number; | for test point location list."; | |||
| } | ||||
| description | ||||
| "ipv4 location type container."; | ||||
| } | ||||
| container ipv6-location-type { | ||||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" { | ||||
| description | ||||
| "when test point location is equal to ipv6 address"; | ||||
| } | ||||
| container test-point-ipv6-location-list { | ||||
| list test-point-locations { | ||||
| key "ipv6-location ni"; | ||||
| leaf ipv6-location { | ||||
| type inet:ipv6-address; | ||||
| description | description | |||
| "AS number location"; | "IPv6 Address."; | |||
| } | } | |||
| description | leaf ni { | |||
| "AS number for point to multipoint OAM"; | type routing-instance-ref; | |||
| } | ||||
| case system-id { | ||||
| leaf system-id-location { | ||||
| type router-id; | ||||
| description | description | |||
| "System id location"; | "The ni is used to describe the | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| description | description | |||
| "System ID"; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "TP location."; | "Serves as top-level container | |||
| for test point location list."; | ||||
| } | } | |||
| description | description | |||
| "List of neighboring test points in the upstream layer and/or | "ipv6 location type container."; | |||
| downstream layer or same layer that are related to current test | ||||
| point. If neighboring test-point in the upstream layer exist, the | ||||
| technology-level is specified as +1. If neighboring test-point | ||||
| in the downstream layer exist, the technology-level is specified | ||||
| as -1, if neighboring test-points are located at the same layer | ||||
| as the current test-point, the technology-level is specified as | ||||
| 0."; | ||||
| } | } | |||
| description | container mac-location-type { | |||
| "Connectionless related OAM neighboring layer"; | when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" { | |||
| } | ||||
| grouping tp-technology { | ||||
| choice technology { | ||||
| default "technology-null"; | ||||
| case technology-null { | ||||
| description | description | |||
| "This is a placeholder when no technology is needed."; | "when test point location type is equal to mac address."; | |||
| leaf tech-null { | ||||
| type empty; | ||||
| description | ||||
| "There is no technology define"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Technology choice."; | ||||
| } | ||||
| description | ||||
| "OAM Technology"; | ||||
| } | ||||
| grouping tp-tools { | ||||
| description | ||||
| "Test Point OAM Toolset."; | ||||
| container tp-tools { | ||||
| leaf continuity-check { | ||||
| type boolean; | ||||
| mandatory true; | ||||
| description | ||||
| "A flag indicating whether or not the | ||||
| continuity check function is supported."; | ||||
| reference | ||||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | ||||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | ||||
| for the Internet Protocol Version 6 (IPv6) Specification. | ||||
| RFC 5880: Bidirectional Forwarding Detection. | ||||
| RFC 5881: BFD for IPv4 and IPv6. | ||||
| RFC 5883: BFD for Multihop Paths. | ||||
| RFC 5884: BFD for MPLS Label Switched Paths. | ||||
| RFC 5885: BFD for PW VCCV. | ||||
| RFC 6450: Multicast Ping Protocol."; | ||||
| } | } | |||
| leaf path-discovery { | container test-point-mac-address-location-list { | |||
| type boolean; | list test-point-locations { | |||
| mandatory true; | key "mac-address-location"; | |||
| leaf mac-address-location { | ||||
| type yang:mac-address; | ||||
| description | ||||
| "MAC Address"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | ||||
| "List of test point locations."; | ||||
| } | ||||
| description | description | |||
| "A flag indicating whether or not the | "Serves as top-level container | |||
| path discovery function is supported."; | for test point location list."; | |||
| reference | ||||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | ||||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | ||||
| for the Internet Protocol Version 6 (IPv6) Specification. | ||||
| RFC 4884: Extended ICMP to Support Multi-part Message. | ||||
| RFC 5837:Extending ICMP for Interface | ||||
| and Next-Hop Identification. | ||||
| RFC 4379: LSP-PING."; | ||||
| } | } | |||
| description | description | |||
| "Container for test point OAM tools set."; | "mac address location type container."; | |||
| } | ||||
| } | ||||
| grouping test-point-location-info { | ||||
| uses tp-technology; | ||||
| uses tp-tools; | ||||
| anydata root { | ||||
| yangmnt:mount-point "root"; | ||||
| description | ||||
| "Root for models supported per | ||||
| test point"; | ||||
| } | } | |||
| uses connectionless-oam-layers; | container group-as-number-location-type { | |||
| description | when "derived-from-or-self(../tp-location-type, 'coam:as-number-address-type')" { | |||
| "Test point Location"; | description | |||
| } | "when test point location type is equal to as-number."; | |||
| grouping test-point-locations { | ||||
| description | ||||
| "Group of test point locations."; | ||||
| leaf tp-location-type { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | } | |||
| description | container test-point-as-number-location-list { | |||
| "Test point location type."; | list test-point-locations { | |||
| } | key "as-number-location"; | |||
| container location-type { | leaf as-number-location { | |||
| container ipv4-location-type { | type inet:as-number; | |||
| when "derived-from-or-self('../tp-location-type', 'ipv4-address-type')" { | ||||
| description | ||||
| "When test point location type is equal to ipv4 address."; | ||||
| } | ||||
| container test-point-ipv4-location-list { | ||||
| list test-point-locations { | ||||
| key "ipv4-location ni"; | ||||
| leaf ipv4-location { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 Address."; | ||||
| } | ||||
| leaf ni { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The ni is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "List of test point locations."; | "AS number for point to multi point OAM."; | |||
| } | } | |||
| description | leaf ni { | |||
| "Serves as top-level container | type routing-instance-ref; | |||
| for test point location list."; | ||||
| } | ||||
| description | ||||
| "ipv4 location type container."; | ||||
| } | ||||
| container ipv6-location-type { | ||||
| when "derived-from-or-self('../tp-location-type', 'ipv6-address-type')" { | ||||
| description | ||||
| "when test point location is equal to ipv6 address"; | ||||
| } | ||||
| container test-point-ipv6-location-list { | ||||
| list test-point-locations { | ||||
| key "ipv6-location ni"; | ||||
| leaf ipv6-location { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 Address."; | ||||
| } | ||||
| leaf ni { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The ni is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "List of test point locations."; | "The ni is used to describe the | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| description | description | |||
| "Serves as top-level container | "List of test point locations."; | |||
| for test point location list."; | ||||
| } | } | |||
| description | description | |||
| "ipv6 location type container."; | "Serves as top-level container | |||
| for test point location list."; | ||||
| } | } | |||
| container mac-location-type { | description | |||
| when "derived-from-or-self('../tp-location-type', 'mac-address-type')" { | "as number location type container."; | |||
| description | } | |||
| "when test point location type is equal to mac address."; | container group-system-id-location-type { | |||
| } | when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" { | |||
| container test-point-mac-address-location-list { | ||||
| list test-point-locations { | ||||
| key "mac-address-location"; | ||||
| leaf mac-address-location { | ||||
| type yang:mac-address; | ||||
| description | ||||
| "MAC Address"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | ||||
| "List of test point locations."; | ||||
| } | ||||
| description | ||||
| "Serves as top-level container | ||||
| for test point location list."; | ||||
| } | ||||
| description | description | |||
| "mac address location type container."; | "when test point location type is equal to system-info."; | |||
| } | } | |||
| container group-as-number-location-type { | container test-point-system-info-location-list { | |||
| when "'tp-location-type' = 'as-number-address-type'" { | list test-point-locations { | |||
| description | key "system-id-location"; | |||
| "When test point location type is equal to | leaf system-id-location { | |||
| as-number."; | type inet:uri; | |||
| } | ||||
| container test-point-as-number-location-list { | ||||
| list test-point-locations { | ||||
| key "as-number-location"; | ||||
| leaf as-number-location { | ||||
| type inet:as-number; | ||||
| description | ||||
| "AS number for point to multi point OAM."; | ||||
| } | ||||
| leaf ni { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The ni is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "List of test point locations."; | "System Id."; | |||
| } | } | |||
| description | leaf ni { | |||
| "Serves as top-level container | type routing-instance-ref; | |||
| for test point location list."; | ||||
| } | ||||
| description | ||||
| "as number location type container."; | ||||
| } | ||||
| container group-system-id-location-type { | ||||
| when "'tp-location-type' = 'system-id-address-type'" { | ||||
| description | ||||
| "When test point location is equal to | ||||
| system info."; | ||||
| } | ||||
| container test-point-system-info-location-list { | ||||
| list test-point-locations { | ||||
| key "system-id-location"; | ||||
| leaf system-id-location { | ||||
| type inet:uri; | ||||
| description | ||||
| "System Id."; | ||||
| } | ||||
| leaf ni { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The ni is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "List of test point locations."; | "The ni is used to describe the | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| description | description | |||
| "Serves as top-level container for | "List of test point locations."; | |||
| test point location list."; | ||||
| } | } | |||
| description | description | |||
| "system ID location type container."; | "Serves as top-level container for | |||
| test point location list."; | ||||
| } | } | |||
| description | description | |||
| "Choice of address types."; | "system ID location type container."; | |||
| } | } | |||
| } | ||||
| augment "/nd:networks/nd:network/nd:node" { | ||||
| description | ||||
| "Augment test points of connectionless oam."; | ||||
| uses test-point-locations; | ||||
| } | ||||
| grouping uint64-timestamp { | ||||
| description | ||||
| "Grouping for timestamp."; | ||||
| leaf timestamp-sec { | ||||
| type uint32; | ||||
| description | ||||
| "Absolute timestamp in seconds as per IEEE1588v2 | ||||
| or seconds part in 64-bit NTP timestamp."; | ||||
| } | } | |||
| leaf timestamp-nanosec { | ||||
| augment "/nd:networks/nd:network/nd:node" { | type uint32; | |||
| description | description | |||
| "Augment test points of connectionless oam."; | "Fractional part in nanoseconds as per IEEE1588v2 | |||
| uses test-point-locations; | or Fractional part in 64-bit NTP timestamp."; | |||
| } | } | |||
| } | ||||
| grouping uint64-timestamp { | grouping timestamp { | |||
| description | ||||
| "Grouping for timestamp."; | ||||
| leaf timestamp-type { | ||||
| type uint32; | ||||
| description | description | |||
| "Grouping for timestamp."; | "Truncated PTP = 0, NTP = 1"; | |||
| leaf timestamp-sec { | ||||
| type uint32; | ||||
| description | ||||
| "Absolute timestamp in seconds as per IEEE1588v2 | ||||
| or seconds part in 64-bit NTP timestamp."; | ||||
| } | ||||
| leaf timestamp-nanosec { | ||||
| type uint32; | ||||
| description | ||||
| "Fractional part in nanoseconds as per IEEE1588v2 | ||||
| or Fractional part in 64-bit NTP timestamp."; | ||||
| } | ||||
| } | } | |||
| uses uint64-timestamp; | ||||
| grouping timestamp { | } | |||
| grouping path-discovery-data { | ||||
| description | ||||
| "Path discovery related data output from nodes."; | ||||
| container src-test-point { | ||||
| description | description | |||
| "Grouping for timestamp."; | "Source test point."; | |||
| leaf timestamp-type { | uses tp-address-ni; | |||
| type uint32; | ||||
| description | ||||
| "Truncated PTP = 0, NTP = 1"; | ||||
| } | ||||
| uses uint64-timestamp; | ||||
| } | } | |||
| container dest-test-point { | ||||
| grouping path-discovery-data { | ||||
| description | description | |||
| "Path discovery related data output from nodes."; | "Destination test point."; | |||
| container src-test-point { | uses tp-address-ni; | |||
| description | } | |||
| "Source test point."; | leaf sequence-number { | |||
| uses tp-address-ni; | type uint64; | |||
| } | default "0"; | |||
| container dest-test-point { | description | |||
| description | "Sequence number in data packets.A value of | |||
| "Destination test point."; | zero indicates that no sequence number is sent."; | |||
| uses tp-address-ni; | } | |||
| } | leaf hop-cnt { | |||
| leaf sequence-number { | type uint8; | |||
| type uint64; | default "0"; | |||
| description | description | |||
| "Sequence number in data packets."; | "Hop count.A value of zero indicates | |||
| } | that no hop count is sent"; | |||
| leaf hop-cnt { | } | |||
| type uint8; | uses session-packet-statistics; | |||
| uses session-error-statistics; | ||||
| uses session-delay-statistics; | ||||
| uses session-jitter-statistics; | ||||
| container path-verification { | ||||
| description | ||||
| "Optional path verification related information."; | ||||
| leaf flow-info { | ||||
| type string; | ||||
| description | description | |||
| "Hop count."; | "Informations that refers to the flow."; | |||
| } | } | |||
| uses session-packet-statistics; | uses session-path-verification-statistics; | |||
| uses session-error-statistics; | } | |||
| uses session-delay-statistics; | container path-trace-info { | |||
| uses session-jitter-statistics; | description | |||
| container path-verification { | "Optional path trace per-hop test point information. | |||
| The path trace information list has typically a single | ||||
| element for per-hop cases like path-discovery RPC operation | ||||
| but allows a list of hop related information for other types of | ||||
| data retrieval methods."; | ||||
| list path-trace-info-list { | ||||
| key "index"; | ||||
| description | description | |||
| "Optional path verification related information."; | "Path trace information list."; | |||
| leaf flow-info { | leaf index { | |||
| type string; | type uint32; | |||
| description | description | |||
| "Informations that refers to the flow."; | "Trace information index."; | |||
| } | } | |||
| uses session-path-verification-statistics; | uses tp-address-ni; | |||
| } | uses timestamp; | |||
| container path-trace-info { | leaf ingress-intf-name { | |||
| description | type if:interface-ref; | |||
| "Optional path trace per-hop test point information. | ||||
| The list has typically a single element for per-hop | ||||
| cases like path-discovery RPC operation but allows | ||||
| a list of hop related information for other types of | ||||
| data retrieval methods."; | ||||
| list path-trace-info-list { | ||||
| key "index"; | ||||
| description | description | |||
| "Path trace information list."; | "Ingress interface name"; | |||
| leaf index { | ||||
| type uint32; | ||||
| description | ||||
| "Trace information index."; | ||||
| } | ||||
| uses tp-address-ni; | ||||
| uses timestamp; | ||||
| leaf ingress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Ingress interface name"; | ||||
| } | ||||
| leaf egress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Egress interface name"; | ||||
| } | ||||
| leaf queue-depth { | ||||
| type uint32; | ||||
| description | ||||
| "Length of the queue of the interface from where | ||||
| the packet is forwarded out. The queue depth could | ||||
| be the current number of memory buffers used by the | ||||
| queue and a packet can consume one or more memory buffers | ||||
| thus constituting device-level information."; | ||||
| } | ||||
| leaf transit-delay { | ||||
| type uint32; | ||||
| description | ||||
| "Time in nano seconds | ||||
| packet spent transiting a node."; | ||||
| } | ||||
| leaf app-meta-data { | ||||
| type uint64; | ||||
| description | ||||
| "Application specific | ||||
| data added by node."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| } | ||||
| grouping continuity-check-data { | ||||
| description | ||||
| "Continuity check data output from nodes."; | ||||
| container src-test-point { | ||||
| description | ||||
| "Source test point."; | ||||
| uses tp-address-ni; | ||||
| leaf egress-intf-name { | leaf egress-intf-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Egress interface name"; | "Egress interface name"; | |||
| } | } | |||
| } | leaf queue-depth { | |||
| container dest-test-point { | type uint32; | |||
| description | ||||
| "Destination test point."; | ||||
| uses tp-address-ni; | ||||
| leaf ingress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "Ingress interface name"; | "Length of the queue of the interface from where | |||
| the packet is forwarded out. The queue depth could | ||||
| be the current number of memory buffers used by the | ||||
| queue and a packet can consume one or more memory buffers | ||||
| thus constituting device-level information."; | ||||
| } | ||||
| leaf transit-delay { | ||||
| type uint32; | ||||
| description | ||||
| "Time in nano seconds | ||||
| packet spent transiting a node."; | ||||
| } | ||||
| leaf app-meta-data { | ||||
| type uint64; | ||||
| description | ||||
| "Application specific | ||||
| data added by node."; | ||||
| } | } | |||
| } | } | |||
| leaf sequence-number { | ||||
| type uint64; | ||||
| description | ||||
| "Sequence number."; | ||||
| } | ||||
| leaf hop-cnt { | ||||
| type uint8; | ||||
| description | ||||
| "Hop count."; | ||||
| } | ||||
| uses session-packet-statistics; | ||||
| uses session-error-statistics; | ||||
| uses session-delay-statistics; | ||||
| uses session-jitter-statistics; | ||||
| } | } | |||
| } | ||||
| container cc-session-statistics-data { | grouping continuity-check-data { | |||
| if-feature "continuity-check"; | description | |||
| config false; | "Continuity check data output from nodes."; | |||
| container src-test-point { | ||||
| description | description | |||
| "CC operational information."; | "Source test point."; | |||
| container cc-ipv4-sessions-statistics { | uses tp-address-ni; | |||
| leaf egress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "CC ipv4 sessions"; | "Egress interface name."; | |||
| uses cc-session-statistics; | ||||
| } | } | |||
| container cc-ipv6-sessions-statistics { | } | |||
| container dest-test-point { | ||||
| description | ||||
| "Destination test point."; | ||||
| uses tp-address-ni; | ||||
| leaf ingress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "CC ipv6 sessions"; | "Ingress interface name."; | |||
| uses cc-session-statistics; | ||||
| } | } | |||
| } | } | |||
| leaf sequence-number { | ||||
| type uint64; | ||||
| default "0"; | ||||
| description | ||||
| "Sequence number in data packets.A value of | ||||
| zero indicates that no sequence number is sent."; | ||||
| } | ||||
| leaf hop-cnt { | ||||
| type uint8; | ||||
| default "0"; | ||||
| description | ||||
| "Hop count.A value of zero indicates | ||||
| that no hop count is sent"; | ||||
| } | ||||
| uses session-packet-statistics; | ||||
| uses session-error-statistics; | ||||
| uses session-delay-statistics; | ||||
| uses session-jitter-statistics; | ||||
| } | ||||
| container cc-session-statistics-data { | ||||
| if-feature "continuity-check"; | ||||
| config false; | ||||
| description | ||||
| "CC operational information."; | ||||
| container cc-ipv4-sessions-statistics { | ||||
| description | ||||
| "CC ipv4 sessions"; | ||||
| uses cc-session-statistics; | ||||
| } | ||||
| container cc-ipv6-sessions-statistics { | ||||
| description | ||||
| "CC ipv6 sessions"; | ||||
| uses cc-session-statistics; | ||||
| } | ||||
| } | } | |||
| } | ||||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. Connectionless model applicability | 5. Connectionless model applicability | |||
| "ietf-connectionless-oam" model defined in this document provides | "ietf-connectionless-oam" model defined in this document provides | |||
| technology-independent abstraction of key OAM constructs for | technology-independent abstraction of key OAM constructs for | |||
| connectionless protocols. This model can be further extended to | connectionless protocols. This model can be further extended to | |||
| include technology specific details, e.g., adding new data nodes with | include technology specific details, e.g., adding new data nodes with | |||
| technology specific functions and parameters into proper anchor | technology specific functions and parameters into proper anchor | |||
| skipping to change at page 45, line 39 ¶ | skipping to change at page 45, line 39 ¶ | |||
| The authors of this document would like to thank Greg Mirsky and | The authors of this document would like to thank Greg Mirsky and | |||
| others for their sustainable review and comments, proposals to | others for their sustainable review and comments, proposals to | |||
| improve and stabilize document. | improve and stabilize document. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, | |||
| editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
| Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
| Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
| RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
| <https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | DOI 10.17487/RFC5246, August 2008, | |||
| editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | DOI 10.17487/RFC6020, October 2010, | |||
| editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
| DOI 10.17487/RFC6536, March 2012, <https://www.rfc- | DOI 10.17487/RFC6536, March 2012, | |||
| editor.org/info/rfc6536>. | <https://www.rfc-editor.org/info/rfc6536>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | <https://www.rfc-editor.org/info/rfc7223>. | |||
| [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | |||
| skipping to change at page 47, line 8 ¶ | skipping to change at page 47, line 8 ¶ | |||
| [I-D.ietf-bfd-yang] | [I-D.ietf-bfd-yang] | |||
| Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | |||
| G. Mirsky, "YANG Data Model for Bidirectional Forwarding | G. Mirsky, "YANG Data Model for Bidirectional Forwarding | |||
| Detection (BFD)", draft-ietf-bfd-yang-06 (work in | Detection (BFD)", draft-ietf-bfd-yang-06 (work in | |||
| progress), June 2017. | progress), June 2017. | |||
| [I-D.ietf-i2rs-yang-network-topo] | [I-D.ietf-i2rs-yang-network-topo] | |||
| Clemm, A., Medved, J., Varga, R., Bahadur, N., | Clemm, A., Medved, J., Varga, R., Bahadur, N., | |||
| Ananthakrishnan, H., and X. Liu, "A Data Model for Network | Ananthakrishnan, H., and X. Liu, "A Data Model for Network | |||
| Topologies", draft-ietf-i2rs-yang-network-topo-14 (work in | Topologies", draft-ietf-i2rs-yang-network-topo-15 (work in | |||
| progress), June 2017. | progress), September 2017. | |||
| [I-D.ietf-lime-yang-connection-oriented-oam-model] | [I-D.ietf-lime-yang-connection-oriented-oam-model] | |||
| Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model | Kumar, D., Wu, Q., and Z. Wang, "Generic YANG Data Model | |||
| for Connection Oriented Operations, Administration, and | for Connection Oriented Operations, Administration, and | |||
| Maintenance(OAM) protocols", draft-ietf-lime-yang- | Maintenance(OAM) protocols", draft-ietf-lime-yang- | |||
| connection-oriented-oam-model-00 (work in progress), June | connection-oriented-oam-model-00 (work in progress), June | |||
| 2017. | 2017. | |||
| [I-D.ietf-lime-yang-connectionless-oam-methods] | [I-D.ietf-lime-yang-connectionless-oam-methods] | |||
| Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | |||
| "Retrieval Methods YANG Data Model for Connectionless | "Retrieval Methods YANG Data Model for Connectionless | |||
| Operations, Administration, and Maintenance(OAM) | Operations, Administration, and Maintenance(OAM) | |||
| protocols", draft-ietf-lime-yang-connectionless-oam- | protocols", draft-ietf-lime-yang-connectionless-oam- | |||
| methods-05 (work in progress), June 2017. | methods-06 (work in progress), August 2017. | |||
| [I-D.ietf-netmod-schema-mount] | [I-D.ietf-netmod-schema-mount] | |||
| Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- | Bjorklund, M. and L. Lhotka, "YANG Schema Mount", draft- | |||
| ietf-netmod-schema-mount-06 (work in progress), July 2017. | ietf-netmod-schema-mount-06 (work in progress), July 2017. | |||
| [I-D.ietf-spring-sr-yang] | [I-D.ietf-spring-sr-yang] | |||
| Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | |||
| Data Model for Segment Routing", draft-ietf-spring-sr- | Data Model for Segment Routing", draft-ietf-spring-sr- | |||
| yang-07 (work in progress), July 2017. | yang-07 (work in progress), July 2017. | |||
| [I-D.zheng-mpls-lsp-ping-yang-cfg] | [I-D.zheng-mpls-lsp-ping-yang-cfg] | |||
| Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. | Zheng, L., Aldrin, S., Zheng, G., Mirsky, G., and R. | |||
| Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- | Rahman, "Yang Data Model for LSP-PING", draft-zheng-mpls- | |||
| lsp-ping-yang-cfg-05 (work in progress), June 2017. | lsp-ping-yang-cfg-05 (work in progress), June 2017. | |||
| [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching | ||||
| (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic | ||||
| Class" Field", RFC 5462, DOI 10.17487/RFC5462, February | ||||
| 2009, <https://www.rfc-editor.org/info/rfc5462>. | ||||
| [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual | [RFC6136] Sajassi, A., Ed. and D. Mohan, Ed., "Layer 2 Virtual | |||
| Private Network (L2VPN) Operations, Administration, and | Private Network (L2VPN) Operations, Administration, and | |||
| Maintenance (OAM) Requirements and Framework", RFC 6136, | Maintenance (OAM) Requirements and Framework", RFC 6136, | |||
| DOI 10.17487/RFC6136, March 2011, <https://www.rfc- | DOI 10.17487/RFC6136, March 2011, | |||
| editor.org/info/rfc6136>. | <https://www.rfc-editor.org/info/rfc6136>. | |||
| [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. | [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. | |||
| Weingarten, "An Overview of Operations, Administration, | Weingarten, "An Overview of Operations, Administration, | |||
| and Maintenance (OAM) Tools", RFC 7276, | and Maintenance (OAM) Tools", RFC 7276, | |||
| DOI 10.17487/RFC7276, June 2014, <https://www.rfc- | DOI 10.17487/RFC7276, June 2014, | |||
| editor.org/info/rfc7276>. | <https://www.rfc-editor.org/info/rfc7276>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Deepak Kumar | Deepak Kumar | |||
| CISCO Systems | CISCO Systems | |||
| 510 McCarthy Blvd | 510 McCarthy Blvd | |||
| Milpitas, CA 95035 | Milpitas, CA 95035 | |||
| USA | USA | |||
| Email: dekumar@cisco.com | Email: dekumar@cisco.com | |||
| End of changes. 170 change blocks. | ||||
| 1009 lines changed or deleted | 1022 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||