Network Working Group X. Chen Internet-Draft Z. Li Intended status: Standards Track Huawei Technologies Expires: February 16, 2015 August 15, 2014 Yang Model for MPLS LDP draft-chen-mpls-ldp-yang-cfg-00 Abstract This document defines a YANG data model that can be used to configure and manage MPLS LDP. 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 February 16, 2015. Copyright Notice Copyright (c) 2014 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 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 Chen & Li Expires February 16, 2015 [Page 1] Internet-Draft Yang Model for MPLS LDP August 2014 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 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2. LDP Global Configuration . . . . . . . . . . . . . . . . 4 3.3. LDP Per-instance Configuration . . . . . . . . . . . . . 4 3.3.1. Per-instance Parameters . . . . . . . . . . . . . . . 4 3.3.2. Per-interface Configuration of LDP Instance . . . . . 4 3.3.3. Remote Peer Configuration of LDP Instance . . . . . . 5 3.3.4. Peer Configuration of LDP Instance . . . . . . . . . 5 3.3.5. GTSM Configuration of LDP Instance . . . . . . . . . 5 3.3.6. mLDP P2MP Tunnel Configuration of LDP Instance . . . 5 3.3.7. mLDP P2MP Leaf LSP Configuration of LDP Instance . . 6 4. LDP Yang Module . . . . . . . . . . . . . . . . . . . . . . . 6 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 6. Security Considerations . . . . . . . . . . . . . . . . . . . 14 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 8. Normative References . . . . . . . . . . . . . . . . . . . . 14 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 1. Introduction 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]. YANG is proving relevant beyond its initial confines, as bindings to other interfaces(e.g. ReST) and encoding other than XML (e.g. JSON) are being defined. Furthermore, YANG data models can be used as the basis of implementation for other interface, such as CLI and Programmatic APIs. This document defines a YANG data model that can be used to configure and manage MPLS LDP. It includes the core LDP[RFC5036] and mLDP[RFC6388]. In addition, features described in different separate MPLS LDP RFC are also supported. 2. Terminology LDP: Label Distribution Protocol mLDP: Multipoint extensions for LDP Chen & Li Expires February 16, 2015 [Page 2] Internet-Draft Yang Model for MPLS LDP August 2014 GR: Graceful Restart GTSM: Generalized TTL Security Mechanism 3. Design of Data Model 3.1. Overview The LDP Yang module is divided into two main containers : o ldpGlobalPara : that contains global writable configuration objects. o ldpInstances : that contains per-instance writable configuration objects. The figure below describes the overall structure of the LDP Yang module : module: mplsldp +--rw mplsLdp +--rw ldpGlobalPara | +--rw grEnable? boolean | +--rw reconnectTime? uint32 | +--rw recoveryTime? uint32 | +--rw peerLiveTime? uint32 | +--rw backOffInitTime? uint32 | +--rw backOffMaxTime? uint32 +--rw ldpInstances +--rw ldpInstance* [vrfName] +--rw vrfName string +--rw lsrid inet:ipv4-address +--rw igpSyncDelayTime? uint32 +--rw ldpInterfaces | ... +--rw ldpRemotePeers | ... +--rw ldpPeers | ... +--rw ldpGtsms | ... +--rw mldpP2mpTunnels | ... +--rw mldpP2mpLeafLsps ... Chen & Li Expires February 16, 2015 [Page 3] Internet-Draft Yang Model for MPLS LDP August 2014 3.2. LDP Global Configuration LDP global configuration container includes the global parameters such as graceful restart, backoff timer, ... 3.3. LDP Per-instance Configuration LDP per-instance configuration container includes parameters of the public LDP instance or the LDP instance binding a specific VRF. LDP per-instance configuration container is divided into: o Per-instance parameters. o Per-interface configuration of the LDP instance o Remote peer configuration of the LDP instance o Peer configuration of the LDP instance o GTSM[RFC6720] configuration of the LDP instance o mLDP P2MP tunnel configuration of the LDP instance o mLDP P2MP Leaf LSP configuration of the LDP instance 3.3.1. Per-instance Parameters The per-instance parameter includes the name of the VRF bound by the LDP instance, LSR ID and timer parameters for LDP IGP Synchronization[RFC5443]. 3.3.2. Per-interface Configuration of LDP Instance Per-interface configuration of the LDP instance includes the interface name, hello timer parameters, keepalive timer parameters, timer parameters for IGP LDP synchronization, transport address. +--rw ldpInterfaces | +--rw ldpInterface* [ifName] | +--rw ifName ifName | +--rw helloSendTime? uint16 | +--rw helloHoldTime? uint16 | +--rw keepaliveSendTime? uint16 | +--rw keepaliveHoldTime? uint16 | +--rw igpSyncDelayTime? uint32 | +--rw transportAddrInterface? ifName Chen & Li Expires February 16, 2015 [Page 4] Internet-Draft Yang Model for MPLS LDP August 2014 3.3.3. Remote Peer Configuration of LDP Instance The remote peer configuration of the LDP instance includes the name and the remote IP address of the remote peer, hello timer parameters, keepalive timer parameters, timer parameters for IGP LDP synchronization, +--rw ldpRemotePeers | +--rw ldpRemotePeer* [remotePeerName] | +--rw remotePeerName string | +--rw remoteIp? inet:ipv4-address | +--rw helloSendTime? uint16 | +--rw helloHoldTime? uint16 | +--rw keepaliveSendTime? uint16 | +--rw keepaliveHoldTime? uint16 | +--rw igpSyncDelayTime? uint32 3.3.4. Peer Configuration of LDP Instance The peer configuration of the LDP instance includes the peer IP address, authentification parameters for the peer. It may also include the policy to control the distribution of label mapping over the peer which will be defined in the future version. +--rw ldpPeers | +--rw ldpPeer* [peerid] | +--rw peerid inet:ipv4-address | +--rw md5Password? string 3.3.5. GTSM Configuration of LDP Instance The GTSM configuration includes the peer transport address and hop limit. +--rw ldpGtsms +--rw ldpGtsm* [peerTransportAddr] +--rw peerTransportAddr inet:ipv4-address +--rw gtsmHops uint16 3.3.6. mLDP P2MP Tunnel Configuration of LDP Instance In the ingress LSR, mLDP P2MP tunnel should be defined as the entity used for multicast traffic carried by the mLDP P2MP tunnel. The mLDP P2MP tunnel configuration includes the tunnel name, root IP address and the P2MP LSP ID. Chen & Li Expires February 16, 2015 [Page 5] Internet-Draft Yang Model for MPLS LDP August 2014 +--rw mldpP2mpTunnels | +--rw mldpP2mpTunnel* [tunnelName] | +--rw tunnelName string | +--rw rootIp? inet:ipv4-address | +--rw p2mpLspId? uint32 3.3.7. mLDP P2MP Leaf LSP Configuration of LDP Instance mLDP P2MP leaf LSP configuration includes the P2MP LSP name, root IP address and P2MP LSP ID. +--rw mldpP2mpLeafLsps +--rw mldpP2mpLeafLsp* [p2mpLspName] +--rw p2mpLspName string +--rw rootIp? inet:ipv4-address +--rw p2mpLspId? uint32 4. LDP Yang Module module mplsldp { namespace "urn:huawei:params:xml:ns:yang:mplsldp"; // replace with IANA namespace when assigned - urn:ietf:params:xml:ns:yang:1 prefix "mplsldp"; import ietf-inet-types { prefix inet; } organization "Huawei Technologies Co., Ltd."; contact "jescia.chenxia@huawei.com lizhenbin@huawei.com"; description "This YANG module defines the generic configuration data for LDP, which is common across all of the vendor implementations of the protocol. It is intended that the module will be extended by vendors to define vendor-specific LDP configuration parameters."; revision 2014-08-16 { description "Initial revision."; } typedef ifName { description "ifName is like ethernet1/1/1/1"; type string { length "1..63"; } } Chen & Li Expires February 16, 2015 [Page 6] Internet-Draft Yang Model for MPLS LDP August 2014 container mplsLdp { container ldpGlobalPara { leaf grEnable { description "Specifies the LDP GR capability. Enabling or disabling of GR will cause the re-establishment of all LDP sessions."; config "true"; type boolean; default "false"; } leaf reconnectTime { description "Specifies the value of the LDP session reconnection timer. The value is in seconds."; config "true"; default "300"; type uint32 { range "3..3600"; } } leaf recoveryTime { description "Specifies the value of the LSP recovery timer (s). The value is in seconds."; config "true"; default "300"; type uint32 { range "3..3600"; } } leaf peerLiveTime { description "Specifies the value of the neighbor keeplive timer (s). The value is in seconds."; config "true"; default "600"; type uint32 { range "3..3600"; } } leaf backOffInitTime { description "Specifies the init value of the exponential backoff timer (s). The value is in seconds."; config "true"; default "15"; Chen & Li Expires February 16, 2015 [Page 7] Internet-Draft Yang Model for MPLS LDP August 2014 type uint32 { range "5..2147483"; } } leaf backOffMaxTime { description "Specifies the maximum value of the exponential backoff Timer(s). The value is in seconds."; config "true"; default "120"; type uint32 { range "5..2147483"; } } } container ldpInstances { list ldpInstance { key "vrfName"; max-elements "unbounded"; min-elements "0"; description "Specifies a list of LDP instances."; leaf vrfName { description "Name of an LDP instance. If the name string is empty the instance means a public instance whose name is _public_."; config "true"; //default "_public_"; type string { length "0..32"; } } leaf lsrid { description "LSR ID of an instance."; config "true"; mandatory "true"; type inet:ipv4-address; } leaf igpSyncDelayTime { description "Specifies the interval at which an interface waits to establish an LSP after an LDP session is set up. The value is in seconds."; config "true"; default "10"; type uint32 { Chen & Li Expires February 16, 2015 [Page 8] Internet-Draft Yang Model for MPLS LDP August 2014 range "0..65535"; } } container ldpInterfaces { list ldpInterface { key "ifName"; max-elements "unbounded"; min-elements "0"; description "Specifies an LDP interface."; leaf ifName { description "Interface name."; config "true"; type ifName; } leaf helloSendTime { description "Specifies the value of the Hello packet sending timer. The value is in seconds."; config "true"; type uint16 { range "1..65535"; } } leaf helloHoldTime { description "Specifies the interval value of the Hello hold timer. The value is in seconds."; config "true"; type uint16 { range "3..65535"; } } leaf keepaliveSendTime { description "Specifies the value of the Keepalive packet sending timer (s). The value is in seconds."; config "true"; type uint16 { range "1..65535"; } } leaf keepaliveHoldTime { description "Specifies the value of the Keepalive packet holding timer (s). The value is in seconds."; Chen & Li Expires February 16, 2015 [Page 9] Internet-Draft Yang Model for MPLS LDP August 2014 config "true"; type uint16 { range "30..65535"; } } leaf igpSyncDelayTime { description "Specifies an interval at which an interface waits to establish an LSP after an LDP session is set up. The value is in seconds."; config "true"; type uint32 { range "0..65535"; } } leaf transportAddrInterface { description "Configures an interface address to be used as the transport address."; config "true"; type ifName; } } } container ldpRemotePeers { list ldpRemotePeer { key "remotePeerName"; max-elements "unbounded"; min-elements "0"; description "Specifies a remote LDP neighbor."; leaf remotePeerName { description "Specifies the name of a remote neighbor."; config "true"; type string { length "1..32"; } } leaf remoteIp { description "Specifies the IPv4 address of a remote neighbor."; config "true"; type inet:ipv4-address; } leaf helloSendTime { description "Specifies the value of the Hello packet sending timer. Chen & Li Expires February 16, 2015 [Page 10] Internet-Draft Yang Model for MPLS LDP August 2014 The value is in seconds."; config "true"; type uint16 { range "1..65535"; } } leaf helloHoldTime { description "Specifies the value of the Hello packet holding timer (s). The value is in seconds."; config "true"; type uint16 { range "3..65535"; } } leaf keepaliveSendTime { description "Specifies the value of the Keepalive packet sending timer. The value is in seconds."; config "true"; type uint16 { range "1..65535"; } } leaf keepaliveHoldTime { description "Specifies the value of the Keepalive holding timer. The value is in seconds."; config "true"; type uint16 { range "30..65535"; } } leaf igpSyncDelayTime { description "Specifies an interval at which an interface waits to establish an LSP after an LDP session is set up. The value is in seconds."; config "true"; type uint32 { range "0..65535"; } } } } container ldpPeers { Chen & Li Expires February 16, 2015 [Page 11] Internet-Draft Yang Model for MPLS LDP August 2014 list ldpPeer { key "peerid"; max-elements "unbounded"; min-elements "0"; description "Specifies an LDP peer."; leaf peerid { description "Specifies an LDP peer ID."; config "true"; type inet:ipv4-address; } leaf md5Password { description "Specifies an MD5 password."; config "true"; type string { length "1..255"; } } } } container ldpGtsms { list ldpGtsm { key "peerTransportAddr"; max-elements "unbounded"; min-elements "0"; description "Specifies a GTSM security attribute."; leaf peerTransportAddr { description "Specifies a GTSM transport address."; config "true"; type inet:ipv4-address; } leaf gtsmHops { description "Specifies the maximum number of GTSM hops. The value is an integer ranging from 1 to 255."; config "true"; mandatory "true"; type uint16 { range "1..255"; } } } Chen & Li Expires February 16, 2015 [Page 12] Internet-Draft Yang Model for MPLS LDP August 2014 } container mldpP2mpTunnels { list mldpP2mpTunnel { key "tunnelName"; max-elements "unbounded"; min-elements "0"; description "Specifies the mldp p2mp lsp configuration in the root node."; leaf tunnelName { description "Mldp p2mp tunnel name in root node which can be used by service."; config "true"; type string { length "1..31"; } } leaf rootIp { description "Specifies the root ip address of mldp p2mp lsp."; config "true"; type inet:ipv4-address; } leaf p2mpLspId { description "Specifies the LSP ID of mldp p2mp lsp if the generic LSP identifier is a type of opaque value element."; config "true"; type uint32 { range "1..8192"; } } } } container mldpP2mpLeafLsps { list mldpP2mpLeafLsp { key "p2mpLspName"; max-elements "unbounded"; min-elements "0"; description "Specifies the mldp p2mp lsp configuration in the leaf node."; leaf p2mpLspName { description "The name of mldp p2mp lsp configuration in the leaf node."; config "true"; type string { length "1..31"; Chen & Li Expires February 16, 2015 [Page 13] Internet-Draft Yang Model for MPLS LDP August 2014 } } leaf rootIp { description "Specifies the root ip address of mldp p2mp lsp."; config "true"; type inet:ipv4-address; } leaf p2mpLspId { description "Specifies the LSP ID of mldp p2mp lsp if the generic LSP identifier is a type of opaque value element."; config "true"; type uint32 { range "1..8192"; } } } } } } } } 5. IANA Considerations This document makes no request of IANA. 6. Security Considerations The data model defined does not create any security implications. This draft does not change any underlying security issues inherent in [I-D.ietf-netmod-routing-cfg]. 7. Acknowledgements 8. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC5036] Andersson, L., Minei, I., and B. Thomas, "LDP Specification", RFC 5036, October 2007. [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP Synchronization", RFC 5443, March 2009. Chen & Li Expires February 16, 2015 [Page 14] Internet-Draft Yang Model for MPLS LDP August 2014 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC6388] Wijnands, IJ., Minei, I., Kompella, K., and B. Thomas, "Label Distribution Protocol Extensions for Point-to- Multipoint and Multipoint-to-Multipoint Label Switched Paths", RFC 6388, November 2011. [RFC6720] Pignataro, C. and R. Asati, "The Generalized TTL Security Mechanism (GTSM) for the Label Distribution Protocol (LDP)", RFC 6720, August 2012. Authors' Addresses Xia Chen Huawei Technologies Huawei Bld., No.156 Beiqing Rd. Beijing 100095 China Email: jescia.chenxia@huawei.com Zhenbin Li Huawei Technologies Huawei Bld., No.156 Beiqing Rd. Beijing 100095 China Email: lizhenbin@huawei.com Chen & Li Expires February 16, 2015 [Page 15]