| < draft-ietf-lime-yang-connectionless-oam-11.txt | draft-ietf-lime-yang-connectionless-oam-12.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 24, 2018 Q. Wu | Expires: April 26, 2018 Q. Wu | |||
| Huawei | Huawei | |||
| R. Rahman | R. Rahman | |||
| S. Raghavan | S. Raghavan | |||
| Cisco | Cisco | |||
| September 20, 2017 | October 23, 2017 | |||
| Generic YANG Data Model for Connectionless Operations, Administration, | Generic YANG Data Model for Operations, Administration, and | |||
| and Maintenance(OAM) protocols | Maintenance(OAM) protocols for Connectionless networks | |||
| draft-ietf-lime-yang-connectionless-oam-11 | draft-ietf-lime-yang-connectionless-oam-12 | |||
| 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 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| 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 https://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 24, 2018. | This Internet-Draft will expire on April 26, 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 | |||
| (https://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 | |||
| skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. OAM neighboring layers . . . . . . . . . . . . . . . . . 6 | 3.3. OAM neighboring test points . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | |||
| 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 | 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11 | 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5. Connectionless model applicability . . . . . . . . . . . . . 35 | 5. Connectionless model applicability . . . . . . . . . . . . . 39 | |||
| 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 36 | 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 36 | 5.1.1. Augment Method . . . . . . . . . . . . . . . . . . . 39 | |||
| 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 38 | 5.1.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 42 | |||
| 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 40 | 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 40 | 5.2.1. Augment Method . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 41 | 5.2.2. Schema Mount . . . . . . . . . . . . . . . . . . . . 45 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 43 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 45 | 8. Acknowlegements . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 45 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 49 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 46 | 9.2. Informative References . . . . . . . . . . . . . . . . . 50 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 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 26 ¶ | skipping to change at page 3, line 26 ¶ | |||
| An overview of OAM tools is presented at [RFC7276]. | An overview of OAM tools is presented at [RFC7276]. | |||
| Ping and Traceroute [RFC792], [RFC4443] are well-known fault | Ping and Traceroute [RFC792], [RFC4443] are well-known fault | |||
| verification and isolation tools, respectively, for IP networks. | verification and isolation tools, respectively, for IP networks. | |||
| Over the years, different technologies have developed similar tools | Over the years, different technologies have developed similar tools | |||
| for similar purposes. | for similar purposes. | |||
| The different OAM tools may support connection-oriented technologies | The different OAM tools may support connection-oriented technologies | |||
| or connectionless technologies. In connection-oriented technologies, | or connectionless technologies. In connection-oriented technologies, | |||
| a connection is established prior to the transmission of data. In | a connection is established prior to the transmission of data. After | |||
| connectionless technologies, data is typically sent between end | connection is established, no additional control information such as | |||
| points without prior arrangement [RFC7276]. Note that the | signaling or operations and maintenance information is required to | |||
| Connection-Oriented OAM YANG DATA model is defined in | transmit the data. In connectionless technologies, data is typically | |||
| sent between end points without prior arrangement, but control | ||||
| information is required to identify destination.[G.800][RFC7276]. | ||||
| Note that the Connection-Oriented OAM YANG DATA model is defined in | ||||
| [I-D.ietf-lime-yang-connection-oriented-oam-model]. | [I-D.ietf-lime-yang-connection-oriented-oam-model]. | |||
| 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. | |||
| skipping to change at page 5, line 6 ¶ | skipping to change at page 5, line 8 ¶ | |||
| 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 | |||
| 'grouping is chosen based on 'tp-location-type' leaf which when | 'grouping is chosen based on 'tp-location-type' leaf which when | |||
| chosen, leads to a container that includes a list of 'test-point- | chosen, leads to a container that includes a list of 'test-point- | |||
| locations' keyed by technology specific keys(e.g., | locations' keyed by technology specific keys (e.g., 'ipv4-location' | |||
| 'ipv4-location'leaf). Each test point location under 'test-point- | leaf ). Each test point location under 'test-point-locations | |||
| locations 'grouping includes a 'test-point-location-info' grouping. | 'grouping includes a 'test-point-location-info' grouping. The 'test- | |||
| The 'test-point-location-info' grouping includes 'tp-technology' | point-location-info' grouping includes 'tp-technology' grouping, 'tp- | |||
| grouping, 'tp-tools' grouping, and 'connectionless-oam-layers' | tools' grouping, and 'connectionless-oam-tps' grouping. The | |||
| grouping. The groupings of 'tp-address' and 'tp-address-ni' are kept | groupings of 'tp-address' and 'tp-address-ni' are kept out of 'test- | |||
| out of 'test-point-location-info' grouping to make it addressing | point-location-info' grouping to make it addressing agnostic and | |||
| agnostic and allow varied composition. Depending upon the choice of | allow varied composition. Depending upon the choice of the 'tp- | |||
| the 'tp-location-type' (determined by the 'tp-address-ni'), the | location-type' (determined by the 'tp-address-ni'), the containers | |||
| containers differ in its composition of 'test- point-locations' while | differ in its composition of 'test- point-locations' while the 'test- | |||
| the 'test-point-location-info', is a common aspect of every 'test- | point-location-info', is a common aspect of every 'test-point- | |||
| point-location'. The 'tp-address-ni' grouping is used to describe | locations'. The 'tp-address-ni' grouping is used to describe the | |||
| the corresponding network instance. The 'tp-technology'grouping | corresponding network instance. The 'tp-technology'grouping indicate | |||
| indicate OAM technology details. The 'tp-tools' grouping describe | OAM technology details. The 'tp-tools' grouping describe the OAM | |||
| the OAM tools supported. The 'connectionless-oam-layers' grouping is | tools supported. The 'connectionless-oam-tps' grouping is used to | |||
| used to describe the relationship of one test point with other test | describe the relationship of one test point with other test points. | |||
| points. The 'technology-level' in 'oam-neighboring-layers'indicate | The 'position' in 'oam-neighboring-tps' indicate relative position of | |||
| relative technology level of neighboring test point corresponding to | neighboring test point corresponding to the current test point. | |||
| the current test point. | ||||
| 3.1. TP Address | 3.1. TP Address | |||
| In connectionless OAM, the TP address is defined with the following | In connectionless OAM, the TP address is defined with the following | |||
| type: | type: | |||
| o MAC address [RFC6136] | o MAC address [RFC6136] | |||
| o IPv4 or IPv6 address | o IPv4 or IPv6 address | |||
| skipping to change at page 6, line 19 ¶ | skipping to change at page 6, line 25 ¶ | |||
| type' grouping is defined to indicate which kind of activation will | type' grouping is defined to indicate which kind of activation will | |||
| be used by the current session. | be used by the current session. | |||
| In connectionless OAM, the tools attribute is used to describe a | In connectionless OAM, the tools attribute is used to describe a | |||
| toolset for fault detection and isolation. And it can serve as a | toolset for fault detection and isolation. And it can serve as a | |||
| constraint condition when the base model be extended to specific OAM | constraint condition when the base model be extended to specific OAM | |||
| technology. For example, to fulfill the ICMP PING configuration, the | technology. For example, to fulfill the ICMP PING configuration, the | |||
| "../coam:continuity-check" leaf should be set to "true", and then the | "../coam:continuity-check" leaf should be set to "true", and then the | |||
| lime base model should be augmented with ICMP PING specific details. | lime base model should be augmented with ICMP PING specific details. | |||
| 3.3. OAM neighboring layers | 3.3. OAM neighboring test points | |||
| 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 have | |||
| its own OAM protocol [RFC7276] and is corresponding to specific | its own OAM protocol [RFC7276] corresponding to a 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 test points are referred to a list of neighboring test | |||
| in the upstream layer and/or downstream layer and the same layer that | points in the same layer that are related to the current test point. | |||
| are related to current test point. This allows users to easily | This allows users to easily navigate between related neighboring | |||
| navigate between related neighboring layer to efficiently | layers to efficiently troubleshoot a defect. In this model, the | |||
| troubleshoot a defect. In this model, we have kept technology-level | 'position' leaf defines the relative position of the neighboring test | |||
| default as 0, when a list of neighboring test points under 'oam- | point corresponding to the current test point in the same layer, and | |||
| neighboring-layers' list are located at the same layer as the current | is provided to allow correlation of faults at different locations. | |||
| test point. 'Technology-Level'leaf defines the relative technology | If there is one neighboring test point placed before the current test | |||
| level of neighboring test point corresponding to the current test | point, the 'position' leaf is set to -1. If there is one neighboring | |||
| point in multi-layer and multi-technology networks , and is provided | test point placed after the current test point, the 'position' leaf | |||
| to allow correlation of faults at different administrative and | is set to 1. If there is no neighboring test point placed before or | |||
| technology layers . If there is one neighboring test point at higher | after the current test point, the 'position' leaf is set to 0. | |||
| layer of the current test point, 'Technology-level'leaf is set to 1. | ||||
| If there is one neighboring test point at lower layer of the current | ||||
| test point, 'Technology-level'leaf is set to -1. | ||||
| list oam-neighboring-layers { | list oam-neighboring-tps { | |||
| key "index"; | key "index"; | |||
| leaf index { | leaf index { | |||
| type uint8 { | type uint16 { | |||
| range "0..128"; | range "0..65536"; | |||
| } | } | |||
| 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 same layer "; | |||
| and/or same layer "; | ||||
| } | } | |||
| leaf technology-level { | leaf position { | |||
| type int8 { | type int8 { | |||
| range "-1..1"; | range "-1..1"; | |||
| } | } | |||
| description | description | |||
| "The relative technology level | "The relative position | |||
| of neighboring test point | of neighboring test point | |||
| corresponding to the current | corresponding to the current | |||
| test point"; | test point"; | |||
| } | } | |||
| description | description | |||
| "List of related neighboring test points at upstream layer | "List of related neighboring test points in the same layer."; | |||
| and or downstream layer or at the same layer."; | ||||
| } | } | |||
| 3.4. Test Point Locations Information | 3.4. Test Point Locations Information | |||
| This is a generic grouping for Test Point Locations Information | This is a generic grouping for Test Point Locations Information | |||
| (i.e., test-point-location-info grouping). It Provide details of | (i.e., test-point-location-info grouping). It Provide details of | |||
| Test Point Location using 'tp-technology','tp-tool'grouping, 'OAM- | Test Point Location using 'tp-technology','tp-tools' grouping, 'oam- | |||
| neighboring Layers' grouping defined above. | neighboring-tps' grouping defined above. | |||
| 3.5. Test Point Locations | 3.5. Test Point Locations | |||
| This is a generic grouping for Test Point Locations. 'tp-location- | This is a generic grouping for Test Point Locations. 'tp-location- | |||
| type 'leaf is used to define locations types, for example 'ipv4- | type 'leaf is used to define locations types, for example 'ipv4- | |||
| location-type', 'ipv6-location-type', etc. Container is defined | location-type', 'ipv6-location-type', etc. Container is defined | |||
| under each location type containing list keyed to test point address, | under each location type containing list keyed to test point address, | |||
| Test Point Location Information defined in section above, and network | Test Point Location Information defined in section above, and network | |||
| instance name(e.g.,VRF instance name) if required. | instance name(e.g.,VRF instance name) if required. | |||
| 3.6. Path Discovery Data | 3.6. Path Discovery Data | |||
| This is a generic grouping for path discovery data model that can be | This is a generic grouping for path discovery data model that can be | |||
| retrieved by any data retrieval methods including RPC operations. | retrieved by any data retrieval methods including RPC operations. | |||
| Path discovery data output from methods, includes 'src-test-point' | Path discovery data output from methods, includes 'src-test-point' | |||
| container, 'dst- test-point' container, 'sequence-number'leaf, 'hop- | container, 'dst-test-point' container, 'sequence-number'leaf, 'hop- | |||
| cnt'leaf, session statistics of various kinds, path verification and | cnt'leaf, session statistics of various kinds, path verification and | |||
| path trace related information. Path discovery includes data to be | path trace related information. Path discovery includes data to be | |||
| retrieved on a 'per- hop' basis via a list of 'path-trace-info- | retrieved on a 'per- hop' basis via a list of 'path-trace-info- | |||
| list'list which includes information like 'timestamp'grouping, ' | list'list which includes information like 'timestamp'grouping, ' | |||
| ingress-intf-name ', ' egress-intf-name ' and 'app-meta-data'. The | ingress-intf-name ', ' egress-intf-name ' and 'app-meta-data'. The | |||
| path discovery data model is made generic enough to allow different | path discovery data model is made generic enough to allow different | |||
| methods of data retrieval. None of the fields are made mandatory for | methods of data retrieval. None of the fields are made mandatory for | |||
| that reason. Noted that the retrieval methods are defined in | that reason. Noted that the retrieval methods are defined in | |||
| [I-D.ietf-lime-yang-connectionless-oam-methods]. | [I-D.ietf-lime-yang-connectionless-oam-methods]. | |||
| skipping to change at page 8, line 38 ¶ | skipping to change at page 8, line 31 ¶ | |||
| continuity check data model is made generic enough to allow different | continuity check data model is made generic enough to allow different | |||
| methods of data retrieval. None of the fields are made mandatory for | methods of data retrieval. None of the fields are made mandatory for | |||
| that reason. Noted that the retrieval methods are defined in | that reason. Noted that the retrieval methods are defined in | |||
| [I-D.ietf-lime-yang-connectionless-oam-methods]. | [I-D.ietf-lime-yang-connectionless-oam-methods]. | |||
| 3.8. OAM data hierarchy | 3.8. OAM data hierarchy | |||
| The complete data hierarchy related to the OAM YANG model is | The complete data hierarchy related to the OAM YANG model is | |||
| presented below. | presented below. | |||
| module: ietf-connectionless-oam | module: ietf-connectionless-oam | |||
| +--ro cc-session-statistics-data {continuity-check}? | +--ro cc-session-statistics-data {continuity-check}? | |||
| +--ro cc-ipv4-sessions-statistics | +--ro cc-ipv4-sessions-statistics | |||
| | +--ro cc-session-statistics | | +--ro cc-session-statistics | |||
| | +--ro session-count? uint32 | | +--ro session-count? uint32 | |||
| | +--ro session-up-count? uint32 | | +--ro session-up-count? uint32 | |||
| | +--ro session-down-count? uint32 | | +--ro session-down-count? uint32 | |||
| | +--ro session-admin-down-count? uint32 | | +--ro session-admin-down-count? uint32 | |||
| +--ro cc-ipv6-sessions-statistics | +--ro cc-ipv6-sessions-statistics | |||
| +--ro cc-session-statistics | +--ro cc-session-statistics | |||
| +--ro session-count? uint32 | +--ro session-count? uint32 | |||
| +--ro session-up-count? uint32 | +--ro session-up-count? uint32 | |||
| +--ro session-down-count? uint32 | +--ro session-down-count? uint32 | |||
| +--ro session-admin-down-count? uint32 | +--ro session-admin-down-count? uint32 | |||
| augment /nd:networks/nd:network/nd:node: | augment /nd:networks/nd:network/nd:node: | |||
| +--rw tp-location-type? identityref | ||||
| +--rw tp-location-type? identityref | ||||
| +--rw location-type | ||||
| +--rw ipv4-location-type | +--rw ipv4-location-type | |||
| | +--rw test-point-ipv4-location-list | | +--rw test-point-ipv4-location-list | |||
| | +--rw test-point-locations* [ipv4-location ni] | | +--rw test-point-locations* [ipv4-location ni] | |||
| | +--rw ipv4-location inet:ipv4-address | | +--rw ipv4-location inet:ipv4-address | |||
| | +--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-tps* [index] | |||
| | +--rw index uint8 | | +--rw index uint16 | |||
| | +--rw technology-level? int8 | | +--rw position? 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 | |||
| +--rw ipv6-location-type | +--rw ipv6-location-type | |||
| | +--rw test-point-ipv6-location-list | | +--rw test-point-ipv6-location-list | |||
| | +--rw test-point-locations* [ipv6-location ni] | | +--rw test-point-locations* [ipv6-location ni] | |||
| | +--rw ipv6-location inet:ipv6-address | | +--rw ipv6-location inet:ipv6-address | |||
| | +--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-tps* [index] | |||
| | +--rw index uint8 | | +--rw index uint16 | |||
| | +--rw technology-level? int8 | | +--rw position? 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 | |||
| +--rw mac-location-type | +--rw mac-location-type | |||
| | +--rw test-point-mac-address-location-list | | +--rw test-point-mac-address-location-list | |||
| | +--rw test-point-locations* [mac-address-location] | | +--rw test-point-locations* [mac-address-location] | |||
| | +--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-tps* [index] | |||
| | +--rw index uint8 | | +--rw index uint16 | |||
| | +--rw technology-level? int8 | | +--rw position? 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 | |||
| +--rw group-as-number-location-type | +--rw group-as-number-location-type | |||
| | +--rw test-point-as-number-location-list | | +--rw test-point-as-number-location-list | |||
| | +--rw test-point-locations* [as-number-location] | | +--rw test-point-locations* [as-number-location] | |||
| | +--rw as-number-location inet:as-number | | +--rw as-number-location inet:as-number | |||
| | +--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-tps* [index] | |||
| | +--rw index uint8 | | +--rw index uint16 | |||
| | +--rw technology-level? int8 | | +--rw position? 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 | |||
| +--rw group-system-id-location-type | +--rw group-system-id-location-type | |||
| +--rw test-point-system-info-location-list | +--rw test-point-system-info-location-list | |||
| +--rw test-point-locations* [system-id-location] | +--rw test-point-locations* [system-id-location] | |||
| +--rw system-id-location inet:uri | +--rw system-id-location inet:uri | |||
| +--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-tps* [index] | |||
| +--rw index uint8 | +--rw index uint16 | |||
| +--rw technology-level? int8 | +--rw position? 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-09-06.yang" | <CODE BEGINS> file "ietf-connectionless-oam@2017-09-06.yang" | |||
| module ietf-connectionless-oam { | module ietf-connectionless-oam { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; | namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam"; | |||
| prefix coam; | prefix cl-oam; | |||
| import ietf-yang-schema-mount { | import ietf-yang-schema-mount { | |||
| prefix yangmnt; | prefix yangmnt; | |||
| } | } | |||
| import ietf-network { | import ietf-network { | |||
| prefix nd; | prefix nd; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| skipping to change at page 13, line 21 ¶ | skipping to change at page 13, line 15 ¶ | |||
| } | } | |||
| feature path-discovery { | feature path-discovery { | |||
| description | description | |||
| "This feature indicates that the server supports | "This feature indicates that the server supports | |||
| executing path discovery OAM command and | executing path discovery OAM command and | |||
| returning a response. Servers that do not advertise | returning a response. Servers that do not advertise | |||
| this feature will not support executing | this feature will not support executing | |||
| path discovery command or rpc operation model for | path discovery command or rpc operation model for | |||
| path discovery command."; | path discovery command."; | |||
| } | } | |||
| feature ptp-long-format { | ||||
| description | ||||
| "This feature indicates that timestamp is ptp long format."; | ||||
| } | ||||
| feature ntp-short-format { | ||||
| description | ||||
| "This feature indicates that timestamp is ntp short format."; | ||||
| } | ||||
| feature icmp-timestamp { | ||||
| description | ||||
| "This feature indicates that timestamp is icmp timestamp."; | ||||
| } | ||||
| typedef router-id { | typedef router-id { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| description | description | |||
| "A 32-bit number in the dotted quad format assigned to each | "A 32-bit number in the dotted quad format assigned to each | |||
| router. This number uniquely identifies the router within an | router. This number uniquely identifies the router within an | |||
| Autonomous System."; | Autonomous System."; | |||
| } | } | |||
| typedef routing-instance-ref { | typedef routing-instance-ref { | |||
| type leafref { | type leafref { | |||
| path "/ni:network-instances/ni:network-instance/ni:name"; | path "/ni:network-instances/ni:network-instance/ni:name"; | |||
| skipping to change at page 13, line 49 ¶ | skipping to change at page 14, line 7 ¶ | |||
| attribute types which are ip-prefix, | attribute types which are ip-prefix, | |||
| bgp, tunnel, pwe3, vpls, etc."; | bgp, tunnel, pwe3, vpls, etc."; | |||
| } | } | |||
| typedef address-attribute-type { | typedef address-attribute-type { | |||
| type identityref { | type identityref { | |||
| base address-attribute-types; | base address-attribute-types; | |||
| } | } | |||
| description | description | |||
| "Target address attribute type."; | "Target address attribute type."; | |||
| } | } | |||
| identity time-resolution { | identity time-interval-type { | |||
| description | description | |||
| "Time interval resolution"; | "Time interval type"; | |||
| } | } | |||
| identity hours { | identity hours { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Hours"; | "Time unit in Hours"; | |||
| } | } | |||
| identity minutes { | identity minutes { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Minutes"; | "Time unit in Minutes"; | |||
| } | } | |||
| identity seconds { | identity seconds { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Seconds"; | "Time unit in Seconds"; | |||
| } | } | |||
| identity milliseconds { | identity milliseconds { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Milliseconds"; | "Time unit in Milliseconds"; | |||
| } | } | |||
| identity microseconds { | identity microseconds { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Microseconds"; | "Time unit in Microseconds"; | |||
| } | } | |||
| identity nanoseconds { | identity nanoseconds { | |||
| base time-resolution; | base time-interval-type; | |||
| description | description | |||
| "Time resolution in Nanoseconds"; | "Time unit in Nanoseconds"; | |||
| } | } | |||
| identity timestamp-type { | ||||
| description | ||||
| "Base identity for Timestamp Type."; | ||||
| } | ||||
| identity truncated-ptp { | ||||
| base timestamp-type; | ||||
| description | ||||
| "Identity for 64bit short format PTP timestamp."; | ||||
| } | ||||
| identity truncated-ntp { | ||||
| base timestamp-type; | ||||
| description | ||||
| "Identity for 32bit short format NTP timestamp."; | ||||
| } | ||||
| identity ntp64 { | ||||
| base timestamp-type; | ||||
| description | ||||
| "Identity for 64bit NTP timestamp."; | ||||
| } | ||||
| identity icmp { | ||||
| base timestamp-type; | ||||
| description | ||||
| "Identity for 32bit ICMP timestamp."; | ||||
| } | ||||
| grouping cc-session-statistics { | grouping cc-session-statistics { | |||
| description | description | |||
| "Grouping for session statistics."; | "Grouping for session statistics."; | |||
| container cc-session-statistics { | container cc-session-statistics { | |||
| description | description | |||
| "cc session counters"; | "cc session counters"; | |||
| leaf session-count { | leaf session-count { | |||
| type uint32; | type uint32; | |||
| default "0"; | default "0"; | |||
| description | description | |||
| skipping to change at page 15, line 33 ¶ | skipping to change at page 16, line 19 ¶ | |||
| down session count is sent."; | down session count is sent."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-packet-statistics { | grouping session-packet-statistics { | |||
| description | description | |||
| "Grouping for per session packet statistics"; | "Grouping for per session packet statistics"; | |||
| container session-packet-statistics { | container session-packet-statistics { | |||
| description | description | |||
| "Per session packet statistics."; | "Per session packet statistics."; | |||
| leaf rx-packet-count { | leaf rx-packet-count { | |||
| type uint32; | type uint32{ | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total number of received OAM packet count. | "Total number of received OAM packet count. | |||
| A value of zero indicates that no received | If the value is 4294967295, | |||
| OAM packet count number is sent."; | it indicates the packet count is overrun."; | |||
| } | } | |||
| leaf tx-packet-count { | leaf tx-packet-count { | |||
| type uint32; | type uint32{ | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total number of transmitted OAM packet count. | "Total number of transmitted OAM packet count. | |||
| A value of zero indicates that no transmitted | If the value is 4294967295, | |||
| OAM packet count number is sent."; | it indicates the packet count is overrun."; | |||
| } | } | |||
| leaf rx-bad-packet { | leaf rx-bad-packet { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total number of received bad OAM packet. | "Total number of received bad OAM packet. | |||
| A value of zero indicates that no received bad | If the value is 4294967295, | |||
| OAM packet count number is sent."; | it indicates the bad packet count is overrun."; | |||
| } | } | |||
| leaf tx-packet-failed { | leaf tx-packet-failed { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total number of failed sending OAM packet. | "Total number of failed sending OAM packet. | |||
| A value of zero indicates that no failed | If the value is 4294967295, it indicates | |||
| sending OAM packet count number is sent."; | failed packet count is overrun."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping cc-per-session-statistics { | grouping cc-per-session-statistics { | |||
| description | description | |||
| "Grouping for per session statistics"; | "Grouping for per session statistics"; | |||
| container cc-per-session-statistics { | container cc-per-session-statistics { | |||
| description | description | |||
| "per session statistics."; | "per session statistics."; | |||
| leaf create-time { | leaf create-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date when session is created."; | "Time and date when session is created."; | |||
| } | } | |||
| leaf last-down-time { | leaf last-down-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date last time session is down."; | "Time and date last time session is down."; | |||
| } | } | |||
| leaf last-up-time { | leaf last-up-time { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time and date last time session is up."; | "Time and date last time session is up."; | |||
| } | } | |||
| leaf down-count { | leaf down-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total Continuity Check sessions down count. | "Total Continuity Check sessions down count. | |||
| A value of zero indicates that no | If the value is 4294967295, it indicates down | |||
| down count per session is sent."; | count is overrun."; | |||
| } | } | |||
| leaf admin-down-count { | leaf admin-down-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total Continuity Check sessions admin down count. | "Total Continuity Check sessions admin down count. | |||
| A value of zero indicates that no | ||||
| admin down count per session is sent."; | If the value is 4294967295, it indicates admin | |||
| down count is overrun."; | ||||
| } | } | |||
| uses session-packet-statistics; | uses session-packet-statistics; | |||
| } | } | |||
| } | } | |||
| grouping session-error-statistics { | grouping session-error-statistics { | |||
| description | description | |||
| "Grouping for per session error statistics"; | "Grouping for per session error statistics"; | |||
| container session-error-statistics { | container session-error-statistics { | |||
| description | description | |||
| "Per session error statistics."; | "Per session error statistics."; | |||
| leaf packet-drops-count { | leaf packet-loss-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total received packet drops count. | "Total received packet drops count. | |||
| A value of zero indicates that no | If the value is 4294967295, it indicates | |||
| packet drops count is sent."; | packet drops count is overrun."; | |||
| } | } | |||
| leaf loss-ratio{ | ||||
| type uint8{ | ||||
| range 0..100; | ||||
| } | ||||
| description | ||||
| "Loss ratio of the packets. Express as percentage | ||||
| of packets lost with respect to packets sent."; | ||||
| } | ||||
| leaf packet-reorder-count { | leaf packet-reorder-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| default "0"; | default "0"; | |||
| description | description | |||
| "Total received packet reordered count. | "Total received packet reordered count. | |||
| A value of zero indicates that no packet | If the value is 4294967295, it indicates | |||
| reorder count is sent."; | packet reorder count is overrun."; | |||
| } | } | |||
| leaf packets-out-of-seq-count { | leaf packets-out-of-seq-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| description | description | |||
| "Total received out of sequence count. | "Total received out of sequence count. | |||
| A value of zero indicates that no packet | If the value is 4294967295, it indicates | |||
| out of sequence count is sent."; | ||||
| out of sequence count is overrun."; | ||||
| } | } | |||
| leaf packets-dup-count { | leaf packets-dup-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| description | description | |||
| "Total received packet duplicates count. | "Total received packet duplicates count. | |||
| A value of zero indicates that no packet | If the value is 4294967295, it indicates | |||
| duplicates count is sent."; | packet duplicates count is overrun."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-delay-statistics { | grouping session-delay-statistics { | |||
| description | description | |||
| "Grouping for per session delay statistics"; | "Grouping for per session delay statistics"; | |||
| container session-delay-statistics { | container session-delay-statistics { | |||
| description | description | |||
| "Session delay summarised information."; | ||||
| leaf time-resolution-value { | "Session delay summarised information.By default, | |||
| one way measurement protocol (e.g., OWAMP)is used | ||||
| to measure delay. When two way measurement protocol | ||||
| (e.g., TWAMP) is used instead, it can be indicated | ||||
| using and protocol-id defined in RPC operation of | ||||
| draft-ietf-lime-yang-connectionless-oam-methods,i.e., | ||||
| set protocol-id as OWAMP. Note that only one measurement | ||||
| protocol for delay is specified for interoperability reason."; | ||||
| leaf time-interval-value { | ||||
| type identityref { | type identityref { | |||
| base time-resolution; | base time-interval-type; | |||
| } | } | |||
| default "milliseconds"; | default "milliseconds"; | |||
| description | description | |||
| "Time units among choice of s,ms,ns etc."; | "Time units among choice of s,ms,ns etc."; | |||
| } | } | |||
| leaf min-delay-value { | leaf min-delay-value { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Minimum delay value observed."; | "Minimum delay value observed."; | |||
| } | } | |||
| skipping to change at page 18, line 38 ¶ | skipping to change at page 20, line 13 ¶ | |||
| description | description | |||
| "Average delay value observed."; | "Average delay value observed."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-jitter-statistics { | grouping session-jitter-statistics { | |||
| description | description | |||
| "Grouping for per session jitter statistics"; | "Grouping for per session jitter statistics"; | |||
| container session-jitter-statistics { | container session-jitter-statistics { | |||
| description | description | |||
| "Session jitter summarised information."; | "Session jitter summarised information. By default, | |||
| leaf time-resolution-value { | jitter is measured using IP Packet Delay Variation | |||
| (IPDV) as defined in RFC3393. When the other measurement | ||||
| method is used instead(e.g.,Packet Delay Variation used in | ||||
| Y.1540, it can be indicated using protocol-id-meta-data | ||||
| defined in RPC operation of | ||||
| draft-ietf-lime-yang-connectionless-oam-methods. Note that | ||||
| only one measurement method for jitter is specified | ||||
| for interoperability reason."; | ||||
| leaf interval-value { | ||||
| type identityref { | type identityref { | |||
| base time-resolution; | base time-interval-type; | |||
| } | } | |||
| default "milliseconds"; | default "milliseconds"; | |||
| description | description | |||
| "Time units among choice of s,ms,ns etc."; | "Time units among choice of s,ms,ns etc."; | |||
| } | } | |||
| leaf min-jitter-value { | leaf min-jitter-value { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Minimum jitter value observed."; | "Minimum jitter value observed."; | |||
| } | } | |||
| skipping to change at page 19, line 22 ¶ | skipping to change at page 21, line 7 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-path-verification-statistics { | grouping session-path-verification-statistics { | |||
| description | description | |||
| "Grouping for per session path verification statistics"; | "Grouping for per session path verification statistics"; | |||
| container session-path-verification-statistics { | container session-path-verification-statistics { | |||
| description | description | |||
| "OAM per session path verification statistics."; | "OAM per session path verification statistics."; | |||
| leaf verified-count { | leaf verified-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| description | description | |||
| "Total number of OAM packets that | "Total number of OAM packets that | |||
| went through a path as intended. | went through a path as intended. | |||
| A value of zero indicates that no | A value of 4294967295 indicates that | |||
| verified count is sent."; | verified count is overrun."; | |||
| } | } | |||
| leaf failed-count { | leaf failed-count { | |||
| type uint32; | type uint32 { | |||
| range "0..4294967295"; | ||||
| } | ||||
| description | description | |||
| "Total number of OAM packets that | "Total number of OAM packets that | |||
| went through an unintended path. | went through an unintended path. | |||
| A value of zero indicates that no | A value of 4294967295 indicates that | |||
| failed count is sent."; | ||||
| failed count is overrun."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping session-type { | grouping session-type { | |||
| description | description | |||
| "This object indicates which kind | "This object indicates which kind | |||
| of activation will be used by the current | of activation will be used by the current | |||
| session."; | session."; | |||
| leaf session-type { | leaf session-type { | |||
| type enumeration { | type enumeration { | |||
| skipping to change at page 21, line 14 ¶ | skipping to change at page 23, line 5 ¶ | |||
| grouping tp-address { | grouping tp-address { | |||
| leaf tp-location-type { | leaf tp-location-type { | |||
| type identityref { | type identityref { | |||
| base tp-address-technology-type; | base tp-address-technology-type; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Test point address type."; | "Test point address type."; | |||
| } | } | |||
| container mac-address { | container mac-address { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:mac-address-type')" { | |||
| description | description | |||
| "MAC address type"; | "MAC address type"; | |||
| } | } | |||
| leaf mac-address { | leaf mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "MAC Address"; | "MAC Address"; | |||
| } | } | |||
| description | description | |||
| "MAC Address based MP Addressing."; | "MAC Address based MP Addressing."; | |||
| } | } | |||
| container ipv4-address { | container ipv4-address { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:ipv4-address-type')" { | |||
| description | description | |||
| "IPv4 address type"; | "IPv4 address type"; | |||
| } | } | |||
| leaf ipv4-address { | leaf ipv4-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv4 Address"; | "IPv4 Address"; | |||
| } | } | |||
| description | description | |||
| "IP Address based MP Addressing."; | "IP Address based MP Addressing."; | |||
| } | } | |||
| container ipv6-address { | container ipv6-address { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:ipv6-address-type')" { | |||
| description | description | |||
| "IPv6 address type"; | "IPv6 address type"; | |||
| } | } | |||
| leaf ipv6-address { | leaf ipv6-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv6 Address"; | "IPv6 Address"; | |||
| } | } | |||
| description | description | |||
| "ipv6 Address based MP Addressing."; | "ipv6 Address based MP Addressing."; | |||
| } | } | |||
| container tp-attribute { | container tp-attribute { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:tp-attribute-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:tp-attribute-type')" { | |||
| description | description | |||
| "Test point attribute type"; | "Test point attribute type"; | |||
| } | } | |||
| leaf tp-attribute-type { | leaf tp-attribute-type { | |||
| type address-attribute-type; | type address-attribute-type; | |||
| description | description | |||
| "Test point type."; | "Test point type."; | |||
| } | } | |||
| choice tp-attribute-value { | choice tp-attribute-value { | |||
| description | description | |||
| skipping to change at page 24, line 33 ¶ | skipping to change at page 26, line 26 ¶ | |||
| Switched (MPLS) Data Plane Failures"; | Switched (MPLS) Data Plane Failures"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Test Point Attribute Container"; | "Test Point Attribute Container"; | |||
| } | } | |||
| container system-info { | container system-info { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:system-id-address-type')" { | |||
| description | description | |||
| "System id address type"; | "System id address type"; | |||
| } | } | |||
| leaf system-id { | leaf system-id { | |||
| type rt:router-id; | type rt:router-id; | |||
| description | description | |||
| "System ID assigned to this node."; | "System ID assigned to this node."; | |||
| } | } | |||
| description | description | |||
| "system ID container."; | "system ID container."; | |||
| } | } | |||
| description | description | |||
| skipping to change at page 25, line 9 ¶ | skipping to change at page 27, line 4 ¶ | |||
| grouping tp-address-ni { | grouping tp-address-ni { | |||
| description | description | |||
| "Test point address with VRF."; | "Test point address with VRF."; | |||
| leaf ni { | leaf ni { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The ni is used to describe virtual resource partitioning | "The ni is used to describe virtual resource partitioning | |||
| that may be present on a network device.Example of common | that may be present on a network device.Example of common | |||
| industry terms for virtual resource partitioning is VRF | industry terms for virtual resource partitioning is VRF | |||
| instance."; | instance."; | |||
| } | } | |||
| uses tp-address; | uses tp-address; | |||
| } | } | |||
| grouping connectionless-oam-layers { | grouping connectionless-oam-tps { | |||
| list oam-neighboring-layers { | list oam-neighboring-tps { | |||
| key "index"; | key "index"; | |||
| leaf index { | leaf index { | |||
| type uint8{ | type uint16{ | |||
| range "0..128";} | range "0..65535"; | |||
| } | ||||
| 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 same layer"; | |||
| and/or same layer"; | ||||
| } | } | |||
| leaf technology-level { | leaf position { | |||
| type int8 { | type int8 { | |||
| range "-1..1"; | range "-1..1"; | |||
| } | } | |||
| default "0"; | default "0"; | |||
| description | description | |||
| "The relative technology level | "The relative position | |||
| of neighboring test point | of neighboring test point | |||
| corresponding to the current | corresponding to the current | |||
| test point.Level 0 indicates default level, | test point.Level 0 indicates no neighboring | |||
| -1 means downstream layer related to current layer and +1 | test points placed before or after the current | |||
| means upstream layer related to current layer. | test point in the same layer.-1 means there is | |||
| In relationship 0 means same layer."; | ||||
| a neighboring test point placed before the current | ||||
| test point in the same layer and +1 means there is | ||||
| a neighboring test point placed after the current | ||||
| test point in same layer."; | ||||
| } | } | |||
| choice tp-location { | choice tp-location { | |||
| case mac-address { | case mac-address { | |||
| leaf mac-address-location { | leaf mac-address-location { | |||
| 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."; | |||
| skipping to change at page 26, line 33 ¶ | skipping to change at page 28, line 31 ¶ | |||
| } | } | |||
| description | description | |||
| "AS number for point to multipoint OAM"; | "AS number for point to multipoint OAM"; | |||
| } | } | |||
| case system-id { | case system-id { | |||
| leaf system-id-location { | leaf system-id-location { | |||
| type router-id; | type router-id; | |||
| description | description | |||
| "System id location"; | "System id location"; | |||
| } | } | |||
| description | description | |||
| "System ID"; | "System ID"; | |||
| } | } | |||
| description | description | |||
| "TP location."; | "TP location."; | |||
| } | } | |||
| description | description | |||
| "List of neighboring test points in the upstream layer and/or | "List of neighboring test points in the same layer that are related to current test | |||
| downstream layer or same layer that are related to current test | point. If the neighboring test-point is placed after the current test point, the | |||
| point. If neighboring test-point in the upstream layer exist, the | position is specified as +1. If neighboring test-point | |||
| technology-level is specified as +1. If neighboring test-point | is placed before the current test point, the position is specified | |||
| in the downstream layer exist, the technology-level is specified | as -1, if no neighboring test points placed before or after the current | |||
| as -1, if neighboring test-points are located at the same layer | test point in the same layer, the position is specified as 0."; | |||
| as the current test-point, the technology-level is specified as | ||||
| 0."; | ||||
| } | } | |||
| description | description | |||
| "Connectionless related OAM neighboring layer"; | "Connectionless OAM related neighboring test points list."; | |||
| } | } | |||
| grouping tp-technology { | grouping tp-technology { | |||
| choice technology { | choice technology { | |||
| default "technology-null"; | default "technology-null"; | |||
| case technology-null { | case technology-null { | |||
| description | description | |||
| "This is a placeholder when no technology is needed."; | "This is a placeholder when no technology is needed."; | |||
| leaf tech-null { | leaf tech-null { | |||
| type empty; | type empty; | |||
| description | description | |||
| "There is no technology define"; | "There is no technology to be defined."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Technology choice."; | "Technology choice."; | |||
| } | } | |||
| description | description | |||
| "OAM Technology"; | "OAM Technology"; | |||
| } | } | |||
| grouping tp-tools { | grouping tp-tools { | |||
| description | description | |||
| skipping to change at page 27, line 32 ¶ | skipping to change at page 29, line 30 ¶ | |||
| description | description | |||
| "Test Point OAM Toolset."; | "Test Point OAM Toolset."; | |||
| container tp-tools { | container tp-tools { | |||
| leaf continuity-check { | leaf continuity-check { | |||
| type boolean; | type boolean; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A flag indicating whether or not the | "A flag indicating whether or not the | |||
| continuity check function is supported."; | continuity check function is supported."; | |||
| reference | reference | |||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | |||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | RFC 4443: Internet Control Message Protocol (ICMPv6) | |||
| for the Internet Protocol Version 6 (IPv6) Specification. | for the Internet Protocol Version 6 (IPv6) Specification. | |||
| RFC 5880: Bidirectional Forwarding Detection. | RFC 5880: Bidirectional Forwarding Detection. | |||
| RFC 5881: BFD for IPv4 and IPv6. | RFC 5881: BFD for IPv4 and IPv6. | |||
| RFC 5883: BFD for Multihop Paths. | RFC 5883: BFD for Multihop Paths. | |||
| RFC 5884: BFD for MPLS Label Switched Paths. | RFC 5884: BFD for MPLS Label Switched Paths. | |||
| RFC 5885: BFD for PW VCCV. | RFC 5885: BFD for PW VCCV. | |||
| RFC 6450: Multicast Ping Protocol."; | RFC 6450: Multicast Ping Protocol. | |||
| RFC 8029: Detecting Multiprotocol Label Switched | ||||
| (MPLS) Data-Plane Failures."; | ||||
| } | } | |||
| leaf path-discovery { | leaf path-discovery { | |||
| type boolean; | type boolean; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A flag indicating whether or not the | "A flag indicating whether or not the | |||
| path discovery function is supported."; | path discovery function is supported."; | |||
| reference | reference | |||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | |||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | RFC 4443: Internet Control Message Protocol (ICMPv6) | |||
| skipping to change at page 28, line 4 ¶ | skipping to change at page 30, line 5 ¶ | |||
| leaf path-discovery { | leaf path-discovery { | |||
| type boolean; | type boolean; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A flag indicating whether or not the | "A flag indicating whether or not the | |||
| path discovery function is supported."; | path discovery function is supported."; | |||
| reference | reference | |||
| "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | "RFC 792: INTERNET CONTROL MESSAGE PROTOCOL. | |||
| RFC 4443: Internet Control Message Protocol (ICMPv6) | RFC 4443: Internet Control Message Protocol (ICMPv6) | |||
| for the Internet Protocol Version 6 (IPv6) Specification. | for the Internet Protocol Version 6 (IPv6) Specification. | |||
| RFC 4884: Extended ICMP to Support Multi-part Message. | RFC 4884: Extended ICMP to Support Multi-part Message. | |||
| RFC 5837:Extending ICMP for Interface | RFC 5837:Extending ICMP for Interface. | |||
| and Next-Hop Identification. | and Next-Hop Identification. | |||
| RFC 4379: LSP-PING."; | RFC 8029: Detecting Multiprotocol Label Switched (MPLS) | |||
| Data-Plane Failures."; | ||||
| } | } | |||
| description | description | |||
| "Container for test point OAM tools set."; | "Container for test point OAM tools set."; | |||
| } | } | |||
| } | } | |||
| grouping test-point-location-info { | grouping test-point-location-info { | |||
| uses tp-technology; | uses tp-technology; | |||
| uses tp-tools; | uses tp-tools; | |||
| anydata root { | anydata root { | |||
| yangmnt:mount-point "root"; | yangmnt:mount-point "root"; | |||
| description | description | |||
| "Root for models supported per | "Root for models supported per | |||
| test point"; | test point"; | |||
| } | } | |||
| uses connectionless-oam-layers; | uses connectionless-oam-tps; | |||
| description | description | |||
| "Test point Location"; | "Test point Location"; | |||
| } | } | |||
| grouping test-point-locations { | grouping test-point-locations { | |||
| description | description | |||
| "Group of test point locations."; | "Group of test point locations."; | |||
| leaf tp-location-type { | leaf tp-location-type { | |||
| type identityref { | type identityref { | |||
| base tp-address-technology-type; | base tp-address-technology-type; | |||
| } | } | |||
| description | description | |||
| "Test point location type."; | "Test point location type."; | |||
| } | } | |||
| container ipv4-location-type { | container ipv4-location-type { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv4-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:ipv4-address-type')" { | |||
| description | description | |||
| "When test point location type is equal to ipv4 address."; | "When test point location type is equal to ipv4 address."; | |||
| } | } | |||
| container test-point-ipv4-location-list { | container test-point-ipv4-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "ipv4-location ni"; | key "ipv4-location ni"; | |||
| leaf ipv4-location { | leaf ipv4-location { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "IPv4 Address."; | "IPv4 Address."; | |||
| skipping to change at page 29, line 19 ¶ | skipping to change at page 31, line 22 ¶ | |||
| "List of test point locations."; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container | "Serves as top-level container | |||
| for test point location list."; | for test point location list."; | |||
| } | } | |||
| description | description | |||
| "ipv4 location type container."; | "ipv4 location type container."; | |||
| } | } | |||
| container ipv6-location-type { | container ipv6-location-type { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:ipv6-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:ipv6-address-type')" { | |||
| description | description | |||
| "when test point location is equal to ipv6 address"; | "when test point location is equal to ipv6 address"; | |||
| } | } | |||
| container test-point-ipv6-location-list { | container test-point-ipv6-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "ipv6-location ni"; | key "ipv6-location ni"; | |||
| leaf ipv6-location { | leaf ipv6-location { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "IPv6 Address."; | "IPv6 Address."; | |||
| } | } | |||
| leaf ni { | leaf ni { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The ni is used to describe the | "The ni is used to describe the | |||
| corresponding network instance"; | corresponding network instance"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| description | description | |||
| "List of test point locations."; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container | "Serves as top-level container | |||
| for test point location list."; | for test point location list."; | |||
| } | } | |||
| description | description | |||
| "ipv6 location type container."; | "ipv6 location type container."; | |||
| } | } | |||
| container mac-location-type { | container mac-location-type { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:mac-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:mac-address-type')" { | |||
| description | description | |||
| "when test point location type is equal to mac address."; | "when test point location type is equal to mac address."; | |||
| } | } | |||
| container test-point-mac-address-location-list { | container test-point-mac-address-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "mac-address-location"; | key "mac-address-location"; | |||
| leaf mac-address-location { | leaf mac-address-location { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "MAC Address"; | "MAC Address"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| description | description | |||
| "List of test point locations."; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container | "Serves as top-level container | |||
| for test point location list."; | for test point location list."; | |||
| } | } | |||
| description | description | |||
| "mac address location type container."; | "mac address location type container."; | |||
| } | } | |||
| container group-as-number-location-type { | container group-as-number-location-type { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:as-number-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:as-number-address-type')" { | |||
| description | description | |||
| "when test point location type is equal to as-number."; | "when test point location type is equal to as-number."; | |||
| } | } | |||
| container test-point-as-number-location-list { | container test-point-as-number-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "as-number-location"; | key "as-number-location"; | |||
| leaf as-number-location { | leaf as-number-location { | |||
| type inet:as-number; | type inet:as-number; | |||
| description | description | |||
| "AS number for point to multi point OAM."; | "AS number for point to multi point OAM."; | |||
| } | } | |||
| leaf ni { | leaf ni { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| skipping to change at page 31, line 6 ¶ | skipping to change at page 33, line 11 ¶ | |||
| description | description | |||
| "List of test point locations."; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container | "Serves as top-level container | |||
| for test point location list."; | for test point location list."; | |||
| } | } | |||
| description | description | |||
| "as number location type container."; | "as number location type container."; | |||
| } | } | |||
| container group-system-id-location-type { | container group-system-id-location-type { | |||
| when "derived-from-or-self(../tp-location-type, 'coam:system-id-address-type')" { | when "derived-from-or-self(../tp-location-type, 'cl-oam:system-id-address-type')" { | |||
| description | description | |||
| "when test point location type is equal to system-info."; | "when test point location type is equal to system-info."; | |||
| } | } | |||
| container test-point-system-info-location-list { | container test-point-system-info-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "system-id-location"; | key "system-id-location"; | |||
| leaf system-id-location { | leaf system-id-location { | |||
| type inet:uri; | type inet:uri; | |||
| description | description | |||
| "System Id."; | "System Id."; | |||
| } | } | |||
| leaf ni { | leaf ni { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| skipping to change at page 31, line 29 ¶ | skipping to change at page 33, line 34 ¶ | |||
| leaf ni { | leaf ni { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The ni is used to describe the | "The ni is used to describe the | |||
| corresponding network instance"; | corresponding network instance"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| description | description | |||
| "List of test point locations."; | "List of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for | "Serves as top-level container for | |||
| test point location list."; | test point location list."; | |||
| } | } | |||
| description | description | |||
| "system ID location type container."; | "system ID location type container."; | |||
| } | } | |||
| } | } | |||
| augment "/nd:networks/nd:network/nd:node" { | augment "/nd:networks/nd:network/nd:node" { | |||
| description | description | |||
| "Augment test points of connectionless oam."; | "Augment test points of connectionless oam."; | |||
| uses test-point-locations; | uses test-point-locations; | |||
| } | } | |||
| grouping uint64-timestamp { | grouping timestamp { | |||
| description | description | |||
| "Grouping for timestamp."; | "Grouping for timestamp."; | |||
| leaf timestamp-sec { | leaf timestamp-type { | |||
| type identityref { | ||||
| base timestamp-type; | ||||
| } | ||||
| description | ||||
| "Type of Timestamp, such as Truncated PTP, NTP."; | ||||
| } | ||||
| container timestamp-64bit { | ||||
| when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ptp')"+ | ||||
| "or derived-from-or-self(../type,'cl-oam:ntp64')" { | ||||
| description | ||||
| "Only applies when Truncated NTP or 64bit NTP Timestamp."; | ||||
| } | ||||
| leaf timestamp-sec { | ||||
| type uint32; | type uint32; | |||
| description | description | |||
| "Absolute timestamp in seconds as per IEEE1588v2 | "Absolute timestamp in seconds as per IEEE1588v2 | |||
| or seconds part in 64-bit NTP timestamp."; | 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."; | ||||
| } | ||||
| description | ||||
| "Container for 64bit timestamp."; | ||||
| } | } | |||
| leaf timestamp-nanosec { | container timestamp-80bit { | |||
| when "derived-from-or-self(../timestamp-type, 'cl-oam:ptp80')"{ | ||||
| description | ||||
| "Only applies when 80bit PTP Timestamp."; | ||||
| } | ||||
| if-feature ptp-long-format; | ||||
| leaf timestamp-sec { | ||||
| type uint64 { | ||||
| range "0..281474976710656"; | ||||
| } | ||||
| description | ||||
| "48bit Timestamp in seconds as per IEEE1588v2."; | ||||
| } | ||||
| leaf timestamp-nanosec { | ||||
| type uint32; | type uint32; | |||
| description | description | |||
| "Fractional part in nanoseconds as per IEEE1588v2 | "Fractional part in nanoseconds as per IEEE1588v2 | |||
| or Fractional part in 64-bit NTP timestamp."; | or Fractional part in 64-bit NTP timestamp."; | |||
| } | ||||
| description | ||||
| "Container for 64bit timestamp."; | ||||
| } | } | |||
| } | container ntp-timestamp-32bit { | |||
| grouping timestamp { | when "derived-from-or-self(../timestamp-type, 'cl-oam:truncated-ntp')"{ | |||
| description | description | |||
| "Grouping for timestamp."; | "Only applies when 32 bit NTP Short format Timestamp."; | |||
| leaf timestamp-type { | } | |||
| if-feature ntp-short-format; | ||||
| leaf timestamp-sec { | ||||
| type uint16; | ||||
| description | ||||
| "Timestamp in seconds as per short format NTP."; | ||||
| } | ||||
| leaf timestamp-nanosec { | ||||
| type uint16; | ||||
| description | ||||
| "Truncated Fractional part in 16-bit NTP timestamp."; | ||||
| } | ||||
| description | ||||
| "Container for 64bit timestamp."; | ||||
| } | ||||
| container icmp-timestamp-32bit { | ||||
| when "derived-from-or-self(../timestamp-type, 'cl-oam:icmp-ntp')"{ | ||||
| description | ||||
| "Only applies when Truncated NTP or 64bit NTP Timestamp."; | ||||
| } | ||||
| if-feature icmp-timestamp; | ||||
| leaf timestamp-millisec { | ||||
| type uint32; | type uint32; | |||
| description | description | |||
| "Truncated PTP = 0, NTP = 1"; | "timestamp in milliseconds for ICMP timestamp."; | |||
| } | ||||
| description | ||||
| "Container for 32bit timestamp."; | ||||
| } | } | |||
| uses uint64-timestamp; | ||||
| } | } | |||
| grouping path-discovery-data { | grouping path-discovery-data { | |||
| description | description | |||
| "Path discovery related data output from nodes."; | "Path discovery related data output from nodes."; | |||
| container src-test-point { | container src-test-point { | |||
| description | description | |||
| "Source test point."; | "Source test point."; | |||
| uses tp-address-ni; | uses tp-address-ni; | |||
| } | } | |||
| container dest-test-point { | container dest-test-point { | |||
| skipping to change at page 36, line 42 ¶ | skipping to change at page 40, line 18 ¶ | |||
| +"coam:test-point-locations/coam:technology" | +"coam:test-point-locations/coam:technology" | |||
| { | { | |||
| 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 | |||
| extended and add bfd specific parameters under "test-point-location" | extended and add bfd specific parameters under "test-point-locations" | |||
| list and/or add new location type such as "bfd over MPLS-TE" under | list and/or add new location type such as "bfd over MPLS-TE" under | |||
| "location-type". | "location-type". | |||
| 5.1.1.2.1. Define and insert new nodes into corresponding test-point- | 5.1.1.2.1. Define and insert new nodes into corresponding test-point- | |||
| location | location | |||
| In the "ietf-connectionless-oam" model, multiple "test-point- | In the "ietf-connectionless-oam" model, multiple "test-point- | |||
| location" lists are defined under the "location-type" choice node. | location" lists are defined under the "location-type" choice node. | |||
| Therefore, to derive a model for some bfd technologies ( such as ip | Therefore, to derive a model for some bfd technologies ( such as ip | |||
| single-hop, ip multi-hops, etc), data nodes for bfd specific details | single-hop, ip multi-hops, etc), data nodes for bfd specific details | |||
| skipping to change at page 38, line 32 ¶ | skipping to change at page 42, line 29 ¶ | |||
| } | } | |||
| } | } | |||
| Similar augmentations can be defined to support other BFD | Similar augmentations can be defined to support other BFD | |||
| technologies such as BFD over LAG, etc. | technologies such as BFD over LAG, etc. | |||
| 5.1.2. Schema Mount | 5.1.2. Schema Mount | |||
| And another alternative method is using schema mount mechanism | And another alternative method is using schema mount mechanism | |||
| [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". | [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". | |||
| Within the "test-point-location" list, a "root" attribute is defined | Within the "test-point-locations" list, a "root" attribute is defined | |||
| to provide a mounted point for models mounted per "test-point- | to provide a mounted point for models mounted per "test-point- | |||
| location". Therefore, the "ietf-connectionless-oam" model can | locations". Therefore, the "ietf-connectionless-oam" model can | |||
| provide a place in the node hierarchy where other OAM YANG data | provide a place in the node hierarchy where other OAM YANG data | |||
| models can be attached, without any special extension in the "ietf- | models can be attached, without any special extension in the "ietf- | |||
| connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. | connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. | |||
| Note that the limitation of the Schema Mount method is it is not | Note that the limitation of the Schema Mount method is it is not | |||
| allowed to specify certain modules that are required to be mounted | allowed to specify certain modules that are required to be mounted | |||
| under a mount point. | under a mount point. | |||
| The snippet below depicts the definition of "root" attribute. | The snippet below depicts the definition of "root" attribute. | |||
| anydata root { | anydata root { | |||
| skipping to change at page 41, line 19 ¶ | skipping to change at page 45, line 19 ¶ | |||
| { | { | |||
| leaf lsp-ping{ | leaf lsp-ping{ | |||
| type string; | type string; | |||
| } | } | |||
| } | } | |||
| 5.2.1.2. Test point attributes extension | 5.2.1.2. Test point attributes extension | |||
| To support lsp-ping, the "ietf-connectionless-oam" model can be | To support lsp-ping, the "ietf-connectionless-oam" model can be | |||
| extended and add lsp-ping specific parameters can be defined and | extended and add lsp-ping specific parameters can be defined and | |||
| under "test-point-location" list. | under "test-point-locations" list. | |||
| User can reuse the attributes or groupings which are defined in | User can reuse the attributes or groupings which are defined in | |||
| [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: | [I-D.zheng-mpls-lsp-ping-yang-cfg] as follows: | |||
| The snippet below depicts an example of augmenting the "test-point- | The snippet below depicts an example of augmenting the "test-point- | |||
| locations" list with lsp ping attributes: | locations" list with lsp ping attributes: | |||
| 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/" | |||
| skipping to change at page 41, line 47 ¶ | skipping to change at page 45, line 47 ¶ | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description "LSP Ping test name."; | description "LSP Ping test name."; | |||
| ...... | ...... | |||
| } | } | |||
| 5.2.2. Schema Mount | 5.2.2. Schema Mount | |||
| And another alternative method is using schema mount mechanism | And another alternative method is using schema mount mechanism | |||
| [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". | [I-D.ietf-netmod-schema-mount] in the "ietf-connectionless-oam". | |||
| Within the "test-point-location" list, a "root" attribute is defined | Within the "test-point-locations" list, a "root" attribute is defined | |||
| to provide a mounted point for models mounted per "test-point- | to provide a mounted point for models mounted per "test-point- | |||
| location". Therefore, the "ietf-connectionless-oam" model can | locations". Therefore, the "ietf-connectionless-oam" model can | |||
| provide a place in the node hierarchy where other OAM YANG data | provide a place in the node hierarchy where other OAM YANG data | |||
| models can be attached, without any special extension in the "ietf- | models can be attached, without any special extension in the "ietf- | |||
| connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. | connectionless-oam" YANG data models [I-D.ietf-netmod-schema-mount]. | |||
| Note that the limitation of the Schema Mount method is it is not | Note that the limitation of the Schema Mount method is it is not | |||
| allowed to specify certain modules that are required to be mounted | allowed to specify certain modules that are required to be mounted | |||
| under a mount point. | under a mount point. | |||
| The snippet below depicts the definition of "root" attribute. | The snippet below depicts the definition of "root" attribute. | |||
| skipping to change at page 43, line 46 ¶ | skipping to change at page 47, line 46 ¶ | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
| default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
| in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
| to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
| effect on network operations. | effect on network operations. | |||
| The vulnerable "config true" subtrees and data nodes are the | The vulnerable "config true" subtrees and data nodes are the | |||
| following: | following: | |||
| /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv4- | /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv4- | |||
| location-type/coam:test-point-ipv4-location-list/coam:test-point- | location-type/cl-oam:test-point-ipv4-location-list/cl-oam:test- | |||
| locations/ | point-locations/ | |||
| /nd:networks/nd:network/nd:node/coam:location-type/coam:ipv6- | /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:ipv6- | |||
| location-type/coam:test-point-ipv6-location-list/coam:test-point- | location-type/cl-oam:test-point-ipv6-location-list/cl-oam:test- | |||
| locations/ | ||||
| /nd:networks/nd:network/nd:node/coam:location-type/coam:mac- | ||||
| location-type/coam:test-point-mac-address-location-list/coam:test- | ||||
| point-locations/ | point-locations/ | |||
| /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:mac- | ||||
| location-type/cl-oam:test-point-mac-address-location-list/cl- | ||||
| oam:test-point-locations/ | ||||
| /nd:networks/nd:network/nd:node/coam:location-type/coam:group-as- | /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- | |||
| number-location-type/coam:test-point-as-number-location-list/ | as-number-location-type/cl-oam:test-point-as-number-location-list/ | |||
| coam:test-point-locations/ | cl-oam:test-point-locations/ | |||
| /nd:networks/nd:network/nd:node/coam:location-type/coam:group- | /nd:networks/nd:network/nd:node/cl-oam:location-type/cl-oam:group- | |||
| system-id-location-type/coam:test-point-system-info-location-list/ | system-id-location-type/cl-oam:test-point-system-info-location- | |||
| coam:test-point-locations/ | list/cl-oam:test-point-locations/ | |||
| Unauthorized access to any of these lists can adversely affect OAM | Unauthorized access to any of these lists can adversely affect OAM | |||
| management system handling of end-to-end OAM and coordination of OAM | management system handling of end-to-end OAM and coordination of OAM | |||
| within underlying network layers. This may lead to inconsistent | within underlying network layers. This may lead to inconsistent | |||
| configuration, reporting, and presentation for the OAM mechanisms | configuration, reporting, and presentation for the OAM mechanisms | |||
| used to manage the network. | used to manage the network. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
| nodes and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
| /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- | |||
| coam:cc-session-statistics/coam:session-count/ | statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ | |||
| /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ | ||||
| coam:cc-session-statistics/coam:session-up-count/ | ||||
| /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- | |||
| coam:cc-session-statistics/coam: session-down-count/ | statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count/ | |||
| /coam:cc-session-statistics-data/coam:cc-ipv4-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- | |||
| coam:cc-session-statistics/coam:session-admin-down-count/ | statistics/cl-oam:cc-session-statistics/cl-oam: session-down- | |||
| count/ | ||||
| /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv4-sessions- | |||
| coam:cc-session-statistics/coam:session-count/ | statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- | |||
| count/ | ||||
| /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- | |||
| coam:cc-session-statistics/coam:session-up-count// | statistics/cl-oam:cc-session-statistics/cl-oam:session-count/ | |||
| /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- | |||
| coam:cc-session-statistics/coam:session-down-count/ | statistics/cl-oam:cc-session-statistics/cl-oam:session-up-count// | |||
| /coam:cc-session-statistics-data/coam:cc-ipv6-sessions-statistics/ | /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- | |||
| coam:cc-session-statistics/coam:session-admin-down-count/ | statistics/cl-oam:cc-session-statistics/cl-oam:session-down-count/ | |||
| /coam:cc-session-statistics-data/cl-oam:cc-ipv6-sessions- | ||||
| statistics/cl-oam:cc-session-statistics/cl-oam:session-admin-down- | ||||
| count/ | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
| Following the format in [RFC3688] the following registration is | Following the format in [RFC3688] the following registration is | |||
| requested to be made: | requested to be made: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam | URI: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the YANG Module Names | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-connectionless-oam | name: ietf-connectionless-oam | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam | namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam | |||
| prefix: coam | prefix: cl-oam | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 8. Acknowlegements | 8. Acknowlegements | |||
| 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 | |||
| skipping to change at page 46, line 41 ¶ | skipping to change at page 50, line 46 ¶ | |||
| [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | |||
| September 1981. | September 1981. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [G.800] "Unified functional architecture of transport networks", | ||||
| ITU-T Recommendation G.800, 2016. | ||||
| [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-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-16 (work in | Topologies", draft-ietf-i2rs-yang-network-topo-17 (work in | |||
| progress), September 2017. | progress), October 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-07 (work in progress), September 2017. | methods-09 (work in progress), October 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-08 (work in progress), October | |||
| 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. | |||
| End of changes. 149 change blocks. | ||||
| 282 lines changed or deleted | 450 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/ | ||||