Internet DRAFT - draft-liu-pim-yang

draft-liu-pim-yang







Network Working Group                                             Y. Liu
Internet-Draft                                                    F. Guo
Intended status: Standards Track                                  Huawei
Expires: September 23, 2015                                 M. Sivakumar
                                                                   Cisco
                                                          March 22, 2015


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

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 September 23, 2015.

Copyright Notice

   Copyright (c) 2015 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents



Liu, et al.            Expires September 23, 2015               [Page 1]

Internet-Draft             PIM YANG Data Model                March 2015


   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Design of Data Model  . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  PIM BSR Configuration . . . . . . . . . . . . . . . . . .   5
       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 .   6
     3.3.  PIM BSR Operation State . . . . . . . . . . . . . . . . .   6
     3.4.  PIM SM Configuration  . . . . . . . . . . . . . . . . . .   8
       3.4.1.  Per-instance Parameters . . . . . . . . . . . . . . .   8
       3.4.2.  Per-static-RP configuration of the PIM SM instance  .   9
       3.4.3.  Per-SPT-switch configuration of the PIM SM instance .  10
       3.4.4.  Per-Anycast-RP configuration of the PIM SM instance .  10
       3.4.5.  Per-interface configuration of the PIM SM instance  .  11
     3.5.  PIM SM Operation State  . . . . . . . . . . . . . . . . .  12
   4.  Notification  . . . . . . . . . . . . . . . . . . . . . . . .  18
   5.  PIM Yang Module . . . . . . . . . . . . . . . . . . . . . . .  21
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 101
   7.  Security Considerations . . . . . . . . . . . . . . . . . . . 101
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . 101
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . . 101
     9.1.  Normative References  . . . . . . . . . . . . . . . . . . 101
     9.2.  Informative References  . . . . . . . . . . . . . . . . . 102
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . 102

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




Liu, et al.            Expires September 23, 2015               [Page 2]

Internet-Draft             PIM YANG Data Model                March 2015


   PIM DM[RFC3973], BIDIR PIM[RFC5015] etc. features described in PIM
   standards other than mentioned above RFC in future version.

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

   o  RPF: Reverse Path Forwarding

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 and operation states.

   o  pim-sm : that contains all pim sm writable configuration objects
      and operation states.

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

module: pim
   +--rw pim
      +--rw pim-bsr
      |  +--rw pim-bsr-instances
      |  |  +--rw c-bsr-instance* [vrf-name address-family]
      |  |  |  +--...
      |  |  +--rw c-rp-instance* [vrf-name address-family]
      |  |     +--...



Liu, et al.            Expires September 23, 2015               [Page 3]

Internet-Draft             PIM YANG Data Model                March 2015


      |  +--rw pim-bsr-ebsr-infos
      |  |  +--ro pim-bsr-ebsr-info* [vrf-name address-family]
      |  |     +--...
      |  +--rw pim-bsr-cbsr-infos
      |  |  +--ro pim-bsr-cbsr-info* [vrf-name address-family]
      |  |     +--...
      |  +--rw pim-bsr-ebsr-rps
      |     +--ro pim-bsr-ebsr-rp* [vrf-name address-family]
      |        +--...
      +--rw pim-sm
         +--rw pim-sm-instances
         |  +--rw pim-sm-instance* [vrf-name address-family]
         |     +--...
         |     +--rw pim-static-rps
         |     |  +--rw pim-static-rp
         |     |     +--...
         |     +--rw pim-spt-switchs
         |     |  +--rw pim-spt-switch* [spt-threshhold]
         |     |     +--...
         |     +--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* [vrf-name address-family if-name]
         |           +--...
         +--rw pim-sm-if-infos
         |  +--ro pim-sm-if-info* [vrf-name address-family if-name]
         |     +--...
         +--rw pim-nbr-infos
         |  +--ro pim-nbr-info* [vrf-name address-family if-name]
         |     +--...
         |     +--ro pim-second-addrs
         |        +--ro pim-second-addr* [second-addr]
         |           +--...
         +--rw pim-routes
         |  +--ro pim-route* [vrf-name address-family]
         |     +--...
         |     +--ro pim-route-downstreams
         |        +--ro pim-route-downstream* [sg-ds-oif-name]
         |           +--...
         |           +--ro pim-route-downstream-vectors
         |              +--ro pim-route-downstream-vector*
         |                 +--...
         +--rw pim-rpf-routes
         |  +--ro pim-rpf-route* [vrf-name address-family]



Liu, et al.            Expires September 23, 2015               [Page 4]

Internet-Draft             PIM YANG Data Model                March 2015


         |     +--...
         |     +--ro pim-claim-route-sgs
         |        +--ro pim-claim-route-sg* [ipv4-source-addr ipv6-source-addr i
pv4-group-addr ipv6-group-addr]
         |           +--...
         +--rw pim-embedded-rp-infos
         |  +--ro pim-embedded-rp-info* [vrf-name]
         |     +--...
         +--rw pim-rp-group-infos
         |  +--ro pim-rp-group-info* [vrf-name address-family]
         |     +--...
         +--rw pim-bfd-infos
         |  +--ro pim-bfd-info* [vrf-name address-family if-name]
         |     +--...
         +--rw pim-vrf-packet-statistics
            +--ro pim-vrf-packet-statistic* [vrf-name address-family]
               +--...
               +--ro pim-if-packet-statistics
                  +--ro pim-if-packet-statistic* [if-name]
                     +--...
         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.

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.








Liu, et al.            Expires September 23, 2015               [Page 5]

Internet-Draft             PIM YANG Data Model                March 2015


         |  +--rw pim-bsr-instances
         |  |  +--rw c-bsr-instance* [vrf-name address-family]
         |  |  |  +--rw vrf-name                   string
         |  |  |  +--rw address-family             enumeration
         |  |  |  +--rw c-bsr-if-name              if-name
         |  |  |  +--rw ipv4-c-bsr-if-addr?        inet:ipv4-address
         |  |  |  +--rw ipv6-c-bsr-if-addr         inet:ipv6-address
         |  |  |  +--rw c-bsr-holdtime?            uint32
         |  |  |  +--rw c-bsr-interval?            uint32
         |  |  |  +--rw c-bsr-hashlen?             uint32
         |  |  |  +--rw c-bsr-priority?            uint8
         |  |  |  +--rw c-bsr-ply-name?            string
         |  |  |  +--rw c-bsr-ply-ipv6?            string
         |  |  |  +--rw c-bsr-adminscope?          boolean
         |  |  |  +--rw c-bsr-global-enable?       boolean
         |  |  |  +--rw c-bsr-global-hashlength?   uint32
         |  |  |  +--rw c-bsr-global-priority?     uint32
         |  |  |  +--rw is-fragable                boolean

            Figure 2 The YANG data model of PIM C-BSR configuration

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* [vrf-name address-family]
         |  |     +--rw vrf-name             string
         |  |     +--rw address-family       enumeration
         |  |     +--rw c-rp-if-name         if-name
         |  |     +--rw c-rp-grpply-name?    string
         |  |     +--rw c-rp-priority?       uint8
         |  |     +--rw c-rp-holdtime?       uint16
         |  |     +--rw c-rp-adv-interval?   uint16
         |  |     +--rw ipv4-c-rp-addr?      inet:ipv4-address
         |  |     +--rw ipv6-c-rp-addr       inet:ipv6-address

            Figure 3 The YANG data model of PIM C-RP configuration

3.3.  PIM BSR Operation State

   PIM BSR container provides operational states for BSR and RP
   information.  This container is divided in three components:

   o  pim-bsr-ebsr-infos : provide elected bsr state information.

   o  pim-bsr-cbsr-infos : provide candidate bsr state information.



Liu, et al.            Expires September 23, 2015               [Page 6]

Internet-Draft             PIM YANG Data Model                March 2015


   o  pim-bsr-ebsr-rps : provide rp and group mapping information from
      the elected bsr.

         |  +--rw pim-bsr-ebsr-infos
         |  |  +--ro pim-bsr-ebsr-info* [vrf-name address-family]
         |  |     +--ro vrf-name              string
         |  |     +--ro address-family        enumeration
         |  |     +--ro ipv4-bsr-addr?        inet:ipv4-address
         |  |     +--ro ipv6-bsr-addr?        inet:ipv6-address
         |  |     +--ro bsr-scope?            enumeration
         |  |     +--ro ipv4-group-addr?      inet:ipv4-address
         |  |     +--ro ipv6-group-addr?      inet:ipv6-address
         |  |     +--ro ipv4-group-masklen?   uint8
         |  |     +--ro ipv6-group-masklen?   uint8
         |  |     +--ro priority?             uint8
         |  |     +--ro hash-length?          uint8
         |  |     +--ro fsm-state?            enumeration
         |  |     +--ro up-time?              uint32
         |  |     +--ro expire-time?          uint32
         |  |     +--ro c-rp-count?           uint32

           Figure 4  The YANG data model of PIM EBSR information

         |  +--rw pim-bsr-cbsr-infos
         |  |  +--ro pim-bsr-cbsr-info* [vrf-name address-family]
         |  |     +--ro vrf-name              string
         |  |     +--ro address-family        enumeration
         |  |     +--ro ipv4-cbsr-addr?       inet:ipv4-address
         |  |     +--ro ipv6-cbsr-addr?       inet:ipv6-address
         |  |     +--ro bsr-scope?            enumeration
         |  |     +--ro ipv4-group-addr?      inet:ipv4-address
         |  |     +--ro ipv6-group-addr?      inet:ipv6-address
         |  |     +--ro ipv4-group-masklen?   uint8
         |  |     +--ro ipv6-group-masklen?   uint8
         |  |     +--ro priority?             uint8
         |  |     +--ro hash-length?          uint8
         |  |     +--ro fsm-state?            enumeration
         |  |     +--ro is-wait-to-bsr?       enumeration

          Figure 5 The YANG data model of PIM CBSR information











Liu, et al.            Expires September 23, 2015               [Page 7]

Internet-Draft             PIM YANG Data Model                March 2015


         |  +--rw pim-bsr-ebsr-rps
         |     +--ro pim-bsr-ebsr-rp* [vrf-name address-family]
         |        +--ro vrf-name              string
         |        +--ro address-family        enumeration
         |        +--ro ipv4-rp-addr?         inet:ipv4-address
         |        +--ro ipv6-rp-addr?         inet:ipv6-address
         |        +--ro rp-addr-is-local?     boolean
         |        +--ro ipv4-group-addr?      inet:ipv4-address
         |        +--ro ipv6-group-addr?      inet:ipv6-address
         |        +--ro ipv4-group-masklen?   uint8
         |        +--ro ipv6-group-masklen?   uint8
         |        +--ro priority?             uint8
         |        +--ro up-time?              uint32
         |        +--ro expiry-time?          uint32

           Figure 6 The YANG data model of PIM RP information

3.4.  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.4.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, et al.            Expires September 23, 2015               [Page 8]

Internet-Draft             PIM YANG Data Model                March 2015


           +--rw pim-sm-instances
           |  +--rw pim-sm-instance* [vrf-name address-family]
           |     +--rw vrf-name                 string
           |     +--rw address-family           enumeration
           |     +--rw assert-holdtime?         uint16
           |     +--rw jp-holdtime?             uint16
           |     +--rw probe-interval?          uint16
           |     +--rw jp-timer-interval?       uint16
           |     +--rw dr-priority?             uint32
           |     +--rw hello-holdtime?          uint16
           |     +--rw hello-lan-delay?         uint16
           |     +--rw hello-interval?          uint16
           |     +--rw hello-override?          uint16
           |     +--rw reg-checksum?            boolean
           |     +--rw reg-suppress-interval?   uint16
           |     +--rw embedded-rp?             boolean
           |     +--rw nbr-check-recv?          boolean
           |     +--rw nbr-check-send?          boolean
           |     +--rw reg-ply-name?            string
           |     +--rw reg-ply-ipv6?            string
           |     +--rw ssm-ply-name?            string
           |     +--rw ssm-ply-ipv6?            string
           |     +--rw src-ply-name?            string
           |     +--rw src-ply-ipv6?            string
           |     +--rw bsr-ply-name?            string
           |     +--rw bsr-ply-ipv6?            string
           |     +--rw emb-rp-ply-name?         string
           |     +--rw source-lifetime?         uint16
           |     +--rw ipsec-name?              string
           |     +--rw ipsec-type?              enumeration
           |     +--rw uni-ipsec-name?          string

           Figure 7 The YANG data model of PIM SM instance configuration

3.4.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, et al.            Expires September 23, 2015               [Page 9]

Internet-Draft             PIM YANG Data Model                March 2015


         |     +--rw pim-static-rps
         |     |  +--rw pim-static-rp
         |     |     +--rw ipv4-static-rp-addr        inet:ipv4-address
         |     |     +--rw ipv6-static-rp-addr        inet:ipv6-address
         |     |     +--rw static-rp-ply-name?        string
         |     |     +--rw static-rp-ply-name-ipv6?   string
         |     |     +--rw preference?                enumeration

              Figure 8 The YANG data mode of PIM static-RP configuration

3.4.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* [spt-threshhold]
         |     |     +--rw infinity?            boolean
         |     |     +--rw spt-threshhold       uint32
         |     |     +--rw is-acl-enable        boolean
         |     |     +--rw spt-grp-ply-name?    string
         |     |     +--rw spt-grp-ply-order?   uint32

             Figure 9 The YANG data model of PIM SPT switch configuration

3.4.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.4.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, et al.            Expires September 23, 2015              [Page 10]

Internet-Draft             PIM YANG Data Model                March 2015


         |     +--rw pim-sm-anycast-rps
         |     |  +--rw pim-sm-anycast-rp
         |     |     +--rw ipv4-rp-address       inet:ipv4-address
         |     |     +--rw ipv6-rp-address       inet:ipv6-address
         |     |     +--rw local-ipv4-address    inet:ipv4-address
         |     |     +--rw local-ipv6-address    inet:ipv6-address

          Figure 10 The YANG data model of PIM SM anycast-RP configuration

3.4.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-rp-peer-address    inet:ipv4-address
         |     |           +--rw ipv6-rp-peer-address    inet:ipv6-address
         |     |           +--rw fwd-sa-swt?             boolean
         |     |           +--rw fwd-policy?             string
         |     |           +--rw fwd-policy-ipv6?        string

       Figure 11 The YANG data model of PIM SM anycast-RP peer configuration

3.4.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, et al.            Expires September 23, 2015              [Page 11]

Internet-Draft             PIM YANG Data Model                March 2015


         |     +--rw pim-sm-interfaces
         |        +--rw pim-sm-interface* [vrf-name address-family if-name]
         |           +--rw vrf-name                 string
         |           +--rw address-family           enumeration
         |           +--rw if-name                  if-name
         |           +--rw pim-sm-enable            boolean
         |           +--rw dr-priority?             uint32
         |           +--rw hello-interval?          uint16
         |           +--rw hello-holdtime?          uint16
         |           +--rw hello-override?          uint16
         |           +--rw hello-lan-delay?         uint16
         |           +--rw jp-timer-interval?       uint16
         |           +--rw jp-holdtime?             uint16
         |           +--rw jp-ply-name?             string
         |           +--rw jp-ply-ipv6?             string
         |           +--rw jp-asm-ply-name?         string
         |           +--rw jp-asm-ply-ipv6?         string
         |           +--rw jp-ssm-ply-name?         string
         |           +--rw jp-ssm-ply-ipv6?         string
         |           +--rw nbr-ply-name?            string
         |           +--rw nbr-ply-ipv6?            string
         |           +--rw assert-holdtime?         uint16
         |           +--rw require-gen-id?          boolean
         |           +--rw pim-bsr-boundary?        enumeration
         |           +--rw bfd-enable?              boolean
         |           +--rw bfd-min-tx?              uint16
         |           +--rw bfdminrx?                uint16
         |           +--rw bfd-multiplier?          uint8
         |           +--rw is-silent?               boolean
         |           +--rw is-dr-swt-delay?         boolean
         |           +--rw dr-swt-delay-interval?   uint16
         |           +--rw ipsec-name?              string
         |           +--rw ipsec-type?              enumeration

         Figure 12 The YANG data model of PIM SM interface configuration

3.5.  PIM SM Operation State

   PIM SM container provides operational states for interface,
   neighbor,routing etc. information.  This container is divided in
   multiple components:

   o  pim-sm-if-infos : provide interface state and running parameters
      information for all of the PIM SM interfaces.

   o  pim-nbr-infos : provide neighbor state information for all of the
      PIM SM neighbors.




Liu, et al.            Expires September 23, 2015              [Page 12]

Internet-Draft             PIM YANG Data Model                March 2015


   o  pim-routes : provide routing state information for all of the PIM
      SM routing entries.

   o  pim-rpf-routes : provide RPF routing state information for all of
      the PIM SM routing entries.

   o  pim-embedded-rp-infos : provide embedded RP information for all of
      the PIM SM ipv6 groups.

   o  pim-rp-group-infos : provide group RP mapping information for all
      of the PIM SM groups.

   o  pim-bfd-infos : provide BFD session information for all of the BFD
      sessions created by PIM SM.

   o  pim-vrf-packet-statistics : provide PIM SM packet statistical
      information for all of the PIM SM protocol packets.

         +--rw pim-sm-if-infos
         |  +--ro pim-sm-if-info* [vrf-name address-family if-name]
         |     +--ro vrf-name                           string
         |     +--ro address-family                     enumeration
         |     +--ro if-name                            if-name
         |     +--ro if-up-state?                       enumeration
         |     +--ro neighbor-count?                    uint32
         |     +--ro dr-priority?                       uint32
         |     +--ro ipv4-dr-addr?                      inet:ipv4-address
         |     +--ro ipv6-dr-addr?                      inet:ipv6-address
         |     +--ro hello-interval?                    uint16
         |     +--ro hello-holdtime?                    uint16
         |     +--ro assert-holdtime?                   uint16
         |     +--ro jp-interval?                       uint16
         |     +--ro jp-holdtime?                       uint16
         |     +--ro lan-delay-neg?                     uint16
         |     +--ro hello-over-interval-neg?           uint16
         |     +--ro gen-id?                            uint32
         |     +--ro non-dr-neighbor-num?               uint32
         |     +--ro non-lan-delay-neighbor-num?        uint32
         |     +--ro non-join-attribute-neighbor-num?   uint32
         |     +--ro join-attribute?                    boolean
         |     +--ro ipsec-name?                        string
         |     +--ro ipsec-type?                        enumeration

         The Figure 13  The YANG data model of PIM SM interface information







Liu, et al.            Expires September 23, 2015              [Page 13]

Internet-Draft             PIM YANG Data Model                March 2015


         +--rw pim-nbr-infos
         |  +--ro pim-nbr-info* [vrf-name address-family if-name]
         |     +--ro vrf-name               string
         |     +--ro address-family         enumeration
         |     +--ro if-name                if-name
         |     +--ro ipv4-nbr-addr?         inet:ipv4-address
         |     +--ro ipv6-nbr-addr?         inet:ipv6-address
         |     +--ro up-time?               uint32
         |     +--ro expire-time?           uint32
         |     +--ro dr-priority-present?   boolean
         |     +--ro dr-priority?           uint32
         |     +--ro gen-id-present?        boolean
         |     +--ro gen-id?                uint32
         |     +--ro holdtime?              uint16
         |     +--ro lan-delay-present?     boolean
         |     +--ro lan-delay?             uint16
         |     +--ro override-interval?     uint16
         |     +--ro join-attribute?        boolean
         |     +--ro pim-second-addrs
         |        +--ro pim-second-addr* [second-addr]
         |           +--ro second-addr    inet:ipv6-address

         The Figure 14 The YANG data model of PIM SM neighbor information

         +--rw pim-routes
         |  +--ro pim-route* [vrf-name address-family]
         |     +--ro vrf-name                      string
         |     +--ro address-family                enumeration
         |     +--ro ipv4-source-addr?             inet:ipv4-address
         |     +--ro ipv6-source-addr?             inet:ipv6-address
         |     +--ro ipv4-group-addr?              inet:ipv4-address
         |     +--ro ipv6-group-addr?              inet:ipv6-address
         |     +--ro sg-up-protocl-type?           enumeration
         |     +--ro rp-mode-type?                 enumeration
         |     +--ro ipv4-rp-addr?                 inet:ipv4-address
         |     +--ro ipv6-rp-addr?                 inet:ipv6-address
         |     +--ro rp-addr-is-local?             boolean
         |     +--ro sg-flag?                      string
         |     +--ro sg-up-time?                   uint32
         |     +--ro sg-iif-name?                  string
         |     +--ro sg-vector-rd?                 string
         |     +--ro ipv4-sg-vector-addr?          inet:ipv4-address
         |     +--ro ipv6-sg-vector-addr?          inet:ipv6-address
         |     +--ro sg-elect-vector-rd?           string
         |     +--ro ipv4-sg-elect-vector-addr?    inet:ipv4-address
         |     +--ro ipv6-sg-elect-vector-addr?    inet:ipv6-address
         |     +--ro ipv4-sg-up-nbr-addr?          inet:ipv4-address
         |     +--ro ipv6-sg-up-nbr-addr?          inet:ipv6-address



Liu, et al.            Expires September 23, 2015              [Page 14]

Internet-Draft             PIM YANG Data Model                March 2015


         |     +--ro ipv4-sg-rpf-addr?             inet:ipv4-address
         |     +--ro ipv6-sg-rpf-addr?             inet:ipv6-address
         |     +--ro ipv4-sg-refer-addr?           inet:ipv4-address
         |     +--ro ipv6-sg-refer-addr?           inet:ipv6-address
         |     +--ro sg-rpf-masklen?               uint8
         |     +--ro sg-rpf-metric?                uint16
         |     +--ro sg-rpf-metric-preference?     uint16
         |     +--ro backup-sg-iif-name?           string
         |     +--ro ipv4-backup-sg-up-nbr-addr?   inet:ipv4-address
         |     +--ro ipv6-backup-sg-up-nbr-addr?   inet:ipv6-address
         |     +--ro ipv4-backup-sg-rpf-addr?      inet:ipv4-address
         |     +--ro ipv6-backup-sg-rpf-addr?      inet:ipv6-address
         |     +--ro sg-up-state?                  enumeration
         |     +--ro sg-up-exp-time?               uint32
         |     +--ro sg-up-rp-tstate?              enumeration
         |     +--ro sg-up-rpt-overtime?           uint32
         |     +--ro sg-reg-state?                 enumeration
         |     +--ro sg-reg-stop-time?             uint32
         |     +--ro pim-route-downstreams
         |        +--ro pim-route-downstream* [sg-ds-oif-name]
         |           +--ro sg-ds-oif-name                  string
         |           +--ro sg-ds-protocol-type?            string
         |           +--ro sg-ds-up-time?                  uint32
         |           +--ro sg-ds-expire-time?              uint32
         |           +--ro sg-ds-dr-state?                 boolean
         |           +--ro sg-ds-state?                    enumeration
         |           +--ro sg-ds-ppt-time?                 uint32
         |           +--ro sg-ds-assert-state?             enumeration
         |           +--ro sg-ds-assert-time?              uint32
         |           +--ro ipv4-sg-ds-assert-win-addr?     inet:ipv4-address
         |           +--ro ipv6-sg-ds-assert-win-addr?     inet:ipv6-address
         |           +--ro sg-ds-assert-win-metric?        uint16
         |           +--ro sg-ds-ast-win-metric-pre?       uint16
         |           +--ro sg-ds-local-member?             boolean
         |           +--ro sg-ds-rpt-state?                enumeration
         |           +--ro sg-ds-rpt-ppt-time?             uint32
         |           +--ro sg-ds-rpt-expire-time?          uint32
         |           +--ro sg-vector-num?                  uint16
         |           +--ro pim-route-downstream-vectors
         |              +--ro pim-route-downstream-vector*
         |                 +--ro ipv4-neighbor-addr?          inet:ipv4-address
         |                 +--ro ipv6-neighbor-addr?          inet:ipv6-address
         |                 +--ro neighbor-vector-rd?          string
         |                 +--ro ipv4-neighbor-vector-addr?   inet:ipv4-address
         |                 +--ro ipv6-neighbor-vector-addr?   inet:ipv6-address
         |                 +--ro neighbor-expire-time?        uint32

        Figure 15 The YANG data model of PIM SM routing information



Liu, et al.            Expires September 23, 2015              [Page 15]

Internet-Draft             PIM YANG Data Model                March 2015


         +--rw pim-rpf-routes
         |  +--ro pim-rpf-route* [vrf-name address-family]
         |     +--ro vrf-name                    string
         |     +--ro address-family              enumeration
         |     +--ro ipv4-dest-addr?             inet:ipv4-address
         |     +--ro ipv6-dest-addr?             inet:ipv6-address
         |     +--ro if-name?                    if-name
         |     +--ro ipv4-rpf-addr?              inet:ipv4-address
         |     +--ro ipv6-rpf-addr?              inet:ipv6-address
         |     +--ro ipv4-refer-route-addr?      inet:ipv4-address
         |     +--ro ipv6-refer-route-addr?      inet:ipv6-address
         |     +--ro ipv4-refer-route-masklen?   uint8
         |     +--ro ipv6-refer-route-masklen?   uint8
         |     +--ro refer-route-type?           enumeration
         |     +--ro pim-claim-route-sgs
         |        +--ro pim-claim-route-sg* [ipv4-source-addr ipv6-source-addr i
pv4-group-addr ipv6-group-addr]
         |           +--ro ipv4-source-addr    inet:ipv4-address
         |           +--ro ipv6-source-addr    inet:ipv6-address
         |           +--ro ipv4-group-addr     inet:ipv4-address
         |           +--ro ipv6-group-addr     inet:ipv6-address

         The Figure 16  The YANG data model of PIM SM RPF routing information

         +--rw pim-embedded-rp-infos
         |  +--ro pim-embedded-rp-info* [vrf-name]
         |     +--ro vrf-name            string
         |     +--ro ipv6-group-addr?    inet:ipv6-address
         |     +--ro embedded-rp-addr?   inet:ipv6-address

         The Figure 17  The YANG data model of PIM SM embedded RP information

         +--rw pim-rp-group-infos
         |  +--ro pim-rp-group-info* [vrf-name address-family]
         |     +--ro vrf-name               string
         |     +--ro address-family         enumeration
         |     +--ro ipv4-group-addr?       inet:ipv4-address
         |     +--ro ipv6-group-addr?       inet:ipv6-address
         |     +--ro ipv4-bsr-rp-addr?      inet:ipv4-address
         |     +--ro ipv6-bsr-rp-addr?      inet:ipv6-address
         |     +--ro ipv4-static-rp-addr?   inet:ipv4-address
         |     +--ro ipv6-static-rp-addr?   inet:ipv6-address
         |     +--ro embedded-rp-addr?      inet:ipv6-address
         |     +--ro ipv4-map-rp-addr?      inet:ipv4-address
         |     +--ro ipv6-map-rp-addr?      inet:ipv6-address

         Figure 18  The YANG data model of PIM SM group RP mapping information




Liu, et al.            Expires September 23, 2015              [Page 16]

Internet-Draft             PIM YANG Data Model                March 2015


         +--rw pim-bfd-infos
         |  +--ro pim-bfd-info* [vrf-name address-family if-name]
         |     +--ro vrf-name              string
         |     +--ro address-family        enumeration
         |     +--ro if-name               if-name
         |     +--ro ipv4-neighbor-addr?   inet:ipv4-address
         |     +--ro ipv6-neighbor-addr?   inet:ipv6-address
         |     +--ro act-tx?               uint32
         |     +--ro act-rx?               uint32
         |     +--ro act-multi?            uint32
         |     +--ro local-port?           uint32
         |     +--ro remote-port?          uint32
         |     +--ro bfd-status?           enumeration

         Figure 19 The YANG data model of PIM SM BFD session information




































Liu, et al.            Expires September 23, 2015              [Page 17]

Internet-Draft             PIM YANG Data Model                March 2015


            +--rw pim-vrf-packet-statistics
               +--ro pim-vrf-packet-statistic* [vrf-name address-family]
                  +--ro vrf-name                     string
                  +--ro address-family               enumeration
                  +--ro register-recv-num?           uint32
                  +--ro register-send-num?           uint32
                  +--ro register-invalid-num?        uint32
                  +--ro register-filter-num?         uint32
                  +--ro register-stop-recv-num?      uint32
                  +--ro register-stop-send-num?      uint32
                  +--ro register-stop-invalid-num?   uint32
                  +--ro register-stop-filter-num?    uint32
                  +--ro probe-recv-num?              uint32
                  +--ro probe-send-num?              uint32
                  +--ro probe-invalid-num?           uint32
                  +--ro probe-filter-num?            uint32
                  +--ro crp-recv-num?                uint32
                  +--ro crp-send-num?                uint32
                  +--ro crp-invalid-num?             uint32
                  +--ro crp-filter-num?              uint32
                  +--ro pim-if-packet-statistics
                     +--ro pim-if-packet-statistic* [if-name]
                        +--ro if-name               if-name
                        +--ro assert-recv-num?      uint32
                        +--ro assert-send-num?      uint32
                        +--ro assert-invalid-num?   uint32
                        +--ro assert-filter-num?    uint32
                        +--ro hello-recv-num?       uint32
                        +--ro hello-send-num?       uint32
                        +--ro hello-invalid-num?    uint32
                        +--ro hello-filter-num?     uint32
                        +--ro jp-recv-num?          uint32
                        +--ro jp-send-num?          uint32
                        +--ro jp-invalid-num?       uint32
                        +--ro jp-filter-num?        uint32
                        +--ro bsr-recv-num?         uint32
                        +--ro bsr-send-num?         uint32
                        +--ro bsr-invalid-num?      uint32
                        +--ro bsr-filter-num?       uint32

           Figure 20  The YANG data model of PIM SM packet statistics

4.  Notification

   The pim yang data model introduces some notifications:

   pim-neighbor-loss : This notification is sent when an adjacency with
   a neighbor was lost.



Liu, et al.            Expires September 23, 2015              [Page 18]

Internet-Draft             PIM YANG Data Model                March 2015


   pim-invalid-register : This notification is sent when an invalid PIM
   Register message was received.

   pim-invalid-join-prune : This notification is sent when an invalid
   PIM Join/Prune message was received.

   pim-rp-mapping-change : This notification is sent when the active RP
   mapping has been changed.

   pim-interface-election : This notification is sent when a new PIM DR
   has been elected on a network.








































Liu, et al.            Expires September 23, 2015              [Page 19]

Internet-Draft             PIM YANG Data Model                March 2015


   notifications:
      +---n pim-neighbor-loss
      |  +--ro vrf-name?             string
      |  +--ro address-family?       enumeration
      |  +--ro if-name?              if-name
      |  +--ro ipv4-neighbor-addr?   inet:ipv4-address
      |  +--ro ipv6-neighbor-addr?   inet:ipv6-address
      |  +--ro neighbor-up-time?     uint32
      +---n pim-invalid-register
      |  +--ro vrf-name?                       string
      |  +--ro address-family?                 enumeration
      |  +--ro ipv4-invalid-register-origin?   inet:ipv4-address
      |  +--ro ipv6-invalid-register-origin?   inet:ipv6-address
      |  +--ro ipv4-invalid-register-group?    inet:ipv4-address
      |  +--ro ipv6-invalid-register-group?    inet:ipv6-address
      |  +--ro ipv4-invalid-register-rp?       inet:ipv4-address
      |  +--ro ipv6-invalid-register-rp?       inet:ipv6-address
      +---n pim-invalid-join-prune
      |  +--ro vrf-name?                         string
      |  +--ro address-family?                   enumeration
      |  +--ro ipv4-invalid-join-prune-origin?   inet:ipv4-address
      |  +--ro ipv6-invalid-join-prune-origin?   inet:ipv6-address
      |  +--ro ipv4-invalid-join-prune-group?    inet:ipv4-address
      |  +--ro ipv6-invalid-join-prune-group?    inet:ipv6-address
      |  +--ro ipv4-invalid-join-prune-rp?       inet:ipv4-address
      |  +--ro ipv6-invalid-join-prune-rp?       inet:ipv6-address
      |  +--ro neighbor-up-time?                 uint32
      +---n pim-rp-mapping-change
      |  +--ro vrf-name?                            string
      |  +--ro address-family?                      enumeration
      |  +--ro group-mapping-origin?                enumeration
      |  +--ro ipv4-group-mapping-group-address?    inet:ipv4-address
      |  +--ro ipv6-group-mapping-group-address?    inet:ipv6-address
      |  +--ro group-mapping-group-prefix-length?   uint8
      |  +--ro ipv4-group-mapping-rp-address?       inet:ipv4-address
      |  +--ro ipv6-group-mapping-rp-address?       inet:ipv6-address
      |  +--ro group-mapping-precedence?            uint32
      +---n pim-interface-election
         +--ro vrf-name?         string
         +--ro address-family?   enumeration
         +--ro if-name?          if-name
         +--ro ipv4-if-addr?     inet:ipv4-address
         +--ro ipv6-if-addr?     inet:ipv6-address

         Figure 21 The YANG data model of PIM SM notifications






Liu, et al.            Expires September 23, 2015              [Page 20]

Internet-Draft             PIM YANG Data Model                March 2015


5.  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
      "IETF PIM(Protocol Independent Multicast) Working Group";
    contact
     "liuyisong@huawei.com
      guofeng@huawei.com
      masivaku@cisco.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 2015-03-09 {
        description
          "Add operation and notification content.";
    }
    revision 2014-10-21 {
        description
          "Initial revision.";
    }

    typedef if-name {
        description "if-name 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 "vrf-name address-family";
                    max-elements "unbounded";



Liu, et al.            Expires September 23, 2015              [Page 21]

Internet-Draft             PIM YANG Data Model                March 2015


                    min-elements "0";
                    description "Specifies an pim bsr instance.";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        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 c-bsr-if-name {
                        description "interface name.";
                        config "true";
                        mandatory "true";
                        type if-name;
                    }

                    leaf ipv4-c-bsr-if-addr {
                        description
                          "Global ipv4 unicast address of the c-bsr.";
                        config "true";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-c-bsr-if-addr {
                        description
                          "Global ipv6 unicast address of the c-bsr.";
                        config "true";



Liu, et al.            Expires September 23, 2015              [Page 22]

Internet-Draft             PIM YANG Data Model                March 2015


                        mandatory "true";
                        type inet:ipv6-address;
                    }
                    leaf c-bsr-holdtime {
                        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 c-bsr-interval {
                        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 c-bsr-hashlen {
                        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



Liu, et al.            Expires September 23, 2015              [Page 23]

Internet-Draft             PIM YANG Data Model                March 2015


                           an integer ranging from 0 to 128, and the
                           default value is 126.";
                        config "true";
                        default "126";
                        type uint32 {
                            range "0..128";
                        }
                    }
                    leaf c-bsr-priority {
                        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 uint8 {
                            range "0..255";
                        }
                    }
                    leaf c-bsr-ply-name {
                        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 c-bsr-ply-ipv6 {
                        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 {



Liu, et al.            Expires September 23, 2015              [Page 24]

Internet-Draft             PIM YANG Data Model                March 2015


                            length "1..255";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf c-bsr-adminscope {
                        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 c-bsr-global-enable {
                        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 c-bsr-global-hashlength {
                        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 c-bsr-global-priority {
                        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.";
                        config "true";
                        default "0";
                        type uint32 {
                            range "0..255";
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 25]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf is-fragable {
                        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 "vrf-name address-family";
                    max-elements "unbounded";
                    min-elements "0";
                    description "specifies a c-rp instance.";

                    leaf vrf-name {
                        description "Name of a vpn name.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        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.";
                            }
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 26]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf c-rp-if-name {
                        description "interface name.";
                        config "true";
                        mandatory "true";
                        type if-name;
                    }
                    leaf c-rp-grpply-name {
                        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 c-rp-priority {
                        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.";
                        config "true";
                        default "0";
                        type uint8 {
                            range "0..255";
                        }
                    }
                    leaf c-rp-holdtime {
                        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 uint16 {
                            range "1..65535";
                        }
                    }
                    leaf c-rp-adv-interval {
                        description
                          "Interval at which a c-rp sends advertisement
                           messages. The value is an integer ranging



Liu, et al.            Expires September 23, 2015              [Page 27]

Internet-Draft             PIM YANG Data Model                March 2015


                           from 1 to 65535, in seconds. The default
                           value is 60.";
                        config "true";
                        default "60";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf ipv4-c-rp-addr {
                        description "specifies a c-rp address.";
                        config "true";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-c-rp-addr {
                        description "specifies a c-rp address.";
                        config "true";
                        mandatory "true";
                        type inet:ipv6-address;
                    }
                }
            }

            container pim-bsr-ebsr-infos {

                list pim-bsr-ebsr-info {


                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";



Liu, et al.            Expires September 23, 2015              [Page 28]

Internet-Draft             PIM YANG Data Model                March 2015


                            }
                        }
                    }
                    leaf ipv4-bsr-addr {
                        description "address of an elected bsr.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-bsr-addr {
                        description "address of an elected bsr.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf bsr-scope {
                        description
                          "whether the bsr is a bsr in an
                           administrative domain.";
                        config "false";
                        type enumeration {
                            enum notscoped {
                                value "0";
                                description "notscoped:notscoped";
                            }
                            enum global {
                                value "1";
                                description "global:global";
                            }
                            enum adminscope {
                                value "2";
                                description "adminscope:adminscope";
                            }
                        }
                    }
                    leaf ipv4-group-addr {
                        description
                          "Multicast group address. In ipv4 address,
                           the value ranges from 239.0.0.0 to
                           239.255.255.255. ";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. In ipv6, the value
                           is in hexadecimal notation and in the format
                           of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;



Liu, et al.            Expires September 23, 2015              [Page 29]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf ipv4-group-masklen {
                        description
                          "Mask length of a group address. The value is
                           an integer ranging from 4 to 32.";
                        config "false";
                        type uint8 {
                            range "4..32";
                        }
                    }
                    leaf ipv6-group-masklen {
                        description
                          "Mask length of a group address. the value is
                           an integer ranging from 8 to 128.";
                        config "false";
                        type uint8 {
                            range "8..128";
                        }
                    }
                    leaf priority {
                        description
                          "Priority for a c-bsr to participate in bsr
                           election. The greater the value, the higher
                           the priority. The value is an integer
                           ranging from 0 to 255. The default value is
                           0.";
                        config "false";
                        type uint8 {
                            range "0..255";
                        }
                    }
                    leaf hash-length {
                        description
                          "Hash length used by an elected bsr to perform
                           rp calculation. The value is an integer
                           ranging from 0 to 32.";
                        config "false";
                        type uint8 {
                            range "0..32";
                        }
                    }
                    leaf fsm-state {
                        description "status of an elected bsr.";
                        config "false";
                        type enumeration {
                            enum unknown {
                                value "0";
                                description "unknown:unknown";



Liu, et al.            Expires September 23, 2015              [Page 30]

Internet-Draft             PIM YANG Data Model                March 2015


                            }
                            enum acceptany {
                                value "1";
                                description "acceptany:acceptany";
                            }
                            enum acceptpreferred {
                                value "2";
                                description "acceptpreferred:acceptpreferred";
                            }
                            enum candidate {
                                value "3";
                                description "candidate:candidate";
                            }
                            enum pending {
                                value "4";
                                description "pending:pending";
                            }
                            enum elected {
                                value "5";
                                description "elected:elected";
                            }
                        }
                    }
                    leaf up-time {
                        description
                          "time since the c-bsr was elected as the bsr.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf expire-time {
                        description
                          "period after which the elected bsr on the
                           lan sends the next bootstrap message.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf c-rp-count {
                        description "number of candidate rps.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }




Liu, et al.            Expires September 23, 2015              [Page 31]

Internet-Draft             PIM YANG Data Model                March 2015


                }

            }

            container pim-bsr-cbsr-infos {

                list pim-bsr-cbsr-info {

                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf ipv4-cbsr-addr {
                        description "address of a c-bsr.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-cbsr-addr {
                        description "address of a c-bsr.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf bsr-scope {
                        description
                          "whether the bsr is a bsr in an administrative
                           domain.";
                        config "false";
                        type enumeration {



Liu, et al.            Expires September 23, 2015              [Page 32]

Internet-Draft             PIM YANG Data Model                March 2015


                            enum notscoped {
                                value "0";
                                description "notscoped:notscoped";
                            }
                            enum global {
                                value "1";
                                description "global:global";
                            }
                            enum adminscope {
                                value "2";
                                description "adminscope:adminscope";
                            }
                        }
                    }
                    leaf ipv4-group-addr {
                        description
                          "Multicast group address. In ipv4 address,
                           the value ranges from 239.0.0.0 to
                           239.255.255.255. ";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. In ipv6, the value
                           is in hexadecimal notation and in the format
                            of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-group-masklen {
                        description
                          "Mask length of a group address. The value is
                            an integer ranging from 4 to 32.";
                        config "false";
                        type uint8 {
                            range "4..32";
                        }
                    }
                    leaf ipv6-group-masklen {
                        description
                          "Mask length of a group address. the value is
                           an integer ranging from 8 to 128.";
                        config "false";
                        type uint8 {
                            range "8..128";
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 33]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf priority {
                        description
                          "Priority for a c-bsr to participate in bsr
                           election. The greater the value, the higher
                           the priority. The value is an integer
                           ranging from 0 to 255. the default value is
                           0.";
                        config "false";
                        type uint8 {
                            range "0..255";
                        }
                    }
                    leaf hash-length {
                        description
                          "Hash length used by an elected bsr to
                           perform rp calculation. The value is an
                           integer ranging from 0 to 32.";
                        config "false";
                        type uint8 {
                            range "0..32";
                        }
                    }
                    leaf fsm-state {
                        description "status of a c-bsr.";
                        config "false";
                        type enumeration {
                            enum unknown {
                                value "0";
                                description "unknown:unknown";
                            }
                            enum acceptany {
                                value "1";
                                description "acceptany:acceptany";
                            }
                            enum acceptpreferred {
                                value "2";
                                description "acceptpreferred:acceptpreferred";
                            }
                            enum candidate {
                                value "3";
                                description "candidate:candidate";
                            }
                            enum pending {
                                value "4";
                                description "pending:pending";
                            }
                            enum elected {
                                value "5";



Liu, et al.            Expires September 23, 2015              [Page 34]

Internet-Draft             PIM YANG Data Model                March 2015


                                description "elected:elected";
                            }
                        }
                    }
                    leaf is-wait-to-bsr {
                        description
                          "whether the current c-bsr is valid
                           (0: valid; 1: invalid).";
                        config "false";
                        type enumeration {
                            enum join {
                                value "0";
                                description "join:join";
                            }
                            enum notjoin {
                                value "1";
                                description "notjoin:notjoin";
                            }
                        }
                    }
                }

            }

            container pim-bsr-ebsr-rps {

                list pim-bsr-ebsr-rp {

                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";



Liu, et al.            Expires September 23, 2015              [Page 35]

Internet-Draft             PIM YANG Data Model                March 2015


                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf ipv4-rp-addr {
                        description "rp address.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-rp-addr {
                        description "rp address.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf rp-addr-is-local {
                        description
                          "whether the rp address is a local address.";
                        config "false";
                        type boolean;
                    }
                    leaf ipv4-group-addr {
                        description
                          "Multicast group address. In ipv4 address,
                           the value ranges from 239.0.0.0 to
                           239.255.255.255. ";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. in ipv6, the value
                           is in hexadecimal notation and in the format
                            of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-group-masklen {
                        description
                          "Mask length of a group address. The value is
                           an integer ranging from 4 to 32.";
                        config "false";
                        type uint8 {
                            range "4..32";
                        }
                    }
                    leaf ipv6-group-masklen {
                        description
                          "Mask length of a group address. The value is



Liu, et al.            Expires September 23, 2015              [Page 36]

Internet-Draft             PIM YANG Data Model                March 2015


                           an integer ranging from 8 to 128.";
                        config "false";
                        type uint8 {
                            range "8..128";
                        }
                    }
                    leaf priority {
                        description
                          "Priority of an rp. The greater the value,
                           the higher the priority. The value is an
                           integer ranging from 0 to 255. the default
                           value is 0.";
                        config "false";
                        type uint8 {
                            range "0..255";
                        }
                    }
                    leaf up-time {
                        description
                          "time since the c-rp was elected as the rp.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf expiry-time {
                        description
                          "time after which an rp will expire, in
                           seconds.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }

                }

            }

        }

        container pim-sm {

            container pim-sm-instances {

                list pim-sm-instance {

                    key "vrf-name address-family";



Liu, et al.            Expires September 23, 2015              [Page 37]

Internet-Draft             PIM YANG Data Model                March 2015


                    max-elements "unbounded";
                    min-elements "0";
                    description "Specifies an pim-sm instance.";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "true";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }

                    leaf address-family {
                        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 assert-holdtime {
                        description
                          "Timeout period during which pim interfaces
                           wait to receive assert messages from the
                           forwarder. The value is an integer ranging
                           from 0 to 65535, in seconds. The default
                           value is 180. ";
                        config "true";
                        default "180";
                        type uint16 {
                            range "0..65535";
                        }
                    }
                    leaf jp-holdtime {
                        description



Liu, et al.            Expires September 23, 2015              [Page 38]

Internet-Draft             PIM YANG Data Model                March 2015


                          "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 uint16 {
                            range "1..65535";
                        }
                    }
                    leaf probe-interval {
                        description
                          "Interval at which probe messages are sent
                           to an rp. The value is an integer ranging
                           from 1 to 3600, in seconds. The default
                           value is 5.";
                        config "true";
                        default "5";
                        type uint16 {
                            range "1..3600";
                        }
                    }
                    leaf jp-timer-interval {
                        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. ";
                        config "true";
                        default "60";
                        type uint16 {
                            range "1..18000";
                        }
                    }
                    leaf dr-priority {
                        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";
                        }



Liu, et al.            Expires September 23, 2015              [Page 39]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf hello-holdtime {
                        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 hello-lan-delay {
                        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 hello-interval {
                        description
                          "Specifies the interval at which hello
                           messages are sent. The value is an integer
                           ranging from 1 to 18000, in seconds.
                           It must be shorter than the timeout period
                           of pim neighbors. The default value is 30.";
                        config "true";
                        default "30";
                        type uint16 {
                            range "1..18000";
                        }
                    }
                    leaf hello-override {
                        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";



Liu, et al.            Expires September 23, 2015              [Page 40]

Internet-Draft             PIM YANG Data Model                March 2015


                        default "2500";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf reg-checksum {
                        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.";
                        config "true";
                        default "false";
                        type boolean {
                        }
                    }
                    leaf reg-suppress-interval {
                        description
                          "Timeout period during which a router remains
                           in the registration suppression state. The
                           value is an integer ranging from 0 to 65535,
                           in seconds. The default value is 60.";
                        config "true";
                        default "60";
                        type uint16 {
                            range "0..65535";
                        }
                    }
                    leaf embedded-rp {
                        description
                          "Enable the embedded rp function. By default,
                           the embedded rp function is enabled.";
                        config "true";
                        default "true";
                        type boolean {
                        }
                    }
                    leaf nbr-check-recv {
                        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 {
                        }



Liu, et al.            Expires September 23, 2015              [Page 41]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf nbr-check-send {
                        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 reg-ply-name {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf reg-ply-ipv6 {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf ssm-ply-name {
                        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..32";
                            pattern "^[^ ]+$";



Liu, et al.            Expires September 23, 2015              [Page 42]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf ssm-ply-ipv6 {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf src-ply-name {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf src-ply-ipv6 {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf bsr-ply-name {
                        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



Liu, et al.            Expires September 23, 2015              [Page 43]

Internet-Draft             PIM YANG Data Model                March 2015


                           is not limited.";
                        config "true";
                        type string {
                            length "1..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf bsr-ply-ipv6 {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf emb-rp-ply-name {
                        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..32";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf source-lifetime {
                        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 uint16 {
                            range "60..65535";
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 44]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf ipsec-name {
                        description
                          "Description of an sa. The value is a string
                           of 1 to 15 characters.";
                        config "true";
                        type string {
                            length "1..15";
                            pattern "^[^ ]+$";
                        }
                    }
                    leaf ipsec-type {
                        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 uni-ipsec-name {
                        description
                          "Description of an sa. the value is a string
                           of 1 to 15 characters.";
                        config "true";
                        type string {
                            length "1..15";
                            pattern "^[^ ]+$";
                        }
                    }
                    container pim-static-rps {

                        container pim-static-rp {

                            leaf ipv4-static-rp-addr {
                                description "Specifies a static rp address.";
                                config "true";
                                mandatory "true";
                                type inet:ipv4-address;
                            }
                            leaf ipv6-static-rp-addr {



Liu, et al.            Expires September 23, 2015              [Page 45]

Internet-Draft             PIM YANG Data Model                March 2015


                                description "Specifies a static rp address.";
                                config "true";
                                mandatory "true";
                                type inet:ipv6-address;
                            }
                            leaf static-rp-ply-name {
                                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 static-rp-ply-name-ipv6 {
                                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.";
                                    }



Liu, et al.            Expires September 23, 2015              [Page 46]

Internet-Draft             PIM YANG Data Model                March 2015


                                    enum prefer {
                                        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 "spt-threshhold";
                            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 spt-threshhold {
                                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";
                                type uint32 {



Liu, et al.            Expires September 23, 2015              [Page 47]

Internet-Draft             PIM YANG Data Model                March 2015


                                    range "1..4194304";
                                }
                            }
                            leaf is-acl-enable {
                                description
                                  "Whether to enable a group policy. ";
                                config "true";
                                mandatory "true";
                                type boolean {
                                }
                            }
                            leaf spt-grp-ply-name {
                                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 "^[^ ]+$";
                                }
                            }
                            leaf spt-grp-ply-order {
                                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";
                                }
                            }
                        }




Liu, et al.            Expires September 23, 2015              [Page 48]

Internet-Draft             PIM YANG Data Model                March 2015


                    }

                    container pim-sm-anycast-rps {

                        container pim-sm-anycast-rp {

                            leaf ipv4-rp-address {
                                description
                                  "Address of an ipv4 anycast-rp peer";
                                config "true";
                                mandatory "true";
                                type inet:ipv4-address;
                            }

                            leaf ipv6-rp-address {
                                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 {

                                    leaf ipv4-rp-peer-address {
                                        description
                                          "Address of an ipv4 anycast-rp peer";
                                        config "true";
                                        mandatory "true";
                                        type inet:ipv4-address;



Liu, et al.            Expires September 23, 2015              [Page 49]

Internet-Draft             PIM YANG Data Model                March 2015


                                    }
                                    leaf ipv6-rp-peer-address {
                                        description
                                          "Address of an ipv6 anycast-rp peer";
                                        config "true";
                                        mandatory "true";
                                        type inet:ipv6-address;
                                    }
                                    leaf fwd-sa-swt {
                                        description
                                          "Whether to forward to
                                           anycast-rp peers source
                                           information learned through
                                           sa messages.";
                                        config "true";
                                        type boolean {
                                        }
                                    }
                                    leaf fwd-policy {
                                        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 fwd-policy-ipv6 {
                                        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 "^[^ ]+$";
                                        }
                                    }



Liu, et al.            Expires September 23, 2015              [Page 50]

Internet-Draft             PIM YANG Data Model                March 2015


                                }

                            }

                        }

                    }

                    container pim-sm-interfaces {

                        list pim-sm-interface {

                            key "vrf-name address-family if-name";
                            max-elements "unbounded";
                            min-elements "0";
                            description "Specifies an pim sm interface.";

                            leaf vrf-name {
                                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 address-family {
                                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



Liu, et al.            Expires September 23, 2015              [Page 51]

Internet-Draft             PIM YANG Data Model                March 2015


                                           or ipv6.";
                                    }
                                }
                            }
                            leaf if-name {
                                description "Interface name.";
                                config "true";
                                mandatory "true";
                                type if-name;
                            }
                            leaf pim-sm-enable {
                                description
                                  "Enable pim-sm on an interface.";
                                config "true";
                                mandatory "true";
                                type boolean {
                                }
                            }
                            leaf dr-priority {
                                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 hello-interval {
                                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";
                                type uint16 {
                                    range "1..18000";
                                }
                            }
                            leaf hello-holdtime {
                                description
                                  "Timeout period during which a router
                                   waits for hello messages sent from



Liu, et al.            Expires September 23, 2015              [Page 52]

Internet-Draft             PIM YANG Data Model                March 2015


                                   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 hello-override {
                                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 hello-lan-delay {
                                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 jp-timer-interval {
                                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.";



Liu, et al.            Expires September 23, 2015              [Page 53]

Internet-Draft             PIM YANG Data Model                March 2015


                                config "true";
                                default "60";
                                type uint16 {
                                    range "1..18000";
                                }
                            }
                            leaf jp-holdtime {
                                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 uint16 {
                                    range "1..65535";
                                }
                            }
                            leaf jp-ply-name {
                                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 jp-ply-ipv6 {
                                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";



Liu, et al.            Expires September 23, 2015              [Page 54]

Internet-Draft             PIM YANG Data Model                March 2015


                                    pattern "^[^ ]+$";
                                }
                            }
                            leaf jp-asm-ply-name {
                                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 jp-asm-ply-ipv6 {
                                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 jp-ssm-ply-name {
                                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 "^[^ ]+$";
                                }
                            }



Liu, et al.            Expires September 23, 2015              [Page 55]

Internet-Draft             PIM YANG Data Model                March 2015


                            leaf jp-ssm-ply-ipv6 {
                                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 nbr-ply-name {
                                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 nbr-ply-ipv6 {
                                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 assert-holdtime {
                                description
                                  "Timeout period during which pim
                                   interfaces wait to receive assert
                                   messages from the forwarder. The



Liu, et al.            Expires September 23, 2015              [Page 56]

Internet-Draft             PIM YANG Data Model                March 2015


                                   value is an integer ranging from 0
                                   to 65535, in seconds.The default
                                   value is 180.";
                                config "true";
                                default "180";
                                type uint16 {
                                    range "0..65535";
                                }
                            }
                            leaf require-gen-id {
                                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 pim-bsr-boundary {
                                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.";
                                    }



Liu, et al.            Expires September 23, 2015              [Page 57]

Internet-Draft             PIM YANG Data Model                March 2015


                                    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 bfd-enable {
                                description
                                  "Enable pim bfd on an interface.
                                   By default, pim bfd is not enabled
                                   on an interface.";
                                config "true";
                                type boolean {
                                }
                            }
                            leaf bfd-min-tx {
                                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 uint16 {
                                    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 uint16 {
                                    range "0..1000";
                                }
                            }
                            leaf bfd-multiplier {
                                description
                                  "Local detect multiplier for bfd
                                   messages. The value is an integer



Liu, et al.            Expires September 23, 2015              [Page 58]

Internet-Draft             PIM YANG Data Model                March 2015


                                   ranging from 3 to 50. The default
                                   value is 3.";
                                config "true";
                                default "3";
                                type uint8 {
                                    range "3..50";
                                }
                            }
                            leaf is-silent {
                                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 is-dr-swt-delay {
                                description
                                  "Enable dr switchover delay on an
                                   interface. By default, this function
                                   is disabled on an interface.";
                                config "true";
                                default "false";
                                type boolean {
                                }
                            }
                            leaf dr-swt-delay-interval {
                                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 uint16 {
                                    range "10..3600";
                                }
                            }
                            leaf ipsec-name {
                                description
                                  "Description of an sa. The value is a
                                   string of 1 to 15 characters.";
                                config "true";
                                type string {
                                    length "1..15";



Liu, et al.            Expires September 23, 2015              [Page 59]

Internet-Draft             PIM YANG Data Model                March 2015


                                    pattern "^[^ ]+$";
                                }
                            }
                            leaf ipsec-type {
                                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.";
                                    }
                                }
                            }
                        }
                    }

                }

            }

            container pim-sm-if-infos {

                list pim-sm-if-info {

                    key "vrf-name address-family if-name";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";



Liu, et al.            Expires September 23, 2015              [Page 60]

Internet-Draft             PIM YANG Data Model                March 2015


                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf if-name {
                        description "Interface name.";
                        config "false";
                        type if-name;
                    }
                    leaf if-up-state {
                        description
                          "Status of an interface: up or down.";
                        config "false";
                        type enumeration {
                            enum down {
                                value "0";
                                description "down:down";
                            }
                            enum up {
                                value "1";
                                description "up:up";
                            }
                        }
                    }
                    leaf neighbor-count {
                        description
                          "Number of pim neighbors on an interface.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf dr-priority {
                        description "Dr priority.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf ipv4-dr-addr {
                        description "Dr address.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-dr-addr {



Liu, et al.            Expires September 23, 2015              [Page 61]

Internet-Draft             PIM YANG Data Model                March 2015


                        description "Dr address.";
                        config "false";
                        type inet:ipv6-address;
                    }

                    leaf hello-interval {
                        description
                          "Interval at which hello messages are sent.";
                        config "false";
                        type uint16 {
                            range "1..18000";
                        }
                    }
                    leaf hello-holdtime {
                        description
                          "Timeout period during which a router waits
                           to receive hello messages from its neighbors.";
                        config "false";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf assert-holdtime {
                        description
                          "Timeout period during which pim interfaces
                           wait to receive assert messages from the
                           forwarder. ";
                        config "false";
                        type uint16 {
                            range "0..65535";
                        }
                    }
                    leaf jp-interval {
                        description
                          "Interval at which join/prune messages are
                           sent.";
                        config "false";
                        type uint16 {
                            range "1..18000";
                        }
                    }
                    leaf jp-holdtime {
                        description
                          "Holdtime for join/prune messages sent by a
                           router.";
                        config "false";
                        type uint16 {
                            range "1..65535";



Liu, et al.            Expires September 23, 2015              [Page 62]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf lan-delay-neg {
                        description
                          "Negotiated delay of the messages transmitted
                           on an interface.";
                        config "false";
                        type uint16 {
                            range "1..32767";
                        }
                    }
                    leaf hello-over-interval-neg {
                        description
                          "Negotiated overriding interval on an interface.";
                        config "false";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf gen-id {
                        description "Generation id on an interface.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf non-dr-neighbor-num {
                        description "Number of non-dr neighbors.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf non-lan-delay-neighbor-num {
                        description
                          "Number of neighbors that do not use lan delay.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf non-join-attribute-neighbor-num {
                        description
                          "Number of neighbors that do not use the
                           join attribute.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";



Liu, et al.            Expires September 23, 2015              [Page 63]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf join-attribute {
                        description
                          "Negotiated join attribute of the messages
                           transmitted on an interface.";
                        config "false";
                        type boolean;
                    }
                    leaf ipsec-name {
                        description
                          "Description of an sa. The value is a string
                           of 1 to 15 characters.";
                        config "false";
                        type string {
                            length "1..15";
                        }
                    }
                    leaf ipsec-type {
                        description
                          "Hello options based on the ipsec type.";
                        config "false";
                        type enumeration {
                            enum forall {
                                value "0";
                                description "Ipsec sa for all:";
                            }
                            enum forhello {
                                value "1";
                                description "Ipsec sa for hello:";
                            }
                        }
                    }

                }

            }

            container pim-nbr-infos {

                list pim-nbr-info {

                    key "vrf-name address-family if-name";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";



Liu, et al.            Expires September 23, 2015              [Page 64]

Internet-Draft             PIM YANG Data Model                March 2015


                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf if-name {
                        description "Interface name.";
                        config "false";
                        type if-name;
                    }
                    leaf ipv4-nbr-addr {
                        description "Address of a pim neighbor.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-nbr-addr {
                        description "Address of a pim neighbor.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf up-time {
                        description
                          "Time since the pim neighbor relationship
                           was established.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf expire-time {
                        description
                          "Time when a pim neighbor relationship expires.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";



Liu, et al.            Expires September 23, 2015              [Page 65]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf dr-priority-present {
                        description "Whether a dr priority exists.";
                        config "false";
                        type boolean;
                    }
                    leaf dr-priority {
                        description "Dr priority.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf gen-id-present {
                        description "Whether a generation id exists.";
                        config "false";
                        type boolean;
                    }
                    leaf gen-id {
                        description
                          "Random number of the pim neighbor status.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf holdtime {
                        description
                          "Ttl of a pim neighbor relationship. The value
                           65535 indicates that the pim neighbor
                           relationship never times out.";
                        config "false";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf lan-delay-present {
                        description
                          "Whether a lan delay for transmitting prune
                           messages exists.";
                        config "false";
                        type boolean;
                    }
                    leaf lan-delay {
                        description
                          "Lan delay for transmitting prune messages.";
                        config "false";



Liu, et al.            Expires September 23, 2015              [Page 66]

Internet-Draft             PIM YANG Data Model                March 2015


                        type uint16 {
                            range "1..32767";
                        }
                    }
                    leaf override-interval {
                        description
                          "Interval for overriding the prune action.";
                        config "false";
                        type uint16 {
                            range "1..65535";
                        }
                    }
                    leaf join-attribute {
                        description
                          "Whether the join attribute function is
                           enabled on a pim neighbor.";
                        config "false";
                        type boolean;
                    }
                    container pim-second-addrs {

                        list pim-second-addr {

                            description
                              "List of secondary address information.";
                            key "second-addr";
                            config "false";

                            leaf second-addr {
                                description
                                  "Secondary address of a pim neighbor.";
                                config "false";
                                type inet:ipv6-address;
                            }

                        }

                    }

                }

            }

            container pim-routes {

                list pim-route {

                    key "vrf-name address-family";



Liu, et al.            Expires September 23, 2015              [Page 67]

Internet-Draft             PIM YANG Data Model                March 2015


                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf ipv4-source-addr {
                        description "Multicast source address.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-source-addr {
                        description "Multicast source address.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-group-addr {
                        description
                          "Multicast group address. In ipv4 address,
                           the value ranges from 224.0.0.0 to
                           239.255.255.255. ";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. In ipv6, the value
                           is in hexadecimal notation and in the format
                           of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;



Liu, et al.            Expires September 23, 2015              [Page 68]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf sg-up-protocl-type {
                        description "Pim protocol type.";
                        config "false";
                        type enumeration {
                            enum none {
                                value "0";
                                description "none:none";
                            }
                            enum asm {
                                value "1";
                                description "asm:asm";
                            }
                            enum ssm {
                                value "2";
                                description "ssm:ssm";
                            }
                            enum bidir {
                                value "3";
                                description "bidir:bidir";
                            }
                            enum other {
                                value "4";
                                description "other:other";
                            }
                        }
                    }
                    leaf rp-mode-type {
                        description "Rp type.";
                        config "false";
                        type enumeration {
                            enum fixed {
                                value "0";
                                description "fixed:fixed";
                            }
                            enum static {
                                value "1";
                                description "static:static";
                            }
                            enum configssm {
                                value "2";
                                description "config-ssm:config-ssm";
                            }
                            enum bsr {
                                value "3";
                                description "bsr:bsr";
                            }
                            enum autorp {



Liu, et al.            Expires September 23, 2015              [Page 69]

Internet-Draft             PIM YANG Data Model                March 2015


                                value "4";
                                description "autorp:autorp";
                            }
                            enum embedded {
                                value "5";
                                description "embedded:embedded";
                            }
                            enum other {
                                value "6";
                                description "other:other";
                            }
                        }
                    }
                    leaf ipv4-rp-addr {
                        description "Rp address.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-rp-addr {
                        description "Rp address.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf rp-addr-is-local {
                        description
                          "Whether the rp address is a local address.";
                        config "false";
                        type boolean;
                    }
                    leaf sg-flag {
                        description "Flag of the pim (s, g) entry.";
                        config "false";
                        type string {
                            length "1..50";
                        }
                    }
                    leaf sg-up-time {
                        description
                          "Time since the pim (s, g) entry was generated.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf sg-iif-name {
                        description
                          "Inbound interface of the (s, g) entry.";
                        config "false";



Liu, et al.            Expires September 23, 2015              [Page 70]

Internet-Draft             PIM YANG Data Model                March 2015


                        type string {
                            length "0..48";
                        }
                    }
                    leaf sg-vector-rd {
                        description "Rd of the rpf vector.";
                        config "false";
                        type string {
                            length "1..255";
                        }
                    }
                    leaf ipv4-sg-vector-addr {
                        description "Address of the rpf vector.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-sg-vector-addr {
                        description "Address of the rpf vector.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf sg-elect-vector-rd {
                        description "Rd of the elected vector.";
                        config "false";
                        type string {
                            length "1..255";
                        }
                    }
                    leaf ipv4-sg-elect-vector-addr {
                        description "Address of elected vector.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-sg-elect-vector-addr {
                        description "Address of elected vector.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-sg-up-nbr-addr {
                        description
                          "Upstream neighbor address of the (s, g) entry.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-sg-up-nbr-addr {
                        description
                          "Upstream neighbor address of the (s, g) entry.";
                        config "false";



Liu, et al.            Expires September 23, 2015              [Page 71]

Internet-Draft             PIM YANG Data Model                March 2015


                        type inet:ipv6-address;
                    }
                    leaf ipv4-sg-rpf-addr {
                        description "Rpf address of the (s, g) entry.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-sg-rpf-addr {
                        description "Rpf address of the (s, g) entry.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-sg-refer-addr {
                        description "Reference address of the (s,g) entry.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-sg-refer-addr {
                        description "Reference address of the (s,g) entry.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf sg-rpf-masklen {
                        description "Mask length of an rpf route.";
                        config "false";
                        type uint8 {
                            range "0..32";
                        }
                    }
                    leaf sg-rpf-metric {
                        description "Metric of an rpf route.";
                        config "false";
                        type uint16 {
                            range "0..65535";
                        }
                    }
                    leaf sg-rpf-metric-preference {
                        description "Metric priority of an rpf route.";
                        config "false";
                        type uint16 {
                            range "0..65535";
                        }
                    }
                    leaf backup-sg-iif-name {
                        description "backup inbound interface of the (s, g) entry.";
                        config "false";
                        type string {
                            length "1..48";



Liu, et al.            Expires September 23, 2015              [Page 72]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf ipv4-backup-sg-up-nbr-addr {
                        description
                          "Backup upstream neighbor address of the
                           (s, g) entry.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-backup-sg-up-nbr-addr {
                        description
                          "Backup upstream neighbor address of the
                           (s, g) entry.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-backup-sg-rpf-addr {
                        description
                          "Backup rpf address of the (s, g) entry.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-backup-sg-rpf-addr {
                        description
                          "Backup rpf address of the (s, g) entry.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf sg-up-state {
                        description
                          "Upstream up status of the (s, g) entry.";
                        config "false";
                        type enumeration {
                            enum notjoined {
                                value "0";
                                description "notjoined:notjoined";
                            }
                            enum joined {
                                value "1";
                                description "joined:joined";
                            }
                        }
                    }
                    leaf sg-up-exp-time {
                        description
                          "Upstream up expiration time of the (s, g) entry.";
                        config "false";
                        type uint32 {



Liu, et al.            Expires September 23, 2015              [Page 73]

Internet-Draft             PIM YANG Data Model                March 2015


                            range "0..4294967295";
                        }
                    }
                    leaf sg-up-rp-tstate {
                        description "Rpt status.";
                        config "false";
                        type enumeration {
                            enum notjoined {
                                value "0";
                                description "notjoined:notjoined";
                            }
                            enum pruned {
                                value "1";
                                description "pruned:pruned";
                            }
                            enum notpruned {
                                value "2";
                                description "notpruned:notpruned";
                            }
                            enum max {
                                value "3";
                                description "max:max";
                            }
                        }
                    }
                    leaf sg-up-rpt-overtime {
                        description "Rpt timeout period.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf sg-reg-state {
                        description "Registration status.";
                        config "false";
                        type enumeration {
                            enum noinfo {
                                value "0";
                                description "noinfo:noinfo";
                            }
                            enum join {
                                value "1";
                                description "join:join";
                            }
                            enum joinpending {
                                value "2";
                                description "joinpending:joinpending";
                            }



Liu, et al.            Expires September 23, 2015              [Page 74]

Internet-Draft             PIM YANG Data Model                March 2015


                            enum prune {
                                value "3";
                                description "prune:prune";
                            }
                        }
                    }
                    leaf sg-reg-stop-time {
                        description "Time when the registration stops.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }

                    container pim-route-downstreams {

                        list pim-route-downstream {

                            key "sg-ds-oif-name";
                            config "false";

                            description "Downstream information.";

                            leaf sg-ds-oif-name {
                                description
                                  "Name of the downstream interface.";
                                config "false";
                                type string {
                                    length "1..48";
                                }
                            }
                            leaf sg-ds-protocol-type {
                                description
                                  "Type of pim protocol configured on
                                   the downstream interface.";
                                config "false";
                                type string {
                                    length "1..50";
                                }
                            }
                            leaf sg-ds-up-time {
                                description
                                  "Time since the interface was added
                                   to the downstream interface list.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }



Liu, et al.            Expires September 23, 2015              [Page 75]

Internet-Draft             PIM YANG Data Model                March 2015


                            }
                            leaf sg-ds-expire-time {
                                description
                                  "Timeout period of the downstream
                                   interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf sg-ds-dr-state {
                                description "Dr status.";
                                config "false";
                                type boolean;
                            }
                            leaf sg-ds-state {
                                description "Downstream status.";
                                config "false";
                                type enumeration {
                                    enum noinfo {
                                        value "0";
                                        description "noinfo:noinfo";
                                    }
                                    enum joined {
                                        value "1";
                                        description "joined:joined";
                                    }
                                    enum prunepending {
                                        value "2";
                                        description "prunepending:prunepending";
                                    }
                                }
                            }
                            leaf sg-ds-ppt-time {
                                description
                                  "Timeout period of the downstream ppt.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf sg-ds-assert-state {
                                description "Assert state machine.";
                                config "false";
                                type enumeration {
                                    enum noinfo {
                                        value "0";
                                        description "noinfo:noinfo";



Liu, et al.            Expires September 23, 2015              [Page 76]

Internet-Draft             PIM YANG Data Model                March 2015


                                    }
                                    enum winner {
                                        value "1";
                                        description "winner:winner";
                                    }
                                    enum loser {
                                        value "2";
                                        description "loser:loser";
                                    }
                                }
                            }
                            leaf sg-ds-assert-time {
                                description "Assert timeout period.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf ipv4-sg-ds-assert-win-addr {
                                description "Address of an assert winner.";
                                config "false";
                                type inet:ipv4-address;
                            }
                            leaf ipv6-sg-ds-assert-win-addr {
                                description "Address of an assert winner.";
                                config "false";
                                type inet:ipv6-address;
                            }
                            leaf sg-ds-assert-win-metric {
                                description "Metric of an assert winner.";
                                config "false";
                                type uint16 {
                                    range "0..65535";
                                }
                            }
                            leaf sg-ds-ast-win-metric-pre {
                                description
                                  "Metric priority of an assert winner.";
                                config "false";
                                type uint16 {
                                    range "0..65535";
                                }
                            }
                            leaf sg-ds-local-member {
                                description "Whether local receivers exist.";
                                config "false";
                                type boolean;
                            }



Liu, et al.            Expires September 23, 2015              [Page 77]

Internet-Draft             PIM YANG Data Model                March 2015


                            leaf sg-ds-rpt-state {
                                description "Rpt status.";
                                config "false";
                                type enumeration {
                                    enum noinfo {
                                        value "0";
                                        description "noinfo:noinfo";
                                    }
                                    enum pruned {
                                        value "1";
                                        description "pruned:pruned";
                                    }
                                    enum prunepending {
                                        value "2";
                                        description "prunepending:prunepending";
                                    }
                                    enum max {
                                        value "3";
                                        description "max:max";
                                    }
                                }
                            }
                            leaf sg-ds-rpt-ppt-time {
                                description
                                  "Ppt time of the rpt state machine.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf sg-ds-rpt-expire-time {
                                description "Rpt timeout period.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf sg-vector-num {
                                description "Number of vectors.";
                                config "false";
                                type uint16 {
                                    range "0..65535";
                                }
                            }
                            container pim-route-downstream-vectors {

                                list pim-route-downstream-vector {




Liu, et al.            Expires September 23, 2015              [Page 78]

Internet-Draft             PIM YANG Data Model                March 2015


                                    leaf ipv4-neighbor-addr {
                                        description "Neighbor address.";
                                        config "false";
                                        type inet:ipv4-address;
                                    }
                                    leaf ipv6-neighbor-addr {
                                        description "Neighbor address.";
                                        config "false";
                                        type inet:ipv6-address;
                                    }
                                    leaf neighbor-vector-rd {
                                        description "Vector rds of neighbors.";
                                        config "false";
                                        type string {
                                            length "1..255";
                                        }
                                    }
                                    leaf ipv4-neighbor-vector-addr {
                                        description
                                          "Address of a neighbor's elected vector.";
                                        config "false";
                                        type inet:ipv4-address;
                                    }
                                    leaf ipv6-neighbor-vector-addr {
                                        description
                                          "Address of a neighbor's elected vector.";
                                        config "false";
                                        type inet:ipv6-address;
                                    }
                                    leaf neighbor-expire-time {
                                        description
                                          "Timeout period of the vector.";
                                        config "false";
                                        type uint32 {
                                            range "0..4294967295";
                                        }
                                    }

                                }

                            }

                        }

                    }

                }




Liu, et al.            Expires September 23, 2015              [Page 79]

Internet-Draft             PIM YANG Data Model                March 2015


            }

            container pim-rpf-routes {

                list pim-rpf-route {

                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf ipv4-dest-addr {
                        description "Destination address.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-dest-addr {
                        description "Destination address.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf if-name {
                        description "Name of an rpf interface.";
                        config "false";
                        type if-name;
                    }
                    leaf ipv4-rpf-addr {
                        description "Rpf neighbor.";
                        config "false";



Liu, et al.            Expires September 23, 2015              [Page 80]

Internet-Draft             PIM YANG Data Model                March 2015


                        type inet:ipv4-address;
                    }
                    leaf ipv6-rpf-addr {
                        description "Rpf neighbor.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-refer-route-addr {
                        description "Referenced route.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-refer-route-addr {
                        description "Referenced route.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-refer-route-masklen {
                        description "Mask of the referenced route.";
                        config "false";
                        type uint8 {
                            range "0..32";
                        }
                    }
                    leaf ipv6-refer-route-masklen {
                        description "Mask of the referenced route.";
                        config "false";
                        type uint8 {
                            range "0..128";
                        }
                    }
                    leaf refer-route-type {
                        description "Type of the referenced route.";
                        config "false";
                        type enumeration {
                            enum unicast {
                                value "0";
                                description "unicast:unicast";
                            }
                            enum direct {
                                value "1";
                                description "direct:direct";
                            }
                            enum mbgp {
                                value "2";
                                description "mbgp:mbgp";
                            }
                            enum multicaststatic {



Liu, et al.            Expires September 23, 2015              [Page 81]

Internet-Draft             PIM YANG Data Model                March 2015


                                value "3";
                                description "multicaststatic:multicaststatic";
                            }
                        }
                    }
                    container pim-claim-route-sgs {

                        list pim-claim-route-sg {

                            description "Claim routing entry.";
                            key "ipv4-source-addr ipv6-source-addr ipv4-group-addr ipv6-group-addr";
                            config "false";

                            leaf ipv4-source-addr {
                                description "Multicast source address.";
                                config "false";
                                type inet:ipv4-address;
                            }
                            leaf ipv6-source-addr {
                                description "Multicast source address.";
                                config "false";
                                type inet:ipv6-address;
                            }
                            leaf ipv4-group-addr {
                                description
                                  "Multicast group address. In ipv4
                                   address, the value ranges from
                                   224.0.0.0 to 239.255.255.255. ";
                                config "false";
                                type inet:ipv4-address;
                            }
                            leaf ipv6-group-addr {
                                description
                                  "Multicast group address. In ipv6,
                                   the value is in hexadecimal notation
                                   and in the format of
                                   ffxx:xxxx:xxxx::xxxx ";
                                config "false";
                                type inet:ipv6-address;
                            }

                        }

                    }

                }

            }



Liu, et al.            Expires September 23, 2015              [Page 82]

Internet-Draft             PIM YANG Data Model                March 2015


            container pim-embedded-rp-infos {

                list pim-embedded-rp-info {

                    key "vrf-name";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. In ipv6, the value
                           is in hexadecimal notation and in the format
                           of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf embedded-rp-addr {
                        description "Address of an embedded rp.";
                        config "false";
                        type inet:ipv6-address;
                    }

                }

            }

            container pim-rp-group-infos {

                list pim-rp-group-info {

                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 83]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf ipv4-group-addr {
                        description
                          "Multicast group address. In ipv4 address,
                           the value ranges from 224.0.0.0 to
                           239.255.255.255. ";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-group-addr {
                        description
                          "Multicast group address. In ipv6, the value
                           is in hexadecimal notation and in the format
                           of ffxx:xxxx:xxxx::xxxx ";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-bsr-rp-addr {
                        description "Address of a candidate rp.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-bsr-rp-addr {
                        description "Address of a candidate rp.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-static-rp-addr {
                        description "Address of a static rp.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-static-rp-addr {
                        description "Address of a static rp.";
                        config "false";
                        type inet:ipv6-address;



Liu, et al.            Expires September 23, 2015              [Page 84]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf embedded-rp-addr {
                        description "Address of an embedded rp.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf ipv4-map-rp-addr {
                        description "Address of the designated rp.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-map-rp-addr {
                        description "Address of the designated rp.";
                        config "false";
                        type inet:ipv6-address;
                    }

                }

            }

            container pim-bfd-infos {

                list pim-bfd-info {

                    description "Information about a pim bfd session.";
                    key "vrf-name address-family if-name";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        description
                          "Address family, which determines whether an
                           address belongs to ipv4 or ipv6.";
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {



Liu, et al.            Expires September 23, 2015              [Page 85]

Internet-Draft             PIM YANG Data Model                March 2015


                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf if-name {
                        description
                          "Name of the interface to which a pim
                           neighbor relationship belongs.";
                        config "false";
                        type if-name;
                    }
                    leaf ipv4-neighbor-addr {
                        description "Address of a neighbor.";
                        config "false";
                        type inet:ipv4-address;
                    }
                    leaf ipv6-neighbor-addr {
                        description "Address of a neighbor.";
                        config "false";
                        type inet:ipv6-address;
                    }
                    leaf act-tx {
                        description
                          "Actual minimum interval at which bfd packets
                           are sent, in milliseconds.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf act-rx {
                        description
                          "Actual minimum interval at which bfd packets
                           are received, in milliseconds.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf act-multi {
                        description "Actual local detection multiplier.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf local-port {



Liu, et al.            Expires September 23, 2015              [Page 86]

Internet-Draft             PIM YANG Data Model                March 2015


                        description
                          "Local discriminator of a bfd session.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf remote-port {
                        description
                          "Remote discriminator of a bfd session.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf bfd-status {
                        description "Status of a pim bfd session.";
                        config "false";
                        type enumeration {
                            enum admindown {
                                value "0";
                                description "admin down:admin down";
                            }
                            enum down {
                                value "1";
                                description "down:down";
                            }
                            enum init {
                                value "2";
                                description "init:init";
                            }
                            enum up {
                                value "3";
                                description "up:up";
                            }
                            enum bfd_session_number_exceed {
                                value "4";
                                description "bfd session number exceed:bfd session number exceed";
                            }
                        }
                    }
                }

            }

            container pim-vrf-packet-statistics {

                list pim-vrf-packet-statistic {



Liu, et al.            Expires September 23, 2015              [Page 87]

Internet-Draft             PIM YANG Data Model                March 2015


                    key "vrf-name address-family";
                    config "false";

                    leaf vrf-name {
                        description "Name of a vpn instance.";
                        config "false";
                        //default "_public_";
                        type string {
                            length "0..32";
                        }
                    }
                    leaf address-family {
                        config "false";
                        type enumeration {
                            enum ipv4unicast {
                                value "0";
                                description "ipv4unicast:ipv4unicast";
                            }
                            enum ipv6unicast {
                                value "1";
                                description "ipv6unicast:ipv6unicast";
                            }
                        }
                    }
                    leaf register-recv-num {
                        description
                          "Number of register messages received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-send-num {
                        description
                          "Number of register messages sent.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-invalid-num {
                        description
                          "Number of invalid register messages received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }



Liu, et al.            Expires September 23, 2015              [Page 88]

Internet-Draft             PIM YANG Data Model                March 2015


                    leaf register-filter-num {
                        description
                          "Number of register messages filtered.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-stop-recv-num {
                        description
                          "Number of register-stop messages received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-stop-send-num {
                        description
                          "Number of register-stop messages sent.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-stop-invalid-num {
                        description
                          "Number of invalid register-stop messages
                           received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf register-stop-filter-num {
                        description
                          "Number of register-stop messages filtered.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf probe-recv-num {
                        description
                          "Number of null register messages received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }



Liu, et al.            Expires September 23, 2015              [Page 89]

Internet-Draft             PIM YANG Data Model                March 2015


                    }
                    leaf probe-send-num {
                        description
                          "Number of the null register messages sent.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf probe-invalid-num {
                        description
                          "Number of the invalid null register
                           messages.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf probe-filter-num {
                        description
                          "Number of null register messages filtered.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf crp-recv-num {
                        description
                          "Number of c-rp messages received.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf crp-send-num {
                        description
                          "Number of c-rp messages sent.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    leaf crp-invalid-num {
                        description
                          "Number of invalid c-rp messages.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";



Liu, et al.            Expires September 23, 2015              [Page 90]

Internet-Draft             PIM YANG Data Model                March 2015


                        }
                    }
                    leaf crp-filter-num {
                        description
                          "Number of c-rp messages filtered.";
                        config "false";
                        type uint32 {
                            range "0..4294967295";
                        }
                    }
                    container pim-if-packet-statistics {

                        list pim-if-packet-statistic {

                            key "if-name";
                            config "false";

                            leaf if-name {
                                description "Name of the interface.";
                                config "false";
                                type if-name;
                            }
                            leaf assert-recv-num {
                                description
                                  "Number of assert messages received
                                   on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf assert-send-num {
                                description
                                  "Number of assert messages sent on
                                   the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf assert-invalid-num {
                                description
                                  "Number of invalid assert messages.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }



Liu, et al.            Expires September 23, 2015              [Page 91]

Internet-Draft             PIM YANG Data Model                March 2015


                            leaf assert-filter-num {
                                description
                                  "Number of assert messages filtered
                                   on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf hello-recv-num {
                                description
                                  "Number of hello messages received
                                   on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf hello-send-num {
                                description
                                  "Number of hello messages sent on
                                   the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf hello-invalid-num {
                                description
                                  "Number of invalid hello messages.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf hello-filter-num {
                                description
                                  "Number of hello messages filtered
                                   on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf jp-recv-num {
                                description
                                  "Number of join/prune messages
                                   received on the current interface.";



Liu, et al.            Expires September 23, 2015              [Page 92]

Internet-Draft             PIM YANG Data Model                March 2015


                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf jp-send-num {
                                description
                                  "Number of join/prune messages sent
                                   on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf jp-invalid-num {
                                description
                                  "Number of invalid join/prune
                                   messages.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf jp-filter-num {
                                description
                                  "Number of join/prune messages
                                   filtered on the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf bsr-recv-num {
                                description
                                  "Number of bsr messages received on
                                   the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf bsr-send-num {
                                description
                                  "Number of bsr messages sent on the
                                   current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";



Liu, et al.            Expires September 23, 2015              [Page 93]

Internet-Draft             PIM YANG Data Model                March 2015


                                }
                            }
                            leaf bsr-invalid-num {
                                description
                                  "Number of invalid bsr messages.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }
                            leaf bsr-filter-num {
                                description
                                  "Number of bsr messages filtered on
                                   the current interface.";
                                config "false";
                                type uint32 {
                                    range "0..4294967295";
                                }
                            }

                        }

                    }

                }

            }
        }
    }

    notification pim-neighbor-loss {

        description
          "A pim-neighbor-loss notification signifies the loss of an
           adjacency with a neighbor. This notification should be
           generated when the neighbor timer expires, and the router
           has no other neighbors on the same interface with the same
           ip version and a lower ip address than itself. ";

        leaf vrf-name {
            description "Name of a vpn instance.";
            //default "_public_";
            type string {
                length "0..32";
            }
        }
        leaf address-family {
            type enumeration {



Liu, et al.            Expires September 23, 2015              [Page 94]

Internet-Draft             PIM YANG Data Model                March 2015


                enum ipv4unicast {
                    value "0";
                    description "ipv4unicast:ipv4unicast";
                }
                enum ipv6unicast {
                    value "1";
                    description "ipv6unicast:ipv6unicast";
                }
            }
        }
        leaf if-name {
            description "Name of the interface.";
            type if-name;
        }
        leaf ipv4-neighbor-addr {
            description "pim neighbor address.";
            type inet:ipv4-address;
        }
        leaf ipv6-neighbor-addr {
            description "pim neighbor address.";
            type inet:ipv6-address;
        }
        leaf neighbor-up-time {
            description "pim neighbor up time.";
            type uint32 {
                range "0..4294967295";
            }
        }
    }

    notification pim-invalid-register {

        description
          "A pim-invalid-register notification signifies that an invalid
           pim register message was received by this device. ";

        leaf vrf-name {
            description "Name of a vpn instance.";
            //default "_public_";
            type string {
                length "0..32";
            }
        }
        leaf address-family {
            type enumeration {
                enum ipv4unicast {
                    value "0";
                    description "ipv4unicast:ipv4unicast";



Liu, et al.            Expires September 23, 2015              [Page 95]

Internet-Draft             PIM YANG Data Model                March 2015


                }
                enum ipv6unicast {
                    value "1";
                    description "ipv6unicast:ipv6unicast";
                }
            }
        }
        leaf ipv4-invalid-register-origin {
            description
              "The source address of the last invalid register message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-register-origin {
            description
              "The source address of the last invalid register message.";
            type inet:ipv6-address;
        }
        leaf ipv4-invalid-register-group {
            description
              "The multicast group address of the last invalid register
               message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-register-group {
            description
              "The multicast group address of the last invalid register
               message.";
            type inet:ipv6-address;
        }
        leaf ipv4-invalid-register-rp {
            description
              "The rp address of the last invalid register message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-register-rp {
            description
              "The rp address of the last invalid register message.";
            type inet:ipv6-address;
        }
    }

    notification pim-invalid-join-prune {

        description
          "A pim-invalid-join-prune notification signifies that an
           invalid pim join/prune message was received by this device.";

        leaf vrf-name {



Liu, et al.            Expires September 23, 2015              [Page 96]

Internet-Draft             PIM YANG Data Model                March 2015


            description "Name of a vpn instance.";
            //default "_public_";
            type string {
                length "0..32";
            }
        }
        leaf address-family {
            type enumeration {
                enum ipv4unicast {
                    value "0";
                    description "ipv4unicast:ipv4unicast";
                }
                enum ipv6unicast {
                    value "1";
                    description "ipv6unicast:ipv6unicast";
                }
            }
        }
        leaf ipv4-invalid-join-prune-origin {
            description
              "The source address of the last invalid join/prune
               message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-join-prune-origin {
            description
              "The source address of the last invalid join/prune
               message.";
            type inet:ipv6-address;
        }
        leaf ipv4-invalid-join-prune-group {
            description
              "The multicast group address of the last invalid
               join/prune message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-join-prune-group {
            description
              "The multicast group address of the last invalid
               join/prune message.";
            type inet:ipv6-address;
        }
        leaf ipv4-invalid-join-prune-rp {
            description
              "The rp address of the last invalid join/prune message.";
            type inet:ipv4-address;
        }
        leaf ipv6-invalid-join-prune-rp {



Liu, et al.            Expires September 23, 2015              [Page 97]

Internet-Draft             PIM YANG Data Model                March 2015


            description
              "The rp address of the last invalid join/prune message.";
            type inet:ipv6-address;
        }
        leaf neighbor-up-time {
            description "pim neighbor up time.";
            type uint32 {
                range "0..4294967295";
            }
        }
    }

    notification pim-rp-mapping-change {

        description
          "A pim-rp-mapping-change notification signifies a change to
           the active rp mapping on this device.";

        leaf vrf-name {
            description "Name of a vpn instance.";
            //default "_public_";
            type string {
                length "0..32";
            }
        }
        leaf address-family {
            type enumeration {
                enum ipv4unicast {
                    value "0";
                    description "ipv4unicast:ipv4unicast";
                }
                enum ipv6unicast {
                    value "1";
                    description "ipv6unicast:ipv6unicast";
                }
            }
        }
        leaf group-mapping-origin {
            description
              "The mechanism by which this group mapping was learned.";
            type enumeration {
                enum fixed {
                    value "1";
                    description "fixed:fixed";
                }
                enum staticrp {
                    value "2";
                    description " staticrp:staticrp";



Liu, et al.            Expires September 23, 2015              [Page 98]

Internet-Draft             PIM YANG Data Model                March 2015


                }
                enum ssm {
                    value "3";
                    description " ssm:ssm";
                }
                enum bsr {
                    value "4";
                    description " bsr:bsr";
                }
                enum autorp {
                    value "5";
                    description " autorp:autorp";
                }
                enum embeddedrp {
                    value "6";
                    description " embeddedrp:embeddedrp";
                }
                enum other {
                    value "7";
                    description " other:other";
                }
            }
        }
        leaf ipv4-group-mapping-group-address {
            description "Multicast group address for group mapping.";
            type inet:ipv4-address;
        }
        leaf ipv6-group-mapping-group-address {
            description "Multicast group address for group mapping.";
            type inet:ipv6-address;
        }
        leaf group-mapping-group-prefix-length {
            description
              "Multicast group prefix length.For ipv4, it is in the
               range 4-32.for ipv6, it is in the range 8-128.";
            type uint8 {
                range "4..128";
            }
        }
        leaf ipv4-group-mapping-rp-address {
            description "The rp address for group mapping.";
            type inet:ipv4-address;
        }
        leaf ipv6-group-mapping-rp-address {
            description "The rp address for group mapping.";
            type inet:ipv6-address;
        }
        leaf group-mapping-precedence {



Liu, et al.            Expires September 23, 2015              [Page 99]

Internet-Draft             PIM YANG Data Model                March 2015


            description
              "Numerically higher values indicate lower precedences,
               with the value zero denoting the highest precedence.";
            type uint32 {
                range "0..4294967295";
            }
        }
    }

    notification pim-interface-election {

        description
          "A pim-interface-election notification signifies that a new
           dr or df has been elected on a network. ";

        leaf vrf-name {
            description "Name of a vpn instance.";
            //default "_public_";
            type string {
                length "0..32";
            }
        }
        leaf address-family {
            type enumeration {
                enum ipv4unicast {
                    value "0";
                    description "ipv4unicast:ipv4unicast";
                }
                enum ipv6unicast {
                    value "1";
                    description "ipv6unicast:ipv6unicast";
                }
            }
        }
        leaf if-name {
            description "Name of the interface.";
            type if-name;
        }
        leaf ipv4-if-addr {
            description "The address of the interface.";
            type inet:ipv4-address;
        }
        leaf ipv6-if-addr {
            description "The address of the interface.";
            type inet:ipv6-address;
        }
    }




Liu, et al.            Expires September 23, 2015             [Page 100]

Internet-Draft             PIM YANG Data Model                March 2015


}

6.  IANA Considerations

   This draft includes no request to IANA.

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

8.  Acknowledgements

   TBD

9.  References

9.1.  Normative References

   [I-D.ietf-netmod-routing-cfg]
              Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
              Management", draft-ietf-netmod-routing-cfg-17 (work in
              progress), March 2015.

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





Liu, et al.            Expires September 23, 2015             [Page 101]

Internet-Draft             PIM YANG Data Model                March 2015


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

9.2.  Informative References

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

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


   Mahesh Sivakumar
   Cisco
   510 McCarthy Blvd
   Milpitas, California  95035
   USA

   Email: masivaku@cisco.com







Liu, et al.            Expires September 23, 2015             [Page 102]