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]