idnits 2.17.1 draft-ietf-mpls-mldp-yang-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 156 instances of too long lines in the document, the longest one being 88 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 478 has weird spacing: '...address ine...' == Line 487 has weird spacing: '...address ine...' == Line 502 has weird spacing: '...address ine...' == Line 511 has weird spacing: '...address ine...' == Line 520 has weird spacing: '...address ine...' == (21 more instances...) == The document doesn't use any RFC 2119 keywords, yet has text resembling RFC 2119 boilerplate text. -- The document date (May 31, 2019) is 1785 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-09) exists of draft-ietf-mpls-ldp-yang-06 ** Downref: Normative reference to an Informational RFC: RFC 7431 Summary: 2 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 MPLS Working Group K. Raza 2 Internet-Draft Cisco Systems 3 Intended status: Standards Track 4 Expires: December 2, 2019 X. Liu 5 Volta Networks 7 S. Esale 8 Juniper Networks 10 L. Andersson 11 Huawei Technologies 13 J. Tantsura 14 Nuage Networks 16 S. Krishnaswamy 17 Individual 19 May 31, 2019 21 YANG Data Model for MPLS mLDP 22 draft-ietf-mpls-mldp-yang-06 24 Abstract 26 This document describes a YANG data model for Multi-Protocol Label 27 Switching (MPLS) Multipoint Label Distribution Protocol (mLDP). The 28 mLDP data model augments the LDP data model. 30 The YANG modules in this document conform to the Network Management 31 Datastore Architecture (NMDA). 33 Status of This Memo 35 This Internet-Draft is submitted in full conformance with the 36 provisions of BCP 78 and BCP 79. 38 Internet-Drafts are working documents of the Internet Engineering 39 Task Force (IETF). Note that other groups may also distribute 40 working documents as Internet-Drafts. The list of current Internet- 41 Drafts is at https://datatracker.ietf.org/drafts/current/. 43 Internet-Drafts are draft documents valid for a maximum of six months 44 and may be updated, replaced, or obsoleted by other documents at any 45 time. It is inappropriate to use Internet-Drafts as reference 46 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on December 2, 2019. 49 Copyright Notice 51 Copyright (c) 2019 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (https://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 67 1.1. Base and Extended . . . . . . . . . . . . . . . . . . . . 4 68 2. Specification of Requirements . . . . . . . . . . . . . . . . 4 69 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 70 3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 5 71 3.2. FEC Types . . . . . . . . . . . . . . . . . . . . . . . . 6 72 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 7 73 4.1. Configuration Hierarchy . . . . . . . . . . . . . . . . . 7 74 4.2. mldp global container . . . . . . . . . . . . . . . . . . 9 75 4.3. Leveraging LDP containers . . . . . . . . . . . . . . . . 9 76 4.4. Configuration Tree . . . . . . . . . . . . . . . . . . . 10 77 4.4.1. Base . . . . . . . . . . . . . . . . . . . . . . . . 10 78 4.4.2. Extended . . . . . . . . . . . . . . . . . . . . . . 11 79 5. Operational State . . . . . . . . . . . . . . . . . . . . . . 13 80 5.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 13 81 5.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 14 82 5.3. Derived states . . . . . . . . . . . . . . . . . . . . . 17 83 5.3.1. Root state . . . . . . . . . . . . . . . . . . . . . 17 84 5.3.2. Bindings state . . . . . . . . . . . . . . . . . . . 18 85 5.3.3. Capabilities state . . . . . . . . . . . . . . . . . 21 86 6. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 21 87 6.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 21 88 6.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 22 89 7. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 90 8. Open Items . . . . . . . . . . . . . . . . . . . . . . . . . 23 91 9. YANG Specification . . . . . . . . . . . . . . . . . . . . . 23 92 9.1. Base . . . . . . . . . . . . . . . . . . . . . . . . . . 23 93 9.2. Extended . . . . . . . . . . . . . . . . . . . . . . . . 34 94 10. Security Considerations . . . . . . . . . . . . . . . . . . . 55 95 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56 96 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 57 97 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 57 98 13.1. Normative References . . . . . . . . . . . . . . . . . . 57 99 13.2. Informative References . . . . . . . . . . . . . . . . . 60 100 Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 60 101 Appendix B. Additional Contributors . . . . . . . . . . . . . . 68 102 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 68 104 1. Introduction 106 This document introduces a YANG data model for MPLS Multipoint Label 107 Distribution Protocol (mLDP). The mLDP model being defined here is 108 dependent on the LDP YANG data model [I-D.ietf-mpls-ldp-yang]. This 109 implies that an operator will need to use the base LDP module to 110 configure and manage the control plane for mLDP. For example, an 111 operator would enable LDP discovery on MPLS interface to establish 112 LDP/mLDP peering on which mLDP bindings could be exchanged. 113 Similarly, an operator could query state information for an LDP peer 114 in order to verify peering attributes, etc. 116 Moreover, it is important to note here that any assumptions made in 117 the LDP model also hold true in this document, unless otherwise 118 explicitly stated. 120 Like its parent LDP data model, this mLDP model also defines the 121 following constructs for managing the mLDP protocol: 123 o Configuration 125 o Operational State 127 o Executables (Actions) 129 o Notifications 131 The modeling in this document complies with the Network Management 132 Datastore Architecture (NMDA) [RFC8342]. The operational state data 133 is combined with the associated configuration data in the same 134 hierarchy [RFC8407]. When protocol states are retrieved from the 135 NMDA operational state datastore, the returned states cover all 136 "config true" (rw) and "config false" (ro) nodes defined in the 137 schema. 139 This document is organized to define the data model for each of the 140 above constructs in the sequence as listed above. 142 1.1. Base and Extended 144 Like the LDP model, the configuration and state items are divided 145 into the following two broad categories: 147 o Base 149 o Extended 151 The "base" category contains the basic and fundamental features that 152 are covered in the mLDP base specification [RFC6388] alongwith few 153 significant extension like targeted mLDP [RFC7060], constituting the 154 minumum requirements for an mLDP deployment. Whereas, the "extended" 155 category contains all other non-base features (such as recursive FEC 156 support, protection etc.). All the items in the base category are 157 mandatory and hence no "if-feature" is allowed under the "base" 158 category. While "base" model support will suffice for small 159 deployments, large deployments will require not only the "base" 160 module support but also "extended" support for some selected and 161 required features. 163 The base and extended categories are defined in their own modules 164 ietf-mpls-mldp and ietf-mpls-mldp-extended respectively, each of 165 which augments the LDP base model as defined within the ietf-mpls-ldp 166 module [I-D.ietf-mpls-ldp-yang]. 168 Like LDP, the mLDP "base" model configuration and state covers ipv4 169 address-family only, with ipv6 address-family related configuration 170 and state be covered in the "extended" model. 172 In this document, when a simplified graphical representation of YANG 173 model is presented in a tree diagrams, the meaning of the symbols in 174 these tree diagrams is defined in [RFC8340]. 176 2. Specification of Requirements 178 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 179 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 180 document are to be interpreted as described in BCP 14 [RFC2119] 181 [RFC8174] when, and only when, they appear in all capitals, as shown 182 here. 184 3. Overview 186 This document defines a YANG module named "ietf-mpls-mldp" for the 187 mLDP YANG base data model that augments /rt:routing/rt:control-plane- 188 protocols/ldp:mpls-ldp defined in [I-D.ietf-mpls-ldp-yang]. The 189 document also defines the "ietf-mpls-mldp-extended" YANG module that 190 models the extended mLDP features. 192 The following diagram depicts high level mLDP yang tree organization 193 and hierarchy with respect to LDP: 195 +-- rw routing 196 +-- rw control-plane-protocols 197 +-- rw mpls-ldp 198 +-- rw some_ldp_container 199 | +-- rw mldp 200 | +-- rw ... // mldp base 201 | | +-- rw ... 202 | | +-- ro ... 203 | | +-- 204 | +-- rw mldp-ext:... // mldp extended 205 | | +-- rw ... 206 | | +-- ro ... 207 | | +-- 208 +-- ro some_ldp_container 209 +-- ro mldp 210 +-- ro ... // mldp base 211 | +-- ro ... 212 | +-- 213 +-- ro mldp-ext:... // mldp extended 214 +-- ro ... 215 +-- 217 notifications: 218 +--- n mpls-mldp-some_event 219 +--- n ... 221 Figure 1 223 3.1. Scope 225 The main mLDP areas and features that are within the scope of this 226 model are as follows: 228 o Base: 230 * mLDP Base Specification [RFC6388] 232 * Targeted mLDP [RFC7060] 234 * Configured Leaf LSPs (manually provisioned) 236 o Extended: 238 * mLDP Recursive FEC [RFC6512] 240 * mLDP Fast-Reroute (FRR): 242 + Node Protection [RFC7715] 244 + Multicast-only [RFC7431] 246 * In-band Signaling: 248 + mLDP In-band Signaling [RFC6826] 250 + mLDP In-band signaling in a VRF [RFC7246] 252 + mLDP In-band Signaling with Wildcards [RFC7438] 254 * Hub-and-Spoke Multipoint LSPs [RFC7140] 256 [Ed Note: Some of the topics in the above list are to be addressed/ 257 extended in a later revision of this document]. 259 3.2. FEC Types 261 The FEC for Multipoint LSP is presented as (root-address, opaque- 262 element). The following table lists various type of MP opaque 263 elements with their keys, as covered in the configuration and state 264 model: 266 +-------------------------+--------------------+------------+ 267 | Opaque Type | Key | RFC | 268 +-------------------------+--------------------+------------+ 269 | Generic LSP Identifier | LSP Id | [RFC6388] | 270 | Transit IPv4 Source | Source, Group | [RFC6826] | 271 | Transit IPv6 Source | Source, Group | [RFC6826] | 272 | Transit IPv4 Bidir | RP, Group | [RFC6826] | 273 | Transit IPv6 Bidir | RP, Group | [RFC6826] | 274 | Transit VPNv4 Source | Source, Group, RD | [RFC7246] | 275 | Transit VPNv6 Source | Source, Group, RD | [RFC7246] | 276 | Transit VPNv4 Bidir | RP, Group, RD | [RFC7246] | 277 | Transit VPNv6 Bidir | RP, Group, RD | [RFC7246] | 278 | Recursive Opaque | Root | [RFC6512] | 279 | VPN-Recursive Opaque | Root, RD | [RFC6512] | 280 +-------------------------+--------------------+------------+ 282 Table 1: MP Opaque Types and keys 284 It should be noted that there are three basic types (LSP Id, Source, 285 and Bidir) and then there are variants (VPN, recursive, VPN- 286 recursive) on top of these basic types. 288 The "base" model includes only the "Generic LSP Identifier" opaque 289 type (for ipv4), while rest of the above types are covered by the 290 "extended" model. 292 4. Configuration 294 4.1. Configuration Hierarchy 296 The high-level configuration organization for the base and extended 297 mLDP follows: 299 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 300 +-- mpls-ldp 301 +-- global 302 +-- ... 303 +-- ... 304 +-- mldp 305 | +-- ... 306 | +-- ... 307 | +-- address-families 308 | +-- ipv4 309 | | +-- ... 310 | | +-- mldp-ext: ... 311 | | +-- ... 312 | | +-- configured-leaf-lsps 313 | | +-- ... 314 | | +-- ... 315 | | +-- mldp-ext: ... 316 | | +-- ... 317 | +-- mldp-ext: ipv6 318 | +-- ... 319 | +-- ... 320 | +-- configured-leaf-lsps 321 | +-- ... 322 | +-- ... 323 +-- capability 324 | +-- mldp 325 | +-- ... 326 | +-- mldp-ext: ... 327 | +-- ... 328 +-- forwarding-nexthop 329 +--- interfaces 330 +--- interface* [name] 331 +--- mldp-ext: ... 333 Figure 2 335 From above hierarchy, we can categorize mLDP configuration parameters 336 into two types: 338 o Parameters that are mLDP specific 340 o Parameters that leverage/extend LDP containers and parameters 342 The following subsections first describe the mLDP specific 343 configuration parameters, followed by those leveraging LDP. It 344 should be noted that these parameters are defined under their 345 respective base or extended module as per their categorization. 347 4.2. mldp global container 349 mldp container is an augmentation of LDP global container and holds 350 the configuration related to items that are mLDP specific. The main 351 items under this container are: 353 o mLDP enablement: To enable mLDP under a (VRF) routing instance, 354 mldp is enabled in the mldp container under LDP. Given that mLDP 355 requires LDP signaling, it is not sensible to allow disabling the 356 LDP control plane under a (VRF) network-instance while requiring 357 mLDP to be enabled for the same. However, if a user wants to only 358 allow signaling for multipoint FECs on an LDP/mLDP enabled VRF 359 instance, he/she can use LDP label-policies to disable unicast 360 FECs under the VRF. 362 o mLDP per-AF features: mLDP manages its own list of IP address- 363 families and the features enabled underneath. The per-AF mLDP 364 configuration items include: 366 * Multicast-only FRR: This enables Multicast-only FRR 367 functionality for a given AF under mLDP. The feature allows 368 route-policy to be configured for finer control/applicability 369 of the feature. 371 * Recursive FEC: The recursive-fec feature [RFC6512] can be 372 enabled per-AF with a route-policy. 374 * Configured Leaf LSPs: To provision multipoint leaf LSPs 375 manually, a per-AF container is provided under LDP. The 376 configuration is flexible and allows a user to specify MP LSPs 377 of type p2mp or mp2mp with IPv4 or IPv6 root address(es) by 378 using either LSP-Id or (S,G). 380 Targeted mLDP feature specification [RFC7060] does not require any 381 mLDP specific configuration. It, however, requires LDP upstream- 382 label-assignment capability [RFC6389] to be enabled. 384 4.3. Leveraging LDP containers 386 The mLDP configuration model leverages following configuration areas 387 and containers that are already defined for LDP: 389 o Capabilities: A new container "mldp" is defined that augments 390 LDP's capabilities container. This new container specifies any 391 mLDP specific capabilities and their parameters. Moreover, a new 392 container "mldp" is also added by augmenting LDP per-peer 393 capability container to override/control mLDP specific 394 capabilities on a peer level. In the scope of this document, the 395 most important capabilities related to mLDP are p2mp, mp2mp, make- 396 before-break, hub-and-spoke, and node-protection. 398 o Discovery and Peering: mLDP requires LDP discovery and peer 399 procedures to form mLDP peering. A peer is treated as an mLDP 400 peer only when either P2MP or MP2MP capabilities have been 401 successfully exchanged with the peer. If a user wish to 402 selectively enable or disable mLDP with a LDP-enabled peer, he/she 403 may use per-peer mLDP capabilities configuration. In most common 404 deployments, it is desirable to disable mLDP (capabilities 405 announcements) on a targeted-only LDP peering, where targeted-only 406 peer is the one whose discovery sources are the targeted type 407 only. 409 o Forwarding: By default, mLDP is allowed to select any of the LDP 410 enabled interface as a downstream interface towards a next-hop 411 (LDP/mLDP peer) for MP LSP programming. However, a configuration 412 option is provided to allow mLDP to exclude a given interface from 413 such a selection. Note that such a configuration option will be 414 useful only when there are more than one interface available for 415 the downstream selection. 417 4.4. Configuration Tree 419 4.4.1. Base 421 A simplified graphical representation of the data model for mLDP base 422 configuration follows: 424 module: ietf-mpls-mldp 425 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: 426 +--rw mldp 427 +--rw p2mp 428 | +--rw enable? boolean 429 +--rw mp2mp 430 | +--rw enable? boolean 431 +--rw make-before-break 432 +--rw enable? boolean 433 +--rw switchover-delay? uint16 434 +--rw timeout? uint16 436 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: 437 +--rw mldp 438 +--rw enable? boolean 439 +--rw address-families 440 +--rw ipv4 441 +--rw configured-leaf-lsps 442 +--rw opaque-element-lspid 443 +--rw fec-label* [root-address lsp-id] 444 +--rw root-address inet:ipv4-address 445 +--rw lsp-id uint32 446 +--rw multipoint-type? multipoint-type 448 Figure 3 450 4.4.2. Extended 452 A simplified graphical representation of the data model for mLDP 453 extended configuration follows: 455 module: ietf-mpls-mldp 456 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability: 457 +--rw mldp 458 +--rw mldp-ext:hub-and-spoke {capability-mldp-hsmp}? 459 | +--rw mldp-ext:enable? boolean 460 +--rw mldp-ext:node-protection {capability-mldp-node-protection}? 461 +--rw mldp-ext:plr? boolean 462 +--rw mldp-ext:merge-point 463 +--rw mldp-ext:enable? boolean 464 +--rw mldp-ext:targeted-session-teardown-delay? uint16 466 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: 467 +--rw mldp 468 +--rw enable? boolean 469 +--rw address-families 470 +--rw ipv4 471 | +--rw configured-leaf-lsps 472 | | +--rw mldp-ext:opaque-element-transit 473 | | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] 474 | | | +--rw mldp-ext:root-address inet:ipv4-address 475 | | | +--rw mldp-ext:source-address inet:ip-address 476 | | | +--rw mldp-ext:group-address inet:ip-address-no-zone 477 | | | +--rw mldp-ext:rd route-distinguisher 478 | | | +--rw mldp-ext:recur-root-address inet:ip-address 479 | | | +--rw mldp-ext:recur-rd route-distinguisher 480 | | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 481 | | +--rw mldp-ext:opaque-element-bidir 482 | | +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd] 483 | | +--rw mldp-ext:root-address inet:ipv4-address 484 | | +--rw mldp-ext:rp inet:ip-address 485 | | +--rw mldp-ext:group-address inet:ip-address-no-zone 486 | | +--rw mldp-ext:rd route-distinguisher 487 | | +--rw mldp-ext:recur-root-address inet:ip-address 488 | | +--rw mldp-ext:recur-rd route-distinguisher 489 | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 490 | +--rw mldp-ext:multicast-only-frr {mldp-mofrr}? 491 | | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref 492 | +--rw mldp-ext:recursive-fec 493 | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref 494 +--rw mldp-ext:ipv6 495 +--rw mldp-ext:configured-leaf-lsps 496 | +--rw mldp-ext:opaque-element-lspid 497 | | +--rw mldp-ext:fec-label* [root-address lsp-id] 498 | | +--rw mldp-ext:root-address inet:ipv6-address 499 | | +--rw mldp-ext:lsp-id uint32 500 | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 501 | | +--rw mldp-ext:recursive-fec* [recur-root-address recur-rd] 502 | | +--rw mldp-ext:recur-root-address inet:ip-address 503 | | +--rw mldp-ext:recur-rd route-distinguisher 504 | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 505 | +--rw mldp-ext:opaque-element-transit 506 | | +--rw mldp-ext:fec-label* [root-address source-address group-address rd recur-root-address recur-rd] 507 | | +--rw mldp-ext:root-address inet:ipv6-address 508 | | +--rw mldp-ext:source-address inet:ip-address 509 | | +--rw mldp-ext:group-address inet:ip-address-no-zone 510 | | +--rw mldp-ext:rd route-distinguisher 511 | | +--rw mldp-ext:recur-root-address inet:ip-address 512 | | +--rw mldp-ext:recur-rd route-distinguisher 513 | | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 514 | +--rw mldp-ext:opaque-element-bidir 515 | +--rw mldp-ext:fec-label* [root-address rp group-address rd recur-root-address recur-rd] 516 | +--rw mldp-ext:root-address inet:ipv6-address 517 | +--rw mldp-ext:rp inet:ip-address 518 | +--rw mldp-ext:group-address inet:ip-address-no-zone 519 | +--rw mldp-ext:rd route-distinguisher 520 | +--rw mldp-ext:recur-root-address inet:ip-address 521 | +--rw mldp-ext:recur-rd route-distinguisher 522 | +--rw mldp-ext:multipoint-type? mldp:multipoint-type 523 +--rw mldp-ext:multicast-only-frr {mldp-mofrr}? 524 | +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref 525 +--rw mldp-ext:recursive-fec 526 +--rw mldp-ext:prefix-list? ldp-ext:prefix-list-ref 528 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability: 529 +--rw mldp {per-peer-capability}? 530 +--rw p2mp 531 | +--rw enable? boolean 532 +--rw mp2mp 533 | +--rw enable? boolean 534 +--rw make-before-break 535 +--rw enable? boolean 536 +--rw switchover-delay? uint16 537 +--rw timeout? uint16 539 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: 540 +--rw mldp-disable? boolean 542 Figure 4 544 5. Operational State 546 The operational state of mLDP can be queried and obtained from 547 various read-only mdlp "state" containers that augment ldp 548 containers. 550 5.1. Base 552 A simplified graphical representation of the data model for mLDP base 553 operational state follows: 555 module: ietf-mpls-mldp 556 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: 557 +--ro mldp 558 +--ro p2mp 559 | +--ro enable? boolean 560 +--ro mp2mp 561 | +--ro enable? boolean 562 +--ro make-before-break 563 +--ro enable? boolean 565 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: 566 +--rw mldp 567 +--rw enable? boolean 568 +--rw address-families 569 +--rw ipv4 570 +--ro roots 571 +--ro root* [root-address] 572 +--ro root-address inet:ipv4-address 573 +--ro is-self? boolean 574 +--ro reachability* [address interface] 575 | +--ro address inet:ipv4-address 576 | +--ro interface if:interface-ref 577 | +--ro peer? -> ../../../../../../../../ldp:peers/peer/lsr-id 578 +--ro bindings 579 +--ro opaque-element-lspid 580 +--ro fec-label* [lsp-id] 581 +--ro lsp-id uint32 582 +--ro multipoint-type? multipoint-type 583 +--ro peer* [direction peer advertisement-type] 584 +--ro direction ldp:downstream-upstream 585 +--ro peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 586 +--ro advertisement-type ldp:advertised-received 587 +--ro label? rt-types:mpls-label 588 +--ro mbb-role? enumeration 589 +--ro mldp-ext:mofrr-role? mofrr-role 591 Figure 5 593 5.2. Extended 595 A simplified graphical representation of the data model for mLDP 596 extended operational state follows: 598 module: ietf-mpls-mldp 600 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/ldp:capability: 602 +--ro mldp 603 +--ro mldp-ext:hub-and-spoke 604 | +--ro mldp-ext:enable? boolean 605 +--ro mldp-ext:node-protection 606 +--ro mldp-ext:plr? boolean 607 +--ro mldp-ext:merge-point? boolean 609 augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global: 610 +--rw mldp 611 +--rw enable? boolean 612 +--rw address-families 613 +--rw ipv4 614 | +--ro roots 615 | +--ro root* [root-address] 616 | +--ro root-address inet:ipv4-address 617 | +--ro bindings 618 | +--ro opaque-element-lspid 619 | | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd] 620 | | +--ro mldp-ext:recur-root-address inet:ip-address 621 | | +--ro mldp-ext:recur-rd route-distinguisher 622 | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 623 | | +--ro mldp-ext:peer* [direction peer advertisement-type] 624 | | +--ro mldp-ext:direction ldp:downstream-upstream 625 | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 626 | | +--ro mldp-ext:advertisement-type ldp:advertised-received 627 | | +--ro mldp-ext:label? rt-types:mpls-label 628 | | +--ro mldp-ext:mbb-role? enumeration 629 | | +--ro mldp-ext:mofrr-role? mofrr-role 630 | +--ro mldp-ext:opaque-element-transit 631 | | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd] 632 | | +--ro mldp-ext:source-address inet:ip-address 633 | | +--ro mldp-ext:group-address inet:ip-address-no-zone 634 | | +--ro mldp-ext:rd route-distinguisher 635 | | +--ro mldp-ext:recur-root-address inet:ip-address 636 | | +--ro mldp-ext:recur-rd route-distinguisher 637 | | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 638 | | +--ro mldp-ext:peer* [direction peer advertisement-type] 639 | | +--ro mldp-ext:direction ldp:downstream-upstream 640 | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 641 | | +--ro mldp-ext:advertisement-type ldp:advertised-received 642 | | +--ro mldp-ext:label? rt-types:mpls-label 643 | | +--ro mldp-ext:mbb-role? enumeration 644 | | +--ro mldp-ext:mofrr-role? mofrr-role 645 | +--ro mldp-ext:opaque-element-bidir 646 | +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd] 647 | +--ro mldp-ext:rp inet:ip-address 648 | +--ro mldp-ext:group-address inet:ip-address-no-zone 649 | +--ro mldp-ext:rd route-distinguisher 650 | +--ro mldp-ext:recur-root-address inet:ip-address 651 | +--ro mldp-ext:recur-rd route-distinguisher 652 | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 653 | +--ro mldp-ext:peer* [direction peer advertisement-type] 654 | +--ro mldp-ext:direction ldp:downstream-upstream 655 | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 656 | +--ro mldp-ext:advertisement-type ldp:advertised-received 657 | +--ro mldp-ext:label? rt-types:mpls-label 658 | +--ro mldp-ext:mbb-role? enumeration 659 | +--ro mldp-ext:mofrr-role? mofrr-role 660 +--rw mldp-ext:ipv6 661 +--ro mldp-ext:roots 662 +--ro mldp-ext:root* [root-address] 663 +--ro mldp-ext:root-address inet:ipv6-address 664 +--ro mldp-ext:is-self? boolean 665 +--ro mldp-ext:reachability* [address interface] 666 | +--ro mldp-ext:address inet:ipv6-address 667 | +--ro mldp-ext:interface if:interface-ref 668 | +--ro mldp-ext:peer? -> ../../../../../../../../ldp:peers/peer/lsr-id 669 +--ro mldp-ext:bindings 670 +--ro mldp-ext:opaque-element-lspid 671 | +--ro mldp-ext:fec-label* [lsp-id] 672 | +--ro mldp-ext:lsp-id uint32 673 | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 674 | +--ro mldp-ext:peer* [direction peer advertisement-type] 675 | | +--ro mldp-ext:direction ldp:downstream-upstream 676 | | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 677 | | +--ro mldp-ext:advertisement-type ldp:advertised-received 678 | | +--ro mldp-ext:label? rt-types:mpls-label 679 | | +--ro mldp-ext:mbb-role? enumeration 680 | | +--ro mldp-ext:mofrr-role? mofrr-role 681 | +--ro mldp-ext:recursive-fec* [recur-root-address recur-rd] 682 | +--ro mldp-ext:recur-root-address inet:ip-address 683 | +--ro mldp-ext:recur-rd route-distinguisher 684 | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 685 | +--ro mldp-ext:peer* [direction peer advertisement-type] 686 | +--ro mldp-ext:direction ldp:downstream-upstream 687 | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 688 | +--ro mldp-ext:advertisement-type ldp:advertised-received 689 | +--ro mldp-ext:label? rt-types:mpls-label 690 | +--ro mldp-ext:mbb-role? enumeration 691 | +--ro mldp-ext:mofrr-role? mofrr-role 692 +--ro mldp-ext:opaque-element-transit 693 | +--ro mldp-ext:fec-label* [source-address group-address rd recur-root-address recur-rd] 694 | +--ro mldp-ext:source-address inet:ip-address 695 | +--ro mldp-ext:group-address inet:ip-address-no-zone 696 | +--ro mldp-ext:rd route-distinguisher 697 | +--ro mldp-ext:recur-root-address inet:ip-address 698 | +--ro mldp-ext:recur-rd route-distinguisher 699 | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 700 | +--ro mldp-ext:peer* [direction peer advertisement-type] 701 | +--ro mldp-ext:direction ldp:downstream-upstream 702 | +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 703 | +--ro mldp-ext:advertisement-type ldp:advertised-received 704 | +--ro mldp-ext:label? rt-types:mpls-label 705 | +--ro mldp-ext:mbb-role? enumeration 706 | +--ro mldp-ext:mofrr-role? mofrr-role 707 +--ro mldp-ext:opaque-element-bidir 708 +--ro mldp-ext:fec-label* [rp group-address rd recur-root-address recur-rd] 709 +--ro mldp-ext:rp inet:ip-address 710 +--ro mldp-ext:group-address inet:ip-address-no-zone 711 +--ro mldp-ext:rd route-distinguisher 712 +--ro mldp-ext:recur-root-address inet:ip-address 713 +--ro mldp-ext:recur-rd route-distinguisher 714 +--ro mldp-ext:multipoint-type? mldp:multipoint-type 715 +--ro mldp-ext:peer* [direction peer advertisement-type] 716 +--ro mldp-ext:direction ldp:downstream-upstream 717 +--ro mldp-ext:peer -> /rt:routing/control-plane-protocols/ldp:mpls-ldp/peers/peer/lsr-id 718 +--ro mldp-ext:advertisement-type ldp:advertised-received 719 +--ro mldp-ext:label? rt-types:mpls-label 720 +--ro mldp-ext:mbb-role? enumeration 721 +--ro mldp-ext:mofrr-role? mofrr-role 723 Figure 6 725 5.3. Derived states 727 The main areas for which mLDP operational derived state is defined 728 are: 730 o Root 732 o Bindings (FEC-label) 734 o Capabilities 736 5.3.1. Root state 738 The root address is a fundamental construct for MP FEC bindings and 739 LSPs. The root state provides information on all the known roots in 740 a given address-familty and their root reachability information (as 741 learnt from RIB). In case of multi-path reachability to a root, the 742 selection of the upstream path is done on per-LSP basis at the time 743 of LSP setup. Similarly, when protection mechanisms like Make- 744 before-break (MBB) or Multicast-only FRR (MoFRR) are in place, the 745 path designation as active/standby or primary/backup is also done on 746 per-LSP basis. It should be noted that a given root can be shared 747 amongst multiple P2MP and/or MP2MP LSPs. Moreover, an LSP can be 748 signaled to more than one root for Root Node Redundancy (RNR) 749 purposes. 751 The following diagram illustrates a root database on a branch/transit 752 LSR: 754 root 203.0.113.1: 755 path1: 756 RIB: GigEthernet 1/0, 198.51.100.1; 757 LDP: peer 192.0.2.1:0 758 path2: 759 RIB: GigEthernet 2/0, 198.51.100.16; 760 LDP: peer 192.0.2.2:0 762 root 203.0.113.2: 763 path1: 764 RIB: 198.51.100.100; (NOTE: This is a recursive path) 765 LDP: peer 192.0.2.100:0 (NOTE: T-mLDP peer) 767 root . . . . 769 Figure 7 771 A root entry on a root LSR itself will be presented as follows: 773 root 203.0.113.10: 774 is-self 776 Figure 8 778 5.3.2. Bindings state 780 Binding state provides information on mLDP FEC-label bindings for 781 both the P2MP and MP2MP FEC types. Like LDP, the FEC-label binding 782 derived state is presented in a FEC-centric view per address-family, 783 and provides information on both inbound (received) and outbound 784 (advertised) bindings. The FEC is presented as (root-address, 785 opaque-element-data) as described earlier in section Section 3.2, and 786 the direction (upstream or downstream) is picked with respect to root 787 reachability. In case of MBB or/and MoFRR, the role of a given peer 788 binding is also provided with respect to MBB (active or standby) or/ 789 and MoFRR (primary or backup). 791 A high-level tree hierarchy for mLDP bindings state follows: 793 +--rw mpls-ldp! 794 +--rw global 795 +--rw mldp 796 +--rw address-families 797 +--rw ipv4 (or ipv6) 798 +--ro state 799 +--ro roots 800 +--ro root* [root-address] 801 +--ro .... 802 +--ro bindings 803 +--ro opaque-element-xxx 804 | +--ro fec-label* [type-specific-key] 805 | +--ro some_key_1 ... 806 | +--ro some_key_2 ... 807 | +--ro multipoint-type? multipoint-type 808 | +--ro peer* [direction peer advertisement-type] 809 | | +--ro direction ldp:downstream-upstream 810 | | +--ro peer leafref 811 | | +--ro advertisement-type ldp:advertised-received 812 | | +--ro label? mpls:mpls-label 813 | | +--ro mbb-role? enumeration 814 | | +--ro mldp-ext:mofrr-role? mofrr-role 815 +--ro opaque-element-yyy 816 | +--ro fec-label* [type-specific-key] 817 | +--ro some_key_1 ... 818 ... 820 Figure 9 822 mLDP binding state is organized and presented per root address, and 823 hence the bindings container in under a root node in the model. The 824 bindings state is made available for FECs pertaining to different 825 types of opaque elements, with some state avaiable under the "base" 826 tree and the rest under the "extended" tree. 828 In the above tree, the various opaque types along with their type 829 specific key(s) refer to the table Table 1, as captured earlier in 830 the document. For example, if the opaque type is a Generic LSP 831 Identifier, then the type-specific-key will be a uint32 LSP-Id key. 832 Please see the complete model for all other types. 834 It is important to note the following: 836 o The address-family ipv4/ipv6 applies to "root" address in the mLDP 837 binding tree. The other addresses (source, group, Rendezvous- 838 Point etc.) do not have to be of the same address family type as 839 the root. 841 o The "recur-root-address" field applies to the Recursive opaque 842 type, and the (recur-root-address, recur-rd) fields applies to the 843 VPN-Recursive opaque types as defined in [RFC6512]. 845 o In case of a recursive FEC, the address-family of the recur-root- 846 address could be different than the address-family of the root 847 address of the original encapsulated MP FEC. 849 The following diagram illustrates the FEC-label binding information 850 structure for a P2MP (Transit IPv4 Source type) LSP on a branch/ 851 transit LSR: 853 FEC (root 203.0.113.1, S=198.51.100.1, G=224.1.1.1): 854 type: p2mp 855 upstream: 856 advertised: 857 peer 192.0.2.1:0, label 16000 (local) 858 downstream: 859 received: 860 peer 192.0.2.2:0, label 17000 (remote) 861 peer 192.0.2.3:0, label 18000 (remote) 863 Figure 10 865 The following diagram illustrates the FEC-label binding information 866 structure for a similar MP2MP LSP on a branch/transit LSR: 868 FEC (root 203.0.113.2, RP=198.51.100.2, G=224.1.1.1): 869 type: mp2mp 870 upstream: 871 advertised: 872 peer 192.0.2.1:0, label 16000 (local) 873 received: 874 peer 192.0.2.1:0, label 17000 (remote) 875 downstream: 876 advertised: 877 peer 192.0.2.2:0, label 16001 (local), MBB role=active 878 peer 192.0.2.3:0, label 16002 (local), MBB role=standby 879 received: 880 peer 192.0.2.2:0, label 17001 (remote) 881 peer 192.0.2.3:0, label 18001 (remote) 883 Figure 11 885 5.3.3. Capabilities state 887 Like LDP, mLDP capabilities state comprise two types of information: 889 o global: augments ldp:global/ldp:state/ldp:capability. 891 o per-peer: augments ldp:peers/ldp:peer/ldp:state/ldp:capability 893 6. Notifications 895 The mLDP notification module consists of notifications related to 896 changes in the operational state of an mLDP FEC. 898 6.1. Base 900 A simplified graphical representation of the base data model for mLDP 901 notifications follows: 903 module: ietf-mpls-mldp 904 notifications: 905 +---n mpls-mldp-fec-event 906 +--ro event-type? ldp:oper-status-event-type 907 +--ro (opaque-element)? 908 +--:(opaque-element-lspid) 909 +--ro opaque-element-lspid 910 +--ro root-address? inet:ip-address 911 +--ro lsp-id? uint32 912 +--ro multipoint-type? multipoint-type 913 +--ro mldp-ext:recursive-fec 914 +--ro mldp-ext:recur-root-address? inet:ip-address 915 +--ro mldp-ext:recur-rd? route-distinguisher 916 +--ro mldp-ext:multipoint-type? mldp:multipoint-type 918 Figure 12 920 6.2. Extended 922 A simplified graphical representation of the extended data model for 923 mLDP notifications follows: 925 module: ietf-mpls-mldp 926 notifications: 927 +---n mpls-mldp-fec-event 928 +--ro event-type? ldp:oper-status-event-type 929 +--ro (opaque-element)? 930 +--:(mldp-ext:opaque-element-transit) 931 | +--ro mldp-ext:opaque-element-transit 932 | +--ro mldp-ext:root-address? inet:ip-address 933 | +--ro mldp-ext:source-address? inet:ip-address 934 | +--ro mldp-ext:group-address? inet:ip-address-no-zone 935 | +--ro mldp-ext:rd? route-distinguisher 936 | +--ro mldp-ext:recur-root-address? inet:ip-address 937 | +--ro mldp-ext:recur-rd? route-distinguisher 938 | +--ro mldp-ext:multipoint-type? mldp:multipoint-type 939 +--:(mldp-ext:opaque-element-bidir) 940 +--ro mldp-ext:opaque-element-bidir 941 +--ro mldp-ext:root-address? inet:ip-address 942 +--ro mldp-ext:rp? inet:ip-address 943 +--ro mldp-ext:group-address? inet:ip-address-no-zone 944 +--ro mldp-ext:rd? route-distinguisher 945 +--ro mldp-ext:recur-root-address? inet:ip-address 946 +--ro mldp-ext:recur-rd? route-distinguisher 947 +--ro mldp-ext:multipoint-type? mldp:multipoint-type 949 Figure 13 951 7. Actions 953 Currently, no RPCs/actions are defined for mLDP. 955 8. Open Items 957 A list of open items that are to be addressed in future revisions of 958 this document follows: 960 o Specify default values for configuration parameters 962 9. YANG Specification 964 The YANG definition, i.e., the modules, for mLDP constructs defined 965 earlier in this document are includind the subsections below. 967 9.1. Base 969 This YANG module imports types defined in [RFC6991], [RFC8343], 970 [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. 972 file "ietf-mpls-mldp@2018-10-22.yang" 973 // RFC Editor: replace the above date with the date of 974 // publication and remove this note. 976 module ietf-mpls-mldp { 977 yang-version 1.1; 979 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp"; 980 prefix "mldp"; 982 import ietf-inet-types { 983 prefix "inet"; 984 reference "RFC 6991: Common YANG Data Types"; 985 } 987 import ietf-interfaces { 988 prefix "if"; 989 reference "RFC 8343: A YANG Data Model for Interface Management"; 990 } 992 import ietf-mpls-ldp { 993 prefix "ldp"; 994 reference "RFC XXXX: A YANG Data Model for MPLS LDP"; 995 // RFC Editor: replace the XXXX with actual LDP YANG RFC number at 996 // time of publication and remove this note. 997 } 999 import ietf-routing { 1000 prefix "rt"; 1001 reference 1002 "RFC 8349: A YANG Data Model for Routing Management (NMDA 1003 version)"; 1004 } 1006 import ietf-routing-types { 1007 prefix "rt-types"; 1008 reference 1009 "RFC 8294: Common YANG Data Types for the Routing Area"; 1010 } 1012 organization 1013 "IETF MPLS Working Group"; 1014 contact 1015 "WG Web: 1016 WG List: 1018 Editor: Kamran Raza 1019 1021 Editor: Sowmya Krishnaswamy 1022 1024 Editor: Xufeng Liu 1025 1027 Editor: Santosh Esale 1028 1030 Editor: Loa Andersson 1031 1033 Editor: Jeff Tantsura 1034 "; 1036 description 1037 "This YANG module defines the essential components for the 1038 management of Multi-Protocol Label Switching (MPLS) Multipoint 1039 LDP (mLDP). 1041 Copyright (c) 2018 IETF Trust and the persons identified as 1042 authors of the code. All rights reserved. 1044 Redistribution and use in source and binary forms, with or 1045 without modification, is permitted pursuant to, and subject to 1046 the license terms contained in, the Simplified BSD License set 1047 forth in Section 4.c of the IETF Trust's Legal Provisions 1048 Relating to IETF Documents 1049 (http://trustee.ietf.org/license-info). 1051 This version of this YANG module is part of RFC XXXX; see the 1052 RFC itself for full legal notices."; 1054 // RFC Editor: replace XXXX with actual RFC number and remove 1055 // this note 1057 revision 2018-10-22 { 1058 // RFC Editor: replace the above date 2018-10-22 with the date of 1059 // publication and remove this note. 1061 description 1062 "Initial revision."; 1063 reference 1064 "RFC XXXX: Base YANG Data Model for MPLS mLDP"; 1065 // RFC Editor: replace XXXX with actual RFC number and remove 1066 // this note 1067 } 1068 /* 1069 * Typedefs 1070 */ 1071 typedef multipoint-type { 1072 type enumeration { 1073 enum p2mp { 1074 description "Point to multipoint"; 1075 } 1076 enum mp2mp { 1077 description "Multipoint to multipoint"; 1078 } 1079 } 1080 description 1081 "The type of a multipoint LSP: either Point to multipoint 1082 (p2mp) or Multipoint to multipoint (mp2mp)"; 1083 } 1085 /* 1086 * Groupings 1087 */ 1088 grouping mldp-capabilities { 1089 description 1090 "A grouping describing the protocol capabilities of mLDP"; 1091 container p2mp { 1092 description 1093 "Configuration and state information for the 1094 point-to-multipoint capability"; 1095 leaf enable { 1096 type boolean; 1097 description 1098 "'true' to enable the point-to-multipoint capability"; 1099 } 1100 } 1101 container mp2mp { 1102 description 1103 "Configuration and state information for the 1104 multipoint-to-multipoint capability"; 1105 leaf enable { 1106 type boolean; 1107 description 1108 "'true' to enable the multipoint-to-multipoint capability"; 1109 } 1110 } 1111 container make-before-break { 1112 description 1113 "Configuration and state information for the 1114 make-before-break capability."; 1115 leaf enable { 1116 type boolean; 1117 description 1118 "'true' to enable the make-before-break capability"; 1119 } 1120 leaf switchover-delay { 1121 type uint16; 1122 units seconds; 1123 description 1124 "Switchover delay in seconds"; 1125 } 1126 leaf timeout { 1127 type uint16; 1128 units seconds; 1129 description 1130 "Timeout in seconds"; 1131 } 1132 } 1133 } // mldp-capabilities 1135 grouping mldp-binding-label-peer-state-attributes { 1136 description 1137 "mLDP label binding per peer attributes"; 1138 leaf direction { 1139 type ldp:downstream-upstream; 1140 description 1141 "Downstream or upstream"; 1142 } 1143 leaf peer { 1144 type leafref { 1145 path 1146 "/rt:routing/rt:control-plane-protocols/" 1147 + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; 1148 } 1149 description 1150 "LDP peer from which this binding is received, 1151 or to which this binding is advertised."; 1152 } 1153 leaf advertisement-type { 1154 type ldp:advertised-received; 1155 description 1156 "Advertised or received"; 1157 } 1158 leaf label { 1159 type rt-types:mpls-label; 1160 description 1161 "Advertised (outbound) or received (inbound) label"; 1162 } 1163 leaf mbb-role { 1164 when "../direction = 'upstream'" { 1165 description 1166 "This leaf is used for upstream only."; 1167 } 1168 type enumeration { 1169 enum none { 1170 description "Make-Before-Break (MBB) is not enabled"; 1171 } 1172 enum active { 1173 description "This LSP is active."; 1174 } 1175 enum inactive { 1176 description "This LSP is inactive."; 1177 } 1178 } 1179 description 1180 "The MBB status of this LSP"; 1181 } 1182 } // mldp-binding-label-peer-state-attributes 1184 grouping mldp-binding-label-state-attributes { 1185 description 1186 "mLDP label binding attributes"; 1187 list peer { 1188 key "direction peer advertisement-type"; 1189 description 1190 "List of advertised and received peers"; 1191 uses mldp-binding-label-peer-state-attributes; 1192 } // peer 1193 } // mldp-binding-label-state-attributes 1195 /* 1196 * Configuration data and operational state data nodes 1197 */ 1198 augment "/rt:routing/rt:control-plane-protocols/" 1199 + "ldp:mpls-ldp/ldp:global/ldp:capability" { 1200 description "Augmentation for MLDP global capability"; 1201 container mldp { 1202 description 1203 "This container contains the configruation and state 1204 information for multipoint LDP capabilities."; 1205 uses mldp-capabilities; 1206 } 1207 } 1209 /* 1210 * Operational state data nodes 1211 */ 1213 augment "/rt:routing/rt:control-plane-protocols/" 1214 + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" 1215 + "ldp:capability" { 1216 description 1217 "Augmentation for MLDP received peer state capability"; 1218 container mldp { 1219 description 1220 "Operational state information for the protocol capabilities 1221 of mLDP"; 1223 container p2mp { 1224 description 1225 "Operational state information for the point-to-multipoint 1226 capability"; 1227 leaf enable { 1228 type boolean; 1229 description 1230 "'true' to enable the point-to-multipoint capability"; 1231 } 1232 } 1233 container mp2mp { 1234 description 1235 "Operational state information for the 1236 multipoint-to-multipoint capability"; 1237 leaf enable { 1238 type boolean; 1239 description 1240 "'true' to enable the multipoint-to-multipoint 1241 capability"; 1242 } 1243 } 1244 container make-before-break { 1245 description 1246 "Operational state information for the make-before-break 1247 capability"; 1248 leaf enable { 1249 type boolean; 1250 description 1251 "'true' to enable the make-before-break capability"; 1252 } 1253 } 1254 } // mldp 1255 } 1257 /* 1258 * Global augmentation 1259 */ 1260 augment "/rt:routing/rt:control-plane-protocols/" 1261 + "ldp:mpls-ldp/ldp:global" { 1262 description "MLDP global augmentation."; 1263 container mldp { 1264 description 1265 "mLDP attributes at per instance level. Defining 1266 attributes here does not enable any MP capabilities. 1267 MP capabilities need to be explicitly enabled under 1268 container capability."; 1270 leaf enable { 1271 type boolean; 1272 description 1273 "'true' to enable mLDP"; 1274 } 1276 container address-families { 1277 description 1278 "Per address family parameters"; 1280 container ipv4 { 1281 description 1282 "IPv4 information"; 1283 container roots { 1284 config false; 1285 description 1286 "IPv4 multicast LSP roots"; 1287 list root { 1288 key "root-address"; 1289 description 1290 "List of roots for configured multicast LSPs"; 1292 leaf root-address { 1293 type inet:ipv4-address; 1294 description 1295 "Root address."; 1296 } 1298 leaf is-self { 1299 type boolean; 1300 description 1301 "I am the root node."; 1302 } 1304 list reachability { 1305 key "address interface"; 1306 description 1307 "A next-hop for reachability to root, 1308 as a RIB view"; 1310 leaf address { 1311 type inet:ipv4-address; 1312 description 1313 "The next-hop address to reach root"; 1314 } 1315 leaf interface { 1316 type if:interface-ref; 1317 description 1318 "Interface connecting to next-hop"; 1319 } 1320 leaf peer { 1321 type leafref { 1322 path 1323 "../../../../../../../../ldp:peers/" 1324 + "ldp:peer/ldp:lsr-id"; 1325 } 1326 description 1327 "LDP peer from which this next-hop can be 1328 reached"; 1329 } 1330 } 1332 container bindings { 1333 description 1334 "mLDP FEC to label bindings"; 1335 container opaque-element-lspid { 1336 description 1337 "The type of opaque value element is the generic 1338 LSP identifier"; 1339 reference 1340 "RFC6388: Label Distribution Protocol 1341 Extensions for Point-to-Multipoint and 1342 Multipoint-to-Multipoint Label Switched 1343 Paths."; 1344 list fec-label { 1345 key 1346 "lsp-id"; 1347 description 1348 "List of FEC to label bindings"; 1349 leaf lsp-id { 1350 type uint32; 1351 description "ID to identify the LSP"; 1352 } 1353 leaf multipoint-type { 1354 type multipoint-type; 1355 description 1356 "The type of mutipoint: p2mp or mp2mp"; 1357 } 1358 uses mldp-binding-label-state-attributes; 1359 } // fec-label 1360 } // opaque-element-lspid 1361 } // bindings 1362 } // list root 1363 } // roots 1365 container configured-leaf-lsps { 1366 description 1367 "Configured multicast LSPs."; 1368 container opaque-element-lspid { 1369 description 1370 "The type of opaque value element is 1371 the generic LSP identifier"; 1372 reference 1373 "RFC6388: Label Distribution Protocol 1374 Extensions for Point-to-Multipoint and 1375 Multipoint-to-Multipoint Label Switched 1376 Paths."; 1377 list fec-label { 1378 key 1379 "root-address lsp-id"; 1380 description 1381 "List of FEC to label bindings."; 1382 leaf root-address { 1383 type inet:ipv4-address; 1384 description 1385 "Root address"; 1386 } 1387 leaf lsp-id { 1388 type uint32; 1389 description "ID to identify the LSP"; 1390 } 1391 leaf multipoint-type { 1392 type multipoint-type; 1393 description 1394 "The type of mutipoint: p2mp or mp2mp"; 1395 } 1396 } // fec-label 1397 } // opaque-element-lspid 1398 } // configured-leaf-lsps 1399 } // ipv4 1400 } // list address-family 1401 } // mldp 1402 } 1404 /* 1405 * Notifications 1406 */ 1407 notification mpls-mldp-fec-event { 1408 description 1409 "Notification event for a change of FEC status"; 1410 leaf event-type { 1411 type ldp:oper-status-event-type; 1412 description "Event type"; 1413 } 1414 choice opaque-element { 1415 description 1416 "The type of opaque value element"; 1417 case opaque-element-lspid { 1418 container opaque-element-lspid { 1419 description 1420 "The type of opaque value element is 1421 the generic LSP identifier"; 1422 reference 1423 "RFC6388: Label Distribution Protocol 1424 Extensions for Point-to-Multipoint and 1425 Multipoint-to-Multipoint Label Switched 1426 Paths."; 1427 leaf root-address { 1428 type inet:ip-address; 1429 description 1430 "Root address."; 1431 } 1432 leaf lsp-id { 1433 type uint32; 1434 description "ID to identify the LSP"; 1435 } 1436 leaf multipoint-type { 1437 type multipoint-type; 1438 description 1439 "The type of mutipoint: p2mp or mp2mp"; 1440 } 1441 } // container opaque-element-lspid 1442 } 1443 } 1444 } 1445 } 1446 1448 Figure 14 1450 9.2. Extended 1452 This YANG module imports types defined in [RFC6991], [RFC8343], 1453 [RFC8349], [I-D.ietf-mpls-ldp-yang], and [RFC8294]. 1455 file "ietf-mpls-mldp-extended@2018-10-22.yang" 1456 // RFC Editor: replace the above date with the date of 1457 // publication and remove this note. 1459 module ietf-mpls-mldp-extended { 1460 yang-version 1.1; 1462 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-mldp-extended"; 1463 prefix "mldp-ext"; 1465 import ietf-inet-types { 1466 prefix "inet"; 1467 reference "RFC 6991: Common YANG Data Types"; 1468 } 1470 import ietf-interfaces { 1471 prefix "if"; 1472 reference "RFC 8343: A YANG Data Model for Interface Management"; 1473 } 1475 import ietf-routing { 1476 prefix "rt"; 1477 reference 1478 "RFC 8349: A YANG Data Model for Routing Management (NMDA 1479 version)"; 1480 } 1482 import ietf-routing-types { 1483 prefix "rt-types"; 1484 reference 1485 "RFC 8294: Common YANG Data Types for the Routing Area"; 1486 } 1488 import ietf-mpls-ldp { 1489 prefix "ldp"; 1490 reference "RFC XXXX: A YANG Data Model for MPLS LDP"; 1491 // RFC Editor: replace the XXXX with actual LDP YANG RFC number at 1492 // time of publication and remove this note. 1493 } 1495 import ietf-mpls-ldp-extended { 1496 prefix "ldp-ext"; 1497 reference "RFC XXXX: A YANG Data Model for MPLS LDP"; 1498 // RFC Editor: replace the XXXX with actual LDP YANG RFC number at 1499 // time of publication and remove this note. 1500 } 1501 import ietf-mpls-mldp { 1502 prefix "mldp"; 1503 reference "RFC XXXX: Base YANG Data Model for MPLS mLDP"; 1504 // RFC Editor: replace the XXXX with actual mLDP YANG RFC number at 1505 // time of publication and remove this note. 1506 } 1508 organization 1509 "IETF MPLS Working Group"; 1510 contact 1511 "WG Web: 1512 WG List: 1514 Editor: Kamran Raza 1515 1517 Editor: Sowmya Krishnaswamy 1518 1520 Editor: Xufeng Liu 1521 1523 Editor: Santosh Esale 1524 1526 Editor: Loa Andersson 1527 1529 Editor: Jeff Tantsura 1530 "; 1532 description 1533 "This YANG module defines the extended components for the 1534 management of Multi-Protocol Label Switching (MPLS) Multipoint 1535 LDP (mLDP). 1537 Copyright (c) 2018 IETF Trust and the persons identified as 1538 authors of the code. All rights reserved. 1540 Redistribution and use in source and binary forms, with or 1541 without modification, is permitted pursuant to, and subject to 1542 the license terms contained in, the Simplified BSD License set 1543 forth in Section 4.c of the IETF Trust's Legal Provisions 1544 Relating to IETF Documents 1545 (http://trustee.ietf.org/license-info). 1547 This version of this YANG module is part of RFC XXXX; see the 1548 RFC itself for full legal notices."; 1550 // RFC Editor: replace XXXX with actual RFC number and remove 1551 // this note 1553 revision 2018-10-22 { 1554 // RFC Editor: replace the above date 2018-10-22 with the date of 1555 // publication and remove this note. 1557 description 1558 "Initial revision."; 1559 reference 1560 "RFC XXXX: Extended YANG Data Model for MPLS mLDP"; 1561 // RFC Editor: replace XXXX with actual RFC number and remove 1562 // this note 1563 } 1565 /* 1566 * Features 1567 */ 1568 feature capability-mldp-hsmp { 1569 description 1570 "This feature indicates that the system allows to configure 1571 mLDP hub-and-spoke-multipoint capability."; 1572 } 1574 feature capability-mldp-node-protection { 1575 description 1576 "This feature indicates that the system allows to configure 1577 mLDP node-protection capability."; 1578 } 1580 feature mldp-mofrr { 1581 description 1582 "This feature indicates that the system supports mLDP 1583 Multicast only FRR (MoFRR)."; 1584 } 1586 feature per-peer-capability { 1587 description 1588 "This feature indicates that the system allows to configure 1589 mLDP capabilities at the per peer level."; 1590 } 1591 /* 1592 * Typedefs 1593 */ 1594 typedef mofrr-role { 1595 type enumeration { 1596 enum none { 1597 description "MOFRR is not enabled."; 1598 } 1599 enum primary { 1600 description "This LSP is primary."; 1601 } 1602 enum backup { 1603 description "This LSP is backup."; 1604 } 1605 } 1606 description 1607 "This type represents the MOFRR (Multicast only FRR) role 1608 status of a LSP."; 1609 } 1611 /* 1612 * Groupings 1613 */ 1614 grouping mldp-ext-binding-label-state-attributes { 1615 description 1616 "mLDP label binding attributes"; 1618 list peer { 1619 key "direction peer advertisement-type"; 1620 description 1621 "List of advertised and received peers"; 1622 uses mldp:mldp-binding-label-peer-state-attributes; 1624 leaf mofrr-role { 1625 when "../direction = 'upstream'" { 1626 description 1627 "For upstream."; 1628 } 1629 type mofrr-role; 1630 description 1631 "The MOFRR status of this LSP"; 1632 } 1633 } // peer 1634 } // mldp-ext-binding-label-state-attributes 1636 grouping mldp-ext-capabilities { 1637 description 1638 "mLDP extended capabilities"; 1640 container hub-and-spoke { 1641 if-feature capability-mldp-hsmp; 1642 description 1643 "Configure hub-and-spoke-multipoint capability"; 1644 reference 1645 "RFC7140: LDP Extensions for Hub and Spoke Multipoint 1646 Label Switched Path"; 1647 leaf enable { 1648 type boolean; 1649 description 1650 "Enable hub-and-spoke-multipoint"; 1651 } 1652 } 1653 container node-protection { 1654 if-feature capability-mldp-node-protection; 1655 description 1656 "Configure node-protection capability."; 1657 reference 1658 "RFC7715: mLDP Node Protection."; 1659 leaf plr { 1660 type boolean; 1661 description 1662 "Point of Local Repair (PLR) capable for Multipoimt LSP 1663 node protection"; 1664 } 1665 container merge-point { 1666 description 1667 "Merge Point capable for Multipoint LSP node protection"; 1668 leaf enable { 1669 type boolean; 1670 description 1671 "Enable merge point capability"; 1672 } 1673 leaf targeted-session-teardown-delay { 1674 type uint16; 1675 units seconds; 1676 description 1677 "Targeted session teardown delay"; 1678 } 1679 } // merge-point 1680 } 1681 } // mldp-ext-capabilities 1683 grouping mldp-ext-per-af-config-attibutes { 1684 description 1685 "mLDP per address family configuration attibutes"; 1686 container multicast-only-frr { 1687 if-feature mldp-mofrr; 1688 description 1689 "Multicast-only FRR (MoFRR) policy"; 1690 leaf prefix-list { 1691 type ldp-ext:prefix-list-ref; 1692 description 1693 "Enables Multicast-only FRR (MoFRR) for the specified 1694 access list"; 1695 } 1696 } // multicast-only-frr 1697 container recursive-fec { 1698 description 1699 "Recursive FEC policy"; 1700 leaf prefix-list { 1701 type ldp-ext:prefix-list-ref; 1702 description 1703 "Enables recursive FEC for the specified prefix-list"; 1704 } 1705 } // recursive-fec 1706 } // mldp-ext-per-af-config-attibutes 1708 grouping recursive-fec-attibutes { 1709 description 1710 "mLDP recursive FEC attibutes."; 1711 leaf recur-root-address { 1712 type inet:ip-address; 1713 description 1714 "Recursive root address"; 1715 reference 1716 "RFC6512: Using Multipoint LDP When the 1717 Backbone Has No Route to the Root"; 1718 } 1719 leaf recur-rd { 1720 type rt-types:route-distinguisher; 1721 description 1722 "Route Distinguisher in the VPN-Recursive 1723 Opaque Value"; 1724 reference 1725 "RFC6512: Using Multipoint LDP When the 1726 Backbone Has No Route to the Root"; 1727 } 1728 leaf multipoint-type { 1729 type mldp:multipoint-type; 1730 description 1731 "The type of mutipoint: p2mp or mp2mp"; 1732 } 1733 } // recursive-fec-attibutes 1735 /* 1736 * Configuration data and operational state data nodes 1737 */ 1738 // Global capability 1739 augment "/rt:routing/rt:control-plane-protocols/" 1740 + "ldp:mpls-ldp/ldp:global/ldp:capability/mldp:mldp" { 1741 description "Augmentation for MLDP global capability."; 1743 uses mldp-ext-capabilities; 1744 } 1746 // Peer capability 1747 augment "/rt:routing/rt:control-plane-protocols/" 1748 + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:capability" { 1749 description "Augmentation for MLDP peer capability."; 1750 container mldp { 1751 if-feature per-peer-capability; 1752 description 1753 "mLDP capabilities"; 1754 uses mldp:mldp-capabilities; 1755 } 1756 } 1758 // IPv4 config 1759 augment "/rt:routing/rt:control-plane-protocols/" 1760 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1761 + "mldp:ipv4" { 1762 description "Augmentation for MLDP IPv4 configuration"; 1763 uses mldp-ext-per-af-config-attibutes; 1764 } 1766 // IPv4 configured-leaf-lsps config 1767 augment "/rt:routing/rt:control-plane-protocols/" 1768 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1769 + "mldp:ipv4/mldp:configured-leaf-lsps/" 1770 + "mldp:opaque-element-lspid/mldp:fec-label" { 1771 description 1772 "Augmentation for MLDP IPv4 configured-leaf-lsps 1773 configuration for opaque-element-lspid"; 1774 list recursive-fec { 1775 key 1776 "recur-root-address recur-rd"; 1777 description 1778 "List of recursive opaque values"; 1779 uses recursive-fec-attibutes; 1780 } // fec-label 1781 } 1782 augment "/rt:routing/rt:control-plane-protocols/" 1783 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1784 + "mldp:ipv4/mldp:configured-leaf-lsps" { 1785 description 1786 "Augmentation for MLDP IPv4 configured-leaf-lsps 1787 configuration"; 1789 container opaque-element-transit { 1790 description 1791 "The type of opaque value element is the transit IPv4 1792 source."; 1793 reference 1794 "RFC6826: Multipoint LDP In-Band Signaling for 1795 Point-to-Multipoint and 1796 Multipoint-to-Multipoint Label Switched Paths."; 1797 list fec-label { 1798 key 1799 "root-address source-address group-address " + 1800 "rd recur-root-address recur-rd"; 1801 description 1802 "List of FEC to label bindings"; 1803 leaf root-address { 1804 type inet:ipv4-address; 1805 description 1806 "Root address"; 1807 } 1808 leaf source-address { 1809 type inet:ip-address; 1810 description 1811 "Source address"; 1812 } 1813 leaf group-address { 1814 type inet:ip-address-no-zone; 1815 description 1816 "Group address"; 1817 } 1818 leaf rd { 1819 type rt-types:route-distinguisher; 1820 description 1821 "Route Distinguisher"; 1822 reference 1823 "RFC7246: Multipoint Label Distribution 1824 Protocol In-Band Signaling in a Virtual 1825 Routing and Forwarding (VRF) Table 1826 Context."; 1827 } 1828 uses recursive-fec-attibutes; 1829 } // fec-label 1831 } // opaque-element-transit 1833 container opaque-element-bidir { 1834 description 1835 "The type of opaque value element is 1836 the generic LSP identifier"; 1837 reference 1838 "RFC6826: Multipoint LDP In-Band Signaling for 1839 Point-to-Multipoint and 1840 Multipoint-to-Multipoint Label Switched 1841 Paths."; 1842 list fec-label { 1843 key 1844 "root-address rp group-address rd recur-root-address " 1845 + "recur-rd"; 1846 description 1847 "List of FEC to label bindings"; 1848 leaf root-address { 1849 type inet:ipv4-address; 1850 description 1851 "Root address"; 1852 } 1853 leaf rp { 1854 type inet:ip-address; 1855 description 1856 "Rendezvous-Point (RP) address"; 1857 } 1858 leaf group-address { 1859 type inet:ip-address-no-zone; 1860 description 1861 "Group address"; 1862 } 1863 leaf rd { 1864 type rt-types:route-distinguisher; 1865 description 1866 "Route Distinguisher"; 1867 reference 1868 "RFC7246: Multipoint Label Distribution 1869 Protocol In-Band Signaling in a Virtual 1870 Routing and Forwarding (VRF) Table 1871 Context."; 1872 } 1873 uses recursive-fec-attibutes; 1874 } // fec-label 1875 } // opaque-element-bidir 1876 } 1878 // IPv6 config 1879 augment "/rt:routing/rt:control-plane-protocols/" 1880 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1881 + "ipv6" { 1882 description "Augmentation for MLDP IPv4 configuration"; 1883 uses mldp-ext-per-af-config-attibutes; 1884 } 1886 // Global forwarding-nexthop 1887 augment "/rt:routing/rt:control-plane-protocols/" 1888 + "ldp:mpls-ldp/ldp:global/ldp-ext:forwarding-nexthop/" 1889 + "ldp-ext:interfaces/ldp-ext:interface/ldp-ext:address-family" { 1890 description 1891 "Augmentation for MLDP nexthop forwarding interface"; 1892 leaf mldp-disable { 1893 type boolean; 1894 description 1895 "Disable mLDP forwarding on this interface"; 1896 } 1897 } 1899 /* 1900 * Operational state data nodes 1901 */ 1902 // IPv4 state for per peer bindings 1903 augment "/rt:routing/rt:control-plane-protocols/" 1904 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1905 + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" 1906 + "mldp:opaque-element-lspid/mldp:fec-label/mldp:peer" { 1907 description "Augmentation for MLDP IPv4 state"; 1909 leaf mofrr-role { 1910 when "../mldp:direction = 'upstream'" { 1911 description 1912 "For upstream"; 1913 } 1914 type mofrr-role; 1915 description 1916 "The MOFRR status of this LSP"; 1917 } 1918 } 1920 // Peer capability state 1921 augment "/rt:routing/rt:control-plane-protocols/" 1922 + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:received-peer-state/" 1923 + "ldp:capability/mldp:mldp" { 1924 description 1925 "Augmentation for MLDP received peer state capability."; 1926 container hub-and-spoke { 1927 description 1928 "Configure hub-and-spoke-multipoint capability."; 1929 reference 1930 "RFC7140: LDP Extensions for Hub and Spoke Multipoint 1931 Label Switched Path"; 1932 leaf enable { 1933 type boolean; 1934 description 1935 "Enable hub-and-spoke-multipoint"; 1936 } 1937 } 1938 container node-protection { 1939 description 1940 "Configure node-protection capability"; 1941 reference 1942 "RFC7715: mLDP Node Protection."; 1943 leaf plr { 1944 type boolean; 1945 description 1946 "Point of Local Repair (PLR) capable for Multipoint LSP 1947 node protection"; 1948 } 1949 leaf merge-point { 1950 type boolean; 1951 description 1952 "Merge Point capable for Multipoint LSP node protection"; 1953 } // merge-point 1954 } // node-protection 1955 } 1957 // IPv4 bindings state 1958 augment "/rt:routing/rt:control-plane-protocols/" 1959 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 1960 + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings" { 1961 description "Augmentation for MLDP IPv4 bindings."; 1962 container opaque-element-transit { 1963 description 1964 "The type of opaque value element is the transit IPv4 1965 source."; 1966 reference 1967 "RFC6826: Multipoint LDP In-Band Signaling for 1968 Point-to-Multipoint and 1969 Multipoint-to-Multipoint Label Switched Paths."; 1970 list fec-label { 1971 key 1972 "source-address group-address " 1973 + "rd recur-root-address recur-rd"; 1974 description 1975 "List of FEC to label bindings"; 1976 leaf source-address { 1977 type inet:ip-address; 1978 description 1979 "Source address"; 1980 } 1981 leaf group-address { 1982 type inet:ip-address-no-zone; 1983 description 1984 "Group address"; 1985 } 1986 leaf rd { 1987 type rt-types:route-distinguisher; 1988 description 1989 "Route Distinguisher"; 1990 reference 1991 "RFC7246: Multipoint Label Distribution 1992 Protocol In-Band Signaling in a Virtual 1993 Routing and Forwarding (VRF) Table 1994 Context."; 1995 } 1996 uses recursive-fec-attibutes; 1997 uses mldp-ext-binding-label-state-attributes; 1998 } // fec-label 1999 } // opaque-element-transit 2001 container opaque-element-bidir { 2002 description 2003 "The type of opaque value element is 2004 the generic LSP identifier."; 2005 reference 2006 "RFC6826: Multipoint LDP In-Band Signaling for 2007 Point-to-Multipoint and 2008 Multipoint-to-Multipoint Label Switched 2009 Paths."; 2010 list fec-label { 2011 key 2012 "rp group-address rd recur-root-address recur-rd"; 2013 description 2014 "List of FEC to label bindings"; 2015 leaf rp { 2016 type inet:ip-address; 2017 description 2018 "Rendezvous Point (RP) address"; 2019 } 2020 leaf group-address { 2021 type inet:ip-address-no-zone; 2022 description 2023 "Group address"; 2024 } 2025 leaf rd { 2026 type rt-types:route-distinguisher; 2027 description 2028 "Route Distinguisher"; 2029 reference 2030 "RFC7246: Multipoint Label Distribution 2031 Protocol In-Band Signaling in a Virtual 2032 Routing and Forwarding (VRF) Table 2033 Context."; 2034 } 2035 uses recursive-fec-attibutes; 2036 uses mldp-ext-binding-label-state-attributes; 2037 } // fec-label 2038 } // opaque-element-bidir 2039 } 2041 // IPv6 bindings state 2042 augment "/rt:routing/rt:control-plane-protocols/" 2043 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 2044 + "ipv6/roots/root/bindings" { 2045 description "Augmentation for MLDP IPv6 bindings."; 2046 container opaque-element-transit { 2047 config false; 2048 description 2049 "The type of opaque value element is the transit IPv6 2050 source."; 2051 reference 2052 "RFC6826: Multipoint LDP In-Band Signaling for 2053 Point-to-Multipoint and 2054 Multipoint-to-Multipoint Label Switched 2055 Paths."; 2056 list fec-label { 2057 key 2058 "source-address group-address " 2059 + "rd recur-root-address recur-rd"; 2060 description 2061 "List of FEC to label bindings"; 2062 leaf source-address { 2063 type inet:ip-address; 2064 description 2065 "Source address"; 2066 } 2067 leaf group-address { 2068 type inet:ip-address-no-zone; 2069 description 2070 "Group address"; 2072 } 2073 leaf rd { 2074 type rt-types:route-distinguisher; 2075 description 2076 "Route Distinguisher"; 2077 reference 2078 "RFC7246: Multipoint Label Distribution 2079 Protocol In-Band Signaling in a Virtual 2080 Routing and Forwarding (VRF) Table 2081 Context."; 2082 } 2083 uses recursive-fec-attibutes; 2084 uses mldp-ext-binding-label-state-attributes; 2085 } // fec-label 2086 } // opaque-element-transit 2088 container opaque-element-bidir { 2089 config false; 2090 description 2091 "The type of opaque value element is 2092 the generic LSP identifier"; 2093 reference 2094 "RFC6826: Multipoint LDP In-Band Signaling for 2095 Point-to-Multipoint and 2096 Multipoint-to-Multipoint Label Switched 2097 Paths."; 2098 list fec-label { 2099 key 2100 "rp group-address rd recur-root-address recur-rd"; 2101 description 2102 "List of FEC to label bindings"; 2103 leaf rp { 2104 type inet:ip-address; 2105 description 2106 "Rendezvous Point (RP) address"; 2107 } 2108 leaf group-address { 2109 type inet:ip-address-no-zone; 2110 description 2111 "Group address"; 2112 } 2113 leaf rd { 2114 type rt-types:route-distinguisher; 2115 description 2116 "Route Distinguisher"; 2117 reference 2118 "RFC7246: Multipoint Label Distribution 2119 Protocol In-Band Signaling in a Virtual 2120 Routing and Forwarding (VRF) Table 2121 Context."; 2122 } 2123 uses recursive-fec-attibutes; 2124 uses mldp-ext-binding-label-state-attributes; 2125 } // fec-label 2126 } // opaque-element-bidir 2127 } 2129 // IPv4 bindings opaque-element-lspid state 2130 augment "/rt:routing/rt:control-plane-protocols/" 2131 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 2132 + "mldp:ipv4/mldp:roots/mldp:root/mldp:bindings/" 2133 + "mldp:opaque-element-lspid/mldp:fec-label" { 2134 description 2135 "Augmentation for MLDP IPv4 bindings with opaque type LSP ID."; 2136 list recursive-fec { 2137 key 2138 "recur-root-address recur-rd"; 2139 description 2140 "List of recursive opaque values"; 2141 uses recursive-fec-attibutes; 2142 uses mldp-ext-binding-label-state-attributes; 2143 } // fec-label 2144 } 2146 // IPv6 bindings opaque-element-lspid state 2147 augment "/rt:routing/rt:control-plane-protocols/" 2148 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families/" 2149 + "ipv6/roots/root/bindings/opaque-element-lspid/fec-label" { 2150 description 2151 "Augmentation for MLDP IPv6 bindings with opaque type LSP ID."; 2152 list recursive-fec { 2153 key "recur-root-address recur-rd"; 2154 config false; 2155 description 2156 "List of recursive opaque values"; 2157 uses recursive-fec-attibutes; 2158 uses mldp-ext-binding-label-state-attributes; 2159 } // fec-label 2160 } 2162 /* 2163 * Per AF augmentation 2164 */ 2165 // IPv6 augmentation 2166 augment "/rt:routing/rt:control-plane-protocols/" 2167 + "ldp:mpls-ldp/ldp:global/mldp:mldp/mldp:address-families" { 2168 description "Augmentation for MLDP IPv6 address family."; 2169 container ipv6 { 2170 description 2171 "IPv6 information"; 2173 container roots { 2174 config false; 2175 description 2176 "IPv6 multicast LSP roots"; 2177 list root { 2178 key "root-address"; 2179 description 2180 "List of roots for configured multicast LSPs"; 2182 leaf root-address { 2183 type inet:ipv6-address; 2184 description 2185 "Root address"; 2186 } 2188 leaf is-self { 2189 type boolean; 2190 description 2191 "This is the root"; 2192 } 2194 list reachability { 2195 key "address interface"; 2196 description 2197 "A next-hop for reachability to root, 2198 as a RIB view"; 2199 leaf address { 2200 type inet:ipv6-address; 2201 description 2202 "The next-hop address to reach root"; 2203 } 2204 leaf interface { 2205 type if:interface-ref; 2206 description 2207 "Interface connecting to next-hop"; 2208 } 2209 leaf peer { 2210 type leafref { 2211 path 2212 "../../../../../../../../ldp:peers/" 2213 + "ldp:peer/ldp:lsr-id"; 2214 } 2215 description 2216 "LDP peer from which this next-hop can be 2217 reached"; 2218 } 2219 } 2221 container bindings { 2222 description 2223 "mLDP FEC to label bindings"; 2224 container opaque-element-lspid { 2225 description 2226 "The type of opaque value element is 2227 the generic LSP identifier"; 2228 reference 2229 "RFC6388: Label Distribution Protocol 2230 Extensions for Point-to-Multipoint and 2231 Multipoint-to-Multipoint Label Switched 2232 Paths."; 2233 list fec-label { 2234 key 2235 "lsp-id"; 2236 description 2237 "List of FEC to label bindings"; 2238 leaf lsp-id { 2239 type uint32; 2240 description "ID to identify the LSP"; 2241 } 2242 leaf multipoint-type { 2243 type mldp:multipoint-type; 2244 description 2245 "The type of mutipoint: p2mp or mp2mp"; 2246 } 2248 uses mldp-ext-binding-label-state-attributes; 2249 } // fec-label 2250 } // opaque-element-lspid 2251 } // bindings 2252 } // list root 2253 } // roots 2255 container configured-leaf-lsps { 2256 description 2257 "Configured multicast LSPs"; 2259 container opaque-element-lspid { 2260 description 2261 "The type of opaque value element is 2262 the generic LSP identifier"; 2263 reference 2264 "RFC6388: Label Distribution Protocol 2265 Extensions for Point-to-Multipoint and 2266 Multipoint-to-Multipoint Label Switched 2267 Paths."; 2268 list fec-label { 2269 key 2270 "root-address lsp-id"; 2271 description 2272 "List of FEC to label bindings"; 2273 leaf root-address { 2274 type inet:ipv6-address; 2275 description 2276 "Root address"; 2277 } 2278 leaf lsp-id { 2279 type uint32; 2280 description "ID to identify the LSP"; 2281 } 2282 leaf multipoint-type { 2283 type mldp:multipoint-type; 2284 description 2285 "The type of mutipoint: p2mp or mp2mp"; 2286 } 2287 list recursive-fec { 2288 key 2289 "recur-root-address recur-rd"; 2290 description 2291 "List of recursive opaque values"; 2292 uses recursive-fec-attibutes; 2293 } // fec-label 2294 } // fec-label 2295 } // opaque-element-lspid 2297 container opaque-element-transit { 2298 description 2299 "The type of opaque value element is the transit IPv4 2300 source."; 2301 reference 2302 "RFC6826: Multipoint LDP In-Band Signaling for 2303 Point-to-Multipoint and 2304 Multipoint-to-Multipoint Label Switched Paths."; 2305 list fec-label { 2306 key 2307 "root-address source-address group-address " 2308 + "rd recur-root-address recur-rd"; 2309 description 2310 "List of FEC to label bindings"; 2311 leaf root-address { 2312 type inet:ipv6-address; 2313 description 2314 "Root address"; 2315 } 2316 leaf source-address { 2317 type inet:ip-address; 2318 description 2319 "Source address"; 2320 } 2321 leaf group-address { 2322 type inet:ip-address-no-zone; 2323 description 2324 "Group address"; 2325 } 2326 leaf rd { 2327 type rt-types:route-distinguisher; 2328 description 2329 "Route Distinguisher"; 2330 reference 2331 "RFC7246: Multipoint Label Distribution 2332 Protocol In-Band Signaling in a Virtual 2333 Routing and Forwarding (VRF) Table 2334 Context."; 2335 } 2336 uses recursive-fec-attibutes; 2337 } // fec-label 2338 } // opaque-element-transit 2340 container opaque-element-bidir { 2341 description 2342 "The type of opaque value element is 2343 the generic LSP identifier"; 2344 reference 2345 "RFC6826: Multipoint LDP In-Band Signaling for 2346 Point-to-Multipoint and 2347 Multipoint-to-Multipoint Label Switched 2348 Paths."; 2349 list fec-label { 2350 key 2351 "root-address rp group-address rd recur-root-address " 2352 + "recur-rd"; 2353 description 2354 "List of FEC to label bindings."; 2355 leaf root-address { 2356 type inet:ipv6-address; 2357 description 2358 "Root address"; 2359 } 2360 leaf rp { 2361 type inet:ip-address; 2362 description 2363 "Rendezvous Point (RP) address"; 2364 } 2365 leaf group-address { 2366 type inet:ip-address-no-zone; 2367 description 2368 "Group address"; 2369 } 2370 leaf rd { 2371 type rt-types:route-distinguisher; 2372 description 2373 "Route Distinguisher"; 2374 reference 2375 "RFC7246: Multipoint Label Distribution 2376 Protocol In-Band Signaling in a Virtual 2377 Routing and Forwarding (VRF) Table 2378 Context."; 2379 } 2380 uses recursive-fec-attibutes; 2381 } // fec-label 2382 } // opaque-element-bidir 2383 } // configured-leaf-lsps 2384 } // ipv6 2385 } 2387 /* 2388 * Global augmentation 2389 */ 2390 /* 2391 * Notifications 2392 */ 2393 augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element/" 2394 + "mldp:opaque-element-lspid/mldp:opaque-element-lspid" { 2395 description 2396 "Augmentation for MLDP notification for opaque-element-lspid."; 2397 container recursive-fec { 2398 description 2399 "Container of recursive opaque values"; 2400 uses recursive-fec-attibutes; 2401 } // fec-label 2402 } 2404 augment "/mldp:mpls-mldp-fec-event/mldp:opaque-element" { 2405 description 2406 "Augmentation for MLDP notification."; 2407 case opaque-element-transit { 2408 container opaque-element-transit { 2409 description 2410 "The type of opaque value element is the transit IPv4 2411 source."; 2412 reference 2413 "RFC6826: Multipoint LDP In-Band Signaling for 2414 Point-to-Multipoint and 2415 Multipoint-to-Multipoint Label Switched Paths."; 2416 leaf root-address { 2417 type inet:ip-address; 2418 description 2419 "Root address"; 2420 } 2421 leaf source-address { 2422 type inet:ip-address; 2423 description 2424 "Source address"; 2425 } 2426 leaf group-address { 2427 type inet:ip-address-no-zone; 2428 description 2429 "Group address"; 2430 } 2431 leaf rd { 2432 type rt-types:route-distinguisher; 2433 description 2434 "Route Distinguisher"; 2435 reference 2436 "RFC7246: Multipoint Label Distribution 2437 Protocol In-Band Signaling in a Virtual 2438 Routing and Forwarding (VRF) Table 2439 Context."; 2440 } 2441 uses recursive-fec-attibutes; 2442 } // opaque-element-transit 2443 } // opaque-element-transit 2445 case opaque-element-bidir { 2446 container opaque-element-bidir { 2447 description 2448 "The type of opaque value element is 2449 the generic LSP identifier"; 2450 reference 2451 "RFC6826: Multipoint LDP In-Band Signaling for 2452 Point-to-Multipoint and 2453 Multipoint-to-Multipoint Label Switched 2454 Paths."; 2455 leaf root-address { 2456 type inet:ip-address; 2457 description 2458 "Root address"; 2459 } 2460 leaf rp { 2461 type inet:ip-address; 2462 description 2463 "Rendezvous Point (RP) address"; 2464 } 2465 leaf group-address { 2466 type inet:ip-address-no-zone; 2467 description 2468 "Group address"; 2469 } 2470 leaf rd { 2471 type rt-types:route-distinguisher; 2472 description 2473 "Route Distinguisher"; 2474 reference 2475 "RFC7246: Multipoint Label Distribution 2476 Protocol In-Band Signaling in a Virtual 2477 Routing and Forwarding (VRF) Table 2478 Context."; 2479 } 2480 uses recursive-fec-attibutes; 2481 } // opaque-element-bidir 2482 } // opaque-element-bidir 2483 } 2484 } 2485 2487 Figure 15 2489 10. Security Considerations 2491 The YANG module specified in this document defines a schema for data 2492 that is designed to be accessed via network management protocols such 2493 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2494 is the secure transport layer, and the mandatory-to-implement secure 2495 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2496 is HTTPS, and the mandatory-to-implement secure transport is TLS 2497 [RFC8446]. 2499 The Network Configuration Access Control Model (NACM) [RFC8341] 2500 provides the means to restrict access for particular NETCONF or 2501 RESTCONF users to a preconfigured subset of all available NETCONF or 2502 RESTCONF protocol operations and content. 2504 There are a number of data nodes defined in this YANG module that are 2505 writable/creatable/deletable (i.e., config true, which is the 2506 default). These data nodes may be considered sensitive or vulnerable 2507 in some network environments. Write operations (e.g., edit-config) 2508 to these data nodes without proper protection can have a negative 2509 effect on network operations. 2511 Some of the readable data nodes in this YANG module may be considered 2512 sensitive or vulnerable in some network environments. It is thus 2513 important to control read access (e.g., via get, get-config, or 2514 notification) to these data nodes. 2516 It goes without saying that this specification also inherits the 2517 security considerations captured in the actual protocol specification 2518 documents, namely base mLDP [RFC6388], targeted mLDP [RFC7060], mLDP 2519 Recursive FEC [RFC6512], Multicast-only FRR [RFC7431], mLDP Node 2520 Protection [RFC7715], mLDP In-band Signaling [RFC6826] [RFC7246] 2521 [RFC7438], and Hub-and-Spoke Multipoint LSPs [RFC7140]. 2523 11. IANA Considerations 2525 This document requests the registration of the following URIs in the 2526 IETF "XML registry" [RFC3688]: 2528 +------------------------------------------------+------------+-----+ 2529 | URI | Registrant | XML | 2530 +------------------------------------------------+------------+-----+ 2531 | urn:ietf:params:xml:ns:yang:ietf-mpls-mldp | The IESG | N/A | 2532 | | | | 2533 | urn:ietf:params:xml:ns:yang:ietf-mpls-mldp- | The IESG | N/A | 2534 | extended | | | 2535 +------------------------------------------------+------------+-----+ 2537 This document requests the registration of the following YANG modules 2538 in the "YANG Module Names" registry [RFC6020]: 2540 +----------------+--------------------------------+--------+--------+ 2541 | Name | Namespace | Prefix | Refere | 2542 | | | | nce | 2543 +----------------+--------------------------------+--------+--------+ 2544 | ietf-mpls-mldp | urn:ietf:params:xml:ns:yang | mldp | This d | 2545 | | :ietf-mpls-mldp | | ocumen | 2546 | | | | t | 2547 | | | | | 2548 | ietf-mpls- | urn:ietf:params:xml:ns:yang | mldp- | This d | 2549 | mldp-extended | :ietf-mpls-mldp-extended | ext | ocumen | 2550 | | | | t | 2551 +----------------+--------------------------------+--------+--------+ 2553 12. Acknowledgments 2555 The authors would like to acknowledge Ladislav Lhotka and Acee Lindem 2556 for their review and comments. 2558 13. References 2560 13.1. Normative References 2562 [I-D.ietf-mpls-ldp-yang] 2563 Raza, K., Asati, R., Liu, X., Esale, S., Chen, X., and H. 2564 Shah, "YANG Data Model for MPLS LDP", draft-ietf-mpls-ldp- 2565 yang-06 (work in progress), May 2019. 2567 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2568 Requirement Levels", BCP 14, RFC 2119, 2569 DOI 10.17487/RFC2119, March 1997, 2570 . 2572 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2573 DOI 10.17487/RFC3688, January 2004, 2574 . 2576 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2577 the Network Configuration Protocol (NETCONF)", RFC 6020, 2578 DOI 10.17487/RFC6020, October 2010, 2579 . 2581 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2582 and A. Bierman, Ed., "Network Configuration Protocol 2583 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2584 . 2586 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2587 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2588 . 2590 [RFC6388] Wijnands, IJ., Ed., Minei, I., Ed., Kompella, K., and B. 2591 Thomas, "Label Distribution Protocol Extensions for Point- 2592 to-Multipoint and Multipoint-to-Multipoint Label Switched 2593 Paths", RFC 6388, DOI 10.17487/RFC6388, November 2011, 2594 . 2596 [RFC6389] Aggarwal, R. and JL. Le Roux, "MPLS Upstream Label 2597 Assignment for LDP", RFC 6389, DOI 10.17487/RFC6389, 2598 November 2011, . 2600 [RFC6512] Wijnands, IJ., Rosen, E., Napierala, M., and N. Leymann, 2601 "Using Multipoint LDP When the Backbone Has No Route to 2602 the Root", RFC 6512, DOI 10.17487/RFC6512, February 2012, 2603 . 2605 [RFC6826] Wijnands, IJ., Ed., Eckert, T., Leymann, N., and M. 2606 Napierala, "Multipoint LDP In-Band Signaling for Point-to- 2607 Multipoint and Multipoint-to-Multipoint Label Switched 2608 Paths", RFC 6826, DOI 10.17487/RFC6826, January 2013, 2609 . 2611 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2612 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2613 . 2615 [RFC7060] Napierala, M., Rosen, E., and IJ. Wijnands, "Using LDP 2616 Multipoint Extensions on Targeted LDP Sessions", RFC 7060, 2617 DOI 10.17487/RFC7060, November 2013, 2618 . 2620 [RFC7140] Jin, L., Jounay, F., Wijnands, IJ., and N. Leymann, "LDP 2621 Extensions for Hub and Spoke Multipoint Label Switched 2622 Path", RFC 7140, DOI 10.17487/RFC7140, March 2014, 2623 . 2625 [RFC7246] Wijnands, IJ., Ed., Hitchen, P., Leymann, N., Henderickx, 2626 W., Gulko, A., and J. Tantsura, "Multipoint Label 2627 Distribution Protocol In-Band Signaling in a Virtual 2628 Routing and Forwarding (VRF) Table Context", RFC 7246, 2629 DOI 10.17487/RFC7246, June 2014, 2630 . 2632 [RFC7431] Karan, A., Filsfils, C., Wijnands, IJ., Ed., and B. 2633 Decraene, "Multicast-Only Fast Reroute", RFC 7431, 2634 DOI 10.17487/RFC7431, August 2015, 2635 . 2637 [RFC7438] Wijnands, IJ., Ed., Rosen, E., Gulko, A., Joorde, U., and 2638 J. Tantsura, "Multipoint LDP (mLDP) In-Band Signaling with 2639 Wildcards", RFC 7438, DOI 10.17487/RFC7438, January 2015, 2640 . 2642 [RFC7715] Wijnands, IJ., Ed., Raza, K., Atlas, A., Tantsura, J., and 2643 Q. Zhao, "Multipoint LDP (mLDP) Node Protection", 2644 RFC 7715, DOI 10.17487/RFC7715, January 2016, 2645 . 2647 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2648 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2649 . 2651 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2652 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2653 May 2017, . 2655 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 2656 "Common YANG Data Types for the Routing Area", RFC 8294, 2657 DOI 10.17487/RFC8294, December 2017, 2658 . 2660 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2661 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2662 . 2664 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2665 Access Control Model", STD 91, RFC 8341, 2666 DOI 10.17487/RFC8341, March 2018, 2667 . 2669 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2670 and R. Wilton, "Network Management Datastore Architecture 2671 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 2672 . 2674 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2675 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2676 . 2678 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2679 Routing Management (NMDA Version)", RFC 8349, 2680 DOI 10.17487/RFC8349, March 2018, 2681 . 2683 [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of 2684 Documents Containing YANG Data Models", BCP 216, RFC 8407, 2685 DOI 10.17487/RFC8407, October 2018, 2686 . 2688 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2689 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2690 . 2692 13.2. Informative References 2694 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 2695 RFC 7951, DOI 10.17487/RFC7951, August 2016, 2696 . 2698 Appendix A. Data Tree Example 2700 This section contains an example of an instance data tree in the JSON 2701 encoding [RFC7951], containing both configuration and state data. 2703 lo0: 2001:db8:0:200::1 (Root Address) 2704 +-------+ 2705 | | Router| | 2706 eth21 +---+ R2 +---+ eth23 2707 | | (Root)| | 2708 | +-------+ | lo0: 2001:db8:0:300::1 2709 | +-------+ | | +-------+ | 2710 | | Router| | | | Router| | 2711 eth10 +--+ R1 +---+ eth12 eth32 +---+ R3 +--+ eth30 2712 | | | | | | | | 2713 | +-------+ | | +-------+ | 2714 lo0: 2001:db8:0:200::1 (Root Address) 2716 The configuration instance data tree for Router R3 in the above 2717 figure could be as follows: 2719 { 2720 "ietf-interfaces:interfaces": { 2721 "interface": [ 2722 { 2723 "name": "lo0", 2724 "description": "R3 loopback interface.", 2725 "type": "iana-if-type:softwareLoopback", 2726 "ietf-ip:ipv6": { 2727 "address": [ 2728 { 2729 "ip": "2001:db8:0:300::1", 2730 "prefix-length": 64 2731 } 2732 ] 2733 } 2734 }, 2735 { 2736 "name": "eth30", 2737 "description": "An interface connected to client routers.", 2738 "type": "iana-if-type:ethernetCsmacd", 2739 "ietf-ip:ipv6": { 2740 "forwarding": true 2741 } 2742 }, 2743 { 2744 "name": "eth32", 2745 "description": "An interface connected to root (R2).", 2746 "type": "iana-if-type:ethernetCsmacd", 2747 "ietf-ip:ipv6": { 2748 "forwarding": true 2749 } 2750 } 2751 ] 2752 }, 2753 "ietf-routing:routing": { 2754 "router-id": "203.0.113.3", 2755 "control-plane-protocols": { 2756 "ietf-mpls-ldp:mpls-ldp": { 2757 "global": { 2758 "address-families": { 2759 "ietf-mpls-ldp-extended:ipv6": { 2760 "enable": true 2761 } 2762 }, 2763 "capability": { 2764 "ietf-mpls-mldp:mldp": { 2765 "mp2mp": { 2766 "enable": true 2767 } 2768 } 2769 }, 2770 "ietf-mpls-mldp:mldp": { 2771 "enable": true, 2772 "address-families": { 2773 "ietf-mpls-mldp-extended:ipv6": { 2774 "configured-leaf-lsps": { 2775 "opaque-element-lspid": { 2776 "fec-label": [ 2777 { 2778 "root-address": "2001:db8:0:200::1", 2779 "lsp-id": 201, 2780 "multipoint-type": "mp2mp" 2781 } 2782 ] 2783 } 2784 } 2785 } 2787 } 2788 } 2789 }, 2790 "discovery": { 2791 "interfaces": { 2792 "interface": [ 2793 { 2794 "name": "eth30", 2795 "address-families": { 2796 "ietf-mpls-ldp-extended:ipv6": { 2797 "enable": true 2798 } 2799 } 2800 }, 2801 { 2802 "name": "eth32", 2803 "address-families": { 2804 "ietf-mpls-ldp-extended:ipv6": { 2805 "enable": true 2806 } 2807 } 2808 } 2809 ] 2810 } 2811 } 2812 } 2813 } 2814 } 2815 } 2817 The cooresponding operational state data for Router R3 could be as 2818 follows: 2820 { 2821 "ietf-interfaces:interfaces": { 2822 "interface": [ 2823 { 2824 "name": "lo0", 2825 "description": "R3 loopback interface.", 2826 "type": "iana-if-type:softwareLoopback", 2827 "phys-address": "00:00:5e:00:53:03", 2828 "oper-status": "up", 2829 "statistics": { 2830 "discontinuity-time": "2018-10-15T12:34:56-05:00" 2831 }, 2832 "ietf-ip:ipv6": { 2833 "mtu": 1500, 2834 "address": [ 2835 { 2836 "ip": "2001:db8:0:300::1", 2837 "prefix-length": 64, 2838 "origin": "static", 2839 "status": "preferred" 2840 }, 2841 { 2842 "ip": "fe80::200:5eff:fe00:5303", 2843 "prefix-length": 64, 2844 "origin": "link-layer", 2845 "status": "preferred" 2846 } 2847 ], 2848 "neighbor": [ 2849 ] 2850 } 2851 }, 2852 { 2853 "name": "eth30", 2854 "description": "An interface connected to client routers.", 2855 "type": "iana-if-type:ethernetCsmacd", 2856 "phys-address": "00:00:5e:00:53:30", 2857 "oper-status": "up", 2858 "statistics": { 2859 "discontinuity-time": "2018-10-15T12:34:56-05:00" 2860 }, 2861 "ietf-ip:ipv6": { 2862 "forwarding": true, 2863 "mtu": 1500, 2864 "address": [ 2865 { 2866 "ip": "fe80::200:5eff:fe00:5330", 2867 "prefix-length": 64, 2868 "origin": "link-layer", 2869 "status": "preferred" 2870 } 2871 ], 2872 "neighbor": [ 2873 ] 2874 } 2875 }, 2876 { 2877 "name": "eth32", 2878 "description": "An interface connected to root (R2).", 2879 "type": "iana-if-type:ethernetCsmacd", 2880 "phys-address": "00:00:5e:00:53:32", 2881 "oper-status": "up", 2882 "statistics": { 2883 "discontinuity-time": "2018-10-15T12:34:56-05:00" 2884 }, 2885 "ietf-ip:ipv6": { 2886 "forwarding": true, 2887 "mtu": 1500, 2888 "address": [ 2889 { 2890 "ip": "fe80::200:5eff:fe00:5332", 2891 "prefix-length": 64, 2892 "origin": "link-layer", 2893 "status": "preferred" 2894 } 2895 ], 2896 "neighbor": [ 2897 { 2898 "ip": "fe80::200:5eff:fe00:5323", 2899 "link-layer-address": "00:00:5e:00:53:23", 2900 "origin": "dynamic", 2901 "is-router": [null], 2902 "state": "reachable" 2903 } 2904 ] 2905 } 2906 } 2907 ] 2908 }, 2909 "ietf-routing:routing": { 2910 "router-id": "203.0.113.3", 2911 "interfaces": { 2912 "interface": [ 2913 "lo0", 2914 "eth30", 2915 "eth32" 2916 ] 2917 }, 2918 "control-plane-protocols": { 2919 "ietf-mpls-ldp:mpls-ldp": { 2920 "global": { 2921 "address-families": { 2922 "ietf-mpls-ldp-extended:ipv6": { 2923 "enable": true 2924 } 2925 }, 2926 "capability": { 2927 "ietf-mpls-mldp:mldp": { 2928 "mp2mp": { 2929 "enable": true 2930 } 2932 } 2933 }, 2934 "ietf-mpls-mldp:mldp": { 2935 "enable": true, 2936 "address-families": { 2937 "ietf-mpls-mldp-extended:ipv6": { 2938 "configured-leaf-lsps": { 2939 "opaque-element-lspid": { 2940 "fec-label": [ 2941 { 2942 "root-address": "2001:db8:0:200::1", 2943 "lsp-id": 201, 2944 "multipoint-type": "mp2mp" 2945 } 2946 ] 2947 } 2948 }, 2949 "roots": { 2950 "root": [ 2951 { 2952 "root-address": "2001:db8:0:200::1", 2953 "is-self": false, 2954 "reachability": [ 2955 { 2956 "address": "fe80::200:5eff:fe00:5323", 2957 "interface": "eth32", 2958 "peer": "203.0.113.2" 2959 } 2960 ], 2961 "bindings": { 2962 "opaque-element-lspid": { 2963 "fec-label": [ 2964 { 2965 "lsp-id": 201, 2966 "multipoint-type": "mp2mp", 2967 "peer": [ 2968 { 2969 "direction": "upstream", 2970 "peer": "203.0.113.2", 2971 "advertisement-type": "advertised", 2972 "label": 3201 2973 }, 2974 { 2975 "direction": "upstream", 2976 "peer": "203.0.113.2", 2977 "advertisement-type": "received", 2978 "label": 2301 2979 } 2981 ] 2982 } 2983 ] 2984 } 2985 } 2986 } 2987 ] 2988 } 2989 } 2990 } 2991 } 2992 }, 2993 "discovery": { 2994 "interfaces": { 2995 "interface": [ 2996 { 2997 "name": "eth30", 2998 "address-families": { 2999 "ietf-mpls-ldp-extended:ipv6": { 3000 "enable": true, 3001 "hello-adjacencies": { 3002 "hello-adjacency": [ 3003 ] 3004 } 3005 } 3006 } 3007 }, 3008 { 3009 "name": "eth32", 3010 "address-families": { 3011 "ietf-mpls-ldp-extended:ipv6": { 3012 "enable": true, 3013 "hello-adjacencies": { 3014 "hello-adjacency": [ 3015 { 3016 "adjacent-address": 3017 "fe80::200:5eff:fe00:5323", 3018 "flag": ["adjacency-flag-active"], 3019 "hello-holdtime": { 3020 "adjacent": 15, 3021 "negotiated": 15, 3022 "remaining": 9 3023 }, 3024 "next-hello": 3, 3025 "statistics": { 3026 "discontinuity-time": 3027 "2018-10-15T12:34:56-05:00" 3028 }, 3029 "peer": { 3030 "lsr-id": "203.0.113.2", 3031 "label-space-id": 0 3032 } 3033 } 3034 ] 3035 } 3036 } 3037 } 3038 } 3039 ] 3040 } 3041 }, 3042 "peers": { 3043 "peer": [ 3044 { 3045 "lsr-id": "203.0.113.2", 3046 "label-space-id": 0, 3047 "label-advertisement-mode": { 3048 "local": "downstream-unsolicited", 3049 "peer": "downstream-unsolicited", 3050 "negotiated": "downstream-unsolicited" 3051 }, 3052 "next-keep-alive": 5, 3053 "session-holdtime": { 3054 "peer": 180, 3055 "negotiated": 180, 3056 "remaining": 78 3057 }, 3058 "session-state": "operational", 3059 "tcp-connection": { 3060 "local-address": "fe80::200:5eff:fe00:5332", 3061 "local-port": 646, 3062 "remote-address": "fe80::200:5eff:fe00:5323", 3063 "remote-port": 646 3064 }, 3065 "up-time": "P2H33M5S", 3066 "statistics": { 3067 "discontinuity-time": "2018-10-15T12:34:56-05:00" 3068 }, 3069 "received-peer-state": { 3070 "capability": { 3071 "ietf-mpls-mldp:mldp": { 3072 "mp2mp": { 3073 "enable": true 3074 } 3075 } 3076 } 3078 } 3079 } 3080 ] 3081 } 3082 } 3083 } 3084 } 3085 } 3087 Appendix B. Additional Contributors 3089 Matthew Bocci 3090 Nokia 3091 Email: matthew.bocci@nokia.com 3093 Authors' Addresses 3095 Kamran Raza 3096 Cisco Systems 3097 Email: skraza@cisco.com 3099 Xufeng Liu 3100 Volta Networks 3101 Email: xufeng.liu.ietf@gmail.com 3103 Santosh Esale 3104 Juniper Networks 3105 Email: sesale@juniper.net 3107 Loa Andersson 3108 Huawei Technologies 3109 Email: loa@pi.nu 3111 Jeff Tantsura 3112 Nuage Networks 3113 Email: jefftant.ietf@gmail.com 3114 Sowmya Krishnaswamy 3115 Individual 3116 Email: krishnaswamy.sowmya@gmail.com 3118 Rajiv Asati 3119 Cisco Systems, Inc. 3120 Email: rajiva@cisco.com 3122 Xia Chen 3123 Huawei Technologies 3124 Email: jescia.chenxia@huawei.com 3126 Himanshu Shah 3127 Ciena Corporation 3128 Email: hshah@ciena.com