idnits 2.17.1 draft-saad-mpls-static-yang-00.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 200 has weird spacing: '...w index uin...' == Line 224 has weird spacing: '...o index uin...' -- The document date (October 16, 2015) is 3114 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 (-25) exists of draft-ietf-netmod-routing-cfg-20 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) Summary: 2 errors (**), 0 flaws (~~), 4 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: April 18, 2016 Cisco Systems Inc 6 X. Liu 7 Ericsson 8 V. Beeram 9 Juniper Networks 10 H. Shah 11 Ciena 12 X. Chen 13 Huawei Technologies 14 R. Jones 15 Brocade 16 B. Wen 17 Comcast 18 October 16, 2015 20 A YANG Data Model for MPLS Base and Static LSPs 21 draft-saad-mpls-static-yang-00 23 Abstract 25 This document contains a specification of two YANG modules, the MPLS 26 base, and Static LSP YANG modules. The MPLS base YANG module serves 27 as a base framework for configuring and managing an MPLS switching 28 subsystem. The MPLS Static LSP module augments the MPLS base YANG 29 module with specific data to configure and manage MPLS Static LSP(s). 30 It is expected that other MPLS YANG modules for MPLS technology YANG 31 modules (e.g. MPLS LDP or MPLS RSVP-TE) will also augment the MPLS 32 YANG base model. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at http://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on April 18, 2016. 50 Copyright Notice 52 Copyright (c) 2015 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (http://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 69 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 70 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 71 2.1.1. MPLS Base Tree Diagram . . . . . . . . . . . . . . . 4 72 2.1.2. MPLS Static LSP Tree Diagram . . . . . . . . . . . . 4 73 2.2. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 5 74 2.2.1. MPLS Base Module . . . . . . . . . . . . . . . . . . 5 75 2.2.2. MPLS Static LSP YANG Module . . . . . . . . . . . . . 8 76 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 77 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 78 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 79 5.1. Normative References . . . . . . . . . . . . . . . . . . 13 80 5.2. Informative References . . . . . . . . . . . . . . . . . 14 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 83 1. Introduction 85 AAA 87 1.1. Terminology 89 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 90 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 91 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 92 [RFC2119]. 94 The following terms are defined in [RFC6020]: 96 o augment, 98 o configuration data, 100 o data model, 102 o data node, 104 o feature, 106 o mandatory node, 108 o module, 110 o schema tree, 112 o state data, 114 o RPC operation. 116 2. Introduction 118 A core routing data model is defined in 119 [I-D.ietf-netmod-routing-cfg], and it proposes a basis for the 120 development of data models for routing protocols. The MPLS base 121 model augments this model with additional data specific to MPLS 122 switching. The interface data model is defined in [RFC7223] and is 123 used for referencing interface from the MPLS base model. 125 This document contains a specification of the following YANG modules: 127 o Module "ietf-mpls" provides base components of the MPLS data 128 model. 130 o Module "ietf-mpls-static" that augments "ietf-mpls" with 131 additional data specific to configuration and management of Static 132 LSPs. 134 Note, it is expected that other MPLS YANG models to augment the 135 "ietf-mpls" base model to define specific data to other MPLS 136 technologies (e.g. MPLS LDP or MPLS RSVP-TE). 138 2.1. Overview 140 The MPLS base YANG module augments the "routing/routing-instance/ 141 routing- protocols/routing-protocol" path for the "rw" branch, and 142 augments path "routing-state/routing-instance/routing- protocols/ 143 routing-protocol" for the "ro" branch of the ietf-routing module. 145 The approach described in [I-D.openconfig-netmod-opstate] is adopted 146 to represent data pertaining to configuration intended, applied state 147 and derived state data elements. Each container in the model holds a 148 "config" and "state" sub-container. The "config" sub-container is 149 used to represent the intended configurable parameters, and the state 150 sub-container is used to represent both the applied configurable 151 parameters and any derived state, such as counters or statistical 152 information. 154 2.1.1. MPLS Base Tree Diagram 156 The MPLS base tree diagram is shown in Figure 1. 158 module: ietf-mpls 159 augment /rt:routing/rt:routing-instance: 160 +--rw mpls 161 +--rw interface* [name] 162 +--rw name if:interface-ref 163 +--rw config 164 | +--rw enabled? boolean 165 +--ro state 166 +--ro enabled? boolean 167 augment /rt:routing-state/rt:routing-instance: 168 +--ro mpls 170 Figure 1: MPLS Base tree diagram 172 2.1.2. MPLS Static LSP Tree Diagram 174 The MPLS Static LSP tree diagram is shown in Figure 2. 176 module: ietf-mpls-static 177 augment /rt:routing/rt:routing-instance/mpls:mpls: 178 +--rw static-lsps 179 +--rw static-lsp* [name] 180 +--rw name string 181 +--rw config 182 | +--rw in-segment 183 | | +--rw (type)? 184 | | +--:(ip-prefix) 185 | | | +--rw ip-prefix? inet:ip-prefix 186 | | +--:(mpls-label) 187 | | +--rw incoming-label? mpls:mpls-label 188 | +--rw operation? enumeration 189 | +--rw (out-segment)? 190 | +--:(simple-path) 191 | | +--rw next-hop? inet:ip-address 192 | | +--rw outgoing-label? mpls:mpls-label 193 | | +--rw outgoing-interface? if:interface-ref 194 | +--:(path-list) 195 | +--rw paths* [path-index] 196 | +--rw path-index uint32 197 | +--rw backup-path-index? uint32 198 | +--rw next-hop? inet:ip-address 199 | +--rw outgoing-labels* [index] 200 | | +--rw index uint32 201 | | +--rw label? mpls:mpls-label 202 | +--rw outgoing-interface? if:interface-ref 203 | +--rw loadshare? mpls:percent 204 | +--rw role? enumeration 205 +--ro state 206 +--ro in-segment 207 | +--ro (type)? 208 | +--:(ip-prefix) 209 | | +--ro ip-prefix? inet:ip-prefix 210 | +--:(mpls-label) 211 | +--ro incoming-label? mpls:mpls-label 212 +--ro operation? enumeration 213 +--ro (out-segment)? 214 +--:(simple-path) 215 | +--ro next-hop? inet:ip-address 216 | +--ro outgoing-label? mpls:mpls-label 217 | +--ro outgoing-interface? if:interface-ref 218 +--:(path-list) 219 +--ro paths* [path-index] 220 +--ro path-index uint32 221 +--ro backup-path-index? uint32 222 +--ro next-hop? inet:ip-address 223 +--ro outgoing-labels* [index] 224 | +--ro index uint32 225 | +--ro label? mpls:mpls-label 226 +--ro outgoing-interface? if:interface-ref 227 +--ro loadshare? mpls:percent 228 +--ro role? enumeration 230 Figure 2: MPLS Static LSP tree diagram 232 2.2. YANG Modules 234 2.2.1. MPLS Base Module 236 file "ietf-mpls@2015-10-16.yang" 238 module ietf-mpls { 240 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls"; 241 prefix "mpls"; 243 import ietf-routing { 244 prefix "rt"; 245 } 247 import ietf-interfaces { 248 prefix "if"; 249 } 251 organization "TBD"; 253 contact "TBD"; 255 description 256 "This YANG module defines the essential components for the 257 management of the MPLS subsystem."; 259 revision "2015-10-16" { 260 description 261 "Initial revision"; 262 reference "RFC 3031: A YANG Data Model for base MPLS"; 263 } 265 typedef mpls-label { 266 type uint32 { 267 range "0..1048575"; 268 } 269 description 270 "The MPLS label range"; 271 } 273 typedef percent { 274 type uint16 { 275 range "0 .. 100"; 276 } 277 description "Percentage"; 278 } 280 grouping interface-mpls { 281 description "MPLS interface properties grouping"; 282 leaf enabled { 283 type boolean; 284 description 285 "'true' if mpls encapsulation is enabled on the 286 interface. 'false' if mpls encapsulation is enabled 287 on the interface."; 288 } 290 } 292 augment "/rt:routing/rt:routing-instance" { 293 description "MPLS augmentation."; 294 container mpls { 295 description 296 "MPLS container, to be used as an augmentation target node 297 other MPLS sub-features config, e.g. MPLS static LSP, MPLS 298 LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc."; 300 list interface { 301 key "name"; 302 description "List of MPLS interfaces"; 303 leaf name { 304 type if:interface-ref; 305 description 306 "The name of a configured MPLS interface"; 307 } 308 container config { 309 description "Holds intended configuration"; 310 uses interface-mpls; 311 } 312 container state { 313 config false; 314 description "Holds inuse configuration"; 315 uses interface-mpls; 316 } 317 } 318 } 319 } 321 augment "/rt:routing-state/rt:routing-instance" { 322 description "MPLS augmentation."; 323 container mpls { 324 config false; 325 description 326 "MPLS container, to be used as an augmentation target node 327 other MPLS sub-features state"; 328 } 329 } 330 } 332 334 Figure 3: MPLS base YANG module 336 2.2.2. MPLS Static LSP YANG Module 338 file "ietf-mpls@2015-10-16.yang" 340 module ietf-mpls-static { 342 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static"; 344 prefix "mpls-static"; 346 import ietf-mpls { 347 prefix mpls; 348 } 350 import ietf-routing { 351 prefix "rt"; 352 } 354 import ietf-inet-types { 355 prefix inet; 356 } 358 import ietf-interfaces { 359 prefix "if"; 360 } 362 organization "TBD"; 364 contact "TBD"; 366 description 367 "This YANG module augments the 'ietf-routing' module with basic 368 configuration and operational state data for MPLS static"; 370 revision "2015-10-16" { 371 description 372 "Initial revision"; 373 reference 374 "RFC 3031: A YANG Data Model for MPLS Static"; 375 } 377 grouping path-basic_config { 378 description "common definitions for statics"; 380 leaf next-hop { 381 type inet:ip-address; 382 description "next hop IP address for the LSP"; 383 } 384 leaf outgoing-label { 385 type mpls:mpls-label; 386 description 387 "label value to push at the current hop for the 388 LSP"; 389 } 391 leaf outgoing-interface { 392 type if:interface-ref; 393 description 394 "The outgoing interface"; 395 } 397 } 399 grouping path-properties_config { 400 description 401 "MPLS path properties"; 402 leaf path-index { 403 type uint32; 404 description 405 "Path identifier"; 406 } 408 leaf backup-path-index { 409 type uint32; 410 description 411 "Backup path identifier"; 412 } 414 leaf next-hop { 415 type inet:ip-address; 416 description 417 "The address of the next-hop"; 418 } 420 list outgoing-labels { 421 key index; 422 description 423 "The outgoing MPLS labels to impose"; 424 leaf index { 425 type uint32; 426 description 427 "The index of the label, lower indices are closer to 428 the top"; 429 } 430 leaf label { 431 type mpls:mpls-label; 432 description 433 "The MPLS label value"; 434 } 435 } 437 leaf outgoing-interface { 438 type if:interface-ref; 439 description 440 "The outgoing interface"; 441 } 443 leaf loadshare { 444 type mpls:percent; 445 description 446 "The percentage of total load tto carry on this path"; 447 } 449 leaf role { 450 type enumeration { 451 enum PRIMARY { 452 description 453 "Path as primary traffic carrying"; 454 } 455 enum BACKUP { 456 description 457 "Path acts as backup"; 458 } 459 enum PRIMARY_AND_BACKUP { 460 description 461 "Path acts as primary and backup simultaneously"; 462 } 463 } 464 description 465 "The MPLS path role"; 466 } 467 } 469 grouping static-lsp_config { 470 description "common definitions for static LSPs"; 472 container in-segment { 473 description 474 "MPLS incoming segment"; 475 choice type { 476 description 477 "Basic FEC choice"; 478 case ip-prefix { 479 leaf ip-prefix { 480 type inet:ip-prefix; 481 description "An IP prefix"; 482 } 483 } 484 case mpls-label { 485 leaf incoming-label { 486 type mpls:mpls-label; 487 description "label value on the incoming packet"; 488 } 489 } 490 } 491 } 493 leaf operation { 494 type enumeration { 495 enum impose-and-forward { 496 description 497 "Operation impose outgoing label(s) and forward to 498 next-hop"; 499 } 500 enum pop-and-forward { 501 description 502 "Operation pop outgoing label and forward to next-hop"; 503 } 504 enum pop-impose-and-forward { 505 description 506 "Operation pop incoming label, impose one or more 507 outgoing label(s) and forward to next-hop"; 508 } 509 enum swap-and-forward { 510 description 511 "Operation swap incoming label, with outgoing label and 512 forward to next-hop"; 513 } 514 enum pop-and-lookup { 515 description 516 "Operation pop incoming label and perform a lookup"; 517 } 518 } 519 description 520 "The MPLS operation to be executed on the incoming packet"; 521 } 523 choice out-segment { 524 description "The MPLS out-segment type choice"; 525 case simple-path { 526 uses path-basic_config; 527 } 528 case path-list { 529 list paths { 530 key path-index; 531 description 532 "The list of MPLS paths associated with the FEC"; 533 uses path-properties_config; 534 } 535 } 536 } 537 } 539 grouping static-lsp { 540 description "grouping for top level list of static LSPs"; 541 container config { 542 description 543 "Holds the intended configuration"; 544 uses static-lsp_config; 545 } 546 container state { 547 config false; 548 description 549 "Holds the state and inuse configuration"; 550 uses static-lsp_config; 551 } 552 } 554 augment "/rt:routing/rt:routing-instance/mpls:mpls" { 555 description "Augmentations for MPLS Static LSPs"; 556 container static-lsps { 557 description 558 "Statically configured LSPs, without dynamic signaling"; 559 list static-lsp { 560 key name; 561 description "list of defined static LSPs"; 563 leaf name { 564 type string; 565 description "name to identify the LSP"; 566 } 567 uses static-lsp; 568 } 569 } 570 } 571 } 573 575 Figure 4: MPLS Static LSP YANG module 577 3. IANA Considerations 579 This document registers the following URIs in the IETF XML registry 580 [RFC3688]. Following the format in [RFC3688], the following 581 registration is requested to be made. 583 URI: urn:ietf:params:xml:ns:yang:ietf-mpls XML: N/A, the requested 584 URI is an XML namespace. 586 URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static XML: N/A, the 587 requested URI is an XML namespace. 589 This document registers a YANG module in the YANG Module Names 590 registry [RFC6020]. 592 name: ietf-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-mpls 593 prefix: ietf-mpls reference: RFC3031 595 name: ietf-mpls-static namespace: urn:ietf:params:xml:ns:yang:ietf- 596 mpls-static prefix: ietf-mpls-static reference: RFC3031 598 4. Security Considerations 600 The YANG module defined in this memo is designed to be accessed via 601 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 602 secure transport layer and the mandatory-to-implement secure 603 transport is SSH [RFC6242]. The NETCONF access control model 604 [RFC6536] provides means to restrict access for particular NETCONF 605 users to a pre-configured subset of all available NETCONF protocol 606 operations and content. 608 There are a number of data nodes defined in the YANG module which are 609 writable/creatable/deletable (i.e., config true, which is the 610 default). These data nodes may be considered sensitive or vulnerable 611 in some network environments. Write operations (e.g., ) 612 to these data nodes without proper protection can have a negative 613 effect on network operations. 615 5. References 617 5.1. Normative References 619 [I-D.ietf-netmod-routing-cfg] 620 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 621 Management", draft-ietf-netmod-routing-cfg-20 (work in 622 progress), October 2015. 624 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 625 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 626 RFC2119, March 1997, 627 . 629 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 630 DOI 10.17487/RFC3688, January 2004, 631 . 633 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 634 the Network Configuration Protocol (NETCONF)", RFC 6020, 635 DOI 10.17487/RFC6020, October 2010, 636 . 638 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 639 and A. Bierman, Ed., "Network Configuration Protocol 640 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 641 . 643 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 644 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 645 . 647 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 648 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 649 10.17487/RFC6536, March 2012, 650 . 652 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 653 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 654 . 656 5.2. Informative References 658 [I-D.openconfig-netmod-opstate] 659 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 660 of Operational State Data in YANG", draft-openconfig- 661 netmod-opstate-01 (work in progress), July 2015. 663 Authors' Addresses 665 Tarek Saad 666 Cisco Systems Inc 668 Email: tsaad@cisco.com 669 Kamran Raza 670 Cisco Systems Inc 672 Email: skraza@cisco.com 674 Rakesh Gandhi 675 Cisco Systems Inc 677 Email: rgandhi@cisco.com 679 Xufeng Liu 680 Ericsson 682 Email: xufeng.liu@ericsson.com 684 Vishnu Pavan Beeram 685 Juniper Networks 687 Email: vbeeram@juniper.net 689 Himanshu Shah 690 Ciena 692 Email: tsaad@cisco.com 694 Xia Chen 695 Huawei Technologies 697 Email: jescia.chenxia@huawei.com 699 Raqib Jones 700 Brocade 702 Email: raqib@Brocade.com 704 Bin Wen 705 Comcast 707 Email: Bin_Wen@cable.comcast.com