Internet DRAFT - draft-chen-mpls-ldp-yang-cfg

draft-chen-mpls-ldp-yang-cfg






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]