rfc9128.original | rfc9128.txt | |||
---|---|---|---|---|
PIM Working Group X. Liu | Internet Engineering Task Force (IETF) X. Liu | |||
Internet-Draft Volta Networks | Request for Comments: 9128 IBM Corporation | |||
Intended status: Standards Track P. McAllister | Category: Standards Track P. McAllister | |||
Expires: November 20, 2018 Metaswitch Networks | ISSN: 2070-1721 Metaswitch Networks | |||
A. Peter | A. Peter | |||
Individual | Individual | |||
M. Sivakumar | M. Sivakumar | |||
Juniper Networks | Juniper Networks | |||
Y. Liu | Y. Liu | |||
Huawei Technologies | China Mobile | |||
F. Hu | F. Hu | |||
ZTE Corporation | Individual Contributor | |||
May 19, 2018 | October 2022 | |||
A YANG Data Model for Protocol Independent Multicast (PIM) | YANG Data Model for Protocol Independent Multicast (PIM) | |||
draft-ietf-pim-yang-17 | ||||
Abstract | Abstract | |||
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, operational state, | The model covers the PIM protocol configuration, operational state, | |||
and event notifications data. | and event notifications data. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on November 20, 2018. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9128. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Tree Diagrams | |||
1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 | 1.3. Prefixes in Data Node Names | |||
2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 6 | 2. Design of Data Model | |||
2.1. Scope of Model . . . . . . . . . . . . . . . . . . . . . 6 | 2.1. Scope of Model | |||
2.2. Optional Capabilities . . . . . . . . . . . . . . . . . . 6 | 2.2. Optional Capabilities | |||
2.3. Datastore Applicability . . . . . . . . . . . . . . . . . 7 | 2.3. Datastore Applicability | |||
2.4. Module and Hierarchy Organization . . . . . . . . . . . . 7 | 2.4. Module and Hierarchy Organization | |||
2.5. Position of Address Family in Hierarchy . . . . . . . . . 7 | 2.5. Position of Address Family in Hierarchy | |||
3. Module Structure . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Module Structure | |||
3.1. PIM Base Module . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. PIM Base Module | |||
3.1.1. High-Level Structure . . . . . . . . . . . . . . . . 8 | 3.1.1. High-Level Structure | |||
3.1.2. Global Data . . . . . . . . . . . . . . . . . . . . . 9 | 3.1.2. Global Data | |||
3.1.3. Per Address Family Data . . . . . . . . . . . . . . . 9 | 3.1.3. Per-Address-Family Data | |||
3.1.4. PIM Interface Modeling . . . . . . . . . . . . . . . 11 | 3.1.4. PIM Interface Modeling | |||
3.1.5. Neighbor Modeling . . . . . . . . . . . . . . . . . . 12 | 3.1.5. Neighbor Modeling | |||
3.1.6. Notifications . . . . . . . . . . . . . . . . . . . . 12 | 3.1.6. Notifications | |||
3.2. PIM RP Module . . . . . . . . . . . . . . . . . . . . . . 13 | 3.2. PIM RP Module | |||
3.2.1. Static RP . . . . . . . . . . . . . . . . . . . . . . 14 | 3.2.1. Static RPs | |||
3.2.2. BSR . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 3.2.2. BSRs | |||
3.2.3. RP State Data . . . . . . . . . . . . . . . . . . . . 15 | 3.2.3. RP State Data | |||
3.2.4. RP to Group Mappings . . . . . . . . . . . . . . . . 16 | 3.2.4. RP-to-Group Mappings | |||
3.2.5. Notifications . . . . . . . . . . . . . . . . . . . . 16 | 3.2.5. Notifications | |||
3.3. PIM-SM Module . . . . . . . . . . . . . . . . . . . . . . 17 | 3.3. PIM-SM Module | |||
3.4. PIM-DM Module . . . . . . . . . . . . . . . . . . . . . . 18 | 3.4. PIM-DM Module | |||
3.5. PIM-BIDIR Module . . . . . . . . . . . . . . . . . . . . 18 | 3.5. BIDIR-PIM Module | |||
4. Complete Tree Structure . . . . . . . . . . . . . . . . . . . 20 | 4. Complete Tree Structure | |||
4.1. PIM Base Module . . . . . . . . . . . . . . . . . . . . . 20 | 4.1. PIM Base Module | |||
4.2. PIM RP Module . . . . . . . . . . . . . . . . . . . . . . 25 | 4.2. PIM RP Module | |||
4.3. PIM-SM Module . . . . . . . . . . . . . . . . . . . . . . 26 | 4.3. PIM-SM Module | |||
4.4. PIM-DM Module . . . . . . . . . . . . . . . . . . . . . . 27 | 4.4. PIM-DM Module | |||
4.5. PIM-BIDIR Module . . . . . . . . . . . . . . . . . . . . 28 | 4.5. BIDIR-PIM Module | |||
5. Relationship to the PIM-STD-MIB . . . . . . . . . . . . . . . 29 | 5. Relationship to the PIM-STD-MIB | |||
5.1. pimInterfaceTable . . . . . . . . . . . . . . . . . . . . 29 | 5.1. pimInterfaceTable | |||
5.2. pimNeighborTable . . . . . . . . . . . . . . . . . . . . 30 | 5.2. pimNeighborTable | |||
5.3. pimStarGTable . . . . . . . . . . . . . . . . . . . . . . 31 | 5.3. pimStarGTable | |||
5.4. pimSGTable . . . . . . . . . . . . . . . . . . . . . . . 32 | 5.4. pimSGTable | |||
5.5. pimSGRptTable . . . . . . . . . . . . . . . . . . . . . . 32 | 5.5. pimSGRptTable | |||
5.6. pimBidirDFElectionTable . . . . . . . . . . . . . . . . . 33 | 5.6. pimBidirDFElectionTable | |||
5.7. pimStaticRPTable . . . . . . . . . . . . . . . . . . . . 33 | 5.7. pimStaticRPTable | |||
5.8. pimAnycastRPSetTable . . . . . . . . . . . . . . . . . . 34 | 5.8. pimAnycastRPSetTable | |||
5.9. pimGroupMappingTable . . . . . . . . . . . . . . . . . . 34 | 5.9. pimGroupMappingTable | |||
6. PIM YANG Modules . . . . . . . . . . . . . . . . . . . . . . 35 | 6. PIM YANG Modules | |||
6.1. PIM base module . . . . . . . . . . . . . . . . . . . . . 35 | 6.1. PIM Base Module | |||
6.2. PIM RP Module . . . . . . . . . . . . . . . . . . . . . . 58 | 6.2. PIM RP Module | |||
6.3. PIM-SM Module . . . . . . . . . . . . . . . . . . . . . . 73 | 6.3. PIM-SM Module | |||
6.4. PIM-DM Module . . . . . . . . . . . . . . . . . . . . . . 79 | 6.4. PIM-DM Module | |||
6.5. PIM-BIDIR Module . . . . . . . . . . . . . . . . . . . . 81 | 6.5. BIDIR-PIM Module | |||
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 89 | 7. Security Considerations | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 90 | 8. IANA Considerations | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 92 | 9. References | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 93 | 9.1. Normative References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 93 | 9.2. Informative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 93 | Appendix A. Data Tree Example | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 96 | Acknowledgments | |||
Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 97 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 105 | ||||
1. Introduction | 1. Introduction | |||
YANG [RFC7950] is a data modeling language that was introduced to | YANG [RFC7950] is a data modeling language that was introduced to | |||
model the configuration and operational state of a device managed | model the configuration and operational state of a device managed | |||
using network management protocols such as NETCONF [RFC6241] or | using network management protocols such as the Network Configuration | |||
RESTCONF [RFC8040]. YANG is now also being used as a component of | Protocol (NETCONF) [RFC6241] or RESTCONF [RFC8040]. YANG is now also | |||
other management interfaces, such as CLIs. | being used as a component of other management interfaces, such as | |||
command-line interfaces (CLIs). | ||||
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). | |||
This model supports the core PIM protocol, as well as many other | This model supports the core PIM protocol, as well as many other | |||
features described in Section 2.1. Non-core features are defined as | features; see Section 2.1. Non-core features are defined as optional | |||
optional in the provided data model. | in the provided data model. | |||
1.1. Terminology | 1.1. Terminology | |||
The terminology for describing YANG data models is found in | The terminology for describing YANG data models is found in | |||
[RFC7950]. | [RFC7950]. | |||
The following abbreviations are used in this document and the defined | The following abbreviations are used in this document and the defined | |||
model: | model: | |||
ASM: | ASM: Any-Source Multicast service model [RFC3569] [RFC4607] | |||
Any-Source Multicast service model [RFC3569] [RFC4607]. | ||||
BFD: | BFD: Bidirectional Forwarding Detection [RFC5880] | |||
Bidirectional Forwarding Detection [RFC5880]. | ||||
BSR: | BIDIR-PIM: Protocol Independent Multicast - Bidirectional Mode | |||
Bootstrap Router [RFC5059]. | [RFC5015] | |||
DF: | BSR: Bootstrap Router [RFC5059] | |||
Designated Forwarder [RFC5015]. | ||||
DR: | DF: Designated Forwarder [RFC5015] | |||
Designated Router [RFC7761]. | ||||
IGMP: | DR: Designated Router [RFC7761] | |||
Internet Group Management Protocol [RFC3376]. | ||||
MLD: | IGMP: Internet Group Management Protocol [RFC3376] | |||
Multicast Listener Discovery [RFC3810]. | ||||
MSDP: | MLD: Multicast Listener Discovery [RFC3810] | |||
Multicast Source Discovery Protocol [RFC3618]. | ||||
mLDP: | mLDP: Multipoint extensions for LDP [RFC6388] | |||
Multipoint extensions for LDP [RFC6388]. | ||||
MRIB: | MRIB: Multicast Routing Information Base [RFC3973] [RFC5015] | |||
Multicast Routing Information Base [RFC3973] [RFC5015] [RFC7761]. | [RFC7761] | |||
mVPN: | MSDP: Multicast Source Discovery Protocol [RFC3618] | |||
Multicast VPN. | ||||
PIM: | mVPN: Multicast VPN | |||
Protocol Independent Multicast. [RFC3973] [RFC5015] [RFC7761]. | ||||
PIM-BIDIR: | PIM: Protocol Independent Multicast [RFC3973] [RFC5015] | |||
Protocol Independent Multicast - Bidirectional Mode [RFC5015]. | [RFC7761] | |||
PIM-DM: | PIM-DM: Protocol Independent Multicast - Dense Mode [RFC3973] | |||
Protocol Independent Multicast - Dense Mode [RFC3973]. | ||||
PIM-SM: | PIM-SM: Protocol Independent Multicast - Sparse Mode [RFC7761] | |||
Protocol Independent Multicast - Sparse Mode [RFC7761]. | ||||
RP: | RP: Rendezvous Point [RFC7761] | |||
Rendezvous Point. [RFC7761]. | ||||
RPA: | RPA: Rendezvous Point Address [RFC5015] | |||
Rendezvous Point Address. [RFC5015]. | ||||
RPF: | RPF: Reverse Path Forwarding [RFC3973] [RFC5015] [RFC7761] | |||
Reverse Path Forwarding. [RFC3973] [RFC5015] [RFC7761]. | ||||
RPT: | RPT: Rendezvous Point Tree [RFC7761] | |||
Rendezvous-Point Tree. [RFC7761]. | ||||
SPT: | SPT: Shortest Path Tree [RFC7761] | |||
Shortest Path Tree. [RFC7761]. | ||||
SSM: | SSM: Source-Specific Multicast service model [RFC3569] | |||
Source-Specific Multicast service model [RFC3569] [RFC4607]. | [RFC4607] | |||
VRF: | VRF: Virtual Routing and Forwarding | |||
Virtual Routing and Forwarding. | ||||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
[RFC8340]. | [RFC8340]. | |||
In addition, the following notation is used as a placeholder at the | In addition, the following notation is used as a placeholder at the | |||
location of the name of a tree node, to represent a section of nodes: | location of the name of a tree node, to represent a section of nodes: | |||
<summary description of a section of nodes> | <summary description of a section of nodes> | |||
1.3. Prefixes in Data Node Names | 1.3. Prefixes in Data Node Names | |||
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 | |||
the context in which YANG module each name is defined. Otherwise, | clearly indicates the YANG module in which each name is defined. | |||
names are prefixed using the standard prefix associated with the | Otherwise, names are prefixed using the standard prefix associated | |||
corresponding YANG module, as shown in Table 1. | with the corresponding YANG module, as shown in Table 1. | |||
+-----------+--------------------+---------------------+ | +===========+====================+===========+ | |||
| Prefix | YANG module | Reference | | | Prefix | YANG Module | Reference | | |||
+-----------+--------------------+---------------------+ | +===========+====================+===========+ | |||
| yang | ietf-yang-types | [RFC6991] | | | yang | ietf-yang-types | [RFC6991] | | |||
| inet | ietf-inet-types | [RFC6991] | | +-----------+--------------------+-----------+ | |||
| if | ietf-interfaces | [RFC8343] | | | inet | ietf-inet-types | [RFC6991] | | |||
| rt | ietf-routing | [RFC8349] | | +-----------+--------------------+-----------+ | |||
| rt-types | ietf-routing-types | [RFC8294] | | | if | ietf-interfaces | [RFC8343] | | |||
| bfd-types | ietf-bfd-types | [I-D.ietf-bfd-yang] | | +-----------+--------------------+-----------+ | |||
+-----------+--------------------+---------------------+ | | rt | ietf-routing | [RFC8349] | | |||
+-----------+--------------------+-----------+ | ||||
| rt-types | ietf-routing-types | [RFC8294] | | ||||
+-----------+--------------------+-----------+ | ||||
| bfd-types | ietf-bfd-types | [RFC9314] | | ||||
+-----------+--------------------+-----------+ | ||||
Table 1: Prefixes and Corresponding YANG Modules | Table 1: Prefixes and Corresponding YANG | |||
Modules | ||||
2. Design of Data Model | 2. Design of Data Model | |||
2.1. Scope of Model | 2.1. Scope of Model | |||
The model covers PIM Sparse Mode [RFC7761], including the Source- | The model covers PIM Sparse Mode [RFC7761] (including the Source- | |||
Specific subset [RFC3569] [RFC4607], Dense Mode [RFC3973], and Bi- | Specific subset [RFC3569] [RFC4607]), Dense Mode [RFC3973], and | |||
directional PIM [RFC5015]. | Bidirectional PIM [RFC5015]. | |||
The PIM extensions represented in the model include BSR [RFC5059] and | The PIM extensions represented in the model include BSRs [RFC5059] | |||
Anycast-RP [RFC4610]. | and Anycast-RPs [RFC4610]. | |||
The data model can be used to configure and manage these protocol | The data model can be used to configure and manage these protocol | |||
features. The operational state data and statistics can be retrieved | features. The operational state data and statistics can be retrieved | |||
by this model. The protocol specific notifications are also defined | by this model. The protocol-specific notifications are also defined | |||
in the model. | in the model. | |||
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 any | MSDP, mVPN, or mLDP in-band signaling. It does not cover any | |||
configuration required to generate the MRIB. These will be specified | configuration required to generate the MRIB. These will be specified | |||
in separate documents. | in separate documents. | |||
2.2. Optional Capabilities | 2.2. Optional Capabilities | |||
This model is designed to represent the capabilities of devices | This model is designed to represent the capabilities of devices | |||
supporting PIM with various specifications, including some with basic | supporting PIM with various specifications, including some with basic | |||
subsets of the PIM protocol. The main design goals of this document | subsets of the PIM protocol. The main design goals of this document | |||
are that any major now-existing implementation may be said to support | are that any major currently existing implementation may be said to | |||
the base model, and that the configuration of all implementations | support the base model and that the configuration of all | |||
meeting the specification is easy to express through some combination | implementations meeting the specification is easy to express through | |||
of the features in the base model and simple vendor augmentations. | some combination of the features in the base model and simple vendor | |||
augmentations. | ||||
There is also value in widely-supported features being standardized, | There is also value in widely supported features being standardized, | |||
to save work for individual vendors, and so that mapping between | to save work for individual vendors, and so that mapping between | |||
different vendors' configuration is not needlessly complicated. | different vendors' configurations is not needlessly complicated. | |||
Therefore, these modules declare a number of features representing | Therefore, these modules declare a number of features representing | |||
capabilities that not all deployed devices support. | capabilities that not all deployed devices support. | |||
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. | |||
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 | |||
supported. | intrinsically supported. | |||
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 vendors will | and minima) are used in the model. It is expected that vendors will | |||
augment the model with any specific extensions and restrictions | augment the model with any specific extensions and restrictions | |||
needed to adapt it to their vendor-specific implementation. | needed to adapt it to their vendor-specific implementations. | |||
2.3. Datastore Applicability | 2.3. Datastore Applicability | |||
This model conforms to the Network Management Datastore Architecture | This model conforms to the Network Management Datastore Architecture | |||
(NMDA) [RFC8342]. The operational state data is combined with the | (NMDA) [RFC8342]. The operational state data is combined with the | |||
associated configuration data in the same hierarchy | associated configuration data in the same hierarchy [RFC8407]. | |||
[I-D.ietf-netmod-rfc6087bis]. | ||||
2.4. Module and Hierarchy Organization | 2.4. Module and Hierarchy Organization | |||
This model defines several separate modules for modelling PIM | This model defines several separate modules for modeling PIM | |||
configuration, defined below. Again, this separation makes it easier | configuration. Again, this separation makes it easier to express the | |||
to express the specific capabilities of a PIM device. The module | specific capabilities of a PIM device. The module organization, | |||
organization, along with the usage of the YANG extensible features | along with the usage of the YANG extensible features such as | |||
such as identity, allows the model to be easily augmented for new | identity, allows the model to be easily augmented for new | |||
capabilities. | capabilities. | |||
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- | container for that feature. For example, a configuration for PIM-SM | |||
SM that is not relevant for an SSM-only implementation is collected | that is not relevant for an SSM-only implementation is collected in | |||
in an ASM container. | an ASM container. | |||
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 default | are marked as optional. Some fields are essential but have a default | |||
specified, so they need not be explicitly configured. | specified, so they need not be explicitly configured. | |||
This module structure also applies, where applicable, to the | This module structure also applies, where applicable, to the | |||
operational state and notifications of the model. | operational state and notifications of the model. | |||
2.5. Position of Address Family in Hierarchy | 2.5. Position of Address Family in Hierarchy | |||
This document contains address-family as a node in the hierarchy | This document contains "address-family" as a node in the hierarchy | |||
multiple times: both under the interface list, and under the PIM | multiple times: under both the interface list and the PIM instance. | |||
instance. | ||||
The reasoning for this is to make it easier for implementations in | The reasoning for this is to make it easier for implementations in | |||
which configuration options are not supported for specific address | which configuration options are not supported for specific address | |||
families. | families. | |||
For these implementations, the restriction that interface | For these implementations, the restriction that interface | |||
configuration must be address-family independent may either be | configuration must be address-family independent may be expressed | |||
expressed as a vendor augmentation of an address-family-independent | either (1) as a vendor augmentation of an address-family-independent | |||
parameter above the address-family level, or by a constraint on the | parameter above the address-family level or (2) by a constraint on | |||
base model objects of a form similar to: | the base model objects of a form similar to the following: | |||
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"; | |||
} | } | |||
} | } | |||
} | } | |||
3. Module Structure | 3. Module Structure | |||
3.1. PIM Base Module | 3.1. PIM Base Module | |||
The PIM base module defines the base framework not specific to any | The PIM base module defines the base framework not specific to any | |||
PIM mode, and is imported by the other modules. The base module by | PIM mode and is imported by the other modules. The base module by | |||
itself does not provide sufficient data for any PIM mode to operate. | itself does not provide sufficient data for any PIM mode to operate. | |||
Other mode specific and feature specific modules need to be | Other mode-specific and feature-specific modules need to be | |||
implemented in addition to this module, depending on the feature set | implemented in addition to this module, depending on the feature set | |||
required by the implementation. | required by the implementation. | |||
This model augments the core routing data model "ietf-routing" | This model augments the core routing data model "ietf-routing" | |||
specified in [RFC8349]. The PIM base model augments "/rt:routing/ | specified in [RFC8349]. The PIM base model augments "/rt:routing/ | |||
rt:control-plane-protocols" as opposed to augmenting "/rt:routing/ | rt:control-plane-protocols" as opposed to augmenting "/rt:routing/ | |||
rt:control-plane-protocols/rt:control-plane-protocol", as the latter | rt:control-plane-protocols/rt:control-plane-protocol", as the latter | |||
would allow multiple protocol instances, while the PIM protocol is | would allow multiple protocol instances, while the PIM protocol is | |||
designed to be enabled or disabled as a single protocol instance on a | designed to be enabled or disabled as a single protocol instance on a | |||
network instance or a logical network element. | network instance or a logical network element. | |||
skipping to change at page 9, line 12 ¶ | skipping to change at line 369 ¶ | |||
The high-level structure of the model is shown below: | The high-level structure of the model is shown below: | |||
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> | |||
The presence of the top-level container "pim" enables the PIM | The presence of the top-level container "pim" enables the PIM | |||
protocols. | protocols. | |||
3.1.2. Global Data | 3.1.2. Global Data | |||
The global configuration and operational state data covers the | The global configuration data and operational state data cover | |||
support for graceful restart in the PIM base model. Additional | support for graceful restart in the PIM base model. Additional | |||
features can be added by augmentation if required by an | features can be added by augmentation if required by an | |||
implementation. | implementation. | |||
3.1.3. Per Address Family Data | 3.1.3. Per-Address-Family Data | |||
The support for per address family data is shown below: | Support for per-address-family data is shown below: | |||
+--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 page 10, line 32 ¶ | skipping to change at line 427 ¶ | |||
| | +--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 | |||
This is the location that most of the PIM RP module (ietf-pim-rp) | This is the location that most of the PIM RP module (ietf-pim-rp) | |||
augments. Each of the mode specific modules also augments this | augments. Each of the mode-specific modules also augments this | |||
schema tree. | schema tree. | |||
3.1.4. PIM Interface Modeling | 3.1.4. PIM Interface Modeling | |||
The configuration and operational state data of PIM interfaces is | The configuration data and operational state data of PIM interfaces | |||
modeled as below: | are modeled as shown below: | |||
+--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}? | |||
skipping to change at page 12, line 5 ¶ | skipping to change at line 492 ¶ | |||
+--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 | |||
The support for bfd is achieved by using a grouping provided by an | Support for BFD client configuration is achieved by using a grouping | |||
external module ietf-bfd-types, defined in [I-D.ietf-bfd-yang]. | provided by an external module, "ietf-bfd-types", as defined in | |||
[RFC9314]. | ||||
3.1.5. Neighbor Modeling | 3.1.5. Neighbor Modeling | |||
For each PIM interface, there can be a list of neighbors, which | For each PIM interface, there can be a list of neighbors that | |||
contain operational state data. To model such data, the following | contains operational state data for each neighbor. To model such | |||
structure is specified: | data, the following structure is specified: | |||
+--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? | |||
skipping to change at page 13, line 26 ¶ | skipping to change at line 560 ¶ | |||
+--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 | |||
3.2. PIM RP Module | 3.2. PIM RP Module | |||
The PIM RP module augments the PIM base module to define the | The PIM RP module augments the PIM base module to define the | |||
configuration and operational state information scoped to RP related | configuration and operational state information scoped to RP-related | |||
features: | features: | |||
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 | |||
... | ... | |||
This module is shared by the PIM-SM mode and the PIM-BIDIR mode, but | This module is shared by PIM-SM and BIDIR-PIM mode but is not shared | |||
not by the PIM-DM mode. PIM-SM module and PIM-BIDIR module augment | by PIM-DM. The PIM-SM module and the BIDIR-PIM module augment this | |||
this module to cover mode specific data. | module to cover mode-specific data. | |||
The following sections describe the features and capabilities covered | The following sections describe the features and capabilities covered | |||
in this module. | in this module. | |||
3.2.1. Static RP | 3.2.1. Static RPs | |||
Static RPs can be configured by using the following portion of the | Static RPs can be configured by using the following portion of the | |||
module: | module: | |||
+--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 | |||
3.2.2. BSR | 3.2.2. BSRs | |||
The support for BSR includes both configuration data and operational | Support for BSRs includes both configuration data and operational | |||
state data, as shown below: | state data, as shown below: | |||
+--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 | |||
skipping to change at page 15, line 51 ¶ | skipping to change at line 646 ¶ | |||
| +--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 | |||
3.2.3. RP State Data | 3.2.3. RP State Data | |||
This portion of the model provides the operational state information | This portion of the model provides the operational state information | |||
for all RPs on the router, including the statically configured RPs | for all RPs on the router, including the statically configured RPs | |||
and the BSR elected RPs. | and the BSR-elected RPs. | |||
+--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 | |||
3.2.4. RP to Group Mappings | 3.2.4. RP-to-Group Mappings | |||
The operational state data of the mappings between RPs and multicast | The operational state data of the mappings between RPs and multicast | |||
groups is modeled as follows: | groups is modeled as follows: | |||
+--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 | |||
3.2.5. Notifications | 3.2.5. Notifications | |||
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: | |||
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 | |||
3.3. PIM-SM Module | 3.3. PIM-SM Module | |||
The PIM-SM module covers Sparse Mode modeling, including PIM-ASM and | The PIM-SM module covers Sparse Mode modeling, including PIM Any- | |||
PIM-SSM. This module has dependencies on PIM base module and PIM RP | Source Multicast (PIM-ASM) and PIM Source-Specific Multicast (PIM- | |||
module, both of which are augmented by this module. | SSM). This module has dependencies on the PIM base module and the | |||
PIM RP module, both of which are augmented by this module. | ||||
The augmentation to the address-family branch of the PIM base module | The augmentation to the "address-family" branch of the PIM base | |||
is shown below: | module is shown below: | |||
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 | |||
To support SM mode on an interface, this module augments the | To support PIM-SM on an interface, this module augments the | |||
interface branch of the PIM base module, as follows: | "interface" branch of the PIM base module, as follows: | |||
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 | |||
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: | |||
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! | |||
skipping to change at page 18, line 40 ¶ | skipping to change at line 764 ¶ | |||
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! | |||
3.5. PIM-BIDIR Module | 3.5. BIDIR-PIM Module | |||
The PIM-BIDIR module covers Bidirectional PIM modeling. Like PIM-SM, | The BIDIR-PIM module covers Bidirectional PIM modeling. Like PIM-SM, | |||
this module augments both PIM base module and PIM RP module. | this module augments both the PIM base module and the PIM RP module. | |||
The followings are the augmentations to the PIM base module, on the | The augmentations to the PIM base module, on the "address-family", | |||
address-family, the interface, and the neighbor branches: | "interface", and "neighbor" branches, are as follows: | |||
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}? | |||
skipping to change at page 19, line 29 ¶ | skipping to change at line 796 ¶ | |||
/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 | |||
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: | |||
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: | |||
skipping to change at page 23, line 6 ¶ | skipping to change at line 942 ¶ | |||
| +--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 page 28, line 5 ¶ | skipping to change at line 1171 ¶ | |||
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! | |||
4.5. PIM-BIDIR Module | 4.5. BIDIR-PIM Module | |||
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}? | |||
skipping to change at page 29, line 34 ¶ | skipping to change at line 1248 ¶ | |||
5.1. pimInterfaceTable | 5.1. pimInterfaceTable | |||
pimInterfaceTable is mapped to pim/interfaces/interface. The key of | pimInterfaceTable is mapped to pim/interfaces/interface. The key of | |||
pimInterfaceTable is pimInterfaceIfIndex and pimInterfaceIPVersion, | pimInterfaceTable is pimInterfaceIfIndex and pimInterfaceIPVersion, | |||
while the key of the "interface" list in YANG is the node "name". | while the key of the "interface" list in YANG is the node "name". | |||
For each value of pimInterfaceIPVersion, the "interface" list | For each value of pimInterfaceIPVersion, the "interface" list | |||
contains a corresponding sublist whose key is the node "address- | contains a corresponding sublist whose key is the node "address- | |||
family". | family". | |||
The following table lists the YANG data nodes with corresponding | Table 2 lists the YANG data nodes with corresponding objects of | |||
objects of pimInterfaceTable in the PIM-STD-MIB. | pimInterfaceTable in the PIM-STD-MIB. | |||
+------------------------+----------------------------------+ | +========================+==================================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+------------------------+----------------------------------+ | +========================+==================================+ | |||
| address-family | pimInterfaceAddressType | | | address-family | pimInterfaceAddressType | | |||
+------------------------+----------------------------------+ | ||||
| ipv4/address | pimInterfaceAddress | | | ipv4/address | pimInterfaceAddress | | |||
+------------------------+ | | ||||
| ipv6/address | | | | ipv6/address | | | |||
+------------------------+----------------------------------+ | ||||
| gen-id | pimInterfaceGenerationIDValue | | | gen-id | pimInterfaceGenerationIDValue | | |||
+------------------------+----------------------------------+ | ||||
| ipv4/dr-address | pimInterfaceDR | | | ipv4/dr-address | pimInterfaceDR | | |||
+------------------------+ | | ||||
| ipv6/dr-address | | | | ipv6/dr-address | | | |||
+------------------------+----------------------------------+ | ||||
| dr-priority | pimInterfaceDRPriority | | | dr-priority | pimInterfaceDRPriority | | |||
+------------------------+----------------------------------+ | ||||
| hello-interval | pimInterfaceHelloInterval | | | hello-interval | pimInterfaceHelloInterval | | |||
+------------------------+----------------------------------+ | ||||
| hello-holdtime | pimInterfaceHelloHoldtime | | | hello-holdtime | pimInterfaceHelloHoldtime | | |||
+------------------------+----------------------------------+ | ||||
| jp-interval | pimInterfaceJoinPruneInterval | | | jp-interval | pimInterfaceJoinPruneInterval | | |||
+------------------------+----------------------------------+ | ||||
| jp-holdtime | pimInterfaceJoinPruneHoldtime | | | jp-holdtime | pimInterfaceJoinPruneHoldtime | | |||
+------------------------+----------------------------------+ | ||||
| bidir/offer-multiplier | pimInterfaceDFElectionRobustness | | | bidir/offer-multiplier | pimInterfaceDFElectionRobustness | | |||
+------------------------+----------------------------------+ | ||||
| propagation-delay | pimInterfacePropagationDelay | | | propagation-delay | pimInterfacePropagationDelay | | |||
+------------------------+----------------------------------+ | ||||
| override-interval | pimInterfaceOverrideInterval | | | override-interval | pimInterfaceOverrideInterval | | |||
+------------------------+----------------------------------+ | +------------------------+----------------------------------+ | |||
Table 2: YANG Nodes and pimInterfaceTable Objects | Table 2: YANG Nodes and pimInterfaceTable Objects | |||
5.2. pimNeighborTable | 5.2. pimNeighborTable | |||
pimNeighborTable is mapped to pim/interfaces/interface/neighbors/ | pimNeighborTable is mapped to pim/interfaces/interface/neighbors/ | |||
ipv4-neighbor and pim/interfaces/interface/neighbors/ipv6-neighbor. | ipv4-neighbor and pim/interfaces/interface/neighbors/ipv6-neighbor. | |||
The following table lists the YANG data nodes with corresponding | Table 3 lists the YANG data nodes with corresponding objects of | |||
objects of pimNeighborTable in the PIM-STD-MIB. | pimNeighborTable in the PIM-STD-MIB. | |||
+------------------------------+---------------------------------+ | +==============================+=================================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+------------------------------+---------------------------------+ | +==============================+=================================+ | |||
| ipv4-neighbor | pimNeighborAddressType | | | ipv4-neighbor | pimNeighborAddressType | | |||
+------------------------------+ | | ||||
| ipv6-neighbor | | | | ipv6-neighbor | | | |||
+------------------------------+---------------------------------+ | ||||
| address | pimNeighborAddress | | | address | pimNeighborAddress | | |||
+------------------------------+---------------------------------+ | ||||
| gen-id | pimNeighborGenerationIDValue | | | gen-id | pimNeighborGenerationIDValue | | |||
+------------------------------+---------------------------------+ | ||||
| up-time | pimNeighborUpTime | | | up-time | pimNeighborUpTime | | |||
+------------------------------+---------------------------------+ | ||||
| expiration | pimNeighborExpiryTime | | | expiration | pimNeighborExpiryTime | | |||
+------------------------------+---------------------------------+ | ||||
| dr-priority | pimNeighborDRPriority | | | dr-priority | pimNeighborDRPriority | | |||
+------------------------------+---------------------------------+ | ||||
| lan-prune-delay/present | pimNeighborLanPruneDelayPresent | | | lan-prune-delay/present | pimNeighborLanPruneDelayPresent | | |||
+------------------------------+---------------------------------+ | ||||
| lan-prune-delay/t-bit | pimNeighborTBit | | | lan-prune-delay/t-bit | pimNeighborTBit | | |||
| lan-prune-delay/ | pimNeighborPropagationDelay | | +------------------------------+---------------------------------+ | |||
| propagation-delay | | | | lan-prune-delay/propagation- | pimNeighborPropagationDelay | | |||
| lan-prune-delay/ | pimNeighborOverrideInterval | | | delay | | | |||
| override-interval | | | +------------------------------+---------------------------------+ | |||
| lan-prune-delay/override- | pimNeighborOverrideInterval | | ||||
| interval | | | ||||
+------------------------------+---------------------------------+ | ||||
| ietf-pim-bidir:bidir-capable | pimNeighborBidirCapable | | | ietf-pim-bidir:bidir-capable | pimNeighborBidirCapable | | |||
+------------------------------+---------------------------------+ | +------------------------------+---------------------------------+ | |||
Table 3: YANG Nodes and pimNeighborTable Objects | Table 3: YANG Nodes and pimNeighborTable Objects | |||
5.3. pimStarGTable | 5.3. pimStarGTable | |||
pimStarGTable is mapped to pim/address-family/topology-tree-info/ | pimStarGTable is mapped to pim/address-family/topology-tree-info/ | |||
ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | |||
the value of source-address leaf is "ietf-routing-types:*" and the | the value of the "source-address" leaf is "ietf-routing-types:*" and | |||
value of is-rpt leaf is "false". | the value of the "is-rpt" leaf is "false". | |||
The following table lists the YANG data nodes with corresponding | Table 4 lists the YANG data nodes with corresponding objects of | |||
objects of pimStarGTable in the PIM-STD-MIB. | pimStarGTable in the PIM-STD-MIB. | |||
+--------------------+------------------------------+ | +====================+==============================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+--------------------+------------------------------+ | +====================+==============================+ | |||
| ipv4-route | pimStarGAddressType | | | ipv4-route | pimStarGAddressType | | |||
+--------------------+ | | ||||
| ipv6-route | | | | ipv6-route | | | |||
+--------------------+------------------------------+ | ||||
| group | pimStarGGrpAddress | | | group | pimStarGGrpAddress | | |||
+--------------------+------------------------------+ | ||||
| up-time | pimStarGUpTime | | | up-time | pimStarGUpTime | | |||
+--------------------+------------------------------+ | ||||
| mode | pimStarGPimMode | | | mode | pimStarGPimMode | | |||
+--------------------+------------------------------+ | ||||
| rp-address | pimStarGRPAddressType | | | rp-address | pimStarGRPAddressType | | |||
| rp-address | pimStarGRPAddress | | | +------------------------------+ | |||
| | pimStarGRPAddress | | ||||
+--------------------+------------------------------+ | ||||
| rpf-neighbor | pimStarGUpstreamNeighborType | | | rpf-neighbor | pimStarGUpstreamNeighborType | | |||
| rpf-neighbor | pimStarGUpstreamNeighbor | | | +------------------------------+ | |||
| | pimStarGUpstreamNeighbor | | ||||
+--------------------+------------------------------+ | ||||
| incoming-interface | pimStarGRPFIfIndex | | | incoming-interface | pimStarGRPFIfIndex | | |||
+--------------------+------------------------------+ | +--------------------+------------------------------+ | |||
Table 4: YANG Nodes and pimStarGTable Objects | Table 4: YANG Nodes and pimStarGTable Objects | |||
In addtion, the object pimStarGPimModeOrigin in pimStarGTable is | In addition, the object "pimStarGPimModeOrigin" in pimStarGTable is | |||
mapped to the node rp/rp-list/ipv4-rp/info-source-type or the node | 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. | "rp/rp-list/ipv6-rp/info-source-type" in the YANG module | |||
"ietf-pim-rp". | ||||
5.4. pimSGTable | 5.4. pimSGTable | |||
pimSGTable is mapped to pim/address-family/topology-tree-info/ | pimSGTable is mapped to pim/address-family/topology-tree-info/ | |||
ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | |||
the value of source-address leaf is not "ietf-routing-types:*" and | the value of the "source-address" leaf is not "ietf-routing-types:*" | |||
the value of is-rpt leaf is "false". | and the value of the "is-rpt" leaf is "false". | |||
The following table lists the YANG data nodes with corresponding | Table 5 lists the YANG data nodes with corresponding objects of | |||
objects of pimSGTable in the PIM-STD-MIB. | pimSGTable in the PIM-STD-MIB. | |||
+--------------------+--------------------------+ | +====================+==========================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+--------------------+--------------------------+ | +====================+==========================+ | |||
| ipv4-route | pimSGAddressType | | | ipv4-route | pimSGAddressType | | |||
+--------------------+ | | ||||
| ipv6-route | | | | ipv6-route | | | |||
+--------------------+--------------------------+ | ||||
| group | pimSGGrpAddress | | | group | pimSGGrpAddress | | |||
+--------------------+--------------------------+ | ||||
| source-address | pimSGSrcAddress | | | source-address | pimSGSrcAddress | | |||
+--------------------+--------------------------+ | ||||
| up-time | pimSGUpTime | | | up-time | pimSGUpTime | | |||
+--------------------+--------------------------+ | ||||
| mode | pimSGPimMode | | | mode | pimSGPimMode | | |||
+--------------------+--------------------------+ | ||||
| rpf-neighbor | pimStarGUpstreamNeighbor | | | rpf-neighbor | pimStarGUpstreamNeighbor | | |||
+--------------------+--------------------------+ | ||||
| incoming-interface | pimStarGRPFIfIndex | | | incoming-interface | pimStarGRPFIfIndex | | |||
+--------------------+--------------------------+ | ||||
| is-spt | pimSGSPTBit | | | is-spt | pimSGSPTBit | | |||
+--------------------+--------------------------+ | ||||
| expiration | pimSGKeepaliveTimer | | | expiration | pimSGKeepaliveTimer | | |||
+--------------------+--------------------------+ | +--------------------+--------------------------+ | |||
Table 5: YANG Nodes and pimSGTable Objects | Table 5: YANG Nodes and pimSGTable Objects | |||
5.5. pimSGRptTable | 5.5. pimSGRptTable | |||
pimSGRptTable is mapped to pim/address-family/topology-tree-info/ | pimSGRptTable is mapped to pim/address-family/topology-tree-info/ | |||
ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | ipv4-route and pim/address-family/topology-tree-info/ipv6-route, when | |||
the value of is-rpt leaf is "true". | the value of the "is-rpt" leaf is "true". | |||
The following table lists the YANG data nodes with corresponding | Table 6 lists the YANG data nodes with corresponding objects of | |||
objects of pimSGRptTable in the PIM-STD-MIB. | pimSGRptTable in the PIM-STD-MIB. | |||
+----------------+---------------------+ | +================+=====================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+----------------+---------------------+ | +================+=====================+ | |||
| ipv4-route | pimStarGAddressType | | | ipv4-route | pimStarGAddressType | | |||
+----------------+ | | ||||
| ipv6-route | | | | ipv6-route | | | |||
+----------------+---------------------+ | ||||
| group | pimStarGGrpAddress | | | group | pimStarGGrpAddress | | |||
+----------------+---------------------+ | ||||
| source-address | pimSGRptSrcAddress | | | source-address | pimSGRptSrcAddress | | |||
+----------------+---------------------+ | ||||
| up-time | pimSGRptUpTime | | | up-time | pimSGRptUpTime | | |||
+----------------+---------------------+ | +----------------+---------------------+ | |||
Table 6: YANG Nodes and pimSGRptTable Objects | Table 6: YANG Nodes and | |||
pimSGRptTable Objects | ||||
5.6. pimBidirDFElectionTable | 5.6. pimBidirDFElectionTable | |||
pimBidirDFElectionTable is mapped to pim/address-family/rp/bidir/ | pimBidirDFElectionTable is mapped to pim/address-family/rp/bidir/ | |||
interface-df-election/ipv4-rp and pim/address-family/rp/bidir/ | interface-df-election/ipv4-rp and pim/address-family/rp/bidir/ | |||
interface-df-election/ipv6-rp. The key of | interface-df-election/ipv6-rp. The key of | |||
pimBidirDFElectionTable includes pimBidirDFElectionIfIndex whose type | pimBidirDFElectionTable includes pimBidirDFElectionIfIndex, whose | |||
is InterfaceIndex, while the YANG lists use a node "name" with the | type is InterfaceIndex, while the YANG lists use a node "name" with | |||
type string instead. | the type string instead. | |||
The following table lists the YANG data nodes with corresponding | Table 7 lists the YANG data nodes with corresponding objects of | |||
objects of pimBidirDFElectionTable in the PIM-STD-MIB. | pimBidirDFElectionTable in the PIM-STD-MIB. | |||
+--------------------------+-------------------------------------+ | +==========================+=====================================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+--------------------------+-------------------------------------+ | +==========================+=====================================+ | |||
| ipv4-rp | pimBidirDFElectionAddressType | | | ipv4-rp | pimBidirDFElectionAddressType | | |||
+--------------------------+ | | ||||
| ipv6-rp | | | | ipv6-rp | | | |||
+--------------------------+-------------------------------------+ | ||||
| rp-address | pimBidirDFElectionRPAddress | | | rp-address | pimBidirDFElectionRPAddress | | |||
+--------------------------+-------------------------------------+ | ||||
| df-address | pimBidirDFElectionWinnerAddressType | | | df-address | pimBidirDFElectionWinnerAddressType | | |||
| +-------------------------------------+ | ||||
| | pimBidirDFElectionWinnerAddress | | | | pimBidirDFElectionWinnerAddress | | |||
+--------------------------+-------------------------------------+ | ||||
| up-time | pimBidirDFElectionWinnerUpTime | | | up-time | pimBidirDFElectionWinnerUpTime | | |||
+--------------------------+-------------------------------------+ | ||||
| winner-metric-preference | pimBidirDFElectionWinnerMetricPref | | | winner-metric-preference | pimBidirDFElectionWinnerMetricPref | | |||
| winner-metric-preference | pimBidirDFElectionWinnerMetric | | | +-------------------------------------+ | |||
| | pimBidirDFElectionWinnerMetric | | ||||
+--------------------------+-------------------------------------+ | ||||
| interface-state | pimBidirDFElectionState | | | interface-state | pimBidirDFElectionState | | |||
+--------------------------+-------------------------------------+ | +--------------------------+-------------------------------------+ | |||
Table 7: YANG Nodes and pimBidirDFElectionTable Objects | Table 7: YANG Nodes and pimBidirDFElectionTable Objects | |||
5.7. pimStaticRPTable | 5.7. pimStaticRPTable | |||
pimStaticRPTable is mapped to pim/address-family/rp/static-rp/ipv4-rp | pimStaticRPTable is mapped to pim/address-family/rp/static-rp/ipv4-rp | |||
and pim/address-family/rp/static-rp/ipv6-rp. | and pim/address-family/rp/static-rp/ipv6-rp. | |||
The following table lists the YANG data nodes with corresponding | Table 8 lists the YANG data nodes with corresponding objects of | |||
objects of pimStaticRPTable in the PIM-STD-MIB. | pimStaticRPTable in the PIM-STD-MIB. | |||
+----------------+----------------------------+ | +================+============================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+----------------+----------------------------+ | +================+============================+ | |||
| ipv4-rp | pimStaticRPAddressType | | | ipv4-rp | pimStaticRPAddressType | | |||
+----------------+ | | ||||
| ipv6-rp | | | | ipv6-rp | | | |||
+----------------+----------------------------+ | ||||
| rp-address | pimStaticRPRPAddress | | | rp-address | pimStaticRPRPAddress | | |||
+----------------+----------------------------+ | ||||
| bidir | pimStaticRPPimMode | | | bidir | pimStaticRPPimMode | | |||
+----------------+ | | ||||
| sm | | | | sm | | | |||
+----------------+----------------------------+ | ||||
| bidir/override | pimStaticRPOverrideDynamic | | | bidir/override | pimStaticRPOverrideDynamic | | |||
+----------------+ | | ||||
| sm/override | | | | sm/override | | | |||
+----------------+----------------------------+ | +----------------+----------------------------+ | |||
Table 8: YANG Nodes and pimStaticRPTable Objects | Table 8: YANG Nodes and | |||
pimStaticRPTable Objects | ||||
5.8. pimAnycastRPSetTable | 5.8. pimAnycastRPSetTable | |||
pimAnycastRPSetTable is mapped to pim/address-family/sm/asm/anycast- | pimAnycastRPSetTable is mapped to pim/address-family/sm/asm/anycast- | |||
rp/ipv4-anycast-rp and pim/address-family/sm/asm/anycast-rp/ipv6- | rp/ipv4-anycast-rp and pim/address-family/sm/asm/anycast-rp/ipv6- | |||
anycast-rp. | anycast-rp. | |||
The following table lists the YANG data nodes with corresponding | Table 9 lists the YANG data nodes with corresponding objects of | |||
objects of pimAnycastRPSetTable in the PIM-STD-MIB. | pimAnycastRPSetTable in the PIM-STD-MIB. | |||
+-----------------+-------------------------------+ | +=================+===============================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+-----------------+-------------------------------+ | +=================+===============================+ | |||
| ipv4-anycast-rp | pimAnycastRPSetAddressType | | | ipv4-anycast-rp | pimAnycastRPSetAddressType | | |||
+-----------------+ | | ||||
| ipv6-anycast-rp | | | | ipv6-anycast-rp | | | |||
+-----------------+-------------------------------+ | ||||
| anycast-address | pimAnycastRPSetAnycastAddress | | | anycast-address | pimAnycastRPSetAnycastAddress | | |||
+-----------------+-------------------------------+ | ||||
| rp-address | pimAnycastRPSetRouterAddress | | | rp-address | pimAnycastRPSetRouterAddress | | |||
+-----------------+-------------------------------+ | +-----------------+-------------------------------+ | |||
Table 9: YANG Nodes and pimAnycastRPSetTable Objects | Table 9: YANG Nodes and | |||
pimAnycastRPSetTable Objects | ||||
5.9. pimGroupMappingTable | 5.9. pimGroupMappingTable | |||
pimGroupMappingTable is mapped to pim/address-family/rp/rp-mappings/ | pimGroupMappingTable is mapped to pim/address-family/rp/rp-mappings/ | |||
ipv4-rp and pim/address-family/rp/rp-mappings/ipv6-rp. | ipv4-rp and pim/address-family/rp/rp-mappings/ipv6-rp. | |||
The following table lists the YANG data nodes with corresponding | Table 10 lists the YANG data nodes with corresponding objects of | |||
objects of pimGroupMappingTable in the PIM-STD-MIB. | pimGroupMappingTable in the PIM-STD-MIB. | |||
+------------+--------------------------------+ | +============+================================+ | |||
| YANG node | PIM-STD-MIB object | | | YANG Node | PIM-STD-MIB Object | | |||
+------------+--------------------------------+ | +============+================================+ | |||
| ipv4-rp | pimGroupMappingAddressType | | | ipv4-rp | pimGroupMappingAddressType | | |||
+------------+ | | ||||
| ipv6-rp | | | | ipv6-rp | | | |||
+------------+--------------------------------+ | ||||
| group | pimGroupMappingGrpAddress | | | group | pimGroupMappingGrpAddress | | |||
| +--------------------------------+ | ||||
| | pimGroupMappingGrpPrefixLength | | | | pimGroupMappingGrpPrefixLength | | |||
+------------+--------------------------------+ | ||||
| ipv4-rp | pimGroupMappingRPAddressType | | | ipv4-rp | pimGroupMappingRPAddressType | | |||
+------------+ | | ||||
| ipv6-rp | | | | ipv6-rp | | | |||
+------------+--------------------------------+ | ||||
| rp-address | pimGroupMappingRPAddress | | | rp-address | pimGroupMappingRPAddress | | |||
| +--------------------------------+ | ||||
| | pimGroupMappingPimMode | | | | pimGroupMappingPimMode | | |||
+------------+--------------------------------+ | +------------+--------------------------------+ | |||
Table 10: YANG Nodes and pimGroupMappingTable Objects | Table 10: YANG Nodes and | |||
pimGroupMappingTable Objects | ||||
In addtion, the object pimGroupMappingPimMode in | In addition, the object "pimGroupMappingPimMode" in | |||
pimGroupMappingTable is mapped to the node rp/rp-list/ipv4-rp/mode or | pimGroupMappingTable is mapped to the node "rp/rp-list/ipv4-rp/mode" | |||
the node rp/rp-list/ipv6-rp/mode in the YANG module ietf-pim-rp. | or the node "rp/rp-list/ipv6-rp/mode" in the YANG module | |||
"ietf-pim-rp". | ||||
6. PIM YANG Modules | 6. PIM YANG Modules | |||
6.1. PIM base module | 6.1. PIM Base Module | |||
This module references [RFC3973], [RFC5015], [RFC5306], [RFC5880], | This module references [RFC3973], [RFC5015], [RFC5880], [RFC6991], | |||
and [RFC7761]. | [RFC7761], [RFC8294], [RFC8343], [RFC8349], [RFC8706], and [RFC9314]. | |||
<CODE BEGINS> file "ietf-pim-base@2018-04-16.yang" | <CODE BEGINS> file "ietf-pim-base@2021-09-03.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."; | |||
skipping to change at page 40, line 4 ¶ | skipping to change at line 1793 ¶ | |||
} | } | |||
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 page 41, line 44 ¶ | skipping to change at line 1891 ¶ | |||
"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 page 42, line 47 ¶ | skipping to change at line 1944 ¶ | |||
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 page 44, line 32 ¶ | skipping to change at line 2025 ¶ | |||
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 page 47, line 48 ¶ | skipping to change at line 2193 ¶ | |||
} | } | |||
} // 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 | |||
/* | /* | |||
* 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> | <CODE ENDS> | |||
6.2. PIM RP Module | 6.2. PIM RP Module | |||
This module references [RFC5059] and [RFC7761]. | This module references [RFC5059], [RFC6991], [RFC7761], [RFC8294], | |||
[RFC8343], and [RFC8349]. | ||||
<CODE BEGINS> file "ietf-pim-rp@2018-04-16.yang" | <CODE BEGINS> file "ietf-pim-rp@2021-09-03.yang" | |||
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 page 60, line 40 ¶ | skipping to change at line 2840 ¶ | |||
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 page 63, line 29 ¶ | skipping to change at line 2981 ¶ | |||
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 page 64, line 20 ¶ | skipping to change at line 3019 ¶ | |||
} | } | |||
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 page 64, line 36 ¶ | skipping to change at line 3034 ¶ | |||
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 page 66, line 46 ¶ | skipping to change at line 3132 ¶ | |||
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 page 69, line 51 ¶ | skipping to change at line 3288 ¶ | |||
} | } | |||
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 page 70, line 41 ¶ | skipping to change at line 3326 ¶ | |||
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 page 71, line 22 ¶ | skipping to change at line 3354 ¶ | |||
"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 page 72, line 28 ¶ | skipping to change at line 3405 ¶ | |||
} | } | |||
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> | <CODE ENDS> | |||
6.3. PIM-SM Module | 6.3. PIM-SM Module | |||
This module references [RFC4607] and [RFC7761]. | This module references [RFC4607], [RFC6991], [RFC7761], and | |||
[RFC8349]. | ||||
<CODE BEGINS> file "ietf-pim-sm@2018-04-16.yang" | <CODE BEGINS> file "ietf-pim-sm@2021-09-03.yang" | |||
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 page 77, line 47 ¶ | skipping to change at line 3675 ¶ | |||
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> | <CODE ENDS> | |||
6.4. PIM-DM Module | 6.4. PIM-DM Module | |||
This module references [RFC3973]. | This module references [RFC3973] and [RFC8349]. | |||
<CODE BEGINS> file "ietf-pim-dm@2018-04-16.yang" | <CODE BEGINS> file "ietf-pim-dm@2021-09-03.yang" | |||
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> | <CODE ENDS> | |||
6.5. PIM-BIDIR Module | 6.5. BIDIR-PIM Module | |||
This module references [RFC5015]. | This module references [RFC5015], [RFC6991], [RFC8294], [RFC8343], | |||
and [RFC8349]. | ||||
<CODE BEGINS> file "ietf-pim-bidir@2018-04-16.yang" | <CODE BEGINS> file "ietf-pim-bidir@2021-09-03.yang" | |||
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 page 85, line 23 ¶ | skipping to change at line 4042 ¶ | |||
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 | |||
} // 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> | <CODE ENDS> | |||
7. Implementation Status | 7. Security Considerations | |||
This section to be removed by the RFC editor. | ||||
This section records the status of known implementations of the | ||||
protocol defined by this specification at the time of posting of this | ||||
Internet-Draft, and is based on a proposal described in [RFC7942]. | ||||
The description of implementations in this section is intended to | ||||
assist the IETF in its decision processes in progressing drafts to | ||||
RFCs. Please note that the listing of any individual implementation | ||||
here does not imply endorsement by the IETF. Furthermore, no effort | ||||
has been spent to verify the information presented here that was | ||||
supplied by IETF contributors. This is not intended as, and must not | ||||
be construed to be, a catalog of available implementations or their | ||||
features. Readers are advised to note that other implementations may | ||||
exist. | ||||
According to RFC 7942, "this will allow reviewers and working groups | ||||
to assign due consideration to documents that have the benefit of | ||||
running code, which may serve as evidence of valuable experimentation | ||||
and feedback that have made the implemented protocols more mature. | ||||
It is up to the individual working groups to use this information as | ||||
they see fit". | ||||
This document is the work result of the PIM working group's YANG | ||||
multicast 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: | ||||
https://trac.ietf.org/trac/pim/wiki/yang | ||||
8. Security Considerations | ||||
The YANG module specified in this document defines a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC8446]. | |||
The NETCONF access control model [RFC6536] provides the means to | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
restrict access for particular NETCONF or RESTCONF users to a | provides the means to restrict access for particular NETCONF or | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in these YANG modules that | |||
writable/creatable/deletable (i.e., config true, which is the | are writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
pim-base:graceful-restart | pim-base:graceful-restart | |||
This subtree specifies the configuration for the PIM graceful | This subtree specifies the configuration for PIM graceful restart | |||
restart at the global level on a device. Modifying the | at the global level on a device. Modifying the configuration can | |||
configuration can cause temporary interruption to the multicast | cause temporary interruption to the multicast routing during | |||
routing during restart. | restart. | |||
pim-base:address-family/pim-base:graceful-restart | pim-base:address-family/pim-base:graceful-restart | |||
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 | PIM graceful restart on a device. Modifying the configuration can | |||
can cause temporary interruption to the multicast routing during | cause temporary interruption to the multicast routing during | |||
restart. | restart. | |||
pim-base:address-family/pim-rp:pim-rp:rp | pim-base:address-family/pim-rp:pim-rp:rp | |||
This subtree specifies the configuration for the PIM Rendezvous | This subtree specifies the configuration for the PIM Rendezvous | |||
Point (RP) on a device. Modifying the configuration can cause RP | Point (RP) on a device. Modifying the configuration can cause RP | |||
malfunctions. | malfunctions. | |||
pim-base:address-family/pim-sm:sm | pim-base:address-family/pim-sm:sm | |||
This subtree specifies the configuration for the PIM Sparse Mode | This subtree specifies the configuration for PIM Sparse Mode | |||
(PIM-SM) on a device. Modifying the configuration can cause | (PIM-SM) on a device. Modifying the configuration can cause | |||
multicast traffic disabled or rerouted in PIM-SM. | multicast traffic to be disabled or rerouted in PIM-SM. | |||
pim-base:address-family/pim-dm:dm | pim-base:address-family/pim-dm:dm | |||
This subtree specifies the configuration for the PIM Dense Mode | This subtree specifies the configuration for PIM Dense Mode | |||
(PIM-DM) on a device. Modifying the configuration can cause | (PIM-DM) on a device. Modifying the configuration can cause | |||
multicast traffic disabled or rerouted in PIM-DM. | multicast traffic to be disabled or rerouted in PIM-DM. | |||
pim-base:address-family/pim-bidir:bidir | pim-base:address-family/pim-bidir:bidir | |||
This subtree specifies the configuration for the PIM Bidirectional | This subtree specifies the configuration for PIM Bidirectional | |||
Mode (PIM-BIDIR) on a device. Modifying the configuration can | Mode (BIDIR-PIM) on a device. Modifying the configuration can | |||
cause multicast traffic disabled or rerouted in PIM-BIDIR. | cause multicast traffic to be disabled or rerouted in BIDIR-PIM. | |||
pim-base:interfaces | pim-base:interfaces | |||
This subtree specifies the configuration for the PIM interfaces on | This subtree specifies the configuration for the PIM interfaces on | |||
a device. Modifying the configuration can cause the PIM protocol | a device. Modifying the configuration can cause the PIM protocol | |||
to get insufficient or incorrect information. | to get insufficient or incorrect information. | |||
These subtrees are all nnder /rt:routing/rt:control-plane-protocols/ | These subtrees are all under "/rt:routing/rt:control-plane-protocols/ | |||
pim-base:pim. | pim-base:pim". | |||
Unauthorized access to any data node of these subtrees can adversely | Unauthorized access to any data node of these subtrees can adversely | |||
affect the multicast routing subsystem of both the local device and | 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. | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in these YANG modules may be | |||
sensitive or vulnerable in some network environments. It is thus | considered sensitive or vulnerable in some network environments. It | |||
important to control read access (e.g., via get, get-config, or | is thus important to control read access (e.g., via get, get-config, | |||
notification) to these data nodes. These are the subtrees and data | or notification) to these data nodes. These are the subtrees and | |||
nodes and their sensitivity/vulnerability: | data nodes and their sensitivity/vulnerability: | |||
/rt:routing/rt:control-plane-protocols/pim-base:pim | /rt:routing/rt:control-plane-protocols/pim-base:pim | |||
Unauthorized access to any data node of the above subtree can | Unauthorized access to any data node of the above subtree can | |||
disclose the operational state information of PIM on this device. | disclose the operational state information of PIM on this device. | |||
9. IANA Considerations | 8. IANA Considerations | |||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | ||||
actual RFC number (and remove this note). | ||||
This document registers the following namespace URIs in the IETF XML | ||||
registry [RFC3688]: | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-base | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | IANA has registered the following namespace URIs in the "IETF XML | |||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | Registry" [RFC3688]: | |||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-pim-base | |||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-dm | Registrant Contact: The IESG. | |||
Registrant Contact: The IESG. | XML: N/A; the requested URI is an XML namespace. | |||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | |||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-rp | Registrant Contact: The IESG. | |||
Registrant Contact: The IESG. | XML: N/A; the requested URI is an XML namespace. | |||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-pim-dm | |||
URI: urn:ietf:params:xml:ns:yang:ietf-pim-sm | Registrant Contact: The IESG. | |||
Registrant Contact: The IESG. | XML: N/A; the requested URI is an XML namespace. | |||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
This document registers the following YANG modules in the YANG Module | URI: urn:ietf:params:xml:ns:yang:ietf-pim-rp | |||
Names registry [RFC7950]: | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | URI: urn:ietf:params:xml:ns:yang:ietf-pim-sm | |||
name: ietf-pim-base | Registrant Contact: The IESG. | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-base | XML: N/A; the requested URI is an XML namespace. | |||
prefix: pim-base | ||||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | IANA has registered the following YANG modules in the "YANG Module | |||
name: ietf-pim-bidir | Names" registry [RFC6020]: | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | ||||
prefix: pim-bidir | ||||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | Name: ietf-pim-base | |||
name: ietf-pim-dm | Namespace: urn:ietf:params:xml:ns:yang:ietf-pim-base | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-dm | Prefix: pim-base | |||
prefix: pim-dm | Reference: RFC 9128 | |||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | Name: ietf-pim-bidir | |||
name: ietf-pim-rp | Namespace: urn:ietf:params:xml:ns:yang:ietf-pim-bidir | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-rp | Prefix: pim-bidir | |||
prefix: pim-rp | Reference: RFC 9128 | |||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
-------------------------------------------------------------------- | Name: ietf-pim-dm | |||
name: ietf-pim-sm | Namespace: urn:ietf:params:xml:ns:yang:ietf-pim-dm | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-pim-sm | Prefix: pim-dm | |||
prefix: pim-sm | Reference: RFC 9128 | |||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
10. Acknowledgements | Name: ietf-pim-rp | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-pim-rp | ||||
Prefix: pim-rp | ||||
Reference: RFC 9128 | ||||
The authors would like to thank Steve Baillargeon, Guo Feng, Robert | Name: ietf-pim-sm | |||
Kebler, Tanmoy Kundu, and Stig Venaas for their valuable | Namespace: urn:ietf:params:xml:ns:yang:ietf-pim-sm | |||
contributions. | Prefix: pim-sm | |||
Reference: RFC 9128 | ||||
11. References | 9. References | |||
11.1. Normative References | 9.1. Normative References | |||
[RFC3569] Bhattacharyya, S., Ed., "An Overview of Source-Specific | [RFC3569] Bhattacharyya, S., Ed., "An Overview of Source-Specific | |||
Multicast (SSM)", RFC 3569, DOI 10.17487/RFC3569, July | Multicast (SSM)", RFC 3569, DOI 10.17487/RFC3569, July | |||
2003, <https://www.rfc-editor.org/info/rfc3569>. | 2003, <https://www.rfc-editor.org/info/rfc3569>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | [RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | |||
skipping to change at page 94, line 38 ¶ | skipping to change at line 4431 ¶ | |||
[RFC5059] Bhaskar, N., Gall, A., Lingard, J., and S. Venaas, | [RFC5059] Bhaskar, N., Gall, A., Lingard, J., and S. Venaas, | |||
"Bootstrap Router (BSR) Mechanism for Protocol Independent | "Bootstrap Router (BSR) Mechanism for Protocol Independent | |||
Multicast (PIM)", RFC 5059, DOI 10.17487/RFC5059, January | Multicast (PIM)", RFC 5059, DOI 10.17487/RFC5059, January | |||
2008, <https://www.rfc-editor.org/info/rfc5059>. | 2008, <https://www.rfc-editor.org/info/rfc5059>. | |||
[RFC5060] Sivaramu, R., Lingard, J., McWalter, D., Joshi, B., and A. | [RFC5060] Sivaramu, R., Lingard, J., McWalter, D., Joshi, B., and A. | |||
Kessler, "Protocol Independent Multicast MIB", RFC 5060, | Kessler, "Protocol Independent Multicast MIB", RFC 5060, | |||
DOI 10.17487/RFC5060, January 2008, | DOI 10.17487/RFC5060, January 2008, | |||
<https://www.rfc-editor.org/info/rfc5060>. | <https://www.rfc-editor.org/info/rfc5060>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
(TLS) Protocol Version 1.2", RFC 5246, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
DOI 10.17487/RFC6536, March 2012, | ||||
<https://www.rfc-editor.org/info/rfc6536>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Multicast - Sparse Mode (PIM-SM): Protocol Specification | Multicast - Sparse Mode (PIM-SM): Protocol Specification | |||
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | |||
2016, <https://www.rfc-editor.org/info/rfc7761>. | 2016, <https://www.rfc-editor.org/info/rfc7761>. | |||
skipping to change at page 95, line 33 ¶ | skipping to change at line 4468 ¶ | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
"Common YANG Data Types for the Routing Area", RFC 8294, | "Common YANG Data Types for the Routing Area", RFC 8294, | |||
DOI 10.17487/RFC8294, December 2017, | DOI 10.17487/RFC8294, December 2017, | |||
<https://www.rfc-editor.org/info/rfc8294>. | <https://www.rfc-editor.org/info/rfc8294>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Access Control Model", STD 91, RFC 8341, | ||||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface | [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | |||
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8343>. | <https://www.rfc-editor.org/info/rfc8343>. | |||
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
[I-D.ietf-bfd-yang] | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
G. Mirsky, "YANG Data Model for Bidirectional Forwarding | <https://www.rfc-editor.org/info/rfc8446>. | |||
Detection (BFD)", draft-ietf-bfd-yang-13 (work in | ||||
progress), March 2018. | ||||
11.2. Informative References | [RFC9314] Jethanandani, M., Ed., Rahman, R., Ed., Zheng, L., Ed., | |||
Pallagatti, S., and G. Mirsky, "YANG Data Model for | ||||
Bidirectional Forwarding Detection (BFD)", RFC 9314, | ||||
DOI 10.17487/RFC9314, September 2022, | ||||
<https://www.rfc-editor.org/info/rfc9314>. | ||||
9.2. Informative References | ||||
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | |||
Thyagarajan, "Internet Group Management Protocol, Version | Thyagarajan, "Internet Group Management Protocol, Version | |||
3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | 3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | |||
<https://www.rfc-editor.org/info/rfc3376>. | <https://www.rfc-editor.org/info/rfc3376>. | |||
[RFC3618] Fenner, B., Ed. and D. Meyer, Ed., "Multicast Source | [RFC3618] Fenner, B., Ed. and D. Meyer, Ed., "Multicast Source | |||
Discovery Protocol (MSDP)", RFC 3618, | Discovery Protocol (MSDP)", RFC 3618, | |||
DOI 10.17487/RFC3618, October 2003, | DOI 10.17487/RFC3618, October 2003, | |||
<https://www.rfc-editor.org/info/rfc3618>. | <https://www.rfc-editor.org/info/rfc3618>. | |||
[RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | |||
Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | |||
DOI 10.17487/RFC3810, June 2004, | DOI 10.17487/RFC3810, June 2004, | |||
<https://www.rfc-editor.org/info/rfc3810>. | <https://www.rfc-editor.org/info/rfc3810>. | |||
[RFC5306] Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS", | ||||
RFC 5306, DOI 10.17487/RFC5306, October 2008, | ||||
<https://www.rfc-editor.org/info/rfc5306>. | ||||
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
[RFC6388] Wijnands, IJ., Ed., Minei, I., Ed., Kompella, K., and B. | [RFC6388] Wijnands, IJ., Ed., Minei, I., Ed., Kompella, K., and B. | |||
Thomas, "Label Distribution Protocol Extensions for Point- | Thomas, "Label Distribution Protocol Extensions for Point- | |||
to-Multipoint and Multipoint-to-Multipoint Label Switched | to-Multipoint and Multipoint-to-Multipoint Label Switched | |||
Paths", RFC 6388, DOI 10.17487/RFC6388, November 2011, | Paths", RFC 6388, DOI 10.17487/RFC6388, November 2011, | |||
<https://www.rfc-editor.org/info/rfc6388>. | <https://www.rfc-editor.org/info/rfc6388>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
Code: The Implementation Status Section", BCP 205, | ||||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
<https://www.rfc-editor.org/info/rfc7942>. | ||||
[RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
RFC 7951, DOI 10.17487/RFC7951, August 2016, | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7951>. | <https://www.rfc-editor.org/info/rfc7951>. | |||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
[I-D.ietf-netmod-rfc6087bis] | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
Bierman, A., "Guidelines for Authors and Reviewers of YANG | Documents Containing YANG Data Models", BCP 216, RFC 8407, | |||
Data Model Documents", draft-ietf-netmod-rfc6087bis-20 | DOI 10.17487/RFC8407, October 2018, | |||
(work in progress), March 2018. | <https://www.rfc-editor.org/info/rfc8407>. | |||
[RFC8706] Ginsberg, L. and P. Wells, "Restart Signaling for IS-IS", | ||||
RFC 8706, DOI 10.17487/RFC8706, February 2020, | ||||
<https://www.rfc-editor.org/info/rfc8706>. | ||||
Appendix A. Data Tree Example | Appendix A. Data Tree Example | |||
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 [RFC7951], containing both configuration and state data. | encoding [RFC7951], containing both configuration data and state | |||
data. | ||||
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 | |||
skipping to change at page 98, line 9 ¶ | skipping to change at line 4595 ¶ | |||
{ | { | |||
"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 page 100, line 43 ¶ | skipping to change at line 4724 ¶ | |||
"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 page 105, line 4 ¶ | skipping to change at line 4926 ¶ | |||
}, | }, | |||
"neighbors": { | "neighbors": { | |||
"ipv6-neighbor": [ | "ipv6-neighbor": [ | |||
{ | { | |||
"address": "fe80::200:5eff:fe00:5323", | "address": "fe80::200:5eff:fe00:5323", | |||
"expiration": 28, | "expiration": 28, | |||
"dr-priority": 1, | "dr-priority": 1, | |||
"gen-id": 102, | "gen-id": 102, | |||
"lan-prune-delay": { | "lan-prune-delay": { | |||
"present": false | "present": false | |||
}, | }, | |||
"up-time": 323500 | "up-time": 323500 | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Acknowledgments | ||||
The authors would like to thank Steve Baillargeon, Feng Guo, Robert | ||||
Kebler, Tanmoy Kundu, and Stig Venaas for their valuable | ||||
contributions. | ||||
Authors' Addresses | Authors' Addresses | |||
Xufeng Liu | Xufeng Liu | |||
Volta Networks | IBM Corporation | |||
2300 Dulles Station Blvd. | ||||
EMail: xufeng.liu.ietf@gmail.com | Herndon, VA 20171 | |||
United States of America | ||||
Email: xufeng.liu.ietf@gmail.com | ||||
Pete McAllister | Pete McAllister | |||
Metaswitch Networks | Metaswitch Networks | |||
100 Church Street | 100 Church Street | |||
Enfield EN2 6BQ | Enfield | |||
UK | EN2 6BQ | |||
United Kingdom | ||||
EMail: pete.mcallister@metaswitch.com | Email: pete.mcallister@metaswitch.com | |||
Anish Peter | Anish Peter | |||
Individual | Individual | |||
Email: anish.ietf@gmail.com | ||||
EMail: anish.ietf@gmail.com | ||||
Mahesh Sivakumar | Mahesh Sivakumar | |||
Juniper Networks | Juniper Networks | |||
1133 Innovation Way | 1133 Innovation Way | |||
Sunnyvale, California | Sunnyvale, California | |||
USA | United States of America | |||
Email: sivakumar.mahesh@gmail.com | ||||
EMail: sivakumar.mahesh@gmail.com | ||||
Yisong Liu | Yisong Liu | |||
Huawei Technologies | China Mobile | |||
Huawei Administration Building | China Mobile Innovation Building | |||
Longgang, Guangdong 518129 | 32 Xuanwumen West Street | |||
Beijing | ||||
100053 | ||||
China | China | |||
Email: liuyisong@chinamobile.com | ||||
EMail: liuyisong@huawei.com | ||||
Fangwei Hu | Fangwei Hu | |||
ZTE Corporation | Individual Contributor | |||
889 Bibo Road | 86 Bohang Road | |||
Shanghai, Shanghai 201203 | Shanghai | |||
Shanghai, 200126 | ||||
China | China | |||
Email: hufwei@gmail.com | ||||
EMail: hu.fangwei@zte.com.cn | ||||
End of changes. 730 change blocks. | ||||
1149 lines changed or deleted | 1249 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |