draft-ietf-mpls-mldp-yang-02.txt   draft-ietf-mpls-mldp-yang-03.txt 
MPLS Working Group K. Raza MPLS Working Group K. Raza
Internet-Draft S. Krishnaswamy Internet-Draft S. Krishnaswamy
Intended status: Standards Track Cisco Systems, Inc. Intended status: Standards Track Cisco Systems, Inc.
Expires: March 18, 2018 Expires: May 15, 2018
X. Liu X. Liu
Jabil Jabil
S. Esale S. Esale
Juniper Networks Juniper Networks
X. Chen L. Andersson
Huawei Technologies Huawei Technologies
Jeff Tantsura Jeff Tantsura
Individual
September 14, 2017 November 11, 2017
YANG Data Model for MPLS mLDP YANG Data Model for MPLS mLDP
draft-ietf-mpls-mldp-yang-02 draft-ietf-mpls-mldp-yang-03
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.
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 http://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 March 18, 2018. This Internet-Draft will expire on May 15, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 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
(http://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 . . . . . . . . . . . . . . . . . . . . 3
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 . . . . . . . . . . . . . . . . . . 9 4.2. mldp global container . . . . . . . . . . . . . . . . . . 8
4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9 4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9
4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 10 4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 9
4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 10 4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 9
4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 11 4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 10
5. Operational State . . . . . . . . . . . . . . . . . . . . . . 13 5. Operational State . . . . . . . . . . . . . . . . . . . . . . 12
5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 17 5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 16
5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 18 5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 16
5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 19 5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 17
5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 22 5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 20
6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 22 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 21
7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 23 8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 22
9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23 9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23
9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23 9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 33 9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 32
10. Security Considerations . . . . . . . . . . . . . . . . . . . 54 10. Security Considerations . . . . . . . . . . . . . . . . . . . 55
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 55
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 54 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 55
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 13. Normative References . . . . . . . . . . . . . . . . . . . . 55
13.1. Normative References . . . . . . . . . . . . . . . . . . 54
13.2. Informative References . . . . . . . . . . . . . . . . . 56
Appendix A. Additional Contributors . . . . . . . . . . . . . . 56 Appendix A. Additional Contributors . . . . . . . . . . . . . . 56
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57
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 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 opertor will need to use base LDP module to configure
and manage control plane for mLDP. For example, an operator would and manage control plane for mLDP. For example, an operator would
enable LDP discovery on MPLS interface to establish LDP/mLDP peering enable LDP discovery on MPLS interface to establish LDP/mLDP peering
on which mLDP bindings could be exchanged. Similarly, an operator on which mLDP bindings could be exchanged. Similarly, an operator
skipping to change at page 3, line 37 skipping to change at page 3, line 35
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
Datastore Architecture (NMDA) [I-D.ietf-netmod-revised-datastores].
The operational state data is combined with the associated
configuration data in the same hierarchy
[I-D.ietf-netmod-rfc6087bis]. When protocol states are retrieved
from the NMDA operational state datastore, the returned states cover
all "config true" (rw) and "config false" (ro) nodes defined in the
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 LDP model, the configuration and state items are divided into
following two broad categories: following two broad categories:
o Base o Base
skipping to change at page 4, line 15 skipping to change at page 4, line 23
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 a 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 catogories 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 augmenting LDP base model ietf-mpls-ldp as defined under ietf- which augments the LDP base model as defined under ietf-mpls-ldp
mpls-ldp [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, 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 "extended" model.
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 [RFC2119].
skipping to change at page 5, line 5 skipping to change at page 5, line 5
This document defines a new module named "ietf-mpls-mldp" for mLDP This document defines a new module named "ietf-mpls-mldp" for mLDP
YANG base data model that augments /rt:routing/rt:control-plane- 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 "ietf-mpls-mldp-extended" module that models
the extended mLDP features under YANG. the extended mLDP features under YANG.
Following diagram depicts high level mLDP yang tree organization and Following diagram depicts high level mLDP yang tree organization and
hierarchy with respect to LDP: 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_container +-- rw some_ldp_container
| +-- rw config | +-- rw mldp
| | +-- rw .... // ldp base | +-- rw ... // mldp base
| | +-- rw ldp-ext:.... // ldp extended | | +-- rw ...
| | ... | | +-- ro ...
| | +-- rw mldp | | +--
| | +-- rw ... // mldp base | +-- rw mldp-ext:... // mldp extended
| | +-- rw mldp-ext:.... // mldp extended | | +-- rw ...
| | ... | | +-- ro ...
| +-- ro state | | +--
| | +-- ro .... // ldp base +-- ro some_ldp_container
| | +-- ro ldp-ext:.... // ldp extended +-- ro mldp
| | ... +-- ro ... // mldp base
| | +-- ro mldp | +-- ro ...
| | +-- ro ... // mldp base | +--
| | +-- ro mldp-ext:.... // mldp extended +-- ro mldp-ext:... // mldp extended
| | ... +-- ro ...
+-- rw ... +--
|
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 Following are the main mLDP areas and features that are within the
scope of this model: scope of this model:
o Base: o Base:
skipping to change at page 10, line 31 skipping to change at page 9, line 40
support will also be provided. 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 nexthop
(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 interfaces available for
the downstream selection. 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. Configuration Tree 4.4. Configuration Tree
4.4.1. Base 4.4.1. Base
Following is a simplified graphical representation of the data model Following is a simplified graphical representation of the data model
for mLDP base configuration for mLDP base configuration
module: ietf-mpls-mldp module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/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 config +--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 p2mp +--rw fec-label* [root-address lsp-id]
| +--rw roots +--rw root-address inet:ipv4-address
| +--rw root* [root-address] +--rw lsp-id uint32
| +--rw root-address inet:ipv4-address +--rw multipoint-type? multipoint-type
| +--rw (lsp-key-type)?
| +--:(lsp-id)
| +--rw opaque-type-lspid
| +--rw lsp* [lsp-id]
| +--rw lsp-id uint16
+--rw mp2mp
+--rw roots
+--rw root* [root-address]
+--rw root-address inet:ipv4-address
+--rw (lsp-key-type)?
+--:(lsp-id)
+--rw opaque-type-lspid
+--rw lsp* [lsp-id]
+--rw lsp-id uint16
Figure 3 Figure 3
4.4.2. Extended 4.4.2. Extended
Following is a simplified graphical representation of the data model Following is a simplified graphical representation of the data model
for mLDP extended configuration for mLDP extended configuration
module: ietf-mpls-mldp-extended module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability/mldp:mldp: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability:
+--rw hub-and-spoke {capability-mldp-hsmp}? +--rw mldp
| +--rw enable? boolean +--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}?
+--rw node-protection {capability-mldp-node-protection}? | +--rw mldp-ext:enable? boolean
+--rw plr? boolean +--rw mldp-ext:node-protection {capability-mldp-node-protection}?
+--rw merge-point +--rw mldp-ext:plr? boolean
+--rw enable? boolean +--rw mldp-ext:merge-point
+--rw targeted-session-teardown-delay? uint16 +--rw mldp-ext:enable? boolean
+--rw mldp-ext:targeted-session-teardown-delay? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability:
+--rw mldp {per-peer-capability}?
+--rw p2mp
| +--rw enable? boolean
+--rw mp2mp
| +--rw enable? boolean
+--rw make-before-break
+--rw enable? boolean
+--rw switchover-delay? uint16
+--rw timeout? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4:
+--rw config
+--rw multicast-only-frr {mldp-mofrr}?
| +--rw prefix-list? ldp-ext:prefix-list-ref
+--rw recursive-fec
+--rw prefix-list? ldp-ext:prefix-list-ref
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:configured-leaf-lsps/mldp:p2mp/mldp:roots/mldp:root/mldp:lsp-key-type:
+--:(source-group)
+--rw opaque-type-transit
+--rw lsp* [source-address group-address]
+--rw source-address inet:ipv4-address
+--rw group-address inet:ipv4-address-no-zone
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:configured-leaf-lsps/mldp:mp2mp/mldp:roots/mldp:root/mldp:lsp-key-type: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--:(source-group) +--rw mldp
+--rw opaque-type-transit +--rw enable? boolean
+--rw lsp* [source-address group-address] +--rw address-families
+--rw source-address inet:ipv4-address +--rw ipv4
+--rw group-address inet:ipv4-address-no-zone | +--rw configured-leaf-lsps
| | +--rw mldp-ext:opaque-type-transit
| | | +--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:source-address inet:ip-address
| | | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | | +--rw mldp-ext:rd route-distinguisher
| | | +--rw mldp-ext:recur-root-address inet:ip-address
| | | +--rw mldp-ext:recur-rd route-distinguisher
| | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| | +--rw mldp-ext:opaque-type-bidir
| | +--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:rp inet:ip-address
| | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | +--rw mldp-ext:rd route-distinguisher
| | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:multicast-only-frr {mldp-mofrr}?
| | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
| +--rw mldp-ext:recursive-fec
| +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
+--rw mldp-ext:ipv6
+--rw mldp-ext:configured-leaf-lsps
| +--rw mldp-ext:opaque-type-lspid
| | +--rw mldp-ext:fec-label* [root-address lsp-id]
| | +--rw mldp-ext:root-address inet:ipv6-address
| | +--rw mldp-ext:lsp-id uint32
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| | +--rw mldp-ext:recursive-fec* [recur-root-address recur-rd]
| | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:opaque-type-transit
| | +--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:source-address inet:ip-address
| | +--rw mldp-ext:group-address inet:ip-address-no-zone
| | +--rw mldp-ext:rd route-distinguisher
| | +--rw mldp-ext:recur-root-address inet:ip-address
| | +--rw mldp-ext:recur-rd route-distinguisher
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type
| +--rw mldp-ext:opaque-type-bidir
| +--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:rp inet:ip-address
| +--rw mldp-ext:group-address inet:ip-address-no-zone
| +--rw mldp-ext:rd route-distinguisher
| +--rw mldp-ext:recur-root-address inet:ip-address
| +--rw mldp-ext:recur-rd route-distinguisher
| +--rw mldp-ext:multipoint-type? mldp:multipoint-type
+--rw mldp-ext:multicast-only-frr {mldp-mofrr}?
| +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
+--rw mldp-ext:recursive-fec
+--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref
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/ldp-ext:config: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability:
+--rw mldp-disable? boolean +--rw mldp {per-peer-capability}?
+--rw p2mp
| +--rw enable? boolean
+--rw mp2mp
| +--rw enable? boolean
+--rw make-before-break
+--rw enable? boolean
+--rw switchover-delay? uint16
+--rw timeout? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families: 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 ipv6 +--rw mldp-disable? boolean
+--rw config
+--rw multicast-only-frr {mldp-mofrr}?
| +--rw prefix-list? ldp-ext:prefix-list-ref
+--rw recursive-fec
+--rw prefix-list? ldp-ext:prefix-list-ref
Figure 4 Figure 4
5. Operational State 5. Operational State
Operational state of mLDP can be queried and obtained from various Operational state of mLDP can be queried and obtained from various
read-only mdlp "state" containers that augment ldp state containers. read-only mdlp "state" containers that augment ldp 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]
5.1. Base 5.1. Base
Following is a simplified graphical representation of the data model Following is a simplified graphical representation of the data model
for mLDP base operational state: for mLDP base operational state:
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:
+--ro mldp
+--ro p2mp
| +--ro enable? boolean
+--ro mp2mp
| +--ro enable? boolean
+--ro make-before-break
+--ro enable? boolean
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--ro mldp +--rw mldp
+--ro p2mp +--rw enable? boolean
| +--ro enable? boolean +--rw address-families
+--ro mp2mp +--rw ipv4
| +--ro enable? boolean +--ro roots
+--ro make-before-break +--ro root* [root-address]
+--ro enable? boolean +--ro root-address inet:ipv4-address
+--ro switchover-delay? uint16 +--ro is-self? boolean
+--ro timeout? uint16 +--ro reachability* [address interface]
| +--ro address inet:ipv4-address
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability: | +--ro interface if:interface-ref
+--ro mldp | +--ro peer? -> ../../../../../../../../ldp:peers/peer/lsr-id
+--ro p2mp +--ro bindings
| +--ro enable? boolean +--ro opaque-type-lspid
+--ro mp2mp +--ro fec-label* [lsp-id]
| +--ro enable? boolean +--ro lsp-id uint32
+--ro make-before-break +--ro multipoint-type? multipoint-type
+--ro enable? boolean +--ro peer* [direction peer advertisement-type]
+--ro direction ldp:downstream-upstream
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: +--ro peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
+--rw mldp +--ro advertisement-type ldp:advertised-received
+--ro state +--ro label? rt-types:mpls-label
| +--ro enable? boolean +--ro mbb-role? enumeration
+--rw address-families +--ro mldp-ext:mofrr-role? mofrr-role
+--rw ipv4
+--ro state
+--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* [lsp-id]
+--ro lsp-id uint32
+--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? rt-types:mpls-label
+--ro mbb-role? enumeration
Figure 5 Figure 5
5.2. Extended 5.2. Extended
Following is a simplified graphical representation of the data model Following is a simplified graphical representation of the data model
for mLDP extended operational state: for mLDP extended operational state:
module: ietf-mpls-mldp-extended module: ietf-mpls-mldp
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability/mldp:mldp:
+--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
+--ro p2mp
| +--ro enable? boolean
+--ro mp2mp
| +--ro enable? boolean
+--ro make-before-break
+--ro enable? boolean
+--ro switchover-delay? uint16
+--ro timeout? uint16
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state:
+--ro multicast-only-frr {mldp-mofrr}?
| +--ro prefix-list? ldp-ext:prefix-list-ref
+--ro recursive-fec
+--ro prefix-list? ldp-ext:prefix-list-ref
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/mldp:opaque-type-lspid/mldp:fec-label/mldp:peer:
+--ro mofrr-role? mofrr-role
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/ldp-ext:state:
+--ro mldp-disable? boolean
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability/mldp:mldp:
+--ro hub-and-spoke
| +--ro enable? boolean
+--ro node-protection
+--ro plr? boolean
+--ro merge-point? boolean
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability:
+--ro opaque-type-transit
| +--ro fec-label* [source-address group-address rd recur-root-address recur-rd]
| +--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? mldp:multipoint-type
| +--ro peer* [direction peer advertisement-type]
| +--ro direction ldp:downstream-upstream
| +--ro peer leafref
| +--ro advertisement-type ldp:advertised-received
| +--ro label? rt-types:mpls-label
| +--ro mbb-role? enumeration
| +--ro mofrr-role? mofrr-role
+--ro opaque-type-bidir
+--ro fec-label* [rp group-address rd recur-root-address recur-rd]
+--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? mldp:multipoint-type
+--ro peer* [direction peer advertisement-type]
+--ro direction ldp:downstream-upstream
+--ro peer leafref
+--ro advertisement-type ldp:advertised-received
+--ro label? rt-types:mpls-label
+--ro mbb-role? enumeration
+--ro mofrr-role? mofrr-role
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/mldp:opaque-type-lspid/mldp:fec-label: +--ro mldp
+--ro recursive-fec* [recur-root-address recur-rd] +--ro mldp-ext:hub-and-spoke
+--ro recur-root-address inet:ip-address | +--ro mldp-ext:enable? boolean
+--ro recur-rd route-distinguisher +--ro mldp-ext:node-protection
+--ro multipoint-type? mldp:multipoint-type +--ro mldp-ext:plr? boolean
+--ro peer* [direction peer advertisement-type] +--ro mldp-ext:merge-point? boolean
+--ro direction ldp:downstream-upstream
+--ro peer leafref
+--ro advertisement-type ldp:advertised-received
+--ro label? rt-types:mpls-label
+--ro mbb-role? enumeration
+--ro mofrr-role? mofrr-role
augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families: augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global:
+--rw ipv6 +--rw mldp
+--ro state +--rw enable? boolean
+--ro roots +--rw address-families
+--ro root* [root-address] +--rw ipv4
+--ro root-address inet:ipv6-address | +--ro roots
+--ro is-self? boolean | +--ro root* [root-address]
+--ro reachability* [address interface] | +--ro root-address inet:ipv4-address
| +--ro address inet:ipv6-address | +--ro bindings
| +--ro interface ldp:mpls-interface-ref | +--ro opaque-type-lspid
| +--ro peer? leafref | | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd]
+--ro bindings | | +--ro mldp-ext:recur-root-address inet:ip-address
+--ro opaque-type-lspid | | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro fec-label* [lsp-id] | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro lsp-id uint32 | | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro multipoint-type? mldp:multipoint-type | | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro peer* [direction peer advertisement-type] | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| | +--ro direction ldp:downstream-upstream | | +--ro mldp-ext:advertisement-type ldp:advertised-received
| | +--ro peer leafref | | +--ro mldp-ext:label? rt-types:mpls-label
| | +--ro advertisement-type ldp:advertised-received | | +--ro mldp-ext:mbb-role? enumeration
| | +--ro label? rt-types:mpls-label | | +--ro mldp-ext:mofrr-role? mofrr-role
| | +--ro mbb-role? enumeration | +--ro mldp-ext:opaque-type-transit
| | +--ro mofrr-role? mofrr-role | | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd]
| +--ro recursive-fec* [recur-root-address recur-rd] | | +--ro mldp-ext:source-address inet:ip-address
| +--ro recur-root-address inet:ip-address | | +--ro mldp-ext:group-address inet:ip-address-no-zone
| +--ro recur-rd route-distinguisher | | +--ro mldp-ext:rd route-distinguisher
| +--ro multipoint-type? mldp:multipoint-type | | +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro peer* [direction peer advertisement-type] | | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro direction ldp:downstream-upstream | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro peer leafref | | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro advertisement-type ldp:advertised-received | | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro label? rt-types:mpls-label | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| +--ro mbb-role? enumeration | | +--ro mldp-ext:advertisement-type ldp:advertised-received
| +--ro mofrr-role? mofrr-role | | +--ro mldp-ext:label? rt-types:mpls-label
+--ro opaque-type-transit | | +--ro mldp-ext:mbb-role? enumeration
| +--ro fec-label* [source-address group-address rd recur-root-address recur-rd] | | +--ro mldp-ext:mofrr-role? mofrr-role
| +--ro source-address inet:ip-address | +--ro mldp-ext:opaque-type-bidir
| +--ro group-address inet:ip-address-no-zone | +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd]
| +--ro rd route-distinguisher | +--ro mldp-ext:rp inet:ip-address
| +--ro recur-root-address inet:ip-address | +--ro mldp-ext:group-address inet:ip-address-no-zone
| +--ro recur-rd route-distinguisher | +--ro mldp-ext:rd route-distinguisher
| +--ro multipoint-type? mldp:multipoint-type | +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro peer* [direction peer advertisement-type] | +--ro mldp-ext:recur-rd route-distinguisher
| +--ro direction ldp:downstream-upstream | +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro peer leafref | +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--ro advertisement-type ldp:advertised-received | +--ro mldp-ext:direction ldp:downstream-upstream
| +--ro label? rt-types:mpls-label | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id
| +--ro mbb-role? enumeration | +--ro mldp-ext:advertisement-type ldp:advertised-received
| +--ro mofrr-role? mofrr-role | +--ro mldp-ext:label? rt-types:mpls-label
+--ro opaque-type-bidir | +--ro mldp-ext:mbb-role? enumeration
+--ro fec-label* [rp group-address rd recur-root-address recur-rd] | +--ro mldp-ext:mofrr-role? mofrr-role
+--ro rp inet:ip-address +--rw mldp-ext:ipv6
+--ro group-address inet:ip-address-no-zone +--ro mldp-ext:roots
+--ro rd route-distinguisher +--ro mldp-ext:root* [root-address]
+--ro recur-root-address inet:ip-address +--ro mldp-ext:root-address inet:ipv6-address
+--ro recur-rd route-distinguisher +--ro mldp-ext:is-self? boolean
+--ro multipoint-type? mldp:multipoint-type +--ro mldp-ext:reachability* [address interface]
+--ro peer* [direction peer advertisement-type] | +--ro mldp-ext:address inet:ipv6-address
+--ro direction ldp:downstream-upstream | +--ro mldp-ext:interface if:interface-ref
+--ro peer leafref | +--ro mldp-ext:peer? -> ../../../../../../../../ldp:peers/peer/lsr-id
+--ro advertisement-type ldp:advertised-received +--ro mldp-ext:bindings
+--ro label? rt-types:mpls-label +--ro mldp-ext:opaque-type-lspid
+--ro mbb-role? enumeration | +--ro mldp-ext:fec-label* [lsp-id]
+--ro mofrr-role? mofrr-role | +--ro mldp-ext:lsp-id uint32
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type]
| | +--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:advertisement-type ldp:advertised-received
| | +--ro mldp-ext:label? rt-types:mpls-label
| | +--ro mldp-ext:mbb-role? enumeration
| | +--ro mldp-ext:mofrr-role? mofrr-role
| +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd]
| +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro mldp-ext:recur-rd route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--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:advertisement-type ldp:advertised-received
| +--ro mldp-ext:label? rt-types:mpls-label
| +--ro mldp-ext:mbb-role? enumeration
| +--ro mldp-ext:mofrr-role? mofrr-role
+--ro mldp-ext:opaque-type-transit
| +--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:group-address inet:ip-address-no-zone
| +--ro mldp-ext:rd route-distinguisher
| +--ro mldp-ext:recur-root-address inet:ip-address
| +--ro mldp-ext:recur-rd route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type
| +--ro mldp-ext:peer* [direction peer advertisement-type]
| +--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:advertisement-type ldp:advertised-received
| +--ro mldp-ext:label? rt-types:mpls-label
| +--ro mldp-ext:mbb-role? enumeration
| +--ro mldp-ext:mofrr-role? mofrr-role
+--ro mldp-ext:opaque-type-bidir
+--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd]
+--ro mldp-ext:rp inet:ip-address
+--ro mldp-ext:group-address inet:ip-address-no-zone
+--ro mldp-ext:rd route-distinguisher
+--ro mldp-ext:recur-root-address inet:ip-address
+--ro mldp-ext:recur-rd route-distinguisher
+--ro mldp-ext:multipoint-type? mldp:multipoint-type
+--ro mldp-ext:peer* [direction peer advertisement-type]
+--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:advertisement-type ldp:advertised-received
+--ro mldp-ext:label? rt-types:mpls-label
+--ro mldp-ext:mbb-role? enumeration
+--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 Following are main areas for which mLDP operational derived state is
defined: defined:
o Root o Root
skipping to change at page 18, line 28 skipping to change at page 17, line 13
LSP setup. Similarly, when protection mechanisms like MBB or MoFRR LSP setup. Similarly, when protection mechanisms like MBB or MoFRR
are in place, the path designation as active/standby or primary/ 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 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. root can be shared amongst multiple P2MP and/or MP2MP LSPs.
Moreover, an LSP can be signaled to more than one root for RNR Moreover, an LSP can be signaled to more than one root for 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 1.1.1.1: root 203.0.113.1:
path1: path1:
RIB: GigEthernet 1/0, 12.1.0.2; RIB: GigEthernet 1/0, 198.51.100.1;
LDP: peer 192.168.0.1:0 LDP: peer 192.0.2.1:0
path2: path2:
RIB: GigEthernet 2/0, 12.2.0.2; RIB: GigEthernet 2/0, 198.51.100.16;
LDP: peer 192.168.0.3:0 LDP: peer 192.0.2.2:0
root 2.2.2.2: root 203.0.113.2:
path1: path1:
RIB: 3.3.3.3; (NOTE: This is a recursive path) RIB: 198.51.100.100; (NOTE: This is a recursive path)
LDP: peer 192.168.0.3:0 (NOTE: T-mLDP peer) LDP: peer 192.0.2.100:0 (NOTE: T-mLDP peer)
root 9.9.9.9: root . . . .
. . . .
Figure 7 Figure 7
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 9.9.9.9: 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 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
skipping to change at page 20, line 10 skipping to change at page 18, line 15
and MoFRR (primary or backup). and MoFRR (primary or backup).
Following captures a high level tree hierarchy for mLDP bindings Following captures a high level tree hierarchy for mLDP bindings
state: 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 roots +--ro roots
+--ro root* [root-address] +--ro root* [root-address]
+--ro .... +--ro ....
+--ro bindings +--ro bindings
+--ro opaque-type-xxx +--ro opaque-type-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? rt-types: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-type-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
skipping to change at page 21, line 17 skipping to change at page 19, line 25
opaque types as defined in [RFC6512] 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 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 2.2.2.2, S=192.168.1.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.168.0.1:0, label 16000 (local) peer 192.0.2.1:0, label 16000 (local)
downstream: downstream:
received: received:
peer 192.168.0.2:0, label 17000 (remote) peer 192.0.2.2:0, label 17000 (remote)
peer 192.168.0.3:0, label 18000 (remote) peer 192.0.2.3:0, label 18000 (remote)
Figure 10 Figure 10
The following diagram illustrates the FEC-label binding information The following diagram illustrates the FEC-label binding information
structure for a similar MP2MP LSP on a branch/transit LSR: 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): FEC (root 203.0.113.2, RP=198.51.100.2, G=224.1.1.1):
type: mp2mp type: mp2mp
upstream: upstream:
advertised: advertised:
peer 192.168.0.1:0, label 16000 (local) peer 192.0.2.1:0, label 16000 (local)
received: received:
peer 192.168.0.1:0, label 17000 (remote) peer 192.0.2.1:0, label 17000 (remote)
downstream: downstream:
advertised: advertised:
peer 192.168.0.2:0, label 16001 (local), MBB role=active peer 192.0.2.2:0, label 16001 (local), MBB role=active
peer 192.168.0.3:0, label 16002 (local), MBB role=standby peer 192.0.2.3:0, label 16002 (local), MBB role=standby
received: received:
peer 192.168.0.2:0, label 17001 (remote) peer 192.0.2.2:0, label 17001 (remote)
peer 192.168.0.3:0, label 18001 (remote) peer 192.0.2.3:0, label 18001 (remote)
Figure 11 Figure 11
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
skipping to change at page 22, line 23 skipping to change at page 21, line 5
6. Notifications 6. Notifications
mLDP notification module consists of notification related to changes mLDP notification module consists of notification related to changes
in the operational state of an mLDP FEC. in the operational state of an mLDP FEC.
6.1. Base 6.1. Base
Following is a simplified graphical representation of the base data Following is a simplified graphical representation of the base data
model for mLDP notifications: model for mLDP notifications:
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 tree-type? multipoint-type +--ro (opaque-type)?
+--ro root? inet:ip-address +--:(opaque-type-lspid)
+--ro (lsp-key-type)? +--ro opaque-type-lspid
+--:(lsp-id) +--ro root-address? inet:ip-address
+--ro lsp-id? uint16 +--ro lsp-id? uint32
+--ro multipoint-type? multipoint-type
+--ro mldp-ext:recursive-fec
+--ro mldp-ext:recur-root-address? inet:ip-address
+--ro mldp-ext:recur-rd? route-distinguisher
+--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 Following is a simplified graphical representation of the extended
data model for mLDP notifications: data model for mLDP notifications:
module: ietf-mpls-mldp module: ietf-mpls-mldp
notifications:
augment /mldp:mpls-mldp-fec-event/mldp:lsp-key-type: +---n mpls-mldp-fec-event
+--:(source-group-based) +--ro event-type? ldp:oper-status-event-type
+---- source-address? inet:ip-address +--ro (opaque-type)?
+---- group-address? inet:ip-address +--:(mldp-ext:opaque-type-transit)
| +--ro mldp-ext:opaque-type-transit
| +--ro mldp-ext:root-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:rd? route-distinguisher
| +--ro mldp-ext:recur-root-address? inet:ip-address
| +--ro mldp-ext:recur-rd? route-distinguisher
| +--ro mldp-ext:multipoint-type? mldp:multipoint-type
+--:(mldp-ext:opaque-type-bidir)
+--ro mldp-ext:opaque-type-bidir
+--ro mldp-ext:root-address? inet:ip-address
+--ro mldp-ext:rp? inet:ip-address
+--ro mldp-ext:group-address? inet:ip-address-no-zone
+--ro mldp-ext:rd? route-distinguisher
+--ro mldp-ext:recur-root-address? inet:ip-address
+--ro mldp-ext:recur-rd? route-distinguisher
+--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 Following is a list of open items that are to be discussed and
addressed in future revisions of this document: addressed in future revisions of this document:
o Align operational state modeling with other routing protocols and
[I-D.openconfig-netmod-opstate]
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 the "Configured Leaf LSPs" for various type of opaque-types
o Extend mLDP notifications for other types of opaque values as well o Extend mLDP notifications for other types of opaque values as well
o Make MP LSP configuration and state model consistent 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 Following is the actual YANG definition (module) for mLDP constructs
defined earlier in the document. defined earlier in the document.
9.1. Base 9.1. Base
<CODE BEGINS> file "ietf-mpls-mldp@2017-03-12.yang" <CODE BEGINS> file "ietf-mpls-mldp@2017-10-19.yang"
module ietf-mpls-mldp { module ietf-mpls-mldp {
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";
} }
import ietf-interfaces {
prefix "if";
}
import ietf-mpls-ldp {
prefix "ldp";
}
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
} }
import ietf-mpls-ldp {
prefix "ldp";
}
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/teas/>
WG List: <mailto:teas@ietf.org> WG List: <mailto:teas@ietf.org>
WG Chair: Loa Andersson WG Chair: Loa Andersson
<mailto:loa@pi.nu> <mailto:loa@pi.nu>
WG Chair: Ross Callon WG Chair: Ross Callon
skipping to change at page 24, line 45 skipping to change at page 24, line 29
<mailto:jescia.chenxia@huawei.com> <mailto:jescia.chenxia@huawei.com>
Editor: Himanshu Shah Editor: Himanshu Shah
<mailto:hshah@ciena.com>"; <mailto:hshah@ciena.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-03-12 { revision 2017-10-19 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for MPLS mLDP."; "RFC XXXX: YANG Data Model for MPLS mLDP.";
} }
/* /*
* 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.";
skipping to change at page 26, line 20 skipping to change at page 26, line 4
"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 { grouping mldp-fec-event {
description description
"A mLDP FEC event."; "A mLDP FEC event.";
leaf tree-type { choice opaque-type {
type multipoint-type;
description
"p2mp or mp2mp.";
}
leaf root {
type inet:ip-address;
description
"Root address.";
}
choice lsp-key-type {
description description
"LSP ID based or source-group based ."; "The type of opaque value element.";
case lsp-id { case opaque-type-lspid {
leaf lsp-id { container opaque-type-lspid {
type uint16;
description description
"ID to identify the LSP."; "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 } // 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
skipping to change at page 27, line 50 skipping to change at page 27, line 44
} }
} }
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.";
leaf multipoint-type {
type multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
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
grouping mldp-ipv4-configured-lsp-roots {
description
"mLDP IPv4 roots containers.";
container roots {
description
"Configured IPv4 multicast LSPs.";
list root {
key "root-address";
description
"List of roots for configured multicast LSPs.";
leaf root-address {
type inet:ipv4-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
} // choice lsp-key-type
} // list root
} // roots
} // mldp-ipv4-configured-lsp-roots
/* /*
* Configuration 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:config/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."; "Multipoint 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:global/ldp:state/ldp:capability" { + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/"
description "Augmentation for MLDP global capability."; + "ldp: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:received-peer-state/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."; "Multipoint capabilities.";
container p2mp { container p2mp {
description description
"Configure point-to-multipoint capability."; "Configure point-to-multipoint capability.";
leaf enable { leaf enable {
skipping to change at page 30, line 41 skipping to change at page 29, line 23
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global" { + "ldp:mpls-ldp/ldp:global" {
description "MLDP global augmentation."; description "MLDP global augmentation.";
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.";
container config { leaf enable {
description type boolean;
"Configuration data.";
leaf enable {
type boolean;
description
"Enable mLDP.";
}
}
container state {
config false;
description description
"Operational state data."; "Enable mLDP.";
leaf enable {
type boolean;
description
"Enable mLDP.";
}
} }
container address-families { container address-families {
description description
"Per-af params."; "Per-af params.";
container ipv4 { container ipv4 {
description description
"IPv4 information."; "IPv4 information.";
container state { container roots {
config false; config false;
description description
"Operational state data."; "IPv4 multicast LSP roots.";
list root {
container roots { key "root-address";
description description
"IPv4 multicast LSP roots."; "List of roots for configured multicast LSPs.";
list root {
key "root-address"; leaf root-address {
type inet:ipv4-address;
description description
"List of roots for configured multicast LSPs."; "Root address.";
}
leaf 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:ipv4-address; type inet:ipv4-address;
description description
"Root address."; "The next hop address to reach root.";
} }
leaf interface {
leaf is-self { type if:interface-ref;
type boolean;
description description
"This is the root."; "Interface connecting to next-hop.";
} }
leaf peer {
list reachability { type leafref {
key "address interface"; path
description "../../../../../../../../ldp:peers/"
"A next hop for reachability to root, + "ldp:peer/ldp:lsr-id";
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.";
} }
description
"LDP peer from which this next hop can be
reached.";
} }
}
container bindings { container bindings {
description
"mLDP FEC to label bindings.";
container opaque-type-lspid {
description description
"mLDP FEC to label bindings."; "The type of opaque value element is
container opaque-type-lspid {
description
"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
"List of FEC to label bindings.";
leaf lsp-id {
type uint32;
description "ID to identify the LSP.";
}
leaf multipoint-type {
type multipoint-type;
description description
"List of FEC to label bindings."; "The type of mutipoint, p2mp or mp2mp.";
leaf lsp-id { }
type uint32; uses mldp-binding-label-state-attributes;
description "ID to identify the LSP."; } // fec-label
} } // opaque-type-lspid
uses mldp-binding-label-state-attributes; } // bindings
} // fec-label } // list root
} // opaque-type-lspid } // roots
} // bindings
} // list root
} // roots
} // state
container configured-leaf-lsps { container configured-leaf-lsps {
description description
"Configured multicast LSPs."; "Configured multicast LSPs.";
container opaque-type-lspid {
container p2mp {
description
"Configured point-to-multipoint LSPs.";
uses mldp-ipv4-configured-lsp-roots;
}
container mp2mp {
description description
"Configured multipoint-to-multipoint LSPs."; "The type of opaque value element is
uses mldp-ipv4-configured-lsp-roots; 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";
description
"List of FEC to label bindings.";
leaf root-address {
type inet:ipv4-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.";
}
} // fec-label
} // opaque-type-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 {
skipping to change at page 33, line 44 skipping to change at page 32, line 33
uses mldp-fec-event; 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-03-12.yang" <CODE BEGINS> file "ietf-mpls-mldp-extended@2017-10-19.yang"
module ietf-mpls-mldp-extended { module ietf-mpls-mldp-extended {
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";
} }
import ietf-interfaces {
prefix "if";
}
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
import ietf-mpls-ldp { import ietf-mpls-ldp {
prefix "ldp"; prefix "ldp";
} }
import ietf-mpls-ldp-extended { import ietf-mpls-ldp-extended {
prefix "ldp-ext"; prefix "ldp-ext";
} }
import ietf-mpls-mldp { import ietf-mpls-mldp {
prefix "mldp"; prefix "mldp";
} }
organization organization
"IETF MPLS Working Group"; "IETF MPLS Working Group";
skipping to change at page 35, line 14 skipping to change at page 34, line 6
<mailto:jescia.chenxia@huawei.com> <mailto:jescia.chenxia@huawei.com>
Editor: Himanshu Shah Editor: Himanshu Shah
<mailto:hshah@ciena.com>"; <mailto:hshah@ciena.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-03-12 { revision 2017-10-19 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for MPLS mLDP."; "RFC XXXX: YANG Data Model for MPLS mLDP.";
} }
/* /*
* Features * Features
*/ */
feature capability-mldp-hsmp { feature capability-mldp-hsmp {
skipping to change at page 36, line 36 skipping to change at page 35, line 28
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.";
leaf multipoint-type {
type mldp:multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
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.";
skipping to change at page 39, line 51 skipping to change at page 38, line 38
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 access list.";
} }
} // recursive-for } // recursive-for
} // mldp-ext-per-af-config-attibutes } // mldp-ext-per-af-config-attibutes
grouping recursive-fec-attibutes {
description
"mLDP recursive FEC attibutes.";
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";
}
leaf multipoint-type {
type mldp:multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
} // recursive-fec-attibutes
/* /*
* Configuration data nodes * Configuration data and operational state data nodes
*/ */
// Global capability config // Global capability
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability/" + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" {
+ "mldp:mldp" {
description "Augmentation for MLDP global capability."; description "Augmentation for MLDP global capability.";
uses mldp-ext-capabilities; uses mldp-ext-capabilities;
} }
// Peer capability config // Peer capability
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/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.";
container config { uses mldp-ext-per-af-config-attibutes;
description
"Configuration data.";
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:p2mp/mldp:roots/" + "mldp:ipv4/mldp:configured-leaf-lsps/mldp:opaque-type-lspid/"
+ "mldp:root/mldp:lsp-key-type" { + "mldp:fec-label" {
description description
"Augmentation for MLDP IPv4 configured-leaf-lsps "Augmentation for MLDP IPv4 configured-leaf-lsps
configuration."; configuration for opaque-type-lspid.";
case source-group { list recursive-fec {
container opaque-type-transit { key
description "recur-root-address recur-rd";
"The type of opaque value element is the transit IPv4 description
source."; "List of recursive opaque values.";
uses recursive-fec-attibutes;
list lsp { } // fec-label
key "source-address group-address";
description
"List of LSPs.";
leaf source-address {
type inet:ipv4-address;
description
"Source address.";
}
leaf group-address {
type inet:ipv4-address-no-zone;
description
"Group address.";
}
}
}
} // case source-group
} }
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:mp2mp/mldp:roots/" + "mldp:ipv4/mldp:configured-leaf-lsps" {
+ "mldp:root/mldp:lsp-key-type" {
description description
"Augmentation for MLDP IPv4 configured-leaf-lsps "Augmentation for MLDP IPv4 configured-leaf-lsps
configuration."; configuration.";
case source-group {
container opaque-type-transit { container opaque-type-transit {
description
"The type of opaque value element is the transit IPv4
source.";
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 description
"The type of opaque value element is the transit IPv4 "List of FEC to label bindings.";
source."; leaf root-address {
list lsp { type inet:ipv4-address;
key "source-address group-address";
description description
"List of LSPs."; "Root address.";
leaf source-address {
type inet:ipv4-address;
description
"Source address.";
}
leaf group-address {
type inet:ipv4-address-no-zone;
description
"Group address.";
}
} }
} leaf source-address {
} // case source-group 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
Routing and Forwarding (VRF) Table
Context.";
}
uses recursive-fec-attibutes;
} // 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: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.";
}
uses recursive-fec-attibutes;
} // fec-label
} // opaque-type-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.";
container config { uses mldp-ext-per-af-config-attibutes;
description
"Configuration data.";
uses mldp-ext-per-af-config-attibutes;
}
} }
// Global forwarding-nexthop config // 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" {
+ "ldp-ext:config" {
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 the interface.";
} }
} }
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
// Global capability state
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability/"
+ "mldp:mldp" {
description "Augmentation for MLDP global capability.";
uses mldp-ext-capabilities;
}
// Peer capability state
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 {
description
"mLDP capabilities.";
uses mldp:mldp-capabilities;
}
}
// IPv4 state
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "mldp:ipv4/mldp:state" {
description "Augmentation for MLDP IPv4 state.";
uses mldp-ext-per-af-config-attibutes;
}
// 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:state/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-type-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.";
} }
} }
// IPv6 state
augment "/rt:routing/rt:control-plane-protocols/"
+ "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/"
+ "ipv6/state" {
description "Augmentation for MLDP IPv6 state.";
uses mldp-ext-per-af-config-attibutes;
}
// Global forwarding-nexthop config
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/"
+ "ldp-ext:state" {
description
"Augmentation for MLDP nexthop forwarding interface.";
leaf mldp-disable {
type boolean;
description
"Disable mLDP forwarding on the interface.";
}
}
// 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:state/" + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/"
+ "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;
skipping to change at page 44, line 47 skipping to change at page 43, line 52
type boolean; type boolean;
description description
"Merge Point capable for MP LSP node protection."; "Merge Point capable for MP 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:state/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-type-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.";
skipping to change at page 45, line 35 skipping to change at page 44, line 39
leaf rd { leaf rd {
type route-distinguisher; type 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.";
} }
leaf recur-root-address { uses recursive-fec-attibutes;
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-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-type-transit
container opaque-type-bidir { container opaque-type-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
skipping to change at page 46, line 42 skipping to change at page 45, line 30
leaf rd { leaf rd {
type route-distinguisher; type 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.";
} }
leaf recur-root-address { uses recursive-fec-attibutes;
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-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-type-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/state/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-type-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
skipping to change at page 48, line 8 skipping to change at page 46, line 29
leaf rd { leaf rd {
type route-distinguisher; type 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.";
} }
leaf recur-root-address { uses recursive-fec-attibutes;
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-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-transit } // opaque-type-transit
container opaque-type-bidir { container opaque-type-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
skipping to change at page 49, line 16 skipping to change at page 47, line 21
leaf rd { leaf rd {
type route-distinguisher; type 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.";
} }
leaf recur-root-address { uses recursive-fec-attibutes;
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-ext-binding-label-state-attributes; uses mldp-ext-binding-label-state-attributes;
} // fec-label } // fec-label
} // opaque-type-bidir } // opaque-type-bidir
} }
// IPv4 bindings opaque-type-lspid state // IPv4 bindings opaque-type-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:state/mldp:roots/mldp:root/mldp:bindings/" + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/"
+ "mldp:opaque-type-lspid/mldp:fec-label" { + "mldp:opaque-type-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.";
leaf recur-root-address { uses recursive-fec-attibutes;
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-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-type-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/state/roots/root/bindings/opaque-type-lspid/" + "ipv6/roots/root/bindings/opaque-type-lspid/fec-label" {
+ "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 key "recur-root-address recur-rd";
"recur-root-address recur-rd"; config false;
config false;
description description
"List of recursive opaque values."; "List of recursive opaque values.";
leaf recur-root-address { uses recursive-fec-attibutes;
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-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 state { container roots {
config false; config false;
description description
"Operational state data."; "IPv6 multicast LSP roots.";
list root {
container roots { key "root-address";
description description
"IPv6 multicast LSP roots."; "List of roots for configured multicast LSPs.";
list root {
key "root-address"; leaf root-address {
type inet:ipv6-address;
description description
"List of roots for configured multicast LSPs."; "Root address.";
}
leaf 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; type inet:ipv6-address;
description description
"Root address."; "The next hop address to reach root.";
} }
leaf interface {
leaf is-self { type if:interface-ref;
type boolean;
description description
"This is the root."; "Interface connecting to next-hop.";
} }
leaf peer {
list reachability { type leafref {
key "address interface"; path
description "../../../../../../../../ldp:peers/"
"A next hop for reachability to root, + "ldp:peer/ldp:lsr-id";
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 {
path
"../../../../../../../../../ldp:peers/"
+ "ldp:peer/ldp:lsr-id";
}
description
"LDP peer from which this next hop can be
reached.";
} }
description
"LDP peer from which this next hop can be
reached.";
} }
}
container bindings { container bindings {
description
"mLDP FEC to label bindings.";
container opaque-type-lspid {
description description
"mLDP FEC to label bindings."; "The type of opaque value element is
container opaque-type-lspid { 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
"lsp-id";
description description
"The type of opaque value element is "List of FEC to label bindings.";
the generic LSP identifier"; leaf lsp-id {
reference type uint32;
"RFC6388: Label Distribution Protocol description "ID to identify the LSP.";
Extensions for Point-to-Multipoint and }
Multipoint-to-Multipoint Label Switched leaf multipoint-type {
Paths."; type mldp:multipoint-type;
list fec-label {
key
"lsp-id";
description description
"List of FEC to label bindings."; "The type of mutipoint, p2mp or mp2mp.";
leaf lsp-id { }
type uint32;
description "ID to identify the LSP."; uses mldp-ext-binding-label-state-attributes;
} } // fec-label
uses mldp-ext-binding-label-state-attributes;
} // fec-label } // opaque-type-lspid
} // opaque-type-lspid } // bindings
} // bindings } // list root
} // list root } // roots
} // roots
} // state
container configured-leaf-lsps { container configured-leaf-lsps {
description description
"Configured multicast LSPs."; "Configured multicast LSPs.";
container p2mp { container opaque-type-lspid {
description description
"Configured point-to-multipoint LSPs."; "The type of opaque value element is
uses mldp-ipv6-configured-lsp-roots; the generic LSP identifier";
} reference
container mp2mp { "RFC6388: Label Distribution Protocol
Extensions for Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
list fec-label {
key
"root-address lsp-id";
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 multipoint-type {
type mldp:multipoint-type;
description
"The type of mutipoint, p2mp or mp2mp.";
}
list recursive-fec {
key
"recur-root-address recur-rd";
description
"List of recursive opaque values.";
uses recursive-fec-attibutes;
} // fec-label
} // fec-label
} // opaque-type-lspid
container opaque-type-transit {
description description
"Configured multipoint-to-multipoint LSPs."; "The type of opaque value element is the transit IPv4
uses mldp-ipv6-configured-lsp-roots; source.";
} 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
Routing and Forwarding (VRF) Table
Context.";
}
uses recursive-fec-attibutes;
} // 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.";
}
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.";
}
uses recursive-fec-attibutes;
} // fec-label
} // opaque-type-bidir
} // configured-leaf-lsps } // configured-leaf-lsps
} // ipv6 } // ipv6
} }
/* /*
* Global augmentation * Global augmentation
*/ */
/* /*
* Notifications * Notifications
*/ */
augment "/mldp:mpls-mldp-fec-event/mldp:lsp-key-type" {
description ""; augment "/mldp:mpls-mldp-fec-event/mldp:opaque-type/"
case source-group-based { + "mldp:opaque-type-lspid/mldp:opaque-type-lspid" {
leaf source-address { description
type inet:ip-address; "Augmentation for MLDP notification for opaque-type-lspid.";
container recursive-fec {
description
"Container of recursive opaque values.";
uses recursive-fec-attibutes;
} // fec-label
}
augment "/mldp:mpls-mldp-fec-event/mldp:opaque-type" {
description
"Augmentation for MLDP notification.";
case opaque-type-transit {
container opaque-type-transit {
description description
"LSP source address."; "The type of opaque value element is the transit IPv4
} source.";
leaf group-address { reference
type inet:ip-address; "RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched Paths.";
leaf root-address {
type inet:ip-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
Routing and Forwarding (VRF) Table
Context.";
}
uses recursive-fec-attibutes;
} // opaque-type-transit
} // opaque-type-transit
case opaque-type-bidir {
container opaque-type-bidir {
description description
"Multicast group address."; "The type of opaque value element is
} the generic LSP identifier";
} // case source-group reference
"RFC6826: Multipoint LDP In-Band Signaling for
Point-to-Multipoint and
Multipoint-to-Multipoint Label Switched
Paths.";
leaf root-address {
type inet:ip-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.";
}
uses recursive-fec-attibutes;
} // opaque-type-bidir
} // opaque-type-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 This mLDP model shares the same security considerations as captured
in LDP Yang model [I-D.ietf-mpls-ldp-yang]. in LDP Yang model [I-D.ietf-mpls-ldp-yang].
11. IANA Considerations 11. IANA Considerations
This document does not extend mLDP protocol specifiction and hence This document does not extend mLDP protocol specifiction and hence
skipping to change at page 54, line 23 skipping to change at page 55, line 24
there are no IANA considerations. there are no IANA considerations.
Note to the RFC Editor: Please remove IANA section before the Note to the RFC Editor: Please remove IANA section before the
publication. publication.
12. Acknowledgments 12. Acknowledgments
The authors would like to acknowledge Ladislav Lhotka for his useful The authors would like to acknowledge Ladislav Lhotka for his useful
comments as the YANG Doctor. comments as the YANG Doctor.
13. References 13. Normative 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-02 (work in progress), September 2017. yang-02 (work in progress), September 2017.
[I-D.ietf-netmod-revised-datastores]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore
Architecture", draft-ietf-netmod-revised-datastores-06
(work in progress), October 2017.
[I-D.ietf-netmod-rfc6087bis]
Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", draft-ietf-netmod-rfc6087bis-14
(work in progress), September 2017.
[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,
<http://www.rfc-editor.org/info/rfc2119>. <https://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. [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,
<http://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, <http://www.rfc-editor.org/info/rfc6389>. November 2011, <https://www.rfc-editor.org/info/rfc6389>.
[RFC6512] Wijnands, IJ., Rosen, E., Napierala, M., and N. Leymann, [RFC6512] Wijnands, IJ., Rosen, E., Napierala, M., and N. Leymann,
"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,
<http://www.rfc-editor.org/info/rfc6512>. <https://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. [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,
<http://www.rfc-editor.org/info/rfc6826>. <https://www.rfc-editor.org/info/rfc6826>.
[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,
<http://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,
<http://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,
<http://www.rfc-editor.org/info/rfc7246>. <https://www.rfc-editor.org/info/rfc7246>.
[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,
<http://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,
<http://www.rfc-editor.org/info/rfc7715>. <https://www.rfc-editor.org/info/rfc7715>.
13.2. Informative References
[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 Appendix A. Additional Contributors
Matthew Bocci Matthew Bocci
Nokia Nokia
matthew.bocci@nokia.com matthew.bocci@nokia.com
Authors' Addresses Authors' Addresses
Kamran Raza Kamran Raza
 End of changes. 158 change blocks. 
953 lines changed or deleted 987 lines changed or added

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