Network Working Group L. Zheng Internet-Draft S. Aldrin Intended status: Standards Track Y. Zhang Expires: August 16, 2015 Huawei Technologies G. Mirsky Ericsson February 12, 2015 Yang Data Model for LSP-PING draft-zheng-mpls-lsp-ping-yang-cfg-00.txt Abstract This document defines a YANG data model that can be used to configure and manage LSP-Ping. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on August 16, 2015. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of Zheng, et al. Expires August 16, 2015 [Page 1] Internet-Draft LSP-Ping Yang February 2015 publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Support of Long Running Command with NETCONF . . . . . . 3 1.2. Contributors . . . . . . . . . . . . . . . . . . . . . . 3 2. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 3.1. Configuration of Control Information . . . . . . . . . . 4 3.2. Configuration of Schedule Parameters . . . . . . . . . . 5 3.3. Display of Result Information . . . . . . . . . . . . . . 5 4. Data Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 6 5. Interaction with other MPLS OAM Tools Models . . . . . . . . 8 6. LSP-Ping Yang Module . . . . . . . . . . . . . . . . . . . . 8 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 17 8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 11.1. Normative References . . . . . . . . . . . . . . . . . . 18 11.2. Informative References . . . . . . . . . . . . . . . . . 18 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 1. Introduction When an LSP fails to deliver user traffic, the failure cannot always be detected by the MPLS control plane. [RFC4379] defines a mechanism that would enable users to detect such failure and to isolate faults. YANG [RFC6020] is a data definition language that was introduced to define the contents of a conceptual data store that allows networked devices to be managed using NETCONF [RFC6241]. This document defines a YANG data model that can be used to configure and manage LSP-Ping [RFC4379]. The rest of this document is organized as follows. Section 2 presents the scope of this document. Section 3 provides the design of the LSP-Ping configuration data model in details by containers. Section 4 presents the complete data hierarchy of LSP-Ping YANG model. Section 5 discusses the interaction between LSP-Ping data model and other MPLS tools data models. Section 6 specifies the YANG module and section 7 lists examples which conform to the YANG module Zheng, et al. Expires August 16, 2015 [Page 2] Internet-Draft LSP-Ping Yang February 2015 specified in this document. Finally, security considerations are discussed in Section 8. 1.1. Support of Long Running Command with NETCONF LSP Ping is one of examples of what can described as "long-running operation". Unlike most of configuration operations that result in single response execution of an LSP Ping triggers multiple responses from a node under control. The question of implementing long-running operation in NETCONF is still open and possible solutions being discussed: 1, Consequitive Remote Processing Calls (RPC) to poll for results; 2, Model presented in[RFC4560] ; 3, The one outlined in [I-D.mahesh-netconf-persistent]. The problem of long-running operation as well can be considered as a case of controlling and obtaining results from a Measurement Agent (MA) as defined in [I-D.ietf-lmap-framework]. 1.2. Contributors The following made vital contributions to this document: Guangying Zheng, Huawei Technologies 2. Scope The fundemantel mechanism of LSP-Ping is defined in [RFC4379]. Extentions of LSP-Ping has been developed over the years. Examples are performing LSP ping over P2MP MPLS LSPs [RFC6425] and traceroute over MPLS tunnels [RFC6424] etc. These extentions will be considered in update of this document. 3. Design of the Data Model The LSP-Ping Yang model defined in this document provides the following features: 1, Configuration of control information of a LSP-Ping test; 2, Configuration of schedule parameters of a LSP-Ping test; 3, Display of result information of a LSP-Ping test. Zheng, et al. Expires August 16, 2015 [Page 3] Internet-Draft LSP-Ping Yang February 2015 3.1. Configuration of Control Information Container lspPings:lspPing:ctrlInfo defines the config ture parametres control a LSP-Ping test. Examples are the Target FEC address type/address and the reply mode of the echo reply packet. Some node may be auto-assigned by the system, but there may be requirement of configuration. Examples are source address and interface. The data hierarchy for control information configuration is presented below: module: mpls-lsp-ping +--rw lspPings +--rw lspPing* [lsp-ping-name] +--rw lsp-ping-name string +--rw ctrlInfo | +--rw TargetAddType? enumeration | +--rw (TargetAdd)? | | +--:(ipv4) | | | +--rw ipv4add? inet:ip-address | | +--:(ipv6) | | | +--rw ipv6add? inet:ip-address | | +--:(bgp) | | | +--rw bgp? inet:ip-address | | +--:(l3vpn) | | | +--rw l3vpnid? uint32 | | | +--rw l3vpn-ipadd? inet:ip-address | | +--:(tunnel-if) | | | +--rw tunnel-if? uint32 | | +--:(vc) | | | +--rw vc? uint32 | | +--:(vpls) | | +--rw vpls? string | +--rw ReplyMode? enumeration | +--rw TimeOut? uint32 | +--rw Frequency? uint32 | +--rw AdminStatus? enumeration | +--rw ProbeCount? uint32 | +--rw DataSize? uint32 | +--rw DataFill? string | +--rw Descr? string | +--rw SourceAddressType? enumeration | +--rw SourceAddress? inet:ip-address | +--rw IfIndex? uint32 Zheng, et al. Expires August 16, 2015 [Page 4] Internet-Draft LSP-Ping Yang February 2015 3.2. Configuration of Schedule Parameters Container lspPings:lspPing:schedulePara defines the test schedule parameters of a LSP-Ping test, which basically describes when to start and when to end the test. Four start modes and three end modes are defined respectively. The data hierarchy for schedule information configuration is presented below: module: mpls-lsp-ping +--rw lspPings +--rw lspPing* [lsp-ping-name] +--rw lsp-ping-name string +--rw ctrlInfo ... +--rw schedulePara | +--rw (startTest)? | | +--:(now) | | | +--rw startTestNow? empty | | +--:(at) | | | +--rw startTestAt? yang:date-and-time | | +--:(delay) | | | +--rw startTestDelay? uint32 | | +--:(daily) | | +--rw startTestDaily? yang:date-and-time | +--rw (endTest)? | +--:(at) | | +--rw endTestAt? yang:date-and-time | +--:(delay) | | +--rw endTestDelay? uint32 | +--:(daily) | +--rw endTestLifetime? uint32 3.3. Display of Result Information Container lspPings:lspPing:resultInfo shows the result of the current LSP-Ping test. The data hierarchy for display of result information is presented below: Zheng, et al. Expires August 16, 2015 [Page 5] Internet-Draft LSP-Ping Yang February 2015 module: mpls-lsp-ping +--rw lspPings +--rw lspPing* [lsp-ping-name] +--rw lsp-ping-name string +--rw ctrlInfo ... +--rw schedulePara ... +--ro resultInfo +--ro OperStatus? enumeration +--ro TargetAddType? enumeration +--ro (TargetAdd)? | +--:(ipv4) | | +--ro ipv4add? inet:ip-address | +--:(ipv6) | | +--ro ipv6add? inet:ip-address | +--:(bgp) | | +--ro bgp? inet:ip-address | +--:(l3vpn) | | +--ro l3vpnid? uint32 | | +--ro l3vpn-ipadd? inet:ip-address | +--:(tunnel-if) | | +--ro tunnel-if? uint32 | +--:(vc) | | +--ro vc? uint32 | +--:(vpls) | +--ro vpls? string +--ro MinRtt? uint32 +--ro MaxRtt? uint32 +--ro AverageRtt? uint32 +--ro ProbeResponses? uint32 +--ro SentProbes? uint32 +--ro SumOfSquares? uint32 +--ro LastGoodProbe? yang:date-and-time 4. Data Hierarchy The complete data hierarchy of LSP-Ping YANG model is presented below. module: mpls-lsp-ping +--rw lspPings +--rw lspPing* [lsp-ping-name] +--rw lsp-ping-name string +--rw ctrlInfo | +--rw TargetAddType? enumeration | +--rw (TargetAdd)? | | +--:(ipv4) Zheng, et al. Expires August 16, 2015 [Page 6] Internet-Draft LSP-Ping Yang February 2015 | | | +--rw ipv4add? inet:ip-address | | +--:(ipv6) | | | +--rw ipv6add? inet:ip-address | | +--:(bgp) | | | +--rw bgp? inet:ip-address | | +--:(l3vpn) | | | +--rw l3vpnid? uint32 | | | +--rw l3vpn-ipadd? inet:ip-address | | +--:(tunnel-if) | | | +--rw tunnel-if? uint32 | | +--:(vc) | | | +--rw vc? uint32 | | +--:(vpls) | | +--rw vpls? string | +--rw ReplyMode? enumeration | +--rw TimeOut? uint32 | +--rw Frequency? uint32 | +--rw AdminStatus? enumeration | +--rw ProbeCount? uint32 | +--rw DataSize? uint32 | +--rw DataFill? string | +--rw Descr? string | +--rw SourceAddressType? enumeration | +--rw SourceAddress? inet:ip-address | +--rw IfIndex? uint32 +--rw schedulePara | +--rw (startTest)? | | +--:(now) | | | +--rw startTestNow? empty | | +--:(at) | | | +--rw startTestAt? yang:date-and-time | | +--:(delay) | | | +--rw startTestDelay? uint32 | | +--:(daily) | | +--rw startTestDaily? yang:date-and-time | +--rw (endTest)? | +--:(at) | | +--rw endTestAt? yang:date-and-time | +--:(delay) | | +--rw endTestDelay? uint32 | +--:(daily) | +--rw endTestLifetime? uint32 +--ro resultInfo +--ro OperStatus? enumeration +--ro TargetAddType? enumeration +--ro (TargetAdd)? | +--:(ipv4) | | +--ro ipv4add? inet:ip-address Zheng, et al. Expires August 16, 2015 [Page 7] Internet-Draft LSP-Ping Yang February 2015 | +--:(ipv6) | | +--ro ipv6add? inet:ip-address | +--:(bgp) | | +--ro bgp? inet:ip-address | +--:(l3vpn) | | +--ro l3vpnid? uint32 | | +--ro l3vpn-ipadd? inet:ip-address | +--:(tunnel-if) | | +--ro tunnel-if? uint32 | +--:(vc) | | +--ro vc? uint32 | +--:(vpls) | +--ro vpls? string +--ro MinRtt? uint32 +--ro MaxRtt? uint32 +--ro AverageRtt? uint32 +--ro ProbeResponses? uint32 +--ro SentProbes? uint32 +--ro SumOfSquares? uint32 +--ro LastGoodProbe? yang:date-and-time 5. Interaction with other MPLS OAM Tools Models TBA 6. LSP-Ping Yang Module module mpls-lsp-ping { namespace "urn:ietf:params:xml:ns:yang:mpls-lsp-ping"; //namespace need to be assigned by IANA prefix "lspping"; import ietf-inet-types { prefix inet; } import ietf-yang-types{ prefix yang; } organization "IETF MPLS (Multiprotocl Label_Switching) Working Group"; contact "vero.zheng@huawei.com zhangyanfeng@huawei.com"; description "MPLS LSP-PING Yang Module"; revision "2015-01-21" { description "Initial version"; } Zheng, et al. Expires August 16, 2015 [Page 8] Internet-Draft LSP-Ping Yang February 2015 container lspPings { list lspPing { key "lsp-ping-name"; leaf lsp-ping-name { description "lsp ping name"; mandatory "true"; type string { length "1..31"; } } container ctrlInfo { leaf TargetAddType { description "Specifies the address type of Target FEC."; type enumeration { enum ipv4 { value "0"; description "IPv4 LSP's destination"; } enum ipv6 { value "1"; description "IPv6 LSP's destination"; } enum bgp { value "2"; description "BGP LSP's destination"; } enum tunnel-if { value "3"; description "tunnel interface"; } enum l3vpn { value "4"; description "l3vpn-instance and remote address"; } enum pwid { value "5"; description "pwid"; } enum vsi-name { value "6"; description "name of VSI"; } } } Zheng, et al. Expires August 16, 2015 [Page 9] Internet-Draft LSP-Ping Yang February 2015 choice TargetAdd{ description "Specifies the address of Target FEC"; case ipv4 { leaf ipv4add{ type inet:ip-address; } } case ipv6 { leaf ipv6add{ type inet:ip-address; } } case bgp { leaf bgp{ type inet:ip-address; } } case l3vpn { leaf l3vpnid{ type uint32; } leaf l3vpn-ipadd{ type inet:ip-address; } } case tunnel-if { leaf tunnel-if{ type uint32; } } case vc { leaf vc{ type uint32; } } case vpls { leaf vpls{ type string; } } } leaf ReplyMode { description "Specifies the reply mode."; type enumeration { enum 1 { Zheng, et al. Expires August 16, 2015 [Page 10] Internet-Draft LSP-Ping Yang February 2015 value "1"; description "Do not reply"; } enum 2 { value "2"; description "Reply via an IPv4/IPv6 UDP packet"; } enum 3 { value "3"; description "Reply via an IPv4/IPv6 UDP packet with Router Alert"; } enum 4 { value "4"; description "Reply via application level control channel"; } } } leaf TimeOut { description "Specifies the time-out value, in seconds, for a lsp ping operation."; type uint32; } leaf Frequency { description "Specifies the frequency to perform a lsp ping operation as part of one ping test."; type uint32; } leaf AdminStatus { description "Specifies the desired state is enabled(1) or disabled(2)"; type enumeration { enum enabled { value "1"; description "The desired state is enabled"; } enum disabled { value "2"; description "The desired state is disabled"; } } } leaf ProbeCount { description "Specifies the number of probe sent of one lsp ping test."; Zheng, et al. Expires August 16, 2015 [Page 11] Internet-Draft LSP-Ping Yang February 2015 type uint32; } leaf DataSize { description "Specifies the size of the data portion to be transmitted in a lsp ping operation, in octets."; type uint32; } leaf DataFill { description "The content of this object is used together with the corresponding DataSize value to determine how to fill the data portion of a probe packet."; type string{ length "0..1564"; } } leaf Descr { description "a descriptive name of the lsp ping test."; type string{ length "1..31"; } } leaf SourceAddressType { description "Specifies the type of the source address."; type enumeration { enum ipv4 { value "0"; description "IPv4 address"; } enum ipv6 { value "1"; description "IPv6 address"; } } } leaf SourceAddress { description "Specifies the source address."; type inet:ip-address; } leaf IfIndex { description Zheng, et al. Expires August 16, 2015 [Page 12] Internet-Draft LSP-Ping Yang February 2015 "Setting this object to an interface's ifIndex prior to starting a remote ping operation directs the ping probes to be transmitted over the specified interface."; type uint32; } } container schedulePara { description "LSP ping schedule parameter"; choice startTest{ description "Specifies when the test begins to start, include 4 schedule method: start now(1), start at(2), start delay(3), start daily(4)."; case now { leaf startTestNow{ description "Start test now."; type empty; } } case at { leaf startTestAt{ description "Start test at a time."; type yang:date-and-time; } } case delay { leaf startTestDelay{ description "Start delay time."; type uint32; } } case daily { leaf startTestDaily{ description "Start test daily."; type yang:date-and-time; } } } choice endTest{ description "Specifies when the test ends, include 3 schedule method: end at(1), end delay(2), end lifetime(3)."; case at { leaf endTestAt{ description "End test at a time."; type yang:date-and-time; } } case delay { Zheng, et al. Expires August 16, 2015 [Page 13] Internet-Draft LSP-Ping Yang February 2015 leaf endTestDelay{ description "End delay some time."; type uint32; } } case daily { leaf endTestLifetime{ description "Set the test lifetime."; type uint32; } } } } container resultInfo { config "false"; leaf OperStatus { description "Reflects the operational state of a lsp Ping test"; type enumeration { enum enabled { value "1"; description "The Test is active"; } enum disabled { value "2"; description "The test has stopped"; } enum completed { value "3"; description "The test is completed"; } } } leaf TargetAddType { description "Specifies the address type of Target FEC."; type enumeration { enum ipv4 { value "0"; description "IPv4 LSP's destination"; } enum ipv6 { value "1"; description "IPv6 LSP's destination"; } enum bgp { Zheng, et al. Expires August 16, 2015 [Page 14] Internet-Draft LSP-Ping Yang February 2015 value "2"; description "BGP LSP's destination"; } enum tunnel-if { value "3"; description "tunnel interface"; } enum l3vpn { value "4"; description "l3vpn-instance and remote address"; } enum pwid { value "5"; description "pwid"; } enum vsi-name { value "6"; description "name of VSI"; } } } choice TargetAdd{ case ipv4 { leaf ipv4add{ type inet:ip-address; } } case ipv6 { leaf ipv6add{ type inet:ip-address; } } case bgp { leaf bgp{ type inet:ip-address; } } case l3vpn { leaf l3vpnid{ type uint32; } leaf l3vpn-ipadd{ type inet:ip-address; } } case tunnel-if { leaf tunnel-if{ Zheng, et al. Expires August 16, 2015 [Page 15] Internet-Draft LSP-Ping Yang February 2015 type uint32; } } case vc { leaf vc{ type uint32; } } case vpls { leaf vpls{ type string; } } } leaf MinRtt { description "The minimum lsp ping round-trip-time (RTT) received."; type uint32; } leaf MaxRtt { description "The maximum lsp ping round-trip-time (RTT) received."; type uint32; } leaf AverageRtt { description "The current average lsp ping round-trip-time (RTT)."; type uint32; } leaf ProbeResponses { description "Number of responses received for the corresponding lsp ping test."; type uint32; } leaf SentProbes { description "number of probes sent for the corresponding lsp ping test."; type uint32; } leaf SumOfSquares { description "This object contains the sum of the squares for all replys received."; Zheng, et al. Expires August 16, 2015 [Page 16] Internet-Draft LSP-Ping Yang February 2015 type uint32; } leaf LastGoodProbe { description "Date and time when the last response was received for a probe."; type yang:date-and-time; } } } } } 7. Examples Examples of using Yang module to configure and manage LSP-Ping will be given here in the update when the Yang module is stable. 8. Security Considerations The configuration and state data defined in this document is designed to be accessed via the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the secure transport layer and the mandatory-to- implement secure transport is SSH [RFC6242]. The authors recommend to implement the NETCONF access control model [RFC6536] to restrict access for particular NETCONF users to a pre-configured subset of all available NETCONF protocol operations and content. There are a number of config true nodes defined in the YANG module which are writable/creatable/deletable. These data nodes may be considered sensitive or vulnerable in some network environments. Write operations to these data nodes without proper protection can have a negative effect on network operations. 9. IANA Considerations The IANA is requested to as assign a new new namespace URI from the IETF XML registry. URI:TBD 10. Acknowledgements We would also like to thank XXX. Zheng, et al. Expires August 16, 2015 [Page 17] Internet-Draft LSP-Ping Yang February 2015 11. References 11.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures", RFC 4379, February 2006. [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. 11.2. Informative References [I-D.ietf-lmap-framework] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., Aitken, P., and A. Akhter, "A framework for large-scale measurement platforms (LMAP)", draft-ietf-lmap- framework-10 (work in progress), January 2015. [I-D.mahesh-netconf-persistent] Jethanandani, M., "NETCONF and persistent responses", draft-mahesh-netconf-persistent-00 (work in progress), October 2014. [RFC4560] Quittek, J. and K. White, "Definitions of Managed Objects for Remote Ping, Traceroute, and Lookup Operations", RFC 4560, June 2006. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, June 2011. [RFC6424] Bahadur, N., Kompella, K., and G. Swallow, "Mechanism for Performing Label Switched Path Ping (LSP Ping) over MPLS Tunnels", RFC 6424, November 2011. [RFC6425] Saxena, S., Swallow, G., Ali, Z., Farrel, A., Yasukawa, S., and T. Nadeau, "Detecting Data-Plane Failures in Point-to-Multipoint MPLS - Extensions to LSP Ping", RFC 6425, November 2011. Zheng, et al. Expires August 16, 2015 [Page 18] Internet-Draft LSP-Ping Yang February 2015 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration Protocol (NETCONF) Access Control Model", RFC 6536, March 2012. Authors' Addresses Lianshu Zheng Huawei Technologies China Email: vero.zheng@huawei.com Sam K. Aldrin Huawei Technologies USA Email: aldrin.ietf@gmail.com Yanfeng Zhang Huawei Technologies China Email: zhangyanfeng@huawei.com Greg Mirsky Ericsson USA Email: gregory.mirsky@ericsson.com Zheng, et al. Expires August 16, 2015 [Page 19]