| < draft-ietf-lime-yang-connectionless-oam-methods-06.txt | draft-ietf-lime-yang-connectionless-oam-methods-07.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Kumar | Network Working Group D. Kumar | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track M. Wang | Intended status: Standards Track M. Wang | |||
| Expires: March 4, 2018 Q. Wu | Expires: March 19, 2018 Q. Wu | |||
| Huawei | Huawei | |||
| R. Rahman | R. Rahman | |||
| S. Raghavan | S. Raghavan | |||
| Cisco | Cisco | |||
| August 31, 2017 | September 15, 2017 | |||
| Retrieval Methods YANG Data Model for Connectionless Operations, | Retrieval Methods YANG Data Model for Connectionless Operations, | |||
| Administration, and Maintenance(OAM) protocols | Administration, and Maintenance(OAM) protocols | |||
| draft-ietf-lime-yang-connectionless-oam-methods-06 | draft-ietf-lime-yang-connectionless-oam-methods-07 | |||
| Abstract | Abstract | |||
| This document presents a retrieval method YANG Data model for | This document presents a retrieval method YANG Data model for | |||
| connectionless OAM protocols. It provides technology-independent RPC | connectionless OAM protocols. It provides technology-independent RPC | |||
| operations for connectionless OAM protocols. The retrieval methods | operations for connectionless OAM protocols. The retrieval methods | |||
| model presented here can be extended to include technology specific | model presented here can be extended to include technology specific | |||
| details. This is leading to uniformity between OAM protocols and | details. This is leading to uniformity between OAM protocols and | |||
| support both nested OAM workflows (i.e., performing OAM functions at | support both nested OAM workflows (i.e., performing OAM functions at | |||
| different levels through a unified interface) and interacting OAM | different levels through a unified interface) and interacting OAM | |||
| skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
| unified interface). | unified interface). | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 4, 2018. | This Internet-Draft will expire on March 19, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Conventions used in this document . . . . . . . . . . . . . . 3 | 2. Conventions used in this document . . . . . . . . . . . . . . 3 | |||
| 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Overview of the Connectionless OAM retrieval methods Model . 4 | 3. Overview of the Connectionless OAM retrieval methods Model . 4 | |||
| 3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5 | 3.1. RPC operation definitions . . . . . . . . . . . . . . . . 5 | |||
| 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 8 | 3.2. OAM Retrieval Methods Hierarchy . . . . . . . . . . . . . 7 | |||
| 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 15 | 4. OAM Retrieval Methods YANG Module . . . . . . . . . . . . . . 14 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 21 | 7.2. Informative References . . . . . . . . . . . . . . . . . 21 | |||
| Appendix A. Appdendix A.1 . . . . . . . . . . . . . . . . . . . 22 | Appendix A. Appdendix A.1 Extending Connectionless OAM Method | |||
| Appendix B. Appendix A.2 . . . . . . . . . . . . . . . . . . . . 22 | Module Example . . . . . . . . . . . . . . . . . . . 21 | |||
| B.1. OAM Retrieval Persistent Methods YANG Module . . . . . . 23 | Appendix B. Appendix A.2 Example of new retrieval procedures | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | Model . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | ||||
| 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 reachability of destinations (Reachability Verification, | 1. Monitor reachability of destinations (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 2, line 51 ¶ | skipping to change at page 3, line 4 ¶ | |||
| 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 reachability of destinations (Reachability Verification, | 1. Monitor reachability of destinations (Reachability Verification, | |||
| Continuity Check). | Continuity Check). | |||
| 2. Troubleshoot failures (Fault verification and localization). | 2. Troubleshoot failures (Fault verification and localization). | |||
| 3. Monitor Performance | 3. Monitor Performance | |||
| An overview of OAM tools is presented at [RFC7276]. | An overview of OAM tools is presented at [RFC7276]. | |||
| Ping and Traceroute [RFC792], [RFC4443] and BFD [RFC5880] are well- | Ping and Traceroute [RFC792], [RFC4443] and BFD [RFC5880] are well- | |||
| known fault verification and isolation tools, respectively, for IP | known fault verification and isolation tools, respectively, for IP | |||
| networks. Over the years, different technologies have developed | networks. Over the years, different technologies have developed | |||
| similar tools for similar purposes. | similar tools for similar purposes. | |||
| In this document, we present a retrieval method YANG Data model for | In this document, we present an on-demand retrieval method YANG Data | |||
| connectionless OAM protocols. This module provides technology- | model for connectionless OAM protocols. This model provides | |||
| independent RPC operations for connectionless OAM protocols. It is | technology-independent RPC operations for connectionless OAM | |||
| separated from the generic YANG model for connectionless OAM | protocols. It is separated from the generic YANG model for | |||
| [I-D.ietf-lime-yang-connectionless-oam] and can avoid mixing the | connectionless OAM [I-D.ietf-lime-yang-connectionless-oam] and can | |||
| models for the retrieved-data from the retrieval procedures. It is | avoid mixing the models for the retrieved-data from the retrieval | |||
| expected that retrieval procedures would evolve faster than the data | procedures. It is expected that retrieval procedures would evolve | |||
| model [I-D.ietf-lime-yang-connectionless-oam] and will allow new | faster than the data model [I-D.ietf-lime-yang-connectionless-oam] | |||
| procedures to be defined for retrieval of the same data defined by | and will allow new procedures to be defined for retrieval of the same | |||
| the base data model. | data defined by the base data model. | |||
| 2. Conventions used in this document | 2. Conventions used in this document | |||
| The following terms are defined in [RFC6241] and are not redefined | The following terms are defined in [RFC6241] and are not redefined | |||
| here: | here: | |||
| o client | o client | |||
| o configuration data | o configuration data | |||
| skipping to change at page 4, line 42 ¶ | skipping to change at page 4, line 44 ¶ | |||
| ? for an optional leaf or choice | ? for an optional leaf or choice | |||
| ! for a presence container | ! for a presence container | |||
| * for a leaf-list or list | * for a leaf-list or list | |||
| [<keys>] for a list's keys | [<keys>] for a list's keys | |||
| <type> is the name of the type for leafs and leaf-lists | <type> is the name of the type for leafs and leaf-lists | |||
| 3. Overview of the Connectionless OAM retrieval methods Model | 3. Overview of the Connectionless OAM retrieval methods Model | |||
| In this document, we present a retrieval method YANG Data model for | In this document, we present an on-demand retrieval method YANG Data | |||
| connectionless OAM protocols. This module provides technology- | model for connectionless OAM protocols. This model provides | |||
| independent retrieval procedures (RPC operations) for connectionless | technology-independent retrieval procedures (RPC operations) for | |||
| OAM protocols. It provides a flexible way to retrieve the data which | connectionless OAM protocols. It provides a flexible way to retrieve | |||
| defined by the "ietf-connectionless-oam.yang" | the data which defined by the "ietf-connectionless-oam.yang" | |||
| [I-D.ietf-lime-yang-connectionless-oam]. | [I-D.ietf-lime-yang-connectionless-oam]. | |||
| 3.1. RPC operation definitions | 3.1. RPC operation definitions | |||
| The RPC model facilitates issuing commands to a NETCONF server (in | The RPC model facilitates issuing commands to a NETCONF server (in | |||
| this case to the device that need to execute the OAM command) and | this case to the device that need to execute the OAM command) and | |||
| obtaining a response. | obtaining a response. | |||
| Under 'connectionless-oam-methods' module, we summarize common OAM | Under 'connectionless-oam-methods' module, we summarize common OAM | |||
| functions and define two generic RPC operations: 'continuity-check' | functions and define two generic RPC operations: 'continuity-check' | |||
| and 'path-discovery'. In practice, these RPC operations are | and 'path-discovery'. In practice, these RPC operations are | |||
| supported by corresponding technology-specific OAM tools [RFC7276]. | activated on-demand and supported by corresponding technology- | |||
| For example, for the IP OAM model, the continuity-check RPC | specific OAM tools [RFC7276]. For example, for the IP OAM model, the | |||
| corresponds to the IP Ping [RFC792] [RFC4443], while the path- | continuity-check RPC corresponds to the IP Ping [RFC792] [RFC4443], | |||
| discovery RPC operation corresponds to IP Traceroute [RFC792] | while the path-discovery RPC operation corresponds to IP Traceroute | |||
| [RFC4443]. | [RFC792] [RFC4443]. | |||
| Note that the RPC operation presented in this document is the base | Note that the RPC operation presented in this document is the base | |||
| building block, which is used to derive a model for a technology- | building block, which is used to derive a model for a technology- | |||
| specific OAM (i.e., ICMP ping [RFC792] [RFC4443], LSP ping | specific OAM (i.e., ICMP ping [RFC792] [RFC4443], LSP ping | |||
| [RFC8029]), the base building block should be extended with | [RFC8029]), the base building block should be extended with | |||
| corresponding technology specific parameters. To facilitate this for | corresponding technology specific parameters. To facilitate this for | |||
| future enhancements to data retrieval methods, the RPCs are captured | future enhancements to data retrieval methods, the RPCs are captured | |||
| under a separate module. | under a separate module. | |||
| The generic 'path-discovery-data' and 'continuity-check-data' | The generic 'path-discovery-data' and 'continuity-check-data' | |||
| groupings are used as data outputs from different RPCs described in | groupings are used as data outputs from different RPCs described in | |||
| this document. Similar methods including other RPCs can retrieve the | this document. Similar methods including other RPCs can retrieve the | |||
| data using the same data model. | data using the same data model. | |||
| rpc continuity-check { | rpc continuity-check { | |||
| if-feature coam:continuity-check; | if-feature coam:continuity-check; | |||
| description | description | |||
| "Generates continuity-check as per RFC7276."; | "Continuity-check RPC operation as per RFC7276."; | |||
| input { | input { | |||
| container destination-tp { | uses rpc-input-parameters; | |||
| uses coam:tp-address; | .... | |||
| description | } | |||
| "destination test point."; | output { | |||
| } | container error-code { | |||
| uses coam:session-type; | leaf status-code { | |||
| leaf source-interface { | type identityref{ | |||
| type if:interface-ref; | base status-code; | |||
| description | } | |||
| "source interface."; | mandatory true; | |||
| } | ||||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "outbound interface."; | ||||
| } | ||||
| leaf count { | ||||
| type empty; | ||||
| description | ||||
| "Specifies the number of packets that will be sent."; | ||||
| } | ||||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | ||||
| description | ||||
| "vrf instance."; | ||||
| } | ||||
| leaf ttl { | ||||
| type uint8; | ||||
| default "255"; | ||||
| description | description | |||
| "Time to live (TTL)."; | "Error code for CC."; | |||
| } | } | |||
| leaf packet-size { | leaf status-sub-code { | |||
| type uint32 { | type identityref{ | |||
| range "64..10000"; | base status-sub-code; | |||
| } | } | |||
| default "64"; | mandatory true; | |||
| description | description | |||
| "Size of ping echo request packets, in octets"; | "Sub code for CC."; | |||
| } | ||||
| } | ||||
| output { | ||||
| list error-code-list { | ||||
| key "response-index"; | ||||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "error code is "; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "sub code."; | ||||
| } | ||||
| description | ||||
| "error code list."; | ||||
| } | } | |||
| uses coam:continuity-check-data; | description | |||
| "Error code and Sub Code for CC."; | ||||
| } | } | |||
| uses coam:continuity-check-data; | ||||
| } | } | |||
| } | ||||
| rpc path-discovery { | rpc path-discovery { | |||
| description | description | |||
| "Generates path discovery as per RFC7276."; | "path discovery RPC operation as per RFC7276."; | |||
| input { | input { | |||
| container destination-tp { | uses rpc-input-parameters; | |||
| uses coam:tp-address; | ..... | |||
| description | } | |||
| "destination test point."; | output { | |||
| } | list response-list { | |||
| uses coam:session-type; | key "response-index"; | |||
| leaf source-interface { | description | |||
| type if:interface-ref; | "Path discovery response list."; | |||
| description | leaf response-index { | |||
| "source interface."; | type uint32; | |||
| } | mandatory true; | |||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "outbound interface."; | "Response index."; | |||
| } | } | |||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | leaf status-code { | |||
| description | type identityref{ | |||
| "vrf"; | base status-code; | |||
| } | } | |||
| leaf max-ttl { | mandatory true; | |||
| type uint8; | ||||
| default "255"; | ||||
| description | description | |||
| "max ttl."; | "Error code for Path Discovery. "; | |||
| } | } | |||
| } | leaf status-sub-code { | |||
| output { | type identityref{ | |||
| list response-list { | base status-sub-code; | |||
| key "response-index"; | } | |||
| mandatory true; | ||||
| description | description | |||
| "path discovery response list."; | "Sub code for Path Discovery. "; | |||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "error code is "; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "sub code is "; | ||||
| } | ||||
| } | } | |||
| uses coam:path-discovery-data; | } | |||
| } | uses coam:path-discovery-data; | |||
| } | } | |||
| } | ||||
| Snippet of data hierarchy related to RPC operations | Snippet of data hierarchy related to RPC operations | |||
| 3.2. OAM Retrieval Methods Hierarchy | 3.2. OAM Retrieval Methods Hierarchy | |||
| The complete data hierarchy related to the Connectionless OAM | The complete data hierarchy related to the Connectionless OAM | |||
| Retrieval Methods YANG model is presented below. | Retrieval Methods YANG model is presented below. | |||
| module: ietf-connectionless-oam-methods | module: ietf-connectionless-oam-methods | |||
| rpcs: | ||||
| rpcs: | ||||
| +---x continuity-check {coam:continuity-check}? | +---x continuity-check {coam:continuity-check}? | |||
| | +---w input | | +---w input | |||
| | | +---w destination-tp | | | +---w destination-tp | |||
| | | | +---w tp-location-type? identityref | | | | +---w tp-location-type identityref | |||
| | | | +---w tp-address | | | | +---w tp-address | |||
| | | | +---w mac-address | | | | +---w mac-address | |||
| | | | | +---w mac-address? yang:mac-address | | | | | +---w mac-address yang:mac-address | |||
| | | | +---w ipv4-address | | | | +---w ipv4-address | |||
| | | | | +---w ipv4-address? inet:ipv4-address | | | | | +---w ipv4-address inet:ipv4-address | |||
| | | | +---w ipv6-address | | | | +---w ipv6-address | |||
| | | | | +---w ipv6-address? inet:ipv6-address | | | | | +---w ipv6-address inet:ipv6-address | |||
| | | | +---w tp-attribute | | | | +---w tp-attribute | |||
| | | | | +---w tp-attribute-type? address-attribute-type | | | | | +---w tp-attribute-type? address-attribute-type | |||
| | | | | +---w (tp-attribute-value)? | | | | | +---w (tp-attribute-value)? | |||
| | | | | +--:(ip-prefix) | | | | | +--:(ip-prefix) | |||
| | | | | | +---w ip-prefix? inet:ip-prefix | | | | | | +---w ip-prefix? inet:ip-prefix | |||
| | | | | +--:(bgp) | | | | | +--:(bgp) | |||
| | | | | | +---w bgp? inet:ip-prefix | | | | | | +---w bgp? inet:ip-prefix | |||
| | | | | +--:(tunnel) | | | | | +--:(tunnel) | |||
| | | | | | +---w tunnel-interface? uint32 | | | | | | +---w tunnel-interface? uint32 | |||
| | | | | +--:(pw) | | | | | +--:(pw) | |||
| | | | | | +---w remote-pe-address? inet:ip-address | | | | | | +---w remote-pe-address? inet:ip-address | |||
| | | | | | +---w pw-id? uint32 | | | | | | +---w pw-id? uint32 | |||
| | | | | +--:(vpls) | | | | | +--:(vpls) | |||
| | | | | | +---w route-distinguisher? uint64 | | | | | | +---w route-distinguisher? rt:route-distinguisher | |||
| | | | | | +---w sender-ve-id? uint16 | | | | | | +---w sender-ve-id? uint16 | |||
| | | | | | +---w receiver-ve-id? uint16 | | | | | | +---w receiver-ve-id? uint16 | |||
| | | | | +--:(mpls-mldp) | | | | | +--:(mpls-mldp) | |||
| | | | | +---w (root-address)? | | | | | +---w (root-address)? | |||
| | | | | +--:(ip-address) | | | | | +--:(ip-address) | |||
| | | | | | +---w source-address? inet:ip-address | | | | | | +---w source-address? inet:ip-address | |||
| | | | | | +---w group-ip-address? inet:ip-address | | | | | | +---w group-ip-address? inet:ip-address | |||
| | | | | +--:(vpn) | | | | | +--:(vpn) | |||
| | | | | | +---w as-number? inet:as-number | | | | | | +---w as-number? inet:as-number | |||
| | | | | +--:(global-id) | | | | | +--:(global-id) | |||
| | | | | +---w lsp-id? string | | | | | +---w lsp-id? string | |||
| | | | +---w system-info | | | | +---w system-info | |||
| | | | +---w system-id? router-id | | | | +---w system-id? rt:router-id | |||
| | | +---w session-type? enumeration | | | +---w source-interface if:interface-ref | |||
| | | +---w source-interface? if:interface-ref | | | +---w outbound-interface if:interface-ref | |||
| | | +---w outbound-interface? if:interface-ref | ||||
| | | +---w count? empty | ||||
| | | +---w vrf? coam:routing-instance-ref | | | +---w vrf? coam:routing-instance-ref | |||
| | | +---w count? uint32 | ||||
| | | +---w ttl? uint8 | | | +---w ttl? uint8 | |||
| | | +---w packet-size? uint32 | | | +---w packet-size? uint32 | |||
| | +--ro output | | +--ro output | |||
| | +--ro error-code-list* [response-index] | | +--ro error-code | |||
| | | +--ro response-index uint32 | | | +--ro status-code identityref | |||
| | | +--ro status-code? int32 | | | +--ro status-sub-code identityref | |||
| | | +--ro status-sub-code? uint8 | ||||
| | +--ro src-test-point | | +--ro src-test-point | |||
| | | +--ro ni? routing-instance-ref | | | +--ro ni? routing-instance-ref | |||
| | | +--ro tp-location-type? identityref | | | +--ro tp-location-type identityref | |||
| | | +--ro tp-address | | | +--ro tp-address | |||
| | | | +--ro mac-address | | | | +--ro mac-address | |||
| | | | | +--ro mac-address? yang:mac-address | | | | | +--ro mac-address yang:mac-address | |||
| | | | +--ro ipv4-address | | | | +--ro ipv4-address | |||
| | | | | +--ro ipv4-address? inet:ipv4-address | | | | | +--ro ipv4-address inet:ipv4-address | |||
| | | | +--ro ipv6-address | | | | +--ro ipv6-address | |||
| | | | | +--ro ipv6-address? inet:ipv6-address | | | | | +--ro ipv6-address inet:ipv6-address | |||
| | | | +--ro tp-attribute | | | | +--ro tp-attribute | |||
| | | | | +--ro tp-attribute-type? address-attribute-type | | | | | +--ro tp-attribute-type? address-attribute-type | |||
| | | | | +--ro (tp-attribute-value)? | | | | | +--ro (tp-attribute-value)? | |||
| | | | | +--:(ip-prefix) | | | | | +--:(ip-prefix) | |||
| | | | | | +--ro ip-prefix? inet:ip-prefix | | | | | | +--ro ip-prefix? inet:ip-prefix | |||
| | | | | +--:(bgp) | | | | | +--:(bgp) | |||
| | | | | | +--ro bgp? inet:ip-prefix | | | | | | +--ro bgp? inet:ip-prefix | |||
| | | | | +--:(tunnel) | | | | | +--:(tunnel) | |||
| | | | | | +--ro tunnel-interface? uint32 | | | | | | +--ro tunnel-interface? uint32 | |||
| | | | | +--:(pw) | | | | | +--:(pw) | |||
| | | | | | +--ro remote-pe-address? inet:ip-address | | | | | | +--ro remote-pe-address? inet:ip-address | |||
| | | | | | +--ro pw-id? uint32 | | | | | | +--ro pw-id? uint32 | |||
| | | | | +--:(vpls) | | | | | +--:(vpls) | |||
| | | | | | +--ro route-distinguisher? uint64 | | | | | | +--ro route-distinguisher? rt:route-distinguisher | |||
| | | | | | +--ro sender-ve-id? uint16 | | | | | | +--ro sender-ve-id? uint16 | |||
| | | | | | +--ro receiver-ve-id? uint16 | | | | | | +--ro receiver-ve-id? uint16 | |||
| | | | | +--:(mpls-mldp) | | | | | +--:(mpls-mldp) | |||
| | | | | +--ro (root-address)? | | | | | +--ro (root-address)? | |||
| | | | | +--:(ip-address) | | | | | +--:(ip-address) | |||
| | | | | | +--ro source-address? inet:ip-address | | | | | | +--ro source-address? inet:ip-address | |||
| | | | | | +--ro group-ip-address? inet:ip-address | | | | | | +--ro group-ip-address? inet:ip-address | |||
| | | | | +--:(vpn) | | | | | +--:(vpn) | |||
| | | | | | +--ro as-number? inet:as-number | | | | | | +--ro as-number? inet:as-number | |||
| | | | | +--:(global-id) | | | | | +--:(global-id) | |||
| | | | | +--ro lsp-id? string | | | | | +--ro lsp-id? string | |||
| | | | +--ro system-info | | | | +--ro system-info | |||
| | | | +--ro system-id? router-id | | | | +--ro system-id? rt:router-id | |||
| | | +--ro egress-intf-name? if:interface-ref | | | +--ro egress-intf-name? if:interface-ref | |||
| | +--ro dest-test-point | | +--ro dest-test-point | |||
| | | +--ro ni? routing-instance-ref | | | +--ro ni? routing-instance-ref | |||
| | | +--ro tp-location-type? identityref | | | +--ro tp-location-type identityref | |||
| | | +--ro tp-address | | | +--ro tp-address | |||
| | | | +--ro mac-address | | | | +--ro mac-address | |||
| | | | | +--ro mac-address? yang:mac-address | | | | | +--ro mac-address yang:mac-address | |||
| | | | +--ro ipv4-address | | | | +--ro ipv4-address | |||
| | | | | +--ro ipv4-address? inet:ipv4-address | | | | | +--ro ipv4-address inet:ipv4-address | |||
| | | | +--ro ipv6-address | | | | +--ro ipv6-address | |||
| | | | | +--ro ipv6-address? inet:ipv6-address | | | | | +--ro ipv6-address inet:ipv6-address | |||
| | | | +--ro tp-attribute | | | | +--ro tp-attribute | |||
| | | | | +--ro tp-attribute-type? address-attribute-type | | | | | +--ro tp-attribute-type? address-attribute-type | |||
| | | | | +--ro (tp-attribute-value)? | | | | | +--ro (tp-attribute-value)? | |||
| | | | | +--:(ip-prefix) | | | | | +--:(ip-prefix) | |||
| | | | | | +--ro ip-prefix? inet:ip-prefix | | | | | | +--ro ip-prefix? inet:ip-prefix | |||
| | | | | +--:(bgp) | | | | | +--:(bgp) | |||
| | | | | | +--ro bgp? inet:ip-prefix | | | | | | +--ro bgp? inet:ip-prefix | |||
| | | | | +--:(tunnel) | | | | | +--:(tunnel) | |||
| | | | | | +--ro tunnel-interface? uint32 | | | | | | +--ro tunnel-interface? uint32 | |||
| | | | | +--:(pw) | | | | | +--:(pw) | |||
| | | | | | +--ro remote-pe-address? inet:ip-address | | | | | | +--ro remote-pe-address? inet:ip-address | |||
| | | | | | +--ro pw-id? uint32 | | | | | | +--ro pw-id? uint32 | |||
| | | | | +--:(vpls) | | | | | +--:(vpls) | |||
| | | | | | +--ro route-distinguisher? uint64 | | | | | | +--ro route-distinguisher? rt:route-distinguisher | |||
| | | | | | +--ro sender-ve-id? uint16 | | | | | | +--ro sender-ve-id? uint16 | |||
| | | | | | +--ro receiver-ve-id? uint16 | | | | | | +--ro receiver-ve-id? uint16 | |||
| | | | | +--:(mpls-mldp) | | | | | +--:(mpls-mldp) | |||
| | | | | +--ro (root-address)? | | | | | +--ro (root-address)? | |||
| | | | | +--:(ip-address) | | | | | +--:(ip-address) | |||
| | | | | | +--ro source-address? inet:ip-address | | | | | | +--ro source-address? inet:ip-address | |||
| | | | | | +--ro group-ip-address? inet:ip-address | | | | | | +--ro group-ip-address? inet:ip-address | |||
| | | | | +--:(vpn) | | | | | +--:(vpn) | |||
| | | | | | +--ro as-number? inet:as-number | | | | | | +--ro as-number? inet:as-number | |||
| | | | | +--:(global-id) | | | | | +--:(global-id) | |||
| | | | | +--ro lsp-id? string | | | | | +--ro lsp-id? string | |||
| | | | +--ro system-info | | | | +--ro system-info | |||
| | | | +--ro system-id? router-id | | | | +--ro system-id? rt:router-id | |||
| | | +--ro ingress-intf-name? if:interface-ref | | | +--ro ingress-intf-name? if:interface-ref | |||
| | +--ro sequence-number? uint64 | | +--ro sequence-number? uint64 | |||
| | +--ro hop-cnt? uint8 | | +--ro hop-cnt? uint8 | |||
| | +--ro session-packet-statistics | | +--ro session-packet-statistics | |||
| | | +--ro rx-packet-count? uint32 | | | +--ro rx-packet-count? uint32 | |||
| | | +--ro tx-packet-count? uint32 | | | +--ro tx-packet-count? uint32 | |||
| | | +--ro rx-bad-packet? uint32 | | | +--ro rx-bad-packet? uint32 | |||
| | | +--ro tx-packet-failed? uint32 | | | +--ro tx-packet-failed? uint32 | |||
| | +--ro session-error-statistics | | +--ro session-error-statistics | |||
| | | +--ro packet-drops-count? uint32 | | | +--ro packet-drops-count? uint32 | |||
| skipping to change at page 11, line 36 ¶ | skipping to change at page 10, line 23 ¶ | |||
| | | +--ro max-delay-value? uint32 | | | +--ro max-delay-value? uint32 | |||
| | | +--ro average-delay-value? uint32 | | | +--ro average-delay-value? uint32 | |||
| | +--ro session-jitter-statistics | | +--ro session-jitter-statistics | |||
| | +--ro time-resolution-value? identityref | | +--ro time-resolution-value? identityref | |||
| | +--ro min-jitter-value? uint32 | | +--ro min-jitter-value? uint32 | |||
| | +--ro max-jitter-value? uint32 | | +--ro max-jitter-value? uint32 | |||
| | +--ro average-jitter-value? uint32 | | +--ro average-jitter-value? uint32 | |||
| +---x path-discovery {coam:path-discovery}? | +---x path-discovery {coam:path-discovery}? | |||
| +---w input | +---w input | |||
| | +---w destination-tp | | +---w destination-tp | |||
| | | +---w tp-location-type? identityref | | | +---w tp-location-type identityref | |||
| | | +---w tp-address | | | +---w tp-address | |||
| | | +---w mac-address | | | +---w mac-address | |||
| | | | +---w mac-address? yang:mac-address | | | | +---w mac-address yang:mac-address | |||
| | | +---w ipv4-address | | | +---w ipv4-address | |||
| | | | +---w ipv4-address? inet:ipv4-address | | | | +---w ipv4-address inet:ipv4-address | |||
| | | +---w ipv6-address | | | +---w ipv6-address | |||
| | | | +---w ipv6-address? inet:ipv6-address | | | | +---w ipv6-address inet:ipv6-address | |||
| | | +---w tp-attribute | | | +---w tp-attribute | |||
| | | | +---w tp-attribute-type? address-attribute-type | | | | +---w tp-attribute-type? address-attribute-type | |||
| | | | +---w (tp-attribute-value)? | | | | +---w (tp-attribute-value)? | |||
| | | | +--:(ip-prefix) | | | | +--:(ip-prefix) | |||
| | | | | +---w ip-prefix? inet:ip-prefix | | | | | +---w ip-prefix? inet:ip-prefix | |||
| | | | +--:(bgp) | | | | +--:(bgp) | |||
| | | | | +---w bgp? inet:ip-prefix | | | | | +---w bgp? inet:ip-prefix | |||
| | | | +--:(tunnel) | | | | +--:(tunnel) | |||
| | | | | +---w tunnel-interface? uint32 | | | | | +---w tunnel-interface? uint32 | |||
| | | | +--:(pw) | | | | +--:(pw) | |||
| | | | | +---w remote-pe-address? inet:ip-address | | | | | +---w remote-pe-address? inet:ip-address | |||
| | | | | +---w pw-id? uint32 | | | | | +---w pw-id? uint32 | |||
| | | | +--:(vpls) | | | | +--:(vpls) | |||
| | | | | +---w route-distinguisher? uint64 | | | | | +---w route-distinguisher? rt:route-distinguisher | |||
| | | | | +---w sender-ve-id? uint16 | | | | | +---w sender-ve-id? uint16 | |||
| | | | | +---w receiver-ve-id? uint16 | | | | | +---w receiver-ve-id? uint16 | |||
| | | | +--:(mpls-mldp) | | | | +--:(mpls-mldp) | |||
| | | | +---w (root-address)? | | | | +---w (root-address)? | |||
| | | | +--:(ip-address) | | | | +--:(ip-address) | |||
| | | | | +---w source-address? inet:ip-address | | | | | +---w source-address? inet:ip-address | |||
| | | | | +---w group-ip-address? inet:ip-address | | | | | +---w group-ip-address? inet:ip-address | |||
| | | | +--:(vpn) | | | | +--:(vpn) | |||
| | | | | +---w as-number? inet:as-number | | | | | +---w as-number? inet:as-number | |||
| | | | +--:(global-id) | | | | +--:(global-id) | |||
| | | | +---w lsp-id? string | | | | +---w lsp-id? string | |||
| | | +---w system-info | | | +---w system-info | |||
| | | +---w system-id? router-id | | | +---w system-id? rt:router-id | |||
| | +---w session-type? enumeration | | +---w source-interface if:interface-ref | |||
| | +---w source-interface? if:interface-ref | | +---w outbound-interface if:interface-ref | |||
| | +---w outbound-interface? if:interface-ref | ||||
| | +---w vrf? coam:routing-instance-ref | | +---w vrf? coam:routing-instance-ref | |||
| | +---w max-ttl? uint8 | | +---w max-ttl? uint8 | |||
| +--ro output | +--ro output | |||
| +--ro response-list* [response-index] | +--ro response-list* [response-index] | |||
| | +--ro response-index uint32 | | +--ro response-index uint32 | |||
| | +--ro status-code? int32 | | +--ro status-code identityref | |||
| | +--ro status-sub-code? uint8 | | +--ro status-sub-code identityref | |||
| +--ro src-test-point | +--ro src-test-point | |||
| | +--ro ni? routing-instance-ref | | +--ro ni? routing-instance-ref | |||
| | +--ro tp-location-type? identityref | | +--ro tp-location-type identityref | |||
| | +--ro tp-address | | +--ro tp-address | |||
| | +--ro mac-address | | +--ro mac-address | |||
| | | +--ro mac-address? yang:mac-address | | | +--ro mac-address yang:mac-address | |||
| | +--ro ipv4-address | | +--ro ipv4-address | |||
| | | +--ro ipv4-address? inet:ipv4-address | | | +--ro ipv4-address inet:ipv4-address | |||
| | +--ro ipv6-address | | +--ro ipv6-address | |||
| | | +--ro ipv6-address? inet:ipv6-address | | | +--ro ipv6-address inet:ipv6-address | |||
| | +--ro tp-attribute | | +--ro tp-attribute | |||
| | | +--ro tp-attribute-type? address-attribute-type | | | +--ro tp-attribute-type? address-attribute-type | |||
| | | +--ro (tp-attribute-value)? | | | +--ro (tp-attribute-value)? | |||
| | | +--:(ip-prefix) | | | +--:(ip-prefix) | |||
| | | | +--ro ip-prefix? inet:ip-prefix | | | | +--ro ip-prefix? inet:ip-prefix | |||
| | | +--:(bgp) | | | +--:(bgp) | |||
| | | | +--ro bgp? inet:ip-prefix | | | | +--ro bgp? inet:ip-prefix | |||
| | | +--:(tunnel) | | | +--:(tunnel) | |||
| | | | +--ro tunnel-interface? uint32 | | | | +--ro tunnel-interface? uint32 | |||
| | | +--:(pw) | | | +--:(pw) | |||
| | | | +--ro remote-pe-address? inet:ip-address | | | | +--ro remote-pe-address? inet:ip-address | |||
| | | | +--ro pw-id? uint32 | | | | +--ro pw-id? uint32 | |||
| | | +--:(vpls) | | | +--:(vpls) | |||
| | | | +--ro route-distinguisher? uint64 | | | | +--ro route-distinguisher? rt:route-distinguisher | |||
| | | | +--ro sender-ve-id? uint16 | | | | +--ro sender-ve-id? uint16 | |||
| | | | +--ro receiver-ve-id? uint16 | | | | +--ro receiver-ve-id? uint16 | |||
| | | +--:(mpls-mldp) | | | +--:(mpls-mldp) | |||
| | | +--ro (root-address)? | | | +--ro (root-address)? | |||
| | | +--:(ip-address) | | | +--:(ip-address) | |||
| | | | +--ro source-address? inet:ip-address | | | | +--ro source-address? inet:ip-address | |||
| | | | +--ro group-ip-address? inet:ip-address | | | | +--ro group-ip-address? inet:ip-address | |||
| | | +--:(vpn) | | | +--:(vpn) | |||
| | | | +--ro as-number? inet:as-number | | | | +--ro as-number? inet:as-number | |||
| | | +--:(global-id) | | | +--:(global-id) | |||
| | | +--ro lsp-id? string | | | +--ro lsp-id? string | |||
| | +--ro system-info | | +--ro system-info | |||
| | +--ro system-id? router-id | | +--ro system-id? rt:router-id | |||
| +--ro dest-test-point | +--ro dest-test-point | |||
| | +--ro ni? routing-instance-ref | | +--ro ni? routing-instance-ref | |||
| | +--ro tp-location-type? identityref | | +--ro tp-location-type identityref | |||
| | +--ro tp-address | | +--ro tp-address | |||
| | +--ro mac-address | | +--ro mac-address | |||
| | | +--ro mac-address? yang:mac-address | | | +--ro mac-address yang:mac-address | |||
| | +--ro ipv4-address | | +--ro ipv4-address | |||
| | | +--ro ipv4-address? inet:ipv4-address | | | +--ro ipv4-address inet:ipv4-address | |||
| | +--ro ipv6-address | | +--ro ipv6-address | |||
| | | +--ro ipv6-address? inet:ipv6-address | | | +--ro ipv6-address inet:ipv6-address | |||
| | +--ro tp-attribute | | +--ro tp-attribute | |||
| | | +--ro tp-attribute-type? address-attribute-type | | | +--ro tp-attribute-type? address-attribute-type | |||
| | | +--ro (tp-attribute-value)? | | | +--ro (tp-attribute-value)? | |||
| | | +--:(ip-prefix) | | | +--:(ip-prefix) | |||
| | | | +--ro ip-prefix? inet:ip-prefix | | | | +--ro ip-prefix? inet:ip-prefix | |||
| | | +--:(bgp) | | | +--:(bgp) | |||
| | | | +--ro bgp? inet:ip-prefix | | | | +--ro bgp? inet:ip-prefix | |||
| | | +--:(tunnel) | | | +--:(tunnel) | |||
| | | | +--ro tunnel-interface? uint32 | | | | +--ro tunnel-interface? uint32 | |||
| | | +--:(pw) | | | +--:(pw) | |||
| | | | +--ro remote-pe-address? inet:ip-address | | | | +--ro remote-pe-address? inet:ip-address | |||
| | | | +--ro pw-id? uint32 | | | | +--ro pw-id? uint32 | |||
| | | +--:(vpls) | | | +--:(vpls) | |||
| | | | +--ro route-distinguisher? uint64 | | | | +--ro route-distinguisher? rt:route-distinguisher | |||
| | | | +--ro sender-ve-id? uint16 | | | | +--ro sender-ve-id? uint16 | |||
| | | | +--ro receiver-ve-id? uint16 | | | | +--ro receiver-ve-id? uint16 | |||
| | | +--:(mpls-mldp) | | | +--:(mpls-mldp) | |||
| | | +--ro (root-address)? | | | +--ro (root-address)? | |||
| | | +--:(ip-address) | | | +--:(ip-address) | |||
| | | | +--ro source-address? inet:ip-address | | | | +--ro source-address? inet:ip-address | |||
| | | | +--ro group-ip-address? inet:ip-address | | | | +--ro group-ip-address? inet:ip-address | |||
| | | +--:(vpn) | | | +--:(vpn) | |||
| | | | +--ro as-number? inet:as-number | | | | +--ro as-number? inet:as-number | |||
| | | +--:(global-id) | | | +--:(global-id) | |||
| | | +--ro lsp-id? string | | | +--ro lsp-id? string | |||
| | +--ro system-info | | +--ro system-info | |||
| | +--ro system-id? router-id | | +--ro system-id? rt:router-id | |||
| +--ro sequence-number? uint64 | +--ro sequence-number? uint64 | |||
| +--ro hop-cnt? uint8 | +--ro hop-cnt? uint8 | |||
| +--ro session-packet-statistics | +--ro session-packet-statistics | |||
| | +--ro rx-packet-count? uint32 | | +--ro rx-packet-count? uint32 | |||
| | +--ro tx-packet-count? uint32 | | +--ro tx-packet-count? uint32 | |||
| | +--ro rx-bad-packet? uint32 | | +--ro rx-bad-packet? uint32 | |||
| | +--ro tx-packet-failed? uint32 | | +--ro tx-packet-failed? uint32 | |||
| +--ro session-error-statistics | +--ro session-error-statistics | |||
| | +--ro packet-drops-count? uint32 | | +--ro packet-drops-count? uint32 | |||
| | +--ro packet-reorder-count? uint32 | | +--ro packet-reorder-count? uint32 | |||
| skipping to change at page 14, line 42 ¶ | skipping to change at page 13, line 28 ¶ | |||
| | +--ro average-jitter-value? uint32 | | +--ro average-jitter-value? uint32 | |||
| +--ro path-verification | +--ro path-verification | |||
| | +--ro flow-info? string | | +--ro flow-info? string | |||
| | +--ro session-path-verification-statistics | | +--ro session-path-verification-statistics | |||
| | +--ro verified-count? uint32 | | +--ro verified-count? uint32 | |||
| | +--ro failed-count? uint32 | | +--ro failed-count? uint32 | |||
| +--ro path-trace-info | +--ro path-trace-info | |||
| +--ro path-trace-info-list* [index] | +--ro path-trace-info-list* [index] | |||
| +--ro index uint32 | +--ro index uint32 | |||
| +--ro ni? routing-instance-ref | +--ro ni? routing-instance-ref | |||
| +--ro tp-location-type? identityref | +--ro tp-location-type identityref | |||
| +--ro tp-address | +--ro tp-address | |||
| | +--ro mac-address | | +--ro mac-address | |||
| | | +--ro mac-address? yang:mac-address | | | +--ro mac-address yang:mac-address | |||
| | +--ro ipv4-address | | +--ro ipv4-address | |||
| | | +--ro ipv4-address? inet:ipv4-address | | | +--ro ipv4-address inet:ipv4-address | |||
| | +--ro ipv6-address | | +--ro ipv6-address | |||
| | | +--ro ipv6-address? inet:ipv6-address | | | +--ro ipv6-address inet:ipv6-address | |||
| | +--ro tp-attribute | | +--ro tp-attribute | |||
| | | +--ro tp-attribute-type? address-attribute-type | | | +--ro tp-attribute-type? address-attribute-type | |||
| | | +--ro (tp-attribute-value)? | | | +--ro (tp-attribute-value)? | |||
| | | +--:(ip-prefix) | | | +--:(ip-prefix) | |||
| | | | +--ro ip-prefix? inet:ip-prefix | | | | +--ro ip-prefix? inet:ip-prefix | |||
| | | +--:(bgp) | | | +--:(bgp) | |||
| | | | +--ro bgp? inet:ip-prefix | | | | +--ro bgp? inet:ip-prefix | |||
| | | +--:(tunnel) | | | +--:(tunnel) | |||
| | | | +--ro tunnel-interface? uint32 | | | | +--ro tunnel-interface? uint32 | |||
| | | +--:(pw) | | | +--:(pw) | |||
| | | | +--ro remote-pe-address? inet:ip-address | | | | +--ro remote-pe-address? inet:ip-address | |||
| | | | +--ro pw-id? uint32 | | | | +--ro pw-id? uint32 | |||
| | | +--:(vpls) | | | +--:(vpls) | |||
| | | | +--ro route-distinguisher? uint64 | | | | +--ro route-distinguisher? rt:route-distinguisher | |||
| | | | +--ro sender-ve-id? uint16 | | | | +--ro sender-ve-id? uint16 | |||
| | | | +--ro receiver-ve-id? uint16 | | | | +--ro receiver-ve-id? uint16 | |||
| | | +--:(mpls-mldp) | | | +--:(mpls-mldp) | |||
| | | +--ro (root-address)? | | | +--ro (root-address)? | |||
| | | +--:(ip-address) | | | +--:(ip-address) | |||
| | | | +--ro source-address? inet:ip-address | | | | +--ro source-address? inet:ip-address | |||
| | | | +--ro group-ip-address? inet:ip-address | | | | +--ro group-ip-address? inet:ip-address | |||
| | | +--:(vpn) | | | +--:(vpn) | |||
| | | | +--ro as-number? inet:as-number | | | | +--ro as-number? inet:as-number | |||
| | | +--:(global-id) | | | +--:(global-id) | |||
| | | +--ro lsp-id? string | | | +--ro lsp-id? string | |||
| | +--ro system-info | | +--ro system-info | |||
| | +--ro system-id? router-id | | +--ro system-id? rt:router-id | |||
| +--ro timestamp-type? uint32 | +--ro timestamp-type? uint32 | |||
| +--ro timestamp-sec? uint32 | +--ro timestamp-sec? uint32 | |||
| +--ro timestamp-nanosec? uint32 | +--ro timestamp-nanosec? uint32 | |||
| +--ro ingress-intf-name? if:interface-ref | +--ro ingress-intf-name? if:interface-ref | |||
| +--ro egress-intf-name? if:interface-ref | +--ro egress-intf-name? if:interface-ref | |||
| +--ro queue-depth? uint32 | +--ro queue-depth? uint32 | |||
| +--ro transit-delay? uint32 | +--ro transit-delay? uint32 | |||
| +--ro app-meta-data? uint64 | +--ro app-meta-data? uint64 | |||
| data hierarchy of OAM Retrieval Methods | data hierarchy of OAM Retrieval Methods | |||
| 4. OAM Retrieval Methods YANG Module | 4. OAM Retrieval Methods YANG Module | |||
| <CODE BEGINS> file "ietf-connectionless-oam-methods@2017-08-30.yang" | <CODE BEGINS> file "ietf-connectionless-oam-methods@2017-09-06.yang" | |||
| module ietf-connectionless-oam-methods { | module ietf-connectionless-oam-methods { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; | namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; | |||
| prefix coam-methods; | prefix coam-methods; | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix if; | prefix if; | |||
| } | } | |||
| import ietf-connectionless-oam { | import ietf-connectionless-oam { | |||
| prefix coam; | prefix coam; | |||
| } | } | |||
| organization | organization | |||
| "IETF LIME Working Group"; | "IETF LIME Working Group"; | |||
| contact | contact | |||
| "Deepak Kumar dekumar@cisco.com | "Deepak Kumar dekumar@cisco.com | |||
| Qin Wu bill.wu@huawei.com | Qin Wu bill.wu@huawei.com | |||
| S Raghavan srihari@cisco.com | S Raghavan srihari@cisco.com | |||
| Zitao Wang wangzitao@huawei.com | Zitao Wang wangzitao@huawei.com | |||
| R Rahman rrahman@cisco.com"; | R Rahman rrahman@cisco.com"; | |||
| description | description | |||
| "This YANG module defines the RPCs for | "This YANG module defines the RPC operations for | |||
| connectionless OAM to be used within IETF | connectionless OAM to be used within IETF | |||
| in a protocol Independent manner. | in a protocol Independent manner. | |||
| Functional level abstraction is indendent with | It is assumed that each protocol maps | |||
| YANG modeling. It is assumed that each protocol maps | ||||
| corresponding abstracts to its native format. | corresponding abstracts to its native format. | |||
| Each protocol may extend the YANG model defined | Each protocol may extend the YANG model defined | |||
| here to include protocol specific extensions"; | here to include protocol specific extensions"; | |||
| revision 2017-08-30 { | revision 2017-09-06{ | |||
| description | description | |||
| "02 version"; | "08 version"; | |||
| reference "draft-ietf-lime-yang-connectionless-oam-methods"; | reference "draft-ietf-lime-yang-connectionless-oam-methods"; | |||
| } | } | |||
| rpc continuity-check { | identity status-code{ | |||
| if-feature "coam:continuity-check"; | description | |||
| description | "Base status code"; | |||
| "Generates continuity-check as per RFC7276."; | } | |||
| input { | ||||
| container destination-tp { | identity invalid-cc{ | |||
| base status-code; | ||||
| description | ||||
| "Indicates that the Continuity check message is invalid"; | ||||
| } | ||||
| identity invalid-pd { | ||||
| base status-code; | ||||
| description | ||||
| "Indicates that the path discovery message is invalid"; | ||||
| } | ||||
| identity status-sub-code { | ||||
| description | ||||
| "Base status sub code"; | ||||
| } | ||||
| grouping rpc-input-parameters { | ||||
| container destination-tp { | ||||
| uses coam:tp-address; | uses coam:tp-address; | |||
| description | description | |||
| "Destination test point."; | "Destination test point."; | |||
| } | } | |||
| uses coam:session-type; | leaf source-interface { | |||
| leaf source-interface { | ||||
| type if:interface-ref; | type if:interface-ref; | |||
| mandatory true; | ||||
| description | description | |||
| "Source interface."; | "Source interface."; | |||
| } | } | |||
| leaf outbound-interface { | leaf outbound-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| mandatory true; | ||||
| description | description | |||
| "Outbound interface."; | "Outbound interface."; | |||
| } | } | |||
| leaf count { | ||||
| type empty; | ||||
| description | ||||
| "Specifies the number of | ||||
| packets that will be sent."; | ||||
| } | ||||
| leaf vrf { | leaf vrf { | |||
| type coam:routing-instance-ref; | type coam:routing-instance-ref; | |||
| description | description | |||
| "VRF instance."; | "VRF instance."; | |||
| } | } | |||
| leaf ttl { | description | |||
| "Grouping for RPC input parameters"; | ||||
| } | ||||
| rpc continuity-check { | ||||
| if-feature "coam:continuity-check"; | ||||
| description | ||||
| "Continuity-check RPC operation as per RFC7276."; | ||||
| input { | ||||
| uses rpc-input-parameters; | ||||
| uses coam:session-type { | ||||
| description "If session-type is specified, then session-type | ||||
| must be set to on-demand"; | ||||
| } | ||||
| leaf count { | ||||
| type uint32; | ||||
| default "5"; | ||||
| description | ||||
| "Specifies the number of | ||||
| packets that will be sent. By | ||||
| default, the packet number is | ||||
| set to 5."; | ||||
| } | ||||
| leaf ttl { | ||||
| type uint8; | type uint8; | |||
| default "255"; | default "255"; | |||
| description | description | |||
| "Time to live (TTL)."; | "Time to live (TTL) used to limit lifetime | |||
| of data packet transmitted in the network | ||||
| and prevent looping. The TTL value is decremented | ||||
| for every hop which the packet traverses. If the | ||||
| TTL is zero, the data packet will be discarded."; | ||||
| } | } | |||
| leaf packet-size { | leaf packet-size { | |||
| type uint32 { | type uint32 { | |||
| range "64..10000"; | range "64..10000"; | |||
| } | } | |||
| default "64"; | default "64"; | |||
| description | description | |||
| "Size of ping echo request | "Packet size of continuity-check message, in octets. | |||
| packets, in octets"; | By default, the packet size is set to 64 octets."; | |||
| } | } | |||
| } | } | |||
| output { | output { | |||
| list error-code-list { | container error-code { | |||
| key "response-index"; | ||||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "Response index."; | ||||
| } | ||||
| leaf status-code { | leaf status-code { | |||
| type int32; | type identityref{ | |||
| description | base status-code; | |||
| "Error code is "; | } | |||
| mandatory true; | ||||
| description | ||||
| "Error code for continuity-check message. For example, Error code in | ||||
| ICMPv6 message includes | ||||
| 1-Destination Unreachable | ||||
| 2- Packet Too Big | ||||
| 3- Time Exceeded | ||||
| 4- Parameter Problem [RFC4443]."; | ||||
| } | } | |||
| leaf status-sub-code { | leaf status-sub-code { | |||
| type uint8; | type identityref{ | |||
| description | base status-sub-code; | |||
| "Sub code."; | } | |||
| mandatory true; | ||||
| description | ||||
| "Sub code for continuity-check message. For example Sub code in | ||||
| ICMPv6 Parameter Problem Message includes: | ||||
| 1-Erroneous header field encountered | ||||
| 2-Unrecognized Next Header type encountered | ||||
| 3-Unrecognized IPv6 option encountered."; | ||||
| } | } | |||
| description | description | |||
| "Error code list."; | "Error code and Sub Code for continuity-check message."; | |||
| } | } | |||
| uses coam:continuity-check-data; | uses coam:continuity-check-data; | |||
| } | } | |||
| } | } | |||
| rpc path-discovery { | rpc path-discovery { | |||
| if-feature "coam:path-discovery"; | if-feature "coam:path-discovery"; | |||
| description | description | |||
| "Generates path discovery as per RFC7276."; | "Path discovery RPC operation as per RFC7276."; | |||
| input { | input { | |||
| container destination-tp { | uses rpc-input-parameters; | |||
| uses coam:tp-address; | uses coam:session-type { | |||
| description | description "If session-type is specified, then session-type | |||
| "Destination test point."; | must be set to on-demand"; | |||
| } | } | |||
| uses coam:session-type; | ||||
| leaf source-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Source interface."; | ||||
| } | ||||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Outbound interface."; | ||||
| } | ||||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | ||||
| description | ||||
| "VRF"; | ||||
| } | ||||
| leaf max-ttl { | leaf max-ttl { | |||
| type uint8; | type uint8; | |||
| default "255"; | default "255"; | |||
| description | description | |||
| "Max ttl."; | "Maximum TTL indicates the maixmum number of hops that | |||
| a packet is permitted to travel before being discarded | ||||
| by a router. By default, the maximimum TTL is set to 255."; | ||||
| } | } | |||
| } | } | |||
| output { | output { | |||
| list response-list { | list response-list { | |||
| key "response-index"; | key "response-index"; | |||
| description | description | |||
| "Path discovery response list."; | "Path discovery response list."; | |||
| leaf response-index { | leaf response-index { | |||
| type uint32; | type uint32; | |||
| mandatory true; | ||||
| description | description | |||
| "Response index."; | "Response index."; | |||
| } | } | |||
| leaf status-code { | leaf status-code { | |||
| type int32; | type identityref{ | |||
| base status-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | description | |||
| "Error code for Path Discovery message. | ||||
| "Error code is "; | For example, Error code in ICMPv6 message includes | |||
| 1-Destination Unreachable | ||||
| 2- Packet Too Big | ||||
| 3- Time Exceeded | ||||
| 4- Parameter Problem [RFC4443]. "; | ||||
| } | } | |||
| leaf status-sub-code { | leaf status-sub-code { | |||
| type uint8; | type identityref{ | |||
| base status-sub-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | description | |||
| "Sub code is "; | "Sub code for Path Discovery message. For example Sub code in | |||
| ICMPv6 Parameter Problem Message includes: | ||||
| 1-Erroneous header field encountered | ||||
| 2-Unrecognized Next Header type encountered | ||||
| 3-Unrecognized IPv6 option encountered "; | ||||
| } | } | |||
| description | ||||
| "List of Error code and Sub Code for Path Discovery."; | ||||
| } | } | |||
| uses coam:path-discovery-data; | uses coam:path-discovery-data; | |||
| } | } | |||
| } | } | |||
| } | ||||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. Security Considerations | 5. Security Considerations | |||
| The YANG module defined in this document is designed to be accessed | The YANG module defined in this document is designed to be accessed | |||
| via network management protocols such as NETCONF [RFC6241] or | via network management protocols such as NETCONF [RFC6241] or | |||
| RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | |||
| layer, and the mandatory-to-implement secure transport is Secure | layer, and the mandatory-to-implement secure transport is Secure | |||
| Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | |||
| mandatory-to-implement secure transport is TLS [RFC5246]. | mandatory-to-implement secure transport is TLS [RFC5246]. | |||
| skipping to change at page 20, line 24 ¶ | skipping to change at page 20, line 4 ¶ | |||
| 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-methods | name: ietf-connectionless-oam-methods | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- | namespace: urn:ietf:params:xml:ns:yang:ietf-connectionless-oam- | |||
| methods | methods | |||
| prefix: coam-methods | prefix: coam-methods | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-lime-yang-connectionless-oam] | [I-D.ietf-lime-yang-connectionless-oam] | |||
| Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | Kumar, D., Wang, Z., Wu, Q., Rahman, R., and S. Raghavan, | |||
| "Generic YANG Data Model for Connectionless Operations, | "Generic YANG Data Model for Connectionless Operations, | |||
| Administration, and Maintenance(OAM) protocols", draft- | Administration, and Maintenance(OAM) protocols", draft- | |||
| ietf-lime-yang-connectionless-oam-08 (work in progress), | ietf-lime-yang-connectionless-oam-09 (work in progress), | |||
| August 2017. | August 2017. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, | |||
| editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | DOI 10.17487/RFC5246, August 2008, | |||
| editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | DOI 10.17487/RFC6020, October 2010, | |||
| editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
| DOI 10.17487/RFC6536, March 2012, <https://www.rfc- | DOI 10.17487/RFC6536, March 2012, | |||
| editor.org/info/rfc6536>. | <https://www.rfc-editor.org/info/rfc6536>. | |||
| [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, | [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, | |||
| "Specification of the IP Flow Information Export (IPFIX) | "Specification of the IP Flow Information Export (IPFIX) | |||
| Protocol for the Exchange of Flow Information", STD 77, | Protocol for the Exchange of Flow Information", STD 77, | |||
| RFC 7011, DOI 10.17487/RFC7011, September 2013, | RFC 7011, DOI 10.17487/RFC7011, September 2013, | |||
| <https://www.rfc-editor.org/info/rfc7011>. | <https://www.rfc-editor.org/info/rfc7011>. | |||
| [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | [RFC792] Postel, J., "Internet Control Message Protocol", RFC 792, | |||
| September 1981. | September 1981. | |||
| skipping to change at page 22, line 5 ¶ | skipping to change at page 21, line 30 ¶ | |||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
| Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
| Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
| RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
| <https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
| [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG | ||||
| Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, | ||||
| January 2011, <https://www.rfc-editor.org/info/rfc6087>. | ||||
| [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. | [RFC7276] Mizrahi, T., Sprecher, N., Bellagamba, E., and Y. | |||
| Weingarten, "An Overview of Operations, Administration, | Weingarten, "An Overview of Operations, Administration, | |||
| and Maintenance (OAM) Tools", RFC 7276, | and Maintenance (OAM) Tools", RFC 7276, | |||
| DOI 10.17487/RFC7276, June 2014, <https://www.rfc- | DOI 10.17487/RFC7276, June 2014, | |||
| editor.org/info/rfc7276>. | <https://www.rfc-editor.org/info/rfc7276>. | |||
| [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., | [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., | |||
| Aldrin, S., and M. Chen, "Detecting Multiprotocol Label | Aldrin, S., and M. Chen, "Detecting Multiprotocol Label | |||
| Switched (MPLS) Data-Plane Failures", RFC 8029, | Switched (MPLS) Data-Plane Failures", RFC 8029, | |||
| DOI 10.17487/RFC8029, March 2017, <https://www.rfc- | DOI 10.17487/RFC8029, March 2017, | |||
| editor.org/info/rfc8029>. | <https://www.rfc-editor.org/info/rfc8029>. | |||
| Appendix A. Appdendix A.1 | Appendix A. Appdendix A.1 Extending Connectionless OAM Method Module | |||
| Example | ||||
| The following is an example of extensions possible to "ietf- | The following is an example of extensions possible to "ietf- | |||
| connectionless-oam-methods" YANG model defined in this document. | connectionless-oam-methods" YANG model defined in this document. | |||
| The snippet below depicts an example of augmenting the "ietf- | The snippet below depicts an example of augmenting the "ietf- | |||
| connectionless-oam-methods" YANG model with ICMP ping attributes: | connectionless-oam-methods" YANG model with ICMP ping attributes: | |||
| augment "/coam-methods:continutiy-check" | augment "/coam-methods:continutiy-check" | |||
| +"/coam-methods:output"{ | +"/coam-methods:output"{ | |||
| container session-rtt-statistics{ | container session-rtt-statistics{ | |||
| skipping to change at page 22, line 48 ¶ | skipping to change at page 22, line 31 ¶ | |||
| leaf avg-rtt{ | leaf avg-rtt{ | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The current average ping round-trip-time(RTT)"; | "The current average ping round-trip-time(RTT)"; | |||
| } | } | |||
| description | description | |||
| "This container presents the ping round-trip-time statistics."; | "This container presents the ping round-trip-time statistics."; | |||
| } | } | |||
| } | } | |||
| Appendix B. Appendix A.2 | Appendix B. Appendix A.2 Example of new retrieval procedures Model | |||
| The following is an example related to the YANG model defined in this | ||||
| document. The example discusses persistent methods. | ||||
| The persistent RPC operations are commands to trigger persistent | ||||
| continuity check or path discovery OAM while specifying the options | ||||
| for data-export from the device. Internet Protocol Flow Information | ||||
| Export (IPFIX) [RFC7011] or YANG-push [I-D.ietf-netconf-yang-push]. | ||||
| are currently outlined here as data export options and more can be | ||||
| added in future. It should be noted that the persistent methods are | ||||
| used to trigger create, modify and delete the persistent state | ||||
| associated with the data export options. The data export specific | ||||
| configurations are beyond the scope of this document. | ||||
| B.1. OAM Retrieval Persistent Methods YANG Module | As discussed in introduction section of this document, the new | |||
| retrieval procedures can be defined for retrieval of the same data | ||||
| defined by base YANG Data model for connectionless OAM protocols. | ||||
| This appendix demonstrates how the base connectionless OAM data model | ||||
| can be extended to support persistent data retrieval besides on | ||||
| demand retrieval procedures defined in section 3,i.e.,first retrieve | ||||
| persistent-id based on destination test point location information | ||||
| and then retrieve export details based on persistent-id. Internet | ||||
| Protocol Flow Information Export (IPFIX) [RFC7011] or YANG-push | ||||
| [I-D.ietf-netconf-yang-push]. are currently outlined here as data | ||||
| export options and more can be added in future. | ||||
| module example-cl-oam-persistent-methods { | The YANG module "example-cl-oam-persistent-methods" shown below is | |||
| namespace "http://example.com/cl-oam-persistent-methods"; | intended as an illustration rather than a real definition of a RPC | |||
| prefix pcoam-methods; | operation model for persistent data retrieval. For the sake of | |||
| brevity, this module does not obey all the guidelines specified in | ||||
| [RFC6087]. | ||||
| import ietf-interfaces { | module example-cl-oam-persistent-methods { | |||
| prefix if; | namespace "http://example.com/cl-oam-persistent-methods"; | |||
| prefix pcoam-methods; | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-connectionless-oam { | ||||
| prefix coam; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix yang; | ||||
| } | ||||
| identity export-method { | ||||
| description | ||||
| "Base identity to represent a conceptual export-method."; | ||||
| } | } | |||
| import ietf-connectionless-oam { | identity ipfix-export { | |||
| prefix coam; | base export-method; | |||
| description | ||||
| "IPFIX based export. Configuration provided separately."; | ||||
| } | } | |||
| import ietf-yang-types { | identity yang-push-export { | |||
| prefix yang; | base export-method; | |||
| description | ||||
| "Yang-push from draft-ietf-netconf-yang-push"; | ||||
| } | ||||
| typedef export-method { | ||||
| type identityref { | ||||
| base export-method; | ||||
| } | ||||
| description | ||||
| "Export method type."; | ||||
| } | ||||
| typedef change-type { | ||||
| type enumeration { | ||||
| enum "create" { | ||||
| description | ||||
| "Change due to a create."; | ||||
| } | ||||
| enum "delete" { | ||||
| description | ||||
| "Change due to a delete."; | ||||
| } | ||||
| enum "modify" { | ||||
| description | ||||
| "Change due to an update."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Different types of changes that may occur."; | ||||
| } | } | |||
| identity export-method { | rpc cc-get-persistent-id { | |||
| description | if-feature "coam:continuity-check"; | |||
| "Base identity to represent a conceptual export-method."; | description | |||
| } | "Obtains continuity-check persistent identification given mapping | |||
| parameters as input."; | ||||
| input { | ||||
| container destination-tp { | ||||
| uses coam:tp-address; | ||||
| description | ||||
| "Destination test point."; | ||||
| } | ||||
| uses coam:session-type; | ||||
| leaf source-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Source interface."; | ||||
| } | ||||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Outbound interface."; | ||||
| } | ||||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | ||||
| description | ||||
| "VRF instance."; | ||||
| } | ||||
| } | ||||
| output { | ||||
| container error-code { | ||||
| leaf status-code { | ||||
| type identityref{ | ||||
| base status-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | ||||
| "Error code."; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type identityref{ | ||||
| base status-sub-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | ||||
| "Sub code for CC."; | ||||
| } | ||||
| description | ||||
| "Error code and Sub Code."; | ||||
| } | ||||
| identity ipfix-export { | leaf cc-persistent-id { | |||
| base export-method; | type string; | |||
| description | description | |||
| "IPFIX based export. Configuration provided separately."; | "Id to act as a cookie."; | |||
| } | } | |||
| } | ||||
| } | ||||
| identity yang-push-export { | rpc cc-persistent-get-export-details { | |||
| base export-method; | if-feature "coam:continuity-check"; | |||
| description | description | |||
| "Yang-push from draft-ietf-netconf-yang-push"; | "Given the persistent id, gets the configuration | |||
| } | options, details related to the configured data | |||
| export."; | ||||
| input { | ||||
| leaf cc-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Persistent Id for use as a key in search."; | ||||
| } | ||||
| } | ||||
| output { | ||||
| container error-code { | ||||
| leaf status-code { | ||||
| type identityref{ | ||||
| base status-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | ||||
| "Error code."; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type identityref{ | ||||
| base status-sub-code; | ||||
| } | ||||
| mandatory true; | ||||
| description | ||||
| "Sub code for CC."; | ||||
| } | ||||
| description | ||||
| "Error code and Sub Code."; | ||||
| } | ||||
| typedef export-method { | leaf data-export-method { | |||
| type identityref { | type export-method; | |||
| base export-method; | description | |||
| } | "Type of export in use."; | |||
| description | } | |||
| "Export method type."; | ||||
| } | ||||
| typedef change-type { | choice cc-trigger { | |||
| type enumeration { | description | |||
| enum "create" { | "Necessary conditions for | |||
| description | periodic or on-change trigger."; | |||
| "Change due to a create."; | case periodic { | |||
| } | description | |||
| enum "delete" { | "Periodic reports."; | |||
| description | leaf period { | |||
| "Change due to a delete."; | type yang:timeticks; | |||
| } | description | |||
| enum "modify" { | "Time interval between reports."; | |||
| description | } | |||
| "Change due to an update."; | leaf start-time { | |||
| } | type yang:date-and-time; | |||
| } | description | |||
| description | "Timestamp from which reports were started."; | |||
| "Different types of changes that may occur."; | } | |||
| } | } | |||
| case on-change { | ||||
| description | ||||
| "On-change trigger and not periodic."; | ||||
| leaf all-data-on-start { | ||||
| type boolean; | ||||
| description | ||||
| "Full update done on start or not."; | ||||
| } | ||||
| leaf-list excluded-change { | ||||
| type change-type; | ||||
| description | ||||
| "Changes that will not trigger an update."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| rpc cc-persistent-create { | rpc pd-get-persistent-id { | |||
| if-feature "coam:continuity-check"; | if-feature "coam:path-discovery"; | |||
| description | description | |||
| "Generates persistent continuity-check."; | "Obtains persistent path discovery identification."; | |||
| input { | ||||
| container destination-tp { | ||||
| uses coam:tp-address; | ||||
| description | ||||
| "Destination test point."; | ||||
| } | ||||
| uses coam:session-type; | ||||
| leaf source-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Source interface."; | ||||
| } | ||||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Outbound interface."; | ||||
| } | ||||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | ||||
| description | ||||
| "VRF instance."; | ||||
| } | ||||
| leaf ttl { | ||||
| type uint8; | ||||
| default "255"; | ||||
| description | ||||
| "Time to live (TTL)."; | ||||
| } | ||||
| leaf data-export-method { | ||||
| type export-method; | ||||
| description | ||||
| "Type of export."; | ||||
| } | ||||
| choice cc-trigger { | ||||
| description | ||||
| "Defines necessary conditions for | ||||
| periodic or on-change trigger."; | ||||
| case periodic { | ||||
| description | ||||
| "Periodic reports."; | ||||
| leaf period { | ||||
| type yang:timeticks; | ||||
| description | ||||
| "Time interval between reports."; | ||||
| } | ||||
| leaf start-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Timestamp from which reports are started."; | ||||
| } | ||||
| } | ||||
| case on-change { | ||||
| description | ||||
| "On-change trigger and not periodic."; | ||||
| leaf all-data-on-start { | ||||
| type boolean; | ||||
| description | ||||
| "Full update needed on start or not."; | ||||
| } | ||||
| leaf-list excluded-change { | ||||
| type change-type; | ||||
| description | ||||
| "Restrict which changes trigger an update."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| output { | ||||
| list error-code-list { | ||||
| key "response-index"; | ||||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "Response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "Error code."; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "Sub code."; | ||||
| } | ||||
| description | ||||
| "Error code list."; | ||||
| } | ||||
| leaf cc-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Id to act as a cookie."; | ||||
| } | ||||
| } | ||||
| } | ||||
| rpc cc-persistent-modify { | ||||
| if-feature "coam:continuity-check"; | ||||
| description | ||||
| "Modifies persistent continuity-check | ||||
| as per RFC7276."; | ||||
| input { | ||||
| leaf cc-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Cookie Id to be used for modifications."; | ||||
| } | ||||
| leaf data-export-method { | ||||
| type export-method; | ||||
| description | ||||
| "Type of export to use."; | ||||
| } | ||||
| choice cc-trigger { | ||||
| description | ||||
| "Defines necessary conditions for | ||||
| periodic or on-change trigger."; | ||||
| case periodic { | ||||
| description | ||||
| "Periodic reports."; | ||||
| leaf period { | input { | |||
| type yang:timeticks; | container destination-tp { | |||
| description | uses coam:tp-address; | |||
| "Time interval between reports."; | description | |||
| } | "Destination test point."; | |||
| leaf start-time { | } | |||
| type yang:date-and-time; | uses coam:session-type; | |||
| description | leaf source-interface { | |||
| "Timestamp from which reports are started."; | type if:interface-ref; | |||
| } | description | |||
| } | "Source interface."; | |||
| case on-change { | } | |||
| description | leaf outbound-interface { | |||
| "On-change trigger and not periodic."; | type if:interface-ref; | |||
| leaf all-data-on-start { | description | |||
| type boolean; | "Outbound interface."; | |||
| description | } | |||
| "Full update needed on start or not."; | leaf vrf { | |||
| } | type coam:routing-instance-ref; | |||
| leaf-list excluded-change { | description | |||
| type change-type; | "VRF"; | |||
| description | } | |||
| "Restrict which changes trigger an update."; | } | |||
| } | output { | |||
| } | list response-list { | |||
| } | key "response-index"; | |||
| } | description | |||
| output { | "Path discovery response list."; | |||
| list error-code-list { | leaf response-index { | |||
| key "response-index"; | type uint32; | |||
| leaf response-index { | mandatory true; | |||
| type uint32; | description | |||
| description | "Response index."; | |||
| "Response index."; | } | |||
| } | leaf status-code { | |||
| leaf status-code { | type identityref { | |||
| type int32; | base status-code; | |||
| description | } | |||
| "Error code"; | mandatory true; | |||
| } | description | |||
| leaf status-sub-code { | "Error code for Persistent Path Discovery Information. "; | |||
| type uint8; | } | |||
| description | leaf status-sub-code { | |||
| "Sub code."; | type identityref{ | |||
| } | base status-sub-code; | |||
| description | } | |||
| "Error code list."; | mandatory true; | |||
| } | description | |||
| leaf cc-persistent-id { | "Sub code for Persistent Path Discovery Information. "; | |||
| type string; | } | |||
| description | leaf pd-persistent-id { | |||
| "Id to represent a cookie."; | type string; | |||
| } | description | |||
| } | "Id to act as a cookie."; | |||
| } | } | |||
| rpc cc-persistent-delete { | } | |||
| if-feature "coam:continuity-check"; | } | |||
| description | } | |||
| "Deletes persistent continuity-check as per RFC7276."; | ||||
| input { | rpc pd-persistent-get-export-details { | |||
| leaf cc-persistent-id { | if-feature "coam:path-discovery"; | |||
| type string; | description | |||
| description | "Given the persistent id, gets the configuration | |||
| "Cookie Id to be used in deletion."; | options, details related to the configured data | |||
| } | export."; | |||
| } | input { | |||
| output { | leaf cc-persistent-id { | |||
| list error-code-list { | type string; | |||
| key "response-index"; | description | |||
| leaf response-index { | "Persistent Id for use as a key in search."; | |||
| type uint32; | ||||
| description | ||||
| "Response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "Error code."; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "Sub code."; | ||||
| } | ||||
| description | ||||
| "Error code list."; | ||||
| } | ||||
| } | } | |||
| } | } | |||
| rpc pd-persistent-create { | output { | |||
| description | list response-list { | |||
| "Generates persistent path discovery."; | key "response-index"; | |||
| input { | description | |||
| container destination-tp { | "Path discovery response list."; | |||
| uses coam:tp-address; | leaf response-index { | |||
| description | type uint32; | |||
| "Destination test point."; | mandatory true; | |||
| } | ||||
| uses coam:session-type; | ||||
| leaf source-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Source interface."; | ||||
| } | ||||
| leaf outbound-interface { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Outbound interface."; | ||||
| } | ||||
| leaf vrf { | ||||
| type coam:routing-instance-ref; | ||||
| description | ||||
| "VRF"; | ||||
| } | ||||
| leaf max-ttl { | ||||
| type uint8; | ||||
| default "255"; | ||||
| description | ||||
| "Max ttl."; | ||||
| } | ||||
| leaf data-export-method { | ||||
| type export-method; | ||||
| description | description | |||
| "Type of export."; | "Response index."; | |||
| } | } | |||
| choice pd-trigger { | leaf status-code { | |||
| description | type identityref{ | |||
| "Defines necessary conditions | base status-code; | |||
| for periodic or on-change | ||||
| trigger."; | ||||
| case periodic { | ||||
| description | ||||
| "Periodic reports."; | ||||
| leaf period { | ||||
| type yang:timeticks; | ||||
| description | ||||
| "Time interval between reports."; | ||||
| } | ||||
| leaf start-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "Timestamp from which reports are started."; | ||||
| } | ||||
| } | ||||
| case on-change { | ||||
| description | ||||
| "On-change trigger and not periodic."; | ||||
| leaf all-data-on-start { | ||||
| type boolean; | ||||
| description | ||||
| "Full update needed on start or not."; | ||||
| } | ||||
| leaf-list excluded-change { | ||||
| type change-type; | ||||
| description | ||||
| "Restrict which changes trigger an update."; | ||||
| } | ||||
| } | } | |||
| } | mandatory true; | |||
| } | ||||
| output { | ||||
| list response-list { | ||||
| key "response-index"; | ||||
| description | description | |||
| "Path discovery response list."; | "Error code for Persistent Path Discovery Creation. "; | |||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "Response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "Error code is "; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "Sub code is "; | ||||
| } | ||||
| leaf pd-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Id to act as a cookie."; | ||||
| } | ||||
| } | } | |||
| } | leaf status-sub-code { | |||
| } | type identityref{ | |||
| rpc pd-persistent-modify { | base status-sub-code; | |||
| description | } | |||
| "Modifies persistent path discovery."; | mandatory true; | |||
| input { | ||||
| leaf pd-persistent-id { | ||||
| type string; | ||||
| description | description | |||
| "Cookie Id to be used for modifications."; | "Sub code for Persistent Path Discovery Creation. "; | |||
| } | } | |||
| leaf data-export-method { | leaf data-export-method { | |||
| type export-method; | type export-method; | |||
| description | description | |||
| "Type of export."; | "Type of export."; | |||
| } | } | |||
| choice pd-trigger { | choice pd-trigger { | |||
| description | description | |||
| "Defines necessary conditions for periodic or on-change | "Necessary conditions | |||
| for periodic or on-change | ||||
| trigger."; | trigger."; | |||
| case periodic { | case periodic { | |||
| description | description | |||
| "Periodic reports."; | "Periodic reports."; | |||
| leaf period { | leaf period { | |||
| type yang:timeticks; | type yang:timeticks; | |||
| description | description | |||
| "Time interval between reports."; | "Time interval between reports."; | |||
| } | } | |||
| leaf start-time { | leaf start-time { | |||
| skipping to change at page 31, line 40 ¶ | skipping to change at page 29, line 36 ¶ | |||
| description | description | |||
| "Timestamp from which reports are started."; | "Timestamp from which reports are started."; | |||
| } | } | |||
| } | } | |||
| case on-change { | case on-change { | |||
| description | description | |||
| "On-change trigger and not periodic."; | "On-change trigger and not periodic."; | |||
| leaf all-data-on-start { | leaf all-data-on-start { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Full update needed on start or not."; | "Full update done on start or not."; | |||
| } | } | |||
| leaf-list excluded-change { | leaf-list excluded-change { | |||
| type change-type; | type change-type; | |||
| description | description | |||
| "Restrict which changes trigger an update."; | "Changes that will not trigger an update."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| output { | ||||
| list response-list { | ||||
| key "response-index"; | ||||
| description | ||||
| "path discovery response list."; | ||||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "error code is "; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "sub code is "; | ||||
| } | ||||
| leaf pd-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Id to act as a cookie."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| rpc pd-persistent-delete { | ||||
| description | ||||
| "Deletes persistent path discovery."; | ||||
| input { | ||||
| leaf pd-persistent-id { | ||||
| type string; | ||||
| description | ||||
| "Cookie Id to be used in deletion."; | ||||
| } | ||||
| } | ||||
| output { | ||||
| list response-list { | ||||
| key "response-index"; | ||||
| description | ||||
| "path discovery response list."; | ||||
| leaf response-index { | ||||
| type uint32; | ||||
| description | ||||
| "response index."; | ||||
| } | ||||
| leaf status-code { | ||||
| type int32; | ||||
| description | ||||
| "error code is "; | ||||
| } | ||||
| leaf status-sub-code { | ||||
| type uint8; | ||||
| description | ||||
| "sub code is "; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | } | |||
| } | } | |||
| } | ||||
| Authors' Addresses | Authors' Addresses | |||
| Deepak Kumar | Deepak Kumar | |||
| CISCO Systems | CISCO Systems | |||
| 510 McCarthy Blvd | 510 McCarthy Blvd | |||
| Milpitas, CA 95035 | Milpitas, CA 95035 | |||
| USA | USA | |||
| Email: dekumar@cisco.com | Email: dekumar@cisco.com | |||
| End of changes. 144 change blocks. | ||||
| 725 lines changed or deleted | 572 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/ | ||||