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