| < draft-ietf-mpls-mldp-yang-07.txt | draft-ietf-mpls-mldp-yang-08.txt > | |||
|---|---|---|---|---|
| MPLS Working Group K. Raza | MPLS Working Group K. Raza | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: January 14, 2021 X. Liu | Expires: September 8, 2021 X. Liu | |||
| Volta Networks | Volta Networks | |||
| S. Esale | S. Esale | |||
| Juniper Networks | Juniper Networks | |||
| L. Andersson | L. Andersson | |||
| Huawei Technologies | Huawei Technologies | |||
| J. Tantsura | J. Tantsura | |||
| Nuage Networks | Nuage Networks | |||
| S. Krishnaswamy | S. Krishnaswamy | |||
| Individual | Individual | |||
| July 13, 2020 | March 7, 2021 | |||
| YANG Data Model for MPLS mLDP | YANG Data Model for MPLS mLDP | |||
| draft-ietf-mpls-mldp-yang-07 | draft-ietf-mpls-mldp-yang-08 | |||
| Abstract | Abstract | |||
| This document describes a YANG data model for Multi-Protocol Label | This document describes a YANG data model for Multi-Protocol Label | |||
| Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The | Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The | |||
| mLDP data model augments the LDP data model. | mLDP data model augments the LDP data model. | |||
| The YANG modules in this document conform to the Network Management | The YANG modules in this document conform to the Network Management | |||
| Datastore Architecture (NMDA). | Datastore Architecture (NMDA). | |||
| skipping to change at page 2, line 4 ¶ | skipping to change at page 2, line 4 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 14, 2021. | This Internet-Draft will expire on September 8, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 4, line 51 ¶ | skipping to change at page 4, line 51 ¶ | |||
| 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 BCP 14 [RFC2119] | document are to be interpreted as described in BCP 14 [RFC2119] | |||
| [RFC8174] when, and only when, they appear in all capitals, as shown | [RFC8174] when, and only when, they appear in all capitals, as shown | |||
| here. | here. | |||
| 3. Overview | 3. Overview | |||
| This document defines a YANG module named "ietf-mpls-mldp" for the | This document defines a YANG module named "ietf-mpls-mldp" for the | |||
| mLDP YANG base data model that augments /rt:routing/rt:control-plane- | mLDP YANG base data model that augments /rt:routing/rt:control-plane- | |||
| protocols/ldp:mpls-ldp defined in [I-D.ietf-mpls-ldp-yang]. The | protocols/rt:control-plane-protocol/ldp:mpls-ldp defined in | |||
| document also defines the "ietf-mpls-mldp-extended" YANG module that | ||||
| models the extended mLDP features. | [I-D.ietf-mpls-ldp-yang]. The document also defines the "ietf-mpls- | |||
| mldp-extended" YANG module that models the extended mLDP features. | ||||
| The following diagram depicts high level mLDP yang tree organization | The following diagram depicts high level mLDP yang tree organization | |||
| and hierarchy with respect to LDP: | and hierarchy with respect to LDP: | |||
| +-- rw routing | +-- rw routing | |||
| +-- rw control-plane-protocols | +-- rw control-plane-protocols | |||
| +-- rw mpls-ldp | +-- rw mpls-ldp | |||
| +-- rw some_ldp_container | +-- rw some_ldp_container | |||
| | +-- rw mldp | | +-- rw mldp | |||
| | +-- rw ... // mldp base | | +-- rw ... // mldp base | |||
| skipping to change at page 11, line 6 ¶ | skipping to change at page 11, line 6 ¶ | |||
| the downstream selection. | the downstream selection. | |||
| 4.4. Configuration Tree | 4.4. Configuration Tree | |||
| 4.4.1. Base | 4.4.1. Base | |||
| A simplified graphical representation of the data model for mLDP base | A simplified graphical representation of the data model for mLDP base | |||
| configuration follows: | configuration follows: | |||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/ldp:capability: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw p2mp | +--rw p2mp | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| +--rw mp2mp | +--rw mp2mp | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| +--rw make-before-break | +--rw make-before-break | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| +--rw switchover-delay? uint16 | +--rw switchover-delay? uint16 | |||
| +--rw timeout? uint16 | +--rw timeout? uint16 | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| +--rw address-families | +--rw address-families | |||
| +--rw ipv4 | +--rw ipv4 | |||
| +--rw configured-leaf-lsps | +--rw configured-leaf-lsps | |||
| +--rw opaque-element-lspid | +--rw opaque-element-lspid | |||
| +--rw fec-label* [root-address lsp-id] | +--rw fec-label* [root-address lsp-id] | |||
| +--rw root-address inet:ipv4-address | +--rw root-address inet:ipv4-address | |||
| +--rw lsp-id uint32 | +--rw lsp-id uint32 | |||
| +--rw multipoint-type? multipoint-type | +--rw multipoint-type? multipoint-type | |||
| Figure 3 | Figure 3 | |||
| 4.4.2. Extended | 4.4.2. Extended | |||
| A simplified graphical representation of the data model for mLDP | A simplified graphical representation of the data model for mLDP | |||
| extended configuration follows: | extended configuration follows: | |||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/ldp:capability: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}? | +--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}? | |||
| | +--rw mldp-ext:enable? boolean | | +--rw mldp-ext:enable? boolean | |||
| +--rw mldp-ext:node-protection {capability-mldp-node-protection}? | +--rw mldp-ext:node-protection {capability-mldp-node-protection}? | |||
| +--rw mldp-ext:plr? boolean | +--rw mldp-ext:plr? boolean | |||
| +--rw mldp-ext:merge-point | +--rw mldp-ext:merge-point | |||
| +--rw mldp-ext:enable? boolean | +--rw mldp-ext:enable? boolean | |||
| +--rw mldp-ext:targeted-session-teardown-delay? uint16 | +--rw mldp-ext:targeted-session-teardown-delay? uint16 | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| +--rw address-families | +--rw address-families | |||
| +--rw ipv4 | +--rw ipv4 | |||
| | +--rw configured-leaf-lsps | | +--rw configured-leaf-lsps | |||
| | | +--rw mldp-ext:opaque-element-transit | | | +--rw mldp-ext:opaque-element-transit | |||
| | | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] | | | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] | |||
| | | | +--rw mldp-ext:root-address inet:ipv4-address | | | | +--rw mldp-ext:root-address inet:ipv4-address | |||
| | | | +--rw mldp-ext:source-address inet:ip-address | | | | +--rw mldp-ext:source-address inet:ip-address | |||
| | | | +--rw mldp-ext:group-address inet:ip-address-no-zone | | | | +--rw mldp-ext:group-address inet:ip-address-no-zone | |||
| skipping to change at page 13, line 15 ¶ | skipping to change at page 13, line 15 ¶ | |||
| | +--rw mldp-ext:group-address inet:ip-address-no-zone | | +--rw mldp-ext:group-address inet:ip-address-no-zone | |||
| | +--rw mldp-ext:rd route-distinguisher | | +--rw mldp-ext:rd route-distinguisher | |||
| | +--rw mldp-ext:recur-root-address inet:ip-address | | +--rw mldp-ext:recur-root-address inet:ip-address | |||
| | +--rw mldp-ext:recur-rd route-distinguisher | | +--rw mldp-ext:recur-rd route-distinguisher | |||
| | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type | |||
| +--rw mldp-ext:multicast-only-frr {mldp-mofrr}? | +--rw mldp-ext:multicast-only-frr {mldp-mofrr}? | |||
| | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | |||
| +--rw mldp-ext:recursive-fec | +--rw mldp-ext:recursive-fec | |||
| +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family: | |||
| +--rw mldp {per-peer-capability}? | ||||
| +--rw p2mp | ||||
| | +--rw enable? boolean | ||||
| +--rw mp2mp | ||||
| | +--rw enable? boolean | ||||
| +--rw make-before-break | ||||
| +--rw enable? boolean | ||||
| +--rw switchover-delay? uint16 | ||||
| +--rw timeout? uint16 | ||||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family: | ||||
| +--rw mldp-disable? boolean | +--rw mldp-disable? boolean | |||
| Figure 4 | Figure 4 | |||
| 5. Operational State | 5. Operational State | |||
| The operational state of mLDP can be queried and obtained from | The operational state of mLDP can be queried and obtained from | |||
| various read-only mdlp "state" containers that augment ldp | various read-only mdlp "state" containers that augment ldp | |||
| containers. | containers. | |||
| 5.1. Base | 5.1. Base | |||
| A simplified graphical representation of the data model for mLDP base | A simplified graphical representation of the data model for mLDP base | |||
| operational state follows: | operational state follows: | |||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: | |||
| +--ro mldp | +--ro mldp | |||
| +--ro p2mp | +--ro p2mp | |||
| | +--ro enable? boolean | | +--ro enable? boolean | |||
| +--ro mp2mp | +--ro mp2mp | |||
| | +--ro enable? boolean | | +--ro enable? boolean | |||
| +--ro make-before-break | +--ro make-before-break | |||
| +--ro enable? boolean | +--ro enable? boolean | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| +--rw address-families | +--rw address-families | |||
| +--rw ipv4 | +--rw ipv4 | |||
| +--ro roots | +--ro roots | |||
| +--ro root* [root-address] | +--ro root* [root-address] | |||
| +--ro root-address inet:ipv4-address | +--ro root-address inet:ipv4-address | |||
| +--ro is-self? boolean | +--ro is-self? boolean | |||
| +--ro reachability* [address interface] | +--ro reachability* [address interface] | |||
| | +--ro address inet:ipv4-address | | +--ro address inet:ipv4-address | |||
| skipping to change at page 14, line 50 ¶ | skipping to change at page 14, line 50 ¶ | |||
| Figure 5 | Figure 5 | |||
| 5.2. Extended | 5.2. Extended | |||
| A simplified graphical representation of the data model for mLDP | A simplified graphical representation of the data model for mLDP | |||
| extended operational state follows: | extended operational state follows: | |||
| module: ietf-mpls-mldp | module: ietf-mpls-mldp | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: | |||
| +--ro mldp | +--ro mldp | |||
| +--ro mldp-ext:hub-and-spoke | +--ro mldp-ext:hub-and-spoke | |||
| | +--ro mldp-ext:enable? boolean | | +--ro mldp-ext:enable? boolean | |||
| +--ro mldp-ext:node-protection | +--ro mldp-ext:node-protection | |||
| +--ro mldp-ext:plr? boolean | +--ro mldp-ext:plr? boolean | |||
| +--ro mldp-ext:merge-point? boolean | +--ro mldp-ext:merge-point? boolean | |||
| augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: | augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ldp:mpls-ldp/ldp:global: | |||
| +--rw mldp | +--rw mldp | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| +--rw address-families | +--rw address-families | |||
| +--rw ipv4 | +--rw ipv4 | |||
| | +--ro roots | | +--ro roots | |||
| | +--ro root* [root-address] | | +--ro root* [root-address] | |||
| | +--ro root-address inet:ipv4-address | | +--ro root-address inet:ipv4-address | |||
| | +--ro bindings | | +--ro bindings | |||
| | +--ro opaque-element-lspid | | +--ro opaque-element-lspid | |||
| | | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd] | | | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd] | |||
| skipping to change at page 24, line 5 ¶ | skipping to change at page 24, line 5 ¶ | |||
| 9. YANG Specification | 9. YANG Specification | |||
| The YANG definition, i.e., the modules, for mLDP constructs defined | The YANG definition, i.e., the modules, for mLDP constructs defined | |||
| earlier in this document are includind the subsections below. | earlier in this document are includind the subsections below. | |||
| 9.1. Base | 9.1. Base | |||
| This YANG module imports types defined in [RFC6991], [RFC8343], | This YANG module imports types defined in [RFC6991], [RFC8343], | |||
| [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. | [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. | |||
| <CODE BEGINS> file "ietf-mpls-mldp@2018-10-22.yang" | <CODE BEGINS> file "ietf-mpls-mldp@2021-03-07.yang" | |||
| // RFC Editor: replace the above date with the date of | // RFC Editor: replace the above date with the date of | |||
| // publication and remove this note. | // publication and remove this note. | |||
| module ietf-mpls-mldp { | module ietf-mpls-mldp { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; | |||
| prefix "mldp"; | prefix "mldp"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| reference "RFC 8343: A YANG Data Model for Interface Management"; | reference "RFC 8343: A YANG Data Model for Interface Management"; | |||
| } | } | |||
| import ietf-mpls-ldp { | import ietf-mpls-ldp { | |||
| prefix "ldp"; | prefix "ldp"; | |||
| reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | |||
| // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | |||
| // time of publication and remove this note. | // time of publication and remove this note. | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference | reference | |||
| "RFC 8349: A YANG Data Model for Routing Management (NMDA | "RFC 8349: A YANG Data Model for Routing Management (NMDA | |||
| version)"; | version)"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| organization | organization | |||
| "IETF MPLS Working Group"; | "IETF MPLS Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/mpls/> | "WG Web: <http://tools.ietf.org/wg/mpls/> | |||
| WG List: <mailto:mpls@ietf.org> | WG List: <mailto:mpls@ietf.org> | |||
| Editor: Kamran Raza | Editor: Kamran Raza | |||
| <mailto:skraza@cisco.com> | <mailto:skraza@cisco.com> | |||
| Editor: Sowmya Krishnaswamy | Editor: Sowmya Krishnaswamy | |||
| <mailto:krishnaswamy.sowmya@gmail.com> | <mailto:krishnaswamy.sowmya@gmail.com> | |||
| Editor: Xufeng Liu | Editor: Xufeng Liu | |||
| <mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
| Editor: Santosh Esale | Editor: Santosh Esale | |||
| <mailto:sesale@juniper.net> | <mailto:sesale@juniper.net> | |||
| Editor: Loa Andersson | Editor: Loa Andersson | |||
| <mailto:loa@pi.nu> | <mailto:loa@pi.nu> | |||
| Editor: Jeff Tantsura | Editor: Jeff Tantsura | |||
| <mailto:jefftant.ietf@gmail.com>"; | <mailto:jefftant.ietf@gmail.com>"; | |||
| description | description | |||
| "This YANG module defines the essential components for the | "This YANG module defines the essential components for the | |||
| management of Multi-Protocol Label Switching (MPLS) Multipoint | management of Multi-Protocol Label Switching (MPLS) Multipoint | |||
| LDP (mLDP). | LDP (mLDP). | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
| RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| // RFC Editor: replace XXXX with actual RFC number and remove | // RFC Editor: replace XXXX with actual RFC number and remove | |||
| // this note | // this note | |||
| revision 2018-10-22 { | revision 2021-03-07 { | |||
| // RFC Editor: replace the above date 2018-10-22 with the date of | // RFC Editor: replace the above date 2021-03-07 with the date of | |||
| // publication and remove this note. | // publication and remove this note. | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: Base YANG Data Model for MPLS mLDP"; | "RFC XXXX: Base YANG Data Model for MPLS mLDP"; | |||
| // RFC Editor: replace XXXX with actual RFC number and remove | // RFC Editor: replace XXXX with actual RFC number and remove | |||
| // this note | // this note | |||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| typedef multipoint-type { | typedef multipoint-type { | |||
| type enumeration { | type enumeration { | |||
| enum p2mp { | enum p2mp { | |||
| description "Point to multipoint"; | description "Point to multipoint"; | |||
| } | } | |||
| enum mp2mp { | enum mp2mp { | |||
| description "Multipoint to multipoint"; | description "Multipoint to multipoint"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The type of a multipoint LSP: either Point to multipoint | "The type of a multipoint LSP: either Point to multipoint | |||
| (p2mp) or Multipoint to multipoint (mp2mp)"; | (p2mp) or Multipoint to multipoint (mp2mp)"; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping mldp-capabilities { | grouping mldp-capabilities { | |||
| description | description | |||
| "A grouping describing the protocol capabilities of mLDP"; | "A grouping describing the protocol capabilities of mLDP"; | |||
| container p2mp { | container p2mp { | |||
| description | description | |||
| "Configuration and state information for the | "Configuration and state information for the | |||
| point-to-multipoint capability"; | point-to-multipoint capability"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the point-to-multipoint capability"; | "'true' to enable the point-to-multipoint capability"; | |||
| } | } | |||
| } | } | |||
| container mp2mp { | container mp2mp { | |||
| description | description | |||
| "Configuration and state information for the | "Configuration and state information for the | |||
| multipoint-to-multipoint capability"; | multipoint-to-multipoint capability"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the multipoint-to-multipoint capability"; | "'true' to enable the multipoint-to-multipoint capability"; | |||
| } | } | |||
| } | } | |||
| container make-before-break { | container make-before-break { | |||
| description | description | |||
| "Configuration and state information for the | "Configuration and state information for the | |||
| make-before-break capability."; | make-before-break capability."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the make-before-break capability"; | "'true' to enable the make-before-break capability"; | |||
| } | } | |||
| leaf switchover-delay { | leaf switchover-delay { | |||
| type uint16; | type uint16; | |||
| units seconds; | units seconds; | |||
| description | description | |||
| "Switchover delay in seconds"; | "Switchover delay in seconds"; | |||
| } | } | |||
| leaf timeout { | leaf timeout { | |||
| type uint16; | type uint16; | |||
| units seconds; | units seconds; | |||
| description | description | |||
| "Timeout in seconds"; | "Timeout in seconds"; | |||
| } | } | |||
| } | } | |||
| } // mldp-capabilities | } // mldp-capabilities | |||
| grouping mldp-binding-label-peer-state-attributes { | grouping mldp-binding-label-peer-state-attributes { | |||
| description | description | |||
| "mLDP label binding per peer attributes"; | "mLDP label binding per peer attributes"; | |||
| leaf direction { | leaf direction { | |||
| type ldp:downstream-upstream; | type ldp:downstream-upstream; | |||
| description | description | |||
| "Downstream or upstream"; | "Downstream or upstream"; | |||
| } | } | |||
| leaf peer { | leaf peer { | |||
| type leafref { | type leafref { | |||
| path | path | |||
| "/rt:routing/rt:control-plane-protocols/" | "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; | |||
| } | } | |||
| description | description | |||
| "LDP peer from which this binding is received, | "LDP peer from which this binding is received, | |||
| or to which this binding is advertised."; | or to which this binding is advertised."; | |||
| } | } | |||
| leaf advertisement-type { | leaf advertisement-type { | |||
| type ldp:advertised-received; | type ldp:advertised-received; | |||
| description | description | |||
| "Advertised or received"; | "Advertised or received"; | |||
| } | } | |||
| leaf label { | leaf label { | |||
| type rt-types:mpls-label; | type rt-types:mpls-label; | |||
| description | description | |||
| "Advertised (outbound) or received (inbound) label"; | "Advertised (outbound) or received (inbound) label"; | |||
| } | } | |||
| leaf mbb-role { | leaf mbb-role { | |||
| when "../direction = 'upstream'" { | when "../direction = 'upstream'" { | |||
| description | description | |||
| "This leaf is used for upstream only."; | "This leaf is used for upstream only."; | |||
| } | } | |||
| type enumeration { | type enumeration { | |||
| enum none { | enum none { | |||
| description "Make-Before-Break (MBB) is not enabled"; | description "Make-Before-Break (MBB) is not enabled"; | |||
| } | } | |||
| enum active { | enum active { | |||
| description "This LSP is active."; | description "This LSP is active."; | |||
| } | } | |||
| enum inactive { | enum inactive { | |||
| description "This LSP is inactive."; | description "This LSP is inactive."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The MBB status of this LSP"; | "The MBB status of this LSP"; | |||
| } | } | |||
| } // mldp-binding-label-peer-state-attributes | } // mldp-binding-label-peer-state-attributes | |||
| grouping mldp-binding-label-state-attributes { | grouping mldp-binding-label-state-attributes { | |||
| description | description | |||
| "mLDP label binding attributes"; | "mLDP label binding attributes"; | |||
| list peer { | list peer { | |||
| key "direction peer advertisement-type"; | key "direction peer advertisement-type"; | |||
| description | description | |||
| "List of advertised and received peers"; | "List of advertised and received peers"; | |||
| uses mldp-binding-label-peer-state-attributes; | uses mldp-binding-label-peer-state-attributes; | |||
| } // peer | } // peer | |||
| } // mldp-binding-label-state-attributes | } // mldp-binding-label-state-attributes | |||
| /* | /* | |||
| * Configuration data and operational state data nodes | * Configuration data and operational state data nodes | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/ldp:capability" { | + "ldp:mpls-ldp/ldp:global/ldp:capability" { | |||
| description "Augmentation for MLDP global capability"; | description "Augmentation for MLDP global capability"; | |||
| container mldp { | container mldp { | |||
| description | description | |||
| "This container contains the configruation and state | "This container contains the configruation and state | |||
| information for multipoint LDP capabilities."; | information for multipoint LDP capabilities."; | |||
| uses mldp-capabilities; | uses mldp-capabilities; | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Operational state data nodes | * Operational state data nodes | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" | |||
| + "ldp:capability" { | + "ldp:capability" { | |||
| description | description | |||
| "Augmentation for MLDP received peer state capability"; | "Augmentation for MLDP received peer state capability"; | |||
| container mldp { | container mldp { | |||
| description | description | |||
| "Operational state information for the protocol capabilities | "Operational state information for the protocol capabilities | |||
| of mLDP"; | of mLDP"; | |||
| container p2mp { | container p2mp { | |||
| description | description | |||
| "Operational state information for the point-to-multipoint | "Operational state information for the point-to-multipoint | |||
| capability"; | capability"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the point-to-multipoint capability"; | "'true' to enable the point-to-multipoint capability"; | |||
| } | } | |||
| } | } | |||
| container mp2mp { | container mp2mp { | |||
| description | description | |||
| "Operational state information for the | "Operational state information for the | |||
| multipoint-to-multipoint capability"; | multipoint-to-multipoint capability"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the multipoint-to-multipoint | "'true' to enable the multipoint-to-multipoint | |||
| capability"; | capability"; | |||
| } | } | |||
| } | } | |||
| container make-before-break { | container make-before-break { | |||
| description | description | |||
| "Operational state information for the make-before-break | "Operational state information for the make-before-break | |||
| capability"; | capability"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable the make-before-break capability"; | "'true' to enable the make-before-break capability"; | |||
| } | } | |||
| } | } | |||
| } // mldp | } // mldp | |||
| } | } | |||
| /* | /* | |||
| * Global augmentation | * Global augmentation | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global" { | + "ldp:mpls-ldp/ldp:global" { | |||
| description "MLDP global augmentation."; | description "MLDP global augmentation."; | |||
| container mldp { | container mldp { | |||
| description | description | |||
| "mLDP attributes at per instance level. Defining | "mLDP attributes at per instance level. Defining | |||
| attributes here does not enable any MP capabilities. | attributes here does not enable any MP capabilities. | |||
| MP capabilities need to be explicitly enabled under | MP capabilities need to be explicitly enabled under | |||
| container capability."; | container capability."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "'true' to enable mLDP"; | "'true' to enable mLDP"; | |||
| } | } | |||
| container address-families { | container address-families { | |||
| description | description | |||
| "Per address family parameters"; | "Per address family parameters"; | |||
| container ipv4 { | container ipv4 { | |||
| description | description | |||
| "IPv4 information"; | "IPv4 information"; | |||
| container roots { | container roots { | |||
| config false; | config false; | |||
| description | description | |||
| "IPv4 multicast LSP roots"; | "IPv4 multicast LSP roots"; | |||
| list root { | list root { | |||
| key "root-address"; | key "root-address"; | |||
| description | description | |||
| "List of roots for configured multicast LSPs"; | "List of roots for configured multicast LSPs"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Root address."; | "Root address."; | |||
| } | } | |||
| leaf is-self { | leaf is-self { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "I am the root node."; | "I am the root node."; | |||
| } | } | |||
| list reachability { | list reachability { | |||
| key "address interface"; | key "address interface"; | |||
| description | description | |||
| "A next-hop for reachability to root, | "A next-hop for reachability to root, | |||
| as a RIB view"; | as a RIB view"; | |||
| leaf address { | leaf address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The next-hop address to reach root"; | "The next-hop address to reach root"; | |||
| } | } | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Interface connecting to next-hop"; | "Interface connecting to next-hop"; | |||
| } | } | |||
| leaf peer { | leaf peer { | |||
| type leafref { | type leafref { | |||
| path | path | |||
| "../../../../../../../../ldp:peers/" | "../../../../../../../../ldp:peers/" | |||
| + "ldp:peer/ldp:lsr-id"; | + "ldp:peer/ldp:lsr-id"; | |||
| } | } | |||
| description | description | |||
| "LDP peer from which this next-hop can be | "LDP peer from which this next-hop can be | |||
| reached"; | reached"; | |||
| } | } | |||
| } | } | |||
| container bindings { | container bindings { | |||
| description | description | |||
| "mLDP FEC to label bindings"; | "mLDP FEC to label bindings"; | |||
| container opaque-element-lspid { | container opaque-element-lspid { | |||
| description | description | |||
| "The type of opaque value element is the generic | "The type of opaque value element is the generic | |||
| LSP identifier"; | LSP identifier"; | |||
| reference | reference | |||
| "RFC6388: Label Distribution Protocol | "RFC6388: Label Distribution Protocol | |||
| Extensions for Point-to-Multipoint and | Extensions for Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "lsp-id"; | "lsp-id"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type uint32; | type uint32; | |||
| description "ID to identify the LSP"; | description "ID to identify the LSP"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type multipoint-type; | type multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| uses mldp-binding-label-state-attributes; | uses mldp-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-lspid | } // opaque-element-lspid | |||
| } // bindings | } // bindings | |||
| } // list root | } // list root | |||
| } // roots | } // roots | |||
| container configured-leaf-lsps { | container configured-leaf-lsps { | |||
| description | description | |||
| "Configured multicast LSPs."; | "Configured multicast LSPs."; | |||
| container opaque-element-lspid { | container opaque-element-lspid { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6388: Label Distribution Protocol | "RFC6388: Label Distribution Protocol | |||
| Extensions for Point-to-Multipoint and | Extensions for Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address lsp-id"; | "root-address lsp-id"; | |||
| description | description | |||
| "List of FEC to label bindings."; | "List of FEC to label bindings."; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type uint32; | type uint32; | |||
| description "ID to identify the LSP"; | description "ID to identify the LSP"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type multipoint-type; | type multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-lspid | } // opaque-element-lspid | |||
| } // configured-leaf-lsps | } // configured-leaf-lsps | |||
| } // ipv4 | } // ipv4 | |||
| } // list address-family | } // list address-family | |||
| } // mldp | } // mldp | |||
| } | } | |||
| /* | /* | |||
| * Notifications | * Notifications | |||
| */ | */ | |||
| notification mpls-mldp-fec-event { | notification mpls-mldp-fec-event { | |||
| description | description | |||
| "Notification event for a change of FEC status"; | "Notification event for a change of FEC status"; | |||
| leaf event-type { | leaf event-type { | |||
| type ldp:oper-status-event-type; | type ldp:oper-status-event-type; | |||
| description "Event type"; | description "Event type"; | |||
| } | } | |||
| choice opaque-element { | choice opaque-element { | |||
| description | description | |||
| "The type of opaque value element"; | "The type of opaque value element"; | |||
| case opaque-element-lspid { | case opaque-element-lspid { | |||
| container opaque-element-lspid { | container opaque-element-lspid { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6388: Label Distribution Protocol | "RFC6388: Label Distribution Protocol | |||
| Extensions for Point-to-Multipoint and | Extensions for Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Root address."; | "Root address."; | |||
| } | } | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type uint32; | type uint32; | |||
| description "ID to identify the LSP"; | description "ID to identify the LSP"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type multipoint-type; | type multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| } // container opaque-element-lspid | } // container opaque-element-lspid | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | ||||
| <CODE ENDS> | ||||
| Figure 14 | Figure 14 | |||
| 9.2. Extended | 9.2. Extended | |||
| This YANG module imports types defined in [RFC6991], [RFC8343], | This YANG module imports types defined in [RFC6991], [RFC8343], | |||
| [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. | [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. | |||
| <CODE BEGINS> file "ietf-mpls-mldp-extended@2018-10-22.yang" | <CODE BEGINS> file "ietf-mpls-mldp-extended@2021-03-07.yang" | |||
| // RFC Editor: replace the above date with the date of | // RFC Editor: replace the above date with the date of | |||
| // publication and remove this note. | // publication and remove this note. | |||
| module ietf-mpls-mldp-extended { | module ietf-mpls-mldp-extended { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended"; | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended"; | |||
| prefix "mldp-ext"; | prefix "mldp-ext"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| reference "RFC 8343: A YANG Data Model for Interface Management"; | reference "RFC 8343: A YANG Data Model for Interface Management"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference | reference | |||
| "RFC 8349: A YANG Data Model for Routing Management (NMDA | "RFC 8349: A YANG Data Model for Routing Management (NMDA | |||
| version)"; | version)"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| import ietf-mpls-ldp { | import ietf-mpls-ldp { | |||
| prefix "ldp"; | prefix "ldp"; | |||
| reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | |||
| // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | |||
| // time of publication and remove this note. | // time of publication and remove this note. | |||
| } | } | |||
| import ietf-mpls-ldp-extended { | import ietf-mpls-ldp-extended { | |||
| prefix "ldp-ext"; | prefix "ldp-ext"; | |||
| reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | reference "RFC XXXX: A YANG Data Model for MPLS LDP"; | |||
| // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | // RFC Editor: replace the XXXX with actual LDP YANG RFC number at | |||
| // time of publication and remove this note. | // time of publication and remove this note. | |||
| } | } | |||
| import ietf-mpls-mldp { | import ietf-mpls-mldp { | |||
| prefix "mldp"; | prefix "mldp"; | |||
| reference "RFC XXXX: Base YANG Data Model for MPLS mLDP"; | reference "RFC XXXX: Base YANG Data Model for MPLS mLDP"; | |||
| // RFC Editor: replace the XXXX with actual mLDP YANG RFC number at | // RFC Editor: replace the XXXX with actual mLDP YANG RFC number at | |||
| // time of publication and remove this note. | // time of publication and remove this note. | |||
| } | } | |||
| organization | organization | |||
| "IETF MPLS Working Group"; | "IETF MPLS Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/mpls/> | "WG Web: <http://tools.ietf.org/wg/mpls/> | |||
| WG List: <mailto:mpls@ietf.org> | WG List: <mailto:mpls@ietf.org> | |||
| Editor: Kamran Raza | Editor: Kamran Raza | |||
| <mailto:skraza@cisco.com> | <mailto:skraza@cisco.com> | |||
| Editor: Sowmya Krishnaswamy | Editor: Sowmya Krishnaswamy | |||
| <mailto:krishnaswamy.sowmya@gmail.com> | <mailto:krishnaswamy.sowmya@gmail.com> | |||
| Editor: Xufeng Liu | Editor: Xufeng Liu | |||
| <mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
| Editor: Santosh Esale | Editor: Santosh Esale | |||
| <mailto:sesale@juniper.net> | <mailto:sesale@juniper.net> | |||
| Editor: Loa Andersson | Editor: Loa Andersson | |||
| <mailto:loa@pi.nu> | <mailto:loa@pi.nu> | |||
| Editor: Jeff Tantsura | Editor: Jeff Tantsura | |||
| <mailto:jefftant.ietf@gmail.com>"; | <mailto:jefftant.ietf@gmail.com>"; | |||
| description | description | |||
| "This YANG module defines the extended components for the | "This YANG module defines the extended components for the | |||
| management of Multi-Protocol Label Switching (MPLS) Multipoint | management of Multi-Protocol Label Switching (MPLS) Multipoint | |||
| LDP (mLDP). | LDP (mLDP). | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
| RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| // RFC Editor: replace XXXX with actual RFC number and remove | // RFC Editor: replace XXXX with actual RFC number and remove | |||
| // this note | // this note | |||
| revision 2018-10-22 { | revision 2021-03-07 { | |||
| // RFC Editor: replace the above date 2018-10-22 with the date of | // RFC Editor: replace the above date 2021-03-07 with the date of | |||
| // publication and remove this note. | // publication and remove this note. | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: Extended YANG Data Model for MPLS mLDP"; | "RFC XXXX: Extended YANG Data Model for MPLS mLDP"; | |||
| // RFC Editor: replace XXXX with actual RFC number and remove | // RFC Editor: replace XXXX with actual RFC number and remove | |||
| // this note | // this note | |||
| } | } | |||
| /* | /* | |||
| * Features | * Features | |||
| */ | */ | |||
| feature capability-mldp-hsmp { | feature capability-mldp-hsmp { | |||
| description | description | |||
| "This feature indicates that the system allows to configure | "This feature indicates that the system allows to configure | |||
| mLDP hub-and-spoke-multipoint capability."; | mLDP hub-and-spoke-multipoint capability."; | |||
| } | } | |||
| feature capability-mldp-node-protection { | feature capability-mldp-node-protection { | |||
| description | description | |||
| "This feature indicates that the system allows to configure | "This feature indicates that the system allows to configure | |||
| mLDP node-protection capability."; | mLDP node-protection capability."; | |||
| } | } | |||
| feature mldp-mofrr { | feature mldp-mofrr { | |||
| description | description | |||
| "This feature indicates that the system supports mLDP | "This feature indicates that the system supports mLDP | |||
| Multicast only FRR (MoFRR)."; | Multicast only FRR (MoFRR)."; | |||
| } | } | |||
| feature per-peer-capability { | feature per-peer-capability { | |||
| description | description | |||
| "This feature indicates that the system allows to configure | "This feature indicates that the system allows to configure | |||
| mLDP capabilities at the per peer level."; | mLDP capabilities at the per peer level."; | |||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| typedef mofrr-role { | typedef mofrr-role { | |||
| type enumeration { | type enumeration { | |||
| enum none { | enum none { | |||
| description "MOFRR is not enabled."; | description "MOFRR is not enabled."; | |||
| } | } | |||
| enum primary { | enum primary { | |||
| description "This LSP is primary."; | description "This LSP is primary."; | |||
| } | } | |||
| enum backup { | enum backup { | |||
| description "This LSP is backup."; | description "This LSP is backup."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This type represents the MOFRR (Multicast only FRR) role | "This type represents the MOFRR (Multicast only FRR) role | |||
| status of a LSP."; | status of a LSP."; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping mldp-ext-binding-label-state-attributes { | grouping mldp-ext-binding-label-state-attributes { | |||
| description | description | |||
| "mLDP label binding attributes"; | "mLDP label binding attributes"; | |||
| list peer { | list peer { | |||
| key "direction peer advertisement-type"; | key "direction peer advertisement-type"; | |||
| description | description | |||
| "List of advertised and received peers"; | "List of advertised and received peers"; | |||
| uses mldp:mldp-binding-label-peer-state-attributes; | uses mldp:mldp-binding-label-peer-state-attributes; | |||
| leaf mofrr-role { | leaf mofrr-role { | |||
| when "../direction = 'upstream'" { | when "../direction = 'upstream'" { | |||
| description | description | |||
| "For upstream."; | "For upstream."; | |||
| } | } | |||
| type mofrr-role; | type mofrr-role; | |||
| description | description | |||
| "The MOFRR status of this LSP"; | "The MOFRR status of this LSP"; | |||
| } | } | |||
| } // peer | } // peer | |||
| } // mldp-ext-binding-label-state-attributes | } // mldp-ext-binding-label-state-attributes | |||
| grouping mldp-ext-capabilities { | grouping mldp-ext-capabilities { | |||
| description | description | |||
| "mLDP extended capabilities"; | "mLDP extended capabilities"; | |||
| container hub-and-spoke { | container hub-and-spoke { | |||
| if-feature capability-mldp-hsmp; | if-feature capability-mldp-hsmp; | |||
| description | description | |||
| "Configure hub-and-spoke-multipoint capability"; | "Configure hub-and-spoke-multipoint capability"; | |||
| reference | reference | |||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | "RFC7140: LDP Extensions for Hub and Spoke Multipoint | |||
| Label Switched Path"; | Label Switched Path"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable hub-and-spoke-multipoint"; | "Enable hub-and-spoke-multipoint"; | |||
| } | } | |||
| } | } | |||
| container node-protection { | container node-protection { | |||
| if-feature capability-mldp-node-protection; | if-feature capability-mldp-node-protection; | |||
| description | description | |||
| "Configure node-protection capability."; | "Configure node-protection capability."; | |||
| reference | reference | |||
| "RFC7715: mLDP Node Protection."; | "RFC7715: mLDP Node Protection."; | |||
| leaf plr { | leaf plr { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Point of Local Repair (PLR) capable for Multipoimt LSP | "Point of Local Repair (PLR) capable for Multipoimt LSP | |||
| node protection"; | node protection"; | |||
| } | } | |||
| container merge-point { | container merge-point { | |||
| description | description | |||
| "Merge Point capable for Multipoint LSP node protection"; | "Merge Point capable for Multipoint LSP node protection"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable merge point capability"; | "Enable merge point capability"; | |||
| } | } | |||
| leaf targeted-session-teardown-delay { | leaf targeted-session-teardown-delay { | |||
| type uint16; | type uint16; | |||
| units seconds; | units seconds; | |||
| description | description | |||
| "Targeted session teardown delay"; | "Targeted session teardown delay"; | |||
| } | } | |||
| } // merge-point | } // merge-point | |||
| } | } | |||
| } // mldp-ext-capabilities | } // mldp-ext-capabilities | |||
| grouping mldp-ext-per-af-config-attibutes { | grouping mldp-ext-per-af-config-attibutes { | |||
| description | description | |||
| "mLDP per address family configuration attibutes"; | "mLDP per address family configuration attibutes"; | |||
| container multicast-only-frr { | container multicast-only-frr { | |||
| if-feature mldp-mofrr; | if-feature mldp-mofrr; | |||
| description | description | |||
| "Multicast-only FRR (MoFRR) policy"; | "Multicast-only FRR (MoFRR) policy"; | |||
| leaf prefix-list { | leaf prefix-list { | |||
| type ldp-ext:prefix-list-ref; | type ldp-ext:prefix-list-ref; | |||
| description | description | |||
| "Enables Multicast-only FRR (MoFRR) for the specified | "Enables Multicast-only FRR (MoFRR) for the specified | |||
| access list"; | access list"; | |||
| } | } | |||
| } // multicast-only-frr | } // multicast-only-frr | |||
| container recursive-fec { | container recursive-fec { | |||
| description | description | |||
| "Recursive FEC policy"; | "Recursive FEC policy"; | |||
| leaf prefix-list { | leaf prefix-list { | |||
| type ldp-ext:prefix-list-ref; | type ldp-ext:prefix-list-ref; | |||
| description | description | |||
| "Enables recursive FEC for the specified prefix-list"; | "Enables recursive FEC for the specified prefix-list"; | |||
| } | } | |||
| } // recursive-fec | } // recursive-fec | |||
| } // mldp-ext-per-af-config-attibutes | } // mldp-ext-per-af-config-attibutes | |||
| grouping recursive-fec-attibutes { | grouping recursive-fec-attibutes { | |||
| description | description | |||
| "mLDP recursive FEC attibutes."; | "mLDP recursive FEC attibutes."; | |||
| leaf recur-root-address { | leaf recur-root-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Recursive root address"; | "Recursive root address"; | |||
| reference | reference | |||
| "RFC6512: Using Multipoint LDP When the | "RFC6512: Using Multipoint LDP When the | |||
| Backbone Has No Route to the Root"; | Backbone Has No Route to the Root"; | |||
| } | } | |||
| leaf recur-rd { | leaf recur-rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher in the VPN-Recursive | "Route Distinguisher in the VPN-Recursive | |||
| Opaque Value"; | Opaque Value"; | |||
| reference | reference | |||
| "RFC6512: Using Multipoint LDP When the | "RFC6512: Using Multipoint LDP When the | |||
| Backbone Has No Route to the Root"; | Backbone Has No Route to the Root"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type mldp:multipoint-type; | type mldp:multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| } // recursive-fec-attibutes | } // recursive-fec-attibutes | |||
| /* | /* | |||
| * Configuration data and operational state data nodes | * Configuration data and operational state data nodes | |||
| */ | */ | |||
| // Global capability | // Global capability | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" { | + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" { | |||
| description "Augmentation for MLDP global capability."; | description "Augmentation for MLDP global capability."; | |||
| uses mldp-ext-capabilities; | uses mldp-ext-capabilities; | |||
| } | } | |||
| // Peer capability | /* TODO: FIXME | |||
| augment "/rt:routing/rt:control-plane-protocols/" | // Peer capability | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability" { | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| description "Augmentation for MLDP peer capability."; | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability" { | |||
| container mldp { | description "Augmentation for MLDP peer capability."; | |||
| if-feature per-peer-capability; | container mldp { | |||
| description | if-feature per-peer-capability; | |||
| "mLDP capabilities"; | description | |||
| uses mldp:mldp-capabilities; | "mLDP capabilities"; | |||
| } | uses mldp:mldp-capabilities; | |||
| } | } | |||
| } */ | ||||
| // IPv4 config | // IPv4 config | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4" { | + "mldp:ipv4" { | |||
| description "Augmentation for MLDP IPv4 configuration"; | description "Augmentation for MLDP IPv4 configuration"; | |||
| uses mldp-ext-per-af-config-attibutes; | uses mldp-ext-per-af-config-attibutes; | |||
| } | } | |||
| // IPv4 configured-leaf-lsps config | // IPv4 configured-leaf-lsps config | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4/mldp:configured-leaf-lsps/" | + "mldp:ipv4/mldp:configured-leaf-lsps/" | |||
| + "mldp:opaque-element-lspid/mldp:fec-label" { | + "mldp:opaque-element-lspid/mldp:fec-label" { | |||
| description | description | |||
| "Augmentation for MLDP IPv4 configured-leaf-lsps | "Augmentation for MLDP IPv4 configured-leaf-lsps | |||
| configuration for opaque-element-lspid"; | configuration for opaque-element-lspid"; | |||
| list recursive-fec { | list recursive-fec { | |||
| key | key | |||
| "recur-root-address recur-rd"; | "recur-root-address recur-rd"; | |||
| description | description | |||
| "List of recursive opaque values"; | "List of recursive opaque values"; | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4/mldp:configured-leaf-lsps" { | + "mldp:ipv4/mldp:configured-leaf-lsps" { | |||
| description | description | |||
| "Augmentation for MLDP IPv4 configured-leaf-lsps | "Augmentation for MLDP IPv4 configured-leaf-lsps | |||
| configuration"; | configuration"; | |||
| container opaque-element-transit { | container opaque-element-transit { | |||
| description | description | |||
| "The type of opaque value element is the transit IPv4 | "The type of opaque value element is the transit IPv4 | |||
| source."; | source."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched Paths."; | Multipoint-to-Multipoint Label Switched Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address source-address group-address " + | "root-address source-address group-address " + | |||
| "rd recur-root-address recur-rd"; | "rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Source address"; | "Source address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| container opaque-element-bidir { | container opaque-element-bidir { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address rp group-address rd recur-root-address " | "root-address rp group-address rd recur-root-address " | |||
| + "recur-rd"; | + "recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf rp { | leaf rp { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Rendezvous-Point (RP) address"; | "Rendezvous-Point (RP) address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } | } | |||
| // IPv6 config | // IPv6 config | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "ipv6" { | + "ipv6" { | |||
| description "Augmentation for MLDP IPv4 configuration"; | description "Augmentation for MLDP IPv4 configuration"; | |||
| uses mldp-ext-per-af-config-attibutes; | uses mldp-ext-per-af-config-attibutes; | |||
| } | } | |||
| // Global forwarding-nexthop | // Global forwarding-nexthop | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" | + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" | |||
| + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family" { | + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family" { | |||
| description | description | |||
| "Augmentation for MLDP nexthop forwarding interface"; | "Augmentation for MLDP nexthop forwarding interface"; | |||
| leaf mldp-disable { | leaf mldp-disable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Disable mLDP forwarding on this interface"; | "Disable mLDP forwarding on this interface"; | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Operational state data nodes | * Operational state data nodes | |||
| */ | */ | |||
| // IPv4 state for per peer bindings | // IPv4 state for per peer bindings | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" | + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" | |||
| + "mldp:opaque-element-lspid/mldp:fec-label/mldp:peer" { | + "mldp:opaque-element-lspid/mldp:fec-label/mldp:peer" { | |||
| description "Augmentation for MLDP IPv4 state"; | description "Augmentation for MLDP IPv4 state"; | |||
| leaf mofrr-role { | leaf mofrr-role { | |||
| when "../mldp:direction = 'upstream'" { | when "../mldp:direction = 'upstream'" { | |||
| description | description | |||
| "For upstream"; | "For upstream"; | |||
| } | } | |||
| type mofrr-role; | type mofrr-role; | |||
| description | description | |||
| "The MOFRR status of this LSP"; | "The MOFRR status of this LSP"; | |||
| } | } | |||
| } | } | |||
| // Peer capability state | // Peer capability state | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" | |||
| + "ldp:capability/mldp:mldp" { | + "ldp:capability/mldp:mldp" { | |||
| description | description | |||
| "Augmentation for MLDP received peer state capability."; | "Augmentation for MLDP received peer state capability."; | |||
| container hub-and-spoke { | container hub-and-spoke { | |||
| description | description | |||
| "Configure hub-and-spoke-multipoint capability."; | "Configure hub-and-spoke-multipoint capability."; | |||
| reference | reference | |||
| "RFC7140: LDP Extensions for Hub and Spoke Multipoint | "RFC7140: LDP Extensions for Hub and Spoke Multipoint | |||
| Label Switched Path"; | Label Switched Path"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable hub-and-spoke-multipoint"; | "Enable hub-and-spoke-multipoint"; | |||
| } | } | |||
| } | } | |||
| container node-protection { | container node-protection { | |||
| description | description | |||
| "Configure node-protection capability"; | "Configure node-protection capability"; | |||
| reference | reference | |||
| "RFC7715: mLDP Node Protection."; | "RFC7715: mLDP Node Protection."; | |||
| leaf plr { | leaf plr { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Point of Local Repair (PLR) capable for Multipoint LSP | "Point of Local Repair (PLR) capable for Multipoint LSP | |||
| node protection"; | node protection"; | |||
| } | } | |||
| leaf merge-point { | leaf merge-point { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Merge Point capable for Multipoint LSP node protection"; | "Merge Point capable for Multipoint LSP node protection"; | |||
| } // merge-point | } // merge-point | |||
| } // node-protection | } // node-protection | |||
| } | } | |||
| // IPv4 bindings state | // IPv4 bindings state | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings" { | + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings" { | |||
| description "Augmentation for MLDP IPv4 bindings."; | description "Augmentation for MLDP IPv4 bindings."; | |||
| container opaque-element-transit { | container opaque-element-transit { | |||
| description | description | |||
| "The type of opaque value element is the transit IPv4 | "The type of opaque value element is the transit IPv4 | |||
| source."; | source."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched Paths."; | Multipoint-to-Multipoint Label Switched Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "source-address group-address " | "source-address group-address " | |||
| + "rd recur-root-address recur-rd"; | + "rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Source address"; | "Source address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| container opaque-element-bidir { | container opaque-element-bidir { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier."; | the generic LSP identifier."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "rp group-address rd recur-root-address recur-rd"; | "rp group-address rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf rp { | leaf rp { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Rendezvous Point (RP) address"; | "Rendezvous Point (RP) address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } | } | |||
| // IPv6 bindings state | // IPv6 bindings state | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "ipv6/roots/root/bindings" { | + "ipv6/roots/root/bindings" { | |||
| description "Augmentation for MLDP IPv6 bindings."; | description "Augmentation for MLDP IPv6 bindings."; | |||
| container opaque-element-transit { | container opaque-element-transit { | |||
| config false; | config false; | |||
| description | description | |||
| "The type of opaque value element is the transit IPv6 | "The type of opaque value element is the transit IPv6 | |||
| source."; | source."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "source-address group-address " | "source-address group-address " | |||
| + "rd recur-root-address recur-rd"; | + "rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Source address"; | "Source address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| container opaque-element-bidir { | container opaque-element-bidir { | |||
| config false; | config false; | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "rp group-address rd recur-root-address recur-rd"; | "rp group-address rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf rp { | leaf rp { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Rendezvous Point (RP) address"; | "Rendezvous Point (RP) address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } | } | |||
| // IPv4 bindings opaque-element-lspid state | // IPv4 bindings opaque-element-lspid state | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" | + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" | |||
| + "mldp:opaque-element-lspid/mldp:fec-label" { | + "mldp:opaque-element-lspid/mldp:fec-label" { | |||
| description | description | |||
| "Augmentation for MLDP IPv4 bindings with opaque type LSP ID."; | "Augmentation for MLDP IPv4 bindings with opaque type LSP ID."; | |||
| list recursive-fec { | list recursive-fec { | |||
| key | key | |||
| "recur-root-address recur-rd"; | "recur-root-address recur-rd"; | |||
| description | description | |||
| "List of recursive opaque values"; | "List of recursive opaque values"; | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } | } | |||
| // IPv6 bindings opaque-element-lspid state | // IPv6 bindings opaque-element-lspid state | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" | |||
| + "ipv6/roots/root/bindings/opaque-element-lspid/fec-label" { | + "ipv6/roots/root/bindings/opaque-element-lspid/fec-label" { | |||
| description | description | |||
| "Augmentation for MLDP IPv6 bindings with opaque type LSP ID."; | "Augmentation for MLDP IPv6 bindings with opaque type LSP ID."; | |||
| list recursive-fec { | list recursive-fec { | |||
| key "recur-root-address recur-rd"; | key "recur-root-address recur-rd"; | |||
| config false; | config false; | |||
| description | description | |||
| "List of recursive opaque values"; | "List of recursive opaque values"; | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } | } | |||
| /* | /* | |||
| * Per AF augmentation | * Per AF augmentation | |||
| */ | */ | |||
| // IPv6 augmentation | // IPv6 augmentation | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" { | + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" { | |||
| description "Augmentation for MLDP IPv6 address family."; | description "Augmentation for MLDP IPv6 address family."; | |||
| container ipv6 { | container ipv6 { | |||
| description | description | |||
| "IPv6 information"; | "IPv6 information"; | |||
| container roots { | container roots { | |||
| config false; | config false; | |||
| description | description | |||
| "IPv6 multicast LSP roots"; | "IPv6 multicast LSP roots"; | |||
| list root { | list root { | |||
| key "root-address"; | key "root-address"; | |||
| description | description | |||
| "List of roots for configured multicast LSPs"; | "List of roots for configured multicast LSPs"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf is-self { | leaf is-self { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This is the root"; | "This is the root"; | |||
| } | } | |||
| list reachability { | list reachability { | |||
| key "address interface"; | key "address interface"; | |||
| description | description | |||
| "A next-hop for reachability to root, | "A next-hop for reachability to root, | |||
| as a RIB view"; | as a RIB view"; | |||
| leaf address { | leaf address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The next-hop address to reach root"; | "The next-hop address to reach root"; | |||
| } | } | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Interface connecting to next-hop"; | "Interface connecting to next-hop"; | |||
| } | } | |||
| leaf peer { | leaf peer { | |||
| type leafref { | type leafref { | |||
| path | path | |||
| "../../../../../../../../ldp:peers/" | "../../../../../../../../ldp:peers/" | |||
| + "ldp:peer/ldp:lsr-id"; | + "ldp:peer/ldp:lsr-id"; | |||
| } | } | |||
| description | description | |||
| "LDP peer from which this next-hop can be | "LDP peer from which this next-hop can be | |||
| reached"; | reached"; | |||
| } | } | |||
| } | } | |||
| container bindings { | container bindings { | |||
| description | description | |||
| "mLDP FEC to label bindings"; | "mLDP FEC to label bindings"; | |||
| container opaque-element-lspid { | container opaque-element-lspid { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6388: Label Distribution Protocol | "RFC6388: Label Distribution Protocol | |||
| Extensions for Point-to-Multipoint and | Extensions for Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "lsp-id"; | "lsp-id"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type uint32; | type uint32; | |||
| description "ID to identify the LSP"; | description "ID to identify the LSP"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type mldp:multipoint-type; | type mldp:multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| uses mldp-ext-binding-label-state-attributes; | uses mldp-ext-binding-label-state-attributes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-lspid | } // opaque-element-lspid | |||
| } // bindings | } // bindings | |||
| } // list root | } // list root | |||
| } // roots | } // roots | |||
| container configured-leaf-lsps { | container configured-leaf-lsps { | |||
| description | description | |||
| "Configured multicast LSPs"; | "Configured multicast LSPs"; | |||
| container opaque-element-lspid { | container opaque-element-lspid { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6388: Label Distribution Protocol | "RFC6388: Label Distribution Protocol | |||
| Extensions for Point-to-Multipoint and | Extensions for Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address lsp-id"; | "root-address lsp-id"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type uint32; | type uint32; | |||
| description "ID to identify the LSP"; | description "ID to identify the LSP"; | |||
| } | } | |||
| leaf multipoint-type { | leaf multipoint-type { | |||
| type mldp:multipoint-type; | type mldp:multipoint-type; | |||
| description | description | |||
| "The type of mutipoint: p2mp or mp2mp"; | "The type of mutipoint: p2mp or mp2mp"; | |||
| } | } | |||
| list recursive-fec { | list recursive-fec { | |||
| key | key | |||
| "recur-root-address recur-rd"; | "recur-root-address recur-rd"; | |||
| description | description | |||
| "List of recursive opaque values"; | "List of recursive opaque values"; | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-lspid | } // opaque-element-lspid | |||
| container opaque-element-transit { | container opaque-element-transit { | |||
| description | description | |||
| "The type of opaque value element is the transit IPv4 | "The type of opaque value element is the transit IPv4 | |||
| source."; | source."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched Paths."; | Multipoint-to-Multipoint Label Switched Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address source-address group-address " | "root-address source-address group-address " | |||
| + "rd recur-root-address recur-rd"; | + "rd recur-root-address recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings"; | "List of FEC to label bindings"; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Source address"; | "Source address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| container opaque-element-bidir { | container opaque-element-bidir { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| list fec-label { | list fec-label { | |||
| key | key | |||
| "root-address rp group-address rd recur-root-address " | "root-address rp group-address rd recur-root-address " | |||
| + "recur-rd"; | + "recur-rd"; | |||
| description | description | |||
| "List of FEC to label bindings."; | "List of FEC to label bindings."; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf rp { | leaf rp { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Rendezvous Point (RP) address"; | "Rendezvous Point (RP) address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } // configured-leaf-lsps | } // configured-leaf-lsps | |||
| } // ipv6 | } // ipv6 | |||
| } | } | |||
| /* | /* | |||
| * Global augmentation | * Global augmentation | |||
| */ | */ | |||
| /* | /* | |||
| * Notifications | * Notifications | |||
| */ | */ | |||
| augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element/" | augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element/" | |||
| + "mldp:opaque-element-lspid/mldp:opaque-element-lspid" { | + "mldp:opaque-element-lspid/mldp:opaque-element-lspid" { | |||
| description | description | |||
| "Augmentation for MLDP notification for opaque-element-lspid."; | "Augmentation for MLDP notification for opaque-element-lspid."; | |||
| container recursive-fec { | container recursive-fec { | |||
| description | description | |||
| "Container of recursive opaque values"; | "Container of recursive opaque values"; | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // fec-label | } // fec-label | |||
| } | } | |||
| augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element" { | augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element" { | |||
| description | description | |||
| "Augmentation for MLDP notification."; | "Augmentation for MLDP notification."; | |||
| case opaque-element-transit { | case opaque-element-transit { | |||
| container opaque-element-transit { | container opaque-element-transit { | |||
| description | description | |||
| "The type of opaque value element is the transit IPv4 | "The type of opaque value element is the transit IPv4 | |||
| source."; | source."; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched Paths."; | Multipoint-to-Multipoint Label Switched Paths."; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Source address"; | "Source address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| } // opaque-element-transit | } // opaque-element-transit | |||
| case opaque-element-bidir { | case opaque-element-bidir { | |||
| container opaque-element-bidir { | container opaque-element-bidir { | |||
| description | description | |||
| "The type of opaque value element is | "The type of opaque value element is | |||
| the generic LSP identifier"; | the generic LSP identifier"; | |||
| reference | reference | |||
| "RFC6826: Multipoint LDP In-Band Signaling for | "RFC6826: Multipoint LDP In-Band Signaling for | |||
| Point-to-Multipoint and | Point-to-Multipoint and | |||
| Multipoint-to-Multipoint Label Switched | Multipoint-to-Multipoint Label Switched | |||
| Paths."; | Paths."; | |||
| leaf root-address { | leaf root-address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Root address"; | "Root address"; | |||
| } | } | |||
| leaf rp { | leaf rp { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Rendezvous Point (RP) address"; | "Rendezvous Point (RP) address"; | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
| description | description | |||
| "Group address"; | "Group address"; | |||
| } | } | |||
| leaf rd { | leaf rd { | |||
| type rt-types:route-distinguisher; | type rt-types:route-distinguisher; | |||
| description | description | |||
| "Route Distinguisher"; | "Route Distinguisher"; | |||
| reference | reference | |||
| "RFC7246: Multipoint Label Distribution | "RFC7246: Multipoint Label Distribution | |||
| Protocol In-Band Signaling in a Virtual | Protocol In-Band Signaling in a Virtual | |||
| Routing and Forwarding (VRF) Table | Routing and Forwarding (VRF) Table | |||
| Context."; | Context."; | |||
| } | } | |||
| uses recursive-fec-attibutes; | uses recursive-fec-attibutes; | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } // opaque-element-bidir | } // opaque-element-bidir | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| Figure 15 | Figure 15 | |||
| 10. Security Considerations | 10. Security Considerations | |||
| The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| skipping to change at page 56, line 45 ¶ | skipping to change at page 56, line 45 ¶ | |||
| | extended | | | | | extended | | | | |||
| +------------------------------------------------+------------+-----+ | +------------------------------------------------+------------+-----+ | |||
| This document requests the registration of the following YANG modules | This document requests the registration of the following YANG modules | |||
| in the "YANG Module Names" registry [RFC6020]: | in the "YANG Module Names" registry [RFC6020]: | |||
| +----------------+--------------------------------+--------+--------+ | +----------------+--------------------------------+--------+--------+ | |||
| | Name | Namespace | Prefix | Refere | | | Name | Namespace | Prefix | Refere | | |||
| | | | | nce | | | | | | nce | | |||
| +----------------+--------------------------------+--------+--------+ | +----------------+--------------------------------+--------+--------+ | |||
| | ietf-mpls-mldp | urn:ietf:params:xml:ns:yang | mldp | This d | | | ietf-mpls-mldp | urn:ietf:params:xml:ns:yang:ie | mldp | This d | | |||
| | | :ietf-mpls-mldp | | ocumen | | | | tf-mpls-mldp | | ocumen | | |||
| | | | | t | | | | | | t | | |||
| | | | | | | | | | | | | |||
| | ietf-mpls- | urn:ietf:params:xml:ns:yang | mldp- | This d | | | ietf-mpls- | urn:ietf:params:xml:ns:yang:ie | mldp- | This d | | |||
| | mldp-extended | :ietf-mpls-mldp-extended | ext | ocumen | | | mldp-extended | tf-mpls-mldp-extended | ext | ocumen | | |||
| | | | | t | | | | | | t | | |||
| +----------------+--------------------------------+--------+--------+ | +----------------+--------------------------------+--------+--------+ | |||
| 12. Acknowledgments | 12. Acknowledgments | |||
| The authors would like to acknowledge Ladislav Lhotka and Acee Lindem | The authors would like to acknowledge Ladislav Lhotka and Acee Lindem | |||
| for their review and comments. | for their review and comments. | |||
| 13. References | 13. References | |||
| skipping to change at page 68, line 23 ¶ | skipping to change at page 68, line 23 ¶ | |||
| Appendix B. Additional Contributors | Appendix B. Additional Contributors | |||
| Matthew Bocci | Matthew Bocci | |||
| Nokia | Nokia | |||
| Email: matthew.bocci@nokia.com | Email: matthew.bocci@nokia.com | |||
| Authors' Addresses | Authors' Addresses | |||
| Kamran Raza | Kamran Raza | |||
| Cisco Systems | Cisco Systems, Inc. | |||
| Email: skraza@cisco.com | Email: skraza@cisco.com | |||
| Xufeng Liu | Xufeng Liu | |||
| Volta Networks | Volta Networks | |||
| Email: xufeng.liu.ietf@gmail.com | Email: xufeng.liu.ietf@gmail.com | |||
| Santosh Esale | Santosh Esale | |||
| Juniper Networks | Juniper Networks | |||
| Email: santosh_easale@berkeley.edu | Email: santosh_easale@berkeley.edu | |||
| End of changes. 126 change blocks. | ||||
| 1433 lines changed or deleted | 1425 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/ | ||||