Network Working Group                                             Y. Liu
Internet-Draft                                                    F. Guo
Intended status: Standards Track                                  Huawei
Expires: April 25, 2015                                 October 22, 2014


                        YANG Data Model for PIM
                         draft-liu-pim-yang-00

Abstract

   This document defines a YANG data model that can be used to configure
   and manage PIM.

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 April 25, 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



Liu & Guo                Expires April 25, 2015                 [Page 1]


Internet-Draft             PIM YANG Data Model              October 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 . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Design of Data Model  . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  PIM BSR Configuration . . . . . . . . . . . . . . . . . .   4
       3.2.1.  Per-instance C-BSR Configuration of PIM BSR Instance    5
       3.2.2.  Per-instance C-RP Configuration of PIM BSR Instance .   5
     3.3.  PIM SM Configuration  . . . . . . . . . . . . . . . . . .   6
       3.3.1.  Per-instance Parameters . . . . . . . . . . . . . . .   6
       3.3.2.  Per-static-RP configuration of the PIM SM instance  .   7
       3.3.3.  Per-SPT-switch configuration of the PIM SM instance .   8
       3.3.4.  Per-Anycast-RP configuration of the PIM SM instance .   8
       3.3.5.  Per-interface configuration of the PIM SM instance  .   9
   4.  PIM Yang Module . . . . . . . . . . . . . . . . . . . . . . .  10
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  30
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  30
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  30
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  31
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  31
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  31
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  32

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 PIM.  It includes PIM SM[RFC4601], PIM
   SSM[RFC4607][RFC4608],PIM BSR[RFC5059].  In addition, It can extend
   PIM DM[RFC3973], BIDIR PIM[RFC5015] etc. features described in PIM
   standards other than mentioned above RFC in future version.







Liu & Guo                Expires April 25, 2015                 [Page 2]


Internet-Draft             PIM YANG Data Model              October 2014


2.  Terminology

   o  PIM: Protocol Independent Multicast

   o  SM: Sparse Mode

   o  SSM: Source-specific Multicast

   o  DM: Dense Mode

   o  BSR: Bootstrap Router

   o  RP: Rendezvous Point

   o  SPT: shortest-path tree

   o  RPT: Rendezvous Point Tree

3.  Design of Data Model

3.1.  Overview

   Because PIM SSM is a subset of PIM SM, it is not necessary to assign
   a separate container for PIM SSM.  The PIM Yang module is divided
   into two main containers :

   o  PIM_BSR : that contains all pim bsr&rp writable configuration
      objects.

   o  PIM_SM : that contains all pim sm writable configuration objects.

   The figure below describes the overall structure of the PIM Yang
   module :


















Liu & Guo                Expires April 25, 2015                 [Page 3]


Internet-Draft             PIM YANG Data Model              October 2014


   module: pim
      +--rw PIM
         +--rw PIM_BSR
         |  +--rw PIM_BSR-Instances
         |     +--rw C-BSR-Instance* [vrfName]
         |     |  ...
         |     +--rw C-RP-Instance* [vrfName]
         |     |  ...
         +--rw PIM_SM
            +--rw PIM_SM-Instances
               +--rw PIM_SM-Instance* [vrfName]
                  |  ...
                  +--rw PIM-Static-RPs
                  |  +--rw PIM-Static-RP
                  |     |  ...
                  +--rw PIM-SPT-Switchs
                  |  +--rw PIM-SPT-Switch* [sptGrpPlyName]
                  |     |  ...
                  +--rw PIM_SM-Anycast-RPs
                  |  +--rw PIM_SM-Anycast-RP
                  |     |  ...
                  |     +--rw PIM_SM-RP-Peers
                  |        +--rw PIM_SM-RP-Peer
                  |        |  ...
                  +--rw PIM_SM-Interfaces
                     +--rw PIM_SM-Interface* [ifName]
                     |  ...

         Figure 1 The overview of PIM YANG data model

3.2.  PIM BSR Configuration

   PIM BSR configuration container has only one main container:

   o  PIM_BSR-instances : that contains all pim c-bsr and c-rp writable
      configuration objects.

   PIM BSR per-instance configuration container includes c-bsr and c-rp
   parameters of the public PIM instance or the PIM instance binding a
   specific VRF.  PIM BSR per-instance configuration container is
   divided into:

   o  Per-instance C-BSR configuration of the PIM BSR instance.

   o  Per-instance C-RP configuration of the PIM BSR instance.






Liu & Guo                Expires April 25, 2015                 [Page 4]


Internet-Draft             PIM YANG Data Model              October 2014


3.2.1.  Per-instance C-BSR Configuration of PIM BSR Instance

   The per-instance C-BSR configuration includes the name of the VRF
   bound by the pim bsr instance, and timer parameters , policies etc.
   it also includes administratively scoped BSR configuration.

   +--rw C-BSR-Instance* [vrfName]
         |     |  +--rw vrfName                 string
         |     |  +--rw addressFamily           enumeration
         |     |  +--rw cBsrIfName              ifName
         |     |  +--rw IPV4-cBsrIfAddr?        inet:ipv4-address
         |     |  +--rw IPV6-cBsrIfAddr         inet:ipv6-address
         |     |  +--rw cBsrHoldTime?           uint32
         |     |  +--rw cBsrInterval?           uint32
         |     |  +--rw cBsrHashLen?            uint32
         |     |  +--rw cBsrPriority?           uint32
         |     |  +--rw cBsrPlyName?            string
         |     |  +--rw cBsrPlyIpv6?            string
         |     |  +--rw cBsrAdminScope?         boolean
         |     |  +--rw cBsrGlobalEnable?       boolean
         |     |  +--rw cBsrGlobalHashLength?   uint32
         |     |  +--rw cBsrGlobalPriority?     uint32
         |     |  +--rw isFragable              boolean

         Figure 2 The YANG data model of PIM C-BSR

3.2.2.  Per-instance C-RP Configuration of PIM BSR Instance

   The per-instance C-RP configuration includes the name of the VRF
   bound by the pim bsr instance, specific interface or address for c-rp
   and timer parameters , policies etc.

         +--rw C-RP-Instance* [vrfName]
         |        +--rw vrfName           string
         |        +--rw cRpIfName         ifName
         |        +--rw cRpGrpPlyName?    string
         |        +--rw cRpPriority?      uint32
         |        +--rw cRpHoldTime?      uint32
         |        +--rw cRpAdvInterval?   uint32
         |        +--rw IPV4-cRpAddr?     inet:ipv4-address
         |        +--rw IPV6-cRpAddr      inet:ipv6-address

         Figure 3 The YANG data model of PIM C-RP








Liu & Guo                Expires April 25, 2015                 [Page 5]


Internet-Draft             PIM YANG Data Model              October 2014


3.3.  PIM SM Configuration

   PIM SM configuration container has only one main container:

   o  PIM_SM-instances : that contains all pim sm writable configuration
      objects.

   PIM SM per-instance configuration container includes pim sm protocol
   parameters of the public PIM instance or the PIM instance binding a
   specific VRF.  PIM SM per-instance configuration container is divided
   into:

   o  Per-instance parameters

   o  Per-static-RP configuration of the PIM SM instance

   o  Per-SPT-switch configuration of the PIM SM instance

   o  Per-Anycast-RP configuration of the PIM SM instance

   o  Per-interface configuration of the PIM SM instance

3.3.1.  Per-instance Parameters

   The per-instance parameter includes the name of the VRF bound by the
   PIM SM instance, and timer parameters such as hello interval etc.,
   and varied policies etc
























Liu & Guo                Expires April 25, 2015                 [Page 6]


Internet-Draft             PIM YANG Data Model              October 2014


           +--rw PIM_SM-Instances
               +--rw PIM_SM-Instance* [vrfName]
                  +--rw vrfName               string
                  +--rw addressFamily         enumeration
                  +--rw assertHoldTime?       uint32
                  +--rw jpHoldTime?           uint32
                  +--rw probeInterval?        uint32
                  +--rw jpTimerInterval?      uint32
                  +--rw drPriority?           uint32
                  +--rw helloHoldtime?        uint16
                  +--rw helloLandelay?        uint16
                  +--rw helloInterval?        uint32
                  +--rw helloOverride?        uint16
                  +--rw regCheckSum?          uint16
                  +--rw regSuppInterval?      uint32
                  +--rw embeddedRp?           boolean
                  +--rw nbrCheckRecv?         boolean
                  +--rw nbrCheckSend?         boolean
                  +--rw regPlyName?           string
                  +--rw regPlyIpv6?           string
                  +--rw ssmPlyName?           string
                  +--rw ssmPlyIpv6?           string
                  +--rw srcPlyName?           string
                  +--rw srcPlyIpv6?           string
                  +--rw bsrPlyName?           string
                  +--rw bsrPlyIpv6?           string
                  +--rw embRpPlyName?         string
                  +--rw sourceLifeTime?       uint32
                  +--rw sptDetInterval?       uint32
                  +--rw ipsecName?            string
                  +--rw ipsecType?            enumeration
                  +--rw uniIpsecName?         string

         Figure 4 The YANG data model of PIM SM instance

3.3.2.  Per-static-RP configuration of the PIM SM instance

   Per-static-RP configuration of the PIM SM instance includes static RP
   address, preference and policy for group range.  For simply
   deployment, sometimes it is not necessary to deploy dynamic BSR/RP
   mechanism, and static RP mechanism is also satisfied.










Liu & Guo                Expires April 25, 2015                 [Page 7]


Internet-Draft             PIM YANG Data Model              October 2014


                 +--rw PIM-Static-RPs
                  |  +--rw PIM-Static-RP
                  |     +--rw IPV4-staticRpAddr      inet:ipv4-address
                  |     +--rw IPV6-staticRpAddr      inet:ipv6-address
                  |     +--rw staticRpPlyName?       string
                  |     +--rw staticRpPlyNameIpv6?   string
                  |     +--rw preference?            enumeration

              Figure 5 The YANG data mode of PIM static-RP

3.3.3.  Per-SPT-switch configuration of the PIM SM instance

   Per-SPT-switch configuration of the PIM SM instance includes spt
   switch threshold, group range by policy.PIM SM SPT switch process as
   described in [RFC4601] makes multicast flows from RPT to SPT in order
   to optimizing the forwarding paths.

                  +--rw PIM-SPT-Switchs
                  |  +--rw PIM-SPT-Switch* [sptGrpPlyName]
                  |     +--rw infinity?          boolean
                  |     +--rw sptThreshHold?     uint32
                  |     +--rw isACLEnable        boolean
                  |     +--rw sptGrpPlyName      string
                  |     +--rw sptGrpPlcyOrder?   uint32

             Figure 6 The YANG data model of PIM SPT Switch

3.3.4.  Per-Anycast-RP configuration of the PIM SM instance

   Anycast-RP as described in [RFC4610] is a mechanism that pim sm
   register packets have been used to exchange multicast source
   information and get fast convergence when a PIM Rendezvous Point (RP)
   router fails.  Per-Anycast-RP configuration container is divided into
   :

   o  Per-Anycast-RP parameters

   o  Per-RP-peer configuration of PIM SM Anycast RP

3.3.4.1.  Per-Anycast-RP Parameters

   Per-Anycast-RP parameter includes the RP for anycast address, and the
   local address to establish RP peer link.








Liu & Guo                Expires April 25, 2015                 [Page 8]


Internet-Draft             PIM YANG Data Model              October 2014


                  +--rw PIM_SM-Anycast-RPs
                  |  +--rw PIM_SM-Anycast-RP
                  |     +--rw IPV4-rpAddress        inet:ipv4-address
                  |     +--rw IPV6-rpAddress        inet:ipv6-address
                  |     +--rw local-IPV4-Address    inet:ipv4-address
                  |     +--rw local-IPV6-Address    inet:ipv6-address

          Figure 7 The YANG data model of PIM SM Anycast-RP

3.3.4.2.  Per-RP-peer Configuration of PIM SM Anycast RP

   Per-RP-peer configuration of PIM SM anycast RP includes the peer
   address, source information forwarding policy etc.

                +--rw PIM_SM-RP-Peers
               |        +--rw PIM_SM-RP-Peer
               |           +--rw IPV4-rpPeer-Address    inet:ipv4-address
               |           +--rw IPV6-rpPeer-Address    inet:ipv6-address
               |           +--rw fwdSaSwt?              boolean
               |           +--rw fwdPolicy?             string
               |           +--rw fwdPolicyIpv6?         string

       Figure 8 The YANG data model of PIM SM Anycast-RP peer

3.3.5.  Per-interface configuration of the PIM SM instance

   Per-interface configuration of the PIM SM instance includes the
   interface name, and the VRF name bound by the interface, and time
   parameters, policies etc.






















Liu & Guo                Expires April 25, 2015                 [Page 9]


Internet-Draft             PIM YANG Data Model              October 2014


                 +--rw PIM_SM-Interfaces
                     +--rw PIM_SM-Interface* [ifName]
                        +--rw vrfName               string
                        +--rw addressFamily         enumeration
                        +--rw ifName                ifName
                        +--rw pimsmEnable           boolean
                        +--rw drPriority?           uint32
                        +--rw helloInterval?        uint32
                        +--rw helloHoldtime?        uint16
                        +--rw helloOverride?        uint16
                        +--rw helloLanDelay?        uint16
                        +--rw jpTimerInterval?      uint32
                        +--rw jpHoldtime?           uint32
                        +--rw jpPlyName?            string
                        +--rw jpPlyIpv6?            string
                        +--rw jpAsmPlyName?         string
                        +--rw jpAsmPlyIpv6?         string
                        +--rw jpSsmPlyName?         string
                        +--rw jpSsmPlyIpv6?         string
                        +--rw nbrPlyName?           string
                        +--rw nbrPlyIpv6?           string
                        +--rw assertHoldtime?       uint32
                        +--rw requireGenId?         boolean
                        +--rw pimBsrBoundary?       enumeration
                        +--rw bfdEnable?            boolean
                        +--rw bfdMinTx?             uint32
                        +--rw bfdMinRx?             uint32
                        +--rw bfdMultiplier?        uint16
                        +--rw isSilent?             boolean
                        +--rw isDrSwtDelay?         boolean
                        +--rw drSwtDelayInterval?   uint32
                        +--rw ipsecName?            string
                        +--rw ipsecType?            enumeration

         Figure 9 The YANG data model of PIM SM interface

4.  PIM Yang Module

module pim {
    namespace "urn:huawei:params:xml:ns:yang:pim";
    // replace with IANA namespace when assigned - urn:ietf:params:xml:ns:yang:1
    prefix "pim";
    import ietf-inet-types {
        prefix inet;
    }
    organization
      "Huawei Technologies Co., Ltd.";
    contact



Liu & Guo                Expires April 25, 2015                [Page 10]


Internet-Draft             PIM YANG Data Model              October 2014


     "liuyisong@huawei.com
      guofeng@huawei.com";
    description
      "This YANG module defines the generic configuration
     data for PIM, 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
     PIM configuration parameters.";
      revision 2014-10-21 {
        description
          "Initial revision.";
      }

    typedef ifName {
            description "ifName is like ethernet1/1/1/1";
            type string {
                length "1..63";
            }
    }

    container PIM {
        container PIM_BSR {

            container PIM_BSR-Instances {

                list C-BSR-Instance {

                    key "vrfName";
                    max-elements "unbounded";
                    min-elements "0";
                    description "Specifies an PIM BSR instance.";

                    leaf vrfName {
                        description "Name of a VPN instance.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf addressFamily {
                        config "true";
                        mandatory "true";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                            }



Liu & Guo                Expires April 25, 2015                [Page 11]


Internet-Draft             PIM YANG Data Model              October 2014


                            enum ipv6unicast {
                                value "1";
                                description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                            }
                        }
                    }
                    leaf cBsrIfName {
                        description "Interface name.";
                        config "true";
                        mandatory "true";
                        type ifName;
                    }

                    leaf IPV4-cBsrIfAddr {
                        description "Global IPv4 unicast address of the C-BSR.";
                        config "true";
                        type inet:ipv4-address;
                    }
                    leaf IPV6-cBsrIfAddr {
                        description "Global IPv6 unicast address of the C-BSR.";
                        config "true";
                        mandatory "true";
                        type inet:ipv6-address;
                    }
                    leaf cBsrHoldTime {
                        description "Timeout period (called holdtime) during which C-BSRs wait to receive bootstrap messages from the BSR. The value is an integer ranging from 1 to 214748364, in seconds. The default value is 130. To prevent frequent BSR elections, set the same holdtime for all C-BSRs in the same domain. If an interval (called BS_interval) at which bootstrap messages are sent has been set for C-BSRs, ensure that the specified holdtime is larger than the BS_interval.";
                        config "true";
                        default "130";
                        type uint32 {
                            range "1..214748364";
                        }
                    }
                    leaf cBsrInterval {
                        description "Interval (called BS_interval) at which a BSR continuously sends bootstrap messages. The value is an integer ranging from 1 to 107374177, in seconds. The default value is 60. To prevent frequent BSR elections, set the same BS_interval for all C-BSRs in the same domain. If a timeout period (called holdtime) during which C-BSRs wait to receive bootstrap messages from the BSR has been set for C-BSRs, ensure that the specified BS_interval is smaller than the holdtime.";
                        config "true";
                        default "60";
                        type uint32 {
                            range "1..107374177";
                        }
                    }
                    leaf cBsrHashLen {
                        description "Global hash mask length for a C-BSR. The value is an integer ranging from 0 to 32. The default value is 30. In IPv4, the value is an integer ranging from 0 to 32, and the default value is 30. In IPv6, the value is an integer ranging from 0 to 128, and the default value is 126.";
                        config "true";
                        default "126";
                        type uint32 {
                            range "0..128";
                        }
                    }



Liu & Guo                Expires April 25, 2015                [Page 12]


Internet-Draft             PIM YANG Data Model              October 2014


                    leaf cBsrPriority {
                        description "Globally specify a priority for all C-BSRs on the router. The greater the value, the higher the priority. The value is an integer ranging from 0 to 255. The default value is 0. ";
                        config "true";
                        default "0";
                        type uint32 {
                            range "0..255";
                        }
                    }
                    leaf cBsrPlyName {
                        description "Policy for limiting the range of valid BSR addresses so that a router discards the messages received from the BSRs not in the specified address range. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, the range of valid BSR addresses is not limited.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                            }
                    }
                    leaf cBsrPlyIpv6 {
                        description "Policy for limiting the range of valid BSR addresses so that a router discards the messages received from the BSRs not in the specified address range. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, the range of valid BSR addresses is not limited.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf cBsrAdminScope {
                        description "One PIM-SM domain is divided into multiple BSR administrative domains to implement RP-Set advertisement. By default, there is only one BSR in the entire PIM-SM domain.";
                        config "true";
                        type boolean
                        {
                        }
                    }
                    leaf cBsrGlobalEnable {
                        description "The router is a C-BSR in the global domain. By default, no C-BSR is configured in the global domain.";
                        config "true";
                        type boolean
                        {
                        }
                    }
                    leaf cBsrGlobalHashLength {
                        description "Hash mask length for the C-BSR in the global domain. The value is an integer ranging from 0 to 32. The default value is 30.";
                        config "true";
                        default "30";
                        type uint32 {
                            range "0..32";
                        }
                    }
                    leaf cBsrGlobalPriority {
                        description "Priority for the C-BSR in the global domain. The greater the value, the higher the priority. The value is an integer ranging from 0 to 255. The default value is 0.";



Liu & Guo                Expires April 25, 2015                [Page 13]


Internet-Draft             PIM YANG Data Model              October 2014


                        config "true";
                        default "0";
                        type uint32 {
                            range "0..255";
                        }
                    }
                    leaf isFragable {
                        description "Enable the C-BSR message fragmentation function. By default, this function is disabled.";
                        config "true";
                        mandatory "true";
                        type boolean
                        {

                        }
                    }
                }

                list C-RP-Instance {

                    key "vrfName";
                    max-elements "unbounded";
                    min-elements "0";
                    description "Specifies a C-RP instance.";

                    leaf vrfName {
                        description "Name of a VPN name.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf cRpIfName {
                        description "Interface name.";
                        config "true";
                        mandatory "true";
                        type ifName;
                    }
                    leaf cRpGrpPlyName {
                        description "Policy for limiting the range of valid group addresses. With this policy, a router discards messages received from the addresses not in the specified range. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf cRpPriority {
                        description "Priority of a C-RP. The greater the value, the lower the priority. The value is an integer ranging from 0 to 255. The default value is 0.";



Liu & Guo                Expires April 25, 2015                [Page 14]


Internet-Draft             PIM YANG Data Model              October 2014


                        config "true";
                        default "0";
                        type uint32 {
                            range "0..255";
                        }
                    }
                    leaf cRpHoldTime {
                        description "Timeout period during which a BSR waits to receive Advertisement messages from a C-RP. The value is an integer ranging from 1 to 65535, in seconds. The default value is 150.";
                        config "true";
                        default "150";
                        type uint32 {
                            range "1..65535";
                        }
                    }
                    leaf cRpAdvInterval {
                        description "Interval at which a C-RP sends Advertisement messages. The value is an integer ranging from 1 to 65535, in seconds. The default value is 60.";
                        config "true";
                        default "60";
                        type uint32 {
                            range "1..65535";
                        }
                    }
                    leaf IPV4-cRpAddr {
                        description "Specifies a C-RP address.";
                        config "true";
                        type inet:ipv4-address;
                    }
                    leaf IPV6-cRpAddr {
                        description "Specifies a C-RP address.";
                        config "true";
                        mandatory "true";
                        type inet:ipv6-address;
                    }
                }
            }

        }

        container PIM_SM {
            container PIM_SM-Instances {
                list PIM_SM-Instance {

                    key "vrfName";
                    max-elements "unbounded";
                    min-elements "0";
                    description "Specifies an PIM-SM instance.";

                    leaf vrfName {



Liu & Guo                Expires April 25, 2015                [Page 15]


Internet-Draft             PIM YANG Data Model              October 2014


                        description "Name of a VPN instance.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }

                    leaf addressFamily {
                        config "true";
                        mandatory "true";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                            }
                        }
                    }
                    leaf assertHoldTime {
                        description "Timeout period during which PIM interfaces wait to receive Assert messages from the forwarder. The value is an integer ranging from 7 to 65535, in seconds. The default value is 180. ";
                        config "true";
                        default "180";
                        type uint32 {
                            range "7..65535";
                        }
                    }
                    leaf jpHoldTime {
                        description "Holdtime for a Join/Prune message sent by a PIM interface. The value is an integer ranging from 1 to 65535, in seconds. The default value is 210. Commonly, the holdtime is 3.5 times longer than the interval for all the interfaces to send Join/Prune messages.";
                        config "true";
                        default "210";
                        type uint32 {
                            range "1..65535";
                        }
                    }
                    leaf probeInterval {
                        description "Interval at which Probe messages are sent to an RP. The value is an integer ranging from 1 to 1799, in seconds. The default value is 5.";
                        config "true";
                        default "5";
                        type uint32 {
                            range "1..1799";
                        }
                    }
                    leaf jpTimerInterval {
                        description "Interval at which Join/Prune messages are sent. The value is an integer ranging from 1 to 2147483647, in seconds. It must be shorter than the holdtime of Join/Prune messages. The default value is 60. ";



Liu & Guo                Expires April 25, 2015                [Page 16]


Internet-Draft             PIM YANG Data Model              October 2014


                        config "true";
                        default "60";
                        type uint32 {
                            range "1..18000";
                        }
                    }
                    leaf drPriority {
                        description "DR election priority for a router. The greater the value, the higher the priority. The value is an integer ranging from 0 to 4294967295. The default value is 1.";
                        config "true";
                        default "1";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf helloHoldtime {
                        description "Timeout period during which a PIM interface waits to receive Hello messages from its neighbors. The value is an integer that ranging from 1 to 65535, in seconds. It must be longer than the interval for PIM neighbors to send Hello messages. The default value is 105. ";
                        config "true";
                        default "105";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf helloLandelay {
                        description "Delay for transmitting Prune messages on a shared network segment. The value is an integer ranging from 1 to 32767, in milliseconds. The default value is 500.";
                        config "true";
                        default "500";
                        type uint16 {
                            range "1..32767";
                        }
                    }
                    leaf helloInterval {
                        description "Specifies the interval at which Hello messages are sent. The value is an integer ranging from 1 to 2147483647, in seconds. It must be shorter than the timeout period of PIM neighbors. The default value is 30.";
                        config "true";
                        default "30";
                        type uint32 {
                            range "1..18000";
                        }
                    }
                    leaf helloOverride {
                        description "Interval at which the prune action in a Hello message is overridden. The value is an integer ranging from 1 to 65535, in milliseconds. The default value is 2500.";
                        config "true";
                        default "2500";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf regCheckSum {
                        description "Configure a router to calculate the checksum based on all contents of a Register message. By default, the checksum is calculated based on the header of a Register message only.";



Liu & Guo                Expires April 25, 2015                [Page 17]


Internet-Draft             PIM YANG Data Model              October 2014


                        config "true";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf regSuppInterval {
                        description "Timeout period during which a router remains in the registration suppression state. The value is an integer ranging from 11 to 3600, in seconds. The default value is 60.";
                        config "true";
                        default "60";
                        type uint32 {
                            range "11..3600";
                        }
                    }
                    leaf embeddedRp {
                        description "Enable the embedded RP function. By default, the embedded RP function is enabled.";
                        config "true";
                        default "true";
                        type boolean {
                        }
                    }
                    leaf nbrCheckRecv {
                        description "Enable the PIM neighbor check function to check whether received Join/Prune and Assert messages are sent from a PIM neighbor. If not, these messages are discarded. By default, the PIM neighbor check function is disabled.";
                        config "true";
                        type boolean {
                        }
                    }
                    leaf nbrCheckSend {
                        description "Enable the PIM neighbor check function to check whether Join/Prune and Assert messages are to be sent to an IPv4/v6 PIM neighbor. If not, these messages are not sent. By default, the PIM neighbor check function is disabled for Join/Prune and Assert messages to be sent.";
                        config "true";
                        type boolean {
                        }
                    }
                    leaf regPlyName {
                        description "Policy for filtering Register messages. The value is an integer ranging from 3000 to 3999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf regPlyIpv6 {
                        description "Policy for filtering Register messages. The value is an integer ranging from 3000 to 3999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }



Liu & Guo                Expires April 25, 2015                [Page 18]


Internet-Draft             PIM YANG Data Model              October 2014


                    leaf ssmPlyName {
                        description "Policy for limiting the range of valid SSM group addresses. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf ssmPlyIpv6 {
                        description "Range of SSM group addresses. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                        type string {
                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf srcPlyName {
                        description "Policy for filtering multicast entries based on source addresses or based on both source and group addresses. The value is an integer ranging from 2000 to 3999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf srcPlyIpv6 {
                        description "Policy for filtering multicast entries based on source addresses or based on both source and group addresses. The value is an integer ranging from 2000 to 3999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf bsrPlyName {
                        description "Policy for limiting the range of valid BSR addresses so that a router discards the messages received from the BSRs not in the specified address range. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, the range of valid BSR addresses is not limited.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf bsrPlyIpv6 {
                        description "Policy for limiting the range of valid BSR addresses so that a router discards the messages received from the BSRs not in the specified address range. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, the range of valid BSR addresses is not limited.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }



Liu & Guo                Expires April 25, 2015                [Page 19]


Internet-Draft             PIM YANG Data Model              October 2014


                    leaf embRpPlyName {
                        description "Policy for limiting the range of multicast groups to which an embedded-RP applies. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                        config "true";
                            type string {
                                length "1..255";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf sourceLifeTime {
                        description "Timeout period for (S, G) entries on a router. The value is an integer ranging from 60 to 65535, in seconds. The default value is 210.";
                        config "true";
                        default "210";
                        type uint32 {
                            range "60..65535";
                        }
                    }
                    leaf sptDetInterval {
                        description "Interval for checking the multicast message rate is configured. When the multicast message rate reaches the specified threshold, a switchover from the RPT to the SPT is performed. The value is an integer ranging from 15 to 65535, in seconds.";
                        config "true";
                        default "15";
                        type uint32 {
                            range "15..65535";
                        }
                    }
                    leaf ipsecName {
                        description "Description of an SA. The value is a string of 1 to 15 characters.";
                        config "true";
                            type string {
                                length "1..15";
                                pattern "^[^ ]+$";
                            }
                    }
                    leaf ipsecType {
                        description "Hello options based on the IPsec type.";
                        config "true";
                        type enumeration {
                            enum forAll {
                                value "0";
                                description "Hello options based on the IPsec type.";
                            }
                            enum forHello {
                                value "1";
                                description "Hello options based on the IPsec type.";
                            }
                        }
                    }
                    leaf uniIpsecName {
                        description "Description of an SA. The value is a string of 1 to 15 characters.";



Liu & Guo                Expires April 25, 2015                [Page 20]


Internet-Draft             PIM YANG Data Model              October 2014


                        config "true";
                            type string {
                                length "1..15";
                                pattern "^[^ ]+$";
                            }
                    }
                    container PIM-Static-RPs {

                        container PIM-Static-RP {

                            leaf IPV4-staticRpAddr {
                                description "Specifies a static RP address.";
                                config "true";
                                mandatory "true";
                                type inet:ipv4-address;
                            }
                            leaf IPV6-staticRpAddr {
                                description "Specifies a static RP address.";
                                config "true";
                                mandatory "true";
                                type inet:ipv6-address;
                            }
                            leaf staticRpPlyName {
                                description "Static RP policy. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                                config "true";
                                type string {
                                    length "1..32";
                                    pattern "^[^ ]+$";
                                }
                            }
                            leaf staticRpPlyNameIpv6 {
                                description "Static RP policy. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                                config "true";
                                type string {
                                    length "1..32";
                                    pattern "^[^ ]+$";
                                }
                            }
                            leaf preference {
                                description "Whether the static RP is preferred. The value can be: 0: the static RP is not preferred. 1: the static RP is preferred. The default value is 0.";
                                config "true";
                                default "NotPrefer";
                                type enumeration {
                                    enum NotPrefer {
                                        value "0";
                                        description "Whether the static RP is preferred. The value can be: 0: the static RP is not preferred. 1: the static RP is preferred. The default value is 0.";
                                    }
                                    enum Prefer {



Liu & Guo                Expires April 25, 2015                [Page 21]


Internet-Draft             PIM YANG Data Model              October 2014


                                        value "1";
                                        description "Whether the static RP is preferred. The value can be: 0: the static RP is not preferred. 1: the static RP is preferred. The default value is 0.";
                                    }
                                }
                            }

                        }

                    }

                    container PIM-SPT-Switchs {

                        list PIM-SPT-Switch {

                            key "sptGrpPlyName";
                            max-elements "unbounded";
                            min-elements "0";
                            description "Rate threshold of multicast packets that can trigger a receiver's DR to send a Join message to a multicast source to set up an SPT. By default, the receiver's DR performs the switchover from the RPT to the SPT after receiving the first multicast data packet.";

                            leaf infinity {
                                description "The receiver's DR never triggers the switchover from the RPT to the SPT.";
                                config "true";
                                type boolean {
                                }
                            }
                            leaf sptThreshHold {
                                description "Multicast packet rate threshold that triggers the switchover from the RPT to the SPT. The value is an integer ranging from 1 to 4194304, in kbit/s. ";
                                config "true";
                                default "1";
                                type uint32 {
                                    range "1..4194304";
                                }
                            }
                            leaf isACLEnable {
                                description "Whether to enable a group policy. ";
                                type boolean {
                                }
                                config "true";
                                mandatory "true";
                            }
                            leaf sptGrpPlyName {
                                description "Name of a named ACL. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. If the parameter is not set, the threshold is applied to all multicast groups. \"0\" means that no ACL is specified.";
                                config "true";
                                type string {
                                    length "1..32";
                                    pattern "^[^ ]+$";
                                }
                            }



Liu & Guo                Expires April 25, 2015                [Page 22]


Internet-Draft             PIM YANG Data Model              October 2014


                            leaf sptGrpPlcyOrder {
                                description "Adjust the order of the ACLs in the group-policy list. If a group matches multiple ACLs, the threshold is selected in the order specified by the order-value parameter. order-value specifies the updated number. It is an integer. The value is any value other than original one in the current group-policy list. If the parameter is not set, the order of the ACLs in the group-policy list does not change.";
                                config "true";
                                default "4294967295";
                                type uint32 {
                                    range "1..4294967295";
                                }
                            }
                        }

                    }

                    container PIM_SM-Anycast-RPs {

                        container PIM_SM-Anycast-RP {

                            leaf IPV4-rpAddress {
                                description "Address of an IPV4 Anycast-RP peer";
                                config "true";
                                mandatory "true";
                                type inet:ipv4-address;
                            }

                            leaf IPV6-rpAddress {
                                description "Address of an IPV6 Anycast-RP peer";
                                config "true";
                                mandatory "true";
                                type inet:ipv6-address;
                            }

                            leaf local-IPV4-Address {
                                description "Address of an IPV4 Anycast-RP peer";
                                config "true";
                                mandatory "true";
                                type inet:ipv4-address;
                            }

                            leaf local-IPV6-Address {
                                description "Address of an IPV4 Anycast-RP peer";
                                config "true";
                                mandatory "true";
                                type inet:ipv6-address;
                            }

                            container PIM_SM-RP-Peers {

                                container PIM_SM-RP-Peer {




Liu & Guo                Expires April 25, 2015                [Page 23]


Internet-Draft             PIM YANG Data Model              October 2014


                                    leaf IPV4-rpPeer-Address {
                                        description "Address of an IPV4 Anycast-RP peer";
                                        config "true";
                                        mandatory "true";
                                        type inet:ipv4-address;
                                    }
                                    leaf IPV6-rpPeer-Address {
                                        description "Address of an IPV6 Anycast-RP peer";
                                        config "true";
                                        mandatory "true";
                                        type inet:ipv6-address;
                                    }
                                    leaf fwdSaSwt {
                                        description "Whether to forward to Anycast-RP peers source information learned through SA messages.";
                                        config "true";
                                        type boolean {
                                        }
                                    }
                                    leaf fwdPolicy {
                                        description "Policy for filtering SA messages to be forwarded to Anycast-RP peers. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                                        config "true";
                                        type string {
                                            length "1..32";
                                            pattern "^[^ ]+$";
                                        }
                                    }
                                    leaf fwdPolicyIpv6 {
                                        description "Policy for filtering SA messages to be forwarded to Anycast-RP peers. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters.";
                                        config "true";
                                        type string {
                                            length "1..32";
                                            pattern "^[^ ]+$";
                                        }
                                    }
                                }

                            }

                        }

                    }

                    container PIM_SM-Interfaces {
                        list PIM_SM-Interface {
                            key "ifName";
                            max-elements "unbounded";
                            min-elements "0";
                            description "Specifies an PIM_SM interface.";



Liu & Guo                Expires April 25, 2015                [Page 24]


Internet-Draft             PIM YANG Data Model              October 2014


                            leaf vrfName {
                                description "Name of an PIM SM instance. If the name string is empty the instance means a public instance whose name is _public_.";
                                config "true";
                                mandatory "true";
                                //default "_public_";
                                type string {
                                    length "0..32";
                                }
                            }
                            leaf addressFamily {
                                config "true";
                                mandatory "true";
                                type enumeration {
                                    enum ipv4unicast {
                                        value "0";
                                        description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                                    }
                                    enum ipv6unicast {
                                        value "1";
                                        description "Address family, which determines whether an address belongs to IPv4 or IPv6.";
                                    }
                                }
                            }
                            leaf ifName {
                                description "Interface name.";
                                config "true";
                                mandatory "true";
                                type ifName;
                            }
                            leaf pimsmEnable {
                                description "Enable PIM-SM on an interface.";
                                config "true";
                                mandatory "true";
                                type boolean {
                                }
                            }
                            leaf drPriority {
                                description "DR priority. The greater the value, the higher the priority. The value is an integer ranging from 0 to 4294967295. The default value is 1.";
                                config "true";
                                default "1";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf helloInterval {
                                description "Interval at which Hello messages are sent. The value is an integer ranging from 1 to 2147483647, in seconds. It must be shorter than the timeout period of PIM neighbors. The default value is 30.";
                                config "true";
                                default "30";



Liu & Guo                Expires April 25, 2015                [Page 25]


Internet-Draft             PIM YANG Data Model              October 2014


                                type uint32 {
                                    range "1..18000";
                                }
                            }
                            leaf helloHoldtime {
                                description "Timeout period during which a router waits for Hello messages sent from its PIM neighbors. The value is an integer ranging from 1 to 65535, in seconds. It must be longer than the interval for PIM neighbors to send Hello messages. The default value is 105.";
                                config "true";
                                default "105";
                                type uint16 {
                                    range "1..65535";
                                }
                            }
                            leaf helloOverride {
                                description "Interval at which the prune action in a Hello message is overridden. The value is an integer ranging from 1 to 65535, in milliseconds. The default value is 2500.";
                                config "true";
                                default "2500";
                                type uint16 {
                                    range "1..65535";
                                }
                            }
                            leaf helloLanDelay {
                                description "Period from the time when a router receives a Prune message from a downstream device to the time when the router performs the prune action. The value is an integer ranging from 1 to 32767, in milliseconds. The default value is 500.";
                                config "true";
                                default "500";
                                type uint16 {
                                    range "1..32767";
                                }
                            }
                            leaf jpTimerInterval {
                                description "Interval at which Join/Prune messages are sent. The value is an integer ranging from 1 to 2147483647, in seconds. The default value is 60. The interval must be shorter than the holdtime of Join/Prune messages.";
                                config "true";
                                default "60";
                                type uint32 {
                                    range "1..18000";
                                }
                            }
                            leaf jpHoldtime {
                                description "Holdtime for Join/Prune messages sent by a router. The value is an integer ranging from 1 to 65535, in seconds. The default value is 210. The holdtime must be longer than the interval at which Join/Prune messages are sent.";
                                config "true";
                                default "210";
                                type uint32 {
                                    range "1..65535";
                                }
                            }
                            leaf jpPlyName {
                                description "Policy for filtering Join/Prune messages. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter Join/Prune messages.";
                                config "true";
                                    type string {



Liu & Guo                Expires April 25, 2015                [Page 26]


Internet-Draft             PIM YANG Data Model              October 2014


                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf jpPlyIpv6 {
                                description "Policy for filtering Join/Prune messages. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter Join/Prune messages.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf jpAsmPlyName {
                                description "Policy for filtering ASM Join/Prune messages. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter ASM Join/Prune messages.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf jpAsmPlyIpv6 {
                                description "Policy for filtering ASM Join/Prune messages. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter ASM Join/Prune messages.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf jpSsmPlyName {
                                description "Policy for filtering SSM Join/Prune messages. The value is an integer ranging from 3000 to 3999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter SSM Join/Prune messages.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf jpSsmPlyIpv6 {
                                description "Policy for filtering SSM Join/Prune messages. The value is an integer ranging from 3000 to 3999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter SSM Join/Prune messages.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf nbrPlyName {
                                description "Policy for filtering PIM neighbors. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter PIM neighbors.";
                                config "true";
                                    type string {



Liu & Guo                Expires April 25, 2015                [Page 27]


Internet-Draft             PIM YANG Data Model              October 2014


                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf nbrPlyIpv6 {
                                description "Policy for filtering PIM neighbors. The value is an integer ranging from 2000 to 2999, or a string of 1 to 32 case-sensitive characters. By default, no policy is configured to filter PIM neighbors.";
                                config "true";
                                    type string {
                                        length "1..32";
                                        pattern "^[^ ]+$";
                                    }
                            }
                            leaf assertHoldtime {
                                description "Timeout period during which PIM interfaces wait to receive Assert messages from the forwarder. The value is an integer ranging from 7 to 65535, in seconds. The default value is 180.";
                                config "true";
                                default "180";
                                type uint32 {
                                    range "7..65535";
                                }
                            }
                            leaf requireGenId {
                                description "Configure a PIM interface to deny Hello messages that do not carry generation IDs. By default, a PIM interface receives Hello messages that do not carry generation IDs.";
                                config "true";
                                type boolean {
                                }
                            }
                            leaf pimBsrBoundary {
                                description "Boundary for a PIM domain. The value can be: 0: no boundary; 1: bidirectional domain boundary; 2: inbound unidirectional domain boundary.";
                                config "true";
                                default "None";
                                type enumeration {
                                    enum None {
                                        value "0";
                                        description "Boundary for a PIM domain. The value can be: 0: no boundary; 1: bidirectional domain boundary; 2: inbound unidirectional domain boundary.";
                                    }
                                    enum Both {
                                        value "1";
                                        description "Boundary for a PIM domain. The value can be: 0: no boundary; 1: bidirectional domain boundary; 2: inbound unidirectional domain boundary.";
                                    }
                                    enum Incoming {
                                        value "2";
                                        description "Boundary for a PIM domain. The value can be: 0: no boundary; 1: bidirectional domain boundary; 2: inbound unidirectional domain boundary.";
                                    }
                                }
                            }
                            leaf bfdEnable {
                                description "Enable PIM BFD on an interface. By default, PIM BFD is not enabled on an interface.";
                                config "true";



Liu & Guo                Expires April 25, 2015                [Page 28]


Internet-Draft             PIM YANG Data Model              October 2014


                                type boolean {
                                }
                            }
                            leaf bfdMinTx {
                                description "Minimum interval at which BFD messages are sent. The value is an integer ranging from 3 to 1000, in milliseconds. ";
                                config "true";
                                default "0";
                                type uint32 {
                                    range "0..1000";
                                }
                            }
                            leaf bfdMinRx {
                                description "Minimum interval at which BFD messages are received. The value is an integer ranging from 3 to 1000, in milliseconds. ";
                                config "true";
                                default "0";
                                type uint32 {
                                    range "0..1000";
                                }
                            }
                            leaf bfdMultiplier {
                                description "Local detect multiplier for BFD messages. The value is an integer ranging from 3 to 50. The default value is 3.";
                                config "true";
                                default "3";
                                type uint16 {
                                    range "3..50";
                                }
                            }
                            leaf isSilent {
                                description "Enable the PIM silent function on an interface. By default, PIM silent is disabled on an interface. ";
                                config "true";
                                default "false";
                                type boolean {
                                }
                            }
                            leaf isDrSwtDelay {
                                description "Enable DR switchover delay on an interface. By default, this function is disabled on an interface.";
                                config "true";
                                default "false";
                                type boolean {
                                }
                            }
                            leaf drSwtDelayInterval {
                                description "Delay for a DR switchover. The value is an integer ranging from 10 to 3600. The default value is 10. The setting is ineffective if the DR switchover delay function is not enabled.";
                                config "true";
                                default "10";
                                type uint32 {
                                    range "10..3600";
                                }



Liu & Guo                Expires April 25, 2015                [Page 29]


Internet-Draft             PIM YANG Data Model              October 2014


                            }
                            leaf ipsecName {
                                description "Description of an SA. The value is a string of 1 to 15 characters.";
                                config "true";
                                type string {
                                    length "1..15";
                                    pattern "^[^ ]+$";
                                }
                            }
                            leaf ipsecType {
                                description "Hello options based on the IPsec type.";
                                config "true";
                                type enumeration {
                                    enum forAll {
                                        value "0";
                                        description "Hello options based on the IPsec type.";
                                    }
                                    enum forHello {
                                        value "1";
                                        description "Hello options based on the IPsec type.";
                                    }
                                }
                            }
                        }
                    }

                }

            }
        }
    }
}

5.  IANA Considerations

   This draft includes no request to 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

   TBD





Liu & Guo                Expires April 25, 2015                [Page 30]


Internet-Draft             PIM YANG Data Model              October 2014


8.  References

8.1.  Normative References

   [I-D.ietf-netmod-routing-cfg]
              Lhotka, L., "A YANG Data Model for Routing Management",
              draft-ietf-netmod-routing-cfg-15 (work in progress), May
              2014.

   [RFC3973]  Adams, A., Nicholas, J., and W. Siadak, "Protocol
              Independent Multicast - Dense Mode (PIM-DM): Protocol
              Specification (Revised)", RFC 3973, January 2005.

   [RFC4601]  Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
              "Protocol Independent Multicast - Sparse Mode (PIM-SM):
              Protocol Specification (Revised)", RFC 4601, August 2006.

   [RFC4607]  Holbrook, H. and B. Cain, "Source-Specific Multicast for
              IP", RFC 4607, August 2006.

   [RFC4608]  Meyer, D., Rockell, R., and G. Shepherd, "Source-Specific
              Protocol Independent Multicast in 232/8", BCP 120, RFC
              4608, August 2006.

   [RFC4610]  Farinacci, D. and Y. Cai, "Anycast-RP Using Protocol
              Independent Multicast (PIM)", RFC 4610, August 2006.

   [RFC5015]  Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
              "Bidirectional Protocol Independent Multicast (BIDIR-
              PIM)", RFC 5015, October 2007.

   [RFC5059]  Bhaskar, N., Gall, A., Lingard, J., and S. Venaas,
              "Bootstrap Router (BSR) Mechanism for Protocol Independent
              Multicast (PIM)", RFC 5059, January 2008.

   [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.

8.2.  Informative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.




Liu & Guo                Expires April 25, 2015                [Page 31]


Internet-Draft             PIM YANG Data Model              October 2014


Authors' Addresses

   Yisong Liu
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: liuyisong@huawei.com


   Feng Guo
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: guofeng@huawei.com

































Liu & Guo                Expires April 25, 2015                [Page 32]