draft-ietf-mpls-mldp-yang-04.txt   draft-ietf-mpls-mldp-yang-05.txt 
MPLS Working Group K. Raza MPLS Working Group K. Raza
Internet-Draft S. Krishnaswamy Internet-Draft Cisco Systems, Inc.
Intended status: Standards Track Cisco Systems, Inc. Intended status: Standards Track
Expires: January 17, 2019 Expires: April 25, 2019 X. Liu
X. Liu
Volta Networks Volta Networks
S. Esale S. Esale
Juniper Networks Juniper Networks
L. Andersson L. Andersson
Huawei Technologies Huawei Technologies
J. Tantsura J. Tantsura
Nuage Networks Nuage Networks
July 16, 2018 S. Krishnaswamy
Individual
October 22, 2018
YANG Data Model for MPLS mLDP YANG Data Model for MPLS mLDP
draft-ietf-mpls-mldp-yang-04 draft-ietf-mpls-mldp-yang-05
Abstract Abstract
This document describes a YANG data model for Multi-Protocol Label This document describes a YANG data model for Multi-Protocol Label
Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The
mLDP data model augments the LDP data model. mLDP data model augments the LDP data model.
The YANG modules in this document conform to the Network Management
Datastore Architecture (NMDA).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 25, 2019.
This Internet-Draft will expire on January 17, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Base and Extended . . . . . . . . . . . . . . . . . . . . 3 1.1. Base and Extended . . . . . . . . . . . . . . . . . . . . 4
2. Specification of Requirements . . . . . . . . . . . . . . . . 4 2. Specification of Requirements . . . . . . . . . . . . . . . . 4
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. FEC Types . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. FEC Types . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 7 4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 7
4.2. mldp global container . . . . . . . . . . . . . . . . . . 8 4.2. mldp global container . . . . . . . . . . . . . . . . . . 9
4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9 4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9
4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 9 4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 10
4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 9 4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 10 4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 11
5. Operational State . . . . . . . . . . . . . . . . . . . . . . 12 5. Operational State . . . . . . . . . . . . . . . . . . . . . . 13
5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 14
5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 16 5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 17
5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 16 5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 17
5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 17 5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 18
5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 20 5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 21
6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 22
7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 22 8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 23
9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23 9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23
9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23 9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 32 9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 33
10. Security Considerations . . . . . . . . . . . . . . . . . . . 55 10. Security Considerations . . . . . . . . . . . . . . . . . . . 55
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 55 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 56
13. Normative References . . . . . . . . . . . . . . . . . . . . 55 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 57
Appendix A. Additional Contributors . . . . . . . . . . . . . . 57 13.1. Normative References . . . . . . . . . . . . . . . . . . 57
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 13.2. Informative References . . . . . . . . . . . . . . . . . 59
Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 60
Appendix B. Additional Contributors . . . . . . . . . . . . . . 68
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 68
1. Introduction 1. Introduction
This document introduces a YANG data model for MPLS Multipoint Label This document introduces a YANG data model for MPLS Multipoint Label
Distribution Protocol (mLDP). The mLDP model being defined here is Distribution Protocol (mLDP). The mLDP model being defined here is
dependent on LDP YANG data model [I-D.ietf-mpls-ldp-yang]. This dependent on the LDP YANG data model [I-D.ietf-mpls-ldp-yang]. This
implies that an opertor will need to use base LDP module to configure implies that an operator will need to use the base LDP module to
and manage control plane for mLDP. For example, an operator would configure and manage the control plane for mLDP. For example, an
enable LDP discovery on MPLS interface to establish LDP/mLDP peering operator would enable LDP discovery on MPLS interface to establish
on which mLDP bindings could be exchanged. Similarly, an operator LDP/mLDP peering on which mLDP bindings could be exchanged.
could query state information for an LDP peer in order to verify Similarly, an operator could query state information for an LDP peer
peering attributes etc. in order to verify peering attributes, etc.
Moreover, it is important to note here that any assumptions made in Moreover, it is important to note here that any assumptions made in
the LDP model also hold true in this document, unless otherwise the LDP model also hold true in this document, unless otherwise
explicitly stated. explicitly stated.
Like its parent LDP data model, this mLDP model also defines the Like its parent LDP data model, this mLDP model also defines the
following constructs for managing the mLDP protocol: following constructs for managing the mLDP protocol:
o Configuration o Configuration
o Operational State o Operational State
o Executables (Actions) o Executables (Actions)
o Notifications o Notifications
The modeling in this document complies with the Network Management The modeling in this document complies with the Network Management
Datastore Architecture (NMDA) [RFC8342]. The operational state data Datastore Architecture (NMDA) [RFC8342]. The operational state data
is combined with the associated configuration data in the same is combined with the associated configuration data in the same
hierarchy [I-D.ietf-netmod-rfc6087bis]. When protocol states are hierarchy [RFC8407]. When protocol states are retrieved from the
retrieved from the NMDA operational state datastore, the returned NMDA operational state datastore, the returned states cover all
states cover all "config true" (rw) and "config false" (ro) nodes "config true" (rw) and "config false" (ro) nodes defined in the
defined in the schema. schema.
This document is organized to define the data model for each of the This document is organized to define the data model for each of the
above constructs in the sequence as listed above. above constructs in the sequence as listed above.
1.1. Base and Extended 1.1. Base and Extended
Like LDP model, the configuration and state items are divided into Like the LDP model, the configuration and state items are divided
following two broad categories: into the following two broad categories:
o Base o Base
o Extended o Extended
The "base" category contains the basic and fundamental features that The "base" category contains the basic and fundamental features that
are covered in mLDP base specification [RFC6388] alongwith few are covered in the mLDP base specification [RFC6388] alongwith few
significant extension like targeted mLDP [RFC7060], constituting the significant extension like targeted mLDP [RFC7060], constituting the
minumum requirements for an mLDP deployment. Whereas, the "extended" minumum requirements for an mLDP deployment. Whereas, the "extended"
category contains all other non-base features (such as recursive FEC category contains all other non-base features (such as recursive FEC
support, protection etc.). All the items in a base category are support, protection etc.). All the items in the base category are
mandatory and hence no "if-feature" is allowed under the "base" mandatory and hence no "if-feature" is allowed under the "base"
category. While "base" model support will suffice for small category. While "base" model support will suffice for small
deployments, large deployments will require not only the "base" deployments, large deployments will require not only the "base"
module support but also "extended" support for some selected and module support but also "extended" support for some selected and
required features. required features.
The base and extended catogories are defined in their own modules The base and extended categories are defined in their own modules
ietf-mpls-mldp and ietf-mpls-mldp-extended respectively, each of ietf-mpls-mldp and ietf-mpls-mldp-extended respectively, each of
which augments the LDP base model as defined under ietf-mpls-ldp which augments the LDP base model as defined within the ietf-mpls-ldp
module [I-D.ietf-mpls-ldp-yang]. module [I-D.ietf-mpls-ldp-yang].
Like LDP, mLDP "base" model configuration and state covers ipv4 Like LDP, the mLDP "base" model configuration and state covers ipv4
address-family only, with ipv6 address-family related configuration address-family only, with ipv6 address-family related configuration
and state be covered in "extended" model. and state be covered in the "extended" model.
In this document, when a simplified graphical representation of YANG
model is presented in a tree diagrams, the meaning of the symbols in
these tree diagrams is defined in [RFC8340].
2. Specification of Requirements 2. Specification of Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in BCP 14 [RFC2119]
[RFC8174] when, and only when, they appear in all capitals, as shown
here.
3. Overview 3. Overview
This document defines a new module named "ietf-mpls-mldp" for mLDP This document defines a YANG module named "ietf-mpls-mldp" for the
YANG base data model that augments /rt:routing/rt:control-plane- mLDP YANG base data model that augments /rt:routing/rt:control-plane-
protocols/ldp:mpls-ldp defined in [I-D.ietf-mpls-ldp-yang]. The protocols/ldp:mpls-ldp defined in [I-D.ietf-mpls-ldp-yang]. The
document also defines "ietf-mpls-mldp-extended" module that models document also defines the "ietf-mpls-mldp-extended" YANG module that
the extended mLDP features under YANG. models the extended mLDP features.
Following diagram depicts high level mLDP yang tree organization and The following diagram depicts high level mLDP yang tree organization
hierarchy with respect to LDP: and hierarchy with respect to LDP:
+-- rw routing +-- rw routing
+-- rw control-plane-protocols +-- rw control-plane-protocols
+-- rw mpls-ldp +-- rw mpls-ldp
+-- rw some_ldp_container +-- rw some_ldp_container
| +-- rw mldp | +-- rw mldp
| +-- rw ... // mldp base | +-- rw ... // mldp base
| | +-- rw ... | | +-- rw ...
| | +-- ro ... | | +-- ro ...
| | +-- | | +--
skipping to change at page 5, line 35 skipping to change at page 5, line 40
+-- +--
notifications: notifications:
+--- n mpls-mldp-some_event +--- n mpls-mldp-some_event
+--- n ... +--- n ...
Figure 1 Figure 1
3.1. Scope 3.1. Scope
Following are the main mLDP areas and features that are within the The main mLDP areas and features that are within the scope of this
scope of this model: model are as follows:
o Base: o Base:
* mLDP Base Specification [RFC6388] * mLDP Base Specification [RFC6388]
* Targeted mLDP [RFC7060] * Targeted mLDP [RFC7060]
* Configured Leaf LSPs (manually provisioned) * Configured Leaf LSPs (manually provisioned)
o Extended: o Extended:
* mLDP Recursive FEC [RFC6512] * mLDP Recursive FEC [RFC6512]
* mLDP Fast-Reroute (FRR): * mLDP Fast-Reroute (FRR):
+ Node Protection [RFC7715] + Node Protection [RFC7715]
+ Multicast-only + Multicast-only [RFC7431]
* In-band Signaling: * In-band Signaling:
+ mLDP In-band Signaling [RFC6826] + mLDP In-band Signaling [RFC6826]
+ mLDP In-band signaling in a VRF [RFC7246] + mLDP In-band signaling in a VRF [RFC7246]
+ mLDP In-band Signaling with Wildcards [RFC7438] + mLDP In-band Signaling with Wildcards [RFC7438]
* Hub-and-Spoke Multipoint LSPs [RFC7140] * Hub-and-Spoke Multipoint LSPs [RFC7140]
[Ed Note: Some of the topics in the above list are to be addressed/ [Ed Note: Some of the topics in the above list are to be addressed/
extended in a later revision of this document]. extended in a later revision of this document].
3.2. FEC Types 3.2. FEC Types
The FEC for Multipoint LSP is presented as (root-address, opaque- The FEC for Multipoint LSP is presented as (root-address, opaque-
type). The following is the table for various type of MP opaque element). The following table lists various type of MP opaque
values with their keys, as covered in the configuration and state elements with their keys, as covered in the configuration and state
model: model:
+-------------------------+--------------------+------------+ +-------------------------+--------------------+------------+
| Opaque Type | Key | RFC | | Opaque Type | Key | RFC |
+-------------------------+--------------------+------------+ +-------------------------+--------------------+------------+
| Generic LSP Identifier | LSP Id | [RFC6388] | | Generic LSP Identifier | LSP Id | [RFC6388] |
| Transit IPv4 Source | Source, Group | [RFC6826] | | Transit IPv4 Source | Source, Group | [RFC6826] |
| Transit IPv6 Source | Source, Group | [RFC6826] | | Transit IPv6 Source | Source, Group | [RFC6826] |
| Transit IPv4 Bidir | RP, Group | [RFC6826] | | Transit IPv4 Bidir | RP, Group | [RFC6826] |
| Transit IPv6 Bidir | RP, Group | [RFC6826] | | Transit IPv6 Bidir | RP, Group | [RFC6826] |
| Transit VPNv4 Source | Source, Group, RD | [RFC7246] | | Transit VPNv4 Source | Source, Group, RD | [RFC7246] |
| Transit VPNv6 Source | Source, Group, RD | [RFC7246] | | Transit VPNv6 Source | Source, Group, RD | [RFC7246] |
| Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] | | Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] |
| Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] | | Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] |
| Recursive Opaque | Root | [RFC6512] | | Recursive Opaque | Root | [RFC6512] |
| VPN-Recursive Opaque | Root, RD | [RFC6512] | | VPN-Recursive Opaque | Root, RD | [RFC6512] |
+-------------------------+--------------------+------------+ +-------------------------+--------------------+------------+
Table 1: MP Opaque Types and keys Table 1: MP Opaque Types and keys
It is to be noted that there are three basic types (LSP Id, Source, It should be noted that there are three basic types (LSP Id, Source,
and Bidir) and then there are variants (VPN, recursive, VPN- and Bidir) and then there are variants (VPN, recursive, VPN-
recursive) on top of these basic types. recursive) on top of these basic types.
The "base" model includes only the "Generic LSP Identifier" opaque The "base" model includes only the "Generic LSP Identifier" opaque
type (for ipv4), while rest of the above types are covered by the type (for ipv4), while rest of the above types are covered by the
"extended" model. "extended" model.
4. Configuration 4. Configuration
4.1. Configuration Hierarchy 4.1. Configuration Hierarchy
Following is the high-level configuration organization for base and The high-level configuration organization for the base and extended
extended mLDP: mLDP follows:
augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
+-- mpls-ldp +-- mpls-ldp
+-- global +-- global
+-- ... +-- ...
+-- ... +-- ...
+-- mldp +-- mldp
| +-- ... | +-- ...
| +-- ... | +-- ...
| +-- address-families | +-- address-families
skipping to change at page 8, line 12 skipping to change at page 8, line 48
Figure 2 Figure 2
From above hierarchy, we can categorize mLDP configuration parameters From above hierarchy, we can categorize mLDP configuration parameters
into two types: into two types:
o Parameters that are mLDP specific o Parameters that are mLDP specific
o Parameters that leverage/extend LDP containers and parameters o Parameters that leverage/extend LDP containers and parameters
Following subsections first describe mLDP specific configuration The following subsections first describe the mLDP specific
parameters, followed by those leveraging LDP. It is to be noted that configuration parameters, followed by those leveraging LDP. It
these parameters are defined under their respective base or extended should be noted that these parameters are defined under their
module as per their categorization. respective base or extended module as per their categorization.
4.2. mldp global container 4.2. mldp global container
mldp container is an augmentation of LDP global container and holds mldp container is an augmentation of LDP global container and holds
the configuration related to items that are mLDP specific. The main the configuration related to items that are mLDP specific. The main
items under this container are: items under this container are:
o mLDP enabling: To enable mLDP under a (VRF) routing instance, mldp o mLDP enablement: To enable mLDP under a (VRF) routing instance,
container is enabled under LDP. Given that mLDP requires LDP mldp is enabled in the mldp container under LDP. Given that mLDP
signalling, it is not sensible to allow disabling LDP control requires LDP signaling, it is not sensible to allow disabling the
plane under a (VRF) network-instance while requiring mLDP to be LDP control plane under a (VRF) network-instance while requiring
enabled for the same. However, if a user wants only to allow mLDP to be enabled for the same. However, if a user wants to only
signalling for multipoint FECs on an LDP/mLDP enabled VRF allow signaling for multipoint FECs on an LDP/mLDP enabled VRF
instance, he/she can use LDP label-policies to disable unicast instance, he/she can use LDP label-policies to disable unicast
FECs under the VRF. FECs under the VRF.
o mLDP per-AF features: mLDP manages its own list of IP address- o mLDP per-AF features: mLDP manages its own list of IP address-
families and the features enabled underneath. The per-AF mLDP families and the features enabled underneath. The per-AF mLDP
configuration items include: configuration items include:
* Multicast-only FRR: This enables Multicast-only FRR * Multicast-only FRR: This enables Multicast-only FRR
functionality for a given AF under mLDP. The feature allows functionality for a given AF under mLDP. The feature allows
route-policy to be configured for finer control/applicability route-policy to be configured for finer control/applicability
of the feature. of the feature.
* Recursive FEC: The recursive-fec feature [RFC6512] can be * Recursive FEC: The recursive-fec feature [RFC6512] can be
enabled per AF with a route-policy. enabled per-AF with a route-policy.
* Configured Leaf LSPs: To provision multipoint leaf LSP * Configured Leaf LSPs: To provision multipoint leaf LSPs
manually, a container is provided per-AF under LDP. The manually, a per-AF container is provided under LDP. The
configuration is flexible and allows a user to specify MP LSPs configuration is flexible and allows a user to specify MP LSPs
of type p2mp or mp2mp with IPv4 or IPv6 root address(es) by of type p2mp or mp2mp with IPv4 or IPv6 root address(es) by
using either LSP-Id or (S,G). using either LSP-Id or (S,G).
Targeted mLDP feature specification [RFC7060] does not require any Targeted mLDP feature specification [RFC7060] does not require any
mLDP specific configuration. It, however, requires LDP upstream- mLDP specific configuration. It, however, requires LDP upstream-
label-assignment capability [RFC6389] to be enabled. label-assignment capability [RFC6389] to be enabled.
4.3. Leveraging LDP containers 4.3. Leveraging LDP containers
mLDP configuration model leverages following configuration areas and The mLDP configuration model leverages following configuration areas
containers that are already defined for LDP: and containers that are already defined for LDP:
o Capabilities: A new container "mldp" is defined that augments o Capabilities: A new container "mldp" is defined that augments
LDP's capabilities container. This new container specifies any LDP's capabilities container. This new container specifies any
mLDP specific capabilities and their parameters. Moreover, a new mLDP specific capabilities and their parameters. Moreover, a new
"mldp" container is also added by augmenting LDP per-peer container "mldp" is also added by augmenting LDP per-peer
capability container to override/control mLDP specific capability container to override/control mLDP specific
capabilities on a peer level. In the scope of this document, the capabilities on a peer level. In the scope of this document, the
most important capabilities related to mLDP are p2mp, mp2mp, make- most important capabilities related to mLDP are p2mp, mp2mp, make-
before-break, hub-and-spoke, and node-protection. before-break, hub-and-spoke, and node-protection.
o Discovery and Peer: mLDP requires LDP discovery and peer o Discovery and Peering: mLDP requires LDP discovery and peer
procedures to form mLDP peering. A peer is treated as mLDP peer procedures to form mLDP peering. A peer is treated as an mLDP
only when either P2MP or MP2MP capabilities have been successfully peer only when either P2MP or MP2MP capabilities have been
exchanged with the peer. If a user wish to selectively enable or successfully exchanged with the peer. If a user wish to
disable mLDP with a LDP-enabled peer, he/she may use per-peer mLDP selectively enable or disable mLDP with a LDP-enabled peer, he/she
capabilities configuration. [Ed Note: The option to control mLDP may use per-peer mLDP capabilities configuration. In most common
enabling/disabling on a peer-list is being explored for future ]. deployments, it is desirable to disable mLDP (capabilities
In most common deployments, it is desirable to disable mLDP announcements) on a targeted-only LDP peering, where targeted-only
(capabilities announcements) on a targeted-only LDP peering, where peer is the one whose discovery sources are the targeted type
targeted-only peer is the one whose discovery sources are targeted only.
type only. In future revision, a configuration option for this
support will also be provided.
o Forwarding: By default, mLDP is allowed to select any of the LDP o Forwarding: By default, mLDP is allowed to select any of the LDP
enabled interface as a downstream interface towards a nexthop enabled interface as a downstream interface towards a next-hop
(LDP/mLDP peer) for MP LSP programming. However, a configuration (LDP/mLDP peer) for MP LSP programming. However, a configuration
option is provided to allow mLDP to exclude a given interface from option is provided to allow mLDP to exclude a given interface from
such a selection. Note that such a configuration option will be such a selection. Note that such a configuration option will be
useful only when there are more than one interfaces available for useful only when there are more than one interface available for
the downstream selection. the downstream selection.
4.4. Configuration Tree 4.4. Configuration Tree
4.4.1. Base 4.4.1. Base
Following is a simplified graphical representation of the data model A simplified graphical representation of the data model for mLDP base
for mLDP base configuration configuration follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability:
+--rw mldp +--rw mldp
+--rw p2mp +--rw p2mp
| +--rw enable? boolean | +--rw enable? boolean
+--rw mp2mp +--rw mp2mp
| +--rw enable? boolean | +--rw enable? boolean
+--rw make-before-break +--rw make-before-break
+--rw enable? boolean +--rw enable? boolean
+--rw switchover-delay? uint16 +--rw switchover-delay? uint16
+--rw timeout? uint16 +--rw timeout? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw mldp +--rw mldp
+--rw enable? boolean +--rw enable? boolean
+--rw address-families +--rw address-families
+--rw ipv4 +--rw ipv4
+--rw configured-leaf-lsps +--rw configured-leaf-lsps
+--rw opaque-type-lspid +--rw opaque-element-lspid
+--rw fec-label* [root-address lsp-id] +--rw fec-label* [root-address lsp-id]
+--rw root-address inet:ipv4-address +--rw root-address inet:ipv4-address
+--rw lsp-id uint32 +--rw lsp-id uint32
+--rw multipoint-type? multipoint-type +--rw multipoint-type? multipoint-type
Figure 3 Figure 3
4.4.2. Extended 4.4.2. Extended
Following is a simplified graphical representation of the data model A simplified graphical representation of the data model for mLDP
for mLDP extended configuration extended configuration follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability:
+--rw mldp +--rw mldp
+--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}? +--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}?
| +--rw mldp-ext:enable? boolean | +--rw mldp-ext:enable? boolean
+--rw mldp-ext:node-protection {capability-mldp-node-protection}? +--rw mldp-ext:node-protection {capability-mldp-node-protection}?
+--rw mldp-ext:plr? boolean +--rw mldp-ext:plr? boolean
+--rw mldp-ext:merge-point +--rw mldp-ext:merge-point
+--rw mldp-ext:enable? boolean +--rw mldp-ext:enable? boolean
+--rw mldp-ext:targeted-session-teardown-delay? uint16 +--rw mldp-ext:targeted-session-teardown-delay? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw mldp +--rw mldp
+--rw enable? boolean +--rw enable? boolean
+--rw address-families +--rw address-families
+--rw ipv4 +--rw ipv4
| +--rw configured-leaf-lsps | +--rw configured-leaf-lsps
| | +--rw mldp-ext:opaque-type-transit | | +--rw mldp-ext:opaque-element-transit
| | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] | | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd]
| | | +--rw mldp-ext:root-address inet:ipv4-address | | | +--rw mldp-ext:root-address inet:ipv4-address
| | | +--rw mldp-ext:source-address inet:ip-address | | | +--rw mldp-ext:source-address inet:ip-address
| | | +--rw mldp-ext:group-address inet:ip-address-no-zone | | | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | | +--rw mldp-ext:rd route-distinguisher | | | +--rw mldp-ext:rd route-distinguisher
| | | +--rw mldp-ext:recur-root-address inet:ip-address | | | +--rw mldp-ext:recur-root-address inet:ip-address
| | | +--rw mldp-ext:recur-rd route-distinguisher | | | +--rw mldp-ext:recur-rd route-distinguisher
| | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| | +--rw mldp-ext:opaque-type-bidir | | +--rw mldp-ext:opaque-element-bidir
| | +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd] | | +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd]
| | +--rw mldp-ext:root-address inet:ipv4-address | | +--rw mldp-ext:root-address inet:ipv4-address
| | +--rw mldp-ext:rp inet:ip-address | | +--rw mldp-ext:rp inet:ip-address
| | +--rw mldp-ext:group-address inet:ip-address-no-zone | | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | +--rw mldp-ext:rd route-distinguisher | | +--rw mldp-ext:rd route-distinguisher
| | +--rw mldp-ext:recur-root-address inet:ip-address | | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher | | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:multicast-only-frr {mldp-mofrr}? | +--rw mldp-ext:multicast-only-frr {mldp-mofrr}?
| | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
| +--rw mldp-ext:recursive-fec | +--rw mldp-ext:recursive-fec
| +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
+--rw mldp-ext:ipv6 +--rw mldp-ext:ipv6
+--rw mldp-ext:configured-leaf-lsps +--rw mldp-ext:configured-leaf-lsps
| +--rw mldp-ext:opaque-type-lspid | +--rw mldp-ext:opaque-element-lspid
| | +--rw mldp-ext:fec-label* [root-address lsp-id] | | +--rw mldp-ext:fec-label* [root-address lsp-id]
| | +--rw mldp-ext:root-address inet:ipv6-address | | +--rw mldp-ext:root-address inet:ipv6-address
| | +--rw mldp-ext:lsp-id uint32 | | +--rw mldp-ext:lsp-id uint32
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| | +--rw mldp-ext:recursive-fec* [recur-root-address recur-rd] | | +--rw mldp-ext:recursive-fec* [recur-root-address recur-rd]
| | +--rw mldp-ext:recur-root-address inet:ip-address | | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher | | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:opaque-type-transit | +--rw mldp-ext:opaque-element-transit
| | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd]
| | +--rw mldp-ext:root-address inet:ipv6-address | | +--rw mldp-ext:root-address inet:ipv6-address
| | +--rw mldp-ext:source-address inet:ip-address | | +--rw mldp-ext:source-address inet:ip-address
| | +--rw mldp-ext:group-address inet:ip-address-no-zone | | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | +--rw mldp-ext:rd route-distinguisher | | +--rw mldp-ext:rd route-distinguisher
| | +--rw mldp-ext:recur-root-address inet:ip-address | | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher | | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:opaque-type-bidir | +--rw mldp-ext:opaque-element-bidir
| +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd] | +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd]
| +--rw mldp-ext:root-address inet:ipv6-address | +--rw mldp-ext:root-address inet:ipv6-address
| +--rw mldp-ext:rp inet:ip-address | +--rw mldp-ext:rp inet:ip-address
| +--rw mldp-ext:group-address inet:ip-address-no-zone | +--rw mldp-ext:group-address inet:ip-address-no-zone
| +--rw mldp-ext:rd route-distinguisher | +--rw mldp-ext:rd route-distinguisher
| +--rw mldp-ext:recur-root-address inet:ip-address | +--rw mldp-ext:recur-root-address inet:ip-address
| +--rw mldp-ext:recur-rd route-distinguisher | +--rw mldp-ext:recur-rd route-distinguisher
| +--rw mldp-ext:multipoint-type? mldp:multipoint-type | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
+--rw mldp-ext:multicast-only-frr {mldp-mofrr}? +--rw mldp-ext:multicast-only-frr {mldp-mofrr}?
| +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
skipping to change at page 12, line 33 skipping to change at page 13, line 33
+--rw switchover-delay? uint16 +--rw switchover-delay? uint16
+--rw timeout? uint16 +--rw timeout? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family:
+--rw mldp-disable? boolean +--rw mldp-disable? boolean
Figure 4 Figure 4
5. Operational State 5. Operational State
Operational state of mLDP can be queried and obtained from various The operational state of mLDP can be queried and obtained from
read-only mdlp "state" containers that augment ldp containers. various read-only mdlp "state" containers that augment ldp
containers.
5.1. Base 5.1. Base
Following is a simplified graphical representation of the data model A simplified graphical representation of the data model for mLDP base
for mLDP base operational state: operational state follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability:
+--ro mldp +--ro mldp
+--ro p2mp +--ro p2mp
| +--ro enable? boolean | +--ro enable? boolean
+--ro mp2mp +--ro mp2mp
| +--ro enable? boolean | +--ro enable? boolean
+--ro make-before-break +--ro make-before-break
+--ro enable? boolean +--ro enable? boolean
skipping to change at page 13, line 29 skipping to change at page 14, line 29
+--rw ipv4 +--rw ipv4
+--ro roots +--ro roots
+--ro root* [root-address] +--ro root* [root-address]
+--ro root-address inet:ipv4-address +--ro root-address inet:ipv4-address
+--ro is-self? boolean +--ro is-self? boolean
+--ro reachability* [address interface] +--ro reachability* [address interface]
| +--ro address inet:ipv4-address | +--ro address inet:ipv4-address
| +--ro interface if:interface-ref | +--ro interface if:interface-ref
| +--ro peer? -> ../../../../../../../../ldp:peers/peer/lsr-id | +--ro peer? -> ../../../../../../../../ldp:peers/peer/lsr-id
+--ro bindings +--ro bindings
+--ro opaque-type-lspid +--ro opaque-element-lspid
+--ro fec-label* [lsp-id] +--ro fec-label* [lsp-id]
+--ro lsp-id uint32 +--ro lsp-id uint32
+--ro multipoint-type? multipoint-type +--ro multipoint-type? multipoint-type
+--ro peer* [direction peer advertisement-type] +--ro peer* [direction peer advertisement-type]
+--ro direction ldp:downstream-upstream +--ro direction ldp:downstream-upstream
+--ro peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id +--ro peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
+--ro advertisement-type ldp:advertised-received +--ro advertisement-type ldp:advertised-received
+--ro label? rt-types:mpls-label +--ro label? rt-types:mpls-label
+--ro mbb-role? enumeration +--ro mbb-role? enumeration
+--ro mldp-ext:mofrr-role? mofrr-role +--ro mldp-ext:mofrr-role? mofrr-role
Figure 5 Figure 5
5.2. Extended 5.2. Extended
Following is a simplified graphical representation of the data model A simplified graphical representation of the data model for mLDP
for mLDP extended operational state: extended operational state follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability:
+--ro mldp +--ro mldp
+--ro mldp-ext:hub-and-spoke +--ro mldp-ext:hub-and-spoke
| +--ro mldp-ext:enable? boolean | +--ro mldp-ext:enable? boolean
+--ro mldp-ext:node-protection +--ro mldp-ext:node-protection
+--ro mldp-ext:plr? boolean +--ro mldp-ext:plr? boolean
skipping to change at page 14, line 21 skipping to change at page 15, line 21
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw mldp +--rw mldp
+--rw enable? boolean +--rw enable? boolean
+--rw address-families +--rw address-families
+--rw ipv4 +--rw ipv4
| +--ro roots | +--ro roots
| +--ro root* [root-address] | +--ro root* [root-address]
| +--ro root-address inet:ipv4-address | +--ro root-address inet:ipv4-address
| +--ro bindings | +--ro bindings
| +--ro opaque-type-lspid | +--ro opaque-element-lspid
| | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd] | | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd]
| | +--ro mldp-ext:recur-root-address inet:ip-address | | +--ro mldp-ext:recur-root-address inet:ip-address
| | +--ro mldp-ext:recur-rd route-distinguisher | | +--ro mldp-ext:recur-rd route-distinguisher
| | +--ro mldp-ext:multipoint-type? mldp:multipoint-type | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| | +--ro mldp-ext:peer* [direction peer advertisement-type] | | +--ro mldp-ext:peer* [direction peer advertisement-type]
| | +--ro mldp-ext:direction ldp:downstream-upstream | | +--ro mldp-ext:direction ldp:downstream-upstream
| | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| | +--ro mldp-ext:advertisement-type ldp:advertised-received | | +--ro mldp-ext:advertisement-type ldp:advertised-received
| | +--ro mldp-ext:label? rt-types:mpls-label | | +--ro mldp-ext:label? rt-types:mpls-label
| | +--ro mldp-ext:mbb-role? enumeration | | +--ro mldp-ext:mbb-role? enumeration
| | +--ro mldp-ext:mofrr-role? mofrr-role | | +--ro mldp-ext:mofrr-role? mofrr-role
| +--ro mldp-ext:opaque-type-transit | +--ro mldp-ext:opaque-element-transit
| | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd] | | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd]
| | +--ro mldp-ext:source-address inet:ip-address | | +--ro mldp-ext:source-address inet:ip-address
| | +--ro mldp-ext:group-address inet:ip-address-no-zone | | +--ro mldp-ext:group-address inet:ip-address-no-zone
| | +--ro mldp-ext:rd route-distinguisher | | +--ro mldp-ext:rd route-distinguisher
| | +--ro mldp-ext:recur-root-address inet:ip-address | | +--ro mldp-ext:recur-root-address inet:ip-address
| | +--ro mldp-ext:recur-rd route-distinguisher | | +--ro mldp-ext:recur-rd route-distinguisher
| | +--ro mldp-ext:multipoint-type? mldp:multipoint-type | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| | +--ro mldp-ext:peer* [direction peer advertisement-type] | | +--ro mldp-ext:peer* [direction peer advertisement-type]
| | +--ro mldp-ext:direction ldp:downstream-upstream | | +--ro mldp-ext:direction ldp:downstream-upstream
| | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| | +--ro mldp-ext:advertisement-type ldp:advertised-received | | +--ro mldp-ext:advertisement-type ldp:advertised-received
| | +--ro mldp-ext:label? rt-types:mpls-label | | +--ro mldp-ext:label? rt-types:mpls-label
| | +--ro mldp-ext:mbb-role? enumeration | | +--ro mldp-ext:mbb-role? enumeration
| | +--ro mldp-ext:mofrr-role? mofrr-role | | +--ro mldp-ext:mofrr-role? mofrr-role
| +--ro mldp-ext:opaque-type-bidir | +--ro mldp-ext:opaque-element-bidir
| +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd] | +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd]
| +--ro mldp-ext:rp inet:ip-address | +--ro mldp-ext:rp inet:ip-address
| +--ro mldp-ext:group-address inet:ip-address-no-zone | +--ro mldp-ext:group-address inet:ip-address-no-zone
| +--ro mldp-ext:rd route-distinguisher | +--ro mldp-ext:rd route-distinguisher
| +--ro mldp-ext:recur-root-address inet:ip-address | +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro mldp-ext:recur-rd route-distinguisher | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type] | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro mldp-ext:direction ldp:downstream-upstream | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
skipping to change at page 15, line 24 skipping to change at page 16, line 24
+--rw mldp-ext:ipv6 +--rw mldp-ext:ipv6
+--ro mldp-ext:roots +--ro mldp-ext:roots
+--ro mldp-ext:root* [root-address] +--ro mldp-ext:root* [root-address]
+--ro mldp-ext:root-address inet:ipv6-address +--ro mldp-ext:root-address inet:ipv6-address
+--ro mldp-ext:is-self? boolean +--ro mldp-ext:is-self? boolean
+--ro mldp-ext:reachability* [address interface] +--ro mldp-ext:reachability* [address interface]
| +--ro mldp-ext:address inet:ipv6-address | +--ro mldp-ext:address inet:ipv6-address
| +--ro mldp-ext:interface if:interface-ref | +--ro mldp-ext:interface if:interface-ref
| +--ro mldp-ext:peer? -> ../../../../../../../../ldp:peers/peer/lsr-id | +--ro mldp-ext:peer? -> ../../../../../../../../ldp:peers/peer/lsr-id
+--ro mldp-ext:bindings +--ro mldp-ext:bindings
+--ro mldp-ext:opaque-type-lspid +--ro mldp-ext:opaque-element-lspid
| +--ro mldp-ext:fec-label* [lsp-id] | +--ro mldp-ext:fec-label* [lsp-id]
| +--ro mldp-ext:lsp-id uint32 | +--ro mldp-ext:lsp-id uint32
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type] | +--ro mldp-ext:peer* [direction peer advertisement-type]
| | +--ro mldp-ext:direction ldp:downstream-upstream | | +--ro mldp-ext:direction ldp:downstream-upstream
| | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| | +--ro mldp-ext:advertisement-type ldp:advertised-received | | +--ro mldp-ext:advertisement-type ldp:advertised-received
| | +--ro mldp-ext:label? rt-types:mpls-label | | +--ro mldp-ext:label? rt-types:mpls-label
| | +--ro mldp-ext:mbb-role? enumeration | | +--ro mldp-ext:mbb-role? enumeration
| | +--ro mldp-ext:mofrr-role? mofrr-role | | +--ro mldp-ext:mofrr-role? mofrr-role
skipping to change at page 15, line 46 skipping to change at page 16, line 46
| +--ro mldp-ext:recur-root-address inet:ip-address | +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro mldp-ext:recur-rd route-distinguisher | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type] | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro mldp-ext:direction ldp:downstream-upstream | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| +--ro mldp-ext:advertisement-type ldp:advertised-received | +--ro mldp-ext:advertisement-type ldp:advertised-received
| +--ro mldp-ext:label? rt-types:mpls-label | +--ro mldp-ext:label? rt-types:mpls-label
| +--ro mldp-ext:mbb-role? enumeration | +--ro mldp-ext:mbb-role? enumeration
| +--ro mldp-ext:mofrr-role? mofrr-role | +--ro mldp-ext:mofrr-role? mofrr-role
+--ro mldp-ext:opaque-type-transit +--ro mldp-ext:opaque-element-transit
| +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd] | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd]
| +--ro mldp-ext:source-address inet:ip-address | +--ro mldp-ext:source-address inet:ip-address
| +--ro mldp-ext:group-address inet:ip-address-no-zone | +--ro mldp-ext:group-address inet:ip-address-no-zone
| +--ro mldp-ext:rd route-distinguisher | +--ro mldp-ext:rd route-distinguisher
| +--ro mldp-ext:recur-root-address inet:ip-address | +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro mldp-ext:recur-rd route-distinguisher | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type] | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro mldp-ext:direction ldp:downstream-upstream | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| +--ro mldp-ext:advertisement-type ldp:advertised-received | +--ro mldp-ext:advertisement-type ldp:advertised-received
| +--ro mldp-ext:label? rt-types:mpls-label | +--ro mldp-ext:label? rt-types:mpls-label
| +--ro mldp-ext:mbb-role? enumeration | +--ro mldp-ext:mbb-role? enumeration
| +--ro mldp-ext:mofrr-role? mofrr-role | +--ro mldp-ext:mofrr-role? mofrr-role
+--ro mldp-ext:opaque-type-bidir +--ro mldp-ext:opaque-element-bidir
+--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd] +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd]
+--ro mldp-ext:rp inet:ip-address +--ro mldp-ext:rp inet:ip-address
+--ro mldp-ext:group-address inet:ip-address-no-zone +--ro mldp-ext:group-address inet:ip-address-no-zone
+--ro mldp-ext:rd route-distinguisher +--ro mldp-ext:rd route-distinguisher
+--ro mldp-ext:recur-root-address inet:ip-address +--ro mldp-ext:recur-root-address inet:ip-address
+--ro mldp-ext:recur-rd route-distinguisher +--ro mldp-ext:recur-rd route-distinguisher
+--ro mldp-ext:multipoint-type? mldp:multipoint-type +--ro mldp-ext:multipoint-type? mldp:multipoint-type
+--ro mldp-ext:peer* [direction peer advertisement-type] +--ro mldp-ext:peer* [direction peer advertisement-type]
+--ro mldp-ext:direction ldp:downstream-upstream +--ro mldp-ext:direction ldp:downstream-upstream
+--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
+--ro mldp-ext:advertisement-type ldp:advertised-received +--ro mldp-ext:advertisement-type ldp:advertised-received
+--ro mldp-ext:label? rt-types:mpls-label +--ro mldp-ext:label? rt-types:mpls-label
+--ro mldp-ext:mbb-role? enumeration +--ro mldp-ext:mbb-role? enumeration
+--ro mldp-ext:mofrr-role? mofrr-role +--ro mldp-ext:mofrr-role? mofrr-role
Figure 6 Figure 6
5.3. Derived states 5.3. Derived states
Following are main areas for which mLDP operational derived state is The main areas for which mLDP operational derived state is defined
defined: are:
o Root o Root
o Bindings (FEC-label) o Bindings (FEC-label)
o Capabilities o Capabilities
5.3.1. Root state 5.3.1. Root state
Root address is a fundamental construct for MP FEC bindings and LSPs. The root address is a fundamental construct for MP FEC bindings and
The root state provides information on all the known roots in a given LSPs. The root state provides information on all the known roots in
address-familty, and their information on the root reachability (as a given address-familty and their root reachability information (as
learnt from RIB). In case of multi-path reachability to a root, the learnt from RIB). In case of multi-path reachability to a root, the
selection of upstream path is done on per-LSP basis at the time of selection of the upstream path is done on per-LSP basis at the time
LSP setup. Similarly, when protection mechanisms like MBB or MoFRR of LSP setup. Similarly, when protection mechanisms like Make-
are in place, the path designation as active/standby or primary/ before-break (MBB) or Multicast-only FRR (MoFRR) are in place, the
backup is also done on per LSP basis. It is to be noted that a given path designation as active/standby or primary/backup is also done on
root can be shared amongst multiple P2MP and/or MP2MP LSPs. per-LSP basis. It should be noted that a given root can be shared
Moreover, an LSP can be signaled to more than one root for RNR amongst multiple P2MP and/or MP2MP LSPs. Moreover, an LSP can be
signaled to more than one root for Root Node Redundancy (RNR)
purposes. purposes.
The following diagram illustrates a root database on a branch/transit The following diagram illustrates a root database on a branch/transit
LSR: LSR:
root 203.0.113.1: root 203.0.113.1:
path1: path1:
RIB: GigEthernet 1/0, 198.51.100.1; RIB: GigEthernet 1/0, 198.51.100.1;
LDP: peer 192.0.2.1:0 LDP: peer 192.0.2.1:0
path2: path2:
skipping to change at page 17, line 40 skipping to change at page 18, line 41
A root entry on a root LSR itself will be presented as follows: A root entry on a root LSR itself will be presented as follows:
root 203.0.113.10: root 203.0.113.10:
is-self is-self
Figure 8 Figure 8
5.3.2. Bindings state 5.3.2. Bindings state
Binding state provides information on mLDP FEC-label bindings for Binding state provides information on mLDP FEC-label bindings for
both P2MP and MP2MP FEC types. Like LDP, the FEC-label binding both the P2MP and MP2MP FEC types. Like LDP, the FEC-label binding
derived state is presented in a FEC-centric view per address-family, derived state is presented in a FEC-centric view per address-family,
and provides information on both inbound (received) and outbound and provides information on both inbound (received) and outbound
(advertised) bindings. The FEC is presented as (root-address, (advertised) bindings. The FEC is presented as (root-address,
opaque-type-data) as described earlier in section Section 3.2, and opaque-element-data) as described earlier in section Section 3.2, and
the direction (upstream or downstream) is picked with respect to root the direction (upstream or downstream) is picked with respect to root
reachability. In case of MBB or/and MoFRR, the role of a given peer reachability. In case of MBB or/and MoFRR, the role of a given peer
binding is also provided with respect to MBB (active or standby) or/ binding is also provided with respect to MBB (active or standby) or/
and MoFRR (primary or backup). and MoFRR (primary or backup).
Following captures a high level tree hierarchy for mLDP bindings A high-level tree hierarchy for mLDP bindings state follows:
state:
+--rw mpls-ldp! +--rw mpls-ldp!
+--rw global +--rw global
+--rw mldp +--rw mldp
+--rw address-families +--rw address-families
+--rw ipv4 (or ipv6) +--rw ipv4 (or ipv6)
+--ro state +--ro state
+--ro roots +--ro roots
+--ro root* [root-address] +--ro root* [root-address]
+--ro .... +--ro ....
+--ro bindings +--ro bindings
+--ro opaque-type-xxx +--ro opaque-element-xxx
| +--ro fec-label* [type-specific-key] | +--ro fec-label* [type-specific-key]
| +--ro some_key_1 ... | +--ro some_key_1 ...
| +--ro some_key_2 ... | +--ro some_key_2 ...
| +--ro multipoint-type? multipoint-type | +--ro multipoint-type? multipoint-type
| +--ro peer* [direction peer advertisement-type] | +--ro peer* [direction peer advertisement-type]
| | +--ro direction ldp:downstream-upstream | | +--ro direction ldp:downstream-upstream
| | +--ro peer leafref | | +--ro peer leafref
| | +--ro advertisement-type ldp:advertised-received | | +--ro advertisement-type ldp:advertised-received
| | +--ro label? mpls:mpls-label | | +--ro label? mpls:mpls-label
| | +--ro mbb-role? enumeration | | +--ro mbb-role? enumeration
| | +--ro mldp-ext:mofrr-role? mofrr-role | | +--ro mldp-ext:mofrr-role? mofrr-role
+--ro opaque-type-yyy +--ro opaque-element-yyy
| +--ro fec-label* [type-specific-key] | +--ro fec-label* [type-specific-key]
| +--ro some_key_1 ... | +--ro some_key_1 ...
... ...
Figure 9 Figure 9
mLDP binding state is organized and presented per root address, and mLDP binding state is organized and presented per root address, and
hence the bindings container hang off a root node in the model. The hence the bindings container in under a root node in the model. The
bindings state is made available for FECs pertaining to different bindings state is made available for FECs pertaining to different
types of opaque types, with some state avaiable under "base" tree and types of opaque elements, with some state avaiable under the "base"
the rest under "extended". tree and the rest under the "extended" tree.
In the above tree, the various opaque types alongwith their type In the above tree, the various opaque types along with their type
specific key(s) refer to the table Table 1 captured earlier in the specific key(s) refer to the table Table 1, as captured earlier in
document. For example, if the opaque type is Generic LSP Identifier, the document. For example, if the opaque type is a Generic LSP
then the type-specific-key will be a uint32 LSP-Id key. Please see Identifier, then the type-specific-key will be a uint32 LSP-Id key.
the complete model for all other types. Please see the complete model for all other types.
It is important to take note of the following: It is important to note the following:
o The address-family ipv4/ipv4 applies to "root" address in the mLDP o The address-family ipv4/ipv6 applies to "root" address in the mLDP
binding tree. The other addresses (source, group, RP etc) do not binding tree. The other addresses (source, group, Rendezvous-
have to be of the same address family type as the root. Point etc.) do not have to be of the same address family type as
the root.
o The "recur-root-address" field applies to Recursive opaque type, o The "recur-root-address" field applies to the Recursive opaque
and (recur-root-address, recur-rd) fields applies to VPN-Recursive type, and the (recur-root-address, recur-rd) fields applies to the
opaque types as defined in [RFC6512] VPN-Recursive opaque types as defined in [RFC6512].
o In case of a recursive FEC, the address-family of the recur-root- o In case of a recursive FEC, the address-family of the recur-root-
address could be different than the address-family of the root address could be different than the address-family of the root
address of original encapsulated MP FEC address of the original encapsulated MP FEC.
The following diagram illustrates the FEC-label binding information The following diagram illustrates the FEC-label binding information
structure for a P2MP (Transit IPv4 Source type) LSP on a branch/ structure for a P2MP (Transit IPv4 Source type) LSP on a branch/
transit LSR: transit LSR:
FEC (root 203.0.113.1, S=198.51.100.1, G=224.1.1.1): FEC (root 203.0.113.1, S=198.51.100.1, G=224.1.1.1):
type: p2mp type: p2mp
upstream: upstream:
advertised: advertised:
peer 192.0.2.1:0, label 16000 (local) peer 192.0.2.1:0, label 16000 (local)
skipping to change at page 20, line 32 skipping to change at page 21, line 32
5.3.3. Capabilities state 5.3.3. Capabilities state
Like LDP, mLDP capabilities state comprise two types of information: Like LDP, mLDP capabilities state comprise two types of information:
o global: augments ldp:global/ldp:state/ldp:capability. o global: augments ldp:global/ldp:state/ldp:capability.
o per-peer: augments ldp:peers/ldp:peer/ldp:state/ldp:capability o per-peer: augments ldp:peers/ldp:peer/ldp:state/ldp:capability
6. Notifications 6. Notifications
mLDP notification module consists of notification related to changes The mLDP notification module consists of notifications related to
in the operational state of an mLDP FEC. changes in the operational state of an mLDP FEC.
6.1. Base 6.1. Base
Following is a simplified graphical representation of the base data A simplified graphical representation of the base data model for mLDP
model for mLDP notifications: notifications follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
notifications: notifications:
+---n mpls-mldp-fec-event +---n mpls-mldp-fec-event
+--ro event-type? ldp:oper-status-event-type +--ro event-type? ldp:oper-status-event-type
+--ro (opaque-type)? +--ro (opaque-element)?
+--:(opaque-type-lspid) +--:(opaque-element-lspid)
+--ro opaque-type-lspid +--ro opaque-element-lspid
+--ro root-address? inet:ip-address +--ro root-address? inet:ip-address
+--ro lsp-id? uint32 +--ro lsp-id? uint32
+--ro multipoint-type? multipoint-type +--ro multipoint-type? multipoint-type
+--ro mldp-ext:recursive-fec +--ro mldp-ext:recursive-fec
+--ro mldp-ext:recur-root-address? inet:ip-address +--ro mldp-ext:recur-root-address? inet:ip-address
+--ro mldp-ext:recur-rd? route-distinguisher +--ro mldp-ext:recur-rd? route-distinguisher
+--ro mldp-ext:multipoint-type? mldp:multipoint-type +--ro mldp-ext:multipoint-type? mldp:multipoint-type
Figure 12 Figure 12
6.2. Extended 6.2. Extended
Following is a simplified graphical representation of the extended A simplified graphical representation of the extended data model for
data model for mLDP notifications: mLDP notifications follows:
module: ietf-mpls-mldp module: ietf-mpls-mldp
notifications: notifications:
+---n mpls-mldp-fec-event +---n mpls-mldp-fec-event
+--ro event-type? ldp:oper-status-event-type +--ro event-type? ldp:oper-status-event-type
+--ro (opaque-type)? +--ro (opaque-element)?
+--:(mldp-ext:opaque-type-transit) +--:(mldp-ext:opaque-element-transit)
| +--ro mldp-ext:opaque-type-transit | +--ro mldp-ext:opaque-element-transit
| +--ro mldp-ext:root-address? inet:ip-address | +--ro mldp-ext:root-address? inet:ip-address
| +--ro mldp-ext:source-address? inet:ip-address | +--ro mldp-ext:source-address? inet:ip-address
| +--ro mldp-ext:group-address? inet:ip-address-no-zone | +--ro mldp-ext:group-address? inet:ip-address-no-zone
| +--ro mldp-ext:rd? route-distinguisher | +--ro mldp-ext:rd? route-distinguisher
| +--ro mldp-ext:recur-root-address? inet:ip-address | +--ro mldp-ext:recur-root-address? inet:ip-address
| +--ro mldp-ext:recur-rd? route-distinguisher | +--ro mldp-ext:recur-rd? route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
+--:(mldp-ext:opaque-type-bidir) +--:(mldp-ext:opaque-element-bidir)
+--ro mldp-ext:opaque-type-bidir +--ro mldp-ext:opaque-element-bidir
+--ro mldp-ext:root-address? inet:ip-address +--ro mldp-ext:root-address? inet:ip-address
+--ro mldp-ext:rp? inet:ip-address +--ro mldp-ext:rp? inet:ip-address
+--ro mldp-ext:group-address? inet:ip-address-no-zone +--ro mldp-ext:group-address? inet:ip-address-no-zone
+--ro mldp-ext:rd? route-distinguisher +--ro mldp-ext:rd? route-distinguisher
+--ro mldp-ext:recur-root-address? inet:ip-address +--ro mldp-ext:recur-root-address? inet:ip-address
+--ro mldp-ext:recur-rd? route-distinguisher +--ro mldp-ext:recur-rd? route-distinguisher
+--ro mldp-ext:multipoint-type? mldp:multipoint-type +--ro mldp-ext:multipoint-type? mldp:multipoint-type
Figure 13 Figure 13
7. Actions 7. Actions
Currently, no RPCs/actions are defined for mLDP. Currently, no RPCs/actions are defined for mLDP.
8. Open Items 8. Open Items
Following is a list of open items that are to be discussed and A list of open items that are to be addressed in future revisions of
addressed in future revisions of this document: this document follows:
o Specify default values for configuration parameters o Specify default values for configuration parameters
o Extend the "Configured Leaf LSPs" for various type of opaque-types
o Extend mLDP notifications for other types of opaque values as well
o Make MP LSP configuration and state model consistent
9. YANG Specification 9. YANG Specification
Following is the actual YANG definition (module) for mLDP constructs The YANG definition, i.e., the modules, for mLDP constructs defined
defined earlier in the document. earlier in this document are includind the subsections below.
9.1. Base 9.1. Base
<CODE BEGINS> file "ietf-mpls-mldp@2017-10-19.yang" This YANG module imports types defined in [RFC6991], [RFC8343],
[RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294].
<CODE BEGINS> file "ietf-mpls-mldp@2018-10-22.yang"
// RFC Editor: replace the above date with the date of
// publication and remove this note.
module ietf-mpls-mldp { module ietf-mpls-mldp {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp";
prefix "mldp"; prefix "mldp";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
reference "RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-mpls-ldp { import ietf-mpls-ldp {
prefix "ldp"; prefix "ldp";
reference "RFC XXXX: A YANG Data Model for MPLS LDP";
// RFC Editor: replace the XXXX with actual LDP YANG RFC number at
// time of publication and remove this note.
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA
version)";
} }
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";
} }
organization organization
"IETF MPLS Working Group"; "IETF MPLS Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/teas/> "WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:teas@ietf.org> WG List: <mailto:mpls@ietf.org>
WG Chair: Loa Andersson
<mailto:loa@pi.nu>
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
Editor: Kamran Raza Editor: Kamran Raza
<mailto:skraza@cisco.com> <mailto:skraza@cisco.com>
Editor: Rajiv Asati Editor: Sowmya Krishnaswamy
<mailto:rajiva@cisco.com> <mailto:krishnaswamy.sowmya@gmail.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:Xufeng_Liu@jabil.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Santosh Esale Editor: Santosh Esale
<mailto:sesale@juniper.net> <mailto:sesale@juniper.net>
Editor: Xia Chen Editor: Loa Andersson
<mailto:jescia.chenxia@huawei.com> <mailto:loa@pi.nu>
Editor: Himanshu Shah Editor: Jeff Tantsura
<mailto:hshah@ciena.com>"; <mailto:jefftant.ietf@gmail.com>";
description description
"This YANG module defines the essential components for the "This YANG module defines the essential components for the
management of Multi-Protocol Label Switching (MPLS) Multipoint management of Multi-Protocol Label Switching (MPLS) Multipoint
LDP (mLDP)."; LDP (mLDP).
revision 2017-10-19 { Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
revision 2018-10-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for MPLS mLDP."; "RFC XXXX: Base YANG Data Model for MPLS mLDP";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef multipoint-type { typedef multipoint-type {
type enumeration { type enumeration {
enum p2mp { enum p2mp {
description "Point to multipoint."; description "Point to multipoint";
} }
enum mp2mp { enum mp2mp {
description "Multipoint to multipoint."; description "Multipoint to multipoint";
} }
} }
description description
"p2mp or mp2mp."; "The type of a multipoint LSP: either Point to multipoint
(p2mp) or Multipoint to multipoint (mp2mp)";
} }
/* /*
* Groupings * Groupings
*/ */
grouping mldp-capabilities { grouping mldp-capabilities {
description description
"mLDP capabilities."; "A grouping describing the protocol capabilities of mLDP";
container p2mp { container p2mp {
description description
"Configure point-to-multipoint capability."; "Configuration and state information for the
point-to-multipoint capability";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable point-to-multipoint."; "'true' to enable the point-to-multipoint capability";
} }
} }
container mp2mp { container mp2mp {
description description
"Configure multipoint-to-multipoint capability."; "Configuration and state information for the
multipoint-to-multipoint capability";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable multipoint-to-multipoint."; "'true' to enable the multipoint-to-multipoint capability";
} }
} }
container make-before-break { container make-before-break {
description description
"Configure make-before-break capability."; "Configuration and state information for the
make-before-break capability.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable make-before-break."; "'true' to enable the make-before-break capability";
} }
leaf switchover-delay { leaf switchover-delay {
type uint16; type uint16;
units seconds; units seconds;
description description
"Switchover delay in seconds."; "Switchover delay in seconds";
} }
leaf timeout { leaf timeout {
type uint16; type uint16;
units seconds; units seconds;
description description
"Timeout in seconds."; "Timeout in seconds";
} }
} }
} // mldp-capabilities } // mldp-capabilities
grouping mldp-fec-event {
description
"A mLDP FEC event.";
choice opaque-type {
description
"The type of opaque value element.";
case opaque-type-lspid {
container opaque-type-lspid {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
leaf root-address {
type inet:ip-address;
description
"Root address.";
}
leaf lsp-id {
type uint32;
description "ID to identify the LSP.";
}
leaf multipoint-type {
type multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
} // container opaque-type-lspid
}
}
} // mldp-fec-event
grouping mldp-binding-label-peer-state-attributes { grouping mldp-binding-label-peer-state-attributes {
description description
"mLDP label binding per peer attributes."; "mLDP label binding per peer attributes";
leaf direction { leaf direction {
type ldp:downstream-upstream; type ldp:downstream-upstream;
description description
"Downstream or upstream."; "Downstream or upstream";
} }
leaf peer { leaf peer {
type leafref { type leafref {
path path
"/rt:routing/rt:control-plane-protocols/" "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id";
} }
description description
"LDP peer from which this binding is received, "LDP peer from which this binding is received,
or to which this binding is advertised."; or to which this binding is advertised.";
} }
leaf advertisement-type { leaf advertisement-type {
type ldp:advertised-received; type ldp:advertised-received;
description description
"Advertised or received."; "Advertised or received";
} }
leaf label { leaf label {
type rt-types:mpls-label; type rt-types:mpls-label;
description description
"Advertised (outbound) or received (inbound) label."; "Advertised (outbound) or received (inbound) label";
} }
leaf mbb-role { leaf mbb-role {
when "../direction = 'upstream'" { when "../direction = 'upstream'" {
description description
"For upstream."; "This leaf is used for upstream only.";
} }
type enumeration { type enumeration {
enum none { enum none {
description "MBB is not enabled."; description "Make-Before-Break (MBB) is not enabled";
} }
enum active { enum active {
description "This LSP is active."; description "This LSP is active.";
} }
enum inactive { enum inactive {
description "This LSP is inactive."; description "This LSP is inactive.";
} }
} }
description description
"The MBB status of this LSP."; "The MBB status of this LSP";
} }
} // mldp-binding-label-peer-state-attributes } // mldp-binding-label-peer-state-attributes
grouping mldp-binding-label-state-attributes { grouping mldp-binding-label-state-attributes {
description description
"mLDP label binding attributes."; "mLDP label binding attributes";
list peer { list peer {
key "direction peer advertisement-type"; key "direction peer advertisement-type";
description description
"List of advertised and received peers."; "List of advertised and received peers";
uses mldp-binding-label-peer-state-attributes; uses mldp-binding-label-peer-state-attributes;
} // peer } // peer
} // mldp-binding-label-state-attributes } // mldp-binding-label-state-attributes
/* /*
* Configuration data and operational state data nodes * Configuration data and operational state data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:capability" { + "ldp:mpls-ldp/ldp:global/ldp:capability" {
description "Augmentation for MLDP global capability."; description "Augmentation for MLDP global capability";
container mldp { container mldp {
description description
"Multipoint capabilities."; "This container contains the configruation and state
information for multipoint LDP capabilities.";
uses mldp-capabilities; uses mldp-capabilities;
} }
} }
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/"
+ "ldp:capability" { + "ldp:capability" {
description description
"Augmentation for MLDP received peer state capability."; "Augmentation for MLDP received peer state capability";
container mldp { container mldp {
description description
"Multipoint capabilities."; "Operational state information for the protocol capabilities
of mLDP";
container p2mp { container p2mp {
description description
"Configure point-to-multipoint capability."; "Operational state information for the point-to-multipoint
capability";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable point-to-multipoint."; "'true' to enable the point-to-multipoint capability";
} }
} }
container mp2mp { container mp2mp {
description description
"Configure multipoint-to-multipoint capability."; "Operational state information for the
multipoint-to-multipoint capability";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable multipoint-to-multipoint."; "'true' to enable the multipoint-to-multipoint
capability";
} }
} }
container make-before-break { container make-before-break {
description description
"Configure make-before-break capability."; "Operational state information for the make-before-break
capability";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable make-before-break."; "'true' to enable the make-before-break capability";
} }
} }
} // mldp } // mldp
} }
/* /*
* Global augmentation * Global augmentation
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global" { + "ldp:mpls-ldp/ldp:global" {
skipping to change at page 29, line 26 skipping to change at page 30, line 13
container mldp { container mldp {
description description
"mLDP attributes at per instance level. Defining "mLDP attributes at per instance level. Defining
attributes here does not enable any MP capabilities. attributes here does not enable any MP capabilities.
MP capabilities need to be explicitly enabled under MP capabilities need to be explicitly enabled under
container capability."; container capability.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable mLDP."; "'true' to enable mLDP";
} }
container address-families { container address-families {
description description
"Per-af params."; "Per address family parameters";
container ipv4 { container ipv4 {
description description
"IPv4 information."; "IPv4 information";
container roots { container roots {
config false; config false;
description description
"IPv4 multicast LSP roots."; "IPv4 multicast LSP roots";
list root { list root {
key "root-address"; key "root-address";
description description
"List of roots for configured multicast LSPs."; "List of roots for configured multicast LSPs";
leaf root-address { leaf root-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Root address."; "Root address.";
} }
leaf is-self { leaf is-self {
type boolean; type boolean;
description description
"This is the root."; "I am the root node.";
} }
list reachability { list reachability {
key "address interface"; key "address interface";
description description
"A next hop for reachability to root, "A next-hop for reachability to root,
as a RIB view."; as a RIB view";
leaf address { leaf address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"The next hop address to reach root."; "The next-hop address to reach root";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Interface connecting to next-hop."; "Interface connecting to next-hop";
} }
leaf peer { leaf peer {
type leafref { type leafref {
path path
"../../../../../../../../ldp:peers/" "../../../../../../../../ldp:peers/"
+ "ldp:peer/ldp:lsr-id"; + "ldp:peer/ldp:lsr-id";
} }
description description
"LDP peer from which this next hop can be "LDP peer from which this next-hop can be
reached."; reached";
} }
} }
container bindings { container bindings {
description description
"mLDP FEC to label bindings."; "mLDP FEC to label bindings";
container opaque-type-lspid { container opaque-element-lspid {
description description
"The type of opaque value element is "The type of opaque value element is the generic
the generic LSP identifier"; LSP identifier";
reference reference
"RFC6388: Label Distribution Protocol "RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"lsp-id"; "lsp-id";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf lsp-id { leaf lsp-id {
type uint32; type uint32;
description "ID to identify the LSP."; description "ID to identify the LSP";
} }
leaf multipoint-type { leaf multipoint-type {
type multipoint-type; type multipoint-type;
description description
"The type of mutipoint, p2mp or mp2mp."; "The type of mutipoint: p2mp or mp2mp";
} }
uses mldp-binding-label-state-attributes; uses mldp-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-lspid } // opaque-element-lspid
} // bindings } // bindings
} // list root } // list root
} // roots } // roots
container configured-leaf-lsps { container configured-leaf-lsps {
description description
"Configured multicast LSPs."; "Configured multicast LSPs.";
container opaque-type-lspid { container opaque-element-lspid {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6388: Label Distribution Protocol "RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"root-address lsp-id"; "root-address lsp-id";
description description
"List of FEC to label bindings."; "List of FEC to label bindings.";
leaf root-address { leaf root-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Root address."; "Root address";
} }
leaf lsp-id { leaf lsp-id {
type uint32; type uint32;
description "ID to identify the LSP."; description "ID to identify the LSP";
} }
leaf multipoint-type { leaf multipoint-type {
type multipoint-type; type multipoint-type;
description description
"The type of mutipoint, p2mp or mp2mp."; "The type of mutipoint: p2mp or mp2mp";
} }
} // fec-label } // fec-label
} // opaque-type-lspid } // opaque-element-lspid
} // configured-leaf-lsps } // configured-leaf-lsps
} // ipv4 } // ipv4
} // list address-family } // list address-family
} // mldp } // mldp
} }
/* /*
* Notifications * Notifications
*/ */
notification mpls-mldp-fec-event { notification mpls-mldp-fec-event {
description description
"Notification event for a change of FEC status."; "Notification event for a change of FEC status";
leaf event-type { leaf event-type {
type ldp:oper-status-event-type; type ldp:oper-status-event-type;
description "Event type."; description "Event type";
}
choice opaque-element {
description
"The type of opaque value element";
case opaque-element-lspid {
container opaque-element-lspid {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
leaf root-address {
type inet:ip-address;
description
"Root address.";
}
leaf lsp-id {
type uint32;
description "ID to identify the LSP";
}
leaf multipoint-type {
type multipoint-type;
description
"The type of mutipoint: p2mp or mp2mp";
}
} // container opaque-element-lspid
}
} }
uses mldp-fec-event;
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 14 Figure 14
9.2. Extended 9.2. Extended
<CODE BEGINS> file "ietf-mpls-mldp-extended@2017-10-19.yang" This YANG module imports types defined in [RFC6991], [RFC8343],
[RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294].
<CODE BEGINS> file "ietf-mpls-mldp-extended@2018-10-22.yang"
// RFC Editor: replace the above date with the date of
// publication and remove this note.
module ietf-mpls-mldp-extended { module ietf-mpls-mldp-extended {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended"; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended";
prefix "mldp-ext"; prefix "mldp-ext";
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
reference "RFC 6991: Common YANG Data Types";
} }
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-routing-types {
prefix "rt-types";
reference
"RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-mpls-ldp { import ietf-mpls-ldp {
prefix "ldp"; prefix "ldp";
reference "RFC XXXX: A YANG Data Model for MPLS LDP";
// RFC Editor: replace the XXXX with actual LDP YANG RFC number at
// time of publication and remove this note.
} }
import ietf-mpls-ldp-extended { import ietf-mpls-ldp-extended {
prefix "ldp-ext"; prefix "ldp-ext";
reference "RFC XXXX: A YANG Data Model for MPLS LDP";
// RFC Editor: replace the XXXX with actual LDP YANG RFC number at
// time of publication and remove this note.
} }
import ietf-mpls-mldp { import ietf-mpls-mldp {
prefix "mldp"; prefix "mldp";
reference "RFC XXXX: Base YANG Data Model for MPLS mLDP";
// RFC Editor: replace the XXXX with actual mLDP YANG RFC number at
// time of publication and remove this note.
} }
organization organization
"IETF MPLS Working Group"; "IETF MPLS Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/teas/> "WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:teas@ietf.org> WG List: <mailto:mpls@ietf.org>
WG Chair: Loa Andersson
<mailto:loa@pi.nu>
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
Editor: Kamran Raza Editor: Kamran Raza
<mailto:skraza@cisco.com> <mailto:skraza@cisco.com>
Editor: Rajiv Asati Editor: Sowmya Krishnaswamy
<mailto:rajiva@cisco.com> <mailto:krishnaswamy.sowmya@gmail.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:Xufeng_Liu@jabil.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Santosh Esale Editor: Santosh Esale
<mailto:sesale@juniper.net> <mailto:sesale@juniper.net>
Editor: Xia Chen Editor: Loa Andersson
<mailto:jescia.chenxia@huawei.com> <mailto:loa@pi.nu>
Editor: Himanshu Shah Editor: Jeff Tantsura
<mailto:hshah@ciena.com>"; <mailto:jefftant.ietf@gmail.com>";
description description
"This YANG module defines the essential components for the "This YANG module defines the extended components for the
management of Multi-Protocol Label Switching (MPLS) Multipoint management of Multi-Protocol Label Switching (MPLS) Multipoint
LDP (mLDP)."; LDP (mLDP).
revision 2017-10-19 { Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
revision 2018-10-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for MPLS mLDP."; "RFC XXXX: Extended YANG Data Model for MPLS mLDP";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
} }
/* /*
* Features * Features
*/ */
feature capability-mldp-hsmp { feature capability-mldp-hsmp {
description description
"This feature indicates that the system allows to configure "This feature indicates that the system allows to configure
mLDP hub-and-spoke-multipoint capability."; mLDP hub-and-spoke-multipoint capability.";
} }
skipping to change at page 34, line 43 skipping to change at page 36, line 45
feature per-peer-capability { feature per-peer-capability {
description description
"This feature indicates that the system allows to configure "This feature indicates that the system allows to configure
mLDP capabilities at the per peer level."; mLDP capabilities at the per peer level.";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef route-distinguisher {
type string {
}
description
"Type definition for route distinguisher.";
reference
"RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
}
typedef mofrr-role { typedef mofrr-role {
type enumeration { type enumeration {
enum none { enum none {
description "MOFRR is not enabled."; description "MOFRR is not enabled.";
} }
enum primary { enum primary {
description "This LSP is primary."; description "This LSP is primary.";
} }
enum backup { enum backup {
description "This LSP is backup."; description "This LSP is backup.";
} }
} }
description description
"This type represents the MOFRR (Multicast only FRR) role "This type represents the MOFRR (Multicast only FRR) role
status of a LSP."; status of a LSP.";
} }
skipping to change at page 35, line 26 skipping to change at page 37, line 20
description description
"This type represents the MOFRR (Multicast only FRR) role "This type represents the MOFRR (Multicast only FRR) role
status of a LSP."; status of a LSP.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping mldp-ext-binding-label-state-attributes { grouping mldp-ext-binding-label-state-attributes {
description description
"mLDP label binding attributes."; "mLDP label binding attributes";
list peer { list peer {
key "direction peer advertisement-type"; key "direction peer advertisement-type";
description description
"List of advertised and received peers."; "List of advertised and received peers";
uses mldp:mldp-binding-label-peer-state-attributes; uses mldp:mldp-binding-label-peer-state-attributes;
leaf mofrr-role { leaf mofrr-role {
when "../direction = 'upstream'" { when "../direction = 'upstream'" {
description description
"For upstream."; "For upstream.";
} }
type mofrr-role; type mofrr-role;
description description
"The MOFRR status of this LSP."; "The MOFRR status of this LSP";
} }
} // peer } // peer
} // mldp-ext-binding-label-state-attributes } // mldp-ext-binding-label-state-attributes
grouping mldp-ext-capabilities { grouping mldp-ext-capabilities {
description description
"mLDP extended capabilities."; "mLDP extended capabilities";
container hub-and-spoke { container hub-and-spoke {
if-feature capability-mldp-hsmp; if-feature capability-mldp-hsmp;
description description
"Configure hub-and-spoke-multipoint capability."; "Configure hub-and-spoke-multipoint capability";
reference reference
"RFC7140: LDP Extensions for Hub and Spoke Multipoint "RFC7140: LDP Extensions for Hub and Spoke Multipoint
Label Switched Path"; Label Switched Path";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable hub-and-spoke-multipoint."; "Enable hub-and-spoke-multipoint";
} }
} }
container node-protection { container node-protection {
if-feature capability-mldp-node-protection; if-feature capability-mldp-node-protection;
description description
"Configure node-protection capability."; "Configure node-protection capability.";
reference reference
"RFC7715: mLDP Node Protection."; "RFC7715: mLDP Node Protection.";
leaf plr { leaf plr {
type boolean; type boolean;
description description
"Point of Local Repair capable for MP LSP node "Point of Local Repair (PLR) capable for Multipoimt LSP
protection."; node protection";
} }
container merge-point { container merge-point {
description description
"Merge Point capable for MP LSP node protection."; "Merge Point capable for Multipoint LSP node protection";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable merge point capability."; "Enable merge point capability";
} }
leaf targeted-session-teardown-delay { leaf targeted-session-teardown-delay {
type uint16; type uint16;
units seconds; units seconds;
description description
"Targeted session teardown delay."; "Targeted session teardown delay";
} }
} // merge-point } // merge-point
} }
} // mldp-ext-capabilities } // mldp-ext-capabilities
grouping mldp-ipv6-configured-lsp-roots {
description
"mLDP IPv6 roots containers.";
container roots {
description
"Configured IPv6 multicast LSPs.";
list root {
key "root-address";
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
choice lsp-key-type {
description
"LSP ID based or source-group based .";
case lsp-id {
container opaque-type-lspid {
description
"The type of opaque value element is
the generic LSP identifier";
list lsp {
key "lsp-id";
description
"List of LSPs.";
leaf lsp-id {
type uint16;
description "ID to identify the LSP.";
}
} // list lsp
} // opaque-type-lspid
} // case lsp-id
case source-group {
container opaque-type-transit {
description
"The type of opaque value element is the transit IPv6
source.";
list lsp {
key "source-address group-address";
description
"List of LSPs.";
leaf source-address {
type inet:ipv6-address;
description
"Source address.";
}
leaf group-address {
type inet:ipv6-address-no-zone;
description
"Group address.";
}
}
}
} // case source-group
} // choice lsp-key-type
} // list root
} // roots
} // mldp-ipv6-configured-lsp-roots
grouping mldp-ext-per-af-config-attibutes { grouping mldp-ext-per-af-config-attibutes {
description description
"mLDP per address family configuration attibutes."; "mLDP per address family configuration attibutes";
container multicast-only-frr { container multicast-only-frr {
if-feature mldp-mofrr; if-feature mldp-mofrr;
description description
"Multicast only FRR (MoFRR) policy."; "Multicast-only FRR (MoFRR) policy";
leaf prefix-list { leaf prefix-list {
type ldp-ext:prefix-list-ref; type ldp-ext:prefix-list-ref;
description description
"Enables MoFRR for the specified access list."; "Enables Multicast-only FRR (MoFRR) for the specified
access list";
} }
} // multicast-only-frr } // multicast-only-frr
container recursive-fec { container recursive-fec {
description description
"Recursive FEC policy."; "Recursive FEC policy";
leaf prefix-list { leaf prefix-list {
type ldp-ext:prefix-list-ref; type ldp-ext:prefix-list-ref;
description description
"Enables recursive FEC for the specified access list."; "Enables recursive FEC for the specified prefix-list";
} }
} // recursive-for } // recursive-fec
} // mldp-ext-per-af-config-attibutes } // mldp-ext-per-af-config-attibutes
grouping recursive-fec-attibutes { grouping recursive-fec-attibutes {
description description
"mLDP recursive FEC attibutes."; "mLDP recursive FEC attibutes.";
leaf recur-root-address { leaf recur-root-address {
type inet:ip-address; type inet:ip-address;
description description
"Recursive root address."; "Recursive root address";
reference reference
"RFC6512: Using Multipoint LDP When the "RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root"; Backbone Has No Route to the Root";
} }
leaf recur-rd { leaf recur-rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher in the VPN-Recursive "Route Distinguisher in the VPN-Recursive
Opaque Value."; Opaque Value";
reference reference
"RFC6512: Using Multipoint LDP When the "RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root"; Backbone Has No Route to the Root";
} }
leaf multipoint-type { leaf multipoint-type {
type mldp:multipoint-type; type mldp:multipoint-type;
description description
"The type of mutipoint, p2mp or mp2mp."; "The type of mutipoint: p2mp or mp2mp";
} }
} // recursive-fec-attibutes } // recursive-fec-attibutes
/* /*
* Configuration data and operational state data nodes * Configuration data and operational state data nodes
*/ */
// Global capability // Global capability
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" { + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" {
description "Augmentation for MLDP global capability."; description "Augmentation for MLDP global capability.";
skipping to change at page 39, line 27 skipping to change at page 40, line 4
/* /*
* Configuration data and operational state data nodes * Configuration data and operational state data nodes
*/ */
// Global capability // Global capability
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" { + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" {
description "Augmentation for MLDP global capability."; description "Augmentation for MLDP global capability.";
uses mldp-ext-capabilities; uses mldp-ext-capabilities;
} }
// Peer capability // Peer capability
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability" { + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability" {
description "Augmentation for MLDP peer capability."; description "Augmentation for MLDP peer capability.";
container mldp { container mldp {
if-feature per-peer-capability; if-feature per-peer-capability;
description description
"mLDP capabilities."; "mLDP capabilities";
uses mldp:mldp-capabilities; uses mldp:mldp-capabilities;
} }
} }
// IPv4 config // IPv4 config
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4" { + "mldp:ipv4" {
description "Augmentation for MLDP IPv4 configuration."; description "Augmentation for MLDP IPv4 configuration";
uses mldp-ext-per-af-config-attibutes; uses mldp-ext-per-af-config-attibutes;
} }
// IPv4 configured-leaf-lsps config // IPv4 configured-leaf-lsps config
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:configured-leaf-lsps/mldp:opaque-type-lspid/" + "mldp:ipv4/mldp:configured-leaf-lsps/"
+ "mldp:fec-label" { + "mldp:opaque-element-lspid/mldp:fec-label" {
description description
"Augmentation for MLDP IPv4 configured-leaf-lsps "Augmentation for MLDP IPv4 configured-leaf-lsps
configuration for opaque-type-lspid."; configuration for opaque-element-lspid";
list recursive-fec { list recursive-fec {
key key
"recur-root-address recur-rd"; "recur-root-address recur-rd";
description description
"List of recursive opaque values."; "List of recursive opaque values";
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:configured-leaf-lsps" { + "mldp:ipv4/mldp:configured-leaf-lsps" {
description description
"Augmentation for MLDP IPv4 configured-leaf-lsps "Augmentation for MLDP IPv4 configured-leaf-lsps
configuration."; configuration";
container opaque-type-transit { container opaque-element-transit {
description description
"The type of opaque value element is the transit IPv4 "The type of opaque value element is the transit IPv4
source."; source.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Paths."; Multipoint-to-Multipoint Label Switched Paths.";
list fec-label { list fec-label {
key key
"root-address source-address group-address " "root-address source-address group-address " +
+ "rd recur-root-address recur-rd"; "rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf root-address { leaf root-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Root address."; "Root address";
} }
leaf source-address { leaf source-address {
type inet:ip-address; type inet:ip-address;
description description
"Source address."; "Source address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-element-transit
container opaque-type-bidir { container opaque-element-bidir {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"root-address rp group-address rd recur-root-address " "root-address rp group-address rd recur-root-address "
+ "recur-rd"; + "recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf root-address { leaf root-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Root address."; "Root address";
} }
leaf rp { leaf rp {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "Rendezvous-Point (RP) address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-element-bidir
} }
// IPv6 config // IPv6 config
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "ipv6" { + "ipv6" {
description "Augmentation for MLDP IPv4 configuration."; description "Augmentation for MLDP IPv4 configuration";
uses mldp-ext-per-af-config-attibutes; uses mldp-ext-per-af-config-attibutes;
} }
// Global forwarding-nexthop // Global forwarding-nexthop
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/"
+ "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family" { + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family" {
description description
"Augmentation for MLDP nexthop forwarding interface."; "Augmentation for MLDP nexthop forwarding interface";
leaf mldp-disable { leaf mldp-disable {
type boolean; type boolean;
description description
"Disable mLDP forwarding on the interface."; "Disable mLDP forwarding on this interface";
} }
} }
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
// IPv4 state for per peer bindings // IPv4 state for per peer bindings
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/"
+ "mldp:opaque-type-lspid/mldp:fec-label/mldp:peer" { + "mldp:opaque-element-lspid/mldp:fec-label/mldp:peer" {
description "Augmentation for MLDP IPv4 state."; description "Augmentation for MLDP IPv4 state";
leaf mofrr-role { leaf mofrr-role {
when "../mldp:direction = 'upstream'" { when "../mldp:direction = 'upstream'" {
description description
"For upstream."; "For upstream";
} }
type mofrr-role; type mofrr-role;
description description
"The MOFRR status of this LSP."; "The MOFRR status of this LSP";
} }
} }
// Peer capability state // Peer capability state
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/"
+ "ldp:capability/mldp:mldp" { + "ldp:capability/mldp:mldp" {
description description
"Augmentation for MLDP received peer state capability."; "Augmentation for MLDP received peer state capability.";
container hub-and-spoke { container hub-and-spoke {
description description
"Configure hub-and-spoke-multipoint capability."; "Configure hub-and-spoke-multipoint capability.";
reference reference
"RFC7140: LDP Extensions for Hub and Spoke Multipoint "RFC7140: LDP Extensions for Hub and Spoke Multipoint
Label Switched Path"; Label Switched Path";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable hub-and-spoke-multipoint."; "Enable hub-and-spoke-multipoint";
} }
} }
container node-protection { container node-protection {
description description
"Configure node-protection capability."; "Configure node-protection capability";
reference reference
"RFC7715: mLDP Node Protection."; "RFC7715: mLDP Node Protection.";
leaf plr { leaf plr {
type boolean; type boolean;
description description
"Point of Local Repair capable for MP LSP node "Point of Local Repair (PLR) capable for Multipoint LSP
protection."; node protection";
} }
leaf merge-point { leaf merge-point {
type boolean; type boolean;
description description
"Merge Point capable for MP LSP node protection."; "Merge Point capable for Multipoint LSP node protection";
} // merge-point } // merge-point
} // node-protection } // node-protection
} }
// IPv4 bindings state // IPv4 bindings state
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings" { + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings" {
description "Augmentation for MLDP IPv4 bindings."; description "Augmentation for MLDP IPv4 bindings.";
container opaque-type-transit { container opaque-element-transit {
description description
"The type of opaque value element is the transit IPv4 "The type of opaque value element is the transit IPv4
source."; source.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Paths."; Multipoint-to-Multipoint Label Switched Paths.";
list fec-label { list fec-label {
key key
"source-address group-address " "source-address group-address "
+ "rd recur-root-address recur-rd"; + "rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf source-address { leaf source-address {
type inet:ip-address; type inet:ip-address;
description description
"Source address."; "Source address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-element-transit
container opaque-type-bidir { container opaque-element-bidir {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"rp group-address rd recur-root-address recur-rd"; "rp group-address rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf rp { leaf rp {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "Rendezvous Point (RP) address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-element-bidir
} }
// IPv6 bindings state // IPv6 bindings state
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "ipv6/roots/root/bindings" { + "ipv6/roots/root/bindings" {
description "Augmentation for MLDP IPv6 bindings."; description "Augmentation for MLDP IPv6 bindings.";
container opaque-type-transit { container opaque-element-transit {
config false; config false;
description description
"The type of opaque value element is the transit IPv6 "The type of opaque value element is the transit IPv6
source."; source.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"source-address group-address " "source-address group-address "
+ "rd recur-root-address recur-rd"; + "rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf source-address { leaf source-address {
type inet:ip-address; type inet:ip-address;
description description
"Source address."; "Source address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-element-transit
container opaque-type-bidir { container opaque-element-bidir {
config false; config false;
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"rp group-address rd recur-root-address recur-rd"; "rp group-address rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf rp { leaf rp {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "Rendezvous Point (RP) address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-element-bidir
} }
// IPv4 bindings opaque-type-lspid state // IPv4 bindings opaque-element-lspid state
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/"
+ "mldp:opaque-type-lspid/mldp:fec-label" { + "mldp:opaque-element-lspid/mldp:fec-label" {
description description
"Augmentation for MLDP IPv4 bindings with opaque type LSP ID."; "Augmentation for MLDP IPv4 bindings with opaque type LSP ID.";
list recursive-fec { list recursive-fec {
key key
"recur-root-address recur-rd"; "recur-root-address recur-rd";
description description
"List of recursive opaque values."; "List of recursive opaque values";
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} }
// IPv6 bindings opaque-type-lspid state // IPv6 bindings opaque-element-lspid state
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "ipv6/roots/root/bindings/opaque-type-lspid/fec-label" { + "ipv6/roots/root/bindings/opaque-element-lspid/fec-label" {
description description
"Augmentation for MLDP IPv6 bindings with opaque type LSP ID."; "Augmentation for MLDP IPv6 bindings with opaque type LSP ID.";
list recursive-fec { list recursive-fec {
key "recur-root-address recur-rd"; key "recur-root-address recur-rd";
config false; config false;
description description
"List of recursive opaque values."; "List of recursive opaque values";
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} }
/* /*
* Per AF augmentation * Per AF augmentation
*/ */
// IPv6 augmentation // IPv6 augmentation
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" { + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" {
description "Augmentation for MLDP IPv6 address family."; description "Augmentation for MLDP IPv6 address family.";
container ipv6 { container ipv6 {
description description
"IPv6 information."; "IPv6 information";
container roots { container roots {
config false; config false;
description description
"IPv6 multicast LSP roots."; "IPv6 multicast LSP roots";
list root { list root {
key "root-address"; key "root-address";
description description
"List of roots for configured multicast LSPs."; "List of roots for configured multicast LSPs";
leaf root-address { leaf root-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Root address."; "Root address";
} }
leaf is-self { leaf is-self {
type boolean; type boolean;
description description
"This is the root."; "This is the root";
} }
list reachability { list reachability {
key "address interface"; key "address interface";
description description
"A next hop for reachability to root, "A next-hop for reachability to root,
as a RIB view."; as a RIB view";
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The next hop address to reach root."; "The next-hop address to reach root";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Interface connecting to next-hop."; "Interface connecting to next-hop";
} }
leaf peer { leaf peer {
type leafref { type leafref {
path path
"../../../../../../../../ldp:peers/" "../../../../../../../../ldp:peers/"
+ "ldp:peer/ldp:lsr-id"; + "ldp:peer/ldp:lsr-id";
} }
description description
"LDP peer from which this next hop can be "LDP peer from which this next-hop can be
reached."; reached";
} }
} }
container bindings { container bindings {
description description
"mLDP FEC to label bindings."; "mLDP FEC to label bindings";
container opaque-type-lspid { container opaque-element-lspid {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6388: Label Distribution Protocol "RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"lsp-id"; "lsp-id";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf lsp-id { leaf lsp-id {
type uint32; type uint32;
description "ID to identify the LSP."; description "ID to identify the LSP";
} }
leaf multipoint-type { leaf multipoint-type {
type mldp:multipoint-type; type mldp:multipoint-type;
description description
"The type of mutipoint, p2mp or mp2mp."; "The type of mutipoint: p2mp or mp2mp";
} }
uses mldp-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-element-lspid
} // opaque-type-lspid
} // bindings } // bindings
} // list root } // list root
} // roots } // roots
container configured-leaf-lsps { container configured-leaf-lsps {
description description
"Configured multicast LSPs."; "Configured multicast LSPs";
container opaque-type-lspid { container opaque-element-lspid {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6388: Label Distribution Protocol "RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"root-address lsp-id"; "root-address lsp-id";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf root-address { leaf root-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Root address."; "Root address";
} }
leaf lsp-id { leaf lsp-id {
type uint32; type uint32;
description "ID to identify the LSP."; description "ID to identify the LSP";
} }
leaf multipoint-type { leaf multipoint-type {
type mldp:multipoint-type; type mldp:multipoint-type;
description description
"The type of mutipoint, p2mp or mp2mp."; "The type of mutipoint: p2mp or mp2mp";
} }
list recursive-fec { list recursive-fec {
key key
"recur-root-address recur-rd"; "recur-root-address recur-rd";
description description
"List of recursive opaque values."; "List of recursive opaque values";
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} // fec-label } // fec-label
} // opaque-type-lspid } // opaque-element-lspid
container opaque-type-transit { container opaque-element-transit {
description description
"The type of opaque value element is the transit IPv4 "The type of opaque value element is the transit IPv4
source."; source.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Paths."; Multipoint-to-Multipoint Label Switched Paths.";
list fec-label { list fec-label {
key key
"root-address source-address group-address " "root-address source-address group-address "
+ "rd recur-root-address recur-rd"; + "rd recur-root-address recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings";
leaf root-address { leaf root-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Root address."; "Root address";
} }
leaf source-address { leaf source-address {
type inet:ip-address; type inet:ip-address;
description description
"Source address."; "Source address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-element-transit
container opaque-type-bidir { container opaque-element-bidir {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
list fec-label { list fec-label {
key key
"root-address rp group-address rd recur-root-address " "root-address rp group-address rd recur-root-address "
+ "recur-rd"; + "recur-rd";
description description
"List of FEC to label bindings."; "List of FEC to label bindings.";
leaf root-address { leaf root-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Root address."; "Root address";
} }
leaf rp { leaf rp {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "Rendezvous Point (RP) address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-element-bidir
} // configured-leaf-lsps } // configured-leaf-lsps
} // ipv6 } // ipv6
} }
/* /*
* Global augmentation * Global augmentation
*/ */
/* /*
* Notifications * Notifications
*/ */
augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element/"
augment "/mldp:mpls-mldp-fec-event/mldp:opaque-type/" + "mldp:opaque-element-lspid/mldp:opaque-element-lspid" {
+ "mldp:opaque-type-lspid/mldp:opaque-type-lspid" {
description description
"Augmentation for MLDP notification for opaque-type-lspid."; "Augmentation for MLDP notification for opaque-element-lspid.";
container recursive-fec { container recursive-fec {
description description
"Container of recursive opaque values."; "Container of recursive opaque values";
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // fec-label } // fec-label
} }
augment "/mldp:mpls-mldp-fec-event/mldp:opaque-type" { augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element" {
description description
"Augmentation for MLDP notification."; "Augmentation for MLDP notification.";
case opaque-type-transit { case opaque-element-transit {
container opaque-type-transit { container opaque-element-transit {
description description
"The type of opaque value element is the transit IPv4 "The type of opaque value element is the transit IPv4
source."; source.";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Paths."; Multipoint-to-Multipoint Label Switched Paths.";
leaf root-address { leaf root-address {
type inet:ip-address; type inet:ip-address;
description description
"Root address."; "Root address";
} }
leaf source-address { leaf source-address {
type inet:ip-address; type inet:ip-address;
description description
"Source address."; "Source address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // opaque-type-transit } // opaque-element-transit
} // opaque-type-transit } // opaque-element-transit
case opaque-type-bidir { case opaque-element-bidir {
container opaque-type-bidir { container opaque-element-bidir {
description description
"The type of opaque value element is "The type of opaque value element is
the generic LSP identifier"; the generic LSP identifier";
reference reference
"RFC6826: Multipoint LDP In-Band Signaling for "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Multipoint-to-Multipoint Label Switched
Paths."; Paths.";
leaf root-address { leaf root-address {
type inet:ip-address; type inet:ip-address;
description description
"Root address."; "Root address";
} }
leaf rp { leaf rp {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "Rendezvous Point (RP) address";
} }
leaf group-address { leaf group-address {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Group address."; "Group address";
} }
leaf rd { leaf rd {
type route-distinguisher; type rt-types:route-distinguisher;
description description
"Route Distinguisher."; "Route Distinguisher";
reference reference
"RFC7246: Multipoint Label Distribution "RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Routing and Forwarding (VRF) Table
Context."; Context.";
} }
uses recursive-fec-attibutes; uses recursive-fec-attibutes;
} // opaque-type-bidir } // opaque-element-bidir
} // opaque-type-bidir } // opaque-element-bidir
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 15 Figure 15
10. Security Considerations 10. Security Considerations
This mLDP model shares the same security considerations as captured The YANG module specified in this document defines a schema for data
in LDP Yang model [I-D.ietf-mpls-ldp-yang]. that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446].
The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content.
There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative
effect on network operations.
Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or
notification) to these data nodes.
It goes without saying that this specification also inherits the
security considerations captured in the actual protocol specification
documents, namely base mLDP [RFC6388], targeted mLDP [RFC7060], mLDP
Recursive FEC [RFC6512], Multicast-only FRR [RFC7431], mLDP Node
Protection [RFC7715], mLDP In-band Signaling [RFC6826] [RFC7246]
[RFC7438], and Hub-and-Spoke Multipoint LSPs [RFC7140].
11. IANA Considerations 11. IANA Considerations
This document requests the registration of the following URIs in the This document requests the registration of the following URIs in the
IETF "XML registry" [RFC3688]: IETF "XML registry" [RFC3688]:
+------------------------------------------------+------------+-----+ +------------------------------------------------+------------+-----+
| URI | Registrant | XML | | URI | Registrant | XML |
+------------------------------------------------+------------+-----+ +------------------------------------------------+------------+-----+
| urn:ietf:params:xml:ns:yang:ietf-mpls-mldp | The IESG | N/A | | urn:ietf:params:xml:ns:yang:ietf-mpls-mldp | The IESG | N/A |
skipping to change at page 55, line 43 skipping to change at page 56, line 46
| | :ietf-mpls-mldp | | ocumen | | | :ietf-mpls-mldp | | ocumen |
| | | | t | | | | | t |
| | | | | | | | | |
| ietf-mpls- | urn:ietf:params:xml:ns:yang | mldp- | This d | | ietf-mpls- | urn:ietf:params:xml:ns:yang | mldp- | This d |
| mldp-extended | :ietf-mpls-mldp-extended | ext | ocumen | | mldp-extended | :ietf-mpls-mldp-extended | ext | ocumen |
| | | | t | | | | | t |
+----------------+--------------------------------+--------+--------+ +----------------+--------------------------------+--------+--------+
12. Acknowledgments 12. Acknowledgments
The authors would like to acknowledge Ladislav Lhotka for his useful The authors would like to acknowledge Ladislav Lhotka and Acee Lindem
comments as the YANG Doctor. for their review and comments.
13. Normative References 13. References
13.1. Normative References
[I-D.ietf-mpls-ldp-yang] [I-D.ietf-mpls-ldp-yang]
Raza, K., Asati, R., Liu, X., Esale, S., Chen, X., and H. Raza, K., Asati, R., Liu, X., Esale, S., Chen, X., and H.
Shah, "YANG Data Model for MPLS LDP", draft-ietf-mpls-ldp- Shah, "YANG Data Model for MPLS LDP", draft-ietf-mpls-ldp-
yang-04 (work in progress), March 2018. yang-04 (work in progress), March 2018.
[I-D.ietf-netmod-rfc6087bis]
Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", draft-ietf-netmod-rfc6087bis-20
(work in progress), March 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[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>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>.
[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>.
[RFC6389] Aggarwal, R. and JL. Le Roux, "MPLS Upstream Label [RFC6389] Aggarwal, R. and JL. Le Roux, "MPLS Upstream Label
Assignment for LDP", RFC 6389, DOI 10.17487/RFC6389, Assignment for LDP", RFC 6389, DOI 10.17487/RFC6389,
November 2011, <https://www.rfc-editor.org/info/rfc6389>. November 2011, <https://www.rfc-editor.org/info/rfc6389>.
skipping to change at page 56, line 45 skipping to change at page 58, line 11
"Using Multipoint LDP When the Backbone Has No Route to "Using Multipoint LDP When the Backbone Has No Route to
the Root", RFC 6512, DOI 10.17487/RFC6512, February 2012, the Root", RFC 6512, DOI 10.17487/RFC6512, February 2012,
<https://www.rfc-editor.org/info/rfc6512>. <https://www.rfc-editor.org/info/rfc6512>.
[RFC6826] Wijnands, IJ., Ed., Eckert, T., Leymann, N., and M. [RFC6826] Wijnands, IJ., Ed., Eckert, T., Leymann, N., and M.
Napierala, "Multipoint LDP In-Band Signaling for Point-to- Napierala, "Multipoint LDP In-Band Signaling for Point-to-
Multipoint and Multipoint-to-Multipoint Label Switched Multipoint and Multipoint-to-Multipoint Label Switched
Paths", RFC 6826, DOI 10.17487/RFC6826, January 2013, Paths", RFC 6826, DOI 10.17487/RFC6826, January 2013,
<https://www.rfc-editor.org/info/rfc6826>. <https://www.rfc-editor.org/info/rfc6826>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>.
[RFC7060] Napierala, M., Rosen, E., and IJ. Wijnands, "Using LDP [RFC7060] Napierala, M., Rosen, E., and IJ. Wijnands, "Using LDP
Multipoint Extensions on Targeted LDP Sessions", RFC 7060, Multipoint Extensions on Targeted LDP Sessions", RFC 7060,
DOI 10.17487/RFC7060, November 2013, DOI 10.17487/RFC7060, November 2013,
<https://www.rfc-editor.org/info/rfc7060>. <https://www.rfc-editor.org/info/rfc7060>.
[RFC7140] Jin, L., Jounay, F., Wijnands, IJ., and N. Leymann, "LDP [RFC7140] Jin, L., Jounay, F., Wijnands, IJ., and N. Leymann, "LDP
Extensions for Hub and Spoke Multipoint Label Switched Extensions for Hub and Spoke Multipoint Label Switched
Path", RFC 7140, DOI 10.17487/RFC7140, March 2014, Path", RFC 7140, DOI 10.17487/RFC7140, March 2014,
<https://www.rfc-editor.org/info/rfc7140>. <https://www.rfc-editor.org/info/rfc7140>.
[RFC7246] Wijnands, IJ., Ed., Hitchen, P., Leymann, N., Henderickx, [RFC7246] Wijnands, IJ., Ed., Hitchen, P., Leymann, N., Henderickx,
W., Gulko, A., and J. Tantsura, "Multipoint Label W., Gulko, A., and J. Tantsura, "Multipoint Label
Distribution Protocol In-Band Signaling in a Virtual Distribution Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Context", RFC 7246, Routing and Forwarding (VRF) Table Context", RFC 7246,
DOI 10.17487/RFC7246, June 2014, DOI 10.17487/RFC7246, June 2014,
<https://www.rfc-editor.org/info/rfc7246>. <https://www.rfc-editor.org/info/rfc7246>.
[RFC7431] Karan, A., Filsfils, C., Wijnands, IJ., Ed., and B.
Decraene, "Multicast-Only Fast Reroute", RFC 7431,
DOI 10.17487/RFC7431, August 2015,
<https://www.rfc-editor.org/info/rfc7431>.
[RFC7438] Wijnands, IJ., Ed., Rosen, E., Gulko, A., Joorde, U., and [RFC7438] Wijnands, IJ., Ed., Rosen, E., Gulko, A., Joorde, U., and
J. Tantsura, "Multipoint LDP (mLDP) In-Band Signaling with J. Tantsura, "Multipoint LDP (mLDP) In-Band Signaling with
Wildcards", RFC 7438, DOI 10.17487/RFC7438, January 2015, Wildcards", RFC 7438, DOI 10.17487/RFC7438, January 2015,
<https://www.rfc-editor.org/info/rfc7438>. <https://www.rfc-editor.org/info/rfc7438>.
[RFC7715] Wijnands, IJ., Ed., Raza, K., Atlas, A., Tantsura, J., and [RFC7715] Wijnands, IJ., Ed., Raza, K., Atlas, A., Tantsura, J., and
Q. Zhao, "Multipoint LDP (mLDP) Node Protection", Q. Zhao, "Multipoint LDP (mLDP) Node Protection",
RFC 7715, DOI 10.17487/RFC7715, January 2016, RFC 7715, DOI 10.17487/RFC7715, January 2016,
<https://www.rfc-editor.org/info/rfc7715>. <https://www.rfc-editor.org/info/rfc7715>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294,
DOI 10.17487/RFC8294, December 2017,
<https://www.rfc-editor.org/info/rfc8294>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>.
[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>.
Appendix A. Additional Contributors [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
<https://www.rfc-editor.org/info/rfc8343>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>.
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of
Documents Containing YANG Data Models", BCP 216, RFC 8407,
DOI 10.17487/RFC8407, October 2018,
<https://www.rfc-editor.org/info/rfc8407>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
13.2. Informative References
[RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG",
RFC 7951, DOI 10.17487/RFC7951, August 2016,
<https://www.rfc-editor.org/info/rfc7951>.
Appendix A. Data Tree Example
This section contains an example of an instance data tree in the JSON
encoding [RFC7951], containing both configuration and state data.
lo0: 2001:db8:0:200::1 (Root Address)
+-------+
| | Router| |
eth21 +---+ R2 +---+ eth23
| | (Root)| |
| +-------+ | lo0: 2001:db8:0:300::1
| +-------+ | | +-------+ |
| | Router| | | | Router| |
eth10 +--+ R1 +---+ eth12 eth32 +---+ R3 +--+ eth30
| | | | | | | |
| +-------+ | | +-------+ |
lo0: 2001:db8:0:200::1 (Root Address)
The configuration instance data tree for Router R3 in the above
figure could be as follows:
{
"ietf-interfaces:interfaces": {
"interface": [
{
"name": "lo0",
"description": "R3 loopback interface.",
"type": "iana-if-type:softwareLoopback",
"ietf-ip:ipv6": {
"address": [
{
"ip": "2001:db8:0:300::1",
"prefix-length": 64
}
]
}
},
{
"name": "eth30",
"description": "An interface connected to client routers.",
"type": "iana-if-type:ethernetCsmacd",
"ietf-ip:ipv6": {
"forwarding": true
}
},
{
"name": "eth32",
"description": "An interface connected to root (R2).",
"type": "iana-if-type:ethernetCsmacd",
"ietf-ip:ipv6": {
"forwarding": true
}
}
]
},
"ietf-routing:routing": {
"router-id": "203.0.113.3",
"control-plane-protocols": {
"ietf-mpls-ldp:mpls-ldp": {
"global": {
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true
}
},
"capability": {
"ietf-mpls-mldp:mldp": {
"mp2mp": {
"enable": true
}
}
},
"ietf-mpls-mldp:mldp": {
"enable": true,
"address-families": {
"ietf-mpls-mldp-extended:ipv6": {
"configured-leaf-lsps": {
"opaque-element-lspid": {
"fec-label": [
{
"root-address": "2001:db8:0:200::1",
"lsp-id": 201,
"multipoint-type": "mp2mp"
}
]
}
}
}
}
}
},
"discovery": {
"interfaces": {
"interface": [
{
"name": "eth30",
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true
}
}
},
{
"name": "eth32",
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true
}
}
}
]
}
}
}
}
}
}
The cooresponding operational state data for Router R3 could be as
follows:
{
"ietf-interfaces:interfaces": {
"interface": [
{
"name": "lo0",
"description": "R3 loopback interface.",
"type": "iana-if-type:softwareLoopback",
"phys-address": "00:00:5e:00:53:03",
"oper-status": "up",
"statistics": {
"discontinuity-time": "2018-10-15T12:34:56-05:00"
},
"ietf-ip:ipv6": {
"mtu": 1500,
"address": [
{
"ip": "2001:db8:0:300::1",
"prefix-length": 64,
"origin": "static",
"status": "preferred"
},
{
"ip": "fe80::200:5eff:fe00:5303",
"prefix-length": 64,
"origin": "link-layer",
"status": "preferred"
}
],
"neighbor": [
]
}
},
{
"name": "eth30",
"description": "An interface connected to client routers.",
"type": "iana-if-type:ethernetCsmacd",
"phys-address": "00:00:5e:00:53:30",
"oper-status": "up",
"statistics": {
"discontinuity-time": "2018-10-15T12:34:56-05:00"
},
"ietf-ip:ipv6": {
"forwarding": true,
"mtu": 1500,
"address": [
{
"ip": "fe80::200:5eff:fe00:5330",
"prefix-length": 64,
"origin": "link-layer",
"status": "preferred"
}
],
"neighbor": [
]
}
},
{
"name": "eth32",
"description": "An interface connected to root (R2).",
"type": "iana-if-type:ethernetCsmacd",
"phys-address": "00:00:5e:00:53:32",
"oper-status": "up",
"statistics": {
"discontinuity-time": "2018-10-15T12:34:56-05:00"
},
"ietf-ip:ipv6": {
"forwarding": true,
"mtu": 1500,
"address": [
{
"ip": "fe80::200:5eff:fe00:5332",
"prefix-length": 64,
"origin": "link-layer",
"status": "preferred"
}
],
"neighbor": [
{
"ip": "fe80::200:5eff:fe00:5323",
"link-layer-address": "00:00:5e:00:53:23",
"origin": "dynamic",
"is-router": [null],
"state": "reachable"
}
]
}
}
]
},
"ietf-routing:routing": {
"router-id": "203.0.113.3",
"interfaces": {
"interface": [
"lo0",
"eth30",
"eth32"
]
},
"control-plane-protocols": {
"ietf-mpls-ldp:mpls-ldp": {
"global": {
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true
}
},
"capability": {
"ietf-mpls-mldp:mldp": {
"mp2mp": {
"enable": true
}
}
},
"ietf-mpls-mldp:mldp": {
"enable": true,
"address-families": {
"ietf-mpls-mldp-extended:ipv6": {
"configured-leaf-lsps": {
"opaque-element-lspid": {
"fec-label": [
{
"root-address": "2001:db8:0:200::1",
"lsp-id": 201,
"multipoint-type": "mp2mp"
}
]
}
},
"roots": {
"root": [
{
"root-address": "2001:db8:0:200::1",
"is-self": false,
"reachability": [
{
"address": "fe80::200:5eff:fe00:5323",
"interface": "eth32",
"peer": "203.0.113.2"
}
],
"bindings": {
"opaque-element-lspid": {
"fec-label": [
{
"lsp-id": 201,
"multipoint-type": "mp2mp",
"peer": [
{
"direction": "upstream",
"peer": "203.0.113.2",
"advertisement-type": "advertised",
"label": 3201
},
{
"direction": "upstream",
"peer": "203.0.113.2",
"advertisement-type": "received",
"label": 2301
}
]
}
]
}
}
}
]
}
}
}
}
},
"discovery": {
"interfaces": {
"interface": [
{
"name": "eth30",
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true,
"hello-adjacencies": {
"hello-adjacency": [
]
}
}
}
},
{
"name": "eth32",
"address-families": {
"ietf-mpls-ldp-extended:ipv6": {
"enable": true,
"hello-adjacencies": {
"hello-adjacency": [
{
"adjacent-address":
"fe80::200:5eff:fe00:5323",
"flag": ["adjacency-flag-active"],
"hello-holdtime": {
"adjacent": 15,
"negotiated": 15,
"remaining": 9
},
"next-hello": 3,
"statistics": {
"discontinuity-time":
"2018-10-15T12:34:56-05:00"
},
"peer": {
"lsr-id": "203.0.113.2",
"label-space-id": 0
}
}
]
}
}
}
}
]
}
},
"peers": {
"peer": [
{
"lsr-id": "203.0.113.2",
"label-space-id": 0,
"label-advertisement-mode": {
"local": "downstream-unsolicited",
"peer": "downstream-unsolicited",
"negotiated": "downstream-unsolicited"
},
"next-keep-alive": 5,
"session-holdtime": {
"peer": 180,
"negotiated": 180,
"remaining": 78
},
"session-state": "operational",
"tcp-connection": {
"local-address": "fe80::200:5eff:fe00:5332",
"local-port": 646,
"remote-address": "fe80::200:5eff:fe00:5323",
"remote-port": 646
},
"up-time": "P2H33M5S",
"statistics": {
"discontinuity-time": "2018-10-15T12:34:56-05:00"
},
"received-peer-state": {
"capability": {
"ietf-mpls-mldp:mldp": {
"mp2mp": {
"enable": true
}
}
}
}
}
]
}
}
}
}
}
Appendix B. Additional Contributors
Matthew Bocci Matthew Bocci
Nokia Nokia
Email: matthew.bocci@nokia.com Email: matthew.bocci@nokia.com
Authors' Addresses Authors' Addresses
Kamran Raza Kamran Raza
Cisco Systems, Inc. Cisco Systems, Inc.
2000 Innovation Drive 2000 Innovation Drive
Kanata, ON K2K-3E8 Kanata, ON K2K-3E8
CA CA
Email: skraza@cisco.com Email: skraza@cisco.com
Rajiv Asati
Cisco Systems, Inc.
Email: rajiva@cisco.com
Sowmya Krishnaswamy
Cisco Systems, Inc.
Email: sowkrish@cisco.com
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
Email: xufeng.liu.ietf@gmail.com Email: xufeng.liu.ietf@gmail.com
Santosh Esale
Juniper Networks
Email: sesale@juniper.net
Loa Andersson
Huawei Technologies
Email: loa@pi.nu
Jeff Tantsura Jeff Tantsura
Nuage Networks Nuage Networks
Email: jefftant.ietf@gmail.com Email: jefftant.ietf@gmail.com
Santosh Esale Sowmya Krishnaswamy
Juniper Networks Individual
Email: sesale@juniper.net Email: krishnaswamy.sowmya@gmail.com
Rajiv Asati
Cisco Systems, Inc.
Email: rajiva@cisco.com
Xia Chen Xia Chen
Huawei Technologies Huawei Technologies
Email: jescia.chenxia@huawei.com Email: jescia.chenxia@huawei.com
Loa Andersson
Huawei Technologies
Email: loa@pi.nu
Himanshu Shah Himanshu Shah
Ciena Corporation Ciena Corporation
Email: hshah@ciena.com Email: hshah@ciena.com
 End of changes. 341 change blocks. 
579 lines changed or deleted 1060 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/