idnits 2.17.1 draft-ietf-mpls-static-yang-02.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 -- The document date (January 08, 2017) is 2657 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) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 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: July 12, 2017 Cisco Systems Inc 6 X. Liu 7 Ericsson 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 January 08, 2017 21 A YANG Data Model for MPLS Static LSPs 22 draft-ietf-mpls-static-yang-02 24 Abstract 26 This document contains the specification for the MPLS Static Label 27 Switched Paths (LSPs) YANG model. The model allows for the 28 provisioning of static LSP(s) on LER(s) and LSR(s) devices along a 29 LSP path without the dependency on any signaling protocol. The MPLS 30 Static LSP model augments the MPLS base YANG model with specific data 31 to configure and manage MPLS Static LSP(s). 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 http://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." 48 This Internet-Draft will expire on July 12, 2017. 50 Copyright Notice 52 Copyright (c) 2017 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 . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.2. Model Organization . . . . . . . . . . . . . . . . . . . 4 70 1.3. MPLS Static LSPs Model Tree Diagram . . . . . . . . . . . 4 71 1.4. MPLS Static LSP YANG Module(s) . . . . . . . . . . . . . 6 72 2. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 73 3. Security Considerations . . . . . . . . . . . . . . . . . . . 16 74 4. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 75 4.1. Normative References . . . . . . . . . . . . . . . . . . 16 76 4.2. Informative References . . . . . . . . . . . . . . . . . 17 77 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 79 1. Introduction 81 This document describes a YANG data model for configuring and 82 managing the Static LSPs feature. The model allows the configuration 83 of LER and LSR devices with the necessary MPLS cross-connects or 84 bindings to realize an end-to-end LSP service. 86 A static LSP is established by manually specifying incoming and 87 outgoing MPLS label(s) and necessary forwarding information on each 88 of the traversed Label Edge Router (LER) and Label Switched Router 89 (LSR) devices (ingress, transit, or egress nodes) of the forwarding 90 path. 92 For example, on an ingress LER device, the model is used to associate 93 a specific Forwarding Equivalence Class (FEC) of packets- e.g. 94 matching a specific IP prefix in a Virtual Routing or Forwarding 95 (VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and 96 respective outgoing interface(s) to forward the packet. On an LSR 97 device, the model is used to create a binding that swaps the incoming 98 label with an outgoing label and forwards the packet on one or 99 multiple egress path(s). On an egress LER, it is used to create a 100 binding that decapsulates the incoming MPLS label and performs 101 forwarding based on the inner MPLS label (if present) or IP 102 forwarding in the packet. 104 The MPLS Static LSP YANG model is defined in module "ietf-mpls- 105 static" and augments the MPLS Base YANG model defined in module 106 "ietf-mpls" in [I-D.saad-mpls-static-yang]. The approach described 107 in [I-D.openconfig-netmod-opstate] is adopted to represent data 108 pertaining to configuration intended, applied state and derived state 109 data elements. Each container in the model holds a "config" and 110 "state" sub-container. The "config" sub-container is used to 111 represent the intended configurable parameters, and the state sub- 112 container is used to represent both the applied configurable 113 parameters and any derived state, such as counters or statistical 114 information. 116 1.1. Terminology 118 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 119 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 120 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 121 [RFC2119]. 123 The following terms are defined in [RFC6020]: 125 o augment, 127 o configuration data, 129 o data model, 131 o data node, 133 o feature, 135 o mandatory node, 137 o module, 139 o schema tree, 141 o state data, 143 o RPC operation. 145 1.2. Model Organization 147 The base MPLS Static LSP model covers the core features with the 148 minimal set of configuration parameters needed to manage and operate 149 MPLS Static LSPs. 151 Additional MPLS Static LSP parameters as well as optional feature(s) 152 are grouped in a separate MPLS Static LSP extended model. The 153 relationship between the MPLS base and other MPLS modules are shown 154 in Figure 1. 156 MPLS base +-----------+ ^: import 157 module | ietf-mpls | o: augment 158 +-----------+ 159 o o 160 | \ 161 v V 162 +------------------+ +--------------------+ 163 MPLS Static | ietf-mpls-static | | ietf-mpls-ldp.yang | . . . 164 LSP module +------------------+ +--------------------+ 165 ^ 166 | 167 o 168 +---------------------------+ 169 Extended MPLS | ietf-mpls-static-extended | 170 Static LSP +---------------------------+ 171 module 173 Figure 1: Relationship between MPLS modules 175 1.3. MPLS Static LSPs Model Tree Diagram 177 The MPLS Static LSP tree diagram is shown in Figure 2. 179 module: ietf-mpls-static 180 augment /rt:routing/mpls:mpls: 181 +--rw static-lsps 182 +--rw static-lsp* [name] 183 | +--rw name string 184 | +--rw config 185 | | +--rw in-segment 186 | | | +--rw (type)? 187 | | | | +--:(ip-prefix) 188 | | | | | +--rw ip-prefix? inet:ip-prefix 189 | | | | +--:(mpls-label) 190 | | | | | +--rw incoming-label? mpls:mpls-label 191 | | | | +--:(tunnel) 192 | | | | +--rw tunnel? te:tunnel-ref 193 | | | +--rw incoming-interface? if:interface-ref 194 | | +--rw operation? enumeration 195 | | +--rw (out-segment)? 196 | | +--:(simple-path) 197 | | | +--rw next-hop? inet:ip-address 198 | | | +--rw outgoing-label? mpls:mpls-label 199 | | | +--rw outgoing-interface? if:interface-ref 200 | | +--:(path-list) 201 | | +--rw paths* [path-index] 202 | | +--rw path-index uint16 203 | | +--rw backup-path-index? uint16 204 | | +--rw next-hop? inet:ip-address 205 | | +--rw outgoing-labels* mpls:mpls-label 206 | | +--rw outgoing-interface? if:interface-ref 207 | | +--rw loadshare? uint16 208 | | +--rw role? enumeration 209 | +--ro state 210 | +--ro in-segment 211 | | +--ro (type)? 212 | | | +--:(ip-prefix) 213 | | | | +--ro ip-prefix? inet:ip-prefix 214 | | | +--:(mpls-label) 215 | | | | +--ro incoming-label? mpls:mpls-label 216 | | | +--:(tunnel) 217 | | | +--ro tunnel? te:tunnel-ref 218 | | +--ro incoming-interface? if:interface-ref 219 | +--ro operation? enumeration 220 | +--ro (out-segment)? 221 | +--:(simple-path) 222 | | +--ro next-hop? inet:ip-address 223 | | +--ro outgoing-label? mpls:mpls-label 224 | | +--ro outgoing-interface? if:interface-ref 225 | +--:(path-list) 226 | +--ro paths* [path-index] 227 | +--ro path-index uint16 228 | +--ro backup-path-index? uint16 229 | +--ro next-hop? inet:ip-address 230 | +--ro outgoing-labels* mpls:mpls-label 231 | +--ro outgoing-interface? if:interface-ref 232 | +--ro loadshare? uint16 233 | +--ro role? enumeration 234 +--rw mpls-static-ext:bandwidth? uint32 235 +--rw mpls-static-ext:lsp-priority-setup? uint8 236 +--rw mpls-static-ext:lsp-priority-hold? uint8 238 Figure 2: MPLS Static LSP tree diagram 240 1.4. MPLS Static LSP YANG Module(s) 242 The MPLS Static LSP module is shown in Figure 3. 244 file "ietf-mpls-static@2016-07-05.yang" 245 module ietf-mpls-static { 247 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static"; 249 prefix "mpls-static"; 251 import ietf-mpls { 252 prefix mpls; 253 } 255 import ietf-routing { 256 prefix "rt"; 257 } 259 import ietf-inet-types { 260 prefix inet; 261 } 263 import ietf-interfaces { 264 prefix "if"; 265 } 267 /* Import TE generic types */ 268 import ietf-te { 269 prefix te; 270 } 272 organization "IETF MPLS Working Group"; 274 contact 275 "WG Web: 277 WG List: 279 WG Chair: Loa Andersson 280 282 WG Chair: Ross Callon 283 285 WG Chair: George Swallow 286 288 Editor: Tarek Saad 289 291 Editor: Kamran Raza 292 294 Editor: Rakesh Gandhi 295 297 Editor: Xufeng Liu 298 300 Editor: Vishnu Pavan Beeram 301 303 Editor: Himanshu Shah 304 306 Editor: Igor Bryskin 307 309 Editor: Xia Chen 310 312 Editor: Raqib Jones 313 315 Editor: Bin Wen 316 "; 318 description 319 "This YANG module augments the 'ietf-routing' module with basic 320 configuration and operational state data for MPLS static"; 322 revision "2016-07-05" { 323 description 324 "Latest revision: 325 - Addressed MPLS-RT review comments"; 326 reference "RFC 3031: A YANG Data Model for Static MPLS LSPs"; 327 } 329 typedef static-lsp-ref { 330 type leafref { 331 path "/rt:routing/mpls:mpls/mpls-static:static-lsps/" + 332 "mpls-static:static-lsp/mpls-static:name"; 333 } 334 description 335 "This type is used by data models that need to reference 336 configured static LSP."; 337 } 339 grouping path-basic_config { 340 description "common definitions for statics"; 342 leaf next-hop { 343 type inet:ip-address; 344 description "next hop IP address for the LSP"; 345 } 347 leaf outgoing-label { 348 type mpls:mpls-label; 349 description 350 "label value to push at the current hop for the 351 LSP"; 352 } 354 leaf outgoing-interface { 355 type if:interface-ref; 356 description 357 "The outgoing interface"; 358 } 359 } 361 grouping path-properties_config { 362 description 363 "MPLS path properties"; 364 leaf path-index { 365 type uint16; 366 description 367 "Path identifier"; 368 } 370 leaf backup-path-index { 371 type uint16; 372 description 373 "Backup path identifier"; 374 } 376 leaf next-hop { 377 type inet:ip-address; 378 description 379 "The address of the next-hop"; 380 } 382 leaf-list outgoing-labels { 383 type mpls:mpls-label; 384 ordered-by user; 385 description 386 "The outgoing MPLS labels to impose"; 387 } 389 leaf outgoing-interface { 390 type if:interface-ref; 391 description 392 "The outgoing interface"; 393 } 395 leaf loadshare { 396 type uint16; 397 description 398 "This value is used to compute a loadshare to perform un-equal 399 load balancing when multiple outgoing path(s) are specified. A 400 share is computed as a ratio of this number to the total under 401 all configured path(s)."; 402 } 404 leaf role { 405 type enumeration { 406 enum PRIMARY { 407 description 408 "Path as primary traffic carrying"; 409 } 410 enum BACKUP { 411 description 412 "Path acts as backup"; 413 } 414 enum PRIMARY_AND_BACKUP { 415 description 416 "Path acts as primary and backup simultaneously"; 417 } 418 } 419 description 420 "The MPLS path role"; 421 } 422 } 424 grouping static-lsp_config { 425 description "common definitions for static LSPs"; 427 container in-segment { 428 description 429 "MPLS incoming segment"; 430 choice type { 431 description 432 "Basic FEC choice"; 433 case ip-prefix { 434 leaf ip-prefix { 435 type inet:ip-prefix; 436 description "An IP prefix"; 437 } 438 } 439 case mpls-label { 440 leaf incoming-label { 441 type mpls:mpls-label; 442 description "label value on the incoming packet"; 443 } 444 } 445 case tunnel { 446 leaf tunnel { 447 type te:tunnel-ref; 448 description "TE tunnel FEC mapping"; 449 } 450 } 451 } 452 leaf incoming-interface { 453 type if:interface-ref; 454 description 455 "Optional incoming interface if FEC is restricted 456 to traffic incoming on a specific interface"; 457 } 458 } 460 leaf operation { 461 type enumeration { 462 enum impose-and-forward { 463 description 464 "Operation impose outgoing label(s) and forward to 465 next-hop"; 466 } 467 enum pop-and-forward { 468 description 469 "Operation pop incoming label and forward to next-hop"; 470 } 471 enum pop-impose-and-forward { 472 description 473 "Operation pop incoming label, impose one or more 474 outgoing label(s) and forward to next-hop"; 475 } 476 enum swap-and-forward { 477 description 478 "Operation swap incoming label, with outgoing label and 479 forward to next-hop"; 481 } 482 enum pop-and-lookup { 483 description 484 "Operation pop incoming label and perform a lookup"; 485 } 486 } 487 description 488 "The MPLS operation to be executed on the incoming packet"; 489 } 491 choice out-segment { 492 description "The MPLS out-segment type choice"; 493 case simple-path { 494 uses path-basic_config; 495 } 496 case path-list { 497 list paths { 498 key path-index; 499 description 500 "The list of MPLS paths associated with the FEC"; 501 uses path-properties_config; 502 } 503 } 504 } 505 } 507 grouping static-lsp { 508 description "grouping for top level list of static LSPs"; 509 container config { 510 description 511 "Holds the intended configuration"; 512 uses static-lsp_config; 513 } 514 container state { 515 config false; 516 description 517 "Holds the state and inuse configuration"; 518 uses static-lsp_config; 519 } 520 } 522 augment "/rt:routing/mpls:mpls" { 523 description "Augmentations for MPLS Static LSPs"; 524 container static-lsps { 525 description 526 "Statically configured LSPs, without dynamic signaling"; 527 list static-lsp { 528 key name; 529 description "list of defined static LSPs"; 531 leaf name { 532 type string; 533 description "name to identify the LSP"; 534 } 535 uses static-lsp; 536 } 537 } 538 } 539 } 540 542 Figure 3: MPLS Static LSP YANG module 544 The extended MPLS Static LSP module is shown in Figure 4. 546 file "ietf-mpls-static-extended@2016-07-05.yang" 547 module ietf-mpls-static-extended { 549 namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended"; 551 prefix "mpls-static-ext"; 553 import ietf-mpls { 554 prefix "mpls"; 555 } 557 import ietf-routing { 558 prefix "rt"; 559 } 561 import ietf-mpls-static { 562 prefix "mpls-static"; 563 } 565 organization "IETF MPLS Working Group"; 567 contact 568 "WG Web: 570 WG List: 572 WG Chair: Loa Andersson 573 575 WG Chair: Ross Callon 576 578 WG Chair: George Swallow 579 581 Editor: Tarek Saad 582 584 Editor: Kamran Raza 585 587 Editor: Rakesh Gandhi 588 590 Editor: Xufeng Liu 591 593 Editor: Vishnu Pavan Beeram 594 596 Editor: Himanshu Shah 597 599 Editor: Igor Bryskin 600 602 Editor: Xia Chen 603 605 Editor: Raqib Jones 606 608 Editor: Bin Wen 609 "; 611 description 612 "This module contains the Extended RSVP YANG data model."; 614 revision 2016-07-05 { 615 description "Latest revision of RSVP extended yang module."; 616 reference "RFC2205"; 617 } 619 /* RSVP features */ 620 feature bandwidth { 621 description 622 "Indicates support for static LSP bandwidth allocation"; 623 } 625 grouping static-lsp-extended_config { 626 description 627 "Configuration parameters for MPLS extended 628 parameters"; 629 leaf bandwidth { 630 type uint32; 631 description 632 "bandwidth in Mbps, e.g., using offline calculation"; 633 } 634 leaf lsp-priority-setup { 635 type uint8 { 636 range "0..7"; 637 } 638 description "LSP setup priority"; 639 } 640 leaf lsp-priority-hold { 641 type uint8 { 642 range "0..7"; 643 } 644 description "LSP hold priority"; 645 } 646 } 648 grouping bidir-static-lsp_config { 649 description "common definitions for static LSPs"; 650 leaf forward-lsp { 651 type mpls-static:static-lsp-ref; 652 description 653 "Reference to a configured static forward LSP"; 654 } 655 leaf reverse-lsp { 656 type mpls-static:static-lsp-ref; 657 description 658 "Reference to a configured static reverse LSP"; 659 } 660 } 662 grouping bidir-static-lsp { 663 description "grouping for top level list of static LSPs"; 664 container config { 665 description 666 "Holds the intended configuration"; 667 uses bidir-static-lsp_config; 668 } 669 container state { 670 config false; 671 description 672 "Holds the state and inuse configuration"; 673 uses bidir-static-lsp_config; 675 } 676 } 678 augment "/rt:routing/mpls:mpls/mpls-static:static-lsps" { 679 description 680 "RSVP signaling all interfaces configuration extensions"; 681 uses static-lsp-extended_config; 682 } 684 augment "/rt:routing/mpls:mpls" { 685 description "Augmentations for MPLS Static LSPs"; 686 container bidir-static-lsps { 687 description 688 "Statically configured LSPs, without dynamic signaling"; 689 list bidir-static-lsp { 690 key name; 691 description "list of defined static LSPs"; 693 leaf name { 694 type string; 695 description "name to identify the LSP"; 696 } 697 uses bidir-static-lsp; 698 } 699 } 700 } 701 } 702 704 Figure 4: Extended MPLS Static LSP YANG module 706 2. IANA Considerations 708 This document registers the following URIs in the IETF XML registry 709 [RFC3688]. Following the format in [RFC3688], the following 710 registration is requested to be made. 712 URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static XML: N/A, the 713 requested URI is an XML namespace. 715 URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended XML: N/A, 716 the requested URI is an XML namespace. 718 This document registers two YANG modules in the YANG Module Names 719 registry [RFC6020]. 721 name: ietf-mpls-static namespace: urn:ietf:params:xml:ns:yang:ietf- 722 mpls-static prefix: ietf-mpls-static reference: RFC3031 723 name: ietf-mpls-static-exteneded namespace: 724 urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended prefix: ietf- 725 mpls-static reference: RFC3031 727 3. Security Considerations 729 The YANG module defined in this memo is designed to be accessed via 730 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 731 secure transport layer and the mandatory-to-implement secure 732 transport is SSH [RFC6242]. The NETCONF access control model 733 [RFC6536] provides means to restrict access for particular NETCONF 734 users to a pre-configured subset of all available NETCONF protocol 735 operations and content. 737 There are a number of data nodes defined in the YANG module which are 738 writable/creatable/deletable (i.e., config true, which is the 739 default). These data nodes may be considered sensitive or vulnerable 740 in some network environments. Write operations (e.g., ) 741 to these data nodes without proper protection can have a negative 742 effect on network operations. 744 4. References 746 4.1. Normative References 748 [I-D.saad-mpls-static-yang] 749 Saad, T., Raza, K., Gandhi, R., Liu, X., Beeram, V., Shah, 750 H., Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG 751 Data Model for MPLS Static LSPs", draft-saad-mpls-static- 752 yang-03 (work in progress), May 2016. 754 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 755 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 756 RFC2119, March 1997, 757 . 759 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 760 DOI 10.17487/RFC3688, January 2004, 761 . 763 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 764 the Network Configuration Protocol (NETCONF)", RFC 6020, 765 DOI 10.17487/RFC6020, October 2010, 766 . 768 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 769 and A. Bierman, Ed., "Network Configuration Protocol 770 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 771 . 773 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 774 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 775 . 777 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 778 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 779 10.17487/RFC6536, March 2012, 780 . 782 4.2. Informative References 784 [I-D.openconfig-netmod-opstate] 785 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 786 of Operational State Data in YANG", draft-openconfig- 787 netmod-opstate-01 (work in progress), July 2015. 789 Authors' Addresses 791 Tarek Saad 792 Cisco Systems Inc 794 Email: tsaad@cisco.com 796 Kamran Raza 797 Cisco Systems Inc 799 Email: skraza@cisco.com 801 Rakesh Gandhi 802 Cisco Systems Inc 804 Email: rgandhi@cisco.com 806 Xufeng Liu 807 Ericsson 809 Email: xufeng.liu.ietf@gmail.com 810 Vishnu Pavan Beeram 811 Juniper Networks 813 Email: vbeeram@juniper.net 815 Himanshu Shah 816 Ciena 818 Email: hshah@ciena.com 820 Igor Bryskin 821 Huawei Technologies 823 Email: Igor.Bryskin@huawei.com 825 Xia Chen 826 Huawei Technologies 828 Email: jescia.chenxia@huawei.com 830 Raqib Jones 831 Brocade 833 Email: raqib@Brocade.com 835 Bin Wen 836 Comcast 838 Email: Bin_Wen@cable.comcast.com