| < draft-ietf-mpls-mldp-yang-00.txt | draft-ietf-mpls-mldp-yang-01.txt > | |||
|---|---|---|---|---|
| MPLS Working Group K. Raza | MPLS Working Group K. Raza | |||
| Internet-Draft S. Krishnaswamy | Internet-Draft S. Krishnaswamy | |||
| Intended status: Standards Track Cisco Systems, Inc. | Intended status: Standards Track Cisco Systems, Inc. | |||
| Expires: May 16, 2017 | Expires: September 14, 2017 | |||
| X. Liu | X. Liu | |||
| Kuatro Technologies | Jabil | |||
| S. Esale | S. Esale | |||
| Juniper Networks | Juniper Networks | |||
| X. Chen | X. Chen | |||
| Huawei Technologies | Huawei Technologies | |||
| Jeff Tantsura | Jeff Tantsura | |||
| November 12, 2016 | March 13, 2017 | |||
| YANG Data Model for MPLS mLDP | YANG Data Model for MPLS mLDP | |||
| draft-ietf-mpls-mldp-yang-00 | draft-ietf-mpls-mldp-yang-01 | |||
| Abstract | Abstract | |||
| This document describes a YANG data model for Multi-Protocol Label | This document describes a YANG data model for Multi-Protocol Label | |||
| Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The | Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The | |||
| mLDP data model augments the LDP data model. | mLDP data model augments the LDP data model. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 May 16, 2017. | This Internet-Draft will expire on September 14, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Specification of Requirements . . . . . . . . . . . . . . . . 3 | 1.1. Base and Extended . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Specification of Requirements . . . . . . . . . . . . . . . . 4 | |||
| 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 4 | 3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.2. mldp container . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. FEC Types . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 6 | 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.4. YANG tree . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 7 | |||
| 5. Operational State . . . . . . . . . . . . . . . . . . . . . . 9 | 4.2. mldp global container . . . . . . . . . . . . . . . . . . 9 | |||
| 5.1. Derived states . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9 | |||
| 5.1.1. Root state . . . . . . . . . . . . . . . . . . . . . 13 | 4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.1.2. Bindings state . . . . . . . . . . . . . . . . . . . 14 | 4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.1.3. Capabilities state . . . . . . . . . . . . . . . . . 18 | 4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5. Operational State . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 19 | 5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 43 | 5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 | 5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 19 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44 | 5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 22 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 44 | 6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 45 | 6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. Additional Contributors . . . . . . . . . . . . . . 46 | 7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | 8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| 9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| 9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 54 | ||||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 | ||||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 54 | ||||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 56 | ||||
| Appendix A. Additional Contributors . . . . . . . . . . . . . . 56 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
| 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 | |||
| highly dependent on LDP YANG data model | dependent on LDP YANG data model [I-D.ietf-mpls-ldp-yang]. This | |||
| implies that an opertor will need to use base LDP module to configure | ||||
| [I-D.ietf-mpls-ldp-mldp-yang]. This implies that an opertor will | and manage control plane for mLDP. For example, an operator would | |||
| need to use base LDP module to configure and manage control plane for | enable LDP discovery on MPLS interface to establish LDP/mLDP peering | |||
| mLDP. For example, an operator would enable LDP discovery on MPLS | on which mLDP bindings could be exchanged. Similarly, an operator | |||
| interface to establish LDP/mLDP peering on which mLDP bindings could | could query state information for an LDP peer in order to verify | |||
| be exchanged. Similarly, an operator could query state information | peering attributes etc. | |||
| for an LDP peer 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. | |||
| This document specifies mLDP model under ietf-mpls-mldp that augments | Like its parent LDP data model, this mLDP model also defines the | |||
| LDP model as defined under ietf-mpls-ldp | following constructs for managing the mLDP protocol: | |||
| [I-D.ietf-mpls-ldp-mldp-yang]. Like its base LDP data model, this | ||||
| model also defines the following constructs for managing the mLDP | ||||
| protocol: | ||||
| o Configuration | o Configuration | |||
| o Operational State | o Operational State | |||
| o Executables (Actions) | o Executables (Actions) | |||
| o Notifications | o Notifications | |||
| 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 | ||||
| Like LDP model, the configuration and state items are divided into | ||||
| following two broad categories: | ||||
| o Base | ||||
| o Extended | ||||
| The "base" category contains the basic and fundamental features that | ||||
| are covered in mLDP base specification [RFC6388] alongwith few | ||||
| significant extension like targeted mLDP [RFC7060], constituting the | ||||
| minumum requirements for an mLDP deployment. Whereas, the "extended" | ||||
| category contains all other non-base features (such as recursive FEC | ||||
| support, protection etc.). All the items in a base category are | ||||
| mandatory and hence no "if-feature" is allowed under the "base" | ||||
| category. While "base" model support will suffice for small | ||||
| deployments, large deployments will require not only the "base" | ||||
| module support but also "extended" support for some selected and | ||||
| required features. | ||||
| The base and extended catogories are defined in their own modules | ||||
| ietf-mpls-mldp and ietf-mpls-mldp-extended respectively, each of | ||||
| which augmenting LDP base model ietf-mpls-ldp as defined under ietf- | ||||
| mpls-ldp [I-D.ietf-mpls-ldp-yang]. | ||||
| Like LDP, mLDP "base" model configuration and state covers ipv4 | ||||
| address-family only, with ipv6 address-family related configuration | ||||
| and state be covered in "extended" model. | ||||
| 2. Specification of Requirements | 2. Specification of Requirements | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 3. Overview | 3. Overview | |||
| This document defines a new module named "ietf-mpls-mldp" for 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 | ||||
| document also defines "ietf-mpls-mldp-extended" module that models | ||||
| the extended mLDP features under YANG. | ||||
| Following diagram depicts high level mLDP yang tree organization and | ||||
| hierarchy with respect to LDP: | ||||
| +-- rw routing | ||||
| +-- rw control-plane-protocols | ||||
| +-- rw mpls-ldp | ||||
| +-- rw some_container | ||||
| | +-- rw config | ||||
| | | +-- rw .... // ldp base | ||||
| | | +-- rw ldp-ext:.... // ldp extended | ||||
| | | ... | ||||
| | | +-- rw mldp | ||||
| | | +-- rw ... // mldp base | ||||
| | | +-- rw mldp-ext:.... // mldp extended | ||||
| | | ... | ||||
| | +-- ro state | ||||
| | | +-- ro .... // ldp base | ||||
| | | +-- ro ldp-ext:.... // ldp extended | ||||
| | | ... | ||||
| | | +-- ro mldp | ||||
| | | +-- ro ... // mldp base | ||||
| | | +-- ro mldp-ext:.... // mldp extended | ||||
| | | ... | ||||
| +-- rw ... | ||||
| | | ||||
| notifications: | ||||
| +--- n mpls-mldp-some_event | ||||
| +--- n ... | ||||
| Figure 1 | ||||
| 3.1. Scope | ||||
| Following are the main mLDP areas and features that are within the | Following are the main mLDP areas and features that are within the | |||
| scope of this model: | scope of this model: | |||
| o mLDP Base Specification [RFC6388] | o Base: | |||
| o mLDP Recursive FEC [RFC6512] | * mLDP Base Specification [RFC6388] | |||
| o Targeted mLDP [RFC7060] | * Targeted mLDP [RFC7060] | |||
| o mLDP Fast-Reroute (FRR): | * Configured Leaf LSPs (manually provisioned) | |||
| * Node Protection [RFC7715] | o Extended: | |||
| * Multicast-only | ||||
| o In-band Signaling: | * mLDP Recursive FEC [RFC6512] | |||
| * mLDP Fast-Reroute (FRR): | ||||
| * mLDP In-band Signaling [RFC6826] | + Node Protection [RFC7715] | |||
| * mLDP In-band signaling in a VRF [RFC7246] | + Multicast-only | |||
| * mLDP In-band Signaling with Wildcards [RFC7438] | * In-band Signaling: | |||
| o Hub-and-Spoke Multipoint LSPs [RFC7140] | + mLDP In-band Signaling [RFC6826] | |||
| o Configured Leaf LSPs (manually provisioned) | + mLDP In-band signaling in a VRF [RFC7246] | |||
| + mLDP In-band Signaling with Wildcards [RFC7438] | ||||
| * 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 | ||||
| The FEC for Multipoint LSP is presented as (root-address, opaque- | ||||
| type). The following is the table for various type of MP opaque | ||||
| values with their keys, as covered in the configuration and state | ||||
| model: | ||||
| +-------------------------+--------------------+------------+ | ||||
| | Opaque Type | Key | RFC | | ||||
| +-------------------------+--------------------+------------+ | ||||
| | Generic LSP Identifier | LSP Id | [RFC6388] | | ||||
| | Transit IPv4 Source | Source, Group | [RFC6826] | | ||||
| | Transit IPv6 Source | Source, Group | [RFC6826] | | ||||
| | Transit IPv4 Bidir | RP, Group | [RFC6826] | | ||||
| | Transit IPv6 Bidir | RP, Group | [RFC6826] | | ||||
| | Transit VPNv4 Source | Source, Group, RD | [RFC7246] | | ||||
| | Transit VPNv6 Source | Source, Group, RD | [RFC7246] | | ||||
| | Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] | | ||||
| | Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] | | ||||
| | Recursive Opaque | Root | [RFC6512] | | ||||
| | VPN-Recursive Opaque | Root, RD | [RFC6512] | | ||||
| +-------------------------+--------------------+------------+ | ||||
| Table 1: MP Opaque Types and keys | ||||
| It is to be noted that there are three basic types (LSP Id, Source, | ||||
| and Bidir) and then there are variants (VPN, recursive, VPN- | ||||
| recursive) on top of these basic types. | ||||
| The "base" model includes only the "Generic LSP Identifier" opaque | ||||
| type (for ipv4), while rest of the above types are covered by the | ||||
| "extended" model. | ||||
| 4. Configuration | 4. Configuration | |||
| 4.1. Configuration Hierarchy | 4.1. Configuration Hierarchy | |||
| In terms of overall configuration layout, following figure highlights | Following is the high-level configuration organization for base and | |||
| extensions to LDP configuration model to incorporate mLDP: | extended mLDP: | |||
| module: ietf-mpls-ldp | ||||
| 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 (augmentation) | ||||
| | | +-- ... | ||||
| | | +-- ... | ||||
| | | +-- address-family* [afi] | ||||
| | | +-- ... | ||||
| | | +-- ... | ||||
| | | +-- configured-leaf-lsps | ||||
| | | +-- p2mp | ||||
| | | | +-- ... | ||||
| | | | +-- ... | ||||
| | | +-- mp2mp | ||||
| | | +-- ... | ||||
| | | +-- ... | ||||
| | +-- capability | ||||
| | +-- ... | ||||
| | +-- ... | ||||
| | +-- mldp (augmentation) | ||||
| | +-- ... | ||||
| | +-- ... | ||||
| +-- peers | ||||
| +-- ... | +-- ... | |||
| +-- ... | +-- ... | |||
| +-- peer* | +-- mldp | |||
| +-- ... | | +-- ... | |||
| +-- ... | | +-- ... | |||
| +-- capability | | +-- address-families | |||
| +-- ... | | +-- ipv4 | |||
| +-- ... | | | +-- ... | |||
| +-- mldp | | | +-- mldp-ext: ... | |||
| +-- ... | | | +-- ... | |||
| +-- ... | | | +-- configured-leaf-lsps | |||
| | | +-- ... | ||||
| | | +-- ... | ||||
| | | +-- mldp-ext: ... | ||||
| | | +-- ... | ||||
| | +-- mldp-ext: ipv6 | ||||
| | +-- ... | ||||
| | +-- ... | ||||
| | +-- configured-leaf-lsps | ||||
| | +-- ... | ||||
| | +-- ... | ||||
| +-- capability | ||||
| | +-- mldp | ||||
| | +-- ... | ||||
| | +-- mldp-ext: ... | ||||
| | +-- ... | ||||
| +-- forwarding-nexthop | ||||
| +--- interfaces | ||||
| +--- interface* [name] | ||||
| +--- mldp-ext: ... | ||||
| Figure 1 | 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 | Following subsections first describe mLDP specific configuration | |||
| parameters, followed by those leveraging LDP. | parameters, followed by those leveraging LDP. It is to be noted that | |||
| these parameters are defined under their respective base or extended | ||||
| module as per their categorization. | ||||
| 4.2. mldp 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 enabling: To enable mLDP under a (VRF) routing instance, mldp | |||
| container is enabled under LDP. Given that mLDP requires LDP | container is enabled under LDP. Given that mLDP requires LDP | |||
| signalling, it is not sensible to allow disabling LDP control | signalling, it is not sensible to allow disabling LDP control | |||
| plane under a (VRF) network-instance while requiring mLDP to be | plane under a (VRF) network-instance while requiring mLDP to be | |||
| enabled for the same. However, if a user wants only to allow | enabled for the same. However, if a user wants only to allow | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 10, line 35 ¶ | |||
| (LDP/mLDP peer) for MP LSP programming. However, a configuration | (LDP/mLDP peer) for MP LSP programming. However, a configuration | |||
| option is provided to allow mLDP to exclude a given interface from | option is provided to allow mLDP to exclude a given interface from | |||
| such a selection. Note that such a configuration option will be | such a selection. Note that such a configuration option will be | |||
| useful only when there are more than one interfaces available for | useful only when there are more than one interfaces available for | |||
| the downstream selection. | the downstream selection. | |||
| This goes without saying that mLDP configuration tree follows the | This goes without saying that mLDP configuration tree follows the | |||
| same approach as LDP, where the tree comprise leafs for intended | same approach as LDP, where the tree comprise leafs for intended | |||
| configuration. | configuration. | |||
| 4.4. YANG tree | 4.4. Configuration Tree | |||
| The following figure captures the YANG tree for mLDP configuration. | ||||
| module: ietf-mpls-mldp | 4.4.1. Base | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | Following is a simplified graphical representation of the data model | |||
| +--rw mldp {mldp}? | for mLDP base configuration | |||
| +--rw config | ||||
| | +--rw enable? boolean | ||||
| +--rw address-family* [afi] | ||||
| +--rw afi ldp:ldp-address-family | ||||
| +--rw config | ||||
| | +--rw multicast-only-frr {mldp-mofrr}? | ||||
| | | +--rw prefix-list? ldp:prefix-list-ref | ||||
| | +--rw recursive-fec | ||||
| | +--rw prefix-list? ldp:prefix-list-ref | ||||
| +--rw configured-leaf-lsps | ||||
| +--rw p2mp | ||||
| | +--rw roots-ipv4 | ||||
| | | +--rw root* [root-address] | ||||
| | | +--rw root-address inet:ipv4-address | ||||
| | | +--rw lsp* [lsp-id source-address group-address] | ||||
| | | +--rw lsp-id uint16 | ||||
| | | +--rw source-address inet:ipv4-address | ||||
| | | +--rw group-address inet:ipv4-address-no-zone | ||||
| | +--rw roots-ipv6 | ||||
| | +--rw root* [root-address] | ||||
| | +--rw root-address inet:ipv6-address | ||||
| | +--rw lsp* [lsp-id source-address group-address] | ||||
| | +--rw lsp-id uint16 | ||||
| | +--rw source-address inet:ipv6-address | ||||
| | +--rw group-address inet:ipv6-address-no-zone | ||||
| +--rw mp2mp | ||||
| +--rw roots-ipv4 | ||||
| | +--rw root* [root-address] | ||||
| | +--rw root-address inet:ipv4-address | ||||
| | +--rw lsp* [lsp-id source-address group-address] | ||||
| | +--rw lsp-id uint16 | ||||
| | +--rw source-address inet:ipv4-address | ||||
| | +--rw group-address inet:ipv4-address-no-zone | ||||
| +--rw roots-ipv6 | ||||
| +--rw root* [root-address] | ||||
| +--rw root-address inet:ipv6-address | ||||
| +--rw lsp* [lsp-id source-address group-address] | ||||
| +--rw lsp-id uint16 | ||||
| +--rw source-address inet:ipv6-address | ||||
| +--rw group-address inet:ipv6-address-no-zone | ||||
| module: ietf-mpls-mldp | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/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 | |||
| +--rw hub-and-spoke {capability-mldp-hsmp}? | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | ||||
| +--rw mldp | ||||
| +--rw config | ||||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| +--rw node-protection {capability-mldp-node-protection}? | +--rw address-families | |||
| +--rw plr? boolean | +--rw ipv4 | |||
| +--rw merge-point | +--rw configured-leaf-lsps | |||
| +--rw enable? boolean | +--rw p2mp | |||
| +--rw targeted-session-teardown-delay? uint16 | | +--rw roots | |||
| | +--rw root* [root-address] | ||||
| | +--rw root-address inet:ipv4-address | ||||
| | +--rw (lsp-key-type)? | ||||
| | +--:(lsp-id) | ||||
| | +--rw opaque-type-lspid | ||||
| | +--rw lsp* [lsp-id] | ||||
| | +--rw lsp-id uint16 | ||||
| +--rw mp2mp | ||||
| +--rw roots | ||||
| +--rw root* [root-address] | ||||
| +--rw root-address inet:ipv4-address | ||||
| +--rw (lsp-key-type)? | ||||
| +--:(lsp-id) | ||||
| +--rw opaque-type-lspid | ||||
| +--rw lsp* [lsp-id] | ||||
| +--rw lsp-id uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/ldp:interfaces/ldp:interface/ldp:address-family/ldp:config: | Figure 3 | |||
| +--rw mldp-disable? boolean {mldp}? | ||||
| 4.4.2. Extended | ||||
| Following is a simplified graphical representation of the data model | ||||
| for mLDP extended configuration | ||||
| module: ietf-mpls-mldp-extended | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability/mldp:mldp: | ||||
| +--rw hub-and-spoke {capability-mldp-hsmp}? | ||||
| | +--rw enable? boolean | ||||
| +--rw node-protection {capability-mldp-node-protection}? | ||||
| +--rw plr? boolean | ||||
| +--rw merge-point | ||||
| +--rw enable? boolean | ||||
| +--rw targeted-session-teardown-delay? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability: | |||
| +--rw mldp {mldp}? | +--rw mldp {per-peer-capability}? | |||
| +--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 | |||
| +--rw hub-and-spoke {capability-mldp-hsmp}? | ||||
| | +--rw enable? boolean | ||||
| +--rw node-protection {capability-mldp-node-protection}? | ||||
| +--rw plr? boolean | ||||
| +--rw merge-point | ||||
| +--rw enable? boolean | ||||
| +--rw targeted-session-teardown-delay? uint16 | ||||
| Figure 2 | augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4: | |||
| +--rw config | ||||
| +--rw multicast-only-frr {mldp-mofrr}? | ||||
| | +--rw prefix-list? ldp-ext:prefix-list-ref | ||||
| +--rw recursive-fec | ||||
| +--rw prefix-list? ldp-ext:prefix-list-ref | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:configured-leaf-lsps/mldp:p2mp/mldp:roots/mldp:root/mldp:lsp-key-type: | ||||
| +--:(source-group) | ||||
| +--rw opaque-type-transit | ||||
| +--rw lsp* [source-address group-address] | ||||
| +--rw source-address inet:ipv4-address | ||||
| +--rw group-address inet:ipv4-address-no-zone | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:configured-leaf-lsps/mldp:mp2mp/mldp:roots/mldp:root/mldp:lsp-key-type: | ||||
| +--:(source-group) | ||||
| +--rw opaque-type-transit | ||||
| +--rw lsp* [source-address group-address] | ||||
| +--rw source-address inet:ipv4-address | ||||
| +--rw group-address inet:ipv4-address-no-zone | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family/ldp-ext:config: | ||||
| +--rw mldp-disable? boolean | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families: | ||||
| +--rw ipv6 | ||||
| +--rw config | ||||
| +--rw multicast-only-frr {mldp-mofrr}? | ||||
| | +--rw prefix-list? ldp-ext:prefix-list-ref | ||||
| +--rw recursive-fec | ||||
| +--rw prefix-list? ldp-ext:prefix-list-ref | ||||
| Figure 4 | ||||
| 5. Operational State | 5. Operational State | |||
| Operational state of mLDP can be queried and obtained from various | Operational state of mLDP can be queried and obtained from various | |||
| read-only mdlp "state" containers that augment ldp state containers. | read-only mdlp "state" containers that augment ldp state containers. | |||
| Please note this state tree refers both the configuration "applied" | Please note this state tree refers both the configuration "applied" | |||
| state as well as the "derived" state related to the mLDP protocol. | state as well as the "derived" state related to the mLDP protocol. | |||
| [Ed note: Future revision will realign] | [Ed note: Future revision will realign] | |||
| 5.1. Base | ||||
| Following is a simplified graphical representation of the data model | Following is a simplified graphical representation of the data model | |||
| for mLDP operational state: | for mLDP base operational state: | |||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability: | ||||
| +--ro mldp | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| +--ro enable? boolean | ||||
| +--ro switchover-delay? uint16 | ||||
| +--ro timeout? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability: | ||||
| +--ro mldp | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| +--ro enable? boolean | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | |||
| +--rw mldp {mldp}? | +--rw mldp | |||
| +--ro state | +--ro state | |||
| | +--ro enable? boolean | | +--ro enable? boolean | |||
| +--rw address-family* [afi] | +--rw address-families | |||
| +--ro state | +--rw ipv4 | |||
| +--ro multicast-only-frr {mldp-mofrr}? | +--ro state | |||
| | +--ro prefix-list? ldp:prefix-list-ref | ||||
| +--ro recursive-fec | ||||
| | +--ro prefix-list? ldp:prefix-list-ref | ||||
| +--ro ipv4 | ||||
| | +--ro roots | ||||
| | | +--ro root* [root-address] | ||||
| | | +--ro root-address inet:ipv4-address | ||||
| | | +--ro is-self? boolean | ||||
| | | +--ro reachability* [address interface] | ||||
| | | +--ro address inet:ipv4-address | ||||
| | | +--ro interface ldp:mpls-interface-ref | ||||
| | | +--ro peer? leafref | ||||
| | +--ro bindings | ||||
| | +--ro opaque-type-lspid | ||||
| | | +--ro fec-label* [root-address lsp-id recur-root-address recur-rd] | ||||
| | | +--ro root-address inet:ipv4-address | ||||
| | | +--ro lsp-id uint32 | ||||
| | | +--ro recur-root-address inet:ip-address | ||||
| | | +--ro recur-rd route-distinguisher | ||||
| | | +--ro multipoint-type? multipoint-type | ||||
| | | +--ro peer* [direction peer advertisement-type] | ||||
| | | +--ro direction ldp:downstream-upstream | ||||
| | | +--ro peer leafref | ||||
| | | +--ro advertisement-type ldp:advertised-received | ||||
| | | +--ro label? mpls:mpls-label | ||||
| | | +--ro mbb-role? enumeration | ||||
| | | +--ro mofrr-role? enumeration | ||||
| | +--ro opaque-type-transit | ||||
| | | +--ro fec-label* [root-address source-address group-address ... ] | ||||
| | | +--ro root-address inet:ipv4-address | ||||
| | | +--ro source-address inet:ip-address | ||||
| | | +--ro group-address inet:ip-address-no-zone | ||||
| | | +--ro rd route-distinguisher | ||||
| | | +--ro recur-root-address inet:ip-address | ||||
| | | +--ro recur-rd route-distinguisher | ||||
| | | +--ro multipoint-type? multipoint-type | ||||
| | | +--ro peer* [direction peer advertisement-type] | ||||
| | | +--ro direction ldp:downstream-upstream | ||||
| | | +--ro peer leafref | ||||
| | | +--ro advertisement-type ldp:advertised-received | ||||
| | | +--ro label? mpls:mpls-label | ||||
| | | +--ro mbb-role? enumeration | ||||
| | | +--ro mofrr-role? enumeration | ||||
| | +--ro opaque-type-bidir | ||||
| | +--ro fec-label* [root-address rp group-address ... ] | ||||
| | +--ro root-address inet:ipv4-address | ||||
| | +--ro rp inet:ip-address | ||||
| | +--ro group-address inet:ip-address-no-zone | ||||
| | +--ro rd route-distinguisher | ||||
| | +--ro recur-root-address inet:ip-address | ||||
| | +--ro recur-rd route-distinguisher | ||||
| | +--ro multipoint-type? multipoint-type | ||||
| | +--ro peer* [direction peer advertisement-type] | ||||
| | +--ro direction ldp:downstream-upstream | ||||
| | +--ro peer leafref | ||||
| | +--ro advertisement-type ldp:advertised-received | ||||
| | +--ro label? mpls:mpls-label | ||||
| | +--ro mbb-role? enumeration | ||||
| | +--ro mofrr-role? enumeration | ||||
| +--ro ipv6 | ||||
| +--ro roots | +--ro roots | |||
| | +--ro root* [root-address] | +--ro root* [root-address] | |||
| | +--ro root-address inet:ipv6-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:ipv6-address | | +--ro address inet:ipv4-address | |||
| | +--ro interface ldp:mpls-interface-ref | | +--ro interface ldp:mpls-interface-ref | |||
| | +--ro peer? leafref | | +--ro peer? leafref | |||
| +--ro bindings | ||||
| +--ro opaque-type-lspid | ||||
| +--ro fec-label* [lsp-id] | ||||
| +--ro lsp-id uint32 | ||||
| +--ro multipoint-type? multipoint-type | ||||
| +--ro peer* [direction peer advertisement-type] | ||||
| +--ro direction ldp:downstream-upstream | ||||
| +--ro peer leafref | ||||
| +--ro advertisement-type ldp:advertised-received | ||||
| +--ro label? rt-types:mpls-label | ||||
| +--ro mbb-role? enumeration | ||||
| Figure 5 | ||||
| 5.2. Extended | ||||
| Following is a simplified graphical representation of the data model | ||||
| for mLDP extended operational state: | ||||
| module: ietf-mpls-mldp-extended | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability/mldp:mldp: | ||||
| +--ro hub-and-spoke {capability-mldp-hsmp}? | ||||
| | +--ro enable? boolean | ||||
| +--ro node-protection {capability-mldp-node-protection}? | ||||
| +--ro plr? boolean | ||||
| +--ro merge-point | ||||
| +--ro enable? boolean | ||||
| +--ro targeted-session-teardown-delay? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability: | ||||
| +--ro mldp | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| +--ro enable? boolean | ||||
| +--ro switchover-delay? uint16 | ||||
| +--ro timeout? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state: | ||||
| +--ro multicast-only-frr {mldp-mofrr}? | ||||
| | +--ro prefix-list? ldp-ext:prefix-list-ref | ||||
| +--ro recursive-fec | ||||
| +--ro prefix-list? ldp-ext:prefix-list-ref | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/mldp:opaque-type-lspid/mldp:fec-label/mldp:peer: | ||||
| +--ro mofrr-role? mofrr-role | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family/ldp-ext:state: | ||||
| +--ro mldp-disable? boolean | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability/mldp:mldp: | ||||
| +--ro hub-and-spoke | ||||
| | +--ro enable? boolean | ||||
| +--ro node-protection | ||||
| +--ro plr? boolean | ||||
| +--ro merge-point? boolean | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings: | ||||
| +--ro opaque-type-transit | ||||
| | +--ro fec-label* [source-address group-address rd recur-root-address recur-rd] | ||||
| | +--ro source-address inet:ip-address | ||||
| | +--ro group-address inet:ip-address-no-zone | ||||
| | +--ro rd route-distinguisher | ||||
| | +--ro recur-root-address inet:ip-address | ||||
| | +--ro recur-rd route-distinguisher | ||||
| | +--ro multipoint-type? mldp:multipoint-type | ||||
| | +--ro peer* [direction peer advertisement-type] | ||||
| | +--ro direction ldp:downstream-upstream | ||||
| | +--ro peer leafref | ||||
| | +--ro advertisement-type ldp:advertised-received | ||||
| | +--ro label? rt-types:mpls-label | ||||
| | +--ro mbb-role? enumeration | ||||
| | +--ro mofrr-role? mofrr-role | ||||
| +--ro opaque-type-bidir | ||||
| +--ro fec-label* [rp group-address rd recur-root-address recur-rd] | ||||
| +--ro rp inet:ip-address | ||||
| +--ro group-address inet:ip-address-no-zone | ||||
| +--ro rd route-distinguisher | ||||
| +--ro recur-root-address inet:ip-address | ||||
| +--ro recur-rd route-distinguisher | ||||
| +--ro multipoint-type? mldp:multipoint-type | ||||
| +--ro peer* [direction peer advertisement-type] | ||||
| +--ro direction ldp:downstream-upstream | ||||
| +--ro peer leafref | ||||
| +--ro advertisement-type ldp:advertised-received | ||||
| +--ro label? rt-types:mpls-label | ||||
| +--ro mbb-role? enumeration | ||||
| +--ro mofrr-role? mofrr-role | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/mldp:opaque-type-lspid/mldp:fec-label: | ||||
| +--ro recursive-fec* [recur-root-address recur-rd] | ||||
| +--ro recur-root-address inet:ip-address | ||||
| +--ro recur-rd route-distinguisher | ||||
| +--ro multipoint-type? mldp:multipoint-type | ||||
| +--ro peer* [direction peer advertisement-type] | ||||
| +--ro direction ldp:downstream-upstream | ||||
| +--ro peer leafref | ||||
| +--ro advertisement-type ldp:advertised-received | ||||
| +--ro label? rt-types:mpls-label | ||||
| +--ro mbb-role? enumeration | ||||
| +--ro mofrr-role? mofrr-role | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families: | ||||
| +--rw ipv6 | ||||
| +--ro state | ||||
| +--ro roots | ||||
| +--ro root* [root-address] | ||||
| +--ro root-address inet:ipv6-address | ||||
| +--ro is-self? boolean | ||||
| +--ro reachability* [address interface] | ||||
| | +--ro address inet:ipv6-address | ||||
| | +--ro interface ldp:mpls-interface-ref | ||||
| | +--ro peer? leafref | ||||
| +--ro bindings | +--ro bindings | |||
| +--ro opaque-type-lspid | +--ro opaque-type-lspid | |||
| | +--ro fec-label* [root-address lsp-id recur-root-address recur-rd] | | +--ro fec-label* [lsp-id] | |||
| | +--ro root-address inet:ipv6-address | | +--ro lsp-id uint32 | |||
| | +--ro lsp-id uint32 | | +--ro multipoint-type? mldp:multipoint-type | |||
| | +--ro recur-root-address inet:ip-address | ||||
| | +--ro recur-rd route-distinguisher | ||||
| | +--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? rt-types:mpls-label | |||
| | +--ro mbb-role? enumeration | | | +--ro mbb-role? enumeration | |||
| | +--ro mofrr-role? enumeration | | | +--ro mofrr-role? mofrr-role | |||
| | +--ro recursive-fec* [recur-root-address recur-rd] | ||||
| | +--ro recur-root-address inet:ip-address | ||||
| | +--ro recur-rd route-distinguisher | ||||
| | +--ro multipoint-type? mldp:multipoint-type | ||||
| | +--ro peer* [direction peer advertisement-type] | ||||
| | +--ro direction ldp:downstream-upstream | ||||
| | +--ro peer leafref | ||||
| | +--ro advertisement-type ldp:advertised-received | ||||
| | +--ro label? rt-types:mpls-label | ||||
| | +--ro mbb-role? enumeration | ||||
| | +--ro mofrr-role? mofrr-role | ||||
| +--ro opaque-type-transit | +--ro opaque-type-transit | |||
| | +--ro fec-label* [root-address source-address group-address ... ] | | +--ro fec-label* [source-address group-address rd recur-root-address recur-rd] | |||
| | +--ro root-address inet:ipv6-address | ||||
| | +--ro source-address inet:ip-address | | +--ro source-address inet:ip-address | |||
| | +--ro group-address inet:ip-address-no-zone | | +--ro group-address inet:ip-address-no-zone | |||
| | +--ro rd route-distinguisher | | +--ro rd route-distinguisher | |||
| | +--ro recur-root-address inet:ip-address | | +--ro recur-root-address inet:ip-address | |||
| | +--ro recur-rd route-distinguisher | | +--ro recur-rd route-distinguisher | |||
| | +--ro multipoint-type? multipoint-type | | +--ro multipoint-type? mldp: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? rt-types:mpls-label | |||
| | +--ro mbb-role? enumeration | | +--ro mbb-role? enumeration | |||
| | +--ro mofrr-role? enumeration | | +--ro mofrr-role? mofrr-role | |||
| +--ro opaque-type-bidir | +--ro opaque-type-bidir | |||
| +--ro fec-label* [root-address rp group-address ... ] | +--ro fec-label* [rp group-address rd recur-root-address recur-rd] | |||
| +--ro root-address inet:ipv6-address | ||||
| +--ro rp inet:ip-address | +--ro rp inet:ip-address | |||
| +--ro group-address inet:ip-address-no-zone | +--ro group-address inet:ip-address-no-zone | |||
| +--ro rd route-distinguisher | +--ro rd route-distinguisher | |||
| +--ro recur-root-address inet:ip-address | +--ro recur-root-address inet:ip-address | |||
| +--ro recur-rd route-distinguisher | +--ro recur-rd route-distinguisher | |||
| +--ro multipoint-type? multipoint-type | +--ro multipoint-type? mldp: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? rt-types:mpls-label | |||
| +--ro mbb-role? enumeration | +--ro mbb-role? enumeration | |||
| +--ro mofrr-role? enumeration | +--ro mofrr-role? mofrr-role | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/ldp:interfaces/ldp:interface/ldp:address-family/ldp:state: | ||||
| +--ro mldp-disable? boolean {mldp}? | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability: | ||||
| +--ro mldp | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| | +--ro enable? boolean | ||||
| | +--ro switchover-delay? uint16 | ||||
| | +--ro timeout? uint16 | ||||
| +--ro hub-and-spoke {capability-mldp-hsmp}? | ||||
| | +--ro enable? boolean | ||||
| +--ro node-protection {capability-mldp-node-protection}? | ||||
| +--ro plr? boolean | ||||
| +--ro merge-point | ||||
| +--ro enable? boolean | ||||
| +--ro targeted-session-teardown-delay? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability: | ||||
| +--ro mldp {mldp}? | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| | +--ro enable? boolean | ||||
| | +--ro switchover-delay? uint16 | ||||
| | +--ro timeout? uint16 | ||||
| +--ro hub-and-spoke {capability-mldp-hsmp}? | ||||
| | +--ro enable? boolean | ||||
| +--ro node-protection {capability-mldp-node-protection}? | ||||
| +--ro plr? boolean | ||||
| +--ro merge-point | ||||
| +--ro enable? boolean | ||||
| +--ro targeted-session-teardown-delay? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:received-peer-state/ldp:capability: | ||||
| +--ro mldp {mldp}? | ||||
| +--ro p2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro mp2mp | ||||
| | +--ro enable? boolean | ||||
| +--ro make-before-break | ||||
| | +--ro enable? boolean | ||||
| +--ro hub-and-spoke | ||||
| | +--ro enable? boolean | ||||
| +--ro node-protection | ||||
| +--ro plr? boolean | ||||
| +--ro merge-point? boolean | ||||
| Figure 3 | Figure 6 | |||
| 5.1. Derived states | 5.3. Derived states | |||
| Following are main areas for which mLDP operational derived state is | Following are main areas for which mLDP operational derived state is | |||
| defined: | defined: | |||
| o Root | o Root | |||
| o Bindings (FEC-label) | o Bindings (FEC-label) | |||
| o Capabilities | o Capabilities | |||
| 5.1.1. Root state | 5.3.1. Root state | |||
| Root address is a fundamental construct for MP FEC bindings and LSPs. | Root address is a fundamental construct for MP FEC bindings and LSPs. | |||
| The root state provides information on all the known roots in a given | The root state provides information on all the known roots in a given | |||
| address-familty, and their information on the root reachability (as | address-familty, and their information on the root reachability (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 upstream path is done on per-LSP basis at the time of | |||
| LSP setup. Similarly, when protection mechanisms like MBB or MoFRR | LSP setup. Similarly, when protection mechanisms like MBB or MoFRR | |||
| are in place, the path designation as active/standby or primary/ | are in place, the path designation as active/standby or primary/ | |||
| backup is also done on per LSP basis. It is to be noted that a given | backup is also done on per LSP basis. It is to be noted that a given | |||
| root can be shared amongst multiple P2MP and/or MP2MP LSPs. | root can be shared amongst multiple P2MP and/or MP2MP LSPs. | |||
| skipping to change at page 14, line 31 ¶ | skipping to change at page 18, line 44 ¶ | |||
| LDP: peer 192.168.0.3:0 | LDP: peer 192.168.0.3:0 | |||
| root 2.2.2.2: | root 2.2.2.2: | |||
| path1: | path1: | |||
| RIB: 3.3.3.3; (NOTE: This is a recursive path) | RIB: 3.3.3.3; (NOTE: This is a recursive path) | |||
| LDP: peer 192.168.0.3:0 (NOTE: T-mLDP peer) | LDP: peer 192.168.0.3:0 (NOTE: T-mLDP peer) | |||
| root 9.9.9.9: | root 9.9.9.9: | |||
| . . . . | . . . . | |||
| Figure 4 | Figure 7 | |||
| A root entry on a root LSR itself will be presented as follows: | A root entry on a root LSR itself will be presented as follows: | |||
| root 9.9.9.9: | root 9.9.9.9: | |||
| is-self | is-self | |||
| Figure 5 | Figure 8 | |||
| 5.1.2. Bindings state | 5.3.2. Bindings state | |||
| Binding state provides information on mLDP FEC-label bindings for | Binding state provides information on mLDP FEC-label bindings for | |||
| both P2MP and MP2MP FEC types. Like LDP, the FEC-label binding | both P2MP and MP2MP FEC types. Like LDP, the FEC-label binding | |||
| derived state is presented in a FEC-centric view per address-family, | derived state is presented in a FEC-centric view per address-family, | |||
| and provides information on both inbound (received) and outbound | and provides information on both inbound (received) and outbound | |||
| (advertised) bindings. The FEC is presented as (root-address, | (advertised) bindings. The FEC is presented as (root-address, | |||
| opaque-type-data) and the direction (upstream or downstream) is | opaque-type-data) as described earlier in section Section 3.2, and | |||
| picked with respect to root reachability. In case of MBB or/and | the direction (upstream or downstream) is picked with respect to root | |||
| MoFRR, the role of a given peer binding is also provided with respect | reachability. In case of MBB or/and MoFRR, the role of a given peer | |||
| to MBB (active or standby) or/and MoFRR (primary or backup). | binding is also provided with respect to MBB (active or standby) or/ | |||
| and MoFRR (primary or backup). | ||||
| This document covers following type of opaque values with their keys | ||||
| in the operational model of mLDP bindings: | ||||
| +-------------------------+--------------------+------------+ | ||||
| | Opaque Type | Key | RFC | | ||||
| +-------------------------+--------------------+------------+ | ||||
| | Generic LSP Identifier | LSP Id | [RFC6388] | | ||||
| | Transit IPv4 Source | Source, Group | [RFC6826] | | ||||
| | Transit IPv6 Source | Source, Group | [RFC6826] | | ||||
| | Transit IPv4 Bidir | RP, Group | [RFC6826] | | ||||
| | Transit IPv6 Bidir | RP, Group | [RFC6826] | | ||||
| | Transit VPNv4 Source | Source, Group, RD | [RFC7246] | | ||||
| | Transit VPNv6 Source | Source, Group, RD | [RFC7246] | | ||||
| | Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] | | ||||
| | Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] | | ||||
| | Recursive Opaque | Root | [RFC6512] | | ||||
| | VPN-Recursive Opaque | Root, RD | [RFC6512] | | ||||
| +-------------------------+--------------------+------------+ | ||||
| Table 1: MP Opaque Types and keys | ||||
| It is to be noted that there are three basic types (LSP Id, Source, | ||||
| and Bidir) and then there are variants (VPN, recursive, VPN- | ||||
| recursive) on top of these basic types. | ||||
| Following captures a high level tree hierarchy for mLDP bindings | Following captures a high level tree hierarchy for mLDP bindings | |||
| state: | state: | |||
| +--rw mldp (augmentation of ldp:global) | +--rw mpls-ldp! | |||
| +--rw address-family* [afi] | +--rw global | |||
| +--rw afi address-family | +--rw mldp | |||
| +--rw address-families | ||||
| +--rw ipv4 (or ipv6) | ||||
| +--ro state | +--ro state | |||
| +--ro ipv4 (or ipv6) | +--ro roots | |||
| +--ro bindings | +--ro root* [root-address] | |||
| +--ro opaque-type-xxx [root-address, type-specific-key] | +--ro .... | |||
| +--ro root-address | +--ro bindings | |||
| +--ro ... | +--ro opaque-type-xxx | |||
| +--ro recur-root-address inet:ipv4-address | | +--ro fec-label* [type-specific-key] | |||
| +--ro recur-rd route-distinguisher | | +--ro some_key_1 ... | |||
| +--ro multipoint-type? multipoint-type | | +--ro some_key_2 ... | |||
| +--ro peer* [direction peer advertisement-type] | | +--ro multipoint-type? multipoint-type | |||
| +--ro direction downstream-upstream | | +--ro peer* [direction peer advertisement-type] | |||
| +--ro peer leafref | | | +--ro direction ldp:downstream-upstream | |||
| +--ro advertisement-type advertised-received | | | +--ro peer leafref | |||
| +--ro label? mpls:mpls-label | | | +--ro advertisement-type ldp:advertised-received | |||
| +--ro mbb-role? enumeration | | | +--ro label? rt-types:mpls-label | |||
| +--ro mofrr-role? enumeration | | | +--ro mbb-role? enumeration | |||
| | | +--ro mldp-ext:mofrr-role? mofrr-role | ||||
| +--ro opaque-type-yyy | ||||
| | +--ro fec-label* [type-specific-key] | ||||
| | +--ro some_key_1 ... | ||||
| ... | ||||
| Figure 6 | Figure 9 | |||
| In the above tree, the type-specific-key varies with the base type as | mLDP binding state is organized and presented per root address, and | |||
| listed in earlier Table 1. For example, if the opaque type is | hence the bindings container hang off a root node in the model. The | |||
| Generic LSP Identifier, then the type-specific-key will be a uint32 | bindings state is made available for FECs pertaining to different | |||
| value corresponding to the LSP. Please see the complete model for | types of opaque types, with some state avaiable under "base" tree and | |||
| all other types. | the rest under "extended". | |||
| Moreover, the binding tree defines only three types of sub-trees | In the above tree, the various opaque types alongwith their type | |||
| (i.e. lspid, src, and bidir) which is able to map the respective | specific key(s) refer to the table Table 1 captured earlier in the | |||
| variants (vpn, recursive, and vpn-recusrive) accordingly. For | document. For example, if the opaque type is Generic LSP Identifier, | |||
| example, the key for opaque-type-src is [R, S, G, rd, recur-R, recur- | then the type-specific-key will be a uint32 LSP-Id key. Please see | |||
| RD], where basic type will specify (R, S,G,-, -, -), VPN type will | the complete model for all other types. | |||
| specify (R, S,G, rd, -, -), recursive type will specify [R, S,G, -, | ||||
| recur-R, -] and VPN-recursive type will specify [R, S,G, -, recur-R, | ||||
| recur-rd]. | ||||
| It is important to take note of the following: | It is important to take note of the following: | |||
| o The address-family ipv4/ipv4 applies to "root" address in the mLDP | o The address-family ipv4/ipv4 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, RP etc) do not | |||
| have to be of the same address family type as the root. | 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 Recursive opaque type, | |||
| and (recur-root-address, recur-rd) fields applies to VPN-Recursive | and (recur-root-address, recur-rd) fields applies to VPN-Recursive | |||
| opaque types as defined in [RFC6512] | opaque types as defined in [RFC6512] | |||
| skipping to change at page 17, line 23 ¶ | skipping to change at page 21, line 27 ¶ | |||
| FEC (root 2.2.2.2, S=192.168.1.1, G=224.1.1.1): | FEC (root 2.2.2.2, S=192.168.1.1, G=224.1.1.1): | |||
| type: p2mp | type: p2mp | |||
| upstream: | upstream: | |||
| advertised: | advertised: | |||
| peer 192.168.0.1:0, label 16000 (local) | peer 192.168.0.1:0, label 16000 (local) | |||
| downstream: | downstream: | |||
| received: | received: | |||
| peer 192.168.0.2:0, label 17000 (remote) | peer 192.168.0.2:0, label 17000 (remote) | |||
| peer 192.168.0.3:0, label 18000 (remote) | peer 192.168.0.3:0, label 18000 (remote) | |||
| Figure 7 | Figure 10 | |||
| The following diagram illustrates the FEC-label binding information | The following diagram illustrates the FEC-label binding information | |||
| structure for a similar MP2MP LSP on a branch/transit LSR: | structure for a similar MP2MP LSP on a branch/transit LSR: | |||
| FEC (root 2.2.2.2, RP=192.168.9.9, G=224.1.1.1): | FEC (root 2.2.2.2, RP=192.168.9.9, G=224.1.1.1): | |||
| type: mp2mp | type: mp2mp | |||
| upstream: | upstream: | |||
| advertised: | advertised: | |||
| peer 192.168.0.1:0, label 16000 (local) | peer 192.168.0.1:0, label 16000 (local) | |||
| received: | received: | |||
| peer 192.168.0.1:0, label 17000 (remote) | peer 192.168.0.1:0, label 17000 (remote) | |||
| downstream: | downstream: | |||
| advertised: | advertised: | |||
| peer 192.168.0.2:0, label 16001 (local), MBB role=active | peer 192.168.0.2:0, label 16001 (local), MBB role=active | |||
| peer 192.168.0.3:0, label 16002 (local), MBB role=standby | peer 192.168.0.3:0, label 16002 (local), MBB role=standby | |||
| received: | received: | |||
| peer 192.168.0.2:0, label 17001 (remote) | peer 192.168.0.2:0, label 17001 (remote) | |||
| peer 192.168.0.3:0, label 18001 (remote) | peer 192.168.0.3:0, label 18001 (remote) | |||
| Figure 8 | Figure 11 | |||
| 5.1.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 | mLDP notification module consists of notification related to changes | |||
| in the operational state of an mLDP FEC. Following is a simplified | in the operational state of an mLDP FEC. | |||
| graphical representation of the data model for mLDP notifications: | ||||
| 6.1. Base | ||||
| Following is a simplified graphical representation of the base data | ||||
| model for mLDP notifications: | ||||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| notifications: | notifications: | |||
| +---n mpls-mldp-fec-event | +---n mpls-mldp-fec-event | |||
| +--ro event-type? ldp:oper-status-event-type | +--ro event-type? ldp:oper-status-event-type | |||
| +--ro tree-type? multipoint-type | +--ro tree-type? multipoint-type | |||
| +--ro root? inet:ip-address | +--ro root? inet:ip-address | |||
| +--ro (lsp-key-type)? | +--ro (lsp-key-type)? | |||
| +--:(lsp-id-based) | +--:(lsp-id) | |||
| | +--ro lsp-id? uint16 | +--ro lsp-id? uint16 | |||
| +--:(source-group-based) | ||||
| +--ro source-address? inet:ip-address | ||||
| +--ro group-address? inet:ip-address | ||||
| Figure 9 | Figure 12 | |||
| 6.2. Extended | ||||
| Following is a simplified graphical representation of the extended | ||||
| data model for mLDP notifications: | ||||
| module: ietf-mpls-mldp | ||||
| augment /mldp:mpls-mldp-fec-event/mldp:lsp-key-type: | ||||
| +--:(source-group-based) | ||||
| +---- source-address? inet:ip-address | ||||
| +---- group-address? inet:ip-address | ||||
| Figure 13 | ||||
| 7. Actions | 7. Actions | |||
| Currently, no RPCs/actions are defined for mLDP. | Currently, no RPCs/actions are defined for mLDP. | |||
| 8. Open Items | 8. Open Items | |||
| Following is a list of open items that are to be discussed and | Following is a list of open items that are to be discussed and | |||
| addressed in future revisions of this document: | addressed in future revisions of this document: | |||
| o Revisit and cut down on the scope of the document and number of | ||||
| features it is trying to cover | ||||
| o Split the model into a base and extended items | ||||
| o Align operational state modeling with other routing protocols and | o Align operational state modeling with other routing protocols and | |||
| [I-D.openconfig-netmod-opstate] | [I-D.openconfig-netmod-opstate] | |||
| o Specify default values for configuration parameters | o Specify default values for configuration parameters | |||
| o Add statistics for mLDP root LSPs and bindings | ||||
| o Extend the "Configured Leaf LSPs" for various type of opaque-types | o Extend the "Configured Leaf LSPs" for various type of opaque-types | |||
| o Extend mLDP notifications for other types of opaque values as well | o Extend mLDP notifications for other types of opaque values as well | |||
| o Make MP LSP configuration and state model consistent | ||||
| 9. YANG Specification | 9. YANG Specification | |||
| Following is the actual YANG definition for mLDP constructs defined | Following is the actual YANG definition (module) for mLDP constructs | |||
| earlier in the document. | defined earlier in the document. | |||
| <CODE BEGINS> file "ietf-mpls-mldp@2016-11-01.yang" --> | 9.1. Base | |||
| module ietf-mpls-mldp { | <CODE BEGINS> file "ietf-mpls-mldp@2017-03-12.yang" | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; | ||||
| prefix mldp; | ||||
| import ietf-inet-types { | module ietf-mpls-mldp { | |||
| prefix "inet"; | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; | |||
| } | prefix "mldp"; | |||
| import ietf-routing { | import ietf-inet-types { | |||
| prefix "rt"; | prefix "inet"; | |||
| } | } | |||
| import ietf-mpls { | import ietf-routing { | |||
| prefix "mpls"; | prefix "rt"; | |||
| } | } | |||
| import ietf-routing-types { | ||||
| prefix "rt-types"; | ||||
| } | ||||
| import ietf-mpls-ldp { | import ietf-mpls-ldp { | |||
| prefix "ldp"; | prefix "ldp"; | |||
| } | } | |||
| organization | organization | |||
| "IETF MPLS Working Group"; | "IETF MPLS Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/mpls/> | "WG Web: <http://tools.ietf.org/wg/teas/> | |||
| WG List: <mailto:mpls@ietf.org> | WG List: <mailto:teas@ietf.org> | |||
| WG Chair: Loa Andersson | WG Chair: Loa Andersson | |||
| <mailto:loa@pi.nu> | <mailto:loa@pi.nu> | |||
| WG Chair: Ross Callon | WG Chair: Ross Callon | |||
| <mailto:rcallon@juniper.net> | <mailto:rcallon@juniper.net> | |||
| WG Chair: George Swallow | WG Chair: George Swallow | |||
| <mailto:swallow.ietf@gmail.com> | <mailto:swallow.ietf@gmail.com> | |||
| Editor: Kamran Raza | Editor: Kamran Raza | |||
| <mailto:skraza@cisco.com> | <mailto:skraza@cisco.com> | |||
| Editor: Rajiv Asati | Editor: Rajiv Asati | |||
| <mailto:rajiva@cisco.com> | <mailto:rajiva@cisco.com> | |||
| Editor: Xufeng Liu | Editor: Xufeng Liu | |||
| <mailto:xliu@kuatrotech.com> | <mailto:Xufeng_Liu@jabil.com> | |||
| Editor: Santosh Esale | Editor: Santosh Esale | |||
| <mailto:sesale@juniper.net> | <mailto:sesale@juniper.net> | |||
| Editor: Xia Chen | Editor: Xia Chen | |||
| <mailto:jescia.chenxia@huawei.com> | <mailto:jescia.chenxia@huawei.com> | |||
| Editor: Himanshu Shah | Editor: Himanshu Shah | |||
| <mailto:hshah@ciena.com> | <mailto:hshah@ciena.com>"; | |||
| Editor: Sowmya Krishnaswamy | description | |||
| <mailto:sowkrish@cisco.com>"; | "This YANG module defines the essential components for the | |||
| management of Multi-Protocol Label Switching (MPLS) Multipoint | ||||
| LDP (mLDP)."; | ||||
| description | revision 2017-03-12 { | |||
| "This YANG module defines the essential components for the | description | |||
| management of Multi-Protocol Label Switching (MPLS) Multipoint | "Initial revision."; | |||
| LDP (mLDP)."; | reference | |||
| "RFC XXXX: YANG Data Model for MPLS mLDP."; | ||||
| } | ||||
| /* | ||||
| * Typedefs | ||||
| */ | ||||
| typedef multipoint-type { | ||||
| type enumeration { | ||||
| enum p2mp { | ||||
| description "Point to multipoint."; | ||||
| } | ||||
| enum mp2mp { | ||||
| description "Multipoint to multipoint."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "p2mp or mp2mp."; | ||||
| } | ||||
| revision 2016-11-01 { | /* | |||
| description | * Groupings | |||
| "Initial revision."; | */ | |||
| reference | ||||
| "RFC XXXX: YANG Data Model for MPLS mLDP."; | ||||
| } | ||||
| /* | grouping mldp-capabilities { | |||
| * Features | description | |||
| */ | "mLDP capabilities."; | |||
| container p2mp { | ||||
| description | ||||
| "Configure point-to-multipoint capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable point-to-multipoint."; | ||||
| } | ||||
| } | ||||
| container mp2mp { | ||||
| description | ||||
| "Configure multipoint-to-multipoint capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable multipoint-to-multipoint."; | ||||
| } | ||||
| } | ||||
| container make-before-break { | ||||
| description | ||||
| "Configure make-before-break capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable make-before-break."; | ||||
| feature capability-mldp-hsmp { | } | |||
| description | leaf switchover-delay { | |||
| "This feature indicates that the system allows to configure | type uint16; | |||
| mLDP hub-and-spoke-multipoint capability."; | units seconds; | |||
| } | description | |||
| "Switchover delay in seconds."; | ||||
| } | ||||
| leaf timeout { | ||||
| type uint16; | ||||
| units seconds; | ||||
| description | ||||
| "Timeout in seconds."; | ||||
| } | ||||
| } | ||||
| } // mldp-capabilities | ||||
| feature capability-mldp-node-protection { | grouping mldp-fec-event { | |||
| description | description | |||
| "This feature indicates that the system allows to configure | "A mLDP FEC event."; | |||
| mLDP node-protection capability."; | leaf tree-type { | |||
| } | type multipoint-type; | |||
| description | ||||
| "p2mp or mp2mp."; | ||||
| } | ||||
| leaf root { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| choice lsp-key-type { | ||||
| description | ||||
| "LSP ID based or source-group based ."; | ||||
| case lsp-id { | ||||
| leaf lsp-id { | ||||
| type uint16; | ||||
| description | ||||
| "ID to identify the LSP."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } // mldp-fec-event | ||||
| feature mldp { | grouping mldp-binding-label-peer-state-attributes { | |||
| description | description | |||
| "This feature indicates that the system supports Multicast | "mLDP label binding per peer attributes."; | |||
| LDP (mLDP)."; | leaf direction { | |||
| } | type ldp:downstream-upstream; | |||
| description | ||||
| "Downstream or upstream."; | ||||
| } | ||||
| leaf peer { | ||||
| type leafref { | ||||
| path | ||||
| "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; | ||||
| } | ||||
| description | ||||
| "LDP peer from which this binding is received, | ||||
| or to which this binding is advertised."; | ||||
| } | ||||
| leaf advertisement-type { | ||||
| type ldp:advertised-received; | ||||
| description | ||||
| "Advertised or received."; | ||||
| } | ||||
| leaf label { | ||||
| type rt-types:mpls-label; | ||||
| description | ||||
| "Advertised (outbound) or received (inbound) label."; | ||||
| } | ||||
| leaf mbb-role { | ||||
| when "../direction = 'upstream'" { | ||||
| description | ||||
| "For upstream."; | ||||
| } | ||||
| type enumeration { | ||||
| enum none { | ||||
| description "MBB is not enabled."; | ||||
| } | ||||
| enum active { | ||||
| description "This LSP is active."; | ||||
| } | ||||
| enum inactive { | ||||
| description "This LSP is inactive."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The MBB status of this LSP."; | ||||
| } | ||||
| } // mldp-binding-label-peer-state-attributes | ||||
| feature mldp-mofrr { | grouping mldp-binding-label-state-attributes { | |||
| description | description | |||
| "This feature indicates that the system supports mLDP | "mLDP label binding attributes."; | |||
| Multicast only FRR (MoFRR)."; | ||||
| } | ||||
| /* | leaf multipoint-type { | |||
| * Typedefs | type multipoint-type; | |||
| */ | description | |||
| typedef multipoint-type { | "The type of mutipoint, p2mp or mp2mp."; | |||
| type enumeration { | } | |||
| enum p2mp { | list peer { | |||
| description "Point to multipoint."; | key "direction peer advertisement-type"; | |||
| } | description | |||
| enum mp2mp { | "List of advertised and received peers."; | |||
| description "Multipoint to multipoint."; | uses mldp-binding-label-peer-state-attributes; | |||
| } | } // peer | |||
| } | } // mldp-binding-label-state-attributes | |||
| description | ||||
| "p2mp or mp2mp."; | ||||
| } | ||||
| typedef route-distinguisher { | grouping mldp-ipv4-configured-lsp-roots { | |||
| type string { | description | |||
| } | "mLDP IPv4 roots containers."; | |||
| description | ||||
| "Type definition for route distinguisher."; | ||||
| reference | ||||
| "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | ||||
| } | ||||
| /* | container roots { | |||
| * Groupings | description | |||
| */ | "Configured IPv4 multicast LSPs."; | |||
| list root { | ||||
| key "root-address"; | ||||
| description | ||||
| "List of roots for configured multicast LSPs."; | ||||
| grouping mldp-capabilities { | leaf root-address { | |||
| description | type inet:ipv4-address; | |||
| "mLDP capabilities."; | description | |||
| "Root address."; | ||||
| } | ||||
| container p2mp { | choice lsp-key-type { | |||
| description | description | |||
| "Configure point-to-multipoint capability."; | "LSP ID based or source-group based ."; | |||
| leaf enable { | case lsp-id { | |||
| type boolean; | container opaque-type-lspid { | |||
| description | description | |||
| "Enable point-to-multipoint."; | "The type of opaque value element is | |||
| } | the generic LSP identifier"; | |||
| } | list lsp { | |||
| container mp2mp { | key "lsp-id"; | |||
| description | description | |||
| "Configure multipoint-to-multipoint capability."; | "List of LSPs."; | |||
| leaf enable { | leaf lsp-id { | |||
| type boolean; | type uint16; | |||
| description | description "ID to identify the LSP."; | |||
| "Enable multipoint-to-multipoint."; | } | |||
| } | } // list lsp | |||
| } | } // opaque-type-lspid | |||
| container make-before-break { | ||||
| description | ||||
| "Configure make-before-break capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable make-before-break."; | ||||
| } | ||||
| leaf switchover-delay { | ||||
| type uint16; | ||||
| units seconds; | ||||
| description | ||||
| "Switchover delay in seconds."; | ||||
| } | ||||
| leaf timeout { | ||||
| type uint16; | ||||
| units seconds; | ||||
| description | ||||
| "Timeout in seconds."; | ||||
| } | ||||
| } | ||||
| container hub-and-spoke { | ||||
| if-feature capability-mldp-hsmp; | ||||
| description | ||||
| "Configure hub-and-spoke-multipoint capability."; | ||||
| reference | ||||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | ||||
| Label Switched Path"; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable hub-and-spoke-multipoint."; | ||||
| } | ||||
| } | ||||
| container node-protection { | ||||
| if-feature capability-mldp-node-protection; | ||||
| description | ||||
| "Configure node-protection capability."; | ||||
| reference | ||||
| "RFC7715: mLDP Node Protection."; | ||||
| leaf plr { | ||||
| type boolean; | ||||
| description | ||||
| "Point of Local Repair capable for MP LSP node | ||||
| protection."; | ||||
| } | ||||
| container merge-point { | ||||
| description | ||||
| "Merge Point capable for MP LSP node protection."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable merge point capability."; | ||||
| } | ||||
| leaf targeted-session-teardown-delay { | ||||
| type uint16; | ||||
| units seconds; | ||||
| description | ||||
| "Targeted session teardown delay."; | ||||
| } | ||||
| } // merge-point | ||||
| } | ||||
| } // mldp-capabilities | ||||
| grouping mldp-configured-lsp-roots { | } // case lsp-id | |||
| description | } // choice lsp-key-type | |||
| "mLDP roots containers."; | } // list root | |||
| } // roots | ||||
| } // mldp-ipv4-configured-lsp-roots | ||||
| container roots-ipv4 { | /* | |||
| * Configuration data nodes | ||||
| */ | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability" { | ||||
| description "Augmentation for MLDP global capability."; | ||||
| container mldp { | ||||
| description | ||||
| "Multipoint capabilities."; | ||||
| uses mldp-capabilities; | ||||
| } | ||||
| } | ||||
| when "../../../afi = 'ipv4'" { | /* | |||
| description | * Operational state data nodes | |||
| "Only for IPv4."; | */ | |||
| } | augment "/rt:routing/rt:control-plane-protocols/" | |||
| description | + "ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability" { | |||
| "Configured IPv4 multicast LSPs."; | description "Augmentation for MLDP global capability."; | |||
| list root { | container mldp { | |||
| key "root-address"; | description | |||
| description | "Multipoint capabilities."; | |||
| "List of roots for configured multicast LSPs."; | uses mldp-capabilities; | |||
| } | ||||
| } | ||||
| leaf root-address { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| type inet:ipv4-address; | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/" | |||
| description | + "ldp:received-peer-state/ldp:capability" { | |||
| "Root address."; | description | |||
| } | "Augmentation for MLDP received peer state capability."; | |||
| container mldp { | ||||
| description | ||||
| "Multipoint capabilities."; | ||||
| list lsp { | container p2mp { | |||
| must "(lsp-id = 0 and source-address != '0.0.0.0' and " | description | |||
| + "group-address != '0.0.0.0') or " | "Configure point-to-multipoint capability."; | |||
| + "(lsp-id != 0 and source-address = '0.0.0.0' and " | leaf enable { | |||
| + "group-address = '0.0.0.0')" { | type boolean; | |||
| description | description | |||
| "A LSP can be identified by either <lsp-id> or | "Enable point-to-multipoint."; | |||
| <source-address, group-address>."; | ||||
| } | ||||
| key "lsp-id source-address group-address"; | ||||
| description | ||||
| "List of LSPs."; | ||||
| leaf lsp-id { | ||||
| type uint16; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| leaf source-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ipv4-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| } // list lsp | ||||
| } // list root | ||||
| } // roots-ipv4 | ||||
| container roots-ipv6 { | } | |||
| } | ||||
| container mp2mp { | ||||
| description | ||||
| "Configure multipoint-to-multipoint capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable multipoint-to-multipoint."; | ||||
| } | ||||
| } | ||||
| container make-before-break { | ||||
| description | ||||
| "Configure make-before-break capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable make-before-break."; | ||||
| } | ||||
| } | ||||
| } // mldp | ||||
| } | ||||
| when "../../../afi = 'ipv6'" { | /* | |||
| description | * Global augmentation | |||
| "Only for IPv6."; | */ | |||
| } | augment "/rt:routing/rt:control-plane-protocols/" | |||
| description | + "ldp:mpls-ldp/ldp:global" { | |||
| "Configured IPv6 multicast LSPs."; | description "MLDP global augmentation."; | |||
| container mldp { | ||||
| description | ||||
| "mLDP attributes at per instance level. Defining | ||||
| attributes here does not enable any MP capabilities. | ||||
| MP capabilities need to be explicitly enabled under | ||||
| container capability."; | ||||
| list root { | container config { | |||
| key "root-address"; | description | |||
| description | "Configuration data."; | |||
| "List of roots for configured multicast LSPs."; | leaf enable { | |||
| type boolean; | ||||
| description | ||||
| "Enable mLDP."; | ||||
| } | ||||
| } | ||||
| container state { | ||||
| config false; | ||||
| description | ||||
| "Operational state data."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable mLDP."; | ||||
| } | ||||
| } | ||||
| leaf root-address { | container address-families { | |||
| type inet:ipv6-address; | description | |||
| description | "Per-af params."; | |||
| "Root address."; | ||||
| } | ||||
| list lsp { | container ipv4 { | |||
| must "(lsp-id = 0 and source-address != '::' and " | description | |||
| + "group-address != '::') or " | "IPv4 information."; | |||
| + "(lsp-id != 0 and source-address = '::' and " | container state { | |||
| + "group-address = '::')" { | config false; | |||
| description | description | |||
| "A LSP can be identified by either <lsp-id> or | "Operational state data."; | |||
| <source-address, group-address>."; | ||||
| } | ||||
| key "lsp-id source-address group-address"; | ||||
| description | ||||
| "List of LSPs."; | ||||
| leaf lsp-id { | ||||
| type uint16; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| leaf source-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ipv6-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| } // list lsp | ||||
| } // list root | ||||
| } // roots-ipv6 | ||||
| } // mldp-configured-lsp-roots | ||||
| grouping mldp-fec-event { | container roots { | |||
| description | description | |||
| "A mLDP FEC event."; | "IPv4 multicast LSP roots."; | |||
| leaf tree-type { | list root { | |||
| type multipoint-type; | key "root-address"; | |||
| description | description | |||
| "p2mp or mp2mp."; | "List of roots for configured multicast LSPs."; | |||
| } | ||||
| leaf root { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| choice lsp-key-type { | ||||
| description | ||||
| "LSP ID based or source-group based ."; | ||||
| case lsp-id-based { | ||||
| leaf lsp-id { | ||||
| type uint16; | ||||
| description | ||||
| "ID to identify the LSP."; | ||||
| } | ||||
| } | ||||
| case source-group-based { | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "LSP source address."; | leaf root-address { | |||
| } | type inet:ipv4-address; | |||
| leaf group-address { | description | |||
| type inet:ip-address; | "Root address."; | |||
| description | } | |||
| "Multicast group address."; | ||||
| } | ||||
| } // case source-group-based | ||||
| } | ||||
| } // mldp-fec-event | ||||
| grouping mldp-binding-label-state-attributes { | leaf is-self { | |||
| description | type boolean; | |||
| "mLDP label binding attributes."; | description | |||
| "This is the root."; | ||||
| } | ||||
| leaf multipoint-type { | list reachability { | |||
| type multipoint-type; | key "address interface"; | |||
| description | description | |||
| "The type of mutipoint, p2mp or mp2mp."; | "A next hop for reachability to root, | |||
| } | as a RIB view."; | |||
| list peer { | leaf address { | |||
| key "direction peer advertisement-type"; | type inet:ipv4-address; | |||
| description | description | |||
| "List of advertised and received peers."; | "The next hop address to reach root."; | |||
| leaf direction { | } | |||
| type ldp:downstream-upstream; | leaf interface { | |||
| description | type ldp:mpls-interface-ref; | |||
| "Downstream or upstream."; | description | |||
| } | "Interface connecting to next-hop."; | |||
| leaf peer { | } | |||
| type leafref { | leaf peer { | |||
| path | type leafref { | |||
| "../../../../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id"; | path | |||
| } | "../../../../../../../../../ldp:peers/" | |||
| description | + "ldp:peer/ldp:lsr-id"; | |||
| "LDP peer from which this binding is received, | } | |||
| or to which this binding is advertised."; | description | |||
| } | "LDP peer from which this next hop can be | |||
| leaf advertisement-type { | reached."; | |||
| type ldp:advertised-received; | } | |||
| description | } | |||
| "Advertised or received."; | ||||
| } | ||||
| leaf label { | ||||
| type mpls:mpls-label; | ||||
| description | ||||
| "Advertised (outbound) or received (inbound) label."; | ||||
| } | ||||
| leaf mbb-role { | ||||
| when "../direction = 'upstream'" { | ||||
| description | ||||
| "For upstream."; | ||||
| } | ||||
| type enumeration { | ||||
| enum none { | ||||
| description "MBB is not enabled."; | ||||
| } | ||||
| enum active { | ||||
| description "This LSP is active."; | ||||
| } | ||||
| enum inactive { | ||||
| description "This LSP is inactive."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The MBB status of this LSP."; | ||||
| } | ||||
| leaf mofrr-role { | ||||
| when "../direction = 'upstream'" { | ||||
| description | ||||
| "For upstream."; | ||||
| } | ||||
| type enumeration { | ||||
| enum none { | ||||
| description "MOFRR is not enabled."; | ||||
| } | ||||
| enum primary { | ||||
| description "This LSP is primary."; | ||||
| } | ||||
| enum backup { | ||||
| description "This LSP is backup."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The MOFRR status of this LSP."; | ||||
| } | ||||
| } // peer | ||||
| } // mldp-binding-label-state-attributes | ||||
| /* | container bindings { | |||
| * Configuration data nodes | description | |||
| */ | "mLDP FEC to label bindings."; | |||
| augment "/rt:routing/rt:control-plane-protocols/" | container opaque-type-lspid { | |||
| + "ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability" { | description | |||
| description "Augmentation for MLDP global capability."; | "The type of opaque value element is | |||
| container mldp { | the generic LSP identifier"; | |||
| description | reference | |||
| "Multipoint capabilities."; | "RFC6388: Label Distribution Protocol | |||
| uses mldp-capabilities; | Extensions for Point-to-Multipoint and | |||
| } | Multipoint-to-Multipoint Label Switched | |||
| } | Paths."; | |||
| list fec-label { | ||||
| key | ||||
| "lsp-id"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf lsp-id { | ||||
| type uint32; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-lspid | ||||
| } // bindings | ||||
| } // list root | ||||
| } // roots | ||||
| } // state | ||||
| container configured-leaf-lsps { | ||||
| description | ||||
| "Configured multicast LSPs."; | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | container p2mp { | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability" { | description | |||
| description "Augmentation for MLDP peer capability."; | "Configured point-to-multipoint LSPs."; | |||
| container mldp { | uses mldp-ipv4-configured-lsp-roots; | |||
| if-feature mldp; | } | |||
| description | container mp2mp { | |||
| "mLDP capabilities."; | description | |||
| uses mldp-capabilities; | "Configured multipoint-to-multipoint LSPs."; | |||
| } | uses mldp-ipv4-configured-lsp-roots; | |||
| } | } | |||
| } // configured-leaf-lsps | ||||
| } // ipv4 | ||||
| } // list address-family | ||||
| } // mldp | ||||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | /* | |||
| + "ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/" | * Notifications | |||
| + "ldp:interfaces/ldp:interface/ldp:address-family/" | */ | |||
| + "ldp:config" { | notification mpls-mldp-fec-event { | |||
| description | description | |||
| "Augmentation for MLDP nexthop forwarding interface."; | "Notification event for a change of FEC status."; | |||
| leaf mldp-disable { | leaf event-type { | |||
| if-feature mldp; | type ldp:oper-status-event-type; | |||
| type boolean; | description "Event type."; | |||
| description | } | |||
| "Disable mLDP forwarding on the interface."; | uses mldp-fec-event; | |||
| } | } | |||
| } | } | |||
| /* | <CODE ENDS> | |||
| * Operational state data nodes | ||||
| */ | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability" { | ||||
| description "Augmentation for MLDP global capability."; | ||||
| container mldp { | ||||
| description | ||||
| "Multipoint capabilities."; | ||||
| uses mldp-capabilities; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | Figure 14 | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability" { | ||||
| description "Augmentation for MLDP peer capability."; | ||||
| container mldp { | ||||
| if-feature mldp; | ||||
| description | ||||
| "mLDP capabilities."; | ||||
| uses mldp-capabilities; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | 9.2. Extended | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/" | ||||
| + "ldp:received-peer-state/ldp:capability" { | ||||
| description | ||||
| "Augmentation for MLDP received peer state capability."; | ||||
| container mldp { | ||||
| if-feature mldp; | ||||
| description | ||||
| "Multipoint capabilities."; | ||||
| container p2mp { | <CODE BEGINS> file "ietf-mpls-mldp-extended@2017-03-12.yang" | |||
| description | ||||
| "Configure point-to-multipoint capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable point-to-multipoint."; | ||||
| } | ||||
| } | module ietf-mpls-mldp-extended { | |||
| container mp2mp { | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended"; | |||
| description | prefix "mldp-ext"; | |||
| "Configure multipoint-to-multipoint capability."; | import ietf-inet-types { | |||
| leaf enable { | prefix "inet"; | |||
| type boolean; | } | |||
| description | ||||
| "Enable multipoint-to-multipoint."; | ||||
| } | ||||
| } | ||||
| container make-before-break { | ||||
| description | ||||
| "Configure make-before-break capability."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable make-before-break."; | ||||
| } | ||||
| } | ||||
| container hub-and-spoke { | ||||
| description | ||||
| "Configure hub-and-spoke-multipoint capability."; | ||||
| reference | ||||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | ||||
| Label Switched Path"; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable hub-and-spoke-multipoint."; | ||||
| } | ||||
| } | ||||
| container node-protection { | ||||
| description | ||||
| "Configure node-protection capability."; | ||||
| reference | ||||
| "RFC7715: mLDP Node Protection."; | ||||
| leaf plr { | ||||
| type boolean; | ||||
| description | ||||
| "Point of Local Repair capable for MP LSP node | ||||
| protection."; | ||||
| } | ||||
| leaf merge-point { | ||||
| type boolean; | ||||
| description | ||||
| "Merge Point capable for MP LSP node protection."; | ||||
| } // merge-point | ||||
| } // node-protection | ||||
| } // mldp | import ietf-routing { | |||
| } | prefix "rt"; | |||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | import ietf-mpls-ldp { | |||
| + "ldp:mpls-ldp/ldp:global/ldp:forwarding-nexthop/" | prefix "ldp"; | |||
| + "ldp:interfaces/ldp:interface/ldp:address-family/" | } | |||
| + "ldp:state" { | import ietf-mpls-ldp-extended { | |||
| description | prefix "ldp-ext"; | |||
| "Augmentation for MLDP nexthop forwarding interface."; | } | |||
| leaf mldp-disable { | ||||
| if-feature mldp; | ||||
| type boolean; | ||||
| description | ||||
| "Disable mLDP forwarding on the interface."; | ||||
| } | ||||
| } | ||||
| /* | import ietf-mpls-mldp { | |||
| * Global augmentation | prefix "mldp"; | |||
| */ | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global" { | ||||
| description "MLDP global augmentation."; | ||||
| container mldp { | ||||
| if-feature mldp; | ||||
| description | ||||
| "mLDP attributes at per instance level. Defining | ||||
| attributes here does not enable any MP capabilities. | ||||
| MP capabilities need to be explicitly enabled under | ||||
| container capability."; | ||||
| container config { | organization | |||
| description | "IETF MPLS Working Group"; | |||
| "Configuration data."; | contact | |||
| leaf enable { | "WG Web: <http://tools.ietf.org/wg/teas/> | |||
| type boolean; | WG List: <mailto:teas@ietf.org> | |||
| description | ||||
| "Enable mLDP."; | ||||
| } | ||||
| } | ||||
| container state { | ||||
| config false; | ||||
| description | ||||
| "Operational state data."; | WG Chair: Loa Andersson | |||
| leaf enable { | <mailto:loa@pi.nu> | |||
| type boolean; | ||||
| description | ||||
| "Enable mLDP."; | ||||
| } | ||||
| } | ||||
| list address-family { | WG Chair: Ross Callon | |||
| key "afi"; | <mailto:rcallon@juniper.net> | |||
| description | ||||
| "Per-af params."; | ||||
| leaf afi { | ||||
| type ldp:ldp-address-family; | ||||
| description | ||||
| "Address family type value."; | ||||
| } | ||||
| container config { | WG Chair: George Swallow | |||
| description | <mailto:swallow.ietf@gmail.com> | |||
| "Configuration data."; | ||||
| container multicast-only-frr { | ||||
| if-feature mldp-mofrr; | ||||
| description | ||||
| "Multicast only FRR (MoFRR) policy."; | ||||
| leaf prefix-list { | ||||
| type ldp:prefix-list-ref; | ||||
| description | ||||
| "Enables MoFRR for the specified access list."; | ||||
| } | ||||
| } // multicast-only-frr | ||||
| container recursive-fec { | ||||
| description | ||||
| "Recursive FEC policy."; | ||||
| leaf prefix-list { | ||||
| type ldp:prefix-list-ref; | ||||
| description | ||||
| "Enables recursive FEC for the specified access | ||||
| list."; | ||||
| } | ||||
| } // recursive-for | ||||
| } | ||||
| container state { | ||||
| config false; | ||||
| description | ||||
| "Operational state data."; | ||||
| container multicast-only-frr { | ||||
| if-feature mldp-mofrr; | ||||
| description | Editor: Kamran Raza | |||
| "Multicast only FRR (MoFRR) policy."; | <mailto:skraza@cisco.com> | |||
| leaf prefix-list { | Editor: Rajiv Asati | |||
| type ldp:prefix-list-ref; | <mailto:rajiva@cisco.com> | |||
| description | ||||
| "Enables MoFRR for the specified access list."; | ||||
| } | ||||
| } // multicast-only-frr | ||||
| container recursive-fec { | ||||
| description | ||||
| "Recursive FEC policy."; | ||||
| leaf prefix-list { | ||||
| type ldp:prefix-list-ref; | ||||
| description | ||||
| "Enables recursive FEC for the specified access | ||||
| list."; | ||||
| } | ||||
| } // recursive-fec | ||||
| container ipv4 { | Editor: Xufeng Liu | |||
| when "../../afi = 'ipv4'" { | <mailto:Xufeng_Liu@jabil.com> | |||
| description | ||||
| "Only for IPv4."; | ||||
| } | ||||
| description | ||||
| "IPv4 state information."; | ||||
| container roots { | ||||
| description | ||||
| "IPv4 multicast LSP roots."; | ||||
| list root { | ||||
| key "root-address"; | ||||
| description | ||||
| "List of roots for configured multicast LSPs."; | ||||
| leaf root-address { | Editor: Santosh Esale | |||
| type inet:ipv4-address; | <mailto:sesale@juniper.net> | |||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf is-self { | Editor: Xia Chen | |||
| type boolean; | <mailto:jescia.chenxia@huawei.com> | |||
| description | ||||
| "This is the root."; | ||||
| } | ||||
| list reachability { | Editor: Himanshu Shah | |||
| key "address interface"; | <mailto:hshah@ciena.com>"; | |||
| description | ||||
| "A next hop for reachability to root, | ||||
| as a RIB view."; | ||||
| leaf address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "The next hop address to reach root."; | ||||
| } | ||||
| leaf interface { | ||||
| type ldp:mpls-interface-ref; | ||||
| description | ||||
| "Interface connecting to next-hop."; | ||||
| } | ||||
| leaf peer { | ||||
| type leafref { | ||||
| path | ||||
| "../../../../../../../../../ldp:peers/" | ||||
| + "ldp:peer/ldp:lsr-id"; | ||||
| } | ||||
| description | ||||
| "LDP peer from which this next hop can be | ||||
| reached."; | ||||
| } | ||||
| } | ||||
| } // list root | ||||
| } // roots | ||||
| container bindings { | ||||
| description | ||||
| "mLDP FEC to label bindings."; | ||||
| container opaque-type-lspid { | ||||
| description | ||||
| "The type of opaque value element is | ||||
| the generic LSP identifier"; | ||||
| reference | ||||
| "RFC6388: Label Distribution Protocol | ||||
| Extensions for Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "root-address lsp-id " | ||||
| + "recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf lsp-id { | ||||
| type uint32; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-lspid | ||||
| container opaque-type-transit { | description | |||
| description | "This YANG module defines the essential components for the | |||
| "The type of opaque value element is | management of Multi-Protocol Label Switching (MPLS) Multipoint | |||
| the generic LSP identifier"; | LDP (mLDP)."; | |||
| reference | ||||
| "RFC6826: Multipoint LDP In-Band Signaling for | ||||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "root-address source-address group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | revision 2017-03-12 { | |||
| leaf group-address { | description | |||
| type inet:ip-address-no-zone; | "Initial revision."; | |||
| description | reference | |||
| "Group address."; | "RFC XXXX: YANG Data Model for MPLS mLDP."; | |||
| } | } | |||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-transit | ||||
| container opaque-type-bidir { | /* | |||
| description | * Features | |||
| "The type of opaque value element is | */ | |||
| the generic LSP identifier"; | feature capability-mldp-hsmp { | |||
| reference | description | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "This feature indicates that the system allows to configure | |||
| Point-to-Multipoint and | mLDP hub-and-spoke-multipoint capability."; | |||
| Multipoint-to-Multipoint Label Switched | } | |||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "root-address rp group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf rp { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "RP address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-bidir | feature capability-mldp-node-protection { | |||
| } // bindings | description | |||
| } // ipv4 | "This feature indicates that the system allows to configure | |||
| mLDP node-protection capability."; | ||||
| } | ||||
| container ipv6 { | feature mldp-mofrr { | |||
| when "../../afi = 'ipv6'" { | description | |||
| description | "This feature indicates that the system supports mLDP | |||
| "Only for IPv6."; | Multicast only FRR (MoFRR)."; | |||
| } | } | |||
| description | ||||
| "IPv6 state information."; | ||||
| container roots { | ||||
| description | ||||
| "IPv6 multicast LSP roots."; | ||||
| list root { | ||||
| key "root-address"; | ||||
| description | ||||
| "List of roots for configured multicast LSPs."; | ||||
| leaf root-address { | feature per-peer-capability { | |||
| type inet:ipv6-address; | description | |||
| description | "This feature indicates that the system allows to configure | |||
| "Root address."; | mLDP capabilities at the per peer level."; | |||
| } | } | |||
| leaf is-self { | /* | |||
| type boolean; | * Typedefs | |||
| description | */ | |||
| "This is the root."; | typedef route-distinguisher { | |||
| } | type string { | |||
| } | ||||
| description | ||||
| "Type definition for route distinguisher."; | ||||
| reference | ||||
| "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | ||||
| } | ||||
| list reachability { | typedef mofrr-role { | |||
| key "address interface"; | type enumeration { | |||
| description | enum none { | |||
| "A next hop for reachability to root, | description "MOFRR is not enabled."; | |||
| as a RIB view."; | } | |||
| leaf address { | enum primary { | |||
| type inet:ipv6-address; | description "This LSP is primary."; | |||
| description | } | |||
| "The next hop address to reach root."; | enum backup { | |||
| } | description "This LSP is backup."; | |||
| leaf interface { | } | |||
| type ldp:mpls-interface-ref; | } | |||
| description | description | |||
| "Interface connecting to next-hop."; | "This type represents the MOFRR (Multicast only FRR) role | |||
| } | status of a LSP."; | |||
| leaf peer { | } | |||
| type leafref { | ||||
| path | ||||
| "../../../../../../../../../ldp:peers/" | ||||
| + "ldp:peer/ldp:lsr-id"; | ||||
| } | ||||
| description | ||||
| "LDP peer from which this next hop can be | ||||
| reached."; | ||||
| } | ||||
| } | ||||
| } // list root | ||||
| } // roots | ||||
| container bindings { | ||||
| description | ||||
| "mLDP FEC to label bindings."; | ||||
| container opaque-type-lspid { | ||||
| description | ||||
| "The type of opaque value element is | ||||
| the generic LSP identifier"; | ||||
| reference | ||||
| "RFC6388: Label Distribution Protocol | ||||
| Extensions for Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "root-address lsp-id " | ||||
| + "recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf lsp-id { | ||||
| type uint32; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-lspid | ||||
| container opaque-type-transit { | /* | |||
| description | * Groupings | |||
| "The type of opaque value element is | */ | |||
| the generic LSP identifier"; | grouping mldp-ext-binding-label-state-attributes { | |||
| reference | description | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "mLDP label binding attributes."; | |||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "root-address source-address group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-transit | ||||
| container opaque-type-bidir { | leaf multipoint-type { | |||
| description | type mldp:multipoint-type; | |||
| "The type of opaque value element is | description | |||
| the generic LSP identifier"; | "The type of mutipoint, p2mp or mp2mp."; | |||
| reference | } | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | list peer { | |||
| Point-to-Multipoint and | key "direction peer advertisement-type"; | |||
| Multipoint-to-Multipoint Label Switched | description | |||
| Paths."; | "List of advertised and received peers."; | |||
| list fec-label { | uses mldp:mldp-binding-label-peer-state-attributes; | |||
| key | ||||
| "root-address rp group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf root-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf rp { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "RP address."; | ||||
| } | leaf mofrr-role { | |||
| leaf group-address { | when "../direction = 'upstream'" { | |||
| type inet:ip-address-no-zone; | description | |||
| description | "For upstream."; | |||
| "Group address."; | } | |||
| } | type mofrr-role; | |||
| leaf rd { | description | |||
| type route-distinguisher; | "The MOFRR status of this LSP."; | |||
| description | } | |||
| "Route Distinguisher."; | } // peer | |||
| reference | } // mldp-ext-binding-label-state-attributes | |||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-bidir | ||||
| } // bindings | ||||
| } // ipv6 | ||||
| } // state | ||||
| container configured-leaf-lsps { | grouping mldp-ext-capabilities { | |||
| description | description | |||
| "Configured multicast LSPs."; | "mLDP extended capabilities."; | |||
| container hub-and-spoke { | ||||
| if-feature capability-mldp-hsmp; | ||||
| description | ||||
| "Configure hub-and-spoke-multipoint capability."; | ||||
| reference | ||||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | ||||
| Label Switched Path"; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable hub-and-spoke-multipoint."; | ||||
| } | ||||
| } | ||||
| container node-protection { | ||||
| if-feature capability-mldp-node-protection; | ||||
| description | ||||
| "Configure node-protection capability."; | ||||
| reference | ||||
| "RFC7715: mLDP Node Protection."; | ||||
| leaf plr { | ||||
| type boolean; | ||||
| description | ||||
| "Point of Local Repair capable for MP LSP node | ||||
| protection."; | ||||
| } | ||||
| container merge-point { | ||||
| description | ||||
| "Merge Point capable for MP LSP node protection."; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable merge point capability."; | ||||
| } | ||||
| leaf targeted-session-teardown-delay { | ||||
| type uint16; | ||||
| units seconds; | ||||
| description | ||||
| "Targeted session teardown delay."; | ||||
| container p2mp { | } | |||
| description | } // merge-point | |||
| "Configured point-to-multipoint LSPs."; | } | |||
| uses mldp-configured-lsp-roots; | } // mldp-ext-capabilities | |||
| } | grouping mldp-ipv6-configured-lsp-roots { | |||
| container mp2mp { | description | |||
| description | "mLDP IPv6 roots containers."; | |||
| "Configured multipoint-to-multipoint LSPs."; | ||||
| uses mldp-configured-lsp-roots; | ||||
| } | ||||
| } // configured-leaf-lsps | ||||
| } // list address-family | ||||
| } // mldp | ||||
| } | ||||
| /* | container roots { | |||
| * Notifications | description | |||
| */ | "Configured IPv6 multicast LSPs."; | |||
| notification mpls-mldp-fec-event { | ||||
| description | ||||
| "Notification event for a change of FEC status."; | ||||
| leaf event-type { | ||||
| type ldp:oper-status-event-type; | ||||
| description "Event type."; | ||||
| } | ||||
| uses mldp-fec-event; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | list root { | |||
| key "root-address"; | ||||
| description | ||||
| "List of roots for configured multicast LSPs."; | ||||
| Figure 10 | 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 { | ||||
| description | ||||
| "mLDP per address family configuration attibutes."; | ||||
| container multicast-only-frr { | ||||
| if-feature mldp-mofrr; | ||||
| description | ||||
| "Multicast only FRR (MoFRR) policy."; | ||||
| leaf prefix-list { | ||||
| type ldp-ext:prefix-list-ref; | ||||
| description | ||||
| "Enables MoFRR for the specified access list."; | ||||
| } | ||||
| } // multicast-only-frr | ||||
| container recursive-fec { | ||||
| description | ||||
| "Recursive FEC policy."; | ||||
| leaf prefix-list { | ||||
| type ldp-ext:prefix-list-ref; | ||||
| description | ||||
| "Enables recursive FEC for the specified access list."; | ||||
| } | ||||
| } // recursive-for | ||||
| } // mldp-ext-per-af-config-attibutes | ||||
| /* | ||||
| * Configuration data nodes | ||||
| */ | ||||
| // Global capability config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp:config/ldp:capability/" | ||||
| + "mldp:mldp" { | ||||
| description "Augmentation for MLDP global capability."; | ||||
| uses mldp-ext-capabilities; | ||||
| } | ||||
| // Peer capability config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:config/ldp:capability" { | ||||
| description "Augmentation for MLDP peer capability."; | ||||
| container mldp { | ||||
| if-feature per-peer-capability; | ||||
| description | ||||
| "mLDP capabilities."; | ||||
| uses mldp:mldp-capabilities; | ||||
| } | ||||
| } | ||||
| // IPv4 config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4" { | ||||
| description "Augmentation for MLDP IPv4 configuration."; | ||||
| container config { | ||||
| description | ||||
| "Configuration data."; | ||||
| uses mldp-ext-per-af-config-attibutes; | ||||
| } | ||||
| } | ||||
| // IPv4 configured-leaf-lsps config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:configured-leaf-lsps/mldp:p2mp/mldp:roots/" | ||||
| + "mldp:root/mldp:lsp-key-type" { | ||||
| description | ||||
| "Augmentation for MLDP IPv4 configured-leaf-lsps | ||||
| configuration."; | ||||
| case source-group { | ||||
| container opaque-type-transit { | ||||
| description | ||||
| "The type of opaque value element is the transit IPv4 | ||||
| source."; | ||||
| list lsp { | ||||
| key "source-address group-address"; | ||||
| description | ||||
| "List of LSPs."; | ||||
| leaf source-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ipv4-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } // case source-group | ||||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:configured-leaf-lsps/mldp:mp2mp/mldp:roots/" | ||||
| + "mldp:root/mldp:lsp-key-type" { | ||||
| description | ||||
| "Augmentation for MLDP IPv4 configured-leaf-lsps | ||||
| configuration."; | ||||
| case source-group { | ||||
| container opaque-type-transit { | ||||
| description | ||||
| "The type of opaque value element is the transit IPv4 | ||||
| source."; | ||||
| list lsp { | ||||
| key "source-address group-address"; | ||||
| description | ||||
| "List of LSPs."; | ||||
| leaf source-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ipv4-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } // case source-group | ||||
| } | ||||
| // IPv6 config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "ipv6" { | ||||
| description "Augmentation for MLDP IPv4 configuration."; | ||||
| container config { | ||||
| description | ||||
| "Configuration data."; | ||||
| uses mldp-ext-per-af-config-attibutes; | ||||
| } | ||||
| } | ||||
| // Global forwarding-nexthop config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" | ||||
| + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family/" | ||||
| + "ldp-ext:config" { | ||||
| description | ||||
| "Augmentation for MLDP nexthop forwarding interface."; | ||||
| leaf mldp-disable { | ||||
| type boolean; | ||||
| description | ||||
| "Disable mLDP forwarding on the interface."; | ||||
| } | ||||
| } | ||||
| /* | ||||
| * Operational state data nodes | ||||
| */ | ||||
| // Global capability state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp:state/ldp:capability/" | ||||
| + "mldp:mldp" { | ||||
| description "Augmentation for MLDP global capability."; | ||||
| uses mldp-ext-capabilities; | ||||
| } | ||||
| // Peer capability state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/ldp:capability" { | ||||
| description "Augmentation for MLDP peer capability."; | ||||
| container mldp { | ||||
| description | ||||
| "mLDP capabilities."; | ||||
| uses mldp:mldp-capabilities; | ||||
| } | ||||
| } | ||||
| // IPv4 state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:state" { | ||||
| description "Augmentation for MLDP IPv4 state."; | ||||
| uses mldp-ext-per-af-config-attibutes; | ||||
| } | ||||
| // IPv4 state for per peer bindings | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/" | ||||
| + "mldp:opaque-type-lspid/mldp:fec-label/mldp:peer" { | ||||
| description "Augmentation for MLDP IPv4 state."; | ||||
| leaf mofrr-role { | ||||
| when "../mldp:direction = 'upstream'" { | ||||
| description | ||||
| "For upstream."; | ||||
| } | ||||
| type mofrr-role; | ||||
| description | ||||
| "The MOFRR status of this LSP."; | ||||
| } | ||||
| } | ||||
| // IPv6 state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "ipv6/state" { | ||||
| description "Augmentation for MLDP IPv6 state."; | ||||
| uses mldp-ext-per-af-config-attibutes; | ||||
| } | ||||
| // Global forwarding-nexthop config | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" | ||||
| + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family/" | ||||
| + "ldp-ext:state" { | ||||
| description | ||||
| "Augmentation for MLDP nexthop forwarding interface."; | ||||
| leaf mldp-disable { | ||||
| type boolean; | ||||
| description | ||||
| "Disable mLDP forwarding on the interface."; | ||||
| } | ||||
| } | ||||
| // Peer capability state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:state/" | ||||
| + "ldp:received-peer-state/ldp:capability/mldp:mldp" { | ||||
| description | ||||
| "Augmentation for MLDP received peer state capability."; | ||||
| container hub-and-spoke { | ||||
| description | ||||
| "Configure hub-and-spoke-multipoint capability."; | ||||
| reference | ||||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | ||||
| Label Switched Path"; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable hub-and-spoke-multipoint."; | ||||
| } | ||||
| } | ||||
| container node-protection { | ||||
| description | ||||
| "Configure node-protection capability."; | ||||
| reference | ||||
| "RFC7715: mLDP Node Protection."; | ||||
| leaf plr { | ||||
| type boolean; | ||||
| description | ||||
| "Point of Local Repair capable for MP LSP node | ||||
| protection."; | ||||
| } | ||||
| leaf merge-point { | ||||
| type boolean; | ||||
| description | ||||
| "Merge Point capable for MP LSP node protection."; | ||||
| } // merge-point | ||||
| } // node-protection | ||||
| } | ||||
| // IPv4 bindings state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings" { | ||||
| description "Augmentation for MLDP IPv4 bindings."; | ||||
| container opaque-type-transit { | ||||
| description | ||||
| "The type of opaque value element is the transit IPv4 | ||||
| source."; | ||||
| reference | ||||
| "RFC6826: Multipoint LDP In-Band Signaling for | ||||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "source-address group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-transit | ||||
| container opaque-type-bidir { | ||||
| description | ||||
| "The type of opaque value element is | ||||
| the generic LSP identifier"; | ||||
| reference | ||||
| "RFC6826: Multipoint LDP In-Band Signaling for | ||||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "rp group-address rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf rp { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "RP address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-bidir | ||||
| } | ||||
| // IPv6 bindings state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "ipv6/state/roots/root/bindings" { | ||||
| description "Augmentation for MLDP IPv6 bindings."; | ||||
| container opaque-type-transit { | ||||
| config false; | ||||
| description | ||||
| "The type of opaque value element is the transit IPv6 | ||||
| source."; | ||||
| reference | ||||
| "RFC6826: Multipoint LDP In-Band Signaling for | ||||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "source-address group-address " | ||||
| + "rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-transit | ||||
| container opaque-type-bidir { | ||||
| config false; | ||||
| description | ||||
| "The type of opaque value element is | ||||
| the generic LSP identifier"; | ||||
| reference | ||||
| "RFC6826: Multipoint LDP In-Band Signaling for | ||||
| Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "rp group-address rd recur-root-address recur-rd"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf rp { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "RP address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address-no-zone; | ||||
| description | ||||
| "Group address."; | ||||
| } | ||||
| leaf rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher."; | ||||
| reference | ||||
| "RFC7246: Multipoint Label Distribution | ||||
| Protocol In-Band Signaling in a Virtual | ||||
| Routing and Forwarding (VRF) Table | ||||
| Context."; | ||||
| } | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-bidir | ||||
| } | ||||
| // IPv4 bindings opaque-type-lspid state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "mldp:ipv4/mldp:state/mldp:roots/mldp:root/mldp:bindings/" | ||||
| + "mldp:opaque-type-lspid/mldp:fec-label" { | ||||
| description | ||||
| "Augmentation for MLDP IPv4 bindings with opaque type LSP ID."; | ||||
| list recursive-fec { | ||||
| key | ||||
| "recur-root-address recur-rd"; | ||||
| description | ||||
| "List of recursive opaque values."; | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } | ||||
| // IPv6 bindings opaque-type-lspid state | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | ||||
| + "ipv6/state/roots/root/bindings/opaque-type-lspid/" | ||||
| + "fec-label" { | ||||
| description | ||||
| "Augmentation for MLDP IPv6 bindings with opaque type LSP ID."; | ||||
| list recursive-fec { | ||||
| key | ||||
| "recur-root-address recur-rd"; | ||||
| config false; | ||||
| description | ||||
| "List of recursive opaque values."; | ||||
| leaf recur-root-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Recursive root address."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| leaf recur-rd { | ||||
| type route-distinguisher; | ||||
| description | ||||
| "Route Distinguisher in the VPN-Recursive | ||||
| Opaque Value."; | ||||
| reference | ||||
| "RFC6512: Using Multipoint LDP When the | ||||
| Backbone Has No Route to the Root"; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } | ||||
| /* | ||||
| * Per AF augmentation | ||||
| */ | ||||
| // IPv6 augmentation | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | ||||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" { | ||||
| description "Augmentation for MLDP IPv6 address family."; | ||||
| container ipv6 { | ||||
| description | ||||
| "IPv6 information."; | ||||
| container state { | ||||
| config false; | ||||
| description | ||||
| "Operational state data."; | ||||
| container roots { | ||||
| description | ||||
| "IPv6 multicast LSP roots."; | ||||
| list root { | ||||
| key "root-address"; | ||||
| description | ||||
| "List of roots for configured multicast LSPs."; | ||||
| leaf root-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Root address."; | ||||
| } | ||||
| leaf is-self { | ||||
| type boolean; | ||||
| description | ||||
| "This is the root."; | ||||
| } | ||||
| list reachability { | ||||
| key "address interface"; | ||||
| description | ||||
| "A next hop for reachability to root, | ||||
| as a RIB view."; | ||||
| leaf address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "The next hop address to reach root."; | ||||
| } | ||||
| leaf interface { | ||||
| type ldp:mpls-interface-ref; | ||||
| description | ||||
| "Interface connecting to next-hop."; | ||||
| } | ||||
| leaf peer { | ||||
| type leafref { | ||||
| path | ||||
| "../../../../../../../../../ldp:peers/" | ||||
| + "ldp:peer/ldp:lsr-id"; | ||||
| } | ||||
| description | ||||
| "LDP peer from which this next hop can be | ||||
| reached."; | ||||
| } | ||||
| } | ||||
| container bindings { | ||||
| description | ||||
| "mLDP FEC to label bindings."; | ||||
| container opaque-type-lspid { | ||||
| description | ||||
| "The type of opaque value element is | ||||
| the generic LSP identifier"; | ||||
| reference | ||||
| "RFC6388: Label Distribution Protocol | ||||
| Extensions for Point-to-Multipoint and | ||||
| Multipoint-to-Multipoint Label Switched | ||||
| Paths."; | ||||
| list fec-label { | ||||
| key | ||||
| "lsp-id"; | ||||
| description | ||||
| "List of FEC to label bindings."; | ||||
| leaf lsp-id { | ||||
| type uint32; | ||||
| description "ID to identify the LSP."; | ||||
| } | ||||
| uses mldp-ext-binding-label-state-attributes; | ||||
| } // fec-label | ||||
| } // opaque-type-lspid | ||||
| } // bindings | ||||
| } // list root | ||||
| } // roots | ||||
| } // state | ||||
| container configured-leaf-lsps { | ||||
| description | ||||
| "Configured multicast LSPs."; | ||||
| container p2mp { | ||||
| description | ||||
| "Configured point-to-multipoint LSPs."; | ||||
| uses mldp-ipv6-configured-lsp-roots; | ||||
| } | ||||
| container mp2mp { | ||||
| description | ||||
| "Configured multipoint-to-multipoint LSPs."; | ||||
| uses mldp-ipv6-configured-lsp-roots; | ||||
| } | ||||
| } // configured-leaf-lsps | ||||
| } // ipv6 | ||||
| } | ||||
| /* | ||||
| * Global augmentation | ||||
| */ | ||||
| /* | ||||
| * Notifications | ||||
| */ | ||||
| augment "/mldp:mpls-mldp-fec-event/mldp:lsp-key-type" { | ||||
| description ""; | ||||
| case source-group-based { | ||||
| leaf source-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "LSP source address."; | ||||
| } | ||||
| leaf group-address { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Multicast group address."; | ||||
| } | ||||
| } // case source-group | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| Figure 15 | ||||
| 10. Security Considerations | 10. Security Considerations | |||
| This mLDP model shares the same security considerations as captured | This mLDP model shares the same security considerations as captured | |||
| in LDP Yang model [I-D.ietf-mpls-ldp-mldp-yang]. | in LDP Yang model [I-D.ietf-mpls-ldp-yang]. | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| This document does not extend mLDP protocol specifiction and hence | This document does not extend mLDP protocol specifiction and hence | |||
| there are no IANA considerations. | there are no IANA considerations. | |||
| Note to the RFC Editor: Please remove IANA section before the | Note to the RFC Editor: Please remove IANA section before the | |||
| publication. | publication. | |||
| 12. Acknowledgments | 12. Acknowledgments | |||
| The authors would like to acknowledge Ladislav Lhotka for his useful | The authors would like to acknowledge Ladislav Lhotka for his useful | |||
| comments as the YANG Doctor. | comments as the YANG Doctor. | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [I-D.ietf-mpls-ldp-mldp-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 and mLDP", draft-ietf- | Shah, "YANG Data Model for MPLS LDP", draft-ietf-mpls-ldp- | |||
| mpls-ldp-mldp-yang-00 (work in progress), August 2016. | yang-00 (work in progress), November 2016. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., | [RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., | |||
| "LDP Specification", RFC 5036, DOI 10.17487/RFC5036, | "LDP Specification", RFC 5036, DOI 10.17487/RFC5036, | |||
| October 2007, <http://www.rfc-editor.org/info/rfc5036>. | October 2007, <http://www.rfc-editor.org/info/rfc5036>. | |||
| skipping to change at page 46, line 23 ¶ | skipping to change at page 56, line 35 ¶ | |||
| Topology Routing", draft-iwijnand-mpls-mldp-multi- | Topology Routing", draft-iwijnand-mpls-mldp-multi- | |||
| topology-03 (work in progress), June 2013. | topology-03 (work in progress), June 2013. | |||
| [I-D.openconfig-netmod-opstate] | [I-D.openconfig-netmod-opstate] | |||
| Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling | Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling | |||
| of Operational State Data in YANG", draft-openconfig- | of Operational State Data in YANG", draft-openconfig- | |||
| netmod-opstate-01 (work in progress), July 2015. | netmod-opstate-01 (work in progress), July 2015. | |||
| Appendix A. Additional Contributors | Appendix A. Additional Contributors | |||
| Danial Johari | ||||
| Cisco Systems Inc. | ||||
| Email: dajohari@cisco.com | ||||
| Matthew Bocci | Matthew Bocci | |||
| Alcatel-Lucent | Nokia | |||
| matthew.bocci@alcatel-lucent.com | matthew.bocci@nokia.com | |||
| Authors' Addresses | Authors' Addresses | |||
| Kamran Raza | Kamran Raza | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: skraza@cisco.com | Email: skraza@cisco.com | |||
| Rajiv Asati | Rajiv Asati | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: rajiva@cisco.com | Email: rajiva@cisco.com | |||
| skipping to change at page 46, line 40 ¶ | skipping to change at page 57, line 4 ¶ | |||
| Authors' Addresses | Authors' Addresses | |||
| Kamran Raza | Kamran Raza | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: skraza@cisco.com | Email: skraza@cisco.com | |||
| Rajiv Asati | Rajiv Asati | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: rajiva@cisco.com | Email: rajiva@cisco.com | |||
| Sowmya Krishnaswamy | Sowmya Krishnaswamy | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: sowkrish@cisco.com | Email: sowkrish@cisco.com | |||
| Xufeng Liu | Xufeng Liu | |||
| Kuatro Technologies | Jabil | |||
| Email: xliu@kuatrotech.com | Email: xufeng_liu@jabil.com | |||
| Jeff Tantsura | Jeff Tantsura | |||
| Email: jefftant@gmail.com | Email: jefftant.ietf@gmail.com | |||
| Santosh Esale | Santosh Esale | |||
| Juniper Networks | Juniper Networks | |||
| Email: sesale@juniper.net | Email: sesale@juniper.net | |||
| Xia Chen | Xia Chen | |||
| Huawei Technologies | Huawei Technologies | |||
| Email: jescia.chenxia@huawei.com | Email: jescia.chenxia@huawei.com | |||
| Loa Andersson | Loa Andersson | |||
| End of changes. 169 change blocks. | ||||
| 1505 lines changed or deleted | 1940 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/ | ||||