MPLS Working Group K. Raza
Internet-Draft S. Krishnaswamy
Intended status: Standards Track Cisco Systems, Inc.
Expires: May 16, 2017
X. Liu
Kuatro Technologies
S. Esale
Juniper Networks
X. Chen
Huawei Technologies
Jeff Tantsura
November 12, 2016
YANG Data Model for MPLS mLDP
draft-ietf-mpls-mldp-yang-00
Abstract
This document describes a YANG data model for Multi-Protocol Label
Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The
mLDP data model augments the LDP data model.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 16, 2017.
Raza, et al. Expires May 16, 2017 [Page 1]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Specification of Requirements . . . . . . . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 4
4.2. mldp container . . . . . . . . . . . . . . . . . . . . . 6
4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 6
4.4. YANG tree . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Operational State . . . . . . . . . . . . . . . . . . . . . . 9
5.1. Derived states . . . . . . . . . . . . . . . . . . . . . 13
5.1.1. Root state . . . . . . . . . . . . . . . . . . . . . 13
5.1.2. Bindings state . . . . . . . . . . . . . . . . . . . 14
5.1.3. Capabilities state . . . . . . . . . . . . . . . . . 18
6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 18
7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 18
9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 19
10. Security Considerations . . . . . . . . . . . . . . . . . . . 43
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 44
13.1. Normative References . . . . . . . . . . . . . . . . . . 44
13.2. Informative References . . . . . . . . . . . . . . . . . 45
Appendix A. Additional Contributors . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46
1. Introduction
This document introduces a YANG data model for MPLS Multipoint Label
Distribution Protocol (mLDP). The mLDP model being defined here is
highly dependent on LDP YANG data model
Raza, et al. Expires May 16, 2017 [Page 2]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
[I-D.ietf-mpls-ldp-mldp-yang]. This implies that an opertor will
need to use base LDP module to configure and manage control plane for
mLDP. For example, an operator would enable LDP discovery on MPLS
interface to establish LDP/mLDP peering on which mLDP bindings could
be exchanged. Similarly, an operator could query state information
for an LDP peer in order to verify peering attributes etc.
Moreover, it is important to note here that any assumptions made in
the LDP model also hold true in this document, unless otherwise
explicitly stated.
This document specifies mLDP model under ietf-mpls-mldp that augments
LDP model as defined under ietf-mpls-ldp
[I-D.ietf-mpls-ldp-mldp-yang]. Like its base LDP data model, this
model also defines the following constructs for managing the mLDP
protocol:
o Configuration
o Operational State
o Executables (Actions)
o Notifications
This document is organized to define the data model for each of the
above constructs in the sequence as listed above.
2. Specification of Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
3. Overview
Following are the main mLDP areas and features that are within the
scope of this model:
o mLDP Base Specification [RFC6388]
o mLDP Recursive FEC [RFC6512]
o Targeted mLDP [RFC7060]
o mLDP Fast-Reroute (FRR):
* Node Protection [RFC7715]
Raza, et al. Expires May 16, 2017 [Page 3]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
* Multicast-only
o In-band Signaling:
* mLDP In-band Signaling [RFC6826]
* mLDP In-band signaling in a VRF [RFC7246]
* mLDP In-band Signaling with Wildcards [RFC7438]
o Hub-and-Spoke Multipoint LSPs [RFC7140]
o Configured Leaf LSPs (manually provisioned)
[Ed Note: Some of the topics in the above list are to be addressed/
extended in a later revision of this document].
4. Configuration
4.1. Configuration Hierarchy
In terms of overall configuration layout, following figure highlights
extensions to LDP configuration model to incorporate mLDP:
Raza, et al. Expires May 16, 2017 [Page 4]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
module: ietf-mpls-ldp
augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
+-- mpls-ldp
+-- global
| +-- ...
| +-- ...
| +-- mldp (augmentation)
| | +-- ...
| | +-- ...
| | +-- address-family* [afi]
| | +-- ...
| | +-- ...
| | +-- configured-leaf-lsps
| | +-- p2mp
| | | +-- ...
| | | +-- ...
| | +-- mp2mp
| | +-- ...
| | +-- ...
| +-- capability
| +-- ...
| +-- ...
| +-- mldp (augmentation)
| +-- ...
| +-- ...
+-- peers
+-- ...
+-- ...
+-- peer*
+-- ...
+-- ...
+-- capability
+-- ...
+-- ...
+-- mldp
+-- ...
+-- ...
Figure 1
From above hierarchy, we can categorize mLDP configuration parameters
into two types:
o Parameters that are mLDP specific
o Parameters that leverage/extend LDP containers and parameters
Raza, et al. Expires May 16, 2017 [Page 5]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
Following subsections first describe mLDP specific configuration
parameters, followed by those leveraging LDP.
4.2. mldp container
mldp container is an augmentation of LDP global container and holds
the configuration related to items that are mLDP specific. The main
items under this container are:
o mLDP enabling: To enable mLDP under a (VRF) routing instance, mldp
container is enabled under LDP. Given that mLDP requires LDP
signalling, it is not sensible to allow disabling LDP control
plane under a (VRF) network-instance while requiring mLDP to be
enabled for the same. However, if a user wants only to allow
signalling for multipoint FECs on an LDP/mLDP enabled VRF
instance, he/she can use LDP label-policies to disable unicast
FECs under the VRF.
o mLDP per-AF features: mLDP manages its own list of IP address-
families and the features enabled underneath. The per-AF mLDP
configuration items include:
* Multicast-only FRR: This enables Multicast-only FRR
functionality for a given AF under mLDP. The feature allows
route-policy to be configured for finer control/applicability
of the feature.
* Recursive FEC: The recursive-fec feature [RFC6512] can be
enabled per AF with a route-policy.
* Configured Leaf LSPs: To provision multipoint leaf LSP
manually, a container is provided per-AF under LDP. The
configuration is flexible and allows a user to specify MP LSPs
of type p2mp or mp2mp with IPv4 or IPv6 root address(es) by
using either LSP-Id or (S,G).
Targeted mLDP feature specification [RFC7060] does not require any
mLDP specific configuration. It, however, requires LDP upstream-
label-assignment capability [RFC6389] to be enabled.
4.3. Leveraging LDP containers
mLDP configuration model leverages following configuration areas and
containers that are already defined for LDP:
o Capabilities: A new container "mldp" is defined that augments
LDP's capabilities container. This new container specifies any
mLDP specific capabilities and their parameters. Moreover, a new
Raza, et al. Expires May 16, 2017 [Page 6]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
"mldp" container is also added by augmenting LDP per-peer
capability container to override/control mLDP specific
capabilities on a peer level. In the scope of this document, the
most important capabilities related to mLDP are p2mp, mp2mp, make-
before-break, hub-and-spoke, and node-protection.
o Discovery and Peer: mLDP requires LDP discovery and peer
procedures to form mLDP peering. A peer is treated as mLDP peer
only when either P2MP or MP2MP capabilities have been successfully
exchanged with the peer. If a user wish to selectively enable or
disable mLDP with a LDP-enabled peer, he/she may use per-peer mLDP
capabilities configuration. [Ed Note: The option to control mLDP
enabling/disabling on a peer-list is being explored for future ].
In most common deployments, it is desirable to disable mLDP
(capabilities announcements) on a targeted-only LDP peering, where
targeted-only peer is the one whose discovery sources are targeted
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
enabled interface as a downstream interface towards a nexthop
(LDP/mLDP peer) for MP LSP programming. However, a configuration
option is provided to allow mLDP to exclude a given interface from
such a selection. Note that such a configuration option will be
useful only when there are more than one interfaces available for
the downstream selection.
This goes without saying that mLDP configuration tree follows the
same approach as LDP, where the tree comprise leafs for intended
configuration.
4.4. YANG tree
The following figure captures the YANG tree for mLDP configuration.
module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw mldp {mldp}?
+--rw config
| +--rw enable? boolean
+--rw address-family* [afi]
+--rw afi ldp:ldp-address-family
+--rw config
| +--rw multicast-only-frr {mldp-mofrr}?
| | +--rw prefix-list? ldp:prefix-list-ref
| +--rw recursive-fec
Raza, et al. Expires May 16, 2017 [Page 7]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
| +--rw prefix-list? ldp:prefix-list-ref
+--rw configured-leaf-lsps
+--rw p2mp
| +--rw roots-ipv4
| | +--rw root* [root-address]
| | +--rw root-address inet:ipv4-address
| | +--rw lsp* [lsp-id source-address group-address]
| | +--rw lsp-id uint16
| | +--rw source-address inet:ipv4-address
| | +--rw group-address inet:ipv4-address-no-zone
| +--rw roots-ipv6
| +--rw root* [root-address]
| +--rw root-address inet:ipv6-address
| +--rw lsp* [lsp-id source-address group-address]
| +--rw lsp-id uint16
| +--rw source-address inet:ipv6-address
| +--rw group-address inet:ipv6-address-no-zone
+--rw mp2mp
+--rw roots-ipv4
| +--rw root* [root-address]
| +--rw root-address inet:ipv4-address
| +--rw lsp* [lsp-id source-address group-address]
| +--rw lsp-id uint16
| +--rw source-address inet:ipv4-address
| +--rw group-address inet:ipv4-address-no-zone
+--rw roots-ipv6
+--rw root* [root-address]
+--rw root-address inet:ipv6-address
+--rw lsp* [lsp-id source-address group-address]
+--rw lsp-id uint16
+--rw source-address inet:ipv6-address
+--rw group-address inet:ipv6-address-no-zone
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability:
+--rw mldp
+--rw p2mp
| +--rw enable? boolean
+--rw mp2mp
| +--rw enable? boolean
+--rw make-before-break
| +--rw enable? boolean
| +--rw switchover-delay? uint16
| +--rw timeout? uint16
+--rw hub-and-spoke {capability-mldp-hsmp}?
| +--rw enable? boolean
+--rw node-protection {capability-mldp-node-protection}?
+--rw plr? boolean
+--rw merge-point
Raza, et al. Expires May 16, 2017 [Page 8]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
+--rw enable? boolean
+--rw targeted-session-teardown-delay? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/ldp:interfaces/ldp:interface/ldp:address-family/ldp:config:
+--rw mldp-disable? boolean {mldp}?
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability:
+--rw mldp {mldp}?
+--rw p2mp
| +--rw enable? boolean
+--rw mp2mp
| +--rw enable? boolean
+--rw make-before-break
| +--rw enable? boolean
| +--rw switchover-delay? uint16
| +--rw timeout? uint16
+--rw hub-and-spoke {capability-mldp-hsmp}?
| +--rw enable? boolean
+--rw node-protection {capability-mldp-node-protection}?
+--rw plr? boolean
+--rw merge-point
+--rw enable? boolean
+--rw targeted-session-teardown-delay? uint16
Figure 2
5. Operational State
Operational state of mLDP can be queried and obtained from various
read-only mdlp "state" containers that augment ldp state containers.
Please note this state tree refers both the configuration "applied"
state as well as the "derived" state related to the mLDP protocol.
[Ed note: Future revision will realign]
Following is a simplified graphical representation of the data model
for mLDP operational state:
module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw mldp {mldp}?
+--ro state
| +--ro enable? boolean
+--rw address-family* [afi]
Raza, et al. Expires May 16, 2017 [Page 9]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
+--ro state
+--ro multicast-only-frr {mldp-mofrr}?
| +--ro prefix-list? ldp:prefix-list-ref
+--ro recursive-fec
| +--ro prefix-list? ldp:prefix-list-ref
+--ro ipv4
| +--ro roots
| | +--ro root* [root-address]
| | +--ro root-address inet:ipv4-address
| | +--ro is-self? boolean
| | +--ro reachability* [address interface]
| | +--ro address inet:ipv4-address
| | +--ro interface ldp:mpls-interface-ref
| | +--ro peer? leafref
| +--ro bindings
| +--ro opaque-type-lspid
| | +--ro fec-label* [root-address lsp-id recur-root-address recur-rd]
| | +--ro root-address inet:ipv4-address
| | +--ro lsp-id uint32
| | +--ro recur-root-address inet:ip-address
| | +--ro recur-rd route-distinguisher
| | +--ro multipoint-type? multipoint-type
| | +--ro peer* [direction peer advertisement-type]
| | +--ro direction ldp:downstream-upstream
| | +--ro peer leafref
| | +--ro advertisement-type ldp:advertised-received
| | +--ro label? mpls:mpls-label
| | +--ro mbb-role? enumeration
| | +--ro mofrr-role? enumeration
| +--ro opaque-type-transit
| | +--ro fec-label* [root-address source-address group-address ... ]
| | +--ro root-address inet:ipv4-address
| | +--ro source-address inet:ip-address
| | +--ro group-address inet:ip-address-no-zone
| | +--ro rd route-distinguisher
| | +--ro recur-root-address inet:ip-address
| | +--ro recur-rd route-distinguisher
| | +--ro multipoint-type? multipoint-type
| | +--ro peer* [direction peer advertisement-type]
| | +--ro direction ldp:downstream-upstream
| | +--ro peer leafref
| | +--ro advertisement-type ldp:advertised-received
| | +--ro label? mpls:mpls-label
| | +--ro mbb-role? enumeration
| | +--ro mofrr-role? enumeration
| +--ro opaque-type-bidir
| +--ro fec-label* [root-address rp group-address ... ]
| +--ro root-address inet:ipv4-address
Raza, et al. Expires May 16, 2017 [Page 10]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
| +--ro rp inet:ip-address
| +--ro group-address inet:ip-address-no-zone
| +--ro rd route-distinguisher
| +--ro recur-root-address inet:ip-address
| +--ro recur-rd route-distinguisher
| +--ro multipoint-type? multipoint-type
| +--ro peer* [direction peer advertisement-type]
| +--ro direction ldp:downstream-upstream
| +--ro peer leafref
| +--ro advertisement-type ldp:advertised-received
| +--ro label? mpls:mpls-label
| +--ro mbb-role? enumeration
| +--ro mofrr-role? enumeration
+--ro ipv6
+--ro roots
| +--ro root* [root-address]
| +--ro root-address inet:ipv6-address
| +--ro is-self? boolean
| +--ro reachability* [address interface]
| +--ro address inet:ipv6-address
| +--ro interface ldp:mpls-interface-ref
| +--ro peer? leafref
+--ro bindings
+--ro opaque-type-lspid
| +--ro fec-label* [root-address lsp-id recur-root-address recur-rd]
| +--ro root-address inet:ipv6-address
| +--ro lsp-id uint32
| +--ro recur-root-address inet:ip-address
| +--ro recur-rd route-distinguisher
| +--ro multipoint-type? multipoint-type
| +--ro peer* [direction peer advertisement-type]
| +--ro direction ldp:downstream-upstream
| +--ro peer leafref
| +--ro advertisement-type ldp:advertised-received
| +--ro label? mpls:mpls-label
| +--ro mbb-role? enumeration
| +--ro mofrr-role? enumeration
+--ro opaque-type-transit
| +--ro fec-label* [root-address source-address group-address ... ]
| +--ro root-address inet:ipv6-address
| +--ro source-address inet:ip-address
| +--ro group-address inet:ip-address-no-zone
| +--ro rd route-distinguisher
| +--ro recur-root-address inet:ip-address
| +--ro recur-rd route-distinguisher
| +--ro multipoint-type? multipoint-type
| +--ro peer* [direction peer advertisement-type]
| +--ro direction ldp:downstream-upstream
Raza, et al. Expires May 16, 2017 [Page 11]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
| +--ro peer leafref
| +--ro advertisement-type ldp:advertised-received
| +--ro label? mpls:mpls-label
| +--ro mbb-role? enumeration
| +--ro mofrr-role? enumeration
+--ro opaque-type-bidir
+--ro fec-label* [root-address rp group-address ... ]
+--ro root-address inet:ipv6-address
+--ro rp inet:ip-address
+--ro group-address inet:ip-address-no-zone
+--ro rd route-distinguisher
+--ro recur-root-address inet:ip-address
+--ro recur-rd route-distinguisher
+--ro multipoint-type? multipoint-type
+--ro peer* [direction peer advertisement-type]
+--ro direction ldp:downstream-upstream
+--ro peer leafref
+--ro advertisement-type ldp:advertised-received
+--ro label? mpls:mpls-label
+--ro mbb-role? enumeration
+--ro mofrr-role? enumeration
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/ldp:interfaces/ldp:interface/ldp:address-family/ldp:state:
+--ro mldp-disable? boolean {mldp}?
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability:
+--ro mldp
+--ro p2mp
| +--ro enable? boolean
+--ro mp2mp
| +--ro enable? boolean
+--ro make-before-break
| +--ro enable? boolean
| +--ro switchover-delay? uint16
| +--ro timeout? uint16
+--ro hub-and-spoke {capability-mldp-hsmp}?
| +--ro enable? boolean
+--ro node-protection {capability-mldp-node-protection}?
+--ro plr? boolean
+--ro merge-point
+--ro enable? boolean
+--ro targeted-session-teardown-delay? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability:
+--ro mldp {mldp}?
+--ro p2mp
| +--ro enable? boolean
Raza, et al. Expires May 16, 2017 [Page 12]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
+--ro mp2mp
| +--ro enable? boolean
+--ro make-before-break
| +--ro enable? boolean
| +--ro switchover-delay? uint16
| +--ro timeout? uint16
+--ro hub-and-spoke {capability-mldp-hsmp}?
| +--ro enable? boolean
+--ro node-protection {capability-mldp-node-protection}?
+--ro plr? boolean
+--ro merge-point
+--ro enable? boolean
+--ro targeted-session-teardown-delay? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability:
+--ro mldp {mldp}?
+--ro p2mp
| +--ro enable? boolean
+--ro mp2mp
| +--ro enable? boolean
+--ro make-before-break
| +--ro enable? boolean
+--ro hub-and-spoke
| +--ro enable? boolean
+--ro node-protection
+--ro plr? boolean
+--ro merge-point? boolean
Figure 3
5.1. Derived states
Following are main areas for which mLDP operational derived state is
defined:
o Root
o Bindings (FEC-label)
o Capabilities
5.1.1. Root state
Root address is a fundamental construct for MP FEC bindings and LSPs.
The root state provides information on all the known roots in a given
address-familty, and their information on the root reachability (as
learnt from RIB). In case of multi-path reachability to a root, the
Raza, et al. Expires May 16, 2017 [Page 13]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
selection of upstream path is done on per-LSP basis at the time of
LSP setup. Similarly, when protection mechanisms like MBB or MoFRR
are in place, the path designation as active/standby or primary/
backup is also done on per LSP basis. It is to be noted that a given
root can be shared amongst multiple P2MP and/or MP2MP LSPs.
Moreover, an LSP can be signaled to more than one root for RNR
purposes.
The following diagram illustrates a root database on a branch/transit
LSR:
root 1.1.1.1:
path1:
RIB: GigEthernet 1/0, 12.1.0.2;
LDP: peer 192.168.0.1:0
path2:
RIB: GigEthernet 2/0, 12.2.0.2;
LDP: peer 192.168.0.3:0
root 2.2.2.2:
path1:
RIB: 3.3.3.3; (NOTE: This is a recursive path)
LDP: peer 192.168.0.3:0 (NOTE: T-mLDP peer)
root 9.9.9.9:
. . . .
Figure 4
A root entry on a root LSR itself will be presented as follows:
root 9.9.9.9:
is-self
Figure 5
5.1.2. Bindings state
Binding state provides information on mLDP FEC-label bindings for
both P2MP and MP2MP FEC types. Like LDP, the FEC-label binding
derived state is presented in a FEC-centric view per address-family,
and provides information on both inbound (received) and outbound
(advertised) bindings. The FEC is presented as (root-address,
opaque-type-data) and the direction (upstream or downstream) is
Raza, et al. Expires May 16, 2017 [Page 14]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
picked with respect to root 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/and MoFRR (primary or backup).
This document covers following type of opaque values with their keys
in the operational model of mLDP bindings:
+-------------------------+--------------------+------------+
| Opaque Type | Key | RFC |
+-------------------------+--------------------+------------+
| Generic LSP Identifier | LSP Id | [RFC6388] |
| Transit IPv4 Source | Source, Group | [RFC6826] |
| Transit IPv6 Source | Source, Group | [RFC6826] |
| Transit IPv4 Bidir | RP, Group | [RFC6826] |
| Transit IPv6 Bidir | RP, Group | [RFC6826] |
| Transit VPNv4 Source | Source, Group, RD | [RFC7246] |
| Transit VPNv6 Source | Source, Group, RD | [RFC7246] |
| Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] |
| Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] |
| Recursive Opaque | Root | [RFC6512] |
| VPN-Recursive Opaque | Root, RD | [RFC6512] |
+-------------------------+--------------------+------------+
Table 1: MP Opaque Types and keys
It is to be noted that there are three basic types (LSP Id, Source,
and Bidir) and then there are variants (VPN, recursive, VPN-
recursive) on top of these basic types.
Following captures a high level tree hierarchy for mLDP bindings
state:
Raza, et al. Expires May 16, 2017 [Page 15]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
+--rw mldp (augmentation of ldp:global)
+--rw address-family* [afi]
+--rw afi address-family
+--ro state
+--ro ipv4 (or ipv6)
+--ro bindings
+--ro opaque-type-xxx [root-address, type-specific-key]
+--ro root-address
+--ro ...
+--ro recur-root-address inet:ipv4-address
+--ro recur-rd route-distinguisher
+--ro multipoint-type? multipoint-type
+--ro peer* [direction peer advertisement-type]
+--ro direction downstream-upstream
+--ro peer leafref
+--ro advertisement-type advertised-received
+--ro label? mpls:mpls-label
+--ro mbb-role? enumeration
+--ro mofrr-role? enumeration
Figure 6
In the above tree, the type-specific-key varies with the base type as
listed in earlier Table 1. For example, if the opaque type is
Generic LSP Identifier, then the type-specific-key will be a uint32
value corresponding to the LSP. Please see the complete model for
all other types.
Moreover, the binding tree defines only three types of sub-trees
(i.e. lspid, src, and bidir) which is able to map the respective
variants (vpn, recursive, and vpn-recusrive) accordingly. For
example, the key for opaque-type-src is [R, S, G, rd, recur-R, recur-
RD], where basic type will specify (R, S,G,-, -, -), VPN type will
specify (R, S,G, rd, -, -), recursive type will specify [R, S,G, -,
recur-R, -] and VPN-recursive type will specify [R, S,G, -, recur-R,
recur-rd].
It is important to take note of the following:
o The address-family ipv4/ipv4 applies to "root" address in the mLDP
binding tree. The other addresses (source, group, RP 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,
and (recur-root-address, recur-rd) fields applies to VPN-Recursive
opaque types as defined in [RFC6512]
Raza, et al. Expires May 16, 2017 [Page 16]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
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 of original encapsulated MP FEC
The following diagram illustrates the FEC-label binding information
structure for a P2MP (Transit IPv4 Source type) LSP on a branch/
transit LSR:
FEC (root 2.2.2.2, S=192.168.1.1, G=224.1.1.1):
type: p2mp
upstream:
advertised:
peer 192.168.0.1:0, label 16000 (local)
downstream:
received:
peer 192.168.0.2:0, label 17000 (remote)
peer 192.168.0.3:0, label 18000 (remote)
Figure 7
The following diagram illustrates the FEC-label binding information
structure for a similar MP2MP LSP on a branch/transit LSR:
FEC (root 2.2.2.2, RP=192.168.9.9, G=224.1.1.1):
type: mp2mp
upstream:
advertised:
peer 192.168.0.1:0, label 16000 (local)
received:
peer 192.168.0.1:0, label 17000 (remote)
downstream:
advertised:
peer 192.168.0.2:0, label 16001 (local), MBB role=active
peer 192.168.0.3:0, label 16002 (local), MBB role=standby
received:
peer 192.168.0.2:0, label 17001 (remote)
peer 192.168.0.3:0, label 18001 (remote)
Figure 8
Raza, et al. Expires May 16, 2017 [Page 17]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
5.1.3. Capabilities state
Like LDP, mLDP capabilities state comprise two types of information:
o global: augments ldp:global/ldp:state/ldp:capability.
o per-peer: augments ldp:peers/ldp:peer/ldp:state/ldp:capability
6. Notifications
mLDP notification module consists of notification related to changes
in the operational state of an mLDP FEC. Following is a simplified
graphical representation of the data model for mLDP notifications:
module: ietf-mpls-mldp
notifications:
+---n mpls-mldp-fec-event
+--ro event-type? ldp:oper-status-event-type
+--ro tree-type? multipoint-type
+--ro root? inet:ip-address
+--ro (lsp-key-type)?
+--:(lsp-id-based)
| +--ro lsp-id? uint16
+--:(source-group-based)
+--ro source-address? inet:ip-address
+--ro group-address? inet:ip-address
Figure 9
7. Actions
Currently, no RPCs/actions are defined for mLDP.
8. Open Items
Following is a list of open items that are to be discussed and
addressed in future revisions of this document:
o Revisit and cut down on the scope of the document and number of
features it is trying to cover
o Split the model into a base and extended items
o Align operational state modeling with other routing protocols and
[I-D.openconfig-netmod-opstate]
Raza, et al. Expires May 16, 2017 [Page 18]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
o Specify default values for configuration parameters
o Add statistics for mLDP root LSPs and bindings
o Extend the "Configured Leaf LSPs" for various type of opaque-types
o Extend mLDP notifications for other types of opaque values as well
9. YANG Specification
Following is the actual YANG definition for mLDP constructs defined
earlier in the document.
<CODE BEGINS> file "ietf-mpls-mldp@2016-11-01.yang" -->
module ietf-mpls-mldp {
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp";
prefix mldp;
import ietf-inet-types {
prefix "inet";
}
import ietf-routing {
prefix "rt";
}
import ietf-mpls {
prefix "mpls";
}
import ietf-mpls-ldp {
prefix "ldp";
}
organization
"IETF MPLS Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:mpls@ietf.org>
WG Chair: Loa Andersson
<mailto:loa@pi.nu>
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
Raza, et al. Expires May 16, 2017 [Page 19]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
Editor: Kamran Raza
<mailto:skraza@cisco.com>
Editor: Rajiv Asati
<mailto:rajiva@cisco.com>
Editor: Xufeng Liu
<mailto:xliu@kuatrotech.com>
Editor: Santosh Esale
<mailto:sesale@juniper.net>
Editor: Xia Chen
<mailto:jescia.chenxia@huawei.com>
Editor: Himanshu Shah
<mailto:hshah@ciena.com>
Editor: Sowmya Krishnaswamy
<mailto:sowkrish@cisco.com>";
description
"This YANG module defines the essential components for the
management of Multi-Protocol Label Switching (MPLS) Multipoint
LDP (mLDP).";
revision 2016-11-01 {
description
"Initial revision.";
reference
"RFC XXXX: YANG Data Model for MPLS mLDP.";
}
/*
* Features
*/
feature capability-mldp-hsmp {
description
"This feature indicates that the system allows to configure
mLDP hub-and-spoke-multipoint capability.";
}
feature capability-mldp-node-protection {
description
Raza, et al. Expires May 16, 2017 [Page 20]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
"This feature indicates that the system allows to configure
mLDP node-protection capability.";
}
feature mldp {
description
"This feature indicates that the system supports Multicast
LDP (mLDP).";
}
feature mldp-mofrr {
description
"This feature indicates that the system supports mLDP
Multicast only FRR (MoFRR).";
}
/*
* Typedefs
*/
typedef multipoint-type {
type enumeration {
enum p2mp {
description "Point to multipoint.";
}
enum mp2mp {
description "Multipoint to multipoint.";
}
}
description
"p2mp or mp2mp.";
}
typedef route-distinguisher {
type string {
}
description
"Type definition for route distinguisher.";
reference
"RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
}
/*
* Groupings
*/
grouping mldp-capabilities {
description
"mLDP capabilities.";
Raza, et al. Expires May 16, 2017 [Page 21]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
container p2mp {
description
"Configure point-to-multipoint capability.";
leaf enable {
type boolean;
description
"Enable point-to-multipoint.";
}
}
container mp2mp {
description
"Configure multipoint-to-multipoint capability.";
leaf enable {
type boolean;
description
"Enable multipoint-to-multipoint.";
}
}
container make-before-break {
description
"Configure make-before-break capability.";
leaf enable {
type boolean;
description
"Enable make-before-break.";
}
leaf switchover-delay {
type uint16;
units seconds;
description
"Switchover delay in seconds.";
}
leaf timeout {
type uint16;
units seconds;
description
"Timeout in seconds.";
}
}
container hub-and-spoke {
if-feature capability-mldp-hsmp;
description
"Configure hub-and-spoke-multipoint capability.";
reference
"RFC7140: LDP Extensions for Hub and Spoke Multipoint
Label Switched Path";
leaf enable {
type boolean;
Raza, et al. Expires May 16, 2017 [Page 22]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description
"Enable hub-and-spoke-multipoint.";
}
}
container node-protection {
if-feature capability-mldp-node-protection;
description
"Configure node-protection capability.";
reference
"RFC7715: mLDP Node Protection.";
leaf plr {
type boolean;
description
"Point of Local Repair capable for MP LSP node
protection.";
}
container merge-point {
description
"Merge Point capable for MP LSP node protection.";
leaf enable {
type boolean;
description
"Enable merge point capability.";
}
leaf targeted-session-teardown-delay {
type uint16;
units seconds;
description
"Targeted session teardown delay.";
}
} // merge-point
}
} // mldp-capabilities
grouping mldp-configured-lsp-roots {
description
"mLDP roots containers.";
container roots-ipv4 {
when "../../../afi = 'ipv4'" {
description
"Only for IPv4.";
}
description
"Configured IPv4 multicast LSPs.";
list root {
key "root-address";
Raza, et al. Expires May 16, 2017 [Page 23]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv4-address;
description
"Root address.";
}
list lsp {
must "(lsp-id = 0 and source-address != '0.0.0.0' and "
+ "group-address != '0.0.0.0') or "
+ "(lsp-id != 0 and source-address = '0.0.0.0' and "
+ "group-address = '0.0.0.0')" {
description
"A LSP can be identified by either <lsp-id> or
<source-address, group-address>.";
}
key "lsp-id source-address group-address";
description
"List of LSPs.";
leaf lsp-id {
type uint16;
description "ID to identify the LSP.";
}
leaf source-address {
type inet:ipv4-address;
description
"Source address.";
}
leaf group-address {
type inet:ipv4-address-no-zone;
description
"Group address.";
}
} // list lsp
} // list root
} // roots-ipv4
container roots-ipv6 {
when "../../../afi = 'ipv6'" {
description
"Only for IPv6.";
}
description
"Configured IPv6 multicast LSPs.";
Raza, et al. Expires May 16, 2017 [Page 24]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
list root {
key "root-address";
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
list lsp {
must "(lsp-id = 0 and source-address != '::' and "
+ "group-address != '::') or "
+ "(lsp-id != 0 and source-address = '::' and "
+ "group-address = '::')" {
description
"A LSP can be identified by either <lsp-id> or
<source-address, group-address>.";
}
key "lsp-id source-address group-address";
description
"List of LSPs.";
leaf lsp-id {
type uint16;
description "ID to identify the LSP.";
}
leaf source-address {
type inet:ipv6-address;
description
"Source address.";
}
leaf group-address {
type inet:ipv6-address-no-zone;
description
"Group address.";
}
} // list lsp
} // list root
} // roots-ipv6
} // mldp-configured-lsp-roots
grouping mldp-fec-event {
description
"A mLDP FEC event.";
leaf tree-type {
type multipoint-type;
description
Raza, et al. Expires May 16, 2017 [Page 25]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
"p2mp or mp2mp.";
}
leaf root {
type inet:ip-address;
description
"Root address.";
}
choice lsp-key-type {
description
"LSP ID based or source-group based .";
case lsp-id-based {
leaf lsp-id {
type uint16;
description
"ID to identify the LSP.";
}
}
case source-group-based {
leaf source-address {
type inet:ip-address;
description
"LSP source address.";
}
leaf group-address {
type inet:ip-address;
description
"Multicast group address.";
}
} // case source-group-based
}
} // mldp-fec-event
grouping mldp-binding-label-state-attributes {
description
"mLDP label binding attributes.";
leaf multipoint-type {
type multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
list peer {
key "direction peer advertisement-type";
description
"List of advertised and received peers.";
leaf direction {
type ldp:downstream-upstream;
Raza, et al. Expires May 16, 2017 [Page 26]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description
"Downstream or upstream.";
}
leaf peer {
type leafref {
path
"../../../../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id";
}
description
"LDP peer from which this binding is received,
or to which this binding is advertised.";
}
leaf advertisement-type {
type ldp:advertised-received;
description
"Advertised or received.";
}
leaf label {
type mpls:mpls-label;
description
"Advertised (outbound) or received (inbound) label.";
}
leaf mbb-role {
when "../direction = 'upstream'" {
description
"For upstream.";
}
type enumeration {
enum none {
description "MBB is not enabled.";
}
enum active {
description "This LSP is active.";
}
enum inactive {
description "This LSP is inactive.";
}
}
description
"The MBB status of this LSP.";
}
leaf mofrr-role {
when "../direction = 'upstream'" {
description
"For upstream.";
}
type enumeration {
enum none {
Raza, et al. Expires May 16, 2017 [Page 27]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description "MOFRR is not enabled.";
}
enum primary {
description "This LSP is primary.";
}
enum backup {
description "This LSP is backup.";
}
}
description
"The MOFRR status of this LSP.";
}
} // peer
} // mldp-binding-label-state-attributes
/*
* Configuration data nodes
*/
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability" {
description "Augmentation for MLDP global capability.";
container mldp {
description
"Multipoint capabilities.";
uses mldp-capabilities;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability" {
description "Augmentation for MLDP peer capability.";
container mldp {
if-feature mldp;
description
"mLDP capabilities.";
uses mldp-capabilities;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/"
+ "ldp:interfaces/ldp:interface/ldp:address-family/"
+ "ldp:config" {
description
"Augmentation for MLDP nexthop forwarding interface.";
leaf mldp-disable {
if-feature mldp;
Raza, et al. Expires May 16, 2017 [Page 28]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
type boolean;
description
"Disable mLDP forwarding on the interface.";
}
}
/*
* Operational state data nodes
*/
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability" {
description "Augmentation for MLDP global capability.";
container mldp {
description
"Multipoint capabilities.";
uses mldp-capabilities;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability" {
description "Augmentation for MLDP peer capability.";
container mldp {
if-feature mldp;
description
"mLDP capabilities.";
uses mldp-capabilities;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/"
+ "ldp:received-peer-state/ldp:capability" {
description
"Augmentation for MLDP received peer state capability.";
container mldp {
if-feature mldp;
description
"Multipoint capabilities.";
container p2mp {
description
"Configure point-to-multipoint capability.";
leaf enable {
type boolean;
description
"Enable point-to-multipoint.";
}
Raza, et al. Expires May 16, 2017 [Page 29]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
}
container mp2mp {
description
"Configure multipoint-to-multipoint capability.";
leaf enable {
type boolean;
description
"Enable multipoint-to-multipoint.";
}
}
container make-before-break {
description
"Configure make-before-break capability.";
leaf enable {
type boolean;
description
"Enable make-before-break.";
}
}
container hub-and-spoke {
description
"Configure hub-and-spoke-multipoint capability.";
reference
"RFC7140: LDP Extensions for Hub and Spoke Multipoint
Label Switched Path";
leaf enable {
type boolean;
description
"Enable hub-and-spoke-multipoint.";
}
}
container node-protection {
description
"Configure node-protection capability.";
reference
"RFC7715: mLDP Node Protection.";
leaf plr {
type boolean;
description
"Point of Local Repair capable for MP LSP node
protection.";
}
leaf merge-point {
type boolean;
description
"Merge Point capable for MP LSP node protection.";
} // merge-point
} // node-protection
Raza, et al. Expires May 16, 2017 [Page 30]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
} // mldp
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/"
+ "ldp:interfaces/ldp:interface/ldp:address-family/"
+ "ldp:state" {
description
"Augmentation for MLDP nexthop forwarding interface.";
leaf mldp-disable {
if-feature mldp;
type boolean;
description
"Disable mLDP forwarding on the interface.";
}
}
/*
* Global augmentation
*/
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global" {
description "MLDP global augmentation.";
container mldp {
if-feature mldp;
description
"mLDP attributes at per instance level. Defining
attributes here does not enable any MP capabilities.
MP capabilities need to be explicitly enabled under
container capability.";
container config {
description
"Configuration data.";
leaf enable {
type boolean;
description
"Enable mLDP.";
}
}
container state {
config false;
description
"Operational state data.";
leaf enable {
type boolean;
Raza, et al. Expires May 16, 2017 [Page 31]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description
"Enable mLDP.";
}
}
list address-family {
key "afi";
description
"Per-af params.";
leaf afi {
type ldp:ldp-address-family;
description
"Address family type value.";
}
container config {
description
"Configuration data.";
container multicast-only-frr {
if-feature mldp-mofrr;
description
"Multicast only FRR (MoFRR) policy.";
leaf prefix-list {
type ldp:prefix-list-ref;
description
"Enables MoFRR for the specified access list.";
}
} // multicast-only-frr
container recursive-fec {
description
"Recursive FEC policy.";
leaf prefix-list {
type ldp:prefix-list-ref;
description
"Enables recursive FEC for the specified access
list.";
}
} // recursive-for
}
container state {
config false;
description
"Operational state data.";
container multicast-only-frr {
if-feature mldp-mofrr;
description
"Multicast only FRR (MoFRR) policy.";
Raza, et al. Expires May 16, 2017 [Page 32]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
leaf prefix-list {
type ldp:prefix-list-ref;
description
"Enables MoFRR for the specified access list.";
}
} // multicast-only-frr
container recursive-fec {
description
"Recursive FEC policy.";
leaf prefix-list {
type ldp:prefix-list-ref;
description
"Enables recursive FEC for the specified access
list.";
}
} // recursive-fec
container ipv4 {
when "../../afi = 'ipv4'" {
description
"Only for IPv4.";
}
description
"IPv4 state information.";
container roots {
description
"IPv4 multicast LSP roots.";
list root {
key "root-address";
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv4-address;
description
"Root address.";
}
leaf is-self {
type boolean;
description
"This is the root.";
}
list reachability {
key "address interface";
description
"A next hop for reachability to root,
Raza, et al. Expires May 16, 2017 [Page 33]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
as a RIB view.";
leaf address {
type inet:ipv4-address;
description
"The next hop address to reach root.";
}
leaf interface {
type ldp:mpls-interface-ref;
description
"Interface connecting to next-hop.";
}
leaf peer {
type leafref {
path
"../../../../../../../../../ldp:peers/"
+ "ldp:peer/ldp:lsr-id";
}
description
"LDP peer from which this next hop can be
reached.";
}
}
} // list root
} // roots
container bindings {
description
"mLDP FEC to label bindings.";
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.";
list fec-label {
key
"root-address lsp-id "
+ "recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv4-address;
description
"Root address.";
}
leaf lsp-id {
Raza, et al. Expires May 16, 2017 [Page 34]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
type uint32;
description "ID to identify the LSP.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
} // opaque-type-lspid
container opaque-type-transit {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
list fec-label {
key
"root-address source-address group-address "
+ "rd recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv4-address;
description
"Root address.";
}
leaf source-address {
type inet:ip-address;
description
"Source address.";
Raza, et al. Expires May 16, 2017 [Page 35]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
}
leaf group-address {
type inet:ip-address-no-zone;
description
"Group address.";
}
leaf rd {
type route-distinguisher;
description
"Route Distinguisher.";
reference
"RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table
Context.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
} // opaque-type-transit
container opaque-type-bidir {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
list fec-label {
key
Raza, et al. Expires May 16, 2017 [Page 36]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
"root-address rp group-address "
+ "rd recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv4-address;
description
"Root address.";
}
leaf rp {
type inet:ip-address;
description
"RP address.";
}
leaf group-address {
type inet:ip-address-no-zone;
description
"Group address.";
}
leaf rd {
type route-distinguisher;
description
"Route Distinguisher.";
reference
"RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table
Context.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
Raza, et al. Expires May 16, 2017 [Page 37]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
} // opaque-type-bidir
} // bindings
} // ipv4
container ipv6 {
when "../../afi = 'ipv6'" {
description
"Only for IPv6.";
}
description
"IPv6 state information.";
container roots {
description
"IPv6 multicast LSP roots.";
list root {
key "root-address";
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
leaf is-self {
type boolean;
description
"This is the root.";
}
list reachability {
key "address interface";
description
"A next hop for reachability to root,
as a RIB view.";
leaf address {
type inet:ipv6-address;
description
"The next hop address to reach root.";
}
leaf interface {
type ldp:mpls-interface-ref;
description
"Interface connecting to next-hop.";
}
leaf peer {
type leafref {
Raza, et al. Expires May 16, 2017 [Page 38]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
path
"../../../../../../../../../ldp:peers/"
+ "ldp:peer/ldp:lsr-id";
}
description
"LDP peer from which this next hop can be
reached.";
}
}
} // list root
} // roots
container bindings {
description
"mLDP FEC to label bindings.";
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.";
list fec-label {
key
"root-address lsp-id "
+ "recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
leaf lsp-id {
type uint32;
description "ID to identify the LSP.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
Raza, et al. Expires May 16, 2017 [Page 39]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
} // opaque-type-lspid
container opaque-type-transit {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
list fec-label {
key
"root-address source-address group-address "
+ "rd recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
leaf source-address {
type inet:ip-address;
description
"Source address.";
}
leaf group-address {
type inet:ip-address-no-zone;
description
"Group address.";
}
leaf rd {
type route-distinguisher;
description
"Route Distinguisher.";
reference
"RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual
Raza, et al. Expires May 16, 2017 [Page 40]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
Routing and Forwarding (VRF) Table
Context.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
} // opaque-type-transit
container opaque-type-bidir {
description
"The type of opaque value element is
the generic LSP identifier";
reference
"RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
list fec-label {
key
"root-address rp group-address "
+ "rd recur-root-address recur-rd";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv6-address;
description
"Root address.";
}
leaf rp {
type inet:ip-address;
description
"RP address.";
Raza, et al. Expires May 16, 2017 [Page 41]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
}
leaf group-address {
type inet:ip-address-no-zone;
description
"Group address.";
}
leaf rd {
type route-distinguisher;
description
"Route Distinguisher.";
reference
"RFC7246: Multipoint Label Distribution
Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table
Context.";
}
leaf recur-root-address {
type inet:ip-address;
description
"Recursive root address.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
leaf recur-rd {
type route-distinguisher;
description
"Route Distinguisher in the VPN-Recursive
Opaque Value.";
reference
"RFC6512: Using Multipoint LDP When the
Backbone Has No Route to the Root";
}
uses mldp-binding-label-state-attributes;
} // fec-label
} // opaque-type-bidir
} // bindings
} // ipv6
} // state
container configured-leaf-lsps {
description
"Configured multicast LSPs.";
container p2mp {
description
"Configured point-to-multipoint LSPs.";
uses mldp-configured-lsp-roots;
Raza, et al. Expires May 16, 2017 [Page 42]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
}
container mp2mp {
description
"Configured multipoint-to-multipoint LSPs.";
uses mldp-configured-lsp-roots;
}
} // configured-leaf-lsps
} // list address-family
} // mldp
}
/*
* Notifications
*/
notification mpls-mldp-fec-event {
description
"Notification event for a change of FEC status.";
leaf event-type {
type ldp:oper-status-event-type;
description "Event type.";
}
uses mldp-fec-event;
}
}
<CODE ENDS>
Figure 10
10. Security Considerations
This mLDP model shares the same security considerations as captured
in LDP Yang model [I-D.ietf-mpls-ldp-mldp-yang].
11. IANA Considerations
This document does not extend mLDP protocol specifiction and hence
there are no IANA considerations.
Note to the RFC Editor: Please remove IANA section before the
publication.
Raza, et al. Expires May 16, 2017 [Page 43]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
12. Acknowledgments
The authors would like to acknowledge Ladislav Lhotka for his useful
comments as the YANG Doctor.
13. References
13.1. Normative References
[I-D.ietf-mpls-ldp-mldp-yang]
Raza, K., Asati, R., Liu, X., Esale, S., Chen, X., and H.
Shah, "YANG Data Model for MPLS LDP and mLDP", draft-ietf-
mpls-ldp-mldp-yang-00 (work in progress), August 2016.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed.,
"LDP Specification", RFC 5036, DOI 10.17487/RFC5036,
October 2007, <http://www.rfc-editor.org/info/rfc5036>.
[RFC5561] Thomas, B., Raza, K., Aggarwal, S., Aggarwal, R., and JL.
Le Roux, "LDP Capabilities", RFC 5561,
DOI 10.17487/RFC5561, July 2009,
<http://www.rfc-editor.org/info/rfc5561>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010,
<http://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,
<http://www.rfc-editor.org/info/rfc6241>.
[RFC6388] Wijnands, IJ., Ed., Minei, I., Ed., Kompella, K., and B.
Thomas, "Label Distribution Protocol Extensions for Point-
to-Multipoint and Multipoint-to-Multipoint Label Switched
Paths", RFC 6388, DOI 10.17487/RFC6388, November 2011,
<http://www.rfc-editor.org/info/rfc6388>.
[RFC6389] Aggarwal, R. and JL. Le Roux, "MPLS Upstream Label
Assignment for LDP", RFC 6389, DOI 10.17487/RFC6389,
November 2011, <http://www.rfc-editor.org/info/rfc6389>.
Raza, et al. Expires May 16, 2017 [Page 44]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
[RFC6512] Wijnands, IJ., Rosen, E., Napierala, M., and N. Leymann,
"Using Multipoint LDP When the Backbone Has No Route to
the Root", RFC 6512, DOI 10.17487/RFC6512, February 2012,
<http://www.rfc-editor.org/info/rfc6512>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012,
<http://www.rfc-editor.org/info/rfc6536>.
[RFC6826] Wijnands, IJ., Ed., Eckert, T., Leymann, N., and M.
Napierala, "Multipoint LDP In-Band Signaling for Point-to-
Multipoint and Multipoint-to-Multipoint Label Switched
Paths", RFC 6826, DOI 10.17487/RFC6826, January 2013,
<http://www.rfc-editor.org/info/rfc6826>.
[RFC7060] Napierala, M., Rosen, E., and IJ. Wijnands, "Using LDP
Multipoint Extensions on Targeted LDP Sessions", RFC 7060,
DOI 10.17487/RFC7060, November 2013,
<http://www.rfc-editor.org/info/rfc7060>.
[RFC7140] Jin, L., Jounay, F., Wijnands, IJ., and N. Leymann, "LDP
Extensions for Hub and Spoke Multipoint Label Switched
Path", RFC 7140, DOI 10.17487/RFC7140, March 2014,
<http://www.rfc-editor.org/info/rfc7140>.
[RFC7246] Wijnands, IJ., Ed., Hitchen, P., Leymann, N., Henderickx,
W., Gulko, A., and J. Tantsura, "Multipoint Label
Distribution Protocol In-Band Signaling in a Virtual
Routing and Forwarding (VRF) Table Context", RFC 7246,
DOI 10.17487/RFC7246, June 2014,
<http://www.rfc-editor.org/info/rfc7246>.
[RFC7438] Wijnands, IJ., Ed., Rosen, E., Gulko, A., Joorde, U., and
J. Tantsura, "Multipoint LDP (mLDP) In-Band Signaling with
Wildcards", RFC 7438, DOI 10.17487/RFC7438, January 2015,
<http://www.rfc-editor.org/info/rfc7438>.
[RFC7715] Wijnands, IJ., Ed., Raza, K., Atlas, A., Tantsura, J., and
Q. Zhao, "Multipoint LDP (mLDP) Node Protection",
RFC 7715, DOI 10.17487/RFC7715, January 2016,
<http://www.rfc-editor.org/info/rfc7715>.
13.2. Informative References
Raza, et al. Expires May 16, 2017 [Page 45]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
[I-D.ietf-rtgwg-policy-model]
Shaikh, A., Shakir, R., D'Souza, K., and C. Chase,
"Routing Policy Configuration Model for Service Provider
Networks", draft-ietf-rtgwg-policy-model-01 (work in
progress), April 2016.
[I-D.iwijnand-mpls-mldp-multi-topology]
Wijnands, I. and K. Raza, "mLDP Extensions for Multi
Topology Routing", draft-iwijnand-mpls-mldp-multi-
topology-03 (work in progress), June 2013.
[I-D.openconfig-netmod-opstate]
Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling
of Operational State Data in YANG", draft-openconfig-
netmod-opstate-01 (work in progress), July 2015.
Appendix A. Additional Contributors
Danial Johari
Cisco Systems Inc.
Email: dajohari@cisco.com
Matthew Bocci
Alcatel-Lucent
matthew.bocci@alcatel-lucent.com
Authors' Addresses
Kamran Raza
Cisco Systems, Inc.
Email: skraza@cisco.com
Rajiv Asati
Cisco Systems, Inc.
Email: rajiva@cisco.com
Sowmya Krishnaswamy
Cisco Systems, Inc.
Email: sowkrish@cisco.com
Xufeng Liu
Kuatro Technologies
Email: xliu@kuatrotech.com
Raza, et al. Expires May 16, 2017 [Page 46]
Internet-Draft YANG Data Model for MPLS mLDP November 2016
Jeff Tantsura
Email: jefftant@gmail.com
Santosh Esale
Juniper Networks
Email: sesale@juniper.net
Xia Chen
Huawei Technologies
Email: jescia.chenxia@huawei.com
Loa Andersson
Huawei Technologies
Email: loa@pi.nu
Himanshu Shah
Ciena Corporation
Email: hshah@ciena.com
Raza, et al. Expires May 16, 2017 [Page 47]