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