| < draft-ietf-lime-yang-connectionless-oam-05.txt | draft-ietf-lime-yang-connectionless-oam-06.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: November 16, 2017 Q. Wu | Expires: December 11, 2017 Q. Wu | |||
| Huawei | Huawei | |||
| R. Rahman | R. Rahman | |||
| S. Raghavan | S. Raghavan | |||
| Cisco | Cisco | |||
| May 15, 2017 | June 9, 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-05 | draft-ietf-lime-yang-connectionless-oam-06 | |||
| 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 | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 http://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 November 16, 2017. | This Internet-Draft will expire on December 11, 2017. | |||
| 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 | (http://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 | |||
| skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Conventions used in this document . . . . . . . . . . . . . . 3 | |||
| 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. OAM-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 . . . . . . . . . . . . . . . . . . . 7 | 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 7 | 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | |||
| 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Connectionless model applicability . . . . . . . . . . . . . 32 | 5. Connectionless model applicability . . . . . . . . . . . . . 33 | |||
| 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 33 | 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 33 | 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 34 | |||
| 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 35 | 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 36 | |||
| 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 37 | 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 38 | |||
| 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 37 | 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 38 | |||
| 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 38 | 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 39 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 40 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 42 | 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 42 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 43 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 44 | 9.2. Informative References . . . . . . . . . . . . . . . . . 45 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 1. Introduction | 1. Introduction | |||
| Operations, Administration, and Maintenance (OAM) are important | Operations, Administration, and Maintenance (OAM) are important | |||
| networking functions that allow operators to: | networking functions that allow operators to: | |||
| 1. Monitor networks connections (Reachability Verification, | 1. Monitor networks connections (Reachability Verification, | |||
| Continuity Check). | Continuity Check). | |||
| 2. Troubleshoot failures (Fault verification and localization). | 2. Troubleshoot failures (Fault verification and localization). | |||
| skipping to change at page 3, line 32 ¶ | skipping to change at page 3, line 34 ¶ | |||
| In this document, we presents a base YANG Data model for | In this document, we presents a base YANG Data model for | |||
| connectionless OAM protocols. The generic YANG model for | connectionless OAM protocols. The generic YANG model for | |||
| connectionless OAM only includes configuration data and state data. | connectionless OAM only includes configuration data and state data. | |||
| It can be used in conjunction with data retrieval method model | It can be used in conjunction with data retrieval method model | |||
| [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on | [I-D.ietf-lime-yang-connectionless-oam-methods], which focuses on | |||
| data retrieval procedures like RPC. However it also can be used | data retrieval procedures like RPC. However it also can be used | |||
| independently of data retrieval method model. | independently of data retrieval method model. | |||
| 2. Conventions used in this document | 2. Conventions used in this document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in [RFC2119]. | ||||
| The following terms are defined in [RFC6241] and are not redefined | The following terms are defined in [RFC6241] and are not redefined | |||
| here: | here: | |||
| o client | o client | |||
| o configuration data | o configuration data | |||
| o server | o server | |||
| o state data | o state data | |||
| The following terms are defined in [RFC6020] and are not redefined | The following terms are defined in [RFC6020] and are not redefined | |||
| here: | here: | |||
| o augment | o augment | |||
| o data model | o data model | |||
| o data node | ||||
| o data node | ||||
| The terminology for describing YANG data models is found in | The terminology for describing YANG data models is found in | |||
| [RFC6020]. | [RFC6020]. | |||
| 2.1. Terminology | 2.1. Terminology | |||
| TP - Test Point | TP - Test Point | |||
| MAC - Media Access Control | MAC - Media Access Control | |||
| BFD - Bidirectional Forwarding Detection | BFD - Bidirectional Forwarding Detection | |||
| RPC - A Remote Procedure Call, as used within the NETCONF protocol | RPC - A Remote Procedure Call, as used within the NETCONF protocol | |||
| 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 | |||
| 2.2. Prefixes in Data Node Names | ||||
| In this document, names of data nodes, actions and other data model | ||||
| objects are often used without a prefix, as long as it is clear from | ||||
| the context in which YANG module each name is defined. Otherwise, | ||||
| names are prefixed using the standard prefix associated with the | ||||
| corresponding YANG module, as shown in Table 1. | ||||
| +--------+-----------------------+----------------------------------+ | ||||
| | Prefix | YANG module | Reference | | ||||
| +--------+-----------------------+----------------------------------+ | ||||
| | if | ietf-interfaces | [RFC7223] | | ||||
| | | | | | ||||
| | inet | ietf-inet-types | [RFC6991] | | ||||
| | | | | | ||||
| | yangmn | ietf-yang-schema- | [I-D.ietf-netmod-schema-mount] | | ||||
| | t | mount | | | ||||
| | | | | | ||||
| | nd | ietf-network | [I-D.ietf-i2rs-yang-network-topo | | ||||
| | | | ] | | ||||
| | | | | | ||||
| | ni | ietf-network-instance | [I-D.ietf-rtgwg-ni-model] | | ||||
| +--------+-----------------------+----------------------------------+ | ||||
| Table 1: Prefixes and corresponding YANG modules | ||||
| 3. Overview of the Connectionless OAM Model | 3. Overview of the Connectionless OAM Model | |||
| 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 applicable for proactive OAM sessions. | statistics and these are 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 possible by augmented | (eg., IPv4 address for IPv4 locations) are possible by augmented | |||
| network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] | network nodes which are defined in [I-D.ietf-i2rs-yang-network-topo] | |||
| to describe the network hierarchies and the inventory of nodes | to describe the network hierarchies and the inventory of nodes | |||
| contained in a network. Each 'test-point-location' is chosen based | contained in a network. Each 'test-point-location' is chosen based | |||
| on 'location-type' which when chosen, leads to a container that | on 'location-type' which when chosen, leads to a container that | |||
| includes a list of 'test-point-locations' keyed by technology | includes a list of 'test-point-locations' keyed by technology | |||
| specific keys. Each test point location includes a 'test-point- | specific keys. Each test point location includes a 'test-point- | |||
| location-info'. The 'test-point-location-info' includes 'tp- | location-info'. The 'test-point-location-info' includes 'tp- | |||
| technology', 'tp-tools', and 'connectionless-oam-layers'. The | technology', 'tp-tools', and 'connectionless-oam-layers'. The | |||
| skipping to change at page 6, line 45 ¶ | skipping to change at page 7, line 19 ¶ | |||
| range "0..65535"; | range "0..65535"; | |||
| } | } | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type int32 { | type int32 { | |||
| range "-1..1"; | range "-1..1"; | |||
| } | } | |||
| description | description | |||
| "Level"; | "Level"; | |||
| } | } | |||
| ordered-by system; | ||||
| description | description | |||
| "List of related oam layers."; | "List of related oam layers."; | |||
| } | } | |||
| 3.4. Test Point Locations Information | 3.4. Test Point Locations Information | |||
| This is a generic grouping for Test Point Locations Information. It | This is a generic grouping for Test Point Locations Information. It | |||
| Provide details of Test Point Location using Tools, 'OAM-Layers' | Provide details of Test Point Location using Tools, 'OAM-Layers' | |||
| grouping defined above. | grouping defined above. | |||
| skipping to change at page 7, line 49 ¶ | skipping to change at page 8, line 19 ¶ | |||
| Continuity check data output from methods, includes 'src-test-point', | Continuity check data output from methods, includes 'src-test-point', | |||
| 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics | 'dst-test-point', 'sequence-number', 'hop-cnt' and session statistics | |||
| of various kinds. The continuity check data model is made generic | of various kinds. The continuity check data model is made generic | |||
| enough to allow different methods of data retrieval. None of the | enough to allow different methods of data retrieval. None of the | |||
| fields are made mandatory for that reason. Noted that the retrieval | fields are made mandatory for that reason. Noted that the retrieval | |||
| methods are defined in | methods are defined in | |||
| [I-D.ietf-lime-yang-connectionless-oam-methods]. | [I-D.ietf-lime-yang-connectionless-oam-methods]. | |||
| 4. OAM YANG Module | 4. OAM YANG Module | |||
| <CODE BEGINS> file "ietf-connectionless-oam@2017-04-25.yang" | <CODE BEGINS> file "ietf-connectionless-oam@2017-06-09.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 | ||||
| "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 indpendent manner. | ||||
| Functional level abstraction is indendent with | ||||
| YANG modeling. 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-04-25 { | ||||
| description | ||||
| " Base model for Connectionless | ||||
| Operations, Administration, | ||||
| and Maintenance(OAM) "; | ||||
| reference | ||||
| " RFC XXXX: Connectionless | ||||
| Operations, Administration, and | ||||
| Maintenance(OAM)YANG Data Model"; | ||||
| } | ||||
| feature connection-less { | module ietf-connectionless-oam { | |||
| description | yang-version 1.1; | |||
| "This feature indicates that OAM solution is connection less."; | namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; | |||
| } | prefix coam; | |||
| feature continuity-check { | import ietf-yang-schema-mount { | |||
| description | prefix yangmnt; | |||
| "This feature indicates that the server supports | } | |||
| executing continuity check OAM command and | import ietf-network { | |||
| returning a response. Servers that do not advertise | prefix nd; | |||
| this feature will not support executing | } | |||
| continuity check command or rpc model for | import ietf-yang-types { | |||
| continuity check command."; | prefix yang; | |||
| } | } | |||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| import ietf-network-instance { | ||||
| prefix ni; | ||||
| } | ||||
| feature path-discovery { | organization | |||
| description | "IETF LIME Working Group"; | |||
| "This feature indicates that the server supports | contact | |||
| executing path discovery OAM command and | "Deepak Kumar dekumar@cisco.com | |||
| returning a response. Servers that do not advertise | Qin Wu bill.wu@huawei.com | |||
| this feature will not support executing | S Raghavan srihari@cisco.com | |||
| path discovery command or rpc model for | Zitao Wang wangzitao@huawei.com | |||
| path discovery command."; | R Rahman rrahman@cisco.com"; | |||
| } | ||||
| typedef router-id { | ||||
| type yang:dotted-quad; | ||||
| description | description | |||
| "A 32-bit number in the dotted quad format assigned to each | "This YANG module defines the generic configuration, | |||
| router. This number uniquely identifies the router within an | data model, statistics for connectionless OAM to be | |||
| Autonomous System."; | used within IETF in a protocol indpendent manner. | |||
| } | Functional level abstraction is indendent with | |||
| YANG modeling. 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"; | ||||
| typedef routing-instance-ref { | revision 2017-06-09 { | |||
| type leafref { | description | |||
| path "/ni:network-instances/ni:network-instance/ni:name"; | " Base model for Connectionless | |||
| Operations, Administration, | ||||
| and Maintenance(OAM) "; | ||||
| reference | ||||
| " RFC XXXX: Connectionless | ||||
| Operations, Administration, and | ||||
| Maintenance(OAM)YANG Data Model"; | ||||
| } | } | |||
| description | ||||
| "This type is used for leafs that reference a routing instance | ||||
| configuration."; | ||||
| } | ||||
| typedef ipv4-multicast-group-address { | feature connection-less { | |||
| type string { | description | |||
| pattern "(2((2[4-9])|(3[0-9]))\\.)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; | "This feature indicates that OAM solution is connection less."; | |||
| } | ||||
| feature continuity-check { | ||||
| description | ||||
| "This feature indicates that the server supports | ||||
| executing continuity check OAM command and | ||||
| returning a response. Servers that do not advertise | ||||
| this feature will not support executing | ||||
| continuity check command or rpc model for | ||||
| continuity check command."; | ||||
| } | } | |||
| description | ||||
| "The ipv4-multicast-group-address type | ||||
| represents an IPv4 multicast address | ||||
| in dotted-quad notation."; | ||||
| reference "RFC4607"; | ||||
| } | ||||
| typedef ipv6-multicast-group-address { | feature path-discovery { | |||
| type string { | description | |||
| pattern "(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))"; | "This feature indicates that the server supports | |||
| pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)"; | executing path discovery OAM command and | |||
| returning a response. Servers that do not advertise | ||||
| this feature will not support executing | ||||
| path discovery command or rpc model for | ||||
| path discovery command."; | ||||
| } | } | |||
| description | ||||
| "The ipv6-multicast-group-address | ||||
| type represents an IPv6 address in full, | ||||
| mixed, shortened, and shortened-mixed | ||||
| notation."; | ||||
| reference | ||||
| "RFC4291 2.7. | ||||
| ietf-inet-types:ipv6-address"; | ||||
| } | ||||
| typedef ip-multicast-group-address { | typedef router-id { | |||
| type union { | type yang:dotted-quad; | |||
| type ipv4-multicast-group-address; | description | |||
| type ipv6-multicast-group-address; | "A 32-bit number in the dotted quad format assigned to each | |||
| router. This number uniquely identifies the router within an | ||||
| Autonomous System."; | ||||
| } | } | |||
| description | ||||
| "The ip-multicast-group-address type | ||||
| represents an IP multicast address and | ||||
| is IP version neutral. The format of the | ||||
| textual representations implies the IP version."; | ||||
| } | ||||
| identity address-attribute-types { | typedef routing-instance-ref { | |||
| description | type leafref { | |||
| "This is base identity of address | path "/ni:network-instances/ni:network-instance/ni:name"; | |||
| attribute types which are ip-prefix, | } | |||
| bgp, tunnel, pwe3, vpls, etc."; | description | |||
| } | "This type is used for leafs that reference a routing instance | |||
| configuration."; | ||||
| } | ||||
| typedef address-attribute-type { | typedef ipv4-multicast-group-address { | |||
| type identityref { | type string { | |||
| base address-attribute-types; | pattern "(2((2[4-9])|(3[0-9]))\\.)"+" | |||
| (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.)" | ||||
| +"{2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; | ||||
| } | ||||
| description | ||||
| "The ipv4-multicast-group-address type | ||||
| represents an IPv4 multicast address | ||||
| in dotted-quad notation."; | ||||
| reference "RFC4607"; | ||||
| } | } | |||
| description | ||||
| "Target address attribute type."; | ||||
| } | typedef ipv6-multicast-group-address { | |||
| type string { | ||||
| pattern "(((FF|ff)[0-9a-fA-F]{2}):)" | ||||
| +"([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)" | ||||
| +"?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|" | ||||
| +"[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|" | ||||
| +"[01]?[0-9]?[0-9])))"; | ||||
| pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|" | ||||
| +"((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)"; | ||||
| } | ||||
| description | ||||
| "The ipv6-multicast-group-address | ||||
| type represents an IPv6 address in full, | ||||
| mixed, shortened, and shortened-mixed | ||||
| notation."; | ||||
| reference | ||||
| "RFC4291 2.7. | ||||
| ietf-inet-types:ipv6-address"; | ||||
| } | ||||
| typedef ip-multicast-group-address { | ||||
| type union { | ||||
| type ipv4-multicast-group-address; | ||||
| type ipv6-multicast-group-address; | ||||
| } | ||||
| description | ||||
| "The ip-multicast-group-address type | ||||
| represents an IP multicast address and | ||||
| is IP version neutral. The format of the | ||||
| textual representations implies the IP version."; | ||||
| } | ||||
| identity time-resolution { | identity address-attribute-types { | |||
| description | description | |||
| "Time interval resolution"; | "This is base identity of address | |||
| } | attribute types which are ip-prefix, | |||
| bgp, tunnel, pwe3, vpls, etc."; | ||||
| } | ||||
| identity hours { | typedef address-attribute-type { | |||
| base time-resolution; | type identityref { | |||
| description | base address-attribute-types; | |||
| "Time resolution in Hours"; | } | |||
| } | description | |||
| "Target address attribute type."; | ||||
| } | ||||
| identity minutes { | identity time-resolution { | |||
| base time-resolution; | description | |||
| description | "Time interval resolution"; | |||
| "Time resolution in Minutes"; | } | |||
| } | ||||
| identity seconds { | identity hours { | |||
| base time-resolution; | base time-resolution; | |||
| description | description | |||
| "Time resolution in Seconds"; | "Time resolution in Hours"; | |||
| } | } | |||
| identity milliseconds { | identity minutes { | |||
| base time-resolution; | base time-resolution; | |||
| description | description | |||
| "Time resolution in Milliseconds"; | "Time resolution in Minutes"; | |||
| } | } | |||
| identity microseconds { | identity seconds { | |||
| base time-resolution; | base time-resolution; | |||
| description | description | |||
| "Time resolution in Microseconds"; | "Time resolution in Seconds"; | |||
| } | ||||
| identity nanoseconds { | } | |||
| base time-resolution; | ||||
| description | ||||
| "Time resolution in Nanoseconds"; | ||||
| } | ||||
| grouping cc-session-statistics { | identity milliseconds { | |||
| description | base time-resolution; | |||
| "Grouping for session statistics."; | ||||
| container cc-session-statistics { | ||||
| description | description | |||
| "cc session counters"; | "Time resolution in Milliseconds"; | |||
| leaf session-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of Continuity Check sessions."; | ||||
| } | ||||
| leaf session-up-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are up."; | ||||
| } | ||||
| leaf session-down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are down."; | ||||
| } | ||||
| leaf session-admin-down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are admin-down."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| grouping session-packet-statistics { | identity microseconds { | |||
| description | base time-resolution; | |||
| "Grouping for per session packet statistics"; | ||||
| container session-packet-statistics { | ||||
| description | description | |||
| "Per session packet statistics."; | "Time resolution in Microseconds"; | |||
| 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."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| grouping cc-per-session-statistics { | identity nanoseconds { | |||
| description | base time-resolution; | |||
| "Grouping for per session statistics"; | ||||
| container cc-per-session-statistics { | ||||
| description | description | |||
| "per session statistics."; | "Time resolution in Nanoseconds"; | |||
| 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; | ||||
| } | } | |||
| } | ||||
| grouping session-error-statistics { | grouping cc-session-statistics { | |||
| description | ||||
| "Grouping for per session error statistics"; | ||||
| container session-error-statistics { | ||||
| description | description | |||
| "Per session error statistics."; | "Grouping for session statistics."; | |||
| leaf packet-drops-count { | container cc-session-statistics { | |||
| type uint32; | ||||
| description | ||||
| "Total received packet drops count."; | ||||
| } | ||||
| leaf packet-reorder-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total received packet reordered count."; | ||||
| } | ||||
| leaf packets-out-of-seq-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total received out of sequence count."; | ||||
| } | ||||
| leaf packets-dup-count { | ||||
| type uint32; | ||||
| description | description | |||
| "Total received packet duplicates count."; | "cc session counters"; | |||
| leaf session-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of Continuity Check sessions."; | ||||
| } | ||||
| leaf session-up-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are up."; | ||||
| } | ||||
| leaf session-down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are down."; | ||||
| } | ||||
| leaf session-admin-down-count { | ||||
| type uint32; | ||||
| description | ||||
| "Number of sessions which are admin-down."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | grouping session-packet-statistics { | |||
| grouping session-delay-statistics { | ||||
| description | ||||
| "Grouping for per session delay statistics"; | ||||
| container session-delay-statistics { | ||||
| description | description | |||
| "Session delay summarised information."; | "Grouping for per session packet statistics"; | |||
| leaf time-resolution-value { | container session-packet-statistics { | |||
| type identityref { | ||||
| base time-resolution; | ||||
| } | ||||
| 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 | description | |||
| "Average delay value observed."; | "Per session packet statistics."; | |||
| 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."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping session-jitter-statistics { | grouping cc-per-session-statistics { | |||
| description | ||||
| "Grouping for per session jitter statistics"; | ||||
| container session-jitter-statistics { | ||||
| description | description | |||
| "Session jitter summarised information."; | "Grouping for per session statistics"; | |||
| leaf time-resolution-value { | container cc-per-session-statistics { | |||
| type identityref { | ||||
| base time-resolution; | ||||
| } | ||||
| 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 | description | |||
| "Average jitter value observed."; | "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; | ||||
| 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; | ||||
| } | } | |||
| } | } | |||
| } | ||||
| grouping session-path-verification-statistics { | grouping session-error-statistics { | |||
| description | ||||
| "Grouping for per session path verification statistics"; | ||||
| container session-path-verification-statistics { | ||||
| description | description | |||
| "OAM per session path verification statistics."; | "Grouping for per session error statistics"; | |||
| leaf verified-count { | container session-error-statistics { | |||
| type uint32; | ||||
| description | ||||
| "Total number of OAM packets that | ||||
| went through a path as intended."; | ||||
| } | ||||
| leaf failed-count { | ||||
| type uint32; | ||||
| description | description | |||
| "Total number of OAM packets that | "Per session error statistics."; | |||
| went through an unintended path."; | leaf packet-drops-count { | |||
| } | type uint32; | |||
| } | ||||
| } | ||||
| grouping session-type { | ||||
| description | ||||
| "This object indicates the current session | ||||
| definition."; | ||||
| leaf session-type-enum { | ||||
| type enumeration { | ||||
| enum "proactive" { | ||||
| description | description | |||
| "The current session is proactive"; | "Total received packet drops count."; | |||
| } | } | |||
| enum "on-demand" { | leaf packet-reorder-count { | |||
| type uint32; | ||||
| description | description | |||
| "The current session is on-demand."; | "Total received packet reordered count."; | |||
| } | ||||
| leaf packets-out-of-seq-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total received out of sequence count."; | ||||
| } | ||||
| leaf packets-dup-count { | ||||
| type uint32; | ||||
| description | ||||
| "Total received packet duplicates count."; | ||||
| } | } | |||
| } | } | |||
| default "on-demand"; | ||||
| description | ||||
| "Session type enum"; | ||||
| } | } | |||
| } | ||||
| 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 { | grouping session-delay-statistics { | |||
| 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 group-ip-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Group IP address type"; | ||||
| } | ||||
| identity route-distinguisher-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Route Distinguisher address type"; | ||||
| } | ||||
| identity ip-prefix-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IP prefix address type"; | ||||
| } | ||||
| identity tunnel-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Tunnel address type"; | ||||
| } | ||||
| grouping tp-address { | ||||
| leaf tp-location-type-value { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | ||||
| description | description | |||
| "Test point address type."; | "Grouping for per session delay statistics"; | |||
| } | ||||
| choice tp-address { | container session-delay-statistics { | |||
| case mac-address { | description | |||
| when "'tp-location-type-value' = 'mac-address-type'" { | "Session delay summarised information."; | |||
| leaf time-resolution-value { | ||||
| type identityref { | ||||
| base time-resolution; | ||||
| } | ||||
| description | description | |||
| "MAC address type"; | "Time units among choice of s,ms,ns etc."; | |||
| } | } | |||
| leaf mac-address { | leaf min-delay-value { | |||
| type yang:mac-address; | type uint32; | |||
| description | description | |||
| "MAC Address"; | "Minimum delay value observed."; | |||
| } | } | |||
| description | leaf max-delay-value { | |||
| "MAC Address based MP Addressing."; | type uint32; | |||
| } | ||||
| case ipv4-address { | ||||
| when "'tp-location-type-value' = 'ipv4-address-type'" { | ||||
| description | description | |||
| "IPv4 address type"; | "Maximum delay value observed."; | |||
| } | } | |||
| leaf ipv4-address { | leaf average-delay-value { | |||
| type inet:ipv4-address; | type uint32; | |||
| description | description | |||
| "IPv4 Address"; | "Average delay value observed."; | |||
| } | } | |||
| description | ||||
| "IP Address based MP Addressing."; | ||||
| } | } | |||
| case ipv6-address { | } | |||
| when "'tp-location-type-value' = 'ipv6-address-type'" { | ||||
| description | grouping session-jitter-statistics { | |||
| "IPv6 address type"; | description | |||
| } | "Grouping for per session jitter statistics"; | |||
| leaf ipv6-address { | container session-jitter-statistics { | |||
| type inet:ipv6-address; | description | |||
| "Session jitter summarised information."; | ||||
| leaf time-resolution-value { | ||||
| type identityref { | ||||
| base time-resolution; | ||||
| } | ||||
| description | description | |||
| "IPv6 Address"; | "Time units among choice of s,ms,ns etc."; | |||
| } | } | |||
| description | leaf min-jitter-value { | |||
| "ipv6 Address based MP Addressing."; | type uint32; | |||
| } | ||||
| case tp-attribute { | ||||
| when "'tp-location-type-value' = 'tp-attribute-type'" { | ||||
| description | description | |||
| "Test point attribute type"; | "Minimum jitter value observed."; | |||
| } | } | |||
| leaf tp-attribute-type { | leaf max-jitter-value { | |||
| type address-attribute-type; | type uint32; | |||
| description | description | |||
| "Test point type."; | "Maximum jitter value observed."; | |||
| } | } | |||
| choice tp-attribute-value { | leaf average-jitter-value { | |||
| type uint32; | ||||
| description | description | |||
| "Test point value."; | "Average jitter value observed."; | |||
| 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."; | ||||
| } | ||||
| } | ||||
| case vpls { | ||||
| leaf route-distinguisher { | ||||
| type uint32; | ||||
| description | ||||
| "Route Distinguisher(8 octets)."; | ||||
| } | ||||
| leaf sender-ve-id { | ||||
| type uint32; | ||||
| description | ||||
| "Sender's VE ID."; | ||||
| } | ||||
| leaf receiver-ve-id { | ||||
| type uint32; | ||||
| description | ||||
| "Receiver's VE ID."; | ||||
| } | ||||
| } | ||||
| 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 ip-multicast-group-address; | ||||
| description | ||||
| "Group ip address."; | ||||
| } | ||||
| } | ||||
| case vpn { | ||||
| leaf as-number { | ||||
| type inet:as-number; | ||||
| description | ||||
| "AS number."; | ||||
| } | ||||
| } | ||||
| case global-id { | ||||
| leaf lsp-id { | ||||
| type string; | ||||
| description | ||||
| "LSP id."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | } | |||
| } | } | |||
| case system-info { | } | |||
| when "'tp-location-type-value' = 'system-id-address-type'" { | ||||
| 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 | |||
| "System id address type"; | "Total number of OAM packets that | |||
| went through a path as intended."; | ||||
| } | } | |||
| leaf system-id { | leaf failed-count { | |||
| type router-id; | type uint32; | |||
| description | description | |||
| "System ID assigned to this node."; | "Total number of OAM packets that | |||
| went through an unintended path."; | ||||
| } | } | |||
| } | } | |||
| description | ||||
| "TP Addressing."; | ||||
| } | } | |||
| description | ||||
| "TP Address"; | ||||
| } | ||||
| grouping tp-address-vrf { | grouping session-type { | |||
| description | ||||
| "Test point address with VRF."; | ||||
| leaf vrf { | ||||
| type routing-instance-ref; | ||||
| description | description | |||
| "The vrf is used to describe the | "This object indicates the current session | |||
| corresponding network instance"; | definition."; | |||
| } | leaf session-type-enum { | |||
| uses tp-address; | type enumeration { | |||
| } | enum "proactive" { | |||
| description | ||||
| grouping connectionless-oam-layers { | "The current session is proactive"; | |||
| list oam-layers { | } | |||
| key "index"; | enum "on-demand" { | |||
| leaf index { | description | |||
| type uint16 { | "The current session is on-demand."; | |||
| range "0..65535"; | } | |||
| } | } | |||
| default "on-demand"; | ||||
| description | description | |||
| "Index"; | "Session type enum"; | |||
| } | } | |||
| leaf level { | } | |||
| type int32 { | ||||
| range "-1..1"; | 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 group-ip-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Group IP address type"; | ||||
| } | ||||
| identity route-distinguisher-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Route Distinguisher address type"; | ||||
| } | ||||
| identity ip-prefix-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "IP prefix address type"; | ||||
| } | ||||
| identity tunnel-address-type { | ||||
| base tp-address-technology-type; | ||||
| description | ||||
| "Tunnel address type"; | ||||
| } | ||||
| grouping tp-address { | ||||
| leaf tp-location-type-value { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | } | |||
| default "0"; | ||||
| description | ||||
| "Level 0 indicates default level, | ||||
| -1 means server and +1 means client layer. | ||||
| In relationship 0 means same layer."; | ||||
| description | ||||
| "Test point address type."; | ||||
| } | } | |||
| choice tp-location { | choice tp-address { | |||
| case mac-address { | case mac-address { | |||
| leaf mac-address-location { | when "'tp-location-type-value' = 'mac-address-type'" { | |||
| 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."; | |||
| } | } | |||
| case ipv4-address { | case ipv4-address { | |||
| leaf ipv4-location { | when "'tp-location-type-value' = 'ipv4-address-type'" { | |||
| 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."; | |||
| } | } | |||
| case ipv6-location { | case ipv6-address { | |||
| when "'tp-location-type-value' = 'ipv6-address-type'" { | ||||
| description | ||||
| "IPv6 address type"; | ||||
| } | ||||
| leaf ipv6-address { | 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."; | |||
| } | } | |||
| case group-ip-address-location { | case tp-attribute { | |||
| leaf group-ip-address-location { | when "'tp-location-type-value' = 'tp-attribute-type'" { | |||
| type ip-multicast-group-address; | ||||
| description | description | |||
| "Group IP address location"; | "Test point attribute type"; | |||
| } | } | |||
| description | leaf tp-attribute-type { | |||
| "Group IP address"; | type address-attribute-type; | |||
| } | ||||
| case as-number-location { | ||||
| leaf as-number-location { | ||||
| type inet:as-number; | ||||
| description | description | |||
| "AS number location"; | "Test point type."; | |||
| } | ||||
| choice tp-attribute-value { | ||||
| description | ||||
| "Test point value."; | ||||
| 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 uint32; | ||||
| 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 uint32; | ||||
| 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 uint32; | ||||
| 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 ip-multicast-group-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 | ||||
| "AS number for point to multipoint OAM"; | ||||
| } | } | |||
| case system-id-location { | case system-info { | |||
| leaf system-id-location { | when "'tp-location-type-value' = 'system-id-address-type'" { | |||
| description | ||||
| "System id address type"; | ||||
| } | ||||
| leaf system-id { | ||||
| type router-id; | type router-id; | |||
| description | description | |||
| "System id location"; | "System ID assigned to this node."; | |||
| } | } | |||
| description | ||||
| "System ID"; | ||||
| } | } | |||
| description | description | |||
| "TP location."; | "TP Addressing."; | |||
| } | } | |||
| ordered-by system; | ||||
| description | description | |||
| "List of related oam layers. | "TP Address"; | |||
| 0 means they are in same level, especially | ||||
| interworking scenarios of stitching multiple | ||||
| technology at same layer. -1 means server layer, | ||||
| for eg:- in case of Overlay and Underlay, | ||||
| Underlay is server layer for Overlay Test Point. | ||||
| +1 means client layer, for example in case of | ||||
| Service OAM and Transport OAM, Service OAM is client | ||||
| layer to Transport OAM."; | ||||
| } | } | |||
| description | ||||
| "Connectionless related OAM layer"; | ||||
| } | ||||
| grouping tp-technology { | grouping tp-address-vrf { | |||
| choice technology { | ||||
| default "technology-null"; | ||||
| case technology-null { | ||||
| description | ||||
| "This is a placeholder when no technology is needed."; | ||||
| leaf tech-null { | ||||
| type empty; | ||||
| description | ||||
| "There is no technology define"; | ||||
| } | ||||
| } | ||||
| description | description | |||
| "Technology choice."; | "Test point address with VRF."; | |||
| } | leaf vrf { | |||
| description | type routing-instance-ref; | |||
| "OAM Technology"; | ||||
| } | ||||
| grouping tp-tools { | ||||
| description | ||||
| "Test Point OAM Toolset."; | ||||
| container tp-tools { | ||||
| leaf continuity-check { | ||||
| type boolean; | ||||
| 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; | ||||
| description | description | |||
| "A flag indicating whether or not the | "The vrf is used to describe the | |||
| path discovery function is supported."; | corresponding network instance"; | |||
| 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 | uses tp-address; | |||
| "Container for test point OAM tools set."; | ||||
| } | ||||
| } | ||||
| 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; | ||||
| description | ||||
| "Test point Location"; | ||||
| } | ||||
| grouping test-point-locations { | grouping connectionless-oam-layers { | |||
| description | list oam-layers { | |||
| "Group of test point locations."; | key "index"; | |||
| leaf tp-location-type-value { | leaf index { | |||
| type identityref { | type uint16 { | |||
| base tp-address-technology-type; | range "0..65535"; | |||
| } | } | |||
| description | ||||
| "Test point location type."; | ||||
| } | ||||
| choice location-type { | ||||
| case ipv4-location-type { | ||||
| when "'tp-location-type-value' = 'ipv4-address-type'" { | ||||
| description | description | |||
| "When test point location type is equal to ipv4 address."; | "Index"; | |||
| } | } | |||
| container test-point-ipv4-location-list { | leaf level { | |||
| list test-point-locations { | type int32 { | |||
| key "ipv4-location"; | range "-1..1"; | |||
| } | ||||
| default "0"; | ||||
| description | ||||
| "Level 0 indicates default level, | ||||
| -1 means server and +1 means client layer. | ||||
| In relationship 0 means same layer."; | ||||
| } | ||||
| choice tp-location { | ||||
| case mac-address { | ||||
| leaf mac-address-location { | ||||
| type yang:mac-address; | ||||
| description | ||||
| "MAC Address"; | ||||
| } | ||||
| description | ||||
| "MAC Address based MP Addressing."; | ||||
| } | ||||
| case ipv4-address { | ||||
| leaf ipv4-location { | leaf ipv4-location { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "IPv4 Address."; | "Ipv4 Address"; | |||
| } | } | |||
| leaf vrf { | description | |||
| type routing-instance-ref; | "IP Address based MP Addressing."; | |||
| } | ||||
| case ipv6-location { | ||||
| leaf ipv6-address { | ||||
| type inet:ipv6-address; | ||||
| description | description | |||
| "The vrf is used to describe the | "IPv6 Address"; | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "IPv6 Address based MP Addressing."; | |||
| } | } | |||
| description | case group-ip-address-location { | |||
| "Serves as top-level container | leaf group-ip-address-location { | |||
| for test point location list."; | type ip-multicast-group-address; | |||
| } | ||||
| } | ||||
| case ipv6-location-type { | ||||
| when "'tp-location-type-value' = '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"; | ||||
| leaf ipv6-location { | ||||
| type inet:ipv6-address; | ||||
| description | description | |||
| "IPv6 Address."; | "Group IP address location"; | |||
| } | } | |||
| leaf vrf { | description | |||
| type routing-instance-ref; | "Group IP address"; | |||
| } | ||||
| case as-number-location { | ||||
| leaf as-number-location { | ||||
| type inet:as-number; | ||||
| description | description | |||
| "The vrf is used to describe the | "AS number location"; | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "AS number for point to multipoint OAM"; | |||
| } | ||||
| case system-id-location { | ||||
| leaf system-id-location { | ||||
| type router-id; | ||||
| description | ||||
| "System id location"; | ||||
| } | ||||
| description | ||||
| "System ID"; | ||||
| } | } | |||
| description | description | |||
| "Serves as top-level container | "TP location."; | |||
| for test point location list."; | ||||
| } | } | |||
| description | ||||
| "List of related oam layers. | ||||
| 0 means they are in same level, especially | ||||
| interworking scenarios of stitching multiple | ||||
| technology at same layer. -1 means server layer, | ||||
| for eg:- in case of Overlay and Underlay, | ||||
| Underlay is server layer for Overlay Test Point. | ||||
| +1 means client layer, for example in case of | ||||
| Service OAM and Transport OAM, Service OAM is client | ||||
| layer to Transport OAM."; | ||||
| } | } | |||
| case mac-location-type { | description | |||
| when "'tp-location-type-value' = 'mac-address-type'" { | "Connectionless related OAM layer"; | |||
| } | ||||
| grouping tp-technology { | ||||
| choice technology { | ||||
| default "technology-null"; | ||||
| case technology-null { | ||||
| description | description | |||
| "when test point location type is equal to mac address."; | "This is a placeholder when no technology is needed."; | |||
| } | leaf tech-null { | |||
| container test-point-mac-address-location-list { | type empty; | |||
| list test-point-locations { | ||||
| key "mac-address-location"; | ||||
| leaf mac-address-location { | ||||
| type yang:mac-address; | ||||
| description | ||||
| "MAC Address"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "There is no technology define"; | |||
| } | } | |||
| description | ||||
| "Serves as top-level container | ||||
| for test point location list."; | ||||
| } | } | |||
| description | ||||
| "Technology choice."; | ||||
| } | } | |||
| case group-ip-address-location-type { | description | |||
| when "'tp-location-type-value' = 'group-ip-address-type'" { | "OAM Technology"; | |||
| } | ||||
| grouping tp-tools { | ||||
| description | ||||
| "Test Point OAM Toolset."; | ||||
| container tp-tools { | ||||
| leaf continuity-check { | ||||
| type boolean; | ||||
| mandatory true; | ||||
| description | description | |||
| "When test point location type is equal to | "A flag indicating whether or not the | |||
| group ip address."; | 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."; | ||||
| } | } | |||
| container test-point-group-ip-address-location-list { | leaf path-discovery { | |||
| list test-point-locations { | type boolean; | |||
| key "group-ip-address-location"; | mandatory true; | |||
| leaf group-ip-address-location { | description | |||
| type ip-multicast-group-address; | "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. | ||||
| RFC 4884: Extended ICMP to Support Multi-part Message. | ||||
| RFC 5837:Extending ICMP for Interface | ||||
| and Next-Hop Identification. | ||||
| RFC 4379: LSP-PING."; | ||||
| } | ||||
| description | ||||
| "Container for test point OAM tools set."; | ||||
| } | ||||
| } | ||||
| 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; | ||||
| description | ||||
| "Test point Location"; | ||||
| } | ||||
| grouping test-point-locations { | ||||
| description | ||||
| "Group of test point locations."; | ||||
| leaf tp-location-type-value { | ||||
| type identityref { | ||||
| base tp-address-technology-type; | ||||
| } | ||||
| description | ||||
| "Test point location type."; | ||||
| } | ||||
| choice location-type { | ||||
| case ipv4-location-type { | ||||
| when "'tp-location-type-value' = '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"; | ||||
| leaf ipv4-location { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 Address."; | ||||
| } | ||||
| leaf vrf { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The vrf is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "Group IP address."; | "List of test point locations."; | |||
| } | } | |||
| leaf vrf { | description | |||
| type routing-instance-ref; | "Serves as top-level container | |||
| for test point location list."; | ||||
| } | ||||
| } | ||||
| case ipv6-location-type { | ||||
| when "'tp-location-type-value' = '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"; | ||||
| leaf ipv6-location { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 Address."; | ||||
| } | ||||
| leaf vrf { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The vrf is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "The vrf is used to describe the | "List of test point locations."; | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "Serves as top-level container | |||
| for test point location list."; | ||||
| } | } | |||
| description | ||||
| "Serves as top-level container for | ||||
| test point location list."; | ||||
| } | ||||
| } | ||||
| case group-as-number-location-type { | ||||
| when "'tp-location-type-value' = 'as-number-address-type'" { | ||||
| description | ||||
| "When test point location type is equal to | ||||
| as-number."; | ||||
| } | } | |||
| container test-point-as-number-location-list { | case mac-location-type { | |||
| list test-point-locations { | when "'tp-location-type-value' = 'mac-address-type'" { | |||
| key "as-number-location"; | description | |||
| leaf as-number-location { | "when test point location type is equal to mac address."; | |||
| type inet:as-number; | } | |||
| 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 | description | |||
| "AS number for point to multi point OAM."; | "List of test point locations."; | |||
| } | } | |||
| leaf vrf { | description | |||
| type routing-instance-ref; | "Serves as top-level container | |||
| description | for test point location list."; | |||
| "The vrf is used to describe the | } | |||
| corresponding network instance"; | } | |||
| case group-ip-address-location-type { | ||||
| when "'tp-location-type-value' = 'group-ip-address-type'" { | ||||
| description | ||||
| "When test point location type is equal to | ||||
| group ip address."; | ||||
| } | ||||
| container test-point-group-ip-address-location-list { | ||||
| list test-point-locations { | ||||
| key "group-ip-address-location"; | ||||
| leaf group-ip-address-location { | ||||
| type ip-multicast-group-address; | ||||
| description | ||||
| "Group IP address."; | ||||
| } | ||||
| leaf vrf { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The vrf is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | ||||
| "List of test point locations."; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "Serves as top-level container for | |||
| test point location list."; | ||||
| } | } | |||
| description | ||||
| "Serves as top-level container | ||||
| for test point location list."; | ||||
| } | } | |||
| } | case group-as-number-location-type { | |||
| case group-system-id-location-type { | when "'tp-location-type-value' = 'as-number-address-type'" { | |||
| when "'tp-location-type-value' = 'system-id-address-type'" { | description | |||
| description | "When test point location type is equal to | |||
| "When test point location is equal to | as-number."; | |||
| system info."; | } | |||
| } | container test-point-as-number-location-list { | |||
| container test-point-system-info-location-list { | list test-point-locations { | |||
| list test-point-locations { | key "as-number-location"; | |||
| key "system-id-location"; | leaf as-number-location { | |||
| leaf system-id-location { | type inet:as-number; | |||
| type inet:uri; | description | |||
| "AS number for point to multi point OAM."; | ||||
| } | ||||
| leaf vrf { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The vrf is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "System Id."; | "List of test point locations."; | |||
| } | } | |||
| leaf vrf { | description | |||
| type routing-instance-ref; | "Serves as top-level container | |||
| for test point location list."; | ||||
| } | ||||
| } | ||||
| case group-system-id-location-type { | ||||
| when "'tp-location-type-value' = '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 vrf { | ||||
| type routing-instance-ref; | ||||
| description | ||||
| "The vrf is used to describe the | ||||
| corresponding network instance"; | ||||
| } | ||||
| uses test-point-location-info; | ||||
| description | description | |||
| "The vrf is used to describe the | "List of test point locations."; | |||
| corresponding network instance"; | ||||
| } | } | |||
| uses test-point-location-info; | ||||
| ordered-by system; | ||||
| description | description | |||
| "List of test point locations."; | "Serves as top-level container for | |||
| test point location list."; | ||||
| } | } | |||
| description | ||||
| "Serves as top-level container for | ||||
| test point location list."; | ||||
| } | } | |||
| description | ||||
| "Choice of address types."; | ||||
| } | } | |||
| description | ||||
| "Choice of address types."; | ||||
| } | } | |||
| } | ||||
| augment "/nd:networks/nd:network/nd:node" { | 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 { | ||||
| type uint32; | ||||
| description | description | |||
| "Fractional part in nanoseconds as per IEEE1588v2 | "Augment test points of connectionless oam."; | |||
| or Fractional part in 64-bit NTP timestamp."; | uses test-point-locations; | |||
| } | } | |||
| } | ||||
| grouping timestamp { | grouping uint64-timestamp { | |||
| description | ||||
| "Grouping for timestamp."; | ||||
| leaf timestamp-type { | ||||
| type uint32; | ||||
| description | description | |||
| "Truncated PTP = 0, NTP = 1"; | "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 { | ||||
| type uint32; | ||||
| description | ||||
| "Fractional part in nanoseconds as per IEEE1588v2 | ||||
| or Fractional part in 64-bit NTP timestamp."; | ||||
| } | ||||
| } | } | |||
| uses uint64-timestamp; | ||||
| } | ||||
| grouping path-discovery-data { | grouping timestamp { | |||
| description | ||||
| "Path discovery related data output from nodes."; | ||||
| container src-test-point { | ||||
| description | ||||
| "Source test point."; | ||||
| uses tp-address-vrf; | ||||
| } | ||||
| container dest-test-point { | ||||
| description | ||||
| "Destination test point."; | ||||
| uses tp-address-vrf; | ||||
| } | ||||
| leaf sequence-number { | ||||
| type uint64; | ||||
| description | ||||
| "Sequence number in data packets."; | ||||
| } | ||||
| 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 path-verification { | ||||
| description | description | |||
| "Optional path verification related information."; | "Grouping for timestamp."; | |||
| leaf flow-info { | leaf timestamp-type { | |||
| type string; | type uint32; | |||
| description | description | |||
| "Informations that refers to the flow."; | "Truncated PTP = 0, NTP = 1"; | |||
| } | } | |||
| uses session-path-verification-statistics; | uses uint64-timestamp; | |||
| } | } | |||
| container path-trace-info { | ||||
| grouping path-discovery-data { | ||||
| description | description | |||
| "Optional path trace per-hop test point information. | "Path discovery related data output from nodes."; | |||
| The list has typically a single element for per-hop | container src-test-point { | |||
| cases like path-discovery RPC 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."; | "Source test point."; | |||
| leaf index { | uses tp-address-vrf; | |||
| type uint32; | } | |||
| container dest-test-point { | ||||
| description | ||||
| "Destination test point."; | ||||
| uses tp-address-vrf; | ||||
| } | ||||
| leaf sequence-number { | ||||
| type uint64; | ||||
| description | ||||
| "Sequence number in data packets."; | ||||
| } | ||||
| 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 path-verification { | ||||
| description | ||||
| "Optional path verification related information."; | ||||
| leaf flow-info { | ||||
| type string; | ||||
| description | description | |||
| "Trace information index."; | "Informations that refers to the flow."; | |||
| } | } | |||
| uses tp-address-vrf; | uses session-path-verification-statistics; | |||
| uses timestamp; | } | |||
| leaf ingress-intf-name { | container path-trace-info { | |||
| type if:interface-ref; | description | |||
| "Optional path trace per-hop test point information. | ||||
| The list has typically a single element for per-hop | ||||
| cases like path-discovery RPC but allows a list of | ||||
| hop related information for other types of | ||||
| data retrieval methods."; | ||||
| list path-trace-info-list { | ||||
| key "index"; | ||||
| description | description | |||
| "Ingress interface name"; | "Path trace information list."; | |||
| leaf index { | ||||
| type uint32; | ||||
| description | ||||
| "Trace information index."; | ||||
| } | ||||
| uses tp-address-vrf; | ||||
| 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 egress interface | ||||
| queue of the interface."; | ||||
| } | ||||
| 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-vrf; | ||||
| 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 { | ||||
| type uint32; | ||||
| description | ||||
| "Length of the egress interface | ||||
| queue of the interface."; | ||||
| } | } | |||
| leaf transit-delay { | } | |||
| type uint32; | container dest-test-point { | |||
| description | description | |||
| "Time in nano seconds | "Destination test point."; | |||
| packet spent transiting a node."; | uses tp-address-vrf; | |||
| } | leaf ingress-intf-name { | |||
| leaf app-meta-data { | type if:interface-ref; | |||
| type uint64; | ||||
| description | description | |||
| "Application specific | "Ingress interface name"; | |||
| data added by node."; | ||||
| } | } | |||
| } | } | |||
| } | leaf sequence-number { | |||
| } | type uint64; | |||
| grouping continuity-check-data { | ||||
| description | ||||
| "Continuity check data output from nodes."; | ||||
| container src-test-point { | ||||
| description | ||||
| "Source test point."; | ||||
| uses tp-address-vrf; | ||||
| leaf egress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "Egress interface name"; | "Sequence number."; | |||
| } | } | |||
| } | leaf hop-cnt { | |||
| container dest-test-point { | type uint8; | |||
| description | ||||
| "Destination test point."; | ||||
| uses tp-address-vrf; | ||||
| leaf ingress-intf-name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "Ingress interface name"; | "Hop count."; | |||
| } | } | |||
| uses session-packet-statistics; | ||||
| uses session-error-statistics; | ||||
| uses session-delay-statistics; | ||||
| uses session-jitter-statistics; | ||||
| } | } | |||
| 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 { | container cc-session-statistics-data { | |||
| if-feature "continuity-check"; | if-feature "continuity-check"; | |||
| config false; | 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 | description | |||
| "CC ipv6 sessions"; | "CC operational information."; | |||
| uses cc-session-statistics; | 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 33, line 34 ¶ | skipping to change at page 34, line 34 ¶ | |||
| No BFD technology type has been defined in the "ietf-connectionless- | No BFD technology type has been defined in the "ietf-connectionless- | |||
| oam" model. Therefore a technology type extension is required in the | oam" model. Therefore a technology type extension is required in the | |||
| model Extension. | model Extension. | |||
| The snippet below depicts an example of augmenting "bfd" type into | The snippet below depicts an example of augmenting "bfd" type into | |||
| the ietf-connectionless-oam": | the ietf-connectionless-oam": | |||
| augment "/nd:networks/nd:network/nd:node/" | augment "/nd:networks/nd:network/nd:node/" | |||
| +"coam:location-type/coam:ipv4-location-type" | +"coam:location-type/coam:ipv4-location-type" | |||
| +"/coam:test-point-ipv4-location-list/" | +"/coam:test-point-ipv4-location-list/" | |||
| +"coam:test-point-locations/coam:technology" | +"coam:test-point-locations/coam:technology" | |||
| +"/coam:technology-string" | +"/coam:technology-string" | |||
| { | { | |||
| leaf bfd{ | leaf bfd{ | |||
| type string; | type string; | |||
| } | } | |||
| } | } | |||
| 5.1.1.2. Test point attributes extension | 5.1.1.2. Test point attributes extension | |||
| To support bfd technology, the "ietf-connectionless-oam" model can be | To support bfd technology, the "ietf-connectionless-oam" model can be | |||
| skipping to change at page 37, line 9 ¶ | skipping to change at page 38, line 9 ¶ | |||
| </module> | </module> | |||
| </schema> | </schema> | |||
| </schema-mounts> | </schema-mounts> | |||
| and the " ietf-connectionless-oam " module might have: | and the " ietf-connectionless-oam " module might have: | |||
| <ietf-connectionless-oam | <ietf-connectionless-oam | |||
| uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> | uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> | |||
| ...... | ...... | |||
| <test-point-locations> | <test-point-locations> | |||
| <ipv4-location> 1.1.1.1</ipv4-location> | <ipv4-location>192.0.2.1</ipv4-location> | |||
| ...... | ...... | |||
| <root> | <root> | |||
| <ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> | <ietf-bfd-ip-sh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-sh"> | |||
| <ip-sh> | <ip-sh> | |||
| foo | foo | |||
| ...... | ...... | |||
| </ip-sh> | </ip-sh> | |||
| </ietf-bfd-ip-sh> | </ietf-bfd-ip-sh> | |||
| <ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"> | <ietf-bfd-ip-mh uri="urn:ietf:params:xml:ns:yang:ietf-bfd-ip-mh"> | |||
| <ip-mh> | <ip-mh> | |||
| skipping to change at page 40, line 9 ¶ | skipping to change at page 41, line 9 ¶ | |||
| </module> | </module> | |||
| </schema> | </schema> | |||
| </schema-mounts> | </schema-mounts> | |||
| and the " ietf-connectionless-oam " module might have: | and the " ietf-connectionless-oam " module might have: | |||
| <ietf-connectionless-oam | <ietf-connectionless-oam | |||
| uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> | uri="urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"> | |||
| ...... | ...... | |||
| <test-point-locations> | <test-point-locations> | |||
| <ipv4-location> 1.1.1.1</ipv4-location> | <ipv4-location> 192.0.2.1</ipv4-location> | |||
| ...... | ...... | |||
| <root> | <root> | |||
| <ietf-lspping uri="urn:ietf:params:xml:ns:yang:ietf-lspping"> | <ietf-lspping uri="urn:ietf:params:xml:ns:yang:ietf-lspping"> | |||
| <lsp-pings> | <lsp-pings> | |||
| foo | foo | |||
| ...... | ...... | |||
| </lsp-pings> | </lsp-pings> | |||
| </ietf-lspping> | </ietf-lspping> | |||
| </root> | </root> | |||
| </test-point-locations> | </test-point-locations> | |||
| skipping to change at page 42, line 40 ¶ | skipping to change at page 43, line 40 ¶ | |||
| 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-12 (work in | Topologies", draft-ietf-i2rs-yang-network-topo-12 (work in | |||
| progress), March 2017. | progress), March 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-01 (work in progress), February 2017. | methods-04 (work in progress), June 2017. | |||
| [I-D.ietf-lime-yang-oam-model] | [I-D.ietf-lime-yang-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-oam- | Maintenance(OAM) protocols", draft-ietf-lime-yang-oam- | |||
| model-10 (work in progress), April 2017. | model-10 (work in progress), April 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-04 (work in progress), March | ietf-netmod-schema-mount-05 (work in progress), May 2017. | |||
| 2017. | ||||
| [I-D.ietf-rtgwg-ni-model] | [I-D.ietf-rtgwg-ni-model] | |||
| Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | Berger, L., Hopps, C., Lindem, A., and D. Bogdanovic, | |||
| "YANG Network Instances", draft-ietf-rtgwg-ni-model-02 | "YANG Network Instances", draft-ietf-rtgwg-ni-model-02 | |||
| (work in progress), March 2017. | (work in progress), March 2017. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", BCP 14, RFC 2119, | ||||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <http://www.rfc-editor.org/info/rfc2119>. | ||||
| [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, | DOI 10.17487/RFC3688, January 2004, | |||
| <http://www.rfc-editor.org/info/rfc3688>. | <http://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", RFC 4443, | Protocol Version 6 (IPv6) Specification", RFC 4443, | |||
| DOI 10.17487/RFC4443, March 2006, | DOI 10.17487/RFC4443, March 2006, | |||
| <http://www.rfc-editor.org/info/rfc4443>. | <http://www.rfc-editor.org/info/rfc4443>. | |||
| skipping to change at page 44, line 5 ¶ | skipping to change at page 44, line 47 ¶ | |||
| <http://www.rfc-editor.org/info/rfc6536>. | <http://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, | |||
| <http://www.rfc-editor.org/info/rfc6991>. | <http://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, | |||
| <http://www.rfc-editor.org/info/rfc7223>. | <http://www.rfc-editor.org/info/rfc7223>. | |||
| [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", | ||||
| RFC 7224, DOI 10.17487/RFC7224, May 2014, | ||||
| <http://www.rfc-editor.org/info/rfc7224>. | ||||
| [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | |||
| September 1981. | September 1981. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [G.8013] "OAM functions and mechanisms for Ethernet based | [G.8013] "OAM functions and mechanisms for Ethernet based | |||
| networks", ITU-T Recommendation G.8013/Y.1731, 2013. | networks", ITU-T Recommendation G.8013/Y.1731, 2013. | |||
| [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 | |||
| End of changes. 204 change blocks. | ||||
| 1020 lines changed or deleted | 1063 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/ | ||||