| < draft-ietf-lime-yang-connectionless-oam-01.txt | draft-ietf-lime-yang-connectionless-oam-02.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: April 23, 2017 Q. Wu | Expires: May 4, 2017 Q. Wu | |||
| Huawei | Huawei | |||
| R. Rahman | R. Rahman | |||
| S. Raghavan | S. Raghavan | |||
| Cisco | Cisco | |||
| October 20, 2016 | October 31, 2016 | |||
| Generic YANG Data Model for Connection Less Operations, Administration, | Generic YANG Data Model for Connectionless Operations, Administration, | |||
| and Maintenance(OAM) protocols | and Maintenance(OAM) protocols | |||
| draft-ietf-lime-yang-connectionless-oam-01 | draft-ietf-lime-yang-connectionless-oam-02 | |||
| Abstract | Abstract | |||
| This document presents a base YANG Data model for connectionless OAM | This document presents a base YANG Data model for connectionless OAM | |||
| protocols. It provides a technology-independent abstraction of key | protocols. It provides a technology-independent abstraction of key | |||
| OAM constructs for connectionless protocols. The Based model | OAM constructs for connectionless protocols. The Based model | |||
| presented here can be extended to include technology specific | 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 nested OAM workflows (i.e., performing OAM functions at | support nested OAM workflows (i.e., performing OAM functions at | |||
| different or same levels through a unified interface). | different or same levels through a unified interface). | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on April 23, 2017. | This Internet-Draft will expire on May 4, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
| 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 | 3. Overview of the Connectionless OAM Model . . . . . . . . . . 5 | |||
| 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. TP Address . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.3. OAM-layers . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.4. Test Point Locations Information . . . . . . . . . . . . 7 | 3.4. Test Point Locations Information . . . . . . . . . . . . 7 | |||
| 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 | 3.5. Test Point Locations . . . . . . . . . . . . . . . . . . 7 | |||
| 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 | 3.6. Path Discovery Data . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | 3.7. Continuity Check Data . . . . . . . . . . . . . . . . . . 8 | |||
| 3.8. RPC definitions . . . . . . . . . . . . . . . . . . . . . 8 | 3.8. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.9. Relation with other OAM YANG Model . . . . . . . . . . . 11 | 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.10. OAM data hierarchy . . . . . . . . . . . . . . . . . . . 11 | 5. CL model applicability . . . . . . . . . . . . . . . . . . . 43 | |||
| 4. OAM YANG Module . . . . . . . . . . . . . . . . . . . . . . . 28 | 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 5. CL model applicability . . . . . . . . . . . . . . . . . . . 59 | 5.1.1. technology type extension . . . . . . . . . . . . . . 44 | |||
| 5.1. BFD Extension . . . . . . . . . . . . . . . . . . . . . . 59 | 5.1.2. test point attributes extension . . . . . . . . . . . 44 | |||
| 5.1.1. technology type extension . . . . . . . . . . . . . . 59 | 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 46 | |||
| 5.1.2. test point attributes extension . . . . . . . . . . . 60 | 5.2.1. technology type extension . . . . . . . . . . . . . . 47 | |||
| 5.2. LSP ping extension . . . . . . . . . . . . . . . . . . . 62 | 5.2.2. test point attributes extension . . . . . . . . . . . 47 | |||
| 5.2.1. technology type extension . . . . . . . . . . . . . . 62 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 48 | |||
| 5.2.2. test point attributes extension . . . . . . . . . . . 63 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 64 | 8. Normative References . . . . . . . . . . . . . . . . . . . . 49 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 64 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 8. Normative References . . . . . . . . . . . . . . . . . . . . 64 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 | ||||
| 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). | |||
| 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] 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. | |||
| In this document, we present two modules, one to represent the base | In this document, we presents a base YANG Data model for | |||
| independent and stand-alone YANG data model for connectionless OAM | connectionless OAM protocols. The generic YANG model for | |||
| protocols and the other one focuses on data retrival procedures like | connectionless OAM only includes configuration data and state data. | |||
| RPCs. The split module approach avoids mixing the models for the | It can be used in conjunction with data retrieval method model[lime | |||
| retrieved-data from the retrieval procedures. It is expected that | retrieval methods], which focuses on data retrival procedures like | |||
| retrieval procedures would evolve faster than the data model and will | RPC. However it also can be used independently of data retrieval | |||
| allow new procedures to be defined for retrieval of the same data | method model. | |||
| defined by the base data model. This also allows the data model to | ||||
| change at its own pace. | ||||
| 2. Conventions used in this document | 2. Conventions used in this document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| The following terms are defined in [RFC6241] and are not redefined | The following terms are defined in [RFC6241] and are not redefined | |||
| here: | here: | |||
| skipping to change at page 4, line 4 ¶ | skipping to change at page 3, line 47 ¶ | |||
| o state data | o state data | |||
| The following terms are defined in [RFC6020] and are not redefined | The following terms are defined in [RFC6020] and are not redefined | |||
| here: | here: | |||
| o augment | o augment | |||
| o data model | o data model | |||
| o data node | o data node | |||
| The terminology for describing YANG data models is found in | The terminology for describing YANG data models is found in | |||
| [RFC6020]. | [RFC6020]. | |||
| 2.1. Terminology | 2.1. Terminology | |||
| TP - Test Point | TP - Test Point | |||
| MAC - Media Access Control | MAC - Media Access Control | |||
| BFD - Bidirectional Forwarding Detection | BFD - Bidirectional Forwarding Detection | |||
| TLV - Type Length Value | ||||
| RPC - A Remote Procedure Call, as used within the NETCONF protocol | RPC - A Remote Procedure Call, as used within the NETCONF protocol | |||
| 2.2. Tree Diagrams | 2.2. Tree Diagrams | |||
| A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
| this document. The meaning of the symbols in these diagrams is as | this document. The meaning of the symbols in these diagrams is as | |||
| follows: | follows: | |||
| Each node is printed as: | Each node is printed as: | |||
| skipping to change at page 5, line 39 ¶ | skipping to change at page 5, line 30 ¶ | |||
| out of test-point-location-info to make it addressing agnostic and | out of test-point-location-info to make it addressing agnostic and | |||
| allow varied composition. Depending upon the choice of the location- | allow varied composition. Depending upon the choice of the location- | |||
| type (determined by the tp-address-vrf), the containers differ in its | type (determined by the tp-address-vrf), the containers differ in its | |||
| composition of test-point-locations while the test-point-location- | composition of test-point-locations while the test-point-location- | |||
| info, is a common aspect of every test-point-location. The vrf is | info, is a common aspect of every test-point-location. The vrf is | |||
| used to describe the corresponding network instance. The tp- | used to describe the corresponding network instance. The tp- | |||
| technology indicate oam technology details. The tp-tools describe | technology indicate oam technology details. The tp-tools describe | |||
| the oam tools supported. The connectionless-oam- layers is used to | the oam tools supported. The connectionless-oam- layers is used to | |||
| describe the relationship of one test point with other test points. | describe the relationship of one test point with other test points. | |||
| The level in oam-layers indicate whether related oam test point is | The level in oam-layers indicate whether related oam test point is | |||
| client layer, server layer or same or stiched layer. The Model is | client layer, server layer or same layer. The Model is augmented to | |||
| augmented to /nd:networks/nd:network/nd:node using Test Point | /nd:networks/nd:network/nd:node using Test Point Locations defined | |||
| Locations defined below. | below. | |||
| 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 | o MAC address | |||
| o IPv4 or IPv6 address | o IPv4 or IPv6 address | |||
| o a pair of source, destination addresses, and interface (Useful for | o a pair of source, destination addresses, and interface (Useful for | |||
| BFD) | BFD) | |||
| o FEC | o FEC | |||
| o System-id to represent the device or node. | o System-id to represent the device or node. | |||
| 3.2. Tools | 3.2. Tools | |||
| In connectionless OAM, the tools attribute is used to describe a | In connectionless OAM, the tools attribute is used to describe a | |||
| skipping to change at page 7, line 51 ¶ | skipping to change at page 7, line 51 ¶ | |||
| 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 RPCs. Path | retrieved by any data retrieval methods including RPCs. Path | |||
| discovery data output from methods, includes src-test-point, dst- | discovery data output from methods, includes src-test-point, dst- | |||
| test-point, sequence-number, hop-cnt, session statistics of various | test-point, sequence-number, hop-cnt, session statistics of various | |||
| kinds,path verification and path trace related information. Path | kinds,path verification and path trace related information. Path | |||
| discovery includes data to be retrieved on a per-hop basis via a list | discovery includes data to be retrieved on a per-hop basis via a list | |||
| of path-trace-info-list which includes information like timestamps, | of path-trace-info-list which includes information like timestamps, | |||
| ingress-interface, egress-interface and app-meta-data. The path | ingress-interface, egress-interface and app-meta-data. The path | |||
| discovery data model is made generic enough to allow active, passive | discovery data model is made generic enough to allow active, passive | |||
| and hybrid OAMs to do the retrieval. None of the fields are made | and hybrid OAMs to do the retrieval. None of the fields are made | |||
| mandatory for that reason. | mandatory for that reason. Noted that the retrieval methods are | |||
| defined in [lime retrieval methods]. | ||||
| 3.7. Continuity Check Data | 3.7. Continuity Check Data | |||
| This is a generic grouping for continuity check data model that can | This is a generic grouping for continuity check data model that can | |||
| be retrieved by any data retrieval methods including RPCs. | be retrieved by any data retrieval methods including RPCs. | |||
| Continuity check data output from methods, includes src-test-point, | Continuity check data output from methods, includes src-test-point, | |||
| dst-test-point, sequence-number, hop-cnt and session statistics of | dst-test-point, sequence-number, hop-cnt and session statistics of | |||
| various kinds. The continuity check data model is made generic | various kinds. The continuity check data model is made generic | |||
| enough to allow active, passive and hybrid OAMs to do the retrieval. | enough to allow active, passive and hybrid OAMs to do the retrieval. | |||
| None of the fields are made mandatory for that reason. | None of the fields are made mandatory for that reason. Noted that | |||
| the retrieval methods are defined in [lime retrieval methods]. | ||||
| 3.8. RPC definitions | ||||
| The rpc model facilitates issuing commands to a NETCONF server (in | ||||
| this case to the device that need to execute the OAM command) and | ||||
| obtaining a response. | ||||
| Under connectionless-oam-methods module, we summarize the common OAM | ||||
| functions and define the generic rpc commands: continuity-check and | ||||
| path-discovery. In practice, these commands are supported by | ||||
| corresponding technology-specific OAM tools [RFC7276]. For example, | ||||
| for the IP OAM model, the continuity-check rpc corresponds to the IP | ||||
| Ping, while the path-discovery rpc command corresponds to IP | ||||
| Traceroute. | ||||
| Note that the rpc command presented in this document is the base | ||||
| building block, which is used to derive a model for a technology- | ||||
| specific OAM(i.e., icmp ping, lsp ping), the base building block | ||||
| should be extended with corresponding technology specific parameters. | ||||
| To facilitate this and for future enhancements to data retrieval | ||||
| methods, the RPCs are captured under a separate module. | ||||
| The generic path-discovery-data and continuity-check-data are used as | ||||
| data outputs from the different RPCs described in the document. | ||||
| Similar methods including other RPCs can retrieve the data using the | ||||
| same data model. | ||||
| rpc continuity-check { | ||||
| if-feature coam:continuity-check; | ||||
| description | ||||
| "Generates continuity-check as per RFC7276."; | ||||
| 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 count { | ||||
| type uint32; | ||||
| default "5"; | ||||
| 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 | ||||
| "Time to live (TTL)."; | ||||
| } | ||||
| leaf packet-size { | ||||
| type uint32 { | ||||
| range "64..10000"; | ||||
| } | ||||
| default "64"; | ||||
| description | ||||
| "Size of ping echo request packets, in octets"; | ||||
| } | ||||
| } | ||||
| 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; | ||||
| } | ||||
| } | ||||
| rpc path-discovery { | ||||
| description | ||||
| "Generates path discovery as per RFC7276."; | ||||
| 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"; | ||||
| } | ||||
| leaf max-ttl { | ||||
| type uint8; | ||||
| default "255"; | ||||
| description | ||||
| "max ttl."; | ||||
| } | ||||
| } | ||||
| 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 "; | ||||
| } | ||||
| } | ||||
| uses coam:path-discovery-data; | ||||
| } | ||||
| } | ||||
| Snippet of data hierarchy related to rpc calls | ||||
| 3.9. Relation with other OAM YANG Model | ||||
| In this document we define a generic YANG data model for | ||||
| connectionless OAM protocols. The other model defined adds generic | ||||
| data-retrieval methods. The YANG data model defined here is generic | ||||
| such that other technologies can extend it for technology specific | ||||
| needs. The Generic YANG model acts as the root for other OAM YANG | ||||
| models. This allows users to traverse between different OAM | ||||
| protocols at ease through a uniform API set. The Generic YANG model | ||||
| for OAM provides a framework where technology- specific YANG models | ||||
| can choose to inherit constructs from the base YANG models without | ||||
| needing to redefine them within the sub-technology. | ||||
| 3.10. 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 oper {continuity-check}? | +--ro oper {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 | |||
| skipping to change at page 20, line 5 ¶ | skipping to change at page 16, line 23 ¶ | |||
| | +--:(tools-pw) | | +--:(tools-pw) | |||
| | +--ro rfc5085? boolean | | +--ro rfc5085? boolean | |||
| | +--ro pw_rfc5885? boolean | | +--ro pw_rfc5885? boolean | |||
| | +--ro rfc6423? boolean | | +--ro rfc6423? boolean | |||
| | +--ro rfc6310? boolean | | +--ro rfc6310? boolean | |||
| | +--ro rfc7023? boolean | | +--ro rfc7023? boolean | |||
| +--rw oam-layers* [index] | +--rw oam-layers* [index] | |||
| +--rw index uint16 | +--rw index uint16 | |||
| +--rw level? int32 | +--rw level? int32 | |||
| module: ietf-connectionless-oam-methods | ||||
| rpcs: | ||||
| +---x continuity-check {coam:continuity-check}? | ||||
| | +---w input | ||||
| | | +---w destination-tp | ||||
| | | | +---w tp-address-type-value? identityref | ||||
| | | | +---w (tp-address)? | ||||
| | | | +--:(mac-address) | ||||
| | | | | +---w mac-address? yang:mac-address | ||||
| | | | +--:(ipv4-address) | ||||
| | | | | +---w ipv4-address? inet:ipv4-address | ||||
| | | | +--:(ipv6-address) | ||||
| | | | | +---w ipv6-address? inet:ipv6-address | ||||
| | | | +--:(src-dst-address) | ||||
| | | | | +---w src-ip-address? inet:ip-address | ||||
| | | | | +---w dst-ip-address? inet:ip-address | ||||
| | | | | +---w Interface? if:interface-ref | ||||
| | | | +--:(fec) | ||||
| | | | | +---w fec-type? fec-type | ||||
| | | | | +---w (fec-value)? | ||||
| | | | | +--:(ip-prefix) | ||||
| | | | | | +---w ip-prefix? inet:ip-prefix | ||||
| | | | | +--:(bgp) | ||||
| | | | | | +---w bgp? inet:ip-prefix | ||||
| | | | | +--:(tunnel) | ||||
| | | | | | +---w tunnel-interface? uint32 | ||||
| | | | | +--:(pw) | ||||
| | | | | | +---w remote-pe-address? inet:ip-address | ||||
| | | | | | +---w pw-id? uint32 | ||||
| | | | | +--:(vpls) | ||||
| | | | | | +---w route-distinguisher? uint32 | ||||
| | | | | | +---w sender-ve-id? uint32 | ||||
| | | | | | +---w receiver-ve-id? uint32 | ||||
| | | | | +--:(mpls-mldp) | ||||
| | | | | +---w (root-address)? | ||||
| | | | | +--:(ip-address) | ||||
| | | | | | +---w source-address? inet:ip-address | ||||
| | | | | | +---w group-ip-address? IP-Multicast-Group-Address | ||||
| | | | | +--:(vpn) | ||||
| | | | | | +---w as-number? inet:as-number | ||||
| | | | | +--:(global-id) | ||||
| | | | | +---w lsp-id? string | ||||
| | | | +--:(tlv-address) | ||||
| | | | | +---w tlv-type? int16 | ||||
| | | | | +---w tlv-len? int16 | ||||
| | | | | +---w tlv-value? binary | ||||
| | | | +--:(system-info) | ||||
| | | | +---w system-id? inet:uri | ||||
| | | +---w session-type-enum? enumeration | ||||
| | | +---w source-interface? if:interface-ref | ||||
| | | +---w outbound-interface? if:interface-ref | ||||
| | | +---w count? uint32 | ||||
| | | +---w vrf? coam:routing-instance-ref | ||||
| | | +---w ttl? uint8 | ||||
| | | +---w packet-size? uint32 | ||||
| | +--ro output | ||||
| | +--ro error-code-list* [response-index] | ||||
| | | +--ro response-index uint32 | ||||
| | | +--ro status-code? int32 | ||||
| | | +--ro status-sub-code? uint8 | ||||
| | +--ro src-test-point | ||||
| | | +--ro vrf? routing-instance-ref | ||||
| | | +--ro tp-address-type-value? identityref | ||||
| | | +--ro (tp-address)? | ||||
| | | | +--:(mac-address) | ||||
| | | | | +--ro mac-address? yang:mac-address | ||||
| | | | +--:(ipv4-address) | ||||
| | | | | +--ro ipv4-address? inet:ipv4-address | ||||
| | | | +--:(ipv6-address) | ||||
| | | | | +--ro ipv6-address? inet:ipv6-address | ||||
| | | | +--:(src-dst-address) | ||||
| | | | | +--ro src-ip-address? inet:ip-address | ||||
| | | | | +--ro dst-ip-address? inet:ip-address | ||||
| | | | | +--ro Interface? if:interface-ref | ||||
| | | | +--:(fec) | ||||
| | | | | +--ro fec-type? fec-type | ||||
| | | | | +--ro (fec-value)? | ||||
| | | | | +--:(ip-prefix) | ||||
| | | | | | +--ro ip-prefix? inet:ip-prefix | ||||
| | | | | +--:(bgp) | ||||
| | | | | | +--ro bgp? inet:ip-prefix | ||||
| | | | | +--:(tunnel) | ||||
| | | | | | +--ro tunnel-interface? uint32 | ||||
| | | | | +--:(pw) | ||||
| | | | | | +--ro remote-pe-address? inet:ip-address | ||||
| | | | | | +--ro pw-id? uint32 | ||||
| | | | | +--:(vpls) | ||||
| | | | | | +--ro route-distinguisher? uint32 | ||||
| | | | | | +--ro sender-ve-id? uint32 | ||||
| | | | | | +--ro receiver-ve-id? uint32 | ||||
| | | | | +--:(mpls-mldp) | ||||
| | | | | +--ro (root-address)? | ||||
| | | | | +--:(ip-address) | ||||
| | | | | | +--ro source-address? inet:ip-address | ||||
| | | | | | +--ro group-ip-address? IP-Multicast-Group-Address | ||||
| | | | | +--:(vpn) | ||||
| | | | | | +--ro as-number? inet:as-number | ||||
| | | | | +--:(global-id) | ||||
| | | | | +--ro lsp-id? string | ||||
| | | | +--:(tlv-address) | ||||
| | | | | +--ro tlv-type? int16 | ||||
| | | | | +--ro tlv-len? int16 | ||||
| | | | | +--ro tlv-value? binary | ||||
| | | | +--:(system-info) | ||||
| | | | +--ro system-id? inet:uri | ||||
| | | +--ro egress-intf-name? if:interface-ref | ||||
| | +--ro dest-test-point | ||||
| | | +--ro vrf? routing-instance-ref | ||||
| | | +--ro tp-address-type-value? identityref | ||||
| | | +--ro (tp-address)? | ||||
| | | | +--:(mac-address) | ||||
| | | | | +--ro mac-address? yang:mac-address | ||||
| | | | +--:(ipv4-address) | ||||
| | | | | +--ro ipv4-address? inet:ipv4-address | ||||
| | | | +--:(ipv6-address) | ||||
| | | | | +--ro ipv6-address? inet:ipv6-address | ||||
| | | | +--:(src-dst-address) | ||||
| | | | | +--ro src-ip-address? inet:ip-address | ||||
| | | | | +--ro dst-ip-address? inet:ip-address | ||||
| | | | | +--ro Interface? if:interface-ref | ||||
| | | | +--:(fec) | ||||
| | | | | +--ro fec-type? fec-type | ||||
| | | | | +--ro (fec-value)? | ||||
| | | | | +--:(ip-prefix) | ||||
| | | | | | +--ro ip-prefix? inet:ip-prefix | ||||
| | | | | +--:(bgp) | ||||
| | | | | | +--ro bgp? inet:ip-prefix | ||||
| | | | | +--:(tunnel) | ||||
| | | | | | +--ro tunnel-interface? uint32 | ||||
| | | | | +--:(pw) | ||||
| | | | | | +--ro remote-pe-address? inet:ip-address | ||||
| | | | | | +--ro pw-id? uint32 | ||||
| | | | | +--:(vpls) | ||||
| | | | | | +--ro route-distinguisher? uint32 | ||||
| | | | | | +--ro sender-ve-id? uint32 | ||||
| | | | | | +--ro receiver-ve-id? uint32 | ||||
| | | | | +--:(mpls-mldp) | ||||
| | | | | +--ro (root-address)? | ||||
| | | | | +--:(ip-address) | ||||
| | | | | | +--ro source-address? inet:ip-address | ||||
| | | | | | +--ro group-ip-address? IP-Multicast-Group-Address | ||||
| | | | | +--:(vpn) | ||||
| | | | | | +--ro as-number? inet:as-number | ||||
| | | | | +--:(global-id) | ||||
| | | | | +--ro lsp-id? string | ||||
| | | | +--:(tlv-address) | ||||
| | | | | +--ro tlv-type? int16 | ||||
| | | | | +--ro tlv-len? int16 | ||||
| | | | | +--ro tlv-value? binary | ||||
| | | | +--:(system-info) | ||||
| | | | +--ro system-id? inet:uri | ||||
| | | +--ro ingress-intf-name? if:interface-ref | ||||
| | +--ro sequence-number? uint64 | ||||
| | +--ro hop-cnt? uint8 | ||||
| | +--ro session-packet-statistics | ||||
| | | +--ro rx-packet-count? uint32 | ||||
| | | +--ro tx-packet-count? uint32 | ||||
| | | +--ro rx-bad-packet? uint32 | ||||
| | | +--ro tx-packet-failed? uint32 | ||||
| | +--ro session-error-statistics | ||||
| | | +--ro packet-drops-count? uint32 | ||||
| | | +--ro packet-reorder-count? uint32 | ||||
| | | +--ro packets-out-of-seq-count? uint32 | ||||
| | | +--ro packets-dup-count? uint32 | ||||
| | +--ro session-delay-statistics | ||||
| | | +--ro time-resolution-value? identityref | ||||
| | | +--ro min-delay-value? uint32 | ||||
| | | +--ro max-delay-value? uint32 | ||||
| | | +--ro average-delay-value? uint32 | ||||
| | +--ro session-jitter-statistics | ||||
| | +--ro time-resolution-value? identityref | ||||
| | +--ro min-jitter-value? uint32 | ||||
| | +--ro max-jitter-value? uint32 | ||||
| | +--ro average-jitter-value? uint32 | ||||
| +---x path-discovery | ||||
| +---w input | ||||
| | +---w destination-tp | ||||
| | | +---w tp-address-type-value? identityref | ||||
| | | +---w (tp-address)? | ||||
| | | +--:(mac-address) | ||||
| | | | +---w mac-address? yang:mac-address | ||||
| | | +--:(ipv4-address) | ||||
| | | | +---w ipv4-address? inet:ipv4-address | ||||
| | | +--:(ipv6-address) | ||||
| | | | +---w ipv6-address? inet:ipv6-address | ||||
| | | +--:(src-dst-address) | ||||
| | | | +---w src-ip-address? inet:ip-address | ||||
| | | | +---w dst-ip-address? inet:ip-address | ||||
| | | | +---w Interface? if:interface-ref | ||||
| | | +--:(fec) | ||||
| | | | +---w fec-type? fec-type | ||||
| | | | +---w (fec-value)? | ||||
| | | | +--:(ip-prefix) | ||||
| | | | | +---w ip-prefix? inet:ip-prefix | ||||
| | | | +--:(bgp) | ||||
| | | | | +---w bgp? inet:ip-prefix | ||||
| | | | +--:(tunnel) | ||||
| | | | | +---w tunnel-interface? uint32 | ||||
| | | | +--:(pw) | ||||
| | | | | +---w remote-pe-address? inet:ip-address | ||||
| | | | | +---w pw-id? uint32 | ||||
| | | | +--:(vpls) | ||||
| | | | | +---w route-distinguisher? uint32 | ||||
| | | | | +---w sender-ve-id? uint32 | ||||
| | | | | +---w receiver-ve-id? uint32 | ||||
| | | | +--:(mpls-mldp) | ||||
| | | | +---w (root-address)? | ||||
| | | | +--:(ip-address) | ||||
| | | | | +---w source-address? inet:ip-address | ||||
| | | | | +---w group-ip-address? IP-Multicast-Group-Address | ||||
| | | | +--:(vpn) | ||||
| | | | | +---w as-number? inet:as-number | ||||
| | | | +--:(global-id) | ||||
| | | | +---w lsp-id? string | ||||
| | | +--:(tlv-address) | ||||
| | | | +---w tlv-type? int16 | ||||
| | | | +---w tlv-len? int16 | ||||
| | | | +---w tlv-value? binary | ||||
| | | +--:(system-info) | ||||
| | | +---w system-id? inet:uri | ||||
| | +---w session-type-enum? enumeration | ||||
| | +---w source-interface? if:interface-ref | ||||
| | +---w outbound-interface? if:interface-ref | ||||
| | +---w vrf? coam:routing-instance-ref | ||||
| | +---w max-ttl? uint8 | ||||
| +--ro output | ||||
| +--ro response-list* [response-index] | ||||
| | +--ro response-index uint32 | ||||
| | +--ro status-code? int32 | ||||
| | +--ro status-sub-code? uint8 | ||||
| +--ro src-test-point | ||||
| | +--ro vrf? routing-instance-ref | ||||
| | +--ro tp-address-type-value? identityref | ||||
| | +--ro (tp-address)? | ||||
| | +--:(mac-address) | ||||
| | | +--ro mac-address? yang:mac-address | ||||
| | +--:(ipv4-address) | ||||
| | | +--ro ipv4-address? inet:ipv4-address | ||||
| | +--:(ipv6-address) | ||||
| | | +--ro ipv6-address? inet:ipv6-address | ||||
| | +--:(src-dst-address) | ||||
| | | +--ro src-ip-address? inet:ip-address | ||||
| | | +--ro dst-ip-address? inet:ip-address | ||||
| | | +--ro Interface? if:interface-ref | ||||
| | +--:(fec) | ||||
| | | +--ro fec-type? fec-type | ||||
| | | +--ro (fec-value)? | ||||
| | | +--:(ip-prefix) | ||||
| | | | +--ro ip-prefix? inet:ip-prefix | ||||
| | | +--:(bgp) | ||||
| | | | +--ro bgp? inet:ip-prefix | ||||
| | | +--:(tunnel) | ||||
| | | | +--ro tunnel-interface? uint32 | ||||
| | | +--:(pw) | ||||
| | | | +--ro remote-pe-address? inet:ip-address | ||||
| | | | +--ro pw-id? uint32 | ||||
| | | +--:(vpls) | ||||
| | | | +--ro route-distinguisher? uint32 | ||||
| | | | +--ro sender-ve-id? uint32 | ||||
| | | | +--ro receiver-ve-id? uint32 | ||||
| | | +--:(mpls-mldp) | ||||
| | | +--ro (root-address)? | ||||
| | | +--:(ip-address) | ||||
| | | | +--ro source-address? inet:ip-address | ||||
| | | | +--ro group-ip-address? IP-Multicast-Group-Address | ||||
| | | +--:(vpn) | ||||
| | | | +--ro as-number? inet:as-number | ||||
| | | +--:(global-id) | ||||
| | | +--ro lsp-id? string | ||||
| | +--:(tlv-address) | ||||
| | | +--ro tlv-type? int16 | ||||
| | | +--ro tlv-len? int16 | ||||
| | | +--ro tlv-value? binary | ||||
| | +--:(system-info) | ||||
| | +--ro system-id? inet:uri | ||||
| +--ro dest-test-point | ||||
| | +--ro vrf? routing-instance-ref | ||||
| | +--ro tp-address-type-value? identityref | ||||
| | +--ro (tp-address)? | ||||
| | +--:(mac-address) | ||||
| | | +--ro mac-address? yang:mac-address | ||||
| | +--:(ipv4-address) | ||||
| | | +--ro ipv4-address? inet:ipv4-address | ||||
| | +--:(ipv6-address) | ||||
| | | +--ro ipv6-address? inet:ipv6-address | ||||
| | +--:(src-dst-address) | ||||
| | | +--ro src-ip-address? inet:ip-address | ||||
| | | +--ro dst-ip-address? inet:ip-address | ||||
| | | +--ro Interface? if:interface-ref | ||||
| | +--:(fec) | ||||
| | | +--ro fec-type? fec-type | ||||
| | | +--ro (fec-value)? | ||||
| | | +--:(ip-prefix) | ||||
| | | | +--ro ip-prefix? inet:ip-prefix | ||||
| | | +--:(bgp) | ||||
| | | | +--ro bgp? inet:ip-prefix | ||||
| | | +--:(tunnel) | ||||
| | | | +--ro tunnel-interface? uint32 | ||||
| | | +--:(pw) | ||||
| | | | +--ro remote-pe-address? inet:ip-address | ||||
| | | | +--ro pw-id? uint32 | ||||
| | | +--:(vpls) | ||||
| | | | +--ro route-distinguisher? uint32 | ||||
| | | | +--ro sender-ve-id? uint32 | ||||
| | | | +--ro receiver-ve-id? uint32 | ||||
| | | +--:(mpls-mldp) | ||||
| | | +--ro (root-address)? | ||||
| | | +--:(ip-address) | ||||
| | | | +--ro source-address? inet:ip-address | ||||
| | | | +--ro group-ip-address? IP-Multicast-Group-Address | ||||
| | | +--:(vpn) | ||||
| | | | +--ro as-number? inet:as-number | ||||
| | | +--:(global-id) | ||||
| | | +--ro lsp-id? string | ||||
| | +--:(tlv-address) | ||||
| | | +--ro tlv-type? int16 | ||||
| | | +--ro tlv-len? int16 | ||||
| | | +--ro tlv-value? binary | ||||
| | +--:(system-info) | ||||
| | +--ro system-id? inet:uri | ||||
| +--ro sequence-number? uint64 | ||||
| +--ro hop-cnt? uint8 | ||||
| +--ro session-packet-statistics | ||||
| | +--ro rx-packet-count? uint32 | ||||
| | +--ro tx-packet-count? uint32 | ||||
| | +--ro rx-bad-packet? uint32 | ||||
| | +--ro tx-packet-failed? uint32 | ||||
| +--ro session-error-statistics | ||||
| | +--ro packet-drops-count? uint32 | ||||
| | +--ro packet-reorder-count? uint32 | ||||
| | +--ro packets-out-of-seq-count? uint32 | ||||
| | +--ro packets-dup-count? uint32 | ||||
| +--ro session-delay-statistics | ||||
| | +--ro time-resolution-value? identityref | ||||
| | +--ro min-delay-value? uint32 | ||||
| | +--ro max-delay-value? uint32 | ||||
| | +--ro average-delay-value? uint32 | ||||
| +--ro session-jitter-statistics | ||||
| | +--ro time-resolution-value? identityref | ||||
| | +--ro min-jitter-value? uint32 | ||||
| | +--ro max-jitter-value? uint32 | ||||
| | +--ro average-jitter-value? uint32 | ||||
| +--ro path-verification | ||||
| | +--ro flow-info? string | ||||
| | +--ro session-path-verification-statistics | ||||
| | +--ro verified-count? uint32 | ||||
| | +--ro failed-count? uint32 | ||||
| +--ro path-trace-info | ||||
| +--ro path-trace-info-list* [index] | ||||
| +--ro index uint32 | ||||
| +--ro vrf? routing-instance-ref | ||||
| +--ro tp-address-type-value? identityref | ||||
| +--ro (tp-address)? | ||||
| | +--:(mac-address) | ||||
| | | +--ro mac-address? yang:mac-address | ||||
| | +--:(ipv4-address) | ||||
| | | +--ro ipv4-address? inet:ipv4-address | ||||
| | +--:(ipv6-address) | ||||
| | | +--ro ipv6-address? inet:ipv6-address | ||||
| | +--:(src-dst-address) | ||||
| | | +--ro src-ip-address? inet:ip-address | ||||
| | | +--ro dst-ip-address? inet:ip-address | ||||
| | | +--ro Interface? if:interface-ref | ||||
| | +--:(fec) | ||||
| | | +--ro fec-type? fec-type | ||||
| | | +--ro (fec-value)? | ||||
| | | +--:(ip-prefix) | ||||
| | | | +--ro ip-prefix? inet:ip-prefix | ||||
| | | +--:(bgp) | ||||
| | | | +--ro bgp? inet:ip-prefix | ||||
| | | +--:(tunnel) | ||||
| | | | +--ro tunnel-interface? uint32 | ||||
| | | +--:(pw) | ||||
| | | | +--ro remote-pe-address? inet:ip-address | ||||
| | | | +--ro pw-id? uint32 | ||||
| | | +--:(vpls) | ||||
| | | | +--ro route-distinguisher? uint32 | ||||
| | | | +--ro sender-ve-id? uint32 | ||||
| | | | +--ro receiver-ve-id? uint32 | ||||
| | | +--:(mpls-mldp) | ||||
| | | +--ro (root-address)? | ||||
| | | +--:(ip-address) | ||||
| | | | +--ro source-address? inet:ip-address | ||||
| | | | +--ro group-ip-address? IP-Multicast-Group-Address | ||||
| | | +--:(vpn) | ||||
| | | | +--ro as-number? inet:as-number | ||||
| | | +--:(global-id) | ||||
| | | +--ro lsp-id? string | ||||
| | +--:(tlv-address) | ||||
| | | +--ro tlv-type? int16 | ||||
| | | +--ro tlv-len? int16 | ||||
| | | +--ro tlv-value? binary | ||||
| | +--:(system-info) | ||||
| | +--ro system-id? inet:uri | ||||
| +--ro timestamp-val? yang:date-and-time | ||||
| +--ro ingress-intf-name? if:interface-ref | ||||
| +--ro egress-intf-name? if:interface-ref | ||||
| +--ro app-meta-data? uint32 | ||||
| data hierarchy of OAM | data hierarchy of OAM | |||
| 4. OAM YANG Module | 4. OAM YANG Module | |||
| <CODE BEGINS> file "ietf-connectionless-oam.yang" | <CODE BEGINS> file "ietf-connectionless-oam.yang" | |||
| module ietf-connectionless-oam { | module 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 coam; | |||
| skipping to change at page 29, line 15 ¶ | skipping to change at page 17, line 20 ¶ | |||
| description | description | |||
| "This YANG module defines the generic configuration, | "This YANG module defines the generic configuration, | |||
| data model, statistics for connectionless OAM to be | data model, statistics for connectionless OAM to be | |||
| used within IETF in a protocol indpendent manner. | used within IETF in a protocol indpendent manner. | |||
| Functional level abstraction is indendent with | Functional level abstraction is indendent with | |||
| YANG modeling. 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 2016-06-23 { | revision 2016-10-31 { | |||
| description | description | |||
| "Initial revision. - 06 version"; | "Initial revision. - 07 version"; | |||
| reference ""; | reference ""; | |||
| } | } | |||
| /* features */ | /* features */ | |||
| feature connection-less { | feature connection-less { | |||
| description | description | |||
| "this feature indicates that OAM solution is connection less."; | "this feature indicates that OAM solution is connection less."; | |||
| } | } | |||
| feature continuity-check { | feature continuity-check { | |||
| description | description | |||
| "This feature indicates that the server supports | "This feature indicates that the server supports | |||
| skipping to change at page 37, line 43 ¶ | skipping to change at page 26, line 4 ¶ | |||
| base tp-address-type; | base tp-address-type; | |||
| description | description | |||
| "Route Distinguisher address type"; | "Route Distinguisher address type"; | |||
| } | } | |||
| identity ip-prefix-address-type { | identity ip-prefix-address-type { | |||
| base tp-address-type; | base tp-address-type; | |||
| description | description | |||
| "IP prefix address type"; | "IP prefix address type"; | |||
| } | } | |||
| identity tunnel-address-type { | identity tunnel-address-type { | |||
| base tp-address-type; | base tp-address-type; | |||
| description | description | |||
| "Tunnel address type"; | "Tunnel address type"; | |||
| } | } | |||
| grouping tp-address { | grouping tp-address { | |||
| leaf tp-address-type-value { | leaf tp-address-type-value { | |||
| type identityref { | type identityref { | |||
| base tp-address-type; | base tp-address-type; | |||
| } | } | |||
| description "Test point address type."; | description "Test point address type."; | |||
| } | } | |||
| choice tp-address { | choice tp-address { | |||
| case mac-address { | case mac-address { | |||
| when "tp-address-type-value = mac-address-type" { | when "'tp-address-type-value' = 'mac-address-type'" { | |||
| description "MAC address type"; | description "MAC address type"; | |||
| } | } | |||
| leaf mac-address { | leaf mac-address { | |||
| type yang:mac-address; | type yang:mac-address; | |||
| description | description | |||
| "MAC Address"; | "MAC Address"; | |||
| } | } | |||
| description | description | |||
| "MAC Address based MP Addressing."; | "MAC Address based MP Addressing."; | |||
| } | } | |||
| case ipv4-address { | case ipv4-address { | |||
| when "tp-address-type-value = ipv4-address-type" { | when "'tp-address-type-value' = 'ipv4-address-type'" { | |||
| description "IPv4 address type"; | description "IPv4 address type"; | |||
| } | } | |||
| leaf ipv4-address { | leaf ipv4-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Ipv4 Address"; | "Ipv4 Address"; | |||
| } | } | |||
| description | description | |||
| "Ip Address based MP Addressing."; | "Ip Address based MP Addressing."; | |||
| } | } | |||
| case ipv6-address { | case ipv6-address { | |||
| when "tp-address-type-value = ipv6-address-type" { | when "'tp-address-type-value' = 'ipv6-address-type'" { | |||
| description "IPv6 address type"; | description "IPv6 address type"; | |||
| } | } | |||
| leaf ipv6-address { | leaf ipv6-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Ipv6 Address"; | "Ipv6 Address"; | |||
| } | } | |||
| description | description | |||
| "ipv6 Address based MP Addressing."; | "ipv6 Address based MP Addressing."; | |||
| } | } | |||
| case src-dst-address { | case src-dst-address { | |||
| when "tp-address-type-value = src-dst-address-type" { | when "'tp-address-type-value' = 'src-dst-address-type'" { | |||
| description "Src dest address type for BFD"; | description "Src dest address type for BFD"; | |||
| } | } | |||
| leaf src-ip-address { | leaf src-ip-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "source ip address."; | "source ip address."; | |||
| } | } | |||
| leaf dst-ip-address { | leaf dst-ip-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "destination ip address."; | "destination ip address."; | |||
| } | } | |||
| leaf Interface { | leaf Interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "interface."; | "interface."; | |||
| } | } | |||
| } | } | |||
| case fec { | case fec { | |||
| when "tp-address-type-value = fec-address-type" { | when "'tp-address-type-value' = 'fec-address-type'" { | |||
| description "FEC address type"; | description "FEC address type"; | |||
| } | } | |||
| leaf fec-type { | leaf fec-type { | |||
| type fec-type; | type fec-type; | |||
| description | description | |||
| "fec type."; | "fec type."; | |||
| } | } | |||
| choice fec-value { | choice fec-value { | |||
| description | description | |||
| "fec value."; | "fec value."; | |||
| skipping to change at page 41, line 24 ¶ | skipping to change at page 29, line 32 ¶ | |||
| type string; | type string; | |||
| description | description | |||
| "lsp id."; | "lsp id."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case tlv-address { | case tlv-address { | |||
| when "tp-address-type-value = tlv-address-type" { | when "'tp-address-type-value' = 'tlv-address-type'" { | |||
| description "TLV address type"; | description "TLV address type"; | |||
| } | } | |||
| leaf tlv-type { | leaf tlv-type { | |||
| type int16; | type int16; | |||
| description | description | |||
| "Type of MEP-ID"; | "Type of MEP-ID"; | |||
| } | } | |||
| leaf tlv-len { | leaf tlv-len { | |||
| type int16; | type int16; | |||
| description | description | |||
| skipping to change at page 41, line 44 ¶ | skipping to change at page 30, line 4 ¶ | |||
| description | description | |||
| "Length of MEP-ID value"; | "Length of MEP-ID value"; | |||
| } | } | |||
| leaf tlv-value { | leaf tlv-value { | |||
| type binary { | type binary { | |||
| length "12..255"; | length "12..255"; | |||
| } | } | |||
| description | description | |||
| "Value please refer RFC6428 (Figure 4,5,6)."; | "Value please refer RFC6428 (Figure 4,5,6)."; | |||
| } | } | |||
| description | description | |||
| "MEP-ID"; | "MEP-ID"; | |||
| } | } | |||
| case system-info { | case system-info { | |||
| when "tp-address-type-value = system-id-address-type" { | when "'tp-address-type-value' = 'system-id-address-type'" { | |||
| description "System id address type"; | description "System id address type"; | |||
| } | } | |||
| leaf system-id { | leaf system-id { | |||
| type inet:uri; | type inet:uri; | |||
| description | description | |||
| "System ID assigned to this node."; | "System ID assigned to this node."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| skipping to change at page 46, line 46 ¶ | skipping to change at page 35, line 4 ¶ | |||
| } | } | |||
| grouping test-point-locations { | grouping test-point-locations { | |||
| description "Group of test point locations."; | description "Group of test point locations."; | |||
| leaf tp-address-type-value { | leaf tp-address-type-value { | |||
| type identityref { | type identityref { | |||
| base tp-address-type; | base tp-address-type; | |||
| } | } | |||
| description "Test point address type."; | description "Test point address type."; | |||
| } | } | |||
| choice location-type { | choice location-type { | |||
| case ipv4-location-type { | case ipv4-location-type { | |||
| when "tp-address-type-value = ipv4-address-type" { | when "'tp-address-type-value' = 'ipv4-address-type'" { | |||
| description | description | |||
| "when test point address is equal to ipv4 address."; | "when test point address 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"; | key "ipv4-location"; | |||
| 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 47, line 28 ¶ | skipping to change at page 35, line 36 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case ipv6-location-type { | case ipv6-location-type { | |||
| when "tp-address-type-value = ipv6-address-type" { | when "'tp-address-type-value' = 'ipv6-address-type'" { | |||
| description | description | |||
| "when test point address is equal to ipv6 address"; | "when test point address 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"; | key "ipv6-location"; | |||
| leaf ipv6-location { | leaf ipv6-location { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Ipv6 Address."; | "Ipv6 Address."; | |||
| skipping to change at page 48, line 9 ¶ | skipping to change at page 36, line 16 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case mac-location-type { | case mac-location-type { | |||
| when "tp-address-type-value = mac-address-type" { | when "'tp-address-type-value' = 'mac-address-type'" { | |||
| description | description | |||
| "when test point address is equal to mac address."; | "when test point address 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"; | |||
| skipping to change at page 48, line 31 ¶ | skipping to change at page 36, line 38 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case tunnel-location-type { | case tunnel-location-type { | |||
| when "tp-address-type-value = tunnel-address-type" { | when "'tp-address-type-value' = 'tunnel-address-type'" { | |||
| description | description | |||
| "when test point address is equal to tunnel type."; | "when test point address is equal to tunnel type."; | |||
| } | } | |||
| container test-point-tunnel-address-location-list { | container test-point-tunnel-address-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "tunnel-location"; | key "tunnel-location"; | |||
| leaf tunnel-location { | leaf tunnel-location { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "VPN Prefix"; | "VPN Prefix"; | |||
| skipping to change at page 49, line 12 ¶ | skipping to change at page 37, line 19 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case ip-prefix-location-type { | case ip-prefix-location-type { | |||
| when "tp-address-type-value = ip-prefix-address-type" { | when "'tp-address-type-value' = 'ip-prefix-address-type'" { | |||
| description | description | |||
| "when test point address is equal to ip prefix."; | "when test point address is equal to ip prefix."; | |||
| } | } | |||
| container test-point-ip-prefix-location-list { | container test-point-ip-prefix-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "ip-prefix-location"; | key "ip-prefix-location"; | |||
| leaf ip-prefix-location { | leaf ip-prefix-location { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "IP Prefix"; | "IP Prefix"; | |||
| skipping to change at page 49, line 40 ¶ | skipping to change at page 37, line 47 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case route-distinguisher-location-type { | case route-distinguisher-location-type { | |||
| when "tp-address-type-value = route-distinguisher-address-type" { | when "'tp-address-type-value' = 'route-distinguisher-address-type'" { | |||
| description "when test point address is equal to | description "when test point address is equal to | |||
| route distinguiher."; | route distinguiher."; | |||
| } | } | |||
| container test-point-route-dist-location-list { | container test-point-route-dist-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "route-dist-location"; | key "route-dist-location"; | |||
| leaf route-dist-location { | leaf route-dist-location { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| skipping to change at page 50, line 4 ¶ | skipping to change at page 38, line 11 ¶ | |||
| route distinguiher."; | route distinguiher."; | |||
| } | } | |||
| container test-point-route-dist-location-list { | container test-point-route-dist-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "route-dist-location"; | key "route-dist-location"; | |||
| leaf route-dist-location { | leaf route-dist-location { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Route Distinguisher(8 octets)."; | "Route Distinguisher(8 octets)."; | |||
| } | } | |||
| leaf vrf { | leaf vrf { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The vrf is used to describe the | "The vrf is used to describe the | |||
| corresponding network instance"; | corresponding network instance"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case group-ip-address-location-type { | case group-ip-address-location-type { | |||
| when "tp-address-type-value = group-ip-address-type" { | when "'tp-address-type-value' = 'group-ip-address-type'" { | |||
| description "when test point address is equal to | description "when test point address is equal to | |||
| group ip address."; | group ip address."; | |||
| } | } | |||
| container test-point-group-ip-address-location-list { | container test-point-group-ip-address-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "group-ip-address-location"; | key "group-ip-address-location"; | |||
| leaf group-ip-address-location { | leaf group-ip-address-location { | |||
| type IP-Multicast-Group-Address; | type IP-Multicast-Group-Address; | |||
| description | description | |||
| "Group IP address."; | "Group IP address."; | |||
| skipping to change at page 50, line 45 ¶ | skipping to change at page 39, line 4 ¶ | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The vrf is used to describe the | "The vrf is used to describe the | |||
| corresponding network instance"; | corresponding network instance"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case group-as-number-location-type { | case group-as-number-location-type { | |||
| when "tp-address-type-value = as-number-address-type" { | when "'tp-address-type-value' = 'as-number-address-type'" { | |||
| description "when test point address is equal to | description "when test point address is equal to | |||
| as-number."; | 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."; | "AS number."; | |||
| skipping to change at page 51, line 30 ¶ | skipping to change at page 39, line 37 ¶ | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case group-lsp-id-location-type { | case group-lsp-id-location-type { | |||
| when "tp-address-type-value = lsp-id-address-type" { | when "'tp-address-type-value' = 'lsp-id-address-type'" { | |||
| description "when test point address is equal to lspid."; | description "when test point address is equal to lspid."; | |||
| } | } | |||
| container test-point-lsp-id-location-list { | container test-point-lsp-id-location-list { | |||
| list test-point-locations { | list test-point-locations { | |||
| key "lsp-id-location"; | key "lsp-id-location"; | |||
| leaf lsp-id-location { | leaf lsp-id-location { | |||
| type string; | type string; | |||
| description | description | |||
| "LSP Id."; | "LSP Id."; | |||
| } | } | |||
| skipping to change at page 51, line 45 ¶ | skipping to change at page 40, line 4 ¶ | |||
| key "lsp-id-location"; | key "lsp-id-location"; | |||
| leaf lsp-id-location { | leaf lsp-id-location { | |||
| type string; | type string; | |||
| description | description | |||
| "LSP Id."; | "LSP Id."; | |||
| } | } | |||
| leaf vrf { | leaf vrf { | |||
| type routing-instance-ref; | type routing-instance-ref; | |||
| description | description | |||
| "The vrf is used to describe the | "The vrf is used to describe the | |||
| corresponding network instance"; | corresponding network instance"; | |||
| } | } | |||
| uses test-point-location-info; | uses test-point-location-info; | |||
| ordered-by user; | ordered-by user; | |||
| description | description | |||
| "list of test point locations."; | "list of test point locations."; | |||
| } | } | |||
| description | description | |||
| "Serves as top-level container for test point location list."; | "Serves as top-level container for test point location list."; | |||
| } | } | |||
| } | } | |||
| case group-system-id-location-type { | case group-system-id-location-type { | |||
| when "tp-address-type-value = system-id-address-type" { | when "'tp-address-type-value' = 'system-id-address-type'" { | |||
| description "when test point address is equal to | description "when test point address is equal to | |||
| system info."; | 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."; | |||
| skipping to change at page 55, line 32 ¶ | skipping to change at page 43, line 37 ¶ | |||
| description "cc ipv4 sessions"; | description "cc ipv4 sessions"; | |||
| uses cc-session-statsitics; | uses cc-session-statsitics; | |||
| } | } | |||
| container cc-ipv6-sessions-statistics { | container cc-ipv6-sessions-statistics { | |||
| description "cc ipv6 sessions"; | description "cc ipv6 sessions"; | |||
| uses cc-session-statsitics; | uses cc-session-statsitics; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| module ietf-connectionless-oam-methods { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-connectionless-oam-methods"; | ||||
| prefix coam-methods; | ||||
| import ietf-interfaces { | ||||
| prefix if; | ||||
| } | ||||
| import ietf-connectionless-oam { | ||||
| prefix coam; | ||||
| } | ||||
| organization "IETF LIME Working Group"; | ||||
| contact | ||||
| "Deepak Kumar dekumar@cisco.com | ||||
| Qin Wu bill.wu@huawei.com | ||||
| S Raghavan srihari@cisco.com | ||||
| Zitao Wang wangzitao@huawei.com | ||||
| R Rahman rrahman@cisco.com"; | ||||
| description | ||||
| "This YANG module defines the RPCs for , | ||||
| connectionless OAM to be used within IETF | ||||
| in a protocol Independent manner. | ||||
| Functional level abstraction is indendent with | ||||
| YANG modeling. It is assumed that each protocol maps | ||||
| corresponding abstracts to its native format. | ||||
| Each protocol may extend the YANG model defined | ||||
| here to include protocol specific extensions"; | ||||
| revision 2016-06-23 { | ||||
| description | ||||
| "06 version"; | ||||
| reference ""; | ||||
| } | ||||
| rpc continuity-check { | ||||
| if-feature coam:continuity-check; | ||||
| description | ||||
| "Generates continuity-check as per RFC7276."; | ||||
| 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 count { | ||||
| type uint32; | ||||
| default "5"; | ||||
| 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 | ||||
| "Time to live (TTL)."; | ||||
| } | ||||
| leaf packet-size { | ||||
| type uint32 { | ||||
| range "64..10000"; | ||||
| } | ||||
| default "64"; | ||||
| description | ||||
| "Size of ping echo request packets, in octets"; | ||||
| } | ||||
| } | ||||
| 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; | ||||
| } | ||||
| } | ||||
| rpc path-discovery { | ||||
| description | ||||
| "Generates path discovery as per RFC7276."; | ||||
| 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"; | ||||
| } | ||||
| leaf max-ttl { | ||||
| type uint8; | ||||
| default "255"; | ||||
| description | ||||
| "max ttl."; | ||||
| } | ||||
| } | ||||
| 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 "; | ||||
| } | ||||
| } | ||||
| uses coam:path-discovery-data; | ||||
| } | ||||
| } | ||||
| } | ||||
| YANG module of OAM | YANG module of OAM | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. CL model applicability | 5. CL model applicability | |||
| ietf-connectionless-oam model defined in this document provides | ietf-connectionless-oam model defined in this document provides | |||
| technology-independent abstraction of key OAM constructs for | technology-independent abstraction of key OAM constructs for | |||
| connectionless protocols. This model can be further extended to | connectionless protocols. This model can be further extended to | |||
| include technology specific details, e.g., adding new data nodes with | include technology specific details, e.g., adding new data nodes with | |||
| End of changes. 43 change blocks. | ||||
| 804 lines changed or deleted | 57 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/ | ||||