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/ |