idnits 2.17.1 draft-ietf-mpls-base-yang-05.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 182 has weird spacing: '...o index uin...' == Line 192 has weird spacing: '...o index uin...' == Line 201 has weird spacing: '...- index uin...' == Line 210 has weird spacing: '...- index uin...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 02, 2017) is 2490 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) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) Summary: 3 errors (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 MPLS Working Group T. Saad 3 Internet-Draft K. Raza 4 Intended status: Standards Track R. Gandhi 5 Expires: January 3, 2018 Cisco Systems Inc 6 X. Liu 7 Jabil 8 V. Beeram 9 Juniper Networks 10 H. Shah 11 Ciena 12 I. Bryskin 13 X. Chen 14 Huawei Technologies 15 R. Jones 16 Brocade 17 B. Wen 18 Comcast 19 July 02, 2017 21 A YANG Data Model for MPLS Base 22 draft-ietf-mpls-base-yang-05 24 Abstract 26 This document contains a specification of the the MPLS base YANG 27 model. The MPLS base YANG module serves as a base framework for 28 configuring and managing an MPLS switching subsystem. It is expected 29 that other MPLS technology YANG models (e.g. MPLS LSP Static, LDP or 30 RSVP-TE models) will augment the MPLS base YANG model. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at http://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on January 3, 2018. 49 Copyright Notice 51 Copyright (c) 2017 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 (http://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 . . . . . . . . . . . . . . . . . . . . . . . . 2 67 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 68 1.1.1. Keywords . . . . . . . . . . . . . . . . . . . . . . 3 69 1.2. MPLS Base Tree Diagram . . . . . . . . . . . . . . . . . 3 70 1.3. MPLS Base Module . . . . . . . . . . . . . . . . . . . . 5 71 2. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 72 3. Security Considerations . . . . . . . . . . . . . . . . . . . 13 73 4. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 74 4.1. Normative References . . . . . . . . . . . . . . . . . . 14 75 4.2. Informative References . . . . . . . . . . . . . . . . . 15 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 78 1. Introduction 80 A core routing data model is defined in [RFC8022], and it provides a 81 basis for the development of data models for routing protocols. The 82 MPLS base model augments this model with additional data specific to 83 MPLS switching [RFC3031]. The interface data model is defined in 84 [RFC7223] and is used for referencing interface from the MPLS base 85 model. 87 The MPLS base YANG module augments the "routing" read-write (rw) and 88 "routing-state" read-only (ro) branches of the ietf-routing module 89 defined in [RFC8022]. The approach described in 90 [I-D.openconfig-netmod-opstate] is adopted to represent data 91 pertaining to configuration intended, applied state and derived state 92 data elements. Each container in the model holds a "config" and 93 "state" sub-container. The "config" sub-container contains the 94 intended configuration data, and the state sub-container contains 95 both the applied configuration and any derived state, such as 96 counters or statistical information. 98 This document defines the specification for the "ietf-mpls" YANG 99 module that provides base components of the MPLS data model. It is 100 expected that other MPLS YANG modules will augment the "ietf-mpls" 101 base model to define data models for other MPLS technologies (e.g. 102 MPLS LDP or MPLS RSVP-TE). 104 This document also defines a way to model MPLS labelled routes as an 105 augmentation of the the routing RIB model defined in [RFC8022] for IP 106 prefix routes that are MPLS labelled. Other MPLS non-IP prefix 107 routes are also modelled by introducing a new "mpls" address-family 108 RIB. 110 1.1. Terminology 112 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 113 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 114 document are to be interpreted as described in BCP 14, RFC 2119 115 RFC2119}}. 117 1.1.1. Keywords 119 The following terms are defined in [RFC6020]: 121 o augment, 123 o configuration data, 125 o data model, 127 o data node, 129 o feature, 131 o mandatory node, 133 o module, 135 o schema tree, 137 o state data, 139 o RPC operation. 141 1.2. MPLS Base Tree Diagram 143 The MPLS base tree diagram is shown in Figure 1. 145 module: ietf-mpls 146 augment /rt:routing: 147 +--rw mpls 148 +--rw config 149 | +--rw ttl-propagate? boolean 150 +--ro state 151 | +--ro ttl-propagate? boolean 152 +--rw label-blocks 153 | +--rw label-block* [index] 154 | +--rw index -> ../config/index 155 | +--rw start-label? -> ../config/start-label 156 | +--rw end-label? -> ../config/end-label 157 | +--rw config 158 | | +--rw index? string 159 | | +--rw start-label? rt-types:mpls-label 160 | | +--rw end-label? rt-types:mpls-label 161 | | +--rw block-allocation-mode? identityref 162 | +--ro state 163 | +--ro index? string 164 | +--ro start-label? rt-types:mpls-label 165 | +--ro end-label? rt-types:mpls-label 166 | +--ro block-allocation-mode? identityref 167 | +--ro free-labels-count? uint32 168 | +--ro inuse-labels-count? uint32 169 +--rw interface* [name] 170 +--rw name if:interface-ref 171 +--rw config 172 | +--rw enabled? boolean 173 | +--rw mtu? uint32 174 +--ro state 175 +--ro enabled? boolean 176 +--ro mtu? uint32 177 augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: 178 +--ro local-label? rt-types:mpls-label 179 augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/ 180 rt:next-hop/rt:next-hop-options/rt:simple-next-hop: 181 +--ro remote-labels* [index] 182 +--ro index uint8 183 +--ro label? rt-types:mpls-label 184 augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/ 185 rt:next-hop/rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/ 186 rt:next-hop: 187 +--ro index? string 188 +--ro backup-index? string 189 +--ro loadshare? uint16 190 +--ro role? nhlfe-role 191 +--ro remote-labels* [index] 192 +--ro index uint8 193 +--ro label? rt-types:mpls-label 195 augment /rt:routing-state/rt:ribs/rt:rib/rt:active-route/rt:input: 196 +---- index? string 197 +---- backup-index? string 198 +---- loadshare? uint16 199 +---- role? nhlfe-role 200 +---- remote-labels* [index] 201 +---- index uint8 202 +---- label? rt-types:mpls-label 203 augment /rt:routing-state/rt:ribs/rt:rib/rt:active-route/rt:output/ 204 rt:route: 205 +---- index? string 206 +---- backup-index? string 207 +---- loadshare? uint16 208 +---- role? nhlfe-role 209 +---- remote-labels* [index] 210 +---- index uint8 211 +---- label? rt-types:mpls-label 213 Figure 1: MPLS Base tree diagram 215 1.3. MPLS Base Module 217 file "ietf-mpls@2017-07-02.yang" 218 module ietf-mpls { 220 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls"; 222 prefix "mpls"; 224 import ietf-routing { 225 prefix "rt"; 226 } 228 import ietf-interfaces { 229 prefix "if"; 230 } 232 import ietf-routing-types { 233 prefix "rt-types"; 234 } 236 organization "IETF MPLS Working Group"; 238 contact 239 "WG Web: 241 WG List: 242 WG Chair: Loa Andersson 243 245 WG Chair: Ross Callon 246 248 WG Chair: George Swallow 249 251 Editor: Tarek Saad 252 254 Editor: Kamran Raza 255 257 Editor: Rakesh Gandhi 258 260 Editor: Xufeng Liu 261 263 Editor: Vishnu Pavan Beeram 264 266 Editor: Himanshu Shah 267 269 Editor: Igor Bryskin 270 272 Editor: Xia Chen 273 275 Editor: Raqib Jones 276 278 Editor: Bin Wen 279 "; 281 description 282 "This YANG module defines the essential components for the 283 management of the MPLS subsystem."; 285 revision "2017-07-02" { 286 description 287 "Latest revision: 288 - Addressed MPLS-RT review comments"; 289 reference "RFC 3031: A YANG Data Model for base MPLS"; 291 } 293 /* Identities */ 295 identity mpls { 296 base rt:address-family; 297 description 298 "This identity represents the MPLS address family."; 299 } 301 identity label-block-alloc-mode { 302 description 303 "Base identity label-block allocation mode"; 304 } 306 identity label-block-alloc-mode-manager { 307 base label-block-alloc-mode; 308 description 309 "Label block allocation on reserved block 310 is managed by label manager"; 311 } 313 identity label-block-alloc-mode-application { 314 base label-block-alloc-mode; 315 description 316 "Label block allocation on reserved block 317 is managed by application"; 318 } 320 typedef nhlfe-role { 321 type enumeration { 322 enum PRIMARY { 323 description 324 "Next-hop acts as primary traffic carrying"; 325 } 326 enum BACKUP { 327 description 328 "Next-hop acts as backup"; 329 } 330 enum PRIMARY_AND_BACKUP { 331 description 332 "Next-hop acts as primary and backup simultaneously"; 333 } 334 } 335 description "The next-hop role"; 336 } 338 grouping nhlfe-simple-contents { 339 description 340 "MPLS simple NHLFE contents"; 341 list remote-labels { 342 key "index"; 343 description "Remote label list"; 344 leaf index { 345 type uint8 { 346 range "0..255"; 347 } 348 description 349 "Index of the label. Index 0 indicates 350 top of the label stack"; 351 } 352 leaf label { 353 type rt-types:mpls-label; 354 description 355 "The outgoing MPLS labels to impose"; 356 } 357 } 358 } 360 grouping nhlfe-contents { 361 description 362 "MPLS NHLFE contents"; 363 leaf index { 364 type string; 365 description 366 "A user-specified identifier utilised to uniquely 367 reference the next-hop entry in the next-hop list. 368 The value of this index has no semantic meaning 369 other than for referencing the entry."; 370 } 372 leaf backup-index { 373 type string; 374 description 375 "A user-specified identifier utilised to uniquely 376 reference the backup next-hop entry in the NHLFE list. 377 The value of this index has no semantic meaning 378 other than for referencing the entry."; 379 } 381 leaf loadshare { 382 type uint16; 383 description 384 "This value is used to compute a loadshare to perform un-equal 385 load balancing when multiple outgoing next-hop(s) are 386 specified. A share is computed as a ratio of this number to the 387 total under all next-hops(s)."; 388 } 390 leaf role { 391 type nhlfe-role; 392 description "NHLFE role"; 393 } 394 uses nhlfe-simple-contents; 395 } 397 grouping interface-mpls_config { 398 description "MPLS interface contents grouping"; 399 leaf enabled { 400 type boolean; 401 description 402 "'true' if mpls encapsulation is enabled on the 403 interface. 'false' if mpls encapsulation is enabled 404 on the interface."; 405 } 406 leaf mtu { 407 type uint32; 408 description 409 "MPLS Maximum Transmission Unit (MTU)"; 410 } 411 } 413 grouping interfaces-mpls { 414 description "List of MPLS interfaces"; 415 list interface { 416 key "name"; 417 description "List of MPLS interfaces"; 418 leaf name { 419 type if:interface-ref; 420 description 421 "The name of a configured MPLS interface"; 422 } 423 container config { 424 description "Holds intended configuration"; 425 uses interface-mpls_config; 426 } 427 container state { 428 config false; 429 description "Holds inuse configuration"; 430 uses interface-mpls_config; 431 } 432 } 433 } 434 grouping label-block_config { 435 description "Label-block configuration items"; 436 leaf index { 437 type string; 438 description 439 "A user-specified identifier utilised to uniquely 440 reference the next-hop entry in the next-hop list. 441 The value of this index has no semantic meaning 442 other than for referencing the entry."; 443 } 444 leaf start-label { 445 type rt-types:mpls-label; 446 description "Label-block start"; 447 } 448 leaf end-label { 449 type rt-types:mpls-label; 450 description "Label-block end"; 451 } 452 leaf block-allocation-mode { 453 type identityref { 454 base label-block-alloc-mode; 455 } 456 description "Label-block allocation mode"; 457 } 458 } 460 grouping label-block_state { 461 description "Label-block state items"; 462 leaf free-labels-count { 463 when 464 "../block-allocation-mode = 'label-block-alloc-mode-manager'"; 465 type uint32; 466 description "Label-block free labels count"; 467 } 468 leaf inuse-labels-count { 469 when 470 "../block-allocation-mode = 'label-block-alloc-mode-manager'"; 471 type uint32; 472 description "Label-block inuse labels count"; 473 } 474 } 476 grouping globals_config { 477 description "MPLS global configuration leafs grouping"; 478 leaf ttl-propagate { 479 type boolean; 480 default 'true'; 481 description "Propagate TTL between IP and MPLS"; 483 } 484 } 486 grouping globals { 487 description "MPLS global configuration grouping"; 488 container config { 489 description "Holds intended configuration"; 490 uses globals_config; 491 } 492 container state { 493 config false; 494 description "Holds inuse configuration"; 495 uses globals_config; 496 } 497 } 498 grouping label-blocks { 499 description "Label-block allocation grouping"; 500 container label-blocks { 501 description "Label-block allocation container"; 502 list label-block { 503 must "start-label >= end-label" { 504 error-message "start-label can not be less than end-label"; 505 } 506 key index; 507 unique "start-label end-label"; 508 leaf index { 509 type leafref { 510 path "../config/index"; 511 } 512 description "Label-block index"; 513 } 514 leaf start-label { 515 type leafref { 516 path "../config/start-label"; 517 } 518 description 519 "Label-block start label reference"; 520 } 521 leaf end-label { 522 type leafref { 523 path "../config/end-label"; 524 } 525 description 526 "Label-block end label reference"; 527 } 528 description "List of MPLS label-blocks"; 529 container config { 530 description "Holds intended configuration"; 531 uses label-block_config; 532 } 533 container state { 534 config false; 535 description "Holds inuse configuration"; 536 uses label-block_config; 537 uses label-block_state; 538 } 539 } 540 } 541 } 543 augment "/rt:routing" { 544 description "MPLS augmentation."; 545 container mpls { 546 description 547 "MPLS container, to be used as an augmentation target node 548 other MPLS sub-features config, e.g. MPLS static LSP, MPLS 549 LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc."; 550 uses globals; 551 uses label-blocks; 552 uses interfaces-mpls; 553 } 554 } 556 /* State data */ 557 augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { 558 description 559 "This leaf augments an IPv4 unicast route."; 560 leaf local-label { 561 type rt-types:mpls-label; 562 description 563 "MPLS local label."; 564 } 565 } 567 augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" 568 + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { 569 description 570 "Augment 'simple-next-hop' case in IPv4 unicast routes."; 571 uses nhlfe-simple-contents; 572 } 574 augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/" 575 + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" 576 + "rt:next-hop-list/rt:next-hop" { 577 description 578 "This leaf augments the 'next-hop-list' case of IPv4 unicast 579 routes."; 580 uses nhlfe-contents; 581 } 583 augment 584 "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/rt:input" { 585 description 586 "This augment adds the input parameter of the 'active-route' 587 action."; 588 uses nhlfe-contents; 589 } 591 augment "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/" 592 + "rt:output/rt:route" { 593 description 594 "This augment adds the destination prefix to the reply of the 595 'active-route' action."; 596 uses nhlfe-contents; 597 } 598 } 599 601 Figure 2: MPLS base YANG module 603 2. IANA Considerations 605 This document registers the following URIs in the IETF XML registry 606 [RFC3688]. Following the format in [RFC3688], the following 607 registration is requested to be made. 609 URI: urn:ietf:params:xml:ns:yang:ietf-mpls XML: N/A, the requested 610 URI is an XML namespace. 612 This document registers a YANG module in the YANG Module Names 613 registry [RFC6020]. 615 name: ietf-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-mpls 616 prefix: ietf-mpls reference: RFC3031 618 3. Security Considerations 620 The YANG module defined in this document is designed to be accessed 621 via the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 622 secure transport layer and the mandatory-to-implement secure 623 transport is SSH [RFC6242]. The NETCONF access control model 624 [RFC6536] provides means to restrict access for particular NETCONF 625 users to a pre-configured subset of all available NETCONF protocol 626 operations and content. 628 There are a number of data nodes defined in the YANG module which are 629 writable/creatable/deletable (i.e., config true, which is the 630 default). These data nodes may be considered sensitive or vulnerable 631 in some network environments. Write operations (e.g., ) 632 to these data nodes without proper protection can have a negative 633 effect on network operations. 635 4. References 637 4.1. Normative References 639 [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol 640 Label Switching Architecture", RFC 3031, DOI 10.17487/ 641 RFC3031, January 2001, 642 . 644 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 645 DOI 10.17487/RFC3688, January 2004, 646 . 648 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 649 the Network Configuration Protocol (NETCONF)", RFC 6020, 650 DOI 10.17487/RFC6020, October 2010, 651 . 653 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 654 and A. Bierman, Ed., "Network Configuration Protocol 655 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 656 . 658 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 659 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 660 . 662 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 663 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 664 10.17487/RFC6536, March 2012, 665 . 667 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 668 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 669 . 671 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 672 Management", RFC 8022, DOI 10.17487/RFC8022, November 673 2016, . 675 4.2. Informative References 677 [I-D.openconfig-netmod-opstate] 678 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 679 of Operational State Data in YANG", draft-openconfig- 680 netmod-opstate-01 (work in progress), July 2015. 682 Authors' Addresses 684 Tarek Saad 685 Cisco Systems Inc 687 Email: tsaad@cisco.com 689 Kamran Raza 690 Cisco Systems Inc 692 Email: skraza@cisco.com 694 Rakesh Gandhi 695 Cisco Systems Inc 697 Email: rgandhi@cisco.com 699 Xufeng Liu 700 Jabil 702 Email: Xufeng_Liu@jabil.com 704 Vishnu Pavan Beeram 705 Juniper Networks 707 Email: vbeeram@juniper.net 709 Himanshu Shah 710 Ciena 712 Email: tsaad@cisco.com 713 Igor Bryskin 714 Huawei Technologies 716 Email: Igor.Bryskin@huawei.com 718 Xia Chen 719 Huawei Technologies 721 Email: jescia.chenxia@huawei.com 723 Raqib Jones 724 Brocade 726 Email: raqib@Brocade.com 728 Bin Wen 729 Comcast 731 Email: Bin_Wen@cable.comcast.com