rfc9128xml2.original.xml | rfc9128.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
]> | ||||
<!-- may be omitted for very short documents --> | ||||
<?rfc toc="yes"?> | ||||
<?rfc sortrefs="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc strict="no"?> | ||||
<?rfc rfcedstyle="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<!-- these two save paper: start new sections from the same page etc. --> | <!DOCTYPE rfc [ | |||
<?rfc compact="yes"?> <?rfc subcompact="no"?> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<!-- other categories: bcp, exp, historic, std --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
<rfc ipr="trust200902" category="std" docName="draft-ietf-pim-yang-17"> | -ietf-pim-yang-17" number="9128" obsoletes="" updates="" submissionType="IETF" c | |||
ategory="std" consensus="true" xml:lang="en" tocInclude="true" sortRefs="true" s | ||||
ymRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.47.0 --> | ||||
<front> | <front> | |||
<title abbrev="PIM YANG"> | ||||
<title abbrev='PIM YANG'> | YANG Data Model for Protocol Independent Multicast (PIM) | |||
A YANG Data Model for Protocol Independent Multicast (PIM) | ||||
</title> | </title> | |||
<seriesInfo name="RFC" value="9128"/> | ||||
<author fullname="Xufeng Liu" initials="X." surname="Liu"> | <author fullname="Xufeng Liu" initials="X." surname="Liu"> | |||
<organization>Volta Networks</organization> | <organization>IBM Corporation</organization> | |||
<address> | <address> | |||
<email>xufeng.liu.ietf@gmail.com</email> | <postal> | |||
<street>2300 Dulles Station Blvd.</street> | ||||
<city>Herndon</city> | ||||
<region>VA</region> | ||||
<code>20171</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>xufeng.liu.ietf@gmail.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Pete McAllister" initials="P." surname="McAllister"> | <author fullname="Pete McAllister" initials="P." surname="McAllister"> | |||
<organization>Metaswitch Networks</organization> | <organization>Metaswitch Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>100 Church Street</street> | <street>100 Church Street</street> | |||
<city>Enfield</city> | <city>Enfield</city> | |||
<code>EN2 6BQ</code> | <code>EN2 6BQ</code> | |||
<country>UK</country> | <country>United Kingdom</country> | |||
</postal> | </postal> | |||
<email> pete.mcallister@metaswitch.com</email> | <email> pete.mcallister@metaswitch.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Anish Peter" initials="A." surname="Peter"> | <author fullname="Anish Peter" initials="A." surname="Peter"> | |||
<organization>Individual</organization> | <organization>Individual</organization> | |||
<address> | <address> | |||
<email>anish.ietf@gmail.com</email> | <email>anish.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Mahesh Sivakumar" initials="M." surname="Sivakumar"> | <author fullname="Mahesh Sivakumar" initials="M." surname="Sivakumar"> | |||
<organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1133 Innovation Way</street> | <street>1133 Innovation Way</street> | |||
<city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
<region>California</region> | <region>California</region> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>sivakumar.mahesh@gmail.com</email> | <email>sivakumar.mahesh@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yisong Liu" initials="Y." surname="Liu"> | <author fullname="Yisong Liu" initials="Y." surname="Liu"> | |||
<organization>Huawei Technologies</organization> | <organization>China Mobile</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Huawei Administration Building</street> | <street>China Mobile Innovation Building</street> | |||
<city>Longgang</city> | <street>32 Xuanwumen West Street</street> | |||
<region>Guangdong</region> | <city>Beijing</city> | |||
<code>518129</code> | <code>100053</code> | |||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>liuyisong@huawei.com</email> | <email>liuyisong@chinamobile.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Fangwei Hu" initials="F." surname="Hu"> | <author fullname="Fangwei Hu" initials="F." surname="Hu"> | |||
<organization>ZTE Corporation</organization> | <organization>Individual Contributor</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>889 Bibo Road</street> | <street>86 Bohang Road</street> | |||
<city>Shanghai</city> | <city>Shanghai</city> | |||
<region>Shanghai</region> | <region>Shanghai</region> | |||
<code>201203</code> | <code>200126</code> | |||
<country>China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>hu.fangwei@zte.com.cn</email> | <email>hufwei@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2022" month="October" /> | ||||
<date year="2018"/> | ||||
<area>Routing</area> | ||||
<workgroup>PIM Working Group</workgroup> | ||||
<keyword>Network Management</keyword> | <keyword>Network Management</keyword> | |||
<keyword>PIM</keyword> | <keyword>PIM</keyword> | |||
<keyword>YANG</keyword> | <keyword>YANG</keyword> | |||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage devices supporting Protocol Independent Multicast (PIM). | and manage devices supporting Protocol Independent Multicast (PIM). | |||
The model covers the PIM protocol configuration, | The model covers the PIM protocol configuration, | |||
operational state, and event notifications data. | operational state, and event notifications data. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section numbered="true" toc="default"> | ||||
<section title="Introduction"> | <name>Introduction</name> | |||
<t> | <t> | |||
YANG <xref target="RFC7950"/> is a data | YANG <xref target="RFC7950" format="default"/> is a data | |||
modeling language that was introduced to model the configuration | modeling language that was introduced to model the configuration | |||
and operational state of a device managed using network management | and operational state of a device managed using network management | |||
protocols such as NETCONF <xref target="RFC6241"/> or RESTCONF | protocols such as the Network Configuration Protocol (NETCONF) <xref target= | |||
<xref target="RFC8040"/>. | "RFC6241" format="default"/> or RESTCONF | |||
<xref target="RFC8040" format="default"/>. | ||||
YANG is now also being used as a component of other management | YANG is now also being used as a component of other management | |||
interfaces, such as CLIs. | interfaces, such as command-line interfaces (CLIs).</t> | |||
</t> | <t> | |||
<t> | ||||
This document defines a YANG data model that can be used to | This document defines a YANG data model that can be used to | |||
configure and manage devices supporting Protocol Independent | configure and manage devices supporting Protocol Independent | |||
Multicast (PIM). | Multicast (PIM). | |||
This model supports the core PIM | This model supports the core PIM | |||
protocol, as well as many other features described in Section 2.1. | protocol, as well as many other features; see <xref target="scope"/>. | |||
Non-core features are defined as optional in the provided data model. | Non-core features are defined as optional in the provided data model. | |||
</t> | </t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t> | <t> | |||
The terminology for describing YANG data models is found in | The terminology for describing YANG data models is found in | |||
<xref target="RFC7950"/>. | <xref target="RFC7950" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The following abbreviations are used in this document and | The following abbreviations are used in this document and | |||
the defined model: | the defined model: | |||
<list style="hanging"> | </t> | |||
<t hangText="ASM:"><vspace blankLines="0" /> | <dl newline="false" spacing="normal" indent="13"> | |||
Any-Source Multicast service model | <dt>ASM:</dt> | |||
<xref target="RFC3569"/> <xref target="RFC4607"/>. | <dd>Any-Source Multicast service model | |||
</t> | <xref target="RFC3569" format="default"/> <xref target="RFC4607" format= | |||
"default"/> | ||||
<t hangText="BFD:"><vspace blankLines="0" /> | </dd> | |||
Bidirectional Forwarding Detection <xref target="RFC5880"/>. | <dt>BFD:</dt> | |||
</t> | <dd>Bidirectional Forwarding Detection <xref target="RFC5880" format=" | |||
default"/> | ||||
<t hangText="BSR:"><vspace blankLines="0" /> | </dd> | |||
Bootstrap Router <xref target="RFC5059"/>. | <dt>BIDIR-PIM:</dt> | |||
</t> | <dd>Protocol Independent Multicast - Bidirectional Mode | |||
<xref target="RFC5015" format="default"/> | ||||
<t hangText="DF:"><vspace blankLines="0" /> | </dd> | |||
Designated Forwarder <xref target="RFC5015"/>. | <dt>BSR:</dt> | |||
</t> | <dd>Bootstrap Router <xref target="RFC5059" format="default"/> | |||
</dd> | ||||
<t hangText="DR:"><vspace blankLines="0" /> | <dt>DF:</dt> | |||
Designated Router <xref target="RFC7761"/>. | <dd>Designated Forwarder <xref target="RFC5015" format="default"/> | |||
</t> | </dd> | |||
<dt>DR:</dt> | ||||
<t hangText="IGMP:"><vspace blankLines="0" /> | <dd>Designated Router <xref target="RFC7761" format="default"/> | |||
Internet Group Management Protocol <xref target="RFC3376"/>. | </dd> | |||
</t> | <dt>IGMP:</dt> | |||
<dd>Internet Group Management Protocol <xref target="RFC3376" format=" | ||||
<t hangText="MLD:"><vspace blankLines="0" /> | default"/> | |||
Multicast Listener Discovery <xref target="RFC3810"/>. | </dd> | |||
</t> | <dt>MLD:</dt> | |||
<dd>Multicast Listener Discovery <xref target="RFC3810" format="defaul | ||||
<t hangText="MSDP:"><vspace blankLines="0" /> | t"/> | |||
Multicast Source Discovery Protocol <xref target="RFC3618"/>. | </dd> | |||
</t> | <dt>mLDP:</dt> | |||
<dd>Multipoint extensions for LDP <xref target="RFC6388" format="defau | ||||
<t hangText="mLDP:"><vspace blankLines="0" /> | lt"/> | |||
Multipoint extensions for LDP <xref target="RFC6388"/>. | </dd> | |||
</t> | <dt>MRIB:</dt> | |||
<dd>Multicast Routing Information Base <xref target="RFC3973" format=" | ||||
<t hangText="MRIB:"><vspace blankLines="0" /> | default"/> | |||
Multicast Routing Information Base <xref target="RFC3973"/> | <xref target="RFC5015" format="default"/> <xref target="RFC7761" for | |||
<xref target="RFC5015"/> <xref target="RFC7761"/>. | mat="default"/> | |||
</t> | </dd> | |||
<dt>MSDP:</dt> | ||||
<t hangText="mVPN:"><vspace blankLines="0" /> | <dd>Multicast Source Discovery Protocol <xref target="RFC3618" format= | |||
Multicast VPN. | "default"/> | |||
</t> | </dd> | |||
<dt>mVPN:</dt> | ||||
<t hangText="PIM:"><vspace blankLines="0" /> | <dd>Multicast VPN | |||
Protocol Independent Multicast. <xref target="RFC3973"/> | </dd> | |||
<xref target="RFC5015"/> <xref target="RFC7761"/>. | <dt>PIM:</dt> | |||
</t> | <dd>Protocol Independent Multicast <xref target="RFC3973" format="defa | |||
ult"/> | ||||
<t hangText="PIM-BIDIR:"><vspace blankLines="0" /> | <xref target="RFC5015" format="default"/> <xref target="RFC7761" for | |||
Protocol Independent Multicast - Bidirectional Mode | mat="default"/> | |||
<xref target="RFC5015"/>. | </dd> | |||
</t> | <dt>PIM-DM:</dt> | |||
<dd>Protocol Independent Multicast - Dense Mode | ||||
<t hangText="PIM-DM:"><vspace blankLines="0" /> | <xref target="RFC3973" format="default"/> | |||
Protocol Independent Multicast - Dense Mode | </dd> | |||
<xref target="RFC3973"/>. | <dt>PIM-SM:</dt> | |||
</t> | <dd>Protocol Independent Multicast - Sparse Mode | |||
<xref target="RFC7761" format="default"/> | ||||
<t hangText="PIM-SM:"><vspace blankLines="0" /> | </dd> | |||
Protocol Independent Multicast - Sparse Mode | <dt>RP:</dt> | |||
<xref target="RFC7761"/>. | <dd>Rendezvous Point <xref target="RFC7761" format="default"/> | |||
</t> | </dd> | |||
<dt>RPA:</dt> | ||||
<t hangText="RP:"><vspace blankLines="0" /> | <dd>Rendezvous Point Address <xref target="RFC5015" format="default"/> | |||
Rendezvous Point. <xref target="RFC7761"/>. | </dd> | |||
</t> | <dt>RPF:</dt> | |||
<dd>Reverse Path Forwarding <xref target="RFC3973" format="default"/> | ||||
<t hangText="RPA:"><vspace blankLines="0" /> | <xref target="RFC5015" format="default"/> <xref target="RFC7761" for | |||
Rendezvous Point Address. <xref target="RFC5015"/>. | mat="default"/> | |||
</t> | </dd> | |||
<dt>RPT:</dt> | ||||
<t hangText="RPF:"><vspace blankLines="0" /> | <dd>Rendezvous Point Tree <xref target="RFC7761" format="default"/> | |||
Reverse Path Forwarding. <xref target="RFC3973"/> | </dd> | |||
<xref target="RFC5015"/> <xref target="RFC7761"/>. | <dt>SPT:</dt> | |||
</t> | <dd>Shortest Path Tree <xref target="RFC7761" format="default"/> | |||
</dd> | ||||
<t hangText="RPT:"><vspace blankLines="0" /> | <dt>SSM:</dt> | |||
Rendezvous-Point Tree. <xref target="RFC7761"/>. | <dd>Source-Specific Multicast service model | |||
</t> | <xref target="RFC3569" format="default"/> <xref target="RFC4607" format= | |||
"default"/> | ||||
<t hangText="SPT:"><vspace blankLines="0" /> | </dd> | |||
Shortest Path Tree. <xref target="RFC7761"/>. | <dt>VRF:</dt> | |||
</t> | <dd>Virtual Routing and Forwarding | |||
</dd> | ||||
<t hangText="SSM:"><vspace blankLines="0" /> | </dl> | |||
Source-Specific Multicast service model | </section> | |||
<xref target="RFC3569"/> <xref target="RFC4607"/>. | <section numbered="true" toc="default"> | |||
</t> | <name>Tree Diagrams</name> | |||
<t> | ||||
<t hangText="VRF:"><vspace blankLines="0" /> | ||||
Virtual Routing and Forwarding. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="Tree Diagrams"> | ||||
<t> | ||||
Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
<xref target="RFC8340"/>. | <xref target="RFC8340" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
In addition, the following notation is used as a placeholder at | In addition, the following notation is used as a placeholder at | |||
the location of the name of a tree node, to represent a section | the location of the name of a tree node, to represent a section | |||
of nodes: | of nodes: | |||
</t> | </t> | |||
<t> | <t> | |||
<summary description of a section of nodes> | <summary description of a section of nodes> | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Prefixes in Data Node Names"> | <name>Prefixes in Data Node Names</name> | |||
<t> | <t> | |||
In this document, names of data nodes, actions, and other data model | In this document, names of data nodes, actions, and other data model | |||
objects are often used without a prefix, as long as it is clear from | objects are often used without a prefix, as long as the context clearly | |||
the context in which YANG module each name is defined. Otherwise, | indicates the YANG module in which each name is defined. Otherwise, | |||
names are prefixed using the standard prefix associated with the | names are prefixed using the standard prefix associated with the | |||
corresponding YANG module, as shown in Table 1. | corresponding YANG module, as shown in <xref target="table_prefixes"/>. | |||
</t> | </t> | |||
<table anchor="table_prefixes" align="center"> | ||||
<texttable anchor='table_prefixes' | <name>Prefixes and Corresponding YANG Modules</name> | |||
title="Prefixes and Corresponding YANG Modules"> | <thead> | |||
<ttcol>Prefix</ttcol> | <tr> | |||
<ttcol>YANG module</ttcol> | <th align="left">Prefix</th> | |||
<ttcol>Reference</ttcol> | <th align="left">YANG Module</th> | |||
<c>yang</c> | <th align="left">Reference</th> | |||
<c>ietf-yang-types</c> | </tr> | |||
<c><xref target="RFC6991"/></c> | </thead> | |||
<tbody> | ||||
<c>inet</c> | <tr> | |||
<c>ietf-inet-types</c> | <td align="left">yang</td> | |||
<c><xref target="RFC6991"/></c> | <td align="left">ietf-yang-types</td> | |||
<td align="left"> | ||||
<c>if</c> | <xref target="RFC6991" format="default"/></td> | |||
<c>ietf-interfaces</c> | </tr> | |||
<c><xref target="RFC8343"/></c> | <tr> | |||
<td align="left">inet</td> | ||||
<c>rt</c> | <td align="left">ietf-inet-types</td> | |||
<c>ietf-routing</c> | <td align="left"> | |||
<c><xref target="RFC8349"/></c> | <xref target="RFC6991" format="default"/></td> | |||
</tr> | ||||
<c>rt-types</c> | <tr> | |||
<c>ietf-routing-types</c> | <td align="left">if</td> | |||
<c><xref target="RFC8294"/></c> | <td align="left">ietf-interfaces</td> | |||
<td align="left"> | ||||
<c>bfd-types</c> | <xref target="RFC8343" format="default"/></td> | |||
<c>ietf-bfd-types</c> | </tr> | |||
<c><xref target="I-D.ietf-bfd-yang"/></c> | <tr> | |||
</texttable> | <td align="left">rt</td> | |||
</section> | <td align="left">ietf-routing</td> | |||
<td align="left"> | ||||
</section> | <xref target="RFC8349" format="default"/></td> | |||
</tr> | ||||
<section title="Design of Data Model"> | <tr> | |||
<section title="Scope of Model"> | <td align="left">rt-types</td> | |||
<t> | <td align="left">ietf-routing-types</td> | |||
The model covers PIM Sparse Mode <xref target="RFC7761"/>, including the | <td align="left"> | |||
Source-Specific subset <xref target="RFC3569"/> | <xref target="RFC8294" format="default"/></td> | |||
<xref target="RFC4607"/>, Dense Mode | </tr> | |||
<xref target="RFC3973"/>, and Bi-directional PIM <xref target="RFC5015"/>. | <tr> | |||
</t> | <td align="left">bfd-types</td> | |||
<t> | <td align="left">ietf-bfd-types</td> | |||
The PIM extensions represented in the model include BSR | <td align="left"> | |||
<xref target="RFC5059"/> and Anycast-RP <xref target="RFC4610"/>. | <xref target="RFC9314" format="default"/></td> | |||
</t> | </tr> | |||
<t> | </tbody> | |||
</table> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Design of Data Model</name> | ||||
<section anchor="scope" numbered="true" toc="default"> | ||||
<name>Scope of Model</name> | ||||
<t> | ||||
The model covers PIM Sparse Mode <xref target="RFC7761" format="default"/> | ||||
(including the | ||||
Source-Specific subset <xref target="RFC3569" format="default"/> | ||||
<xref target="RFC4607" format="default"/>), Dense Mode | ||||
<xref target="RFC3973" format="default"/>, and Bidirectional PIM <xref tar | ||||
get="RFC5015" format="default"/>. | ||||
</t> | ||||
<t> | ||||
The PIM extensions represented in the model include BSRs | ||||
<xref target="RFC5059" format="default"/> and Anycast-RPs <xref target="RF | ||||
C4610" format="default"/>. | ||||
</t> | ||||
<t> | ||||
The data model can be used to configure and manage these | The data model can be used to configure and manage these | |||
protocol features. The operational state data and statistics | protocol features. The operational state data and statistics | |||
can be retrieved by this model. The protocol specific | can be retrieved by this model. The protocol-specific | |||
notifications are also defined in the model. | notifications are also defined in the model. | |||
</t> | </t> | |||
<t> | <t> | |||
This model does not cover other multicast protocols such as IGMP/MLD, | This model does not cover other multicast protocols such as IGMP/MLD, | |||
MSDP, mVPN, or mLDP in-band signalling. It does not cover | MSDP, mVPN, or mLDP in-band signaling. It does not cover | |||
any configuration required to generate the MRIB. These will | any configuration required to generate the MRIB. These will | |||
be specified in separate documents. | be specified in separate documents. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Optional Capabilities"> | <section numbered="true" toc="default"> | |||
<t> | <name>Optional Capabilities</name> | |||
<t> | ||||
This model is designed to represent the capabilities of | This model is designed to represent the capabilities of | |||
devices supporting PIM | devices supporting PIM | |||
with various specifications, including some with basic subsets of the | with various specifications, including some with basic subsets of the | |||
PIM protocol. The main design goals of this document are that any major | PIM protocol. The main design goals of this document are that any major | |||
now-existing implementation may be said to support the base model, and | currently existing implementation may be said to support the base model | |||
that the configuration of all implementations meeting the specification | and that the configuration of all implementations meeting the | |||
is easy to express through some combination of the features in the base | specification is easy to express through some combination of the | |||
model and simple vendor augmentations. | features in the base model and simple vendor augmentations. | |||
</t> | </t> | |||
<t> | <t> | |||
There is also value in widely-supported features being standardized, to | There is also value in widely supported features being standardized, to | |||
save work for individual vendors, and so that mapping between different | save work for individual vendors, and so that mapping between different | |||
vendors' configuration is not needlessly complicated. Therefore, these | vendors' configurations is not needlessly complicated. Therefore, these | |||
modules declare a number of features representing capabilities that | modules declare a number of features representing capabilities that | |||
not all deployed devices support. | not all deployed devices support. | |||
</t> | </t> | |||
<t> | <t> | |||
The extensive use of feature declarations should also substantially | The extensive use of feature declarations should also substantially | |||
simplify the capability negotiation process for a vendor's PIM | simplify the capability negotiation process for a vendor's PIM | |||
implementation. | implementation. | |||
</t> | </t> | |||
<t> | <t> | |||
On the other hand, operational state parameters are not so widely | On the other hand, operational state parameters are not so widely | |||
designated as features, as there are many cases where the defaulting | designated as features, as there are many cases where the defaulting | |||
of an operational state parameter would not cause any harm to the | of an operational state parameter would not cause any harm to the | |||
system, and it is much more likely that an implementation without | system, and it is much more likely that an implementation without | |||
native support for a piece of operational state would be able to | intrinsic support for a piece of operational state would be able to | |||
derive a suitable value for a state variable that is not natively | derive a suitable value for a state variable that is not intrinsically | |||
supported. | supported. | |||
</t> | </t> | |||
<t> | <t> | |||
For the same reason, wide constant ranges (for example, timer maxima | For the same reason, wide constant ranges (for example, timer maxima | |||
and minima) are used in the model. It is expected that | and minima) are used in the model. It is expected that | |||
vendors will augment the model with any specific extensions | vendors will augment the model with any specific extensions | |||
and restrictions needed to adapt it to their vendor-specific | and restrictions needed to adapt it to their vendor-specific | |||
implementation. | implementations. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Datastore Applicability"> | <section numbered="true" toc="default"> | |||
<t> | <name>Datastore Applicability</name> | |||
<t> | ||||
This model conforms to the Network Management Datastore | This model conforms to the Network Management Datastore | |||
Architecture (NMDA) | Architecture (NMDA) | |||
<xref target="RFC8342"/>. | <xref target="RFC8342" format="default"/>. | |||
The operational state data is combined with the associated | The operational state data is combined with the associated | |||
configuration data in the same hierarchy | configuration data in the same hierarchy | |||
<xref target="I-D.ietf-netmod-rfc6087bis"/>. | <xref target="RFC8407" format="default"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Module and Hierarchy Organization"> | <section numbered="true" toc="default"> | |||
<t> | <name>Module and Hierarchy Organization</name> | |||
This model defines several separate modules for modelling PIM | <t> | |||
configuration, defined below. Again, this separation makes it | This model defines several separate modules for modeling PIM | |||
configuration. Again, this separation makes it | ||||
easier to express the specific capabilities of a PIM device. | easier to express the specific capabilities of a PIM device. | |||
The module organization, along with the usage of the YANG | The module organization, along with the usage of the YANG | |||
extensible features such as identity, allows the model to be | extensible features such as identity, allows the model to be | |||
easily augmented for new capabilities. | easily augmented for new capabilities. | |||
</t> | </t> | |||
<t> | <t> | |||
The hierarchy of PIM configuration is designed so that objects that | The hierarchy of PIM configuration is designed so that objects that | |||
are only relevant for one situation or feature are collected in a | are only relevant for one situation or feature are collected in a | |||
container for that feature. For example, the configuration for PIM-SM | container for that feature. For example, a configuration for PIM-SM | |||
that is not relevant for an SSM-only implementation is collected in an | that is not relevant for an SSM-only implementation is collected in an | |||
ASM container. | ASM container. | |||
</t> | </t> | |||
<t> | <t> | |||
Where fields are not genuinely essential to protocol operation, they | Where fields are not genuinely essential to protocol operation, they | |||
are marked as optional. Some fields are essential but have a | are marked as optional. Some fields are essential but have a | |||
default specified, so they need not be explicitly configured. | default specified, so they need not be explicitly configured. | |||
</t> | </t> | |||
<t> | <t> | |||
This module structure also applies, where applicable, to the operational | This module structure also applies, where applicable, to the operational | |||
state and notifications of the model. | state and notifications of the model. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="Position of Address Family in Hierarchy"> | <section numbered="true" toc="default"> | |||
<t> | <name>Position of Address Family in Hierarchy</name> | |||
This document contains address-family as a node in the hierarchy | <t> | |||
multiple times: both under the interface list, and under the | This document contains "address-family" as a node in the hierarchy | |||
PIM instance. | multiple times: under both the interface list and the PIM instance. | |||
</t> | </t> | |||
<t> | <t> | |||
The reasoning for this is to make it easier for implementations in which | The reasoning for this is to make it easier for implementations in which | |||
configuration options are not supported for specific address families. | configuration options are not supported for specific address families. | |||
</t> | </t> | |||
<t> | <t> | |||
For these implementations, the restriction that interface configuration | For these implementations, the restriction that interface configuration | |||
must be address-family independent may either be expressed as a vendor | must be address-family independent may be expressed either (1) as | |||
augmentation of an address-family-independent parameter above the | a vendor augmentation of an address-family-independent parameter above | |||
address-family level, or by a constraint on the base model objects of a | the address-family level or (2) by a constraint on the base model | |||
form similar to: | objects of a form similar to the following: | |||
</t> | </t> | |||
<figure><artwork> | ||||
<![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
deviation "/rt:routing/rt:control-plane-protocols/" | deviation "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family" { | + "pim-base:address-family" { | |||
deviate add { | deviate add { | |||
must "(address-family = 'rt:ipv4' and dr-priority = " | must "(address-family = 'rt:ipv4' and dr-priority = " | |||
+ "../address-family[address-family = 'rt:ipv6']/" | + "../address-family[address-family = 'rt:ipv6']/" | |||
+ "dr-priority) or " | + "dr-priority) or " | |||
+ "(address-family = 'rt:ipv6' and dr-priority = " | + "(address-family = 'rt:ipv6' and dr-priority = " | |||
+ "../address-family[address-family = 'rt:ipv4']/" | + "../address-family[address-family = 'rt:ipv4']/" | |||
+ "dr-priority)" { | + "dr-priority)" { | |||
error-message | error-message | |||
"Error: IPv6 DR priority must match IPv4 DR priority."; | "Error: The IPv6 DR priority must match the " | |||
+ "IPv4 DR priority."; | ||||
error-app-tag "dr-priority-mismatch"; | error-app-tag "dr-priority-mismatch"; | |||
} | } | |||
} | } | |||
} | } | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>Module Structure</name> | ||||
<section title="Module Structure"> | <section numbered="true" toc="default"> | |||
<section title="PIM Base Module"> | <name>PIM Base Module</name> | |||
<t> | <t> | |||
The PIM base module defines the base framework not | The PIM base module defines the base framework not | |||
specific to any PIM mode, and is imported by the other | specific to any PIM mode and is imported by the other | |||
modules. The base module by itself does not provide | modules. The base module by itself does not provide | |||
sufficient data for any PIM mode to operate. Other mode | sufficient data for any PIM mode to operate. Other mode-specific | |||
specific and feature specific modules need to be implemented | and feature-specific modules need to be implemented | |||
in addition to this module, depending on the feature set | in addition to this module, depending on the feature set | |||
required by the implementation. | required by the implementation. | |||
</t> | </t> | |||
<t> | <t> | |||
This model augments the core routing data model "ietf-routing" | This model augments the core routing data model "ietf-routing" | |||
specified in <xref target="RFC8349"/>. | specified in <xref target="RFC8349" format="default"/>. | |||
The PIM base model augments | The PIM base model augments | |||
"/rt:routing/rt:control-plane-protocols” as opposed to | "/rt:routing/rt:control-plane-protocols" as opposed to | |||
augmenting | augmenting | |||
"/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol”, | "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol", | |||
as the | as the | |||
latter would allow multiple protocol instances, | latter would allow multiple protocol instances, | |||
while the PIM protocol is designed to be enabled or | while the PIM protocol is designed to be enabled or | |||
disabled as a single protocol instance on a network instance or | disabled as a single protocol instance on a network instance or | |||
a logical network element. | a logical network element. | |||
</t> | </t> | |||
<section numbered="true" toc="default"> | ||||
<section title="High-Level Structure"> | <name>High-Level Structure</name> | |||
<t> | <t> | |||
The high-level structure of the model is shown below: | The high-level structure of the model is shown below: | |||
</t> | </t> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
module: ietf-pim-base | module: ietf-pim-base | |||
augment /rt:routing/rt:control-plane-protocols: | augment /rt:routing/rt:control-plane-protocols: | |||
+--rw pim! | +--rw pim! | |||
+--rw <global configuration> | +--rw <global configuration> | |||
+--ro <global operational state> | +--ro <global operational state> | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
| +--rw address-family identityref | | +--rw address-family identityref | |||
| +--rw <per address family configuration> | | +--rw <per-address-family configuration> | |||
| +--ro <per address family operational state> | | +--ro <per-address-family operational state> | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw name if:interface-ref | +--rw name if:interface-ref | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
+--rw address-family identityref | +--rw address-family identityref | |||
+--rw <per interface configuration> | +--rw <per interface configuration> | |||
+--ro <per interface operational state> | +--ro <per interface operational state> | |||
+--ro neighbors | +--ro neighbors | |||
+--ro ipv4-neighbor* [address] | +--ro ipv4-neighbor* [address] | |||
| +--ro address inet:ipv4-address | | +--ro address inet:ipv4-address | |||
| +--ro <IPv4 per neighbor operational state> | | +--ro <IPv4 per-neighbor operational state> | |||
+--ro ipv6-neighbor* [address] | +--ro ipv6-neighbor* [address] | |||
+--ro address inet:ipv6-address | +--ro address inet:ipv6-address | |||
+--ro <IPv4 per neighbor operational state> | +--ro <IPv4 per-neighbor operational state> | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
The presence of the top-level container "pim" enables the PIM | ||||
<t> | protocols. | |||
The presence of the top-level container "pim" enables the PIM | </t> | |||
protocols. | </section> | |||
</t> | <section numbered="true" toc="default"> | |||
</section> | <name>Global Data</name> | |||
<t> | ||||
<section title="Global Data"> | The global configuration data and operational state data cover | |||
<t> | support for graceful restart in the PIM base model. Additional | |||
The global configuration and operational state data covers the | features can be added by augmentation if required by an | |||
support for graceful restart in the PIM base model. Additional | implementation. | |||
features can be added by augmentation if required by an | </t> | |||
implementation. | </section> | |||
</t> | <section numbered="true" toc="default"> | |||
</section> | <name>Per-Address-Family Data</name> | |||
<t> | ||||
<section title="Per Address Family Data"> | Support for per-address-family data is shown below: | |||
<t> | </t> | |||
The support for per address family data is shown below: | <sourcecode type="yangtree"><![CDATA[ | |||
</t> | ||||
<figure><artwork> | ||||
<![CDATA[ | ||||
+--rw pim! | +--rw pim! | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
| +--rw address-family identityref | | +--rw address-family identityref | |||
| +--rw graceful-restart | | +--rw graceful-restart | |||
... | ... | |||
| +--ro statistics | | +--ro statistics | |||
| | +--ro discontinuity-time? yang:date-and-time | | | +--ro discontinuity-time? yang:date-and-time | |||
| | +--ro error | | | +--ro error | |||
| | | +--ro assert? yang:counter32 | | | | +--ro assert? yang:counter32 | |||
... | ... | |||
skipping to change at line 547 ¶ | skipping to change at line 532 ¶ | |||
| | +--ro assert? yang:counter32 | | | +--ro assert? yang:counter32 | |||
... | ... | |||
| +--ro topology-tree-info | | +--ro topology-tree-info | |||
| | +--ro ipv4-route* [group source-address is-rpt] | | | +--ro ipv4-route* [group source-address is-rpt] | |||
| | | +--ro group | | | | +--ro group | |||
| | | | rt-types:ipv4-multicast-group-address | | | | | rt-types:ipv4-multicast-group-address | |||
| | | +--ro source-address | | | | +--ro source-address | |||
| | | | rt-types:ipv4-multicast-source-address | | | | | rt-types:ipv4-multicast-source-address | |||
| | | +--ro is-rpt boolean | | | | +--ro is-rpt boolean | |||
| | +--ro ipv6-route* [group source-address is-rpt] | | | +--ro ipv6-route* [group source-address is-rpt] | |||
| | +--ro group | | | +--ro group | |||
| | | rt-types:ipv6-multicast-group-address | | | | rt-types:ipv6-multicast-group-address | |||
| | +--ro source-address | | | +--ro source-address | |||
| | | rt-types:ipv6-multicast-source-address | | | | rt-types:ipv6-multicast-source-address | |||
| | +--ro is-rpt boolean | | | +--ro is-rpt boolean | |||
... | ... | |||
| | +--ro incoming-interface? if:interface-ref | | | +--ro incoming-interface? if:interface-ref | |||
... | ... | |||
| | +--ro outgoing-interface* [name] | | | +--ro outgoing-interface* [name] | |||
| | +--ro name if:interface-ref | | | +--ro name if:interface-ref | |||
| | +--ro expiration? rt-types:timer-value-seconds16 | | | +--ro expiration? rt-types:timer-value-seconds16 | |||
| | +--ro up-time? rt-types:timeticks64 | | | +--ro up-time? rt-types:timeticks64 | |||
| | +--ro jp-state? enumeration | | | +--ro jp-state? enumeration | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
<t> | This is the location that most of the PIM RP module | |||
This is the location that most of the PIM RP module | (ietf-pim-rp) augments. Each of the mode-specific modules also | |||
(ietf-pim-rp) augments. Each of the mode specific modules also | augments this schema tree. | |||
augments this schema tree. | </t> | |||
</t> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>PIM Interface Modeling</name> | ||||
<section title="PIM Interface Modeling"> | <t> | |||
<t> | The configuration data and operational state data of PIM interfaces | |||
The configuration and operational state data of PIM interfaces | are modeled as shown below: | |||
is modeled as below: | </t> | |||
</t> | <sourcecode type="yangtree"><![CDATA[ | |||
<figure><artwork> | ||||
<![CDATA[ | ||||
+--rw pim! | +--rw pim! | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw name if:interface-ref | +--rw name if:interface-ref | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
+--rw address-family identityref | +--rw address-family identityref | |||
+--rw bfd {bfd}? | +--rw bfd {bfd}? | |||
... | ... | |||
+--rw dr-priority? uint32 {intf-dr-priority}? | +--rw dr-priority? uint32 {intf-dr-priority}? | |||
+--rw hello-interval? rt-types:timer-value-seconds16 | +--rw hello-interval? rt-types:timer-value-seconds16 | |||
skipping to change at line 617 ¶ | skipping to change at line 600 ¶ | |||
| {intf-propagation-delay}? | | {intf-propagation-delay}? | |||
+--ro oper-status? enumeration | +--ro oper-status? enumeration | |||
+--ro gen-id? uint32 | +--ro gen-id? uint32 | |||
+--ro hello-expiration? rt-types:timer-value-seconds16 | +--ro hello-expiration? rt-types:timer-value-seconds16 | |||
+--ro ipv4 | +--ro ipv4 | |||
| +--ro address* inet:ipv4-address | | +--ro address* inet:ipv4-address | |||
| +--ro dr-address? inet:ipv4-address | | +--ro dr-address? inet:ipv4-address | |||
+--ro ipv6 | +--ro ipv6 | |||
| +--ro address* inet:ipv6-address | | +--ro address* inet:ipv6-address | |||
| +--ro dr-address? inet:ipv6-address | | +--ro dr-address? inet:ipv6-address | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
<t> | Support for BFD client configuration is achieved by using a grouping pro | |||
The support for bfd is achieved by using a grouping provided | vided | |||
by an external module ietf-bfd-types, defined in | by an external module, "ietf-bfd-types", as defined in | |||
<xref target="I-D.ietf-bfd-yang"/>. | <xref target="RFC9314" format="default"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Neighbor Modeling"> | <name>Neighbor Modeling</name> | |||
<t> | <t> | |||
For each PIM interface, there can be a list of neighbors, | For each PIM interface, there can be a list of neighbors | |||
which contain operational state data. To model such data, the | that contains operational state data for each neighbor. | |||
following structure is specified: | To model such data, the | |||
</t> | following structure is specified: | |||
</t> | ||||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
+--rw pim! | +--rw pim! | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
+--ro neighbors | +--ro neighbors | |||
+--ro ipv4-neighbor* [address] | +--ro ipv4-neighbor* [address] | |||
| +--ro address inet:ipv4-address | | +--ro address inet:ipv4-address | |||
| +--ro bfd-status? enumeration | | +--ro bfd-status? enumeration | |||
| +--ro expiration? | | +--ro expiration? | |||
| | rt-types:timer-value-seconds16 | | | rt-types:timer-value-seconds16 | |||
skipping to change at line 666 ¶ | skipping to change at line 647 ¶ | |||
+--ro expiration? | +--ro expiration? | |||
| rt-types:timer-value-seconds16 | | rt-types:timer-value-seconds16 | |||
+--ro dr-priority? uint32 | +--ro dr-priority? uint32 | |||
+--ro gen-id? uint32 | +--ro gen-id? uint32 | |||
+--ro lan-prune-delay | +--ro lan-prune-delay | |||
| +--ro present? boolean | | +--ro present? boolean | |||
| +--ro override-interval? uint16 | | +--ro override-interval? uint16 | |||
| +--ro propagation-delay? uint16 | | +--ro propagation-delay? uint16 | |||
| +--ro t-bit? boolean | | +--ro t-bit? boolean | |||
+--ro up-time? rt-types:timeticks64 | +--ro up-time? rt-types:timeticks64 | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="Notifications"> | <name>Notifications</name> | |||
<t> | <t> | |||
The PIM base module also defines the notifications for PIM | The PIM base module also defines the notifications for PIM | |||
interface and neighbor events, as shown below: | interface and neighbor events, as shown below: | |||
</t> | </t> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
<figure><artwork> | ||||
<![CDATA[ | ||||
notifications: | notifications: | |||
+---n pim-neighbor-event | +---n pim-neighbor-event | |||
| +--ro event-type? neighbor-event-type | | +--ro event-type? neighbor-event-type | |||
| +--ro interface-ref? leafref | | +--ro interface-ref? leafref | |||
| +--ro interface-af-ref? leafref | | +--ro interface-af-ref? leafref | |||
| +--ro neighbor-ipv4-ref? leafref | | +--ro neighbor-ipv4-ref? leafref | |||
| +--ro neighbor-ipv6-ref? leafref | | +--ro neighbor-ipv6-ref? leafref | |||
| +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64 | |||
+---n pim-interface-event | +---n pim-interface-event | |||
+--ro event-type? interface-event-type | +--ro event-type? interface-event-type | |||
+--ro interface-ref? leafref | +--ro interface-ref? leafref | |||
+--ro ipv4 | +--ro ipv4 | |||
| +--ro address* inet:ipv4-address | | +--ro address* inet:ipv4-address | |||
| +--ro dr-address? inet:ipv4-address | | +--ro dr-address? inet:ipv4-address | |||
+--ro ipv6 | +--ro ipv6 | |||
+--ro address* inet:ipv6-address | +--ro address* inet:ipv6-address | |||
+--ro dr-address? inet:ipv6-address | +--ro dr-address? inet:ipv6-address | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="PIM RP Module"> | <name>PIM RP Module</name> | |||
<t> | <t> | |||
The PIM RP module augments the PIM base module to define | The PIM RP module augments the PIM base module to define | |||
the configuration and operational state information scoped to RP | the configuration and operational state information scoped to | |||
related features: | RP-related features: | |||
</t> | </t> | |||
<figure><artwork> | ||||
<![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-pim-rp | module: ietf-pim-rp | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw rp | +--rw rp | |||
+--rw static-rp | +--rw static-rp | |||
... | ... | |||
+--rw bsr {bsr}? | +--rw bsr {bsr}? | |||
... | ... | |||
+--ro rp-list | +--ro rp-list | |||
... | ... | |||
+--ro rp-mappings | +--ro rp-mappings | |||
... | ... | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
<t> | This module is shared by PIM-SM and BIDIR-PIM mode but is not shared | |||
This module is shared by the PIM-SM mode and | by PIM-DM. The PIM-SM module and the BIDIR-PIM module augment | |||
the PIM-BIDIR mode, but not by the PIM-DM mode. PIM-SM module | this module to cover mode-specific data. | |||
and PIM-BIDIR module augment this module to cover mode specific | </t> | |||
data. | <t> | |||
</t> | ||||
<t> | ||||
The following sections describe the features and capabilities | The following sections describe the features and capabilities | |||
covered in this module. | covered in this module. | |||
</t> | </t> | |||
<section title="Static RP"> | <section numbered="true" toc="default"> | |||
<t> | <name>Static RPs</name> | |||
Static RPs can be configured by using the following portion of | <t> | |||
the module: | Static RPs can be configured by using the following portion of | |||
</t> | the module: | |||
</t> | ||||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
+--rw rp | +--rw rp | |||
+--rw static-rp | +--rw static-rp | |||
| +--rw ipv4-rp* [rp-address] | | +--rw ipv4-rp* [rp-address] | |||
| | +--rw rp-address inet:ipv4-address | | | +--rw rp-address inet:ipv4-address | |||
| +--rw ipv6-rp* [rp-address] | | +--rw ipv6-rp* [rp-address] | |||
| +--rw rp-address inet:ipv6-address | | +--rw rp-address inet:ipv6-address | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>BSRs</name> | ||||
<section title="BSR"> | <t> | |||
<t> | Support for BSRs includes both configuration data and | |||
The support for BSR includes both configuration data and | operational state data, as shown below: | |||
operational state data, as shown below: | </t> | |||
</t> | <sourcecode type="yangtree"><![CDATA[ | |||
<figure><artwork> | ||||
<![CDATA[ | ||||
+--rw rp | +--rw rp | |||
+--rw bsr {bsr}? | +--rw bsr {bsr}? | |||
| +--rw bsr-candidate! | | +--rw bsr-candidate! | |||
| | +--rw (interface-or-address)? | | | +--rw (interface-or-address)? | |||
| | | +--:(interface) {candidate-interface}? | | | | +--:(interface) {candidate-interface}? | |||
| | | | +--rw interface if:interface-ref | | | | | +--rw interface if:interface-ref | |||
| | | +--:(ipv4-address) {candidate-ipv4}? | | | | +--:(ipv4-address) {candidate-ipv4}? | |||
| | | | +--rw ipv4-address inet:ipv4-address | | | | | +--rw ipv4-address inet:ipv4-address | |||
| | | +--:(ipv6-address) {candidate-ipv6}? | | | | +--:(ipv6-address) {candidate-ipv6}? | |||
| | | +--rw ipv6-address inet:ipv6-address | | | | +--rw ipv6-address inet:ipv6-address | |||
skipping to change at line 797 ¶ | skipping to change at line 770 ¶ | |||
| | +--:(candidate) | | | +--:(candidate) | |||
| | | +--ro candidate-bsr-state? enumeration | | | | +--ro candidate-bsr-state? enumeration | |||
| | +--:(non-candidate) | | | +--:(non-candidate) | |||
| | +--ro non-candidate-bsr-state? enumeration | | | +--ro non-candidate-bsr-state? enumeration | |||
| +--ro bsr-next-bootstrap? uint16 | | +--ro bsr-next-bootstrap? uint16 | |||
| +--ro rp | | +--ro rp | |||
| | +--ro rp-address? inet:ip-address | | | +--ro rp-address? inet:ip-address | |||
| | +--ro policy-name? string | | | +--ro policy-name? string | |||
| | +--ro up-time? rt-types:timeticks64 | | | +--ro up-time? rt-types:timeticks64 | |||
| +--ro rp-candidate-next-advertisement? uint16 | | +--ro rp-candidate-next-advertisement? uint16 | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>RP State Data</name> | ||||
<section title="RP State Data"> | <t> | |||
<t> | This portion of the model provides the operational state | |||
This portion of the model provides the operational state | information for all RPs on the router, including the statically | |||
information for all RPs on the router, including the statically | configured RPs and the BSR-elected RPs. | |||
configured RPs and the BSR elected RPs. | </t> | |||
</t> | <sourcecode type="yangtree"><![CDATA[ | |||
<figure><artwork> | ||||
<![CDATA[ | ||||
+--rw rp | +--rw rp | |||
+--ro rp-list | +--ro rp-list | |||
| +--ro ipv4-rp* [rp-address mode] | | +--ro ipv4-rp* [rp-address mode] | |||
| | +--ro rp-address inet:ipv4-address | | | +--ro rp-address inet:ipv4-address | |||
| | +--ro mode identityref | | | +--ro mode identityref | |||
| | +--ro info-source-address? inet:ipv4-address | | | +--ro info-source-address? inet:ipv4-address | |||
| | +--ro info-source-type? identityref | | | +--ro info-source-type? identityref | |||
| | +--ro up-time? rt-types:timeticks64 | | | +--ro up-time? rt-types:timeticks64 | |||
| | +--ro expiration? rt-types:timer-value-seconds16 | | | +--ro expiration? rt-types:timer-value-seconds16 | |||
| +--ro ipv6-rp* [rp-address mode] | | +--ro ipv6-rp* [rp-address mode] | |||
| +--ro rp-address inet:ipv6-address | | +--ro rp-address inet:ipv6-address | |||
| +--ro mode identityref | | +--ro mode identityref | |||
| +--ro info-source-address? inet:ipv6-address | | +--ro info-source-address? inet:ipv6-address | |||
| +--ro info-source-type? identityref | | +--ro info-source-type? identityref | |||
| +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64 | |||
| +--ro expiration? rt-types:timer-value-seconds16 | | +--ro expiration? rt-types:timer-value-seconds16 | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>RP-to-Group Mappings</name> | ||||
<section title="RP to Group Mappings"> | <t> | |||
<t> | The operational state data of the mappings between RPs and | |||
The operational state data of the mappings between RPs and | multicast groups is modeled as follows: | |||
multicast groups is modeled as follows: | </t> | |||
</t> | <sourcecode type="yangtree"><![CDATA[ | |||
<figure><artwork> | ||||
<![CDATA[ | ||||
+--rw rp | +--rw rp | |||
+--ro rp-mappings | +--ro rp-mappings | |||
+--ro ipv4-rp* [group rp-address] | +--ro ipv4-rp* [group rp-address] | |||
| +--ro group inet:ipv4-prefix | | +--ro group inet:ipv4-prefix | |||
| +--ro rp-address inet:ipv4-address | | +--ro rp-address inet:ipv4-address | |||
| +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64 | |||
| +--ro expiration? rt-types:timer-value-seconds16 | | +--ro expiration? rt-types:timer-value-seconds16 | |||
+--ro ipv6-rp* [group rp-address] | +--ro ipv6-rp* [group rp-address] | |||
+--ro group inet:ipv6-prefix | +--ro group inet:ipv6-prefix | |||
+--ro rp-address inet:ipv6-address | +--ro rp-address inet:ipv6-address | |||
+--ro up-time? rt-types:timeticks64 | +--ro up-time? rt-types:timeticks64 | |||
+--ro expiration? rt-types:timer-value-seconds16 | +--ro expiration? rt-types:timer-value-seconds16 | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>Notifications</name> | ||||
<section title="Notifications"> | <t> | |||
<t> | The PIM RP module also defines the notifications for RP-related | |||
The PIM RP module also defines the notifications for RP related | events, as shown below: | |||
events, as shown below: | </t> | |||
</t> | <sourcecode type="yangtree"><![CDATA[ | |||
<figure><artwork> | ||||
<![CDATA[ | ||||
notifications: | notifications: | |||
+---n pim-rp-event | +---n pim-rp-event | |||
+--ro event-type? rp-event-type | +--ro event-type? rp-event-type | |||
+--ro instance-af-ref? leafref | +--ro instance-af-ref? leafref | |||
+--ro group? rt-types:ip-multicast-group-address | +--ro group? rt-types:ip-multicast-group-address | |||
+--ro rp-address? inet:ip-address | +--ro rp-address? inet:ip-address | |||
+--ro is-rpt? boolean | +--ro is-rpt? boolean | |||
+--ro mode? pim-base:pim-mode | +--ro mode? pim-base:pim-mode | |||
+--ro message-origin? inet:ip-address | +--ro message-origin? inet:ip-address | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="PIM-SM Module"> | <name>PIM-SM Module</name> | |||
<t> | <t> | |||
The PIM-SM module covers Sparse Mode modeling, including PIM-ASM | The PIM-SM module covers Sparse Mode modeling, including | |||
and PIM-SSM. This module has dependencies on PIM base module and PIM | PIM Any-Source Multicast (PIM-ASM) and PIM Source-Specific Multicast | |||
RP module, both of which are augmented by this module. | (PIM-SSM). This module has dependencies on the PIM base module and the | |||
</t> | PIM RP module, both of which are augmented by this module. | |||
<t> | </t> | |||
The augmentation to the address-family branch of the PIM base | <t> | |||
The augmentation to the "address-family" branch of the PIM base | ||||
module is shown below: | module is shown below: | |||
</t> | </t> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
module: ietf-pim-sm | module: ietf-pim-sm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw sm | +--rw sm | |||
+--rw asm | +--rw asm | |||
| +--rw anycast-rp! | | +--rw anycast-rp! | |||
| | +--rw ipv4-anycast-rp* [anycast-address rp-address] | | | +--rw ipv4-anycast-rp* [anycast-address rp-address] | |||
| | | +--rw anycast-address inet:ipv4-address | | | | +--rw anycast-address inet:ipv4-address | |||
| | | +--rw rp-address inet:ipv4-address | | | | +--rw rp-address inet:ipv4-address | |||
| | +--rw ipv6-anycast-rp* [anycast-address rp-address] | | | +--rw ipv6-anycast-rp* [anycast-address rp-address] | |||
| | +--rw anycast-address inet:ipv6-address | | | +--rw anycast-address inet:ipv6-address | |||
| | +--rw rp-address inet:ipv6-address | | | +--rw rp-address inet:ipv6-address | |||
| +--rw spt-switch | | +--rw spt-switch | |||
| +--rw infinity! {spt-switch-infinity}? | | +--rw infinity! {spt-switch-infinity}? | |||
| +--rw policy-name? string {spt-switch-policy}? | | +--rw policy-name? string {spt-switch-policy}? | |||
+--rw ssm! | +--rw ssm! | |||
+--rw range-policy? string | +--rw range-policy? string | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
To support PIM-SM on an interface, this module augments the | ||||
<t> | "interface" branch of the PIM base module, as follows: | |||
To support SM mode on an interface, this module augments the | </t> | |||
interface branch of the PIM base module, as follows: | <sourcecode type="yangtree"><![CDATA[ | |||
</t> | ||||
<figure><artwork> | ||||
<![CDATA[ | ||||
module: ietf-pim-sm | module: ietf-pim-sm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface/pim-base:address-family: | /pim-base:interfaces/pim-base:interface/pim-base:address-family: | |||
+--rw sm! | +--rw sm! | |||
+--rw passive? empty | +--rw passive? empty | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
<t> | ||||
This module also augments the PIM RP module to allow an RP to be | This module also augments the PIM RP module to allow an RP to be | |||
configured in the PIM-SM mode: | configured in PIM-SM: | |||
</t> | </t> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
module: ietf-pim-sm | module: ietf-pim-sm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp: | /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp: | |||
+--rw sm! | +--rw sm! | |||
+--rw policy-name? string | +--rw policy-name? string | |||
+--rw override? boolean {static-rp-override}? | +--rw override? boolean {static-rp-override}? | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp: | /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp: | |||
+--rw sm! | +--rw sm! | |||
+--rw policy-name? string | +--rw policy-name? string | |||
+--rw override? boolean {static-rp-override}? | +--rw override? boolean {static-rp-override}? | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
<section numbered="true" toc="default"> | ||||
</section> | <name>PIM-DM Module</name> | |||
<section title="PIM-DM Module"> | <t> | |||
<t> | ||||
The PIM-DM module covers Dense Mode modeling. This module | The PIM-DM module covers Dense Mode modeling. This module | |||
augments the PIM base module, but it has no dependency on the | augments the PIM base module, but it has no dependency on the | |||
PIM RP module. | PIM RP module. | |||
</t> | </t> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-pim-dm | module: ietf-pim-dm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw dm! | +--rw dm! | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface | /pim-base:interfaces/pim-base:interface | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw dm! | +--rw dm! | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
<section title="PIM-BIDIR Module"> | <section numbered="true" toc="default"> | |||
<t> | <name>BIDIR-PIM Module</name> | |||
The PIM-BIDIR module covers Bidirectional PIM modeling. | <t> | |||
Like PIM-SM, this module augments both PIM base module and PIM | The BIDIR-PIM module covers Bidirectional PIM modeling. | |||
RP module. | Like PIM-SM, this module augments both the PIM base module and | |||
</t> | the PIM RP module. | |||
<t> | </t> | |||
The followings are the augmentations to the PIM base module, on | <t> | |||
the address-family, the interface, and the neighbor branches: | The augmentations to the PIM base module, on | |||
</t> | the "address-family", "interface", and "neighbor" branches, | |||
<figure><artwork> | are as follows: | |||
<![CDATA[ | </t> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-pim-bidir | module: ietf-pim-bidir | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw bidir! | +--rw bidir! | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface/pim-base:address-family: | /pim-base:interfaces/pim-base:interface/pim-base:address-family: | |||
+--rw bidir! | +--rw bidir! | |||
+--rw df-election {intf-df-election}? | +--rw df-election {intf-df-election}? | |||
+--rw offer-interval? uint16 | +--rw offer-interval? uint16 | |||
skipping to change at line 994 ¶ | skipping to change at line 951 ¶ | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface/pim-base:address-family | /pim-base:interfaces/pim-base:interface/pim-base:address-family | |||
/pim-base:neighbors/pim-base:ipv4-neighbor: | /pim-base:neighbors/pim-base:ipv4-neighbor: | |||
+--ro bidir-capable? boolean | +--ro bidir-capable? boolean | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface/pim-base:address-family | /pim-base:interfaces/pim-base:interface/pim-base:address-family | |||
/pim-base:neighbors/pim-base:ipv6-neighbor: | /pim-base:neighbors/pim-base:ipv6-neighbor: | |||
+--ro bidir-capable? boolean | +--ro bidir-capable? boolean | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | <t> | |||
<t> | ||||
This module also augments the PIM RP module to extend the | This module also augments the PIM RP module to extend the | |||
capabilities of RP for the PIM-BIDIR mode: | capabilities of RPs for BIDIR-PIM mode: | |||
</t> | </t> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
<![CDATA[ | ||||
module: ietf-pim-bidir | module: ietf-pim-bidir | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp: | /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp: | |||
+--rw bidir! | +--rw bidir! | |||
+--rw policy-name? string | +--rw policy-name? string | |||
+--rw override? boolean {static-rp-override}? | +--rw override? boolean {static-rp-override}? | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp: | /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp: | |||
+--rw bidir! | +--rw bidir! | |||
skipping to change at line 1041 ¶ | skipping to change at line 995 ¶ | |||
| +--ro winner-metric? uint32 | | +--ro winner-metric? uint32 | |||
| +--ro winner-metric-preference? uint32 | | +--ro winner-metric-preference? uint32 | |||
+--ro ipv6-rp* [rp-address interface-name] | +--ro ipv6-rp* [rp-address interface-name] | |||
+--ro rp-address inet:ipv6-address | +--ro rp-address inet:ipv6-address | |||
+--ro interface-name if:interface-ref | +--ro interface-name if:interface-ref | |||
+--ro df-address? inet:ipv6-address | +--ro df-address? inet:ipv6-address | |||
+--ro interface-state? identityref | +--ro interface-state? identityref | |||
+--ro up-time? rt-types:timeticks64 | +--ro up-time? rt-types:timeticks64 | |||
+--ro winner-metric? uint32 | +--ro winner-metric? uint32 | |||
+--ro winner-metric-preference? uint32 | +--ro winner-metric-preference? uint32 | |||
]]> | ]]></sourcecode> | |||
</artwork></figure> | </section> | |||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>Complete Tree Structure</name> | ||||
<section title="Complete Tree Structure"> | <section numbered="true" toc="default"> | |||
<section title="PIM Base Module"> | <name>PIM Base Module</name> | |||
<figure><artwork> | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-pim-base | module: ietf-pim-base | |||
augment /rt:routing/rt:control-plane-protocols: | augment /rt:routing/rt:control-plane-protocols: | |||
+--rw pim! | +--rw pim! | |||
+--rw graceful-restart | +--rw graceful-restart | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw duration? uint16 | | +--rw duration? uint16 | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
| +--rw address-family identityref | | +--rw address-family identityref | |||
| +--rw graceful-restart | | +--rw graceful-restart | |||
| | +--rw enabled? boolean | | | +--rw enabled? boolean | |||
skipping to change at line 1151 ¶ | skipping to change at line 1104 ¶ | |||
| +--ro name if:interface-ref | | +--ro name if:interface-ref | |||
| +--ro expiration? rt-types:timer-value-seconds16 | | +--ro expiration? rt-types:timer-value-seconds16 | |||
| +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64 | |||
| +--ro jp-state? enumeration | | +--ro jp-state? enumeration | |||
+--rw interfaces | +--rw interfaces | |||
+--rw interface* [name] | +--rw interface* [name] | |||
+--rw name if:interface-ref | +--rw name if:interface-ref | |||
+--rw address-family* [address-family] | +--rw address-family* [address-family] | |||
+--rw address-family identityref | +--rw address-family identityref | |||
+--rw bfd {bfd}? | +--rw bfd {bfd}? | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
| +--rw local-multiplier? multiplier | | +--rw local-multiplier? multiplier | |||
| +--rw (interval-config-type)? | | +--rw (interval-config-type)? | |||
| +--:(tx-rx-intervals) | | +--:(tx-rx-intervals) | |||
| | +--rw desired-min-tx-interval uint32 | | | +--rw desired-min-tx-interval? uint32 | |||
| | +--rw required-min-rx-interval uint32 | | | +--rw required-min-rx-interval? uint32 | |||
| +--:(single-interval) | | +--:(single-interval) | |||
| +--rw min-interval uint32 | | {single-minimum-interval}? | |||
| +--rw min-interval? uint32 | ||||
+--rw dr-priority? uint32 | +--rw dr-priority? uint32 | |||
| {intf-dr-priority}? | | {intf-dr-priority}? | |||
+--rw hello-interval? | +--rw hello-interval? | |||
| rt-types:timer-value-seconds16 | | rt-types:timer-value-seconds16 | |||
| {intf-hello-interval}? | | {intf-hello-interval}? | |||
+--rw (hello-holdtime-or-multiplier)? | +--rw (hello-holdtime-or-multiplier)? | |||
| +--:(holdtime) {intf-hello-holdtime}? | | +--:(holdtime) {intf-hello-holdtime}? | |||
| | +--rw hello-holdtime? | | | +--rw hello-holdtime? | |||
| | rt-types:timer-value-seconds16 | | | rt-types:timer-value-seconds16 | |||
| +--:(multiplier) {intf-hello-multiplier}? | | +--:(multiplier) {intf-hello-multiplier}? | |||
skipping to change at line 1240 ¶ | skipping to change at line 1194 ¶ | |||
| +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64 | |||
+---n pim-interface-event | +---n pim-interface-event | |||
+--ro event-type? interface-event-type | +--ro event-type? interface-event-type | |||
+--ro interface-ref? leafref | +--ro interface-ref? leafref | |||
+--ro ipv4 | +--ro ipv4 | |||
| +--ro address* inet:ipv4-address | | +--ro address* inet:ipv4-address | |||
| +--ro dr-address? inet:ipv4-address | | +--ro dr-address? inet:ipv4-address | |||
+--ro ipv6 | +--ro ipv6 | |||
+--ro address* inet:ipv6-address | +--ro address* inet:ipv6-address | |||
+--ro dr-address? inet:ipv6-address | +--ro dr-address? inet:ipv6-address | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
<section title="PIM RP Module"> | <section numbered="true" toc="default"> | |||
<figure><artwork> | <name>PIM RP Module</name> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-pim-rp | module: ietf-pim-rp | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw rp | +--rw rp | |||
+--rw static-rp | +--rw static-rp | |||
| +--rw ipv4-rp* [rp-address] | | +--rw ipv4-rp* [rp-address] | |||
| | +--rw rp-address inet:ipv4-address | | | +--rw rp-address inet:ipv4-address | |||
| +--rw ipv6-rp* [rp-address] | | +--rw ipv6-rp* [rp-address] | |||
| +--rw rp-address inet:ipv6-address | | +--rw rp-address inet:ipv6-address | |||
+--rw bsr {bsr}? | +--rw bsr {bsr}? | |||
skipping to change at line 1332 ¶ | skipping to change at line 1286 ¶ | |||
notifications: | notifications: | |||
+---n pim-rp-event | +---n pim-rp-event | |||
+--ro event-type? rp-event-type | +--ro event-type? rp-event-type | |||
+--ro instance-af-ref? leafref | +--ro instance-af-ref? leafref | |||
+--ro group? rt-types:ip-multicast-group-address | +--ro group? rt-types:ip-multicast-group-address | |||
+--ro rp-address? inet:ip-address | +--ro rp-address? inet:ip-address | |||
+--ro is-rpt? boolean | +--ro is-rpt? boolean | |||
+--ro mode? identityref | +--ro mode? identityref | |||
+--ro message-origin? inet:ip-address | +--ro message-origin? inet:ip-address | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
<section title="PIM-SM Module"> | <section numbered="true" toc="default"> | |||
<figure><artwork> | <name>PIM-SM Module</name> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-pim-sm | module: ietf-pim-sm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw sm | +--rw sm | |||
+--rw asm | +--rw asm | |||
| +--rw anycast-rp! | | +--rw anycast-rp! | |||
| | +--rw ipv4-anycast-rp* [anycast-address rp-address] | | | +--rw ipv4-anycast-rp* [anycast-address rp-address] | |||
| | | +--rw anycast-address inet:ipv4-address | | | | +--rw anycast-address inet:ipv4-address | |||
| | | +--rw rp-address inet:ipv4-address | | | | +--rw rp-address inet:ipv4-address | |||
| | +--rw ipv6-anycast-rp* [anycast-address rp-address] | | | +--rw ipv6-anycast-rp* [anycast-address rp-address] | |||
skipping to change at line 1371 ¶ | skipping to change at line 1325 ¶ | |||
/pim-rp:ipv4-rp: | /pim-rp:ipv4-rp: | |||
+--rw sm! | +--rw sm! | |||
+--rw policy-name? string | +--rw policy-name? string | |||
+--rw override? boolean {static-rp-override}? | +--rw override? boolean {static-rp-override}? | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp | /pim-base:address-family/pim-rp:rp/pim-rp:static-rp | |||
/pim-rp:ipv6-rp: | /pim-rp:ipv6-rp: | |||
+--rw sm! | +--rw sm! | |||
+--rw policy-name? string | +--rw policy-name? string | |||
+--rw override? boolean {static-rp-override}? | +--rw override? boolean {static-rp-override}? | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
<section title="PIM-DM Module"> | <section numbered="true" toc="default"> | |||
<figure><artwork> | <name>PIM-DM Module</name> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-pim-dm | module: ietf-pim-dm | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw dm! | +--rw dm! | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface | /pim-base:interfaces/pim-base:interface | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw dm! | +--rw dm! | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
<section title="PIM-BIDIR Module"> | <section numbered="true" toc="default"> | |||
<figure><artwork> | <name>BIDIR-PIM Module</name> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-pim-bidir | module: ietf-pim-bidir | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw bidir! | +--rw bidir! | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface | /pim-base:interfaces/pim-base:interface | |||
/pim-base:address-family: | /pim-base:address-family: | |||
+--rw bidir! | +--rw bidir! | |||
+--rw df-election {intf-df-election}? | +--rw df-election {intf-df-election}? | |||
+--rw offer-interval? uint16 | +--rw offer-interval? uint16 | |||
skipping to change at line 1448 ¶ | skipping to change at line 1402 ¶ | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface | /pim-base:interfaces/pim-base:interface | |||
/pim-base:address-family/pim-base:neighbors | /pim-base:address-family/pim-base:neighbors | |||
/pim-base:ipv4-neighbor: | /pim-base:ipv4-neighbor: | |||
+--ro bidir-capable? boolean | +--ro bidir-capable? boolean | |||
augment /rt:routing/rt:control-plane-protocols/pim-base:pim | augment /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
/pim-base:interfaces/pim-base:interface | /pim-base:interfaces/pim-base:interface | |||
/pim-base:address-family/pim-base:neighbors | /pim-base:address-family/pim-base:neighbors | |||
/pim-base:ipv6-neighbor: | /pim-base:ipv6-neighbor: | |||
+--ro bidir-capable? boolean | +--ro bidir-capable? boolean | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Relationship to the PIM-STD-MIB"> | <name>Relationship to the PIM-STD-MIB</name> | |||
<t> | <t> | |||
The following sections describe the mappings between the | The following sections describe the mappings between the | |||
objects in the PIM-STD-MIB defined in | objects in the PIM-STD-MIB defined in | |||
<xref target="RFC5060"/> and the YANG data nodes defined in | <xref target="RFC5060" format="default"/> and the YANG data nodes define | |||
this document. | d in | |||
this document. | ||||
</t> | </t> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimInterfaceTable"> | <name>pimInterfaceTable</name> | |||
<t> | <t> | |||
pimInterfaceTable is mapped to pim/interfaces/interface. | pimInterfaceTable is mapped to pim/interfaces/interface. | |||
The key of pimInterfaceTable is pimInterfaceIfIndex and | The key of pimInterfaceTable is pimInterfaceIfIndex and | |||
pimInterfaceIPVersion, while the key of the "interface" | pimInterfaceIPVersion, while the key of the "interface" | |||
list in YANG is the node "name". For each value of | list in YANG is the node "name". For each value of | |||
pimInterfaceIPVersion, the "interface" list contains a | pimInterfaceIPVersion, the "interface" list contains a | |||
corresponding sublist whose key is the node "address-family". | corresponding sublist whose key is the node "address-family". | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_yang_and_mib"/> lists the YANG data nodes with | |||
The following table lists the YANG data nodes with | corresponding objects of pimInterfaceTable in the PIM-STD-MIB. | |||
corresponding objects of pimInterfaceTable in the PIM-STD-MIB. | </t> | |||
</t> | <table anchor="table_yang_and_mib" align="center"> | |||
<name>YANG Nodes and pimInterfaceTable Objects</name> | ||||
<texttable anchor='table_yang_and_mib' | <thead> | |||
title="YANG Nodes and pimInterfaceTable Objects"> | <tr> | |||
<ttcol>YANG node</ttcol> | <th align="left">YANG Node</th> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">PIM-STD-MIB Object</th> | |||
</tr> | ||||
<c>address-family</c> | </thead> | |||
<c>pimInterfaceAddressType</c> | <tbody> | |||
<tr> | ||||
<c>ipv4/address</c> | <td align="left">address-family</td> | |||
<c>pimInterfaceAddress</c> | <td align="left">pimInterfaceAddressType</td> | |||
</tr> | ||||
<c>ipv6/address</c> | <tr> | |||
<c></c> | <td align="left">ipv4/address</td> | |||
<td rowspan="2" align="left">pimInterfaceAddress</td> | ||||
<c>gen-id</c> | </tr> | |||
<c>pimInterfaceGenerationIDValue</c> | <tr> | |||
<td align="left">ipv6/address</td> | ||||
<c>ipv4/dr-address</c> | </tr> | |||
<c>pimInterfaceDR</c> | <tr> | |||
<td align="left">gen-id</td> | ||||
<c>ipv6/dr-address</c> | <td align="left">pimInterfaceGenerationIDValue</td> | |||
<c></c> | </tr> | |||
<tr> | ||||
<c>dr-priority</c> | <td align="left">ipv4/dr-address</td> | |||
<c>pimInterfaceDRPriority</c> | <td rowspan="2" align="left">pimInterfaceDR</td> | |||
</tr> | ||||
<c>hello-interval</c> | <tr> | |||
<c>pimInterfaceHelloInterval</c> | <td align="left">ipv6/dr-address</td> | |||
</tr> | ||||
<c>hello-holdtime</c> | <tr> | |||
<c>pimInterfaceHelloHoldtime</c> | <td align="left">dr-priority</td> | |||
<td align="left">pimInterfaceDRPriority</td> | ||||
<c>jp-interval</c> | </tr> | |||
<c>pimInterfaceJoinPruneInterval</c> | <tr> | |||
<td align="left">hello-interval</td> | ||||
<c>jp-holdtime</c> | <td align="left">pimInterfaceHelloInterval</td> | |||
<c>pimInterfaceJoinPruneHoldtime</c> | </tr> | |||
<tr> | ||||
<c>bidir/offer-multiplier</c> | <td align="left">hello-holdtime</td> | |||
<c>pimInterfaceDFElectionRobustness</c> | <td align="left">pimInterfaceHelloHoldtime</td> | |||
</tr> | ||||
<c>propagation-delay</c> | <tr> | |||
<c>pimInterfacePropagationDelay</c> | <td align="left">jp-interval</td> | |||
<td align="left">pimInterfaceJoinPruneInterval</td> | ||||
<c>override-interval</c> | </tr> | |||
<c>pimInterfaceOverrideInterval</c> | <tr> | |||
</texttable> | <td align="left">jp-holdtime</td> | |||
<td align="left">pimInterfaceJoinPruneHoldtime</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">bidir/offer-multiplier</td> | ||||
<td align="left">pimInterfaceDFElectionRobustness</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">propagation-delay</td> | ||||
<td align="left">pimInterfacePropagationDelay</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">override-interval</td> | ||||
<td align="left">pimInterfaceOverrideInterval</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimNeighborTable"> | <name>pimNeighborTable</name> | |||
<t> | <t> | |||
pimNeighborTable is mapped to | pimNeighborTable is mapped to | |||
pim/interfaces/interface/neighbors/ipv4-neighbor and | pim/interfaces/interface/neighbors/ipv4-neighbor and | |||
pim/interfaces/interface/neighbors/ipv6-neighbor. | pim/interfaces/interface/neighbors/ipv6-neighbor. | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimNeighborTable"/> lists the YANG data nodes | |||
The following table lists the YANG data nodes with | with | |||
corresponding objects of pimNeighborTable in the PIM-STD-MIB. | corresponding objects of pimNeighborTable in the PIM-STD-MIB. | |||
</t> | </t> | |||
<table anchor="table_mib_pimNeighborTable" align="center"> | ||||
<texttable anchor='table_mib_pimNeighborTable' | <name>YANG Nodes and pimNeighborTable Objects</name> | |||
title="YANG Nodes and pimNeighborTable Objects"> | <thead> | |||
<ttcol>YANG node</ttcol> | <tr> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">YANG Node</th> | |||
<th align="left">PIM-STD-MIB Object</th> | ||||
<c>ipv4-neighbor</c> | </tr> | |||
<c>pimNeighborAddressType</c> | </thead> | |||
<tbody> | ||||
<c>ipv6-neighbor</c> | <tr> | |||
<c></c> | <td align="left">ipv4-neighbor</td> | |||
<td rowspan="2" align="left">pimNeighborAddressType</td> | ||||
<c>address</c> | </tr> | |||
<c>pimNeighborAddress</c> | <tr> | |||
<td align="left">ipv6-neighbor</td> | ||||
<c>gen-id</c> | </tr> | |||
<c>pimNeighborGenerationIDValue</c> | <tr> | |||
<td align="left">address</td> | ||||
<c>up-time</c> | <td align="left">pimNeighborAddress</td> | |||
<c>pimNeighborUpTime</c> | </tr> | |||
<tr> | ||||
<c>expiration</c> | <td align="left">gen-id</td> | |||
<c>pimNeighborExpiryTime</c> | <td align="left">pimNeighborGenerationIDValue</td> | |||
</tr> | ||||
<c>dr-priority</c> | <tr> | |||
<c>pimNeighborDRPriority</c> | <td align="left">up-time</td> | |||
<td align="left">pimNeighborUpTime</td> | ||||
<c>lan-prune-delay/present</c> | </tr> | |||
<c>pimNeighborLanPruneDelayPresent</c> | <tr> | |||
<td align="left">expiration</td> | ||||
<c>lan-prune-delay/t-bit</c> | <td align="left">pimNeighborExpiryTime</td> | |||
<c>pimNeighborTBit</c> | </tr> | |||
<tr> | ||||
<c>lan-prune-delay/</c> | <td align="left">dr-priority</td> | |||
<c>pimNeighborPropagationDelay</c> | <td align="left">pimNeighborDRPriority</td> | |||
</tr> | ||||
<c>propagation-delay</c> | <tr> | |||
<c></c> | <td align="left">lan-prune-delay/present</td> | |||
<td align="left">pimNeighborLanPruneDelayPresent</td> | ||||
<c>lan-prune-delay/</c> | </tr> | |||
<c>pimNeighborOverrideInterval</c> | <tr> | |||
<td align="left">lan-prune-delay/t-bit</td> | ||||
<c>override-interval</c> | <td align="left">pimNeighborTBit</td> | |||
<c></c> | </tr> | |||
<tr> | ||||
<c>ietf-pim-bidir:bidir-capable</c> | <td align="left">lan-prune-delay/propagation-delay</td> | |||
<c>pimNeighborBidirCapable</c> | <td align="left">pimNeighborPropagationDelay</td> | |||
</texttable> | </tr> | |||
<tr> | ||||
<td align="left">lan-prune-delay/override-interval</td> | ||||
<td align="left">pimNeighborOverrideInterval</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ietf-pim-bidir:bidir-capable</td> | ||||
<td align="left">pimNeighborBidirCapable</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>pimStarGTable</name> | ||||
<t> | ||||
pimStarGTable is mapped to | ||||
pim/address-family/topology-tree-info/ipv4-route and | ||||
pim/address-family/topology-tree-info/ipv6-route, when the | ||||
value of the "source-address" leaf is "ietf-routing-types:*" and | ||||
the value of the "is-rpt" leaf is "false". | ||||
</t> | ||||
<t> | ||||
<xref target="table_mib_pimStarGTable"/> lists the YANG data nodes wit | ||||
h | ||||
corresponding objects of pimStarGTable in the PIM-STD-MIB. | ||||
</t> | ||||
<table anchor="table_mib_pimStarGTable" align="center"> | ||||
<name>YANG Nodes and pimStarGTable Objects</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">YANG Node</th> | ||||
<th align="left">PIM-STD-MIB Object</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">ipv4-route</td> | ||||
<td rowspan="2" align="left">pimStarGAddressType</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ipv6-route</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">group</td> | ||||
<td align="left">pimStarGGrpAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">up-time</td> | ||||
<td align="left">pimStarGUpTime</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">mode</td> | ||||
<td align="left">pimStarGPimMode</td> | ||||
</tr> | ||||
<tr> | ||||
<td rowspan="2" align="left">rp-address</td> | ||||
<td align="left">pimStarGRPAddressType</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">pimStarGRPAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td rowspan="2" align="left">rpf-neighbor</td> | ||||
<td align="left">pimStarGUpstreamNeighborType</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">pimStarGUpstreamNeighbor</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">incoming-interface</td> | ||||
<td align="left">pimStarGRPFIfIndex</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section title="pimStarGTable"> | <t> | |||
<t> | In addition, the object "pimStarGPimModeOrigin" in | |||
pimStarGTable is mapped to | pimStarGTable is mapped | |||
pim/address-family/topology-tree-info/ipv4-route and | to the node "rp/rp-list/ipv4-rp/info-source-type" | |||
pim/address-family/topology-tree-info/ipv6-route, when the | or the node "rp/rp-list/ipv6-rp/info-source-type" in the YANG | |||
value of source-address leaf is "ietf-routing-types:*" and | module "ietf&nbhy;pim&nbhy;rp". | |||
the value of is-rpt leaf is "false". | </t> | |||
</t> | ||||
<t> | ||||
The following table lists the YANG data nodes with | ||||
corresponding objects of pimStarGTable in the PIM-STD-MIB. | ||||
</t> | ||||
<texttable anchor='table_mib_pimStarGTable' | ||||
title="YANG Nodes and pimStarGTable Objects"> | ||||
<ttcol>YANG node</ttcol> | ||||
<ttcol>PIM-STD-MIB object</ttcol> | ||||
<c>ipv4-route</c> | ||||
<c>pimStarGAddressType</c> | ||||
<c>ipv6-route</c> | ||||
<c></c> | ||||
<c>group</c> | ||||
<c>pimStarGGrpAddress</c> | ||||
<c>up-time</c> | ||||
<c>pimStarGUpTime</c> | ||||
<c>mode</c> | ||||
<c>pimStarGPimMode</c> | ||||
<c>rp-address</c> | ||||
<c>pimStarGRPAddressType</c> | ||||
<c>rp-address</c> | ||||
<c>pimStarGRPAddress</c> | ||||
<c>rpf-neighbor</c> | ||||
<c>pimStarGUpstreamNeighborType</c> | ||||
<c>rpf-neighbor</c> | ||||
<c>pimStarGUpstreamNeighbor</c> | ||||
<c>incoming-interface</c> | ||||
<c>pimStarGRPFIfIndex</c> | ||||
</texttable> | ||||
<t> | ||||
In addtion, the object pimStarGPimModeOrigin in | ||||
pimStarGTable is mapped | ||||
to the node rp/rp-list/ipv4-rp/info-source-type | ||||
or the node rp/rp-list/ipv6-rp/info-source-type in the YANG | ||||
module ietf-pim-rp. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimSGTable"> | <name>pimSGTable</name> | |||
<t> | <t> | |||
pimSGTable is mapped to | pimSGTable is mapped to | |||
pim/address-family/topology-tree-info/ipv4-route and | pim/address-family/topology-tree-info/ipv4-route and | |||
pim/address-family/topology-tree-info/ipv6-route, when the | pim/address-family/topology-tree-info/ipv6-route, when the | |||
value of source-address leaf is not "ietf-routing-types:*" | value of the "source-address" leaf is not "ietf-routing-types:*" | |||
and the value of is-rpt leaf is "false". | and the value of the "is-rpt" leaf is "false". | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimSGTable"/> lists the YANG data nodes with | |||
The following table lists the YANG data nodes with | corresponding objects of pimSGTable in the PIM-STD-MIB. | |||
corresponding objects of pimSGTable in the PIM-STD-MIB. | </t> | |||
</t> | <table anchor="table_mib_pimSGTable" align="center"> | |||
<name>YANG Nodes and pimSGTable Objects</name> | ||||
<texttable anchor='table_mib_pimSGTable' | <thead> | |||
title="YANG Nodes and pimSGTable Objects"> | <tr> | |||
<ttcol>YANG node</ttcol> | <th align="left">YANG Node</th> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">PIM-STD-MIB Object</th> | |||
</tr> | ||||
<c>ipv4-route</c> | </thead> | |||
<c>pimSGAddressType</c> | <tbody> | |||
<tr> | ||||
<c>ipv6-route</c> | <td align="left">ipv4-route</td> | |||
<c></c> | <td rowspan="2" align="left">pimSGAddressType</td> | |||
</tr> | ||||
<c>group</c> | <tr> | |||
<c>pimSGGrpAddress</c> | <td align="left">ipv6-route</td> | |||
</tr> | ||||
<c>source-address</c> | <tr> | |||
<c>pimSGSrcAddress</c> | <td align="left">group</td> | |||
<td align="left">pimSGGrpAddress</td> | ||||
<c>up-time</c> | </tr> | |||
<c>pimSGUpTime</c> | <tr> | |||
<td align="left">source-address</td> | ||||
<c>mode</c> | <td align="left">pimSGSrcAddress</td> | |||
<c>pimSGPimMode</c> | </tr> | |||
<tr> | ||||
<c>rpf-neighbor</c> | <td align="left">up-time</td> | |||
<c>pimStarGUpstreamNeighbor</c> | <td align="left">pimSGUpTime</td> | |||
</tr> | ||||
<c>incoming-interface</c> | <tr> | |||
<c>pimStarGRPFIfIndex</c> | <td align="left">mode</td> | |||
<td align="left">pimSGPimMode</td> | ||||
<c>is-spt</c> | </tr> | |||
<c>pimSGSPTBit</c> | <tr> | |||
<td align="left">rpf-neighbor</td> | ||||
<c>expiration</c> | <td align="left">pimStarGUpstreamNeighbor</td> | |||
<c>pimSGKeepaliveTimer</c> | </tr> | |||
</texttable> | <tr> | |||
<td align="left">incoming-interface</td> | ||||
<td align="left">pimStarGRPFIfIndex</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">is-spt</td> | ||||
<td align="left">pimSGSPTBit</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">expiration</td> | ||||
<td align="left">pimSGKeepaliveTimer</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimSGRptTable"> | <name>pimSGRptTable</name> | |||
<t> | <t> | |||
pimSGRptTable is mapped to | pimSGRptTable is mapped to | |||
pim/address-family/topology-tree-info/ipv4-route and | pim/address-family/topology-tree-info/ipv4-route and | |||
pim/address-family/topology-tree-info/ipv6-route, when the | pim/address-family/topology-tree-info/ipv6-route, when the | |||
value of is-rpt leaf is "true". | value of the "is-rpt" leaf is "true". | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimSGRptTable"/> lists the YANG data nodes wit | |||
The following table lists the YANG data nodes with | h | |||
corresponding objects of pimSGRptTable in the PIM-STD-MIB. | corresponding objects of pimSGRptTable in the PIM-STD-MIB. | |||
</t> | </t> | |||
<table anchor="table_mib_pimSGRptTable" align="center"> | ||||
<texttable anchor='table_mib_pimSGRptTable' | <name>YANG Nodes and pimSGRptTable Objects</name> | |||
title="YANG Nodes and pimSGRptTable Objects"> | <thead> | |||
<ttcol>YANG node</ttcol> | <tr> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">YANG Node</th> | |||
<th align="left">PIM-STD-MIB Object</th> | ||||
<c>ipv4-route</c> | </tr> | |||
<c>pimStarGAddressType</c> | </thead> | |||
<tbody> | ||||
<c>ipv6-route</c> | <tr> | |||
<c></c> | <td align="left">ipv4-route</td> | |||
<td rowspan="2" align="left">pimStarGAddressType</td> | ||||
<c>group</c> | </tr> | |||
<c>pimStarGGrpAddress</c> | <tr> | |||
<td align="left">ipv6-route</td> | ||||
<c>source-address</c> | </tr> | |||
<c>pimSGRptSrcAddress</c> | <tr> | |||
<td align="left">group</td> | ||||
<c>up-time</c> | <td align="left">pimStarGGrpAddress</td> | |||
<c>pimSGRptUpTime</c> | </tr> | |||
</texttable> | <tr> | |||
<td align="left">source-address</td> | ||||
<td align="left">pimSGRptSrcAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">up-time</td> | ||||
<td align="left">pimSGRptUpTime</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>pimBidirDFElectionTable</name> | ||||
<t> | ||||
pimBidirDFElectionTable is mapped to | ||||
pim/address-family/rp/bidir/interface-df-election/ipv4-rp | ||||
and | ||||
pim/address-family/rp/bidir/interface-df-election/ipv6-rp. | ||||
The key of pimBidirDFElectionTable includes | ||||
pimBidirDFElectionIfIndex, whose type is InterfaceIndex, | ||||
while the YANG lists use a node "name" with the type string | ||||
instead. | ||||
</t> | ||||
<t> | ||||
<xref target="table_mib_pimBidirDFElectionTable"/> lists the YANG data | ||||
nodes with | ||||
corresponding objects of pimBidirDFElectionTable in the PIM-STD-MIB. | ||||
</t> | ||||
<table anchor="table_mib_pimBidirDFElectionTable" align="center"> | ||||
<name>YANG Nodes and pimBidirDFElectionTable Objects</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">YANG Node</th> | ||||
<th align="left">PIM-STD-MIB Object</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">ipv4-rp</td> | ||||
<td rowspan="2" align="left">pimBidirDFElectionAddressType</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ipv6-rp</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">rp-address</td> | ||||
<td align="left">pimBidirDFElectionRPAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td rowspan="2" align="left">df-address</td> | ||||
<td align="left">pimBidirDFElectionWinnerAddressType</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">pimBidirDFElectionWinnerAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">up-time</td> | ||||
<td align="left">pimBidirDFElectionWinnerUpTime</td> | ||||
</tr> | ||||
<tr> | ||||
<td rowspan="2" align="left">winner-metric-preference</td> | ||||
<td align="left">pimBidirDFElectionWinnerMetricPref</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">pimBidirDFElectionWinnerMetric</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">interface-state</td> | ||||
<td align="left">pimBidirDFElectionState</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section title="pimBidirDFElectionTable"> | ||||
<t> | ||||
pimBidirDFElectionTable is mapped to | ||||
pim/address-family/rp/bidir/interface-df-election/ipv4-rp | ||||
and | ||||
pim/address-family/rp/bidir/interface-df-election/ipv6-rp. | ||||
The key of pimBidirDFElectionTable includes | ||||
pimBidirDFElectionIfIndex whose type is InterfaceIndex, | ||||
while the YANG lists use a node "name" with the type string | ||||
instead. | ||||
</t> | ||||
<t> | ||||
The following table lists the YANG data nodes with | ||||
corresponding objects of pimBidirDFElectionTable in the PIM-STD-MIB. | ||||
</t> | ||||
<texttable anchor='table_mib_pimBidirDFElectionTable' | ||||
title="YANG Nodes and pimBidirDFElectionTable Objects"> | ||||
<ttcol>YANG node</ttcol> | ||||
<ttcol>PIM-STD-MIB object</ttcol> | ||||
<c>ipv4-rp</c> | ||||
<c>pimBidirDFElectionAddressType</c> | ||||
<c>ipv6-rp</c> | ||||
<c></c> | ||||
<c>rp-address</c> | ||||
<c>pimBidirDFElectionRPAddress</c> | ||||
<c>df-address</c> | ||||
<c>pimBidirDFElectionWinnerAddressType</c> | ||||
<c></c> | ||||
<c>pimBidirDFElectionWinnerAddress</c> | ||||
<c>up-time</c> | ||||
<c>pimBidirDFElectionWinnerUpTime</c> | ||||
<c>winner-metric-preference</c> | ||||
<c>pimBidirDFElectionWinnerMetricPref</c> | ||||
<c>winner-metric-preference</c> | ||||
<c>pimBidirDFElectionWinnerMetric</c> | ||||
<c>interface-state</c> | ||||
<c>pimBidirDFElectionState</c> | ||||
</texttable> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimStaticRPTable"> | <name>pimStaticRPTable</name> | |||
<t> | <t> | |||
pimStaticRPTable is mapped to | pimStaticRPTable is mapped to | |||
pim/address-family/rp/static-rp/ipv4-rp and | pim/address-family/rp/static-rp/ipv4-rp and | |||
pim/address-family/rp/static-rp/ipv6-rp. | pim/address-family/rp/static-rp/ipv6-rp. | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimStaticRPTable"/> lists the YANG data nodes | |||
The following table lists the YANG data nodes with | with | |||
corresponding objects of pimStaticRPTable in the PIM-STD-MIB. | corresponding objects of pimStaticRPTable in the PIM-STD-MIB. | |||
</t> | </t> | |||
<table anchor="table_mib_pimStaticRPTable" align="center"> | ||||
<texttable anchor='table_mib_pimStaticRPTable' | <name>YANG Nodes and pimStaticRPTable Objects</name> | |||
title="YANG Nodes and pimStaticRPTable Objects"> | <thead> | |||
<ttcol>YANG node</ttcol> | <tr> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">YANG Node</th> | |||
<th align="left">PIM-STD-MIB Object</th> | ||||
<c>ipv4-rp</c> | </tr> | |||
<c>pimStaticRPAddressType</c> | </thead> | |||
<tbody> | ||||
<c>ipv6-rp</c> | <tr> | |||
<c></c> | <td align="left">ipv4-rp</td> | |||
<td rowspan="2" align="left">pimStaticRPAddressType</td> | ||||
<c>rp-address</c> | </tr> | |||
<c>pimStaticRPRPAddress</c> | <tr> | |||
<td align="left">ipv6-rp</td> | ||||
<c>bidir</c> | </tr> | |||
<c>pimStaticRPPimMode</c> | <tr> | |||
<td align="left">rp-address</td> | ||||
<c>sm</c> | <td align="left">pimStaticRPRPAddress</td> | |||
<c></c> | </tr> | |||
<tr> | ||||
<c>bidir/override</c> | <td align="left">bidir</td> | |||
<c>pimStaticRPOverrideDynamic</c> | <td rowspan="2" align="left">pimStaticRPPimMode</td> | |||
</tr> | ||||
<c>sm/override</c> | <tr> | |||
<c></c> | <td align="left">sm</td> | |||
</texttable> | </tr> | |||
<tr> | ||||
<td align="left">bidir/override</td> | ||||
<td rowspan="2" align="left">pimStaticRPOverrideDynamic</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">sm/override</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimAnycastRPSetTable"> | <name>pimAnycastRPSetTable</name> | |||
<t> | <t> | |||
pimAnycastRPSetTable is mapped to | pimAnycastRPSetTable is mapped to | |||
pim/address-family/sm/asm/anycast-rp/ipv4-anycast-rp and | pim/address-family/sm/asm/anycast-rp/ipv4-anycast-rp and | |||
pim/address-family/sm/asm/anycast-rp/ipv6-anycast-rp. | pim/address-family/sm/asm/anycast-rp/ipv6-anycast-rp. | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimAnycastRPSetTable"/> lists the YANG data no | |||
The following table lists the YANG data nodes with | des with | |||
corresponding objects of pimAnycastRPSetTable in the PIM-STD-MIB. | corresponding objects of pimAnycastRPSetTable in the PIM-STD-MIB. | |||
</t> | </t> | |||
<table anchor="table_mib_pimAnycastRPSetTable" align="center"> | ||||
<texttable anchor='table_mib_pimAnycastRPSetTable' | <name>YANG Nodes and pimAnycastRPSetTable Objects</name> | |||
title="YANG Nodes and pimAnycastRPSetTable Objects"> | <thead> | |||
<ttcol>YANG node</ttcol> | <tr> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">YANG Node</th> | |||
<th align="left">PIM-STD-MIB Object</th> | ||||
<c>ipv4-anycast-rp</c> | </tr> | |||
<c>pimAnycastRPSetAddressType</c> | </thead> | |||
<tbody> | ||||
<c>ipv6-anycast-rp</c> | <tr> | |||
<c></c> | <td align="left">ipv4-anycast-rp</td> | |||
<td rowspan="2" align="left">pimAnycastRPSetAddressType</td> | ||||
<c>anycast-address</c> | </tr> | |||
<c>pimAnycastRPSetAnycastAddress</c> | <tr> | |||
<td align="left">ipv6-anycast-rp</td> | ||||
<c>rp-address</c> | </tr> | |||
<c>pimAnycastRPSetRouterAddress</c> | <tr> | |||
</texttable> | <td align="left">anycast-address</td> | |||
<td align="left">pimAnycastRPSetAnycastAddress</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">rp-address</td> | ||||
<td align="left">pimAnycastRPSetRouterAddress</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="pimGroupMappingTable"> | <name>pimGroupMappingTable</name> | |||
<t> | <t> | |||
pimGroupMappingTable is mapped to | pimGroupMappingTable is mapped to | |||
pim/address-family/rp/rp-mappings/ipv4-rp and | pim/address-family/rp/rp-mappings/ipv4-rp and | |||
pim/address-family/rp/rp-mappings/ipv6-rp. | pim/address-family/rp/rp-mappings/ipv6-rp. | |||
</t> | </t> | |||
<t> | ||||
<t> | <xref target="table_mib_pimGroupMappingTable"/> lists the YANG data no | |||
The following table lists the YANG data nodes with | des with | |||
corresponding objects of pimGroupMappingTable in the PIM-STD-MIB. | corresponding objects of pimGroupMappingTable in the PIM-STD-MIB. | |||
</t> | </t> | |||
<table anchor="table_mib_pimGroupMappingTable" align="center"> | ||||
<texttable anchor='table_mib_pimGroupMappingTable' | <name>YANG Nodes and pimGroupMappingTable Objects</name> | |||
title="YANG Nodes and pimGroupMappingTable Objects"> | <thead> | |||
<ttcol>YANG node</ttcol> | <tr> | |||
<ttcol>PIM-STD-MIB object</ttcol> | <th align="left">YANG Node</th> | |||
<th align="left">PIM-STD-MIB Object</th> | ||||
<c>ipv4-rp</c> | </tr> | |||
<c>pimGroupMappingAddressType</c> | </thead> | |||
<tbody> | ||||
<c>ipv6-rp</c> | <tr> | |||
<c></c> | <td align="left">ipv4-rp</td> | |||
<td rowspan="2" align="left">pimGroupMappingAddressType</td> | ||||
<c>group</c> | </tr> | |||
<c>pimGroupMappingGrpAddress</c> | <tr> | |||
<td align="left">ipv6-rp</td> | ||||
<c></c> | </tr> | |||
<c>pimGroupMappingGrpPrefixLength</c> | <tr> | |||
<td rowspan="2" align="left">group</td> | ||||
<c>ipv4-rp</c> | <td align="left">pimGroupMappingGrpAddress</td> | |||
<c>pimGroupMappingRPAddressType</c> | </tr> | |||
<tr> | ||||
<c>ipv6-rp</c> | <td align="left">pimGroupMappingGrpPrefixLength</td> | |||
<c></c> | </tr> | |||
<tr> | ||||
<c>rp-address</c> | <td align="left">ipv4-rp</td> | |||
<c>pimGroupMappingRPAddress</c> | <td rowspan="2" align="left">pimGroupMappingRPAddressType</td> | |||
</tr> | ||||
<c></c> | <tr> | |||
<c>pimGroupMappingPimMode</c> | <td align="left">ipv6-rp</td> | |||
</texttable> | </tr> | |||
<tr> | ||||
<t> | <td rowspan="2" align="left">rp-address</td> | |||
In addtion, the object pimGroupMappingPimMode in | <td align="left">pimGroupMappingRPAddress</td> | |||
pimGroupMappingTable is mapped | </tr> | |||
to the node rp/rp-list/ipv4-rp/mode | <tr> | |||
or the node rp/rp-list/ipv6-rp/mode in the YANG | <td align="left">pimGroupMappingPimMode</td> | |||
module ietf-pim-rp. | </tr> | |||
</t> | </tbody> | |||
</table> | ||||
<t> | ||||
In addition, the object "pimGroupMappingPimMode" in | ||||
pimGroupMappingTable is mapped | ||||
to the node "rp/rp-list/ipv4-rp/mode" | ||||
or the node "rp/rp-list/ipv6-rp/mode" in the YANG | ||||
module "ietf&nbhy;pim&nbhy;rp". | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>PIM YANG Modules</name> | ||||
<section numbered="true" toc="default"> | ||||
<name>PIM Base Module</name> | ||||
<t> | ||||
This module references | ||||
<xref target="RFC3973" format="default"/>, | ||||
<xref target="RFC5015" format="default"/>, | ||||
<xref target="RFC5880" format="default"/>, | ||||
<xref target="RFC6991"/>, | ||||
<xref target="RFC7761" format="default"/>, | ||||
<xref target="RFC8294"/>, | ||||
<xref target="RFC8343"/>, | ||||
<xref target="RFC8349"/>, | ||||
<xref target="RFC8706" format="default"/>, and | ||||
<xref target="RFC9314"/>. | ||||
<section title="PIM YANG Modules"> | </t> | |||
<section title="PIM base module"> | <sourcecode name="ietf-pim-base@2021-09-03.yang" type="yang" markers="tr | |||
<t> | ue"><![CDATA[ | |||
This module references | ||||
<xref target="RFC3973"/>, | ||||
<xref target="RFC5015"/>, | ||||
<xref target="RFC5306"/>, | ||||
<xref target="RFC5880"/>, and | ||||
<xref target="RFC7761"/>. | ||||
</t> | ||||
<figure><artwork> | ||||
<![CDATA[ | ||||
<CODE BEGINS> file "ietf-pim-base@2018-04-16.yang" | ||||
module ietf-pim-base { | module ietf-pim-base { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-base"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pim-base"; | |||
prefix pim-base; | prefix pim-base; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix rt-types; | |||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
reference | ||||
"RFC 9314: YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)"; | ||||
} | } | |||
organization | organization | |||
"IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Yisong Liu | Editor: Yisong Liu | |||
<mailto:liuyisong@huawei.com> | <mailto:liuyisong@chinamobile.com> | |||
Editor: Fangwei Hu | Editor: Fangwei Hu | |||
<mailto:hu.fangwei@zte.com.cn>"; | <mailto:hufwei@gmail.com>"; | |||
description | description | |||
"The module defines a collection of YANG definitions common for | "This module defines a collection of YANG definitions common for | |||
all PIM (Protocol Independent Multicast) modes. | all PIM (Protocol Independent Multicast) modes. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9128; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-04-16 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for PIM"; | "RFC 9128: A YANG Data Model for Protocol Independent | |||
Multicast (PIM)"; | ||||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support BFD (Bidirectional Forwarding Detection)."; | "Supports BFD (Bidirectional Forwarding Detection)."; | |||
reference | reference | |||
"RFC5880: Bidirectional Forwarding Detection (BFD)"; | "RFC 5880: Bidirectional Forwarding Detection (BFD)"; | |||
} | } | |||
feature global-graceful-restart { | feature global-graceful-restart { | |||
description | description | |||
"Global configuration for graceful restart support as per | "Global configuration for graceful restart support as per | |||
RFC5306."; | RFC 8706."; | |||
reference | ||||
"RFC 8706: Restart Signaling for IS-IS"; | ||||
} | } | |||
feature intf-dr-priority { | feature intf-dr-priority { | |||
description | description | |||
"Support configuration of interface DR (Designated Router) | "Supports configuration of an interface DR (Designated Router) | |||
priority."; | priority."; | |||
reference | reference | |||
"RFC7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.3.2."; | (PIM-SM): Protocol Specification (Revised), Section 4.3.2"; | |||
} | } | |||
feature intf-hello-holdtime { | feature intf-hello-holdtime { | |||
description | description | |||
"Support configuration of interface hello holdtime."; | "Supports configuration of the interface Hello Holdtime."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.3.3. | (PIM-DM): Protocol Specification (Revised), Section 4.3.3 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-hello-interval { | feature intf-hello-interval { | |||
description | description | |||
"Support configuration of interface hello interval."; | "Supports configuration of the interface Hello interval."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.8. | (PIM-DM): Protocol Specification (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-hello-multiplier { | feature intf-hello-multiplier { | |||
description | description | |||
"Support configuration of interface hello multiplier."; | "Supports configuration of the interface Hello multiplier | |||
(the number by which the Hello interval is multiplied to | ||||
obtain the Hello Holdtime)."; | ||||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.8. | (PIM-DM): Protocol Specification (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-jp-interval { | feature intf-jp-interval { | |||
description | description | |||
"Support configuration of interface join prune interval."; | "Supports configuration of the interface Join/Prune interval."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.8. | (PIM-DM): Protocol Specification (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-jp-holdtime { | feature intf-jp-holdtime { | |||
description | description | |||
"Support configuration of interface join prune holdtime."; | "Supports configuration of the interface Join/Prune Holdtime."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.8. | (PIM-DM): Protocol Specification (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-jp-multiplier { | feature intf-jp-multiplier { | |||
description | description | |||
"Support configuration of interface join prune multiplier."; | "Supports configuration of the interface Join/Prune | |||
multiplier (the number by which the Join/Prune interval is | ||||
multiplied to obtain the Join/Prune Holdtime)."; | ||||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.8. | (PIM-DM): Protocol Specification (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | (PIM-SM): Protocol Specification (Revised), Section 4.11"; | |||
} | } | |||
feature intf-propagation-delay { | feature intf-propagation-delay { | |||
description | description | |||
"Support configuration of interface propagation delay."; | "Supports configuration of interface propagation delay."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.3.5. | (PIM-DM): Protocol Specification (Revised), Section 4.3.5 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.3.3."; | (PIM-SM): Protocol Specification (Revised), Section 4.3.3"; | |||
} | } | |||
feature intf-override-interval { | feature intf-override-interval { | |||
description | description | |||
"Support configuration of interface override interval."; | "Supports configuration of the interface override interval."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.3.3. | (PIM-DM): Protocol Specification (Revised), | |||
RFC5015: Bidirectional Protocol Independent Multicast | Sections 4.1.1 and 4.8 | |||
(BIDIR-PIM). Sec. 3.6. | RFC 5015: Bidirectional Protocol Independent Multicast | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | (BIDIR-PIM), Section 3.6 | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.11."; | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised), Section 4.11"; | ||||
} | } | |||
feature per-af-graceful-restart { | feature per-af-graceful-restart { | |||
description | description | |||
"Per address family configuration for graceful restart support | "Per address family configuration for graceful restart support | |||
as per RFC5306."; | as per RFC 8706."; | |||
reference | ||||
"RFC 8706: Restart Signaling for IS-IS"; | ||||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef interface-event-type { | typedef interface-event-type { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
description | description | |||
"Neighbor status changed to up."; | "Neighbor status changed to 'up'."; | |||
} | } | |||
enum down { | enum down { | |||
description | description | |||
"Neighbor status changed to down."; | "Neighbor status changed to 'down'."; | |||
} | } | |||
enum new-dr { | enum new-dr { | |||
description | description | |||
"A new DR (Designated Router) was elected on the connected | "A new DR (Designated Router) was elected on the connected | |||
network."; | network."; | |||
} | } | |||
enum new-df { | enum new-df { | |||
description | description | |||
"A new DF (Designated Forwarder) was elected on the | "A new DF (Designated Forwarder) was elected on the | |||
connected network."; | connected network."; | |||
} | } | |||
} | } | |||
description "Operational status event type for notifications."; | description | |||
"Operational status event type for notifications."; | ||||
} | } | |||
typedef neighbor-event-type { | typedef neighbor-event-type { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
description | description | |||
"Neighbor status changed to up."; | "Neighbor status changed to 'up'."; | |||
} | } | |||
enum down { | enum down { | |||
description | description | |||
"Neighbor status changed to down."; | "Neighbor status changed to 'down'."; | |||
} | } | |||
} | } | |||
description "Operational status event type for notifications."; | description | |||
"Operational status event type for notifications."; | ||||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity pim-mode { | identity pim-mode { | |||
description | description | |||
"The PIM mode in which a group is operating."; | "The PIM mode in which a group is operating."; | |||
} | } | |||
identity pim-none { | identity pim-none { | |||
base pim-mode; | base pim-mode; | |||
description | description | |||
"PIM is not operating."; | "PIM is not operating."; | |||
} | } | |||
identity pim-bidir { | identity pim-bidir { | |||
base pim-mode; | base pim-mode; | |||
description | description | |||
"PIM operates in the Bidirectional Mode."; | "PIM is operating in Bidirectional Mode."; | |||
} | } | |||
identity pim-dm { | identity pim-dm { | |||
base pim-mode; | base pim-mode; | |||
description | description | |||
"PIM operates in the Dense Mode (DM)."; | "PIM is operating in Dense Mode (DM)."; | |||
} | } | |||
identity pim-sm { | identity pim-sm { | |||
base pim-mode; | base pim-mode; | |||
description | description | |||
"PIM operates in the Sparse Mode (SM)."; | "PIM is operating in Sparse Mode (SM)."; | |||
} | } | |||
identity pim-asm { | identity pim-asm { | |||
base pim-sm; | base pim-sm; | |||
description | description | |||
"PIM operates in the Sparse Mode with Any Source Multicast | "PIM is operating in Sparse Mode with Any-Source Multicast | |||
(ASM)."; | (ASM)."; | |||
} | } | |||
identity pim-ssm { | identity pim-ssm { | |||
base pim-sm; | base pim-sm; | |||
description | description | |||
"PIM operates in the Sparse Mode with Source-Specific | "PIM is operating in Sparse Mode with Source-Specific | |||
Multicast (SSM)."; | Multicast (SSM)."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping graceful-restart-container { | grouping graceful-restart-container { | |||
description | description | |||
"A grouping defining a container of graceful restart | "A grouping defining a container of graceful restart | |||
attributes."; | attributes."; | |||
container graceful-restart { | container graceful-restart { | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Enable or disable graceful restart."; | "Enables or disables graceful restart."; | |||
} | } | |||
leaf duration { | leaf duration { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
default 60; | default "60"; | |||
description | description | |||
"Maximum time for graceful restart to finish."; | "Maximum time for graceful restart to finish."; | |||
} | } | |||
description | description | |||
"Container of graceful restart attributes."; | "Container of graceful restart attributes."; | |||
} | } | |||
} // graceful-restart-container | } // graceful-restart-container | |||
grouping multicast-route-attributes { | grouping multicast-route-attributes { | |||
description | description | |||
skipping to change at line 2218 ¶ | skipping to change at line 2296 ¶ | |||
"Maximum time for graceful restart to finish."; | "Maximum time for graceful restart to finish."; | |||
} | } | |||
description | description | |||
"Container of graceful restart attributes."; | "Container of graceful restart attributes."; | |||
} | } | |||
} // graceful-restart-container | } // graceful-restart-container | |||
grouping multicast-route-attributes { | grouping multicast-route-attributes { | |||
description | description | |||
"A grouping defining multicast route attributes."; | "A grouping defining multicast route attributes."; | |||
leaf expiration { | leaf expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description "When the route will expire."; | description | |||
"When the route will expire."; | ||||
} | } | |||
leaf incoming-interface { | leaf incoming-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Reference to an entry in the global interface | "Reference to an entry in the global interface list."; | |||
list."; | ||||
} | } | |||
leaf is-spt { | leaf is-spt { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if SPT (Shortest Path Tree) bit is set to indicate | "'true' if the SPTbit (Shortest Path Tree bit) is set to | |||
forwarding is taking place on the (S,G) Shortest Path Tree | indicate that forwarding is taking place on the | |||
(SPT)."; | (S,G) SPT."; | |||
reference | reference | |||
"RFC7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.1.3."; | (PIM-SM): Protocol Specification (Revised), Section 4.1.3"; | |||
} | } | |||
leaf mode { | leaf mode { | |||
type identityref { | type identityref { | |||
base pim-mode; | base pim-mode; | |||
} | } | |||
description "PIM mode."; | description | |||
"PIM mode."; | ||||
} | } | |||
leaf msdp-learned { | leaf msdp-learned { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if route is learned from MSDP (Multicast Source | "'true' if the route is learned from MSDP (the Multicast | |||
Discovery Protocol)."; | Source Discovery Protocol)."; | |||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RP (Rendezvous Point) address."; | description | |||
"RP (Rendezvous Point) address."; | ||||
} | } | |||
leaf rpf-neighbor { | leaf rpf-neighbor { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RPF (Reverse Path Forwarding) neighbor address."; | description | |||
"RPF (Reverse Path Forwarding) neighbor address."; | ||||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since the | "The number of time ticks (hundredths of a second) since the | |||
route last transitioned into the active state."; | route last transitioned into the active state."; | |||
} | } | |||
list outgoing-interface { | list outgoing-interface { | |||
key "name"; | key "name"; | |||
description | description | |||
skipping to change at line 2269 ¶ | skipping to change at line 2349 ¶ | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since the | "The number of time ticks (hundredths of a second) since the | |||
route last transitioned into the active state."; | route last transitioned into the active state."; | |||
} | } | |||
list outgoing-interface { | list outgoing-interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"A list of outgoing interfaces."; | "A list of outgoing interfaces."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface name."; | "Interface name."; | |||
} | } | |||
leaf expiration { | leaf expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description "Expiring time."; | description | |||
"Expiration time."; | ||||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since | "The number of time ticks (hundredths of a second) since | |||
the oper-status of the interface was last changed to | the 'oper-status' setting of the interface was last | |||
'up'."; | changed to 'up'."; | |||
} | } | |||
leaf jp-state { | leaf jp-state { | |||
type enumeration { | type enumeration { | |||
enum "no-info" { | enum no-info { | |||
description | description | |||
"The interface has no (*,G) Join state and no timers | "The interface has no (*,G) Join state and no timers | |||
running."; | running."; | |||
} | } | |||
enum "join" { | enum join { | |||
description | description | |||
"The interface has Join state."; | "The interface has Join state."; | |||
} | } | |||
enum "prune-pending" { | enum prune-pending { | |||
description | description | |||
"The router has received a Prune on this interface from | "The router has received a Prune on this interface from | |||
a downstream neighbor and is waiting to see whether | a downstream neighbor and is waiting to see whether | |||
the prune will be overridden by another downstream | the Prune will be overridden by another downstream | |||
router. For forwarding purposes, the Prune-Pending | router. For forwarding purposes, the Prune-Pending | |||
state functions exactly like the Join state."; | state functions exactly like the Join state."; | |||
} | } | |||
} | } | |||
description "Join-prune state."; | description | |||
"Join/Prune state."; | ||||
} | } | |||
} | } | |||
} // multicast-route-attributes | } // multicast-route-attributes | |||
grouping neighbor-state-af-attributes { | grouping neighbor-state-af-attributes { | |||
description | description | |||
"A grouping defining neighbor per address family attributes."; | "A grouping defining neighbor per address family attributes."; | |||
leaf bfd-state { | leaf bfd-state { | |||
type bfd-types:state; | type bfd-types:state; | |||
description "BFD (Bidirectional Forwarding Detection) status."; | description | |||
"BFD (Bidirectional Forwarding Detection) status."; | ||||
} | } | |||
leaf expiration { | leaf expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description "Neighbor expiring time."; | description | |||
"Neighbor expiration time."; | ||||
} | } | |||
leaf dr-priority { | leaf dr-priority { | |||
type uint32; | type uint32; | |||
description | description | |||
"DR (Designated Router) priority as the preference in the DR | "DR (Designated Router) priority as the preference in the DR | |||
election process."; | election process."; | |||
} | } | |||
leaf gen-id { | leaf gen-id { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at line 2350 ¶ | skipping to change at line 2430 ¶ | |||
message from the neighbor."; | message from the neighbor."; | |||
leaf present { | leaf present { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the LAN Prune Delay option is present in the | "'true' if the LAN Prune Delay option is present in the | |||
last Hello message from the neighbor."; | last Hello message from the neighbor."; | |||
} | } | |||
leaf override-interval { | leaf override-interval { | |||
when "../present = 'true'" { | when "../present = 'true'" { | |||
description | description | |||
"Available only when the leaf present is 'true'."; | "Available only when 'leaf present' is 'true'."; | |||
} | } | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"The value of the Override_Interval field of the LAN Prune | "The value of the Override_Interval field of the LAN Prune | |||
Delay option in the last Hello message from the neighbor. | Delay option in the last Hello message from the neighbor. | |||
The neighbor uses this value to indicate a short period | The neighbor uses this value to indicate a short period | |||
after a Join or Prune to allow other routers on the LAN | after a Join or Prune to allow other routers on the LAN | |||
to override the Join or Prune."; | to override the Join or Prune."; | |||
} | } | |||
leaf propagation-delay { | leaf propagation-delay { | |||
when "../present = 'true'" { | when "../present = 'true'" { | |||
description | description | |||
"Available only when the leaf present is 'true'."; | "Available only when 'leaf present' is 'true'."; | |||
} | } | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"The value of the Propagation_Delay field of the LAN Prune | "The value of the Propagation_Delay field of the LAN Prune | |||
Delay option in the last Hello message from the neighbor. | Delay option in the last Hello message from the neighbor. | |||
The value is the propagation delay over the local link | The value is the propagation delay over the local link | |||
expected by the neighbor."; | expected by the neighbor."; | |||
} | } | |||
leaf t-bit { | leaf t-bit { | |||
when "../present = 'true'" { | when "../present = 'true'" { | |||
description | description | |||
"Available only when the leaf present is 'true'."; | "Available only when 'leaf present' is 'true'."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the T bit is set in the LAN Prune Delay option | "'true' if the T bit is set in the LAN Prune Delay option | |||
in the last Hello message from the neighbor. This flag | in the last Hello message from the neighbor. This flag | |||
indicates the neighbor's capability to disable Join | indicates the neighbor's ability to disable Join | |||
message suppression."; | message suppression."; | |||
} | } | |||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since | "The number of time ticks (hundredths of a second) since | |||
the neighbor relationship has been formed as reachable | the neighbor relationship has been formed as reachable | |||
without beeing timed out."; | without being timed out."; | |||
} | } | |||
} // neighbor-state-af-attributes | } // neighbor-state-af-attributes | |||
grouping pim-instance-af-state-ref { | grouping pim-instance-af-state-ref { | |||
description | description | |||
"An absolute reference to a PIM instance address family."; | "An absolute reference to a PIM instance address family."; | |||
leaf instance-af-ref { | leaf instance-af-ref { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family/" | + "pim-base:pim/pim-base:address-family/" | |||
+ "pim-base:address-family"; | + "pim-base:address-family"; | |||
} | } | |||
description | description | |||
"Reference to a PIM instance address family."; | "Reference to a PIM instance address family."; | |||
} | } | |||
} // pim-instance-af-state-ref | } // pim-instance-af-state-ref | |||
grouping pim-interface-state-ref { | grouping pim-interface-state-ref { | |||
description | description | |||
"An absolute reference to a PIM interface state."; | "An absolute reference to a PIM interface state."; | |||
leaf interface-ref { | leaf interface-ref { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:name"; | + "pim-base:name"; | |||
} | } | |||
description | description | |||
"Reference to a PIM interface."; | "Reference to a PIM interface."; | |||
} | } | |||
} // pim-interface-state-ref | } // pim-interface-state-ref | |||
grouping statistics-sent-received { | grouping statistics-sent-received { | |||
description | description | |||
"A grouping defining sent and received statistics | "A grouping defining sent and received statistics | |||
on PIM messages."; | on PIM messages."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - Dense Mode | |||
(PIM-DM): Protocol Specification (Revised). Sec. 4.7.1. | (PIM-DM): Protocol Specification (Revised), Section 4.7.1 | |||
RFC5015: Bidirectional Protocol Independent Multicast | RFC 5015: Bidirectional Protocol Independent Multicast | |||
(BIDIR-PIM). Sec. 3.7. | (BIDIR-PIM), Section 3.7 | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.9."; | (PIM-SM): Protocol Specification (Revised), Section 4.9"; | |||
leaf assert { | leaf assert { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Assert messages, with the message Type | "The number of Assert messages, with the message Type | |||
of 5 in RFC3973 and RFC7761."; | of 5 (RFCs 3973 and 7761)."; | |||
reference | ||||
"RFC 3973: Protocol Independent Multicast - Dense Mode | ||||
(PIM-DM): Protocol Specification (Revised) | ||||
RFC 7761: Protocol Independent Multicast - Sparse Mode | ||||
(PIM-SM): Protocol Specification (Revised)"; | ||||
} | } | |||
leaf bsr { | leaf bsr { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Bootstrap messages, with the message Type | "The number of Bootstrap messages, with the message Type | |||
of 4 in RFC3973 and RFC7761."; | of 4 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf candidate-rp-advertisement { | leaf candidate-rp-advertisement { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Candidate RP Advertisement messages, with the | "The number of Candidate RP Advertisement messages, with the | |||
message Type of 8 in RFC3973 and RFC7761."; | message Type of 8 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf df-election { | leaf df-election { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of DF (Designated Forwarder) Election messages, | "The number of DF (Designated Forwarder) election messages, | |||
with the message Type of 10 in RFC5015."; | with the message Type of 10 (RFC 5015)."; | |||
reference | ||||
"RFC 5015: Bidirectional Protocol Independent Multicast | ||||
(BIDIR-PIM)"; | ||||
} | } | |||
leaf graft { | leaf graft { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Graft messages, with the message Type | "The number of Graft messages, with the message Type | |||
of 6 in RFC3973 and RFC7761."; | of 6 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf graft-ack { | leaf graft-ack { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Graft-Ack messages, with the message Type | "The number of Graft-Ack messages, with the message Type | |||
of 7 in RFC3973 and RFC7761."; | of 7 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf hello { | leaf hello { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Hello messages, with the message Type | "The number of Hello messages, with the message Type | |||
of 0 in RFC3973 and RFC7761."; | of 0 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf join-prune { | leaf join-prune { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Join/Prune messages, with the message Type | "The number of Join/Prune messages, with the message Type | |||
of 3 in RFC3973 and RFC7761."; | of 3 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf register { | leaf register { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Register messages, with the message Type | "The number of Register messages, with the message Type | |||
of 1 in RFC3973 and RFC7761."; | of 1 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf register-stop { | leaf register-stop { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of Register Stop messages, with the message Type | "The number of Register-Stop messages, with the message Type | |||
of 2 in RFC3973 and RFC7761."; | of 2 (RFCs 3973 and 7761)."; | |||
} | } | |||
leaf state-refresh { | leaf state-refresh { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of State Refresh messages, with the message Type | "The number of State Refresh messages, with the message Type | |||
of 9 in RFC3973."; | of 9 (RFC 3973)."; | |||
} | } | |||
} // statistics-sent-received | } // statistics-sent-received | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols" { | augment "/rt:routing/rt:control-plane-protocols" { | |||
description | description | |||
"PIM augmentation to the routing instance model."; | "PIM augmentation to the routing instance model."; | |||
skipping to change at line 2510 ¶ | skipping to change at line 2598 ¶ | |||
} | } | |||
} // statistics-sent-received | } // statistics-sent-received | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols" { | augment "/rt:routing/rt:control-plane-protocols" { | |||
description | description | |||
"PIM augmentation to the routing instance model."; | "PIM augmentation to the routing instance model."; | |||
container pim { | container pim { | |||
presence | presence "Enables the PIM protocol."; | |||
"Enables the PIM protocol."; | ||||
description | description | |||
"PIM configuration and operational data."; | "PIM configuration data and operational state data."; | |||
uses graceful-restart-container { | uses graceful-restart-container { | |||
if-feature global-graceful-restart; | if-feature "global-graceful-restart"; | |||
} | } | |||
list address-family { | list address-family { | |||
key "address-family"; | key "address-family"; | |||
description | description | |||
"Each list entry for one address family."; | "Each list entry for one address family."; | |||
uses rt:address-family; | uses rt:address-family; | |||
uses graceful-restart-container { | uses graceful-restart-container { | |||
if-feature per-af-graceful-restart; | if-feature "per-af-graceful-restart"; | |||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "A container defining statistics attributes."; | description | |||
"A container defining statistics attributes."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one | "The time of the most recent occasion at which any one | |||
or more of the statistic counters suffered a | or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have | discontinuity. If no such discontinuities have | |||
occurred since the last re-initialization of the local | occurred since the last reinitialization of the local | |||
management subsystem, then this node contains the time | management subsystem, then this node contains the time | |||
the local management subsystem re-initialized | the local management subsystem reinitialized | |||
itself."; | itself."; | |||
} | } | |||
container error { | container error { | |||
description "Containing error statistics."; | description | |||
"Contains error statistics."; | ||||
uses statistics-sent-received { | uses statistics-sent-received { | |||
description | description | |||
"Statistic counters on the PIM messages per PIM | "Statistics counters on the PIM messages per PIM | |||
message Type. Each leaf attribute counts the number | message Type. Each leaf attribute counts the number | |||
of PIM messages that were of a particular Type (such | of PIM messages that were of a particular Type (such | |||
as Hello) and contained errors preventing them from | as Hello) and contained errors preventing them from | |||
being processed by PIM. | being processed by PIM. | |||
Such messages are also counted by the corresponding | Such messages are also counted by the corresponding | |||
counter of the same Type (such as Hello) in the | counter of the same Type (such as Hello) in the | |||
'received' container."; | 'received' container."; | |||
} | } | |||
leaf checksum { | leaf checksum { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of PIM messages that were passed to PIM | "The number of PIM messages that were passed to PIM | |||
and contained checksum errors."; | and contained checksum errors."; | |||
} | } | |||
leaf format { | leaf format { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of PIM messages that passed checksum | "The number of PIM messages that passed checksum | |||
validation but contained format errors, including | validation but contained format errors, including | |||
the errors such as PIM Version, Type, and message | errors related to PIM Version, Type, and message | |||
length."; | length."; | |||
} | } | |||
} | } | |||
container queue { | container queue { | |||
description "Containing queue statistics."; | description | |||
"Contains queue statistics."; | ||||
leaf size { | leaf size { | |||
type uint32; | type uint32; | |||
description | description | |||
"The size of the input queue."; | "The size of the input queue."; | |||
} | } | |||
leaf overflow { | leaf overflow { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of the input queue overflows."; | "The number of input queue overflows."; | |||
} | } | |||
} | } | |||
container received { | container received { | |||
description | description | |||
"Containing statistics of received messages."; | "Contains statistics of received messages."; | |||
uses statistics-sent-received; | uses statistics-sent-received; | |||
} | } | |||
container sent { | container sent { | |||
description | description | |||
"Containing statistics of sent messages."; | "Contains statistics of sent messages."; | |||
uses statistics-sent-received; | uses statistics-sent-received; | |||
} | } | |||
} | } | |||
container topology-tree-info { | container topology-tree-info { | |||
config false; | config false; | |||
description "Containing topology tree information."; | description | |||
"Contains topology tree information."; | ||||
list ipv4-route { | list ipv4-route { | |||
when "../../address-family = 'rt:ipv4'" { | when "../../address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "group source-address is-rpt"; | key "group source-address is-rpt"; | |||
description "A list of IPv4 routes."; | description | |||
"A list of IPv4 routes."; | ||||
leaf group { | leaf group { | |||
type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
description "Group address."; | description | |||
"Group address."; | ||||
} | } | |||
leaf source-address { | leaf source-address { | |||
type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
description "Source address."; | description | |||
"Source address."; | ||||
} | } | |||
leaf is-rpt { | leaf is-rpt { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the tree is RPT (Rendezvous-Point Tree)."; | "'true' if the tree is an RPT | |||
(Rendezvous Point Tree)."; | ||||
} | } | |||
uses multicast-route-attributes; | uses multicast-route-attributes; | |||
} // ipv4-route | } // ipv4-route | |||
list ipv6-route { | list ipv6-route { | |||
when "../../address-family = 'rt:ipv6'" { | when "../../address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "group source-address is-rpt"; | key "group source-address is-rpt"; | |||
description "A list of IPv6 routes."; | description | |||
"A list of IPv6 routes."; | ||||
leaf group { | leaf group { | |||
type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
description "Group address."; | description | |||
"Group address."; | ||||
} | } | |||
leaf source-address { | leaf source-address { | |||
type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
description "Source address."; | description | |||
"Source address."; | ||||
} | } | |||
leaf is-rpt { | leaf is-rpt { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the tree is RPT (Rendezvous-Point Tree)."; | "'true' if the tree is an RPT."; | |||
} | } | |||
uses multicast-route-attributes; | uses multicast-route-attributes; | |||
} // ipv6-route | } // ipv6-route | |||
} // topology-tree-info | } // topology-tree-info | |||
} // address-family | } // address-family | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of interfaces."; | "Contains a list of interfaces."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of pim interfaces."; | "List of PIM interfaces."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Reference to an entry in the global interface | "Reference to an entry in the global interface list."; | |||
list."; | ||||
} | } | |||
list address-family { | list address-family { | |||
key "address-family"; | key "address-family"; | |||
description | description | |||
"Each list entry for one address family."; | "Each list entry for one address family."; | |||
uses rt:address-family; | uses rt:address-family; | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature "bfd"; | |||
description | description | |||
"BFD (Bidirectional Forwarding Detection) | "BFD (Bidirectional Forwarding Detection) | |||
operation."; | operation."; | |||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
} | } | |||
leaf dr-priority { | leaf dr-priority { | |||
if-feature intf-dr-priority; | if-feature "intf-dr-priority"; | |||
type uint32; | type uint32; | |||
default 1; | default "1"; | |||
description | description | |||
"DR (Designated Router) priority as the preference in | "DR (Designated Router) priority as the preference in | |||
the DR election process."; | the DR election process."; | |||
} | } | |||
leaf hello-interval { | leaf hello-interval { | |||
if-feature intf-hello-interval; | if-feature "intf-hello-interval"; | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
default 30; | default "30"; | |||
description | description | |||
"Periodic interval for Hello messages. | "Periodic interval for Hello messages. | |||
If 'infinity' or 'not-set' is used, no periodic | If 'infinity' or 'not-set' is used, no periodic | |||
Hello messages are sent."; | Hello messages are sent."; | |||
reference | reference | |||
"RFC3973: Protocol Independent Multicast - Dense Mode | "RFC 3973: Protocol Independent Multicast - | |||
(PIM-DM): Protocol Specification (Revised). | Dense Mode (PIM-DM): Protocol Specification | |||
Sec. 4.8. | (Revised), Section 4.8 | |||
RFC7761: Protocol Independent Multicast - Sparse | RFC 7761: Protocol Independent Multicast - Sparse | |||
Mode (PIM-SM): Protocol Specification (Revised). | Mode (PIM-SM): Protocol Specification (Revised), | |||
Sec. 4.11."; | Section 4.11"; | |||
} | } | |||
choice hello-holdtime-or-multiplier { | choice hello-holdtime-or-multiplier { | |||
description | description | |||
"Holdtime is timer value to time out the neighbor | "The Holdtime is the timer value to time out the | |||
state when the timer expires. | neighbor state when the timer expires. | |||
The holdtime value can be specified either by the | The Holdtime value can be specified by either | |||
given holdtime value or by the calculation of the | (1) the given Holdtime value or (2) the calculation | |||
hello-interval multiplied by the given value of the | of the Hello interval multiplied by the given value | |||
multiplier."; | of the multiplier."; | |||
case holdtime { | case holdtime { | |||
if-feature intf-hello-holdtime; | if-feature "intf-hello-holdtime"; | |||
leaf hello-holdtime { | leaf hello-holdtime { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
default 105; | default "105"; | |||
description | description | |||
"Hello holdtime is the amount of time to keep | "The Hello Holdtime is the amount of time to | |||
the neighbor reachable until a new Hello message | keep the neighbor reachable until a new | |||
is received."; | Hello message is received."; | |||
} | } | |||
} | } | |||
case multiplier { | case multiplier { | |||
if-feature intf-hello-multiplier; | if-feature "intf-hello-multiplier"; | |||
leaf hello-multiplier { | leaf hello-multiplier { | |||
type rt-types:timer-multiplier; | type rt-types:timer-multiplier; | |||
default 3; | default "3"; | |||
description | description | |||
"Hello multiplier is the number by which the | "The Hello multiplier is the number by which the | |||
hello interval is multplied to obtain the Hello | Hello interval is multiplied to obtain the | |||
holdtime. | Hello Holdtime. | |||
The value of the Hello holdtime is calculated | The value of the Hello Holdtime is calculated | |||
as: | as: | |||
hello-holdtime = | hello-holdtime = | |||
(multiplier + 0.5) * (hello-interval)"; | (multiplier + 0.5) * (hello-interval)."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf jp-interval { | leaf jp-interval { | |||
if-feature intf-jp-interval; | if-feature "intf-jp-interval"; | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
default 60; | default "60"; | |||
description | description | |||
"Periodic interval between Join/Prune messages. | "Periodic interval between Join/Prune messages. | |||
If 'infinity' or 'not-set' is used, no periodic | If 'infinity' or 'not-set' is used, no periodic | |||
Join/Prune messages are sent."; | Join/Prune messages are sent."; | |||
} | } | |||
choice jp-holdtime-or-multiplier { | choice jp-holdtime-or-multiplier { | |||
description | description | |||
"Join/Prune holdtime is the amount of time a receiver | "The Join/Prune Holdtime is the amount of time a | |||
must keep the Join/Prune state alive. | receiver must keep the Join/Prune state alive. | |||
The holdtime value can be specified either by the | The Holdtime value can be specified by either | |||
given holdtime value or by the calculation of the | (1) the given Holdtime value or (2) the calculation | |||
jp-interval multiplied by the given value of the | of 'jp-interval' multiplied by the given value of | |||
multiplier."; | the multiplier."; | |||
case holdtime { | case holdtime { | |||
if-feature intf-jp-holdtime; | if-feature "intf-jp-holdtime"; | |||
leaf jp-holdtime { | leaf jp-holdtime { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
default 210; | default "210"; | |||
description | description | |||
"Join/Prune holdtime is the amount of time a | "The Join/Prune Holdtime is the amount of time a | |||
receiver must keep the Join/Prune state alive."; | receiver must keep the Join/Prune state alive."; | |||
} | } | |||
} | } | |||
case multiplier { | case multiplier { | |||
if-feature intf-jp-multiplier; | if-feature "intf-jp-multiplier"; | |||
leaf jp-multiplier { | leaf jp-multiplier { | |||
type rt-types:timer-multiplier; | type rt-types:timer-multiplier; | |||
default 3; | default "3"; | |||
description | description | |||
"Join prune multiplier is the number by which the | "The Join/Prune multiplier is the number | |||
join prune interval is multplied to obtain the | by which the Join/Prune interval is multiplied | |||
Join/Prune holdtime. | to obtain the Join/Prune Holdtime. | |||
The value of the Join/Prune holdtime is | The value of the Join/Prune Holdtime is | |||
calculated as: | calculated as: | |||
jp-holdtime = | jp-holdtime = | |||
(multiplier + 0.5) * (jp-interval)"; | (multiplier + 0.5) * (jp-interval)."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf override-interval { | leaf override-interval { | |||
if-feature intf-override-interval; | if-feature "intf-override-interval"; | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
default 2500; | default "2500"; | |||
description | description | |||
"A short period after a Join or Prune to allow other | "A short period after a Join or Prune to allow other | |||
routers on the LAN to override the Join or Prune."; | routers on the LAN to override the Join or Prune."; | |||
} | } | |||
leaf propagation-delay { | leaf propagation-delay { | |||
if-feature intf-propagation-delay; | if-feature "intf-propagation-delay"; | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
default 500; | default "500"; | |||
description | description | |||
"Expected propagation delay over the local link."; | "Expected propagation delay over the local link."; | |||
} | } | |||
// Interface state attributes | // Interface state attributes | |||
leaf oper-status { | leaf oper-status { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
description | description | |||
"The interface is ready to pass PIM messages."; | "The interface is ready to pass PIM messages."; | |||
} | } | |||
enum down { | enum down { | |||
description | description | |||
"The interface does not pass PIM messages."; | "The interface does not pass PIM messages."; | |||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"PIM operational status on the interface. | "PIM operational status on the interface. | |||
This status is PIM specific and separate from the | This status is PIM specific and separate from the | |||
operational status of the underlying interface."; | operational status of the underlying interface."; | |||
} | } | |||
leaf gen-id { | leaf gen-id { | |||
type uint32; | type uint32; | |||
config false; | config false; | |||
description | description | |||
"The value of the Generation ID this router uses to | "The value of the Generation ID this router uses to | |||
insert in the PIM Hello message sent on this | insert into the PIM Hello message sent on this | |||
interface."; | interface."; | |||
} | } | |||
leaf hello-expiration { | leaf hello-expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "Hello interval expiration time."; | description | |||
"Hello interval expiration time."; | ||||
} | } | |||
container ipv4 { | container ipv4 { | |||
when "../address-family = 'rt:ipv4'" { | when "../address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
config false; | config false; | |||
description "Interface state attributes for IPv4."; | description | |||
"Interface state attributes for IPv4."; | ||||
leaf-list address { | leaf-list address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of addresses on which PIM is operating."; | "List of addresses on which PIM is operating."; | |||
} | } | |||
leaf dr-address { | leaf dr-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "DR (Designated Router) address."; | description | |||
"DR (Designated Router) address."; | ||||
} | } | |||
} | } | |||
container ipv6 { | container ipv6 { | |||
when "../address-family = 'rt:ipv6'" { | when "../address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
config false; | config false; | |||
description "Interface state attributes for IPv6."; | description | |||
"Interface state attributes for IPv6."; | ||||
leaf-list address { | leaf-list address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"List of addresses on which PIM is operating."; | "List of addresses on which PIM is operating."; | |||
} | } | |||
leaf dr-address { | leaf dr-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "DR (Designated Router) address."; | description | |||
"DR address."; | ||||
} | } | |||
} | } | |||
container neighbors { | container neighbors { | |||
config false; | config false; | |||
description | description | |||
"Information learned from neighbors through this | "Information learned from neighbors through this | |||
interface."; | interface."; | |||
list ipv4-neighbor { | list ipv4-neighbor { | |||
when "../../address-family = 'rt:ipv4'" { | when "../../address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "address"; | key "address"; | |||
description "Neighbor state information."; | description | |||
"Neighbor state information."; | ||||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "Neighbor address."; | description | |||
"Neighbor address."; | ||||
} | } | |||
uses neighbor-state-af-attributes; | uses neighbor-state-af-attributes; | |||
} // list ipv4-neighbor | } // list ipv4-neighbor | |||
list ipv6-neighbor { | list ipv6-neighbor { | |||
when "../../address-family = 'rt:ipv6'" { | when "../../address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "address"; | key "address"; | |||
description "Neighbor state information."; | description | |||
"Neighbor state information."; | ||||
leaf address { | leaf address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "Neighbor address."; | description | |||
"Neighbor address."; | ||||
} | } | |||
uses neighbor-state-af-attributes; | uses neighbor-state-af-attributes; | |||
} // list ipv6-neighbor | } // list ipv6-neighbor | |||
} // neighbors | } // neighbors | |||
} // address-family | } // address-family | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
} // pim | } // pim | |||
} // augment | } // augment | |||
skipping to change at line 2903 ¶ | skipping to change at line 2998 ¶ | |||
} // neighbors | } // neighbors | |||
} // address-family | } // address-family | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
} // pim | } // pim | |||
} // augment | } // augment | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification pim-neighbor-event { | notification pim-neighbor-event { | |||
description "Notification event for neighbor."; | description | |||
"Notification event for a neighbor."; | ||||
leaf event-type { | leaf event-type { | |||
type neighbor-event-type; | type neighbor-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
uses pim-interface-state-ref; | uses pim-interface-state-ref; | |||
leaf interface-af-ref { | leaf interface-af-ref { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" | + "pim-base:pim/pim-base:interfaces/pim-base:interface" | |||
+ "[pim-base:name = current()/../interface-ref]/" | + "[pim-base:name = current()/../interface-ref]/" | |||
+ "pim-base:address-family/pim-base:address-family"; | + "pim-base:address-family/pim-base:address-family"; | |||
} | } | |||
description | description | |||
"Reference to a PIM interface address family."; | "Reference to a PIM interface address family."; | |||
} | } | |||
leaf neighbor-ipv4-ref { | leaf neighbor-ipv4-ref { | |||
when "../interface-af-ref = 'rt:ipv4'" { | when "../interface-af-ref = 'rt:ipv4'" { | |||
description "Only applicable to IPv4 address family."; | description | |||
"Only applicable to an IPv4 address family."; | ||||
} | } | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" | + "pim-base:pim/pim-base:interfaces/pim-base:interface" | |||
+ "[pim-base:name = current()/../interface-ref]/" | + "[pim-base:name = current()/../interface-ref]/" | |||
+ "pim-base:address-family" | + "pim-base:address-family" | |||
+ "[pim-base:address-family = " | + "[pim-base:address-family = " | |||
+ "current()/../interface-af-ref]/" | + "current()/../interface-af-ref]/" | |||
+ "pim-base:neighbors/pim-base:ipv4-neighbor/" | + "pim-base:neighbors/pim-base:ipv4-neighbor/" | |||
+ "pim-base:address"; | + "pim-base:address"; | |||
} | } | |||
description | description | |||
"Reference to a PIM IPv4 neighbor."; | "Reference to a PIM IPv4 neighbor."; | |||
} | } | |||
leaf neighbor-ipv6-ref { | leaf neighbor-ipv6-ref { | |||
when "../interface-af-ref = 'rt:ipv6'" { | when "../interface-af-ref = 'rt:ipv6'" { | |||
description "Only applicable to IPv6 address family."; | description | |||
"Only applicable to an IPv6 address family."; | ||||
} | } | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" | + "pim-base:pim/pim-base:interfaces/pim-base:interface" | |||
+ "[pim-base:name = current()/../interface-ref]/" | + "[pim-base:name = current()/../interface-ref]/" | |||
+ "pim-base:address-family" | + "pim-base:address-family" | |||
+ "[pim-base:address-family = " | + "[pim-base:address-family = " | |||
+ "current()/../interface-af-ref]/" | + "current()/../interface-af-ref]/" | |||
+ "pim-base:neighbors/pim-base:ipv6-neighbor/" | + "pim-base:neighbors/pim-base:ipv6-neighbor/" | |||
+ "pim-base:address"; | + "pim-base:address"; | |||
} | } | |||
description | description | |||
"Reference to a PIM IPv6 neighbor."; | "Reference to a PIM IPv6 neighbor."; | |||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since | "The number of time ticks (hundredths of a second) since | |||
the neighbor relationship has been formed as reachable | the neighbor relationship has been formed as reachable | |||
without beeing timed out."; | without being timed out."; | |||
} | } | |||
} | } | |||
notification pim-interface-event { | notification pim-interface-event { | |||
description "Notification event for interface."; | description | |||
"Notification event for an interface."; | ||||
leaf event-type { | leaf event-type { | |||
type interface-event-type; | type interface-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
uses pim-interface-state-ref; | uses pim-interface-state-ref; | |||
container ipv4 { | container ipv4 { | |||
description "Containing IPv4 information."; | description | |||
"Contains IPv4 information."; | ||||
leaf-list address { | leaf-list address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "List of addresses."; | description | |||
"List of addresses."; | ||||
} | } | |||
leaf dr-address { | leaf dr-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description "DR (Designated Router) address."; | description | |||
"DR (Designated Router) address."; | ||||
} | } | |||
} | } | |||
container ipv6 { | container ipv6 { | |||
description "Containing IPv6 information."; | description | |||
"Contains IPv6 information."; | ||||
leaf-list address { | leaf-list address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "List of addresses."; | description | |||
"List of addresses."; | ||||
} | } | |||
leaf dr-address { | leaf dr-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "DR (Designated Router) address."; | description | |||
"DR address."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]> | ||||
</artwork></figure> | ||||
</section> | </section> | |||
<section title="PIM RP Module"> | <section numbered="true" toc="default"> | |||
<t> | <name>PIM RP Module</name> | |||
This module references | <t> | |||
<xref target="RFC5059"/> and | This module references | |||
<xref target="RFC7761"/>. | <xref target="RFC5059" format="default"/>, | |||
</t> | <xref target="RFC6991"/>, <xref target="RFC7761" format="default"/>, | |||
<figure><artwork> | <xref target="RFC8294"/>, <xref target="RFC8343"/>, and | |||
<![CDATA[ | <xref target="RFC8349"/>. | |||
<CODE BEGINS> file "ietf-pim-rp@2018-04-16.yang" | </t> | |||
<sourcecode name="ietf-pim-rp@2021-09-03.yang" type="yang" markers="true | ||||
"><![CDATA[ | ||||
module ietf-pim-rp { | module ietf-pim-rp { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-rp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pim-rp"; | |||
prefix pim-rp; | prefix pim-rp; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix rt-types; | |||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | } | |||
import ietf-pim-base { | import ietf-pim-base { | |||
prefix "pim-base"; | prefix pim-base; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
organization | organization | |||
"IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Yisong Liu | Editor: Yisong Liu | |||
<mailto:liuyisong@huawei.com> | <mailto:liuyisong@chinamobile.com> | |||
Editor: Fangwei Hu | Editor: Fangwei Hu | |||
<mailto:hu.fangwei@zte.com.cn>"; | <mailto:hufwei@gmail.com>"; | |||
description | description | |||
"The YANG module defines a PIM (Protocol Independent Multicast) | "This YANG module defines a PIM (Protocol Independent Multicast) | |||
RP (Rendezvous Point) model. | RP (Rendezvous Point) model. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9128; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-04-16 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for PIM"; | "RFC 9128: A YANG Data Model for Protocol Independent | |||
Multicast (PIM)"; | ||||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature bsr { | feature bsr { | |||
description | description | |||
"This feature indicates that the system supports BSR | "This feature indicates that the system supports BSRs | |||
(Bootstrap Router)."; | (Bootstrap Routers)."; | |||
reference | reference | |||
"RFC5059: Bootstrap Router (BSR) Mechanism for Protocol | "RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol | |||
Independent Multicast (PIM)."; | Independent Multicast (PIM)"; | |||
} | } | |||
feature bsr-election-state { | feature bsr-election-state { | |||
if-feature bsr; | if-feature "bsr"; | |||
description | description | |||
"This feature indicates that the system supports providing | "This feature indicates that the system supports providing | |||
BSR election state."; | BSR election state."; | |||
reference | reference | |||
"RFC5059: Bootstrap Router (BSR) Mechanism for Protocol | "RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol | |||
Independent Multicast (PIM)."; | Independent Multicast (PIM)"; | |||
} | } | |||
feature static-rp-override { | feature static-rp-override { | |||
description | description | |||
"This feature indicates that the system supports configuration | "This feature indicates that the system supports configuration | |||
of static RP (Rendezvous Point) override."; | of the static RP (Rendezvous Point) that overrides the RP | |||
discoveries from other mechanisms."; | ||||
reference | reference | |||
"RFC7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 3.7."; | (PIM-SM): Protocol Specification (Revised), Section 3.7"; | |||
} | } | |||
feature candidate-interface { | feature candidate-interface { | |||
description | description | |||
"This feature indicates that the system supports using | "This feature indicates that the system supports using | |||
an interface to configure a BSR or RP candidate."; | an interface to configure a BSR or RP candidate."; | |||
} | } | |||
feature candidate-ipv4 { | feature candidate-ipv4 { | |||
description | description | |||
skipping to change at line 3132 ¶ | skipping to change at line 3250 ¶ | |||
feature candidate-ipv6 { | feature candidate-ipv6 { | |||
description | description | |||
"This feature indicates that the system supports using | "This feature indicates that the system supports using | |||
an IPv6 address to configure a BSR or RP candidate."; | an IPv6 address to configure a BSR or RP candidate."; | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef rp-event-type { | typedef rp-event-type { | |||
type enumeration { | type enumeration { | |||
enum invalid-jp { | enum invalid-jp { | |||
description | description | |||
"An invalid JP (Join/Prune) message has been received."; | "An invalid Join/Prune message has been received."; | |||
} | } | |||
enum invalid-register { | enum invalid-register { | |||
description | description | |||
"An invalid register message has been received."; | "An invalid Register message has been received."; | |||
} | } | |||
enum mapping-created { | enum mapping-created { | |||
description | description | |||
"A new mapping has been created."; | "A new mapping has been created."; | |||
} | } | |||
enum mapping-deleted { | enum mapping-deleted { | |||
description | description | |||
"A mapping has been deleted."; | "A mapping has been deleted."; | |||
} | } | |||
} | } | |||
description "Operational status event type for notifications."; | description | |||
"Operational status event type for notifications."; | ||||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity rp-mode { | identity rp-mode { | |||
description | description | |||
"The mode of an RP, which can be SM (Sparse Mode) or | "The mode of an RP, which can be SM (Sparse Mode) or | |||
BIDIR (bi-directional)."; | BIDIR (Bidirectional)."; | |||
} | } | |||
identity rp-info-source-type { | identity rp-info-source-type { | |||
description | description | |||
"The information source of an RP."; | "The information source of an RP."; | |||
} | } | |||
identity static { | identity static { | |||
base rp-info-source-type; | base rp-info-source-type; | |||
description | description | |||
"The RP is statically configured."; | "The RP is statically configured."; | |||
} | } | |||
identity bootstrap { | identity bootstrap { | |||
base rp-info-source-type; | base rp-info-source-type; | |||
description | description | |||
"The RP is learned from bootstrap."; | "The RP is learned from a Bootstrap."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping rp-mapping-state-attributes { | grouping rp-mapping-state-attributes { | |||
description | description | |||
"Grouping of RP mapping attributes."; | "Grouping of RP mapping attributes."; | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since | "The number of time ticks (hundredths of a second) since | |||
the RP mapping or the RP became actively available."; | the RP mapping or the RP became actively available."; | |||
} | } | |||
leaf expiration { | leaf expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description "Expiration time."; | description | |||
"Expiration time."; | ||||
} | } | |||
} // rp-mapping-state-attributes | } // rp-mapping-state-attributes | |||
grouping rp-state-attributes { | grouping rp-state-attributes { | |||
description | description | |||
"Grouping of RP state attributes."; | "Grouping of RP state attributes."; | |||
leaf info-source-type { | leaf info-source-type { | |||
type identityref { | type identityref { | |||
base rp-info-source-type; | base rp-info-source-type; | |||
} | } | |||
description "The information source of an RP."; | description | |||
"The information source of an RP."; | ||||
} // info-source-type | } // info-source-type | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since | "The number of time ticks (hundredths of a second) since | |||
the RP became actively available."; | the RP became actively available."; | |||
} | } | |||
leaf expiration { | leaf expiration { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description "Expiration time."; | description | |||
"Expiration time."; | ||||
} | } | |||
} // rp-state-attributes | } // rp-state-attributes | |||
grouping static-rp-attributes { | grouping static-rp-attributes { | |||
description | description | |||
"Grouping of static RP attributes, used in augmenting | "Grouping of static RP attributes, used in augmenting | |||
modules."; | modules."; | |||
leaf policy-name { | leaf policy-name { | |||
type string; | type string; | |||
description | description | |||
"The string value is the name to uniquely identify a | "The string value is the name to uniquely identify a | |||
policy that contains one or more policy rules used to | policy that contains one or more policy rules used to | |||
determine which multicast group addresses are mapped | determine which multicast group addresses are mapped | |||
to this statically configured RP address. | to this statically configured RP address. | |||
If a policy is not specified, the entire multicast address | If a policy is not specified, the entire multicast address | |||
space is mapped. | space is mapped. | |||
The definition of such a policy is outside the scope | The definition of such a policy is outside the scope | |||
of this document."; | of this document."; | |||
} | } | |||
leaf override { | leaf override { | |||
if-feature static-rp-override; | if-feature "static-rp-override"; | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"When there is a conflict between static RP and dynamic | "When there is a conflict between static RPs and dynamic RPs, | |||
RP, setting this attribute to 'true' will ask the | setting this attribute to 'true' will ask the system to use | |||
system to use static RP."; | static RPs."; | |||
} | } | |||
} // static-rp-attributes | } // static-rp-attributes | |||
grouping rp-candidate-attributes { | grouping rp-candidate-attributes { | |||
description | description | |||
"Grouping of RP candidate attributes."; | "Grouping of RP candidate attributes."; | |||
leaf policy-name { | leaf policy-name { | |||
type string; | type string; | |||
description | description | |||
"The string value is the name to uniquely identify a | "The string value is the name to uniquely identify a | |||
skipping to change at line 3264 ¶ | skipping to change at line 3391 ¶ | |||
space is accepted. | space is accepted. | |||
The definition of such a policy is outside the scope | The definition of such a policy is outside the scope | |||
of this document."; | of this document."; | |||
} | } | |||
leaf mode { | leaf mode { | |||
type identityref { | type identityref { | |||
base rp-mode; | base rp-mode; | |||
} | } | |||
description | description | |||
"The mode of an RP, which can be SM (Sparse Mode) or BIDIR | "The mode of an RP, which can be SM (Sparse Mode) or BIDIR | |||
(bi-directional), each of them is defined in a saparate YNAG | (Bidirectional). Each of these modes is defined in a | |||
module. If a system supports an RP mode, the corresponding | separate YANG module. If a system supports an RP mode, | |||
YANG module is implemented. | the corresponding YANG module is implemented. | |||
When the value of this leaf is not specified, the default | When the value of this leaf is not specified, the default | |||
value is the supported mode if only one mode is implemented, | value is the supported mode if only one mode is implemented, | |||
or the default value is SM (Sparce Mode) if both SM and | or the default value is SM if both SM and BIDIR are | |||
BIDIR are implemented."; | implemented."; | |||
} | } | |||
} // rp-candidate-attributes | } // rp-candidate-attributes | |||
/* | /* | |||
* Configuration data nodes | * Configuration data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | |||
+ "pim-base:address-family" { | + "pim-base:address-family" { | |||
description "PIM RP augmentation."; | description | |||
"PIM RP augmentation."; | ||||
container rp { | container rp { | |||
description | description | |||
"PIM RP configuration data."; | "PIM RP configuration data."; | |||
container static-rp { | container static-rp { | |||
description | description | |||
"Containing static RP attributes."; | "Contains static RP attributes."; | |||
list ipv4-rp { | list ipv4-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv4 RP addresses."; | "A list of IPv4 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Specifies a static RP address."; | "Specifies a static RP address."; | |||
} | } | |||
} | } | |||
skipping to change at line 3303 ¶ | skipping to change at line 3429 ¶ | |||
} | } | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv4 RP addresses."; | "A list of IPv4 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Specifies a static RP address."; | "Specifies a static RP address."; | |||
} | } | |||
} | } | |||
list ipv6-rp { | list ipv6-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Specifies a static RP address."; | "Specifies a static RP address."; | |||
} | } | |||
} | } | |||
skipping to change at line 3319 ¶ | skipping to change at line 3444 ¶ | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Specifies a static RP address."; | "Specifies a static RP address."; | |||
} | } | |||
} | } | |||
} // static-rp | } // static-rp | |||
container bsr { | container bsr { | |||
if-feature bsr; | if-feature "bsr"; | |||
description | description | |||
"Containing BSR (BootStrap Router) attributes."; | "Contains BSR (Bootstrap Router) attributes."; | |||
container bsr-candidate { | container bsr-candidate { | |||
presence | presence "Present to serve as a BSR candidate."; | |||
"Present to serve as a BSR candidate"; | ||||
description | description | |||
"BSR candidate attributes."; | "BSR candidate attributes."; | |||
choice interface-or-address { | choice interface-or-address { | |||
description | description | |||
"Use either interface or ip-address."; | "Use either an interface or an IP address."; | |||
case interface { | case interface { | |||
if-feature candidate-interface; | if-feature "candidate-interface"; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Interface to be used by BSR."; | "Interface to be used by a BSR."; | |||
} | } | |||
} | } | |||
case ipv4-address { | case ipv4-address { | |||
when "../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
if-feature candidate-ipv4; | if-feature "candidate-ipv4"; | |||
leaf ipv4-address { | leaf ipv4-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"IP address to be used by BSR."; | "IP address to be used by a BSR."; | |||
} | } | |||
} | } | |||
case ipv6-address { | case ipv6-address { | |||
when "../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
if-feature candidate-ipv6; | if-feature "candidate-ipv6"; | |||
leaf ipv6-address { | leaf ipv6-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"IP address to be used by BSR."; | "IP address to be used by a BSR."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf hash-mask-length { | ||||
leaf hash-mask-length{ | ||||
type uint8 { | type uint8 { | |||
range "0..128"; | range "0..128"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Value contained in BSR messages used by all routers to | "Value contained in BSR messages used by all routers to | |||
hash (map) to an RP."; | hash (map) to an RP."; | |||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0..255"; | range "0..255"; | |||
} | } | |||
default 64; | default "64"; | |||
description | description | |||
"BSR election priority among different candidate BSRs. | "BSR election priority among different candidate BSRs. | |||
A larger value has a higher priority over a smaller | A larger value has a higher priority over a smaller | |||
value."; | value."; | |||
} | } | |||
} // bsr-candidate | } // bsr-candidate | |||
container rp-candidate { | container rp-candidate { | |||
description | description | |||
"Containing RP candidate attributes."; | "Contains RP candidate attributes."; | |||
list interface { | list interface { | |||
if-feature candidate-interface; | if-feature "candidate-interface"; | |||
key "name"; | key "name"; | |||
description | description | |||
"A list of RP candidates"; | "A list of RP candidates."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface that the RP candidate uses."; | "Interface that the RP candidate uses."; | |||
} | } | |||
uses rp-candidate-attributes; | uses rp-candidate-attributes; | |||
} | } | |||
list ipv4-address { | list ipv4-address { | |||
when "../../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
if-feature candidate-ipv4; | if-feature "candidate-ipv4"; | |||
key "address"; | key "address"; | |||
description | description | |||
"A list of RP candidate addresses."; | "A list of RP candidate addresses."; | |||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address that the RP candidate uses."; | "IPv4 address that the RP candidate uses."; | |||
} | } | |||
uses rp-candidate-attributes; | uses rp-candidate-attributes; | |||
} | } | |||
skipping to change at line 3424 ¶ | skipping to change at line 3542 ¶ | |||
key "address"; | key "address"; | |||
description | description | |||
"A list of RP candidate addresses."; | "A list of RP candidate addresses."; | |||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address that the RP candidate uses."; | "IPv4 address that the RP candidate uses."; | |||
} | } | |||
uses rp-candidate-attributes; | uses rp-candidate-attributes; | |||
} | } | |||
list ipv6-address { | list ipv6-address { | |||
when "../../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
if-feature candidate-ipv6; | if-feature "candidate-ipv6"; | |||
key "address"; | key "address"; | |||
description | description | |||
"A list of RP candidate addresses."; | "A list of RP candidate addresses."; | |||
leaf address { | leaf address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 address that the RP candidate uses."; | "IPv6 address that the RP candidate uses."; | |||
} | } | |||
uses rp-candidate-attributes; | uses rp-candidate-attributes; | |||
} | } | |||
} | } | |||
// BSR state attributes | ||||
// BSR state attributes. | ||||
container bsr { | container bsr { | |||
config false; | config false; | |||
description | description | |||
"BSR information."; | "BSR information."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "BSR address"; | description | |||
"BSR address."; | ||||
} | } | |||
leaf hash-mask-length { | leaf hash-mask-length { | |||
type uint8 { | type uint8 { | |||
range "0..128"; | range "0..128"; | |||
} | } | |||
description "Hash mask length."; | description | |||
"Hash mask length."; | ||||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0..255"; | range "0..255"; | |||
} | } | |||
description "Priority."; | description | |||
"Priority."; | ||||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) | "The number of time ticks (hundredths of a second) | |||
since the BSR became up."; | since the BSR came up."; | |||
} | } | |||
} | } | |||
choice election-state { | choice election-state { | |||
if-feature bsr-election-state; | if-feature "bsr-election-state"; | |||
config false; | config false; | |||
description "BSR election state."; | description | |||
"BSR election state."; | ||||
case candidate { | case candidate { | |||
leaf candidate-bsr-state { | leaf candidate-bsr-state { | |||
type enumeration { | type enumeration { | |||
enum "candidate" { | enum candidate { | |||
description | description | |||
"The router is a candidate to be the BSR for the | "The router is a candidate to be the BSR for the | |||
scope zone, but currently another router is the | scope zone, but currently another router is the | |||
preferred BSR."; | preferred BSR."; | |||
} | } | |||
enum "pending" { | enum pending { | |||
description | description | |||
"The router is a candidate to be the BSR for the | "The router is a candidate to be the BSR for the | |||
scope zone. Currently, no other router is the | scope zone. Currently, no other router is the | |||
preferred BSR, but this router is not yet the | preferred BSR, but this router is not yet the | |||
elected BSR. This is a temporary state that | elected BSR. This is a temporary state that | |||
prevents rapid thrashing of the choice of BSR | prevents rapid thrashing of the choice of BSR | |||
during BSR election."; | during BSR election."; | |||
} | } | |||
enum "elected" { | enum elected { | |||
description | description | |||
"The router is the elected BSR for the scope zone | "The router is the elected BSR for the | |||
and it must perform all the BSR functions."; | scope zone, and it must perform all of the | |||
BSR functions."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Candidate-BSR state."; | "Candidate-BSR (C-BSR) state."; | |||
reference | reference | |||
"RFC5059, Section 3.1.1."; | "RFC 5059: Bootstrap Router (BSR) Mechanism for | |||
Protocol Independent Multicast (PIM), | ||||
Section 3.1.1"; | ||||
} | } | |||
} | } | |||
case "non-candidate" { | case non-candidate { | |||
leaf non-candidate-bsr-state { | leaf non-candidate-bsr-state { | |||
type enumeration { | type enumeration { | |||
enum "no-info" { | enum no-info { | |||
description | description | |||
"The router has no information about this scope | "The router has no information about this scope | |||
zone."; | zone."; | |||
} | } | |||
enum "accept-any" { | enum accept-any { | |||
description | description | |||
"The router does not know of an active BSR, and | "The router does not know of an active BSR and | |||
will accept the first Bootstrap message it sees | will accept the first Bootstrap message it sees | |||
as giving the new BSR's identity and the | that provides the new BSR's identity and the | |||
RP-Set."; | RP-Set."; | |||
} | } | |||
enum "accept" { | enum accept { | |||
description | description | |||
"The router knows the identity of the current | "The router knows the identity of the current | |||
BSR, and is using the RP-Set provided by that | BSR and is using the RP-Set provided by that | |||
BSR. Only Bootstrap messages from that BSR or | BSR. Only Bootstrap messages from that BSR or | |||
from a Candidate-BSR (C-BSR) with higher weight | from a Candidate-BSR (C-BSR) with higher weight | |||
than the current BSR will be accepted."; | than the current BSR will be accepted."; | |||
} | } | |||
} | } | |||
description | description | |||
"Non-candidate-BSR state."; | "Non-Candidate-BSR state."; | |||
reference | reference | |||
"RFC5059, Section 3.1.2."; | "RFC 5059: Bootstrap Router (BSR) Mechanism for | |||
Protocol Independent Multicast (PIM), | ||||
Section 3.1.2"; | ||||
} | } | |||
} | } | |||
} // election-state | } // election-state | |||
leaf bsr-next-bootstrap { | leaf bsr-next-bootstrap { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
config false; | config false; | |||
description | description | |||
"The remaining time interval in seconds until the next | "The remaining time interval in seconds until the next | |||
bootstrap will be sent."; | Bootstrap will be sent."; | |||
} | } | |||
container rp { | container rp { | |||
config false; | config false; | |||
description | description | |||
"State information of the RP."; | "State information of the RP."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RP address."; | description | |||
"RP address."; | ||||
} | } | |||
leaf policy-name { | leaf policy-name { | |||
type string; | type string; | |||
description | description | |||
"The string value is the name to uniquely identify a | "The string value is the name to uniquely identify a | |||
policy that contains one or more policy rules used to | policy that contains one or more policy rules used to | |||
accept or reject certain multicast groups. | accept or reject certain multicast groups. | |||
If a policy is not specified, the entire multicast | If a policy is not specified, the entire multicast | |||
address space is accepted. | address space is accepted. | |||
The definition of such a policy is outside the scope | The definition of such a policy is outside the scope | |||
skipping to change at line 3573 ¶ | skipping to change at line 3698 ¶ | |||
} | } | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
description | description | |||
"The number of time ticks (hundredths of a second) | "The number of time ticks (hundredths of a second) | |||
since the RP became actively available."; | since the RP became actively available."; | |||
} | } | |||
} | } | |||
leaf rp-candidate-next-advertisement { | leaf rp-candidate-next-advertisement { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
config false; | config false; | |||
description | description | |||
"The remaining time interval in seconds until the next | "The remaining time interval in seconds until the next | |||
RP candidate advertisement will be sent."; | RP candidate advertisement will be sent."; | |||
} | } | |||
} // bsr | } // bsr | |||
container rp-list { | container rp-list { | |||
config false; | config false; | |||
description | description | |||
"Containing a list of RPs."; | "Contains a list of RPs."; | |||
list ipv4-rp { | list ipv4-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "rp-address mode"; | key "rp-address mode"; | |||
description | description | |||
"A list of IPv4 RP addresses."; | "A list of IPv4 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"RP address."; | "RP address."; | |||
} | } | |||
leaf mode { | leaf mode { | |||
skipping to change at line 3612 ¶ | skipping to change at line 3736 ¶ | |||
description | description | |||
"RP mode."; | "RP mode."; | |||
} | } | |||
leaf info-source-address { | leaf info-source-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address where RP information is learned."; | "The address where RP information is learned."; | |||
} | } | |||
uses rp-state-attributes; | uses rp-state-attributes; | |||
} | } | |||
list ipv6-rp { | list ipv6-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "rp-address mode"; | key "rp-address mode"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"RP address."; | "RP address."; | |||
} | } | |||
leaf mode { | leaf mode { | |||
skipping to change at line 3641 ¶ | skipping to change at line 3764 ¶ | |||
"RP mode."; | "RP mode."; | |||
} | } | |||
leaf info-source-address { | leaf info-source-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"The address where RP information is learned."; | "The address where RP information is learned."; | |||
} | } | |||
uses rp-state-attributes; | uses rp-state-attributes; | |||
} | } | |||
} // rp-list | } // rp-list | |||
container rp-mappings { | container rp-mappings { | |||
config false; | config false; | |||
description | description | |||
"Containing a list of group-to-RP mappings."; | "Contains a list of group-to-RP mappings."; | |||
list ipv4-rp { | list ipv4-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "group-range rp-address"; | key "group-range rp-address"; | |||
description | description | |||
"A list of group-to-RP mappings."; | "A list of group-to-RP mappings."; | |||
leaf group-range { | leaf group-range { | |||
type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
description | description | |||
"Group range presented in the format of prefix."; | "Group range presented in the format of a prefix."; | |||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"RP address."; | "RP address."; | |||
} | } | |||
uses rp-mapping-state-attributes; | uses rp-mapping-state-attributes; | |||
} | } | |||
list ipv6-rp { | list ipv6-rp { | |||
when "../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "group-range rp-address"; | key "group-range rp-address"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf group-range { | leaf group-range { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"Group range presented in the format of prefix."; | "Group range presented in the format of a prefix."; | |||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"RP address."; | "RP address."; | |||
} | } | |||
uses rp-mapping-state-attributes; | uses rp-mapping-state-attributes; | |||
} | } | |||
} // rp-mappings | } // rp-mappings | |||
} // rp | } // rp | |||
skipping to change at line 3694 ¶ | skipping to change at line 3815 ¶ | |||
} | } | |||
uses rp-mapping-state-attributes; | uses rp-mapping-state-attributes; | |||
} | } | |||
} // rp-mappings | } // rp-mappings | |||
} // rp | } // rp | |||
} // augment | } // augment | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification pim-rp-event { | notification pim-rp-event { | |||
description "Notification event for RP."; | description | |||
"Notification event for an RP."; | ||||
leaf event-type { | leaf event-type { | |||
type rp-event-type; | type rp-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
uses pim-base:pim-instance-af-state-ref; | uses pim-base:pim-instance-af-state-ref; | |||
leaf group { | leaf group { | |||
type rt-types:ip-multicast-group-address; | type rt-types:ip-multicast-group-address; | |||
description "Group address."; | description | |||
"Group address."; | ||||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RP address."; | description | |||
"RP address."; | ||||
} | } | |||
leaf is-rpt { | leaf is-rpt { | |||
type boolean; | type boolean; | |||
description "'true' if the tree is RPT (RP-Tree)."; | description | |||
"'true' if the tree is an RPT (Rendezvous Point Tree)."; | ||||
} | } | |||
leaf mode { | leaf mode { | |||
type identityref { | type identityref { | |||
base pim-base:pim-mode; | base pim-base:pim-mode; | |||
} | } | |||
description "PIM mode."; | description | |||
"PIM mode."; | ||||
} | } | |||
leaf message-origin { | leaf message-origin { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Where the message is originated."; | description | |||
"Where the message originated."; | ||||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]> | ||||
</artwork></figure> | ||||
</section> | </section> | |||
<section title="PIM-SM Module"> | <section numbered="true" toc="default"> | |||
<t> | <name>PIM-SM Module</name> | |||
This module references | <t> | |||
<xref target="RFC4607"/> and | This module references | |||
<xref target="RFC7761"/>. | <xref target="RFC4607" format="default"/>, | |||
</t> | <xref target="RFC6991"/>, | |||
<figure><artwork> | <xref target="RFC7761" format="default"/>, and | |||
<![CDATA[ | <xref target="RFC8349"/>. | |||
<CODE BEGINS> file "ietf-pim-sm@2018-04-16.yang" | </t> | |||
<sourcecode name="ietf-pim-sm@2021-09-03.yang" type="yang" markers="true | ||||
"><![CDATA[ | ||||
module ietf-pim-sm { | module ietf-pim-sm { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-sm"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pim-sm"; | |||
prefix pim-sm; | prefix pim-sm; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | } | |||
import ietf-pim-base { | import ietf-pim-base { | |||
prefix "pim-base"; | prefix pim-base; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
import ietf-pim-rp { | import ietf-pim-rp { | |||
prefix "pim-rp"; | prefix pim-rp; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
organization | organization | |||
"IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Yisong Liu | Editor: Yisong Liu | |||
<mailto:liuyisong@huawei.com> | <mailto:liuyisong@chinamobile.com> | |||
Editor: Fangwei Hu | Editor: Fangwei Hu | |||
<mailto:hu.fangwei@zte.com.cn>"; | <mailto:hufwei@gmail.com>"; | |||
description | description | |||
"The YANG module defines a PIM (Protocol Independent Multicast) | "This YANG module defines a PIM (Protocol Independent Multicast) | |||
SM (Sparse Mode) model. | SM (Sparse Mode) model. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9128; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-04-16 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for PIM. | "RFC 9128: A YANG Data Model for Protocol Independent | |||
RFC7761: Protocol Independent Multicast - Sparse Mode | Multicast (PIM)"; | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.2."; | ||||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature spt-switch-infinity { | feature spt-switch-infinity { | |||
description | description | |||
"This feature indicates that the system supports configuration | "This feature indicates that the system supports the | |||
choice whether to trigger the switchover from the RPT | configuration choice of whether to trigger switchover from | |||
(Rendezvous Point Tree) to the SPT (Shortest Path Tree)."; | the RPT (Rendezvous Point Tree) to the SPT (Shortest Path | |||
Tree)."; | ||||
reference | reference | |||
"RFC7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.2."; | (PIM-SM): Protocol Specification (Revised), Section 4.2"; | |||
} | } | |||
feature spt-switch-policy { | feature spt-switch-policy { | |||
description | description | |||
"This feature indicates that the system supports configuring | "This feature indicates that the system supports configuring | |||
policy for the switchover from the RPT to the SPT."; | the policy for switchover from the RPT to the SPT."; | |||
reference | reference | |||
"RFC7761: Protocol Independent Multicast - Sparse Mode | "RFC 7761: Protocol Independent Multicast - Sparse Mode | |||
(PIM-SM): Protocol Specification (Revised). Sec. 4.2."; | (PIM-SM): Protocol Specification (Revised), Section 4.2"; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity rp-sm { | identity rp-sm { | |||
base pim-rp:rp-mode; | base pim-rp:rp-mode; | |||
description | description | |||
"SM (Sparse Mode)."; | "SM (Sparse Mode)."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping static-rp-sm-container { | grouping static-rp-sm-container { | |||
description | description | |||
"Grouping that contains SM attributes for static RP."; | "Grouping that contains SM attributes for static RPs."; | |||
container sm { | container sm { | |||
presence | presence "Indicates support for PIM-SM."; | |||
"Indicate the support of sparse mode."; | ||||
description | description | |||
"PIM SM configuration data."; | "PIM-SM configuration data."; | |||
uses pim-rp:static-rp-attributes; | uses pim-rp:static-rp-attributes; | |||
} // sm | } // sm | |||
} // static-rp-sm-container | } // static-rp-sm-container | |||
/* | /* | |||
* Configuration data nodes | * Configuration data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | ||||
+ "pim-base:address-family" { | ||||
description "PIM SM augmentation."; | ||||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | ||||
+ "pim-base:address-family" { | ||||
description | ||||
"PIM-SM augmentation."; | ||||
container sm { | container sm { | |||
description | description | |||
"PIM SM configuration data."; | "PIM-SM configuration data."; | |||
container asm { | container asm { | |||
description | description | |||
"ASM (Any Source Multicast) attributes."; | "ASM (Any-Source Multicast) attributes."; | |||
container anycast-rp { | container anycast-rp { | |||
presence | presence "Present to enable an Anycast-RP | |||
"Present to enable anycast RP (Rendezvous Point)."; | (Rendezvous Point)."; | |||
description | description | |||
"Anycast RP attributes."; | "Anycast-RP attributes."; | |||
list ipv4-anycast-rp { | list ipv4-anycast-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "anycast-address rp-address"; | key "anycast-address rp-address"; | |||
description | description | |||
"A list of IPv4 anycast RP settings, only applicable | "A list of IPv4 Anycast-RP settings. Only applicable | |||
when pim-base:address-family is IPv4."; | when 'pim-base:address-family' is IPv4."; | |||
leaf anycast-address { | leaf anycast-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IP address of the anycast RP set. This IP address | "IP address of the Anycast-RP set. This IP address | |||
is used by the multicast groups or sources to join | is used by the multicast groups or sources to join | |||
or register."; | or register."; | |||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IP address of the router configured with anycast | "IP address of the router configured with an | |||
RP. This is the IP address where the Register | Anycast-RP. This is the IP address where the | |||
messages are forwarded."; | Register messages are forwarded."; | |||
} | } | |||
} | } | |||
list ipv6-anycast-rp { | list ipv6-anycast-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "anycast-address rp-address"; | key "anycast-address rp-address"; | |||
description | description | |||
"A list of IPv6 anycast RP settings, only applicable | "A list of IPv6 Anycast-RP settings. Only applicable | |||
when pim-base:address-family is IPv6."; | when 'pim-base:address-family' is IPv6."; | |||
leaf anycast-address { | leaf anycast-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IP address of the anycast RP set. This IP address | "IP address of the Anycast-RP set. This IP address | |||
is used by the multicast groups or sources to join | is used by the multicast groups or sources to join | |||
or register."; | or register."; | |||
} | } | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IP address of the router configured with anycast | "IP address of the router configured with an | |||
RP. This is the IP address where the Register | Anycast-RP. This is the IP address where the | |||
messages are forwarded."; | Register messages are forwarded."; | |||
} | } | |||
} | } | |||
} | } | |||
container spt-switch { | container spt-switch { | |||
description | description | |||
"SPT (Shortest Path Tree) switching attributes."; | "SPT (Shortest Path Tree) switching attributes."; | |||
container infinity { | container infinity { | |||
if-feature spt-switch-infinity; | if-feature "spt-switch-infinity"; | |||
presence | presence "Present if the SPT switchover threshold is set | |||
"Present if SPT switchover threshold is set to | to infinity, according to the policy specified | |||
infinity, according to the policy specified below."; | below."; | |||
description | description | |||
"The receiver's DR (Designated Router) never triggers | "The receiver's DR (Designated Router) never triggers | |||
the switchover from the RPT to the SPT."; | switchover from the RPT to the SPT."; | |||
leaf policy-name { | leaf policy-name { | |||
if-feature spt-switch-policy; | if-feature "spt-switch-policy"; | |||
type string; | type string; | |||
description | description | |||
"The string value is the name to uniquely identify a | "The string value is the name to uniquely identify a | |||
policy that contains one or more policy rules used | policy that contains one or more policy rules used | |||
to accept or reject certain multicast groups. | to accept or reject certain multicast groups. | |||
The groups accepted by this policy have the SPT | The groups accepted by this policy have the SPT | |||
switchover threshold set to infinity, meaning that | switchover threshold set to infinity, meaning that | |||
they will stay on the shared tree forever. | they will stay on the shared tree forever. | |||
If a policy is not specified, the entire multicast | If a policy is not specified, the entire multicast | |||
address space is accepted. | address space is accepted. | |||
skipping to change at line 3959 ¶ | skipping to change at line 4090 ¶ | |||
switchover threshold set to infinity, meaning that | switchover threshold set to infinity, meaning that | |||
they will stay on the shared tree forever. | they will stay on the shared tree forever. | |||
If a policy is not specified, the entire multicast | If a policy is not specified, the entire multicast | |||
address space is accepted. | address space is accepted. | |||
The definition of such a policy is outside the scope | The definition of such a policy is outside the scope | |||
of this document."; | of this document."; | |||
} | } | |||
} // infinity | } // infinity | |||
} | } | |||
} // asm | } // asm | |||
container ssm { | container ssm { | |||
presence | presence "Present to enable SSM (Source-Specific | |||
"Present to enable SSM (Source-Specific Multicast)."; | Multicast)."; | |||
description | description | |||
"SSM (Source-Specific Multicast) attributes."; | "SSM attributes."; | |||
leaf range-policy { | leaf range-policy { | |||
type string; | type string; | |||
description | description | |||
"The string value is the name to uniquely identify a | "The string value is the name to uniquely identify a | |||
policy that contains one or more policy rules used | policy that contains one or more policy rules used | |||
to accept or reject certain multicast groups. | to accept or reject certain multicast groups. | |||
The groups accepted by this policy define the multicast | The groups accepted by this policy define the multicast | |||
group rang used by SSM. | group range used by SSM. | |||
If a policy is not specified, the default SSM multicast | If a policy is not specified, the default SSM multicast | |||
group rang is used. | group range is used. | |||
The default SSM multicast group range is 232.0.0.0/8 for | The default SSM multicast group range is 232.0.0.0/8 | |||
IPv4 and ff3x::/96 for IPv6 where x reprents any valid | for IPv4 and ff3x::/96 for IPv6, where x represents any | |||
scope identifier. | valid scope identifier. | |||
The definition of such a policy is outside the scope | The definition of such a policy is outside the scope | |||
of this document."; | of this document."; | |||
reference | reference | |||
"RFC4607: Source-Specific Multicast for IP."; | "RFC 4607: Source-Specific Multicast for IP"; | |||
} | } | |||
} // ssm | } // ssm | |||
} // sm | } // sm | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | |||
+ "pim-base:interfaces/pim-base:interface/" | + "pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family" { | + "pim-base:address-family" { | |||
description "PIM SM augmentation."; | description | |||
"PIM-SM augmentation."; | ||||
container sm { | container sm { | |||
presence "Present to enable sparse-mode."; | presence "Present to enable PIM-SM."; | |||
description | description | |||
"PIM SM configuration data."; | "PIM-SM configuration data."; | |||
leaf passive { | leaf passive { | |||
type empty; | type empty; | |||
description | description | |||
"Specifies that no PIM messages are sent or accepted on | "Specifies that no PIM messages are sent or accepted on | |||
this PIM interface, but the interface can be included in a | this PIM interface, but the interface can be included in a | |||
multicast forwarding entry."; | multicast forwarding entry."; | |||
} | } | |||
} // sm | } // sm | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | |||
+ "pim-base:address-family/pim-rp:rp/" | + "pim-base:address-family/pim-rp:rp/" | |||
+ "pim-rp:static-rp/pim-rp:ipv4-rp" { | + "pim-rp:static-rp/pim-rp:ipv4-rp" { | |||
description "PIM SM augmentation."; | description | |||
"PIM-SM augmentation."; | ||||
uses static-rp-sm-container; | uses static-rp-sm-container; | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" | |||
+ "pim-base:address-family/pim-rp:rp/" | + "pim-base:address-family/pim-rp:rp/" | |||
+ "pim-rp:static-rp/pim-rp:ipv6-rp" { | + "pim-rp:static-rp/pim-rp:ipv6-rp" { | |||
description "PIM SM augmentation."; | description | |||
"PIM-SM augmentation."; | ||||
uses static-rp-sm-container; | uses static-rp-sm-container; | |||
} // augment | } // augment | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]> | ||||
</artwork></figure> | ||||
</section> | </section> | |||
<section title="PIM-DM Module"> | <section numbered="true" toc="default"> | |||
<t> | <name>PIM-DM Module</name> | |||
This module references | <t> | |||
<xref target="RFC3973"/>. | This module references | |||
</t> | <xref target="RFC3973" format="default"/> and | |||
<figure><artwork> | <xref target="RFC8349"/>. | |||
<![CDATA[ | </t> | |||
<CODE BEGINS> file "ietf-pim-dm@2018-04-16.yang" | <sourcecode name="ietf-pim-dm@2021-09-03.yang" type="yang" markers="true | |||
"><![CDATA[ | ||||
module ietf-pim-dm { | module ietf-pim-dm { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-dm"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pim-dm"; | |||
prefix pim-dm; | prefix pim-dm; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | } | |||
import ietf-pim-base { | import ietf-pim-base { | |||
prefix "pim-base"; | prefix pim-base; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
organization | organization | |||
"IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Yisong Liu | Editor: Yisong Liu | |||
<mailto:liuyisong@huawei.com> | <mailto:liuyisong@chinamobile.com> | |||
Editor: Fangwei Hu | Editor: Fangwei Hu | |||
<mailto:hu.fangwei@zte.com.cn>"; | <mailto:hufwei@gmail.com>"; | |||
description | description | |||
"The YANG module defines a PIM (Protocol Independent Multicast) | "This YANG module defines a PIM (Protocol Independent Multicast) | |||
DM (Dense Mode) model. | DM (Dense Mode) model. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9128; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-04-16 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for PIM. | "RFC 9128: A YANG Data Model for Protocol Independent | |||
RFC 3973: Protocol Independent Multicast - Dense Mode | Multicast (PIM)"; | |||
(PIM-DM): Protocol Specification (Revised)."; | ||||
} | } | |||
/* | /* | |||
* Configuration data nodes | * Configuration data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family" { | + "pim-base:pim/pim-base:address-family" { | |||
description "PIM DM (Dense Mode) augmentation."; | description | |||
"PIM-DM augmentation."; | ||||
container dm { | container dm { | |||
presence "Present to enable dense-mode."; | presence "Present to enable PIM-DM."; | |||
description | description | |||
"PIM DM configuration data."; | "PIM-DM configuration data."; | |||
} // Dm | } // dm | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family" { | + "pim-base:address-family" { | |||
description "PIM DM augmentation to PIM base interface."; | description | |||
"PIM-DM augmentation to 'pim-base:interface'."; | ||||
container dm { | container dm { | |||
presence "Present to enable dense-mode."; | presence "Present to enable PIM-DM."; | |||
description | description | |||
"PIM DM configuration data."; | "PIM-DM configuration data."; | |||
} // sm | } // dm | |||
} // augment | } // augment | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]> | ||||
</artwork></figure> | ||||
</section> | </section> | |||
<section title="PIM-BIDIR Module"> | <section numbered="true" toc="default"> | |||
<t> | <name>BIDIR-PIM Module</name> | |||
This module references | <t> | |||
<xref target="RFC5015"/>. | This module references | |||
</t> | <xref target="RFC5015" format="default"/>, | |||
<figure><artwork> | <xref target="RFC6991"/>, <xref target="RFC8294"/>, | |||
<![CDATA[ | <xref target="RFC8343"/>, and <xref target="RFC8349"/>. | |||
<CODE BEGINS> file "ietf-pim-bidir@2018-04-16.yang" | </t> | |||
<sourcecode name="ietf-pim-bidir@2021-09-03.yang" type="yang" markers="t | ||||
rue"><![CDATA[ | ||||
module ietf-pim-bidir { | module ietf-pim-bidir { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir"; | namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir"; | |||
prefix pim-bidir; | prefix pim-bidir; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix rt-types; | |||
reference | ||||
"RFC 8294: Common YANG Data Types for the Routing Area"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference | ||||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | ||||
"RFC 8349: A YANG Data Model for Routing Management (NMDA | ||||
Version)"; | ||||
} | } | |||
import ietf-pim-base { | import ietf-pim-base { | |||
prefix "pim-base"; | prefix pim-base; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
import ietf-pim-rp { | import ietf-pim-rp { | |||
prefix "pim-rp"; | prefix pim-rp; | |||
reference | ||||
"RFC 9128: A YANG Data Model for Protocol Independent | ||||
Multicast (PIM)"; | ||||
} | } | |||
organization | organization | |||
"IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <https://datatracker.ietf.org/wg/pim/> | |||
WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Pete McAllister | Editor: Pete McAllister | |||
<mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
Editor: Anish Peter | Editor: Anish Peter | |||
<mailto:anish.ietf@gmail.com> | <mailto:anish.ietf@gmail.com> | |||
Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
<mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
Editor: Yisong Liu | Editor: Yisong Liu | |||
<mailto:liuyisong@huawei.com> | <mailto:liuyisong@chinamobile.com> | |||
Editor: Fangwei Hu | Editor: Fangwei Hu | |||
<mailto:hu.fangwei@zte.com.cn>"; | <mailto:hufwei@gmail.com>"; | |||
description | description | |||
"The YANG module defines a PIM (Protocol Independent Multicast) | "This YANG module defines a PIM (Protocol Independent Multicast) | |||
BIDIR (Bidirectional) mode model. | BIDIR (Bidirectional) mode model. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 9128; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-04-16 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for PIM. | "RFC 9128: A YANG Data Model for Protocol Independent | |||
RFC5015: Bidirectional Protocol Independent Multicast | Multicast (PIM)"; | |||
(BIDIR-PIM)."; | ||||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature intf-df-election { | feature intf-df-election { | |||
description | description | |||
"Support configuration of interface DF election."; | "Supports configuration of interface DF election."; | |||
reference | reference | |||
"RFC5015: Bidirectional Protocol Independent Multicast | "RFC 5015: Bidirectional Protocol Independent Multicast | |||
(BIDIR-PIM). Sec. 3.5."; | (BIDIR-PIM), Section 3.5"; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity rp-bidir { | identity rp-bidir { | |||
base pim-rp:rp-mode; | base pim-rp:rp-mode; | |||
description | description | |||
"BIDIR (Bidirectional) mode."; | "BIDIR mode."; | |||
} | } | |||
identity df-state { | identity df-state { | |||
description | description | |||
"DF (Designated Forwarder) election state type."; | "DF (Designated Forwarder) election state type."; | |||
reference | reference | |||
"RFC5015: Bidirectional Protocol Independent Multicast | "RFC 5015: Bidirectional Protocol Independent Multicast | |||
(BIDIR-PIM)."; | (BIDIR-PIM)"; | |||
} | } | |||
identity df-state-offer { | identity df-state-offer { | |||
base df-state; | base df-state; | |||
description | description | |||
"Initial election state. When in the Offer state, a router | "Initial election state. When in the Offer state, a router | |||
thinks it can eventually become the winner and periodically | thinks it can eventually become the winner and periodically | |||
generates Offer messages."; | generates Offer messages."; | |||
} | } | |||
identity df-state-lose { | identity df-state-lose { | |||
base df-state; | base df-state; | |||
description | description | |||
"There either is a different election winner or that no | "Either (1) there is a different election winner or | |||
router on the link has a path to the RPA (Rendezvous-Point | (2) no router on the link has a path to the RPA | |||
Address)."; | (Rendezvous Point Address)."; | |||
} | } | |||
identity df-state-win { | identity df-state-win { | |||
base df-state; | base df-state; | |||
description | description | |||
"The router is the acting DF without any contest."; | "The router is the acting DF without any contest."; | |||
} | } | |||
identity df-state-backoff { | identity df-state-backoff { | |||
base df-state; | base df-state; | |||
description | description | |||
"The router is the acting DF but another router has made a | "The router is the acting DF, but another router has made a | |||
bid to take over."; | bid to take over."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping static-rp-bidir-container { | grouping static-rp-bidir-container { | |||
description | description | |||
"Grouping that contains BIDIR (Bidirectional) attributes for | "Grouping that contains BIDIR attributes for a static RP | |||
static RP (Rendezvous-Point)."; | (Rendezvous Point)."; | |||
container bidir { | container bidir { | |||
presence | presence "Indicates support for BIDIR mode."; | |||
"Indicate the support of BIDIR mode."; | ||||
description | description | |||
"PIM BIDIR configuration data."; | "PIM-BIDIR configuration data."; | |||
uses pim-rp:static-rp-attributes; | uses pim-rp:static-rp-attributes; | |||
} // bidir | } // bidir | |||
} // static-rp-bidir-container | } // static-rp-bidir-container | |||
grouping interface-df-election-state-attributes { | grouping interface-df-election-state-attributes { | |||
description | description | |||
"Grouping that contains the state attributes of a DF election | "Grouping that contains the state attributes of a DF election | |||
on an interface."; | on an interface."; | |||
leaf interface-state { | leaf interface-state { | |||
type identityref { | type identityref { | |||
skipping to change at line 4327 ¶ | skipping to change at line 4463 ¶ | |||
leaf winner-metric-preference { | leaf winner-metric-preference { | |||
type uint32; | type uint32; | |||
description | description | |||
"The preference value assigned to the unicast routing | "The preference value assigned to the unicast routing | |||
protocol that the DF used to obtain the route to the RP. | protocol that the DF used to obtain the route to the RP. | |||
The value is announced by the DF."; | The value is announced by the DF."; | |||
} | } | |||
} // interface-df-election-state-attributes | } // interface-df-election-state-attributes | |||
/* | /* | |||
* Configuration data and operational state date nodes | * Configuration data and operational state data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family" { | + "pim-base:pim/pim-base:address-family" { | |||
description "PIM BIDIR (Bidirectional) augmentation."; | description | |||
"PIM-BIDIR augmentation."; | ||||
container bidir { | container bidir { | |||
presence "Present to enable BIDIR mode."; | presence "Present to enable BIDIR mode."; | |||
description | description | |||
"PIM BIDIR configuration data."; | "PIM-BIDIR configuration data."; | |||
} // bidir | } // bidir | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family" { | + "pim-base:address-family" { | |||
description "PIM BIDIR augmentation."; | description | |||
"PIM-BIDIR augmentation."; | ||||
container bidir { | container bidir { | |||
presence "Present to enable BIDIR mode."; | presence "Present to enable BIDIR mode."; | |||
description | description | |||
"PIM BIDIR configuration data."; | "PIM-BIDIR configuration data."; | |||
container df-election { | container df-election { | |||
if-feature intf-df-election; | if-feature "intf-df-election"; | |||
description | description | |||
"DF election attributes."; | "DF election attributes."; | |||
leaf offer-interval { | leaf offer-interval { | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
default 100; | default "100"; | |||
description | description | |||
"Offer interval specifies the interval between repeated | "Offer interval. Specifies the interval between | |||
DF election messages."; | repeated DF election messages."; | |||
} | } | |||
leaf backoff-interval { | leaf backoff-interval { | |||
type uint16; | type uint16; | |||
units milliseconds; | units "milliseconds"; | |||
default 1000; | default "1000"; | |||
description | description | |||
"This is the interval that the acting DF waits between | "This is the interval that the acting DF waits between | |||
receiving a better DF Offer and sending the Pass message | receiving a better DF Offer and sending the Pass message | |||
to transfer DF responsibility"; | to transfer DF responsibility."; | |||
} | } | |||
leaf offer-multiplier { | leaf offer-multiplier { | |||
type uint8; | type uint8; | |||
default 3; | default "3"; | |||
description | description | |||
"This is number of transmission attempts for DF election | "This is the number of transmission attempts for | |||
messages. | DF election messages. | |||
When a DF election Offer or Winner message fails to be | When a DF election Offer or Winner message fails to be | |||
received, the message is retransmitted. | received, the message is retransmitted. | |||
The offer-multiplier sets the minimum number of DF | 'offer-multiplier' sets the minimum number of DF | |||
election messages that must fail to be received for DF | election messages that must fail to be received for DF | |||
election to fail. | election to fail. | |||
If a router receives from a neighbor a better offer than | If a router receives from a neighbor a better offer than | |||
its own, the router stops participating in the election | its own, the router stops participating in the election | |||
for a period of offer-multiplier * offer-interval. | for a period of 'offer-multiplier' * 'offer-interval'. | |||
Eventually, all routers except the best candidate stop | Eventually, all routers except the best candidate stop | |||
sending Offer messages."; | sending Offer messages."; | |||
} | } | |||
} // df-election | } // df-election | |||
} // bidir | } // bidir | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family/pim-rp:rp/" | + "pim-base:pim/pim-base:address-family/pim-rp:rp/" | |||
+ "pim-rp:static-rp/pim-rp:ipv4-rp" { | + "pim-rp:static-rp/pim-rp:ipv4-rp" { | |||
description "PIM BIDIR augmentation."; | description | |||
"PIM-BIDIR augmentation."; | ||||
uses static-rp-bidir-container; | uses static-rp-bidir-container; | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family/pim-rp:rp/" | + "pim-base:pim/pim-base:address-family/pim-rp:rp/" | |||
+ "pim-rp:static-rp/pim-rp:ipv6-rp" { | + "pim-rp:static-rp/pim-rp:ipv6-rp" { | |||
description "PIM BIDIR augmentation."; | description | |||
"PIM-BIDIR augmentation."; | ||||
uses static-rp-bidir-container; | uses static-rp-bidir-container; | |||
} // augment | } // augment | |||
/* | /* | |||
* Operational state data nodes | * Operational state data nodes | |||
*/ | */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:address-family/pim-rp:rp" { | + "pim-base:pim/pim-base:address-family/pim-rp:rp" { | |||
description "PIM BIDIR augmentation to RP state data."; | description | |||
"PIM-BIDIR augmentation to RP state data."; | ||||
container bidir { | container bidir { | |||
config false; | config false; | |||
description | description | |||
"PIM BIDIR state data."; | "PIM-BIDIR state data."; | |||
container df-election { | container df-election { | |||
description | description | |||
"DF election data."; | "DF election data."; | |||
list ipv4-rp { | list ipv4-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv4 RP addresses."; | "A list of IPv4 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address of the RP."; | "The address of the RP."; | |||
} | } | |||
} // ipv4-rp | } // ipv4-rp | |||
list ipv6-rp { | list ipv6-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"The address of the RP."; | "The address of the RP."; | |||
} | } | |||
} // ipv6-rp | } // ipv6-rp | |||
skipping to change at line 4452 ¶ | skipping to change at line 4588 ¶ | |||
key "rp-address"; | key "rp-address"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"The address of the RP."; | "The address of the RP."; | |||
} | } | |||
} // ipv6-rp | } // ipv6-rp | |||
} // df-election | } // df-election | |||
container interface-df-election { | container interface-df-election { | |||
description | description | |||
"Interface DF election data."; | "Interface DF election data."; | |||
list ipv4-rp { | list ipv4-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv4'" { | when "../../../../pim-base:address-family = 'rt:ipv4'" { | |||
description | description | |||
"Only applicable to IPv4 address family."; | "Only applicable to an IPv4 address family."; | |||
} | } | |||
key "rp-address interface-name"; | key "rp-address interface-name"; | |||
description | description | |||
"A list of IPv4 RP addresses."; | "A list of IPv4 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address of the RP."; | "The address of the RP."; | |||
} | } | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The name of the interface for which the DF state is | "The name of the interface for which the DF state is | |||
being maintained."; | being maintained."; | |||
} | } | |||
leaf df-address { | leaf df-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The address of the elected DF, which is the winner of | "The address of the elected DF, which is the winner of | |||
the DF Election process."; | the DF election process."; | |||
} | } | |||
uses interface-df-election-state-attributes; | uses interface-df-election-state-attributes; | |||
} // ipv4-rp | } // ipv4-rp | |||
list ipv6-rp { | list ipv6-rp { | |||
when "../../../../pim-base:address-family = 'rt:ipv6'" { | when "../../../../pim-base:address-family = 'rt:ipv6'" { | |||
description | description | |||
"Only applicable to IPv6 address family."; | "Only applicable to an IPv6 address family."; | |||
} | } | |||
key "rp-address interface-name"; | key "rp-address interface-name"; | |||
description | description | |||
"A list of IPv6 RP addresses."; | "A list of IPv6 RP addresses."; | |||
leaf rp-address { | leaf rp-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"The address of the RP."; | "The address of the RP."; | |||
} | } | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The address of the RP."; | "The name of the interface for which the DF state is | |||
being maintained."; | ||||
} | } | |||
leaf df-address { | leaf df-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"DF address."; | "DF address."; | |||
} | } | |||
uses interface-df-election-state-attributes; | uses interface-df-election-state-attributes; | |||
} // ipv6-rp | } // ipv6-rp | |||
} // interface-df-election | } // interface-df-election | |||
} | } | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family/pim-base:neighbors/" | + "pim-base:address-family/pim-base:neighbors/" | |||
+ "pim-base:ipv4-neighbor" { | + "pim-base:ipv4-neighbor" { | |||
description | description | |||
"PIM BIDIR augmentation to the IPv4 neighbor state data."; | "PIM-BIDIR augmentation to the IPv4 neighbor state data."; | |||
leaf bidir-capable { | leaf bidir-capable { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the neighbor is using the Bidirectional Capable | "'true' if the neighbor is using the Bidirectional Capable | |||
option in the last Hello message."; | option in the last Hello message."; | |||
} | } | |||
} // augment | } // augment | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" | + "pim-base:pim/pim-base:interfaces/pim-base:interface/" | |||
+ "pim-base:address-family/pim-base:neighbors/" | + "pim-base:address-family/pim-base:neighbors/" | |||
+ "pim-base:ipv6-neighbor" { | + "pim-base:ipv6-neighbor" { | |||
description | description | |||
"PIM BIDIR augmentation to the IPv6 neighbor state data."; | "PIM-BIDIR augmentation to the IPv6 neighbor state data."; | |||
leaf bidir-capable { | leaf bidir-capable { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if the neighbor is using the Bidirectional Capable | "'true' if the neighbor is using the Bidirectional Capable | |||
option in the last Hello message."; | option in the last Hello message."; | |||
} | } | |||
} // augment | } // augment | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]> | ||||
</artwork></figure> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Implementation Status"> | <name>Security Considerations</name> | |||
<t> | <t> | |||
This section to be removed by the RFC editor. | The YANG modules specified in this document define a schema for data | |||
</t> | that is designed to be accessed via network management protocols such | |||
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | ||||
<t> | The lowest NETCONF layer is the secure transport layer, and the | |||
This section records the status of known implementations of the | mandatory-to-implement secure transport is Secure Shell (SSH) | |||
protocol defined by this specification at the time of posting of this | <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | |||
Internet-Draft, and is based on a proposal described in <xref target="RFC | mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>. | |||
7942"/>. | </t> | |||
The description of implementations in this section is intended to | <t> | |||
assist the IETF in its decision processes in progressing drafts to | The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> | |||
RFCs. Please note that the listing of any individual implementation | provides the means to restrict access for particular NETCONF or RESTCONF users | |||
here does not imply endorsement by the IETF. Furthermore, no effort | to a preconfigured subset of all available NETCONF or RESTCONF protocol | |||
has been spent to verify the information presented here that was | operations and content. | |||
supplied by IETF contributors. This is not intended as, and must not | </t> | |||
be construed to be, a catalog of available implementations or their | <t> | |||
features. Readers are advised to note that other implementations may | There are a number of data nodes defined in these YANG modules that are | |||
exist. | writable/creatable/deletable (i.e., config true, which is the default). These | |||
</t> | data nodes may be considered sensitive or vulnerable in some network | |||
environments. Write operations (e.g., edit-config) to these data nodes without | ||||
<t> | proper protection can have a negative effect on network operations. These are | |||
According to RFC 7942, "this will allow reviewers and working groups | the subtrees and data nodes and their sensitivity/vulnerability: | |||
to assign due consideration to documents that have the benefit of | </t> | |||
running code, which may serve as evidence of valuable experimentation | <dl newline="true" spacing="normal"> | |||
and feedback that have made the implemented protocols more mature. | <dt>pim-base:graceful-restart</dt> | |||
It is up to the individual working groups to use this information as | <dd> | |||
they see fit". | This subtree specifies the configuration for PIM graceful | |||
</t> | ||||
<t> | ||||
This document is the work result of the PIM working group's YANG multicas | ||||
t design | ||||
team. The following wiki page contains the information on the | ||||
design team members, the meeting discussions, lists of modeled | ||||
features, and which features are supported by which existing | ||||
implementations: | ||||
</t> | ||||
<t> | ||||
https://trac.ietf.org/trac/pim/wiki/yang | ||||
</t> | ||||
</section> | ||||
<section title="Security Considerations"> | ||||
<t> | ||||
The YANG module specified in this document defines a schema for | ||||
data that is designed to be accessed via network management | ||||
protocols such as NETCONF <xref target="RFC6241"/> or RESTCONF | ||||
<xref target="RFC8040"/>. The | ||||
lowest NETCONF layer is the secure transport layer, and the | ||||
mandatory-to-implement secure transport is Secure Shell (SSH) | ||||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS <xref target="RFC5246"/>. | ||||
</t> | ||||
<t> | ||||
The NETCONF access control model <xref target="RFC6536"/> provides | ||||
the means to | ||||
restrict access for particular NETCONF or RESTCONF users to a | ||||
preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
operations and content. | ||||
</t> | ||||
<t> | ||||
There are a number of data nodes defined in this YANG module that | ||||
are writable/creatable/deletable (i.e., config true, which is the | ||||
default). These data nodes may be considered sensitive or | ||||
vulnerable in some network environments. Write operations (e.g., | ||||
edit-config) to these data nodes without proper protection can have | ||||
a negative effect on network operations. These are the subtrees and | ||||
data nodes and their sensitivity/vulnerability: | ||||
</t> | ||||
<t> | ||||
<list style="hanging"> | ||||
<t hangText="pim-base:graceful-restart"><vspace blankLines="0" /> | ||||
This subtree specifies the configuration for the PIM graceful | ||||
restart at the global level on a device. Modifying the | restart at the global level on a device. Modifying the | |||
configuration can cause temporary interruption to the multicast | configuration can cause temporary interruption to the multicast | |||
routing during restart. | routing during restart. | |||
</t> | </dd> | |||
<dt>pim-base:address-family/pim-base:graceful-restart</dt> | ||||
<t hangText="pim-base:address-family/pim-base:graceful-restart"><vspace blank | <dd> | |||
Lines="0" /> | This subtree specifies the per-address-family configuration for | |||
This subtree specifies the per address family configuration for the | ||||
PIM graceful restart on a device. Modifying the configuration can | PIM graceful restart on a device. Modifying the configuration can | |||
cause temporary interruption to the multicast routing during restart. | cause temporary interruption to the multicast routing during restart. | |||
</t> | </dd> | |||
<dt>pim-base:address-family/pim-rp:pim-rp:rp</dt> | ||||
<t hangText="pim-base:address-family/pim-rp:pim-rp:rp"> | <dd> | |||
<vspace blankLines="0" /> | ||||
This subtree specifies the configuration for the PIM Rendezvous Point (RP) | This subtree specifies the configuration for the PIM Rendezvous Point (RP) | |||
on a device. Modifying the configuration can cause RP malfunctions. | on a device. Modifying the configuration can cause RP malfunctions. | |||
</t> | </dd> | |||
<dt>pim-base:address-family/pim-sm:sm</dt> | ||||
<t hangText="pim-base:address-family/pim-sm:sm"> | <dd> | |||
<vspace blankLines="0" /> | This subtree specifies the configuration for PIM Sparse Mode (PIM&nbhy;SM) | |||
This subtree specifies the configuration for the PIM Sparse Mode (PIM-SM) | ||||
on a device. Modifying the configuration can cause multicast | on a device. Modifying the configuration can cause multicast | |||
traffic disabled or rerouted in PIM-SM. | traffic to be disabled or rerouted in PIM-SM. | |||
</t> | </dd> | |||
<dt>pim-base:address-family/pim-dm:dm</dt> | ||||
<t hangText="pim-base:address-family/pim-dm:dm"> | <dd> | |||
<vspace blankLines="0" /> | This subtree specifies the configuration for PIM Dense Mode (PIM&nbhy;DM) | |||
This subtree specifies the configuration for the PIM Dense Mode (PIM-DM) | ||||
on a device. Modifying the configuration can cause multicast | ||||
traffic disabled or rerouted in PIM-DM. | ||||
</t> | ||||
<t hangText="pim-base:address-family/pim-bidir:bidir"> | ||||
<vspace blankLines="0" /> | ||||
This subtree specifies the configuration for the | ||||
PIM Bidirectional Mode (PIM-BIDIR) | ||||
on a device. Modifying the configuration can cause multicast | on a device. Modifying the configuration can cause multicast | |||
traffic disabled or rerouted in PIM-BIDIR. | traffic to be disabled or rerouted in PIM-DM. | |||
</t> | </dd> | |||
<dt>pim-base:address-family/pim-bidir:bidir</dt> | ||||
<t hangText="pim-base:interfaces"> | <dd> | |||
<vspace blankLines="0" /> | This subtree specifies the configuration for PIM Bidirectional Mode | |||
(BIDIR-PIM) on a device. Modifying the configuration can cause multicast | ||||
traffic to be disabled or rerouted in BIDIR-PIM. | ||||
</dd> | ||||
<dt>pim-base:interfaces</dt> | ||||
<dd> | ||||
This subtree specifies the configuration for the PIM interfaces | This subtree specifies the configuration for the PIM interfaces | |||
on a device. Modifying the configuration can cause the PIM protocol | on a device. Modifying the configuration can cause the PIM protocol | |||
to get insufficient or incorrect information. | to get insufficient or incorrect information. | |||
</t> | </dd> | |||
</list> | </dl> | |||
</t> | <t> | |||
These subtrees are all under | ||||
<t> | "/rt:routing/rt:control-plane-protocols/pim-base:pim". | |||
These subtrees are all nnder | </t> | |||
/rt:routing/rt:control-plane-protocols/pim-base:pim. | <t> | |||
</t> | ||||
<t> | ||||
Unauthorized access to any data node of these subtrees can | Unauthorized access to any data node of these subtrees can | |||
adversely affect the multicast routing subsystem of both the local device and | adversely affect the multicast routing subsystem of both the local device and | |||
the network. This may lead to network malfunctions, delivery of | the network. This may lead to network malfunctions, delivery of | |||
packets to inappropriate destinations, and other problems. | packets to inappropriate destinations, and other problems. | |||
</t> | </t> | |||
<t> | ||||
<t> | Some of the readable data nodes in these YANG modules may be considered | |||
Some of the readable data nodes in this YANG module may be | sensitive or vulnerable in some network environments. It is thus important to | |||
considered sensitive or vulnerable in some network environments. It | control read access (e.g., via get, get-config, or notification) to these data | |||
is thus important to control read access (e.g., via get, | nodes. These are the subtrees and data nodes and their | |||
get-config, or notification) to these data nodes. These are the | sensitivity/vulnerability: | |||
subtrees and data nodes and their sensitivity/vulnerability: | </t> | |||
</t> | <t> | |||
<t> | ||||
/rt:routing/rt:control-plane-protocols/pim-base:pim | /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
</t> | </t> | |||
<t> | ||||
<t> | ||||
Unauthorized access to any data node of the above subtree can disclose the | Unauthorized access to any data node of the above subtree can disclose the | |||
operational state information of PIM on this device. | operational state information of PIM on this device. | |||
</t> | ||||
</section> | ||||
<section title="IANA Considerations"> | ||||
<t> | ||||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | ||||
actual RFC number (and remove this note). | ||||
</t> | </t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t> | <t> | |||
This document registers the following namespace URIs in the IETF XML | IANA has registered the following namespace URIs in the "IETF XML | |||
registry <xref target="RFC3688"/>: | Registry" <xref target="RFC3688" format="default"/>: | |||
</t> | </t> | |||
<figure><artwork> | <dl spacing="compact"> | |||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-base | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-base</dd> | |||
Registrant Contact: The IESG. | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
XML: N/A, the requested URI is an XML namespace. | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
</artwork></figure> | </dl> | |||
<figure><artwork> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
</artwork></figure> | ||||
<figure><artwork> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-dm | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
</artwork></figure> | ||||
<figure><artwork> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-rp | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
</artwork></figure> | ||||
<figure><artwork> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-sm | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
</artwork></figure> | ||||
<t> | <dl spacing="compact"> | |||
This document registers the following YANG modules in the YANG Module | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-bidir</dd> | |||
Names registry <xref target="RFC7950"/>: | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
</t> | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
<figure><artwork> | </dl> | |||
name: ietf-pim-base | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-base | <dl spacing="compact"> | |||
prefix: pim-base | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-dm</dd> | |||
reference: RFC XXXX | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
</artwork></figure> | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
<figure><artwork> | </dl> | |||
name: ietf-pim-bidir | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | <dl spacing="compact"> | |||
prefix: pim-bidir | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-rp</dd> | |||
reference: RFC XXXX | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
</artwork></figure> | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
<figure><artwork> | </dl> | |||
name: ietf-pim-dm | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-dm | <dl spacing="compact"> | |||
prefix: pim-dm | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-sm</dd> | |||
reference: RFC XXXX | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
</artwork></figure> | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
<figure><artwork> | </dl> | |||
name: ietf-pim-rp | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-rp | ||||
prefix: pim-rp | ||||
reference: RFC XXXX | ||||
</artwork></figure> | ||||
<figure><artwork> | ||||
name: ietf-pim-sm | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-sm | ||||
prefix: pim-sm | ||||
reference: RFC XXXX | ||||
</artwork></figure> | ||||
</section> | ||||
<section title='Acknowledgements'> | ||||
<t> | <t> | |||
The authors would like to thank Steve Baillargeon, Guo Feng, | IANA has registered the following YANG modules in the "YANG Module | |||
Robert Kebler, Tanmoy Kundu, | Names" registry <xref target="RFC6020" format="default"/>: | |||
and Stig Venaas for their valuable contributions. | ||||
</t> | </t> | |||
</section> | <dl spacing="compact"> | |||
<dt>Name:</dt><dd>ietf-pim-base</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-base</dd> | ||||
<dt>Prefix:</dt><dd>pim-base</dd> | ||||
<dt>Reference:</dt><dd>RFC 9128</dd> | ||||
</dl> | ||||
</middle> | <dl spacing="compact"> | |||
<dt>Name:</dt><dd>ietf-pim-bidir</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-bidir</dd> | ||||
<dt>Prefix:</dt><dd>pim-bidir</dd> | ||||
<dt>Reference:</dt><dd>RFC 9128</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-pim-dm</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-dm</dd> | ||||
<dt>Prefix:</dt><dd>pim-dm</dd> | ||||
<dt>Reference:</dt><dd>RFC 9128</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-pim-rp</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-rp</dd> | ||||
<dt>Prefix:</dt><dd>pim-rp</dd> | ||||
<dt>Reference:</dt><dd>RFC 9128</dd> | ||||
</dl> | ||||
<dl spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-pim-sm</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-pim-sm</dd> | ||||
<dt>Prefix:</dt><dd>pim-sm</dd> | ||||
<dt>Reference:</dt><dd>RFC 9128</dd> | ||||
</dl> | ||||
</section> | ||||
</middle> | ||||
<back> | <back> | |||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3569.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3688.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3973.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4607.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4610.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5015.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5059.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5060.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6020.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6241.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6242.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6991.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7761.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7950.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8040.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8294.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8341.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8342.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8343.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8349.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8446.xml"/> | ||||
<references title="Normative References"> | <!-- draft-ietf-bfd-rfc9127-bis (RFC 9314; published 9/2022) --> | |||
<?rfc include="reference.RFC.3569"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.3688"?> | FC.9314.xml"/> | |||
<?rfc include="reference.RFC.3973"?> | </references> | |||
<?rfc include="reference.RFC.4607"?> | <references> | |||
<?rfc include="reference.RFC.4610"?> | <name>Informative References</name> | |||
<?rfc include="reference.RFC.5015"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.5059"?> | FC.3376.xml"/> | |||
<?rfc include="reference.RFC.5060"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.5246"?> | FC.3618.xml"/> | |||
<?rfc include="reference.RFC.6241"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.6242"?> | FC.3810.xml"/> | |||
<?rfc include="reference.RFC.6536"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.6991"?> | FC.5880.xml"/> | |||
<?rfc include="reference.RFC.7761"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.7950"?> | FC.6388.xml"/> | |||
<?rfc include="reference.RFC.8040"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.8294"?> | FC.7951.xml"/> | |||
<?rfc include="reference.RFC.8342"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.8343"?> | FC.8340.xml"/> | |||
<?rfc include="reference.RFC.8349"?> | ||||
<?rfc include="reference.I-D.ietf-bfd-yang.xml"?> | ||||
</references> | ||||
<references title="Informative References"> | <!-- draft-ietf-netmod-rfc6087bis (RFC 8407) --> | |||
<?rfc include="reference.RFC.3376"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.3618"?> | FC.8407.xml"/> | |||
<?rfc include="reference.RFC.3810"?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<?rfc include="reference.RFC.5306"?> | FC.8706.xml"/> | |||
<?rfc include="reference.RFC.5880"?> | </references> | |||
<?rfc include="reference.RFC.6388"?> | ||||
<?rfc include="reference.RFC.7942"?> | ||||
<?rfc include="reference.RFC.7951"?> | ||||
<?rfc include="reference.RFC.8340"?> | ||||
<?rfc include="reference.I-D.ietf-netmod-rfc6087bis.xml"?> | ||||
</references> | </references> | |||
<section numbered="true" toc="default"> | ||||
<section title="Data Tree Example"> | <name>Data Tree Example</name> | |||
<t> | <t> | |||
This section contains an example of an instance data tree in the JSON | This appendix contains an example of an instance data tree, in JSON | |||
encoding <xref target="RFC7951"/>, containing both configuration and | encoding <xref target="RFC7951" format="default"/>, containing both | |||
configuration data and | ||||
state data. | state data. | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<figure><artwork> | ||||
lo0: 2001:db8:0:200::1 (RP address) | lo0: 2001:db8:0:200::1 (RP address) | |||
| +-------+ | | | +-------+ | | |||
| | Router| | | | | Router| | | |||
eth21 +---+ R2 +---+ eth23 | eth21 +---+ R2 +---+ eth23 | |||
| | (RP) | | | | | (RP) | | | |||
| +-------+ | lo0: 2001:db8:0:300::1 | | +-------+ | lo0: 2001:db8:0:300::1 | |||
| +-------+ | | +-------+ | | | +-------+ | | +-------+ | | |||
| | Router| | | | Router| | | | | Router| | | | Router| | | |||
eth10 +--+ R1 +---+ eth12 eth32 +---+ R3 +--+ eth30 | eth10 +--+ R1 +---+ eth12 eth32 +---+ R3 +--+ eth30 | |||
| | | | | | | | | | | | | | | | | | |||
| +-------+ | +-------+ | | | +-------+ | +-------+ | | |||
+-------+ | | +-------+ | +-------+ | +-------+ | | +-------+ | +-------+ | |||
| | | | | Router| | | | | | | | | | | Router| | | | | | |||
| +--+ +---+ R4 +---+ +-------+ +--+ | | | +--+ +---+ R4 +---+ +-------+ +--+ | | |||
| | | | | | | | Router| | | | | | | | | | | | | Router| | | | | |||
+-------+ | | +-------+ +---+ R5 | | +-------+ | +-------+ | | +-------+ +---+ R5 | | +-------+ | |||
Source | | | Receiver | Source | | | Receiver | |||
| +-------+ | | +-------+ | |||
</artwork></figure> | ]]></artwork> | |||
<t> | ||||
<t> | ||||
The configuration instance data tree for Router R3 in the | The configuration instance data tree for Router R3 in the | |||
above figure could be as follows: | above figure could be as follows: | |||
</t> | </t> | |||
<sourcecode type="json"><![CDATA[ | ||||
<figure><artwork> | ||||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "lo0", | "name": "lo0", | |||
"description": "R3 loopback interface.", | "description": "R3 loopback interface.", | |||
"type": "iana-if-type:softwareLoopback", | "type": "iana-if-type:softwareLoopback", | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"address": [ | "address": [ | |||
{ | { | |||
skipping to change at line 4900 ¶ | skipping to change at line 4954 ¶ | |||
{ | { | |||
"name": "eth30", | "name": "eth30", | |||
"description": "An interface connected to the receiver.", | "description": "An interface connected to the receiver.", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"forwarding": true | "forwarding": true | |||
} | } | |||
}, | }, | |||
{ | { | |||
"name": "eth32", | "name": "eth32", | |||
"description": "An interface connected to RP (R2).", | "description": "An interface connected to the RP (R2).", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"forwarding": true | "forwarding": true | |||
} | } | |||
} | } | |||
] | ] | |||
}, | }, | |||
"ietf-routing:routing": { | "ietf-routing:routing": { | |||
"router-id": "203.0.113.3", | "router-id": "203.0.113.3", | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
skipping to change at line 4967 ¶ | skipping to change at line 5021 ¶ | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
</artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | ||||
The corresponding operational state data for Router R3 | The corresponding operational state data for Router R3 | |||
could be as follows: | could be as follows: | |||
</t> | </t> | |||
<sourcecode type="json"><![CDATA[ | ||||
<figure><artwork> | ||||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "lo0", | "name": "lo0", | |||
"description": "R3 loopback interface.", | "description": "R3 loopback interface.", | |||
"type": "iana-if-type:softwareLoopback", | "type": "iana-if-type:softwareLoopback", | |||
"phys-address": "00:00:5e:00:53:03", | "phys-address": "00:00:5e:00:53:03", | |||
"oper-status": "up", | "oper-status": "up", | |||
"statistics": { | "statistics": { | |||
skipping to change at line 5033 ¶ | skipping to change at line 5085 ¶ | |||
"origin": "link-layer", | "origin": "link-layer", | |||
"status": "preferred" | "status": "preferred" | |||
} | } | |||
], | ], | |||
"neighbor": [ | "neighbor": [ | |||
] | ] | |||
} | } | |||
}, | }, | |||
{ | { | |||
"name": "eth32", | "name": "eth32", | |||
"description": "An interface connected to RP (R2).", | "description": "An interface connected to the RP (R2).", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"phys-address": "00:00:5e:00:53:32", | "phys-address": "00:00:5e:00:53:32", | |||
"oper-status": "up", | "oper-status": "up", | |||
"statistics": { | "statistics": { | |||
"discontinuity-time": "2018-01-23T12:34:56-05:00" | "discontinuity-time": "2018-01-23T12:34:56-05:00" | |||
}, | }, | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"forwarding": true, | "forwarding": true, | |||
"mtu": 1500, | "mtu": 1500, | |||
"address": [ | "address": [ | |||
skipping to change at line 5249 ¶ | skipping to change at line 5301 ¶ | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
</artwork></figure> | ]]></sourcecode> | |||
</section> | ||||
</section> | <section numbered="false" toc="default"> | |||
<name>Acknowledgments</name> | ||||
<t> | ||||
The authors would like to thank <contact fullname="Steve Baillargeon"/>, | ||||
<contact fullname="Feng Guo"/>, | ||||
<contact fullname="Robert Kebler"/>, <contact fullname="Tanmoy Kundu"/>, | ||||
and <contact fullname="Stig Venaas"/> for their valuable contributions. | ||||
</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 645 change blocks. | ||||
1983 lines changed or deleted | 2122 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |