idnits 2.17.1 draft-hb-spring-sr-p2mp-policy-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 : ---------------------------------------------------------------------------- ** There are 39 instances of too long lines in the document, the longest one being 57 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 94 has weird spacing: '...address ine...' == Line 137 has weird spacing: '...ion-sid uin...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 28, 2020) is 1274 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) No issues found here. Summary: 1 error (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group H. Bidgoli, Ed. 3 Internet-Draft Nokia 4 Intended status: Standards Track D. Voyer 5 Expires: May 1, 2021 Bell Canada 6 R. Parekh 7 Cisco System 8 T. Saad 9 Juniper Networks 10 T. Kundu 11 Nokia 12 October 28, 2020 14 YANG Data Model for p2mp sr policy 15 draft-hb-spring-sr-p2mp-policy-yang-02 17 Abstract 19 SR P2MP policies are set of policies that enable architecture for 20 P2MP service delivery. 22 This document defines a YANG data model for SR P2MP Policy 23 Configuration and operation. 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at https://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on May 1, 2021. 42 Copyright Notice 44 Copyright (c) 2020 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (https://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 60 2. Conventions used in this document . . . . . . . . . . . . . . 2 61 3. Design of the Data Model . . . . . . . . . . . . . . . . . . 2 62 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 4 63 5. Yang Data Model . . . . . . . . . . . . . . . . . . . . . . . 4 64 6. IANA Consideration . . . . . . . . . . . . . . . . . . . . . 14 65 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 66 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 67 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 68 9.1. Normative References . . . . . . . . . . . . . . . . . . 14 69 9.2. Informative References . . . . . . . . . . . . . . . . . 14 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 72 1. Introduction 74 This document defines a YANG data model for P2MP SR Policy 75 configuration and operation. 77 2. Conventions used in this document 79 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 80 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 81 document are to be interpreted as described in RFC 2119 [RFC2119]. 83 3. Design of the Data Model 85 submodule: router-p2mp-traffic-engineering (belongs-to root) 86 +--rw p2mp-traffic-engiineering! 87 +--rw p2mp-policy* [root-address tree-id] 88 | +--rw root-address inet:ip-address 89 | +--rw tree-id uint32 90 | +--rw p2mp-policy-name? string 91 | +--rw admin-state? enumeration 92 | +--ro oper-state? enumeration 93 | +--rw leaf-list* [leaf-address] 94 | | +--rw leaf-address inet:ip-address 95 | | +--rw admin-state? enumeration 96 | +--rw candidate-path* [protocol-id originator discriminator] 97 | +--rw protocol-id enumeration 98 | +--rw originator inet:ip-address 99 | +--rw discriminator uint32 100 | +--rw candidate-path-name? string 101 | +--rw admin-state? enumeration 102 | +--ro oper-state? enumeration 103 | +--rw preference? uint32 104 | +--rw constraints* [index] 105 | | +--rw index uint32 106 | | +--rw attributes? uint32 107 | +--rw explicit-routing* [index] 108 | | +--rw index uint32 109 | | +--rw attributes? uint32 110 | +--rw path-instances* [index] 111 | +--rw index uint32 112 | +--rw instance-id? -> ../../../../replication-segment 113 /replication-id 114 | +--ro oper-state? enumeration 115 +--rw replication-segment* [node-address replication-id] 116 +--rw node-address inet:ipv4-address 117 +--rw replication-id uint32 118 +--rw admin-state? enumeration 119 +--ro oper-state? enumeration 120 +--rw root-address? inet:ipv4-address 121 +--rw tree-id? uint32 122 +--rw instance-id? uint32 123 +--rw replication-sid? uint32 124 +--rw downstream-nodes* [downstream-index] 125 +--rw downstream-index uint32 126 +--rw next-hop-address? inet:ip-address 127 +--rw next-hop-interface-name? if:interface-ref 128 +--rw protecting-next-hop? boolean 129 +--rw protect-nexthop-id? uint32 130 +--rw (label)? 131 +--:(sid-list) 132 | +--rw sid-list* [index] 133 | +--rw index uint32 134 | +--rw sid-segment-type? uint32 135 +--:(sr-policy) 136 | +--rw sr-policy* [replication-sid] 137 | +--rw replication-sid uint32 138 | +--rw sr-policy? string 139 +--:(rsvp-te) 140 +--rw rsvp-te* [replication-sid] 141 +--rw replication-sid uint32 142 +--rw rsvp-te-tunnel-id? uint32 144 4. Configuration 146 This Module augments the "/rt:routing:" with a treeSID container. 147 This container defines all the configuration parameter related to 148 treeSID and P2MP SR Policy for this particular routing. The P2MP SR 149 policy contains replication policy which in order contain candidate- 150 path and the next-hop-groups for each OIF in the replication Policy. 151 IT should be noted that two disjoint replication policies can be 152 connected via a SR Policy as per 153 [draft-ietf-spring-sr-replication-segment]. 155 5. Yang Data Model 157 file "ietf-p2mp-policy-@2019-07-04.yang" 158 module ietf-tree-sid { 159 yang-version 1.1; 160 namespace "urn:ietf:params:xml:ns:yang:p2mp-policy-segment"; 161 // replace with IANA namespace when assigned 162 prefix tree-sid; 164 import ietf-inet-types { 165 prefix "inet"; 166 } 168 import ietf-yang-types { 169 prefix "yang"; 170 } 172 import ietf-routing-types { 173 prefix "rt-types"; 174 } 176 import ietf-routing { 177 prefix "rt"; 178 } 180 import ietf-interfaces { 181 prefix "if"; 182 } 184 import ietf-ip { 185 prefix ip; 186 } 188 organization 189 "IETF SPRING Working Group"; 191 contact 192 "WG Web: 193 WG List: 195 WG Chair: Bruno Decraene 196 198 WG Chair: Rob Shakir 199 200 Editor: Hooman Bidgoli 201 202 Editor: Tanmoy Kundu 203 204 Editor: Daniel Voyer 205 206 description 207 "The module defines a collection of YANG definition for 208 p2mp policy module."; 210 revision 2019-10-30 { 211 description 212 "First draft."; 213 reference 214 "RFC XXXX: A YANG Data Model for TREE-SID"; 215 } 217 submodule router-p2mp-traffic-engineering { 219 belongs-to root { prefix "root"; } 220 import ietf-inet-types { prefix "inet"; } 221 import ietf-interfaces { prefix "if"; } 223 container p2mp-traffic-engineering { 224 presence "Configure Tree SID P2PM segment parameters."; 225 description 226 "Create p2mp policies and their corresponding 227 candidate paths for p2mp trees."; 229 list p2mp-policy { 230 key "root-address tree-id"; 231 uses p2mp-policy-key; 232 description 233 "Each p2mp-policy identifies one or more p2mp 234 LSP for on the root towards a set of leaf/leaves."; 236 unique "p2mp-policy-name"; 238 leaf p2mp-policy-name { 239 type string; 240 description 241 "P2MP policy name to be referenced by mvpn pmsi."; 242 } 244 leaf admin-state { 245 type enumeration{ 246 enum down { value 0; } 247 enum up { value 1; } 248 } 249 default down; 250 description 251 "Administratively enable/disable Tree SID p2mp policy."; 252 } 253 leaf oper-state { 254 type enumeration{ 255 enum down { value 0; } 256 enum up { value 1; } 257 } 258 default down; 259 config false; 260 description 261 "Tree SID p2mp policy operational state based on users."; 262 } 264 list leaf-list { 265 key "leaf-address"; 266 uses leaf-list-key; 267 description 268 "This list consists of one or more endpoint/s 269 for a p2mp-segment."; 271 leaf admin-state { 272 type enumeration{ 273 enum down { value 0; } 274 enum up { value 1; } 275 } 276 default down; 277 description 278 "Administratively enable/disable 279 each leaf/endpoint"; 280 } 281 } 283 list candidate-path { 284 description 285 "Candidate path is p2mp tree representing a 286 unique path from root to a specific 287 endpoint using the tree-id constraint."; 289 key "protocol-id originator discriminator"; 291 uses candidate-path-key; 293 leaf candidate-path-name { 294 type string; 295 description 296 "A candidate path name 297 equivalent to a PLSP"; 298 } leaf admin-state { 299 type enumeration{ 300 enum down { value 0; } 301 enum up { value 1; } 302 } 303 default down; 304 description 305 "Administratively enable/disable Tree 306 SID candidate path."; 307 } 308 leaf oper-state { 309 type enumeration{ 310 enum down { value 0; } 311 enum up { value 1; } 312 } 313 default down; 314 config false; 315 description 316 "candidate-path operational state based 317 on ilm programming."; 318 } 320 leaf preference { 321 type uint32; 322 default 100; 323 description 324 "Preference determines the best preferred 325 candidate-path among list of candidate path 326 towards a leaf. Higher preference is 327 chosen."; 328 } 330 list constraints { 331 description 332 "Set of constraints"; 333 key "index"; 334 leaf index { 335 type uint32; 336 description 337 "Key index"; 338 } 340 leaf attributes { 341 type uint32; 342 description 343 "Hooman to fill this, I am not sure"; 344 } 345 } 347 list explicit-routing { 348 description 349 "Set of explicit routing"; 350 key "index"; 352 leaf index { 353 type uint32; 354 description 355 "Key index"; 356 } 358 leaf attributes { 359 type uint32; 360 description 361 "Hooman to fill this, I am not sure"; 362 } 363 } 365 list path-instances { 366 description 367 "Set of calculated path 368 given the constraints 369 and explicit routing per 370 candidate path"; 371 key "index"; 373 leaf index { 374 type uint32; 375 description 376 "Key index"; 377 } 379 leaf instance-id { 380 type leafref { 381 path "../../../../replication-segment/replication-id"; 382 } 383 } 385 leaf oper-state { 386 type enumeration{ 387 enum down { value 0; } 388 enum up { value 1; } 389 } 390 default down; 391 config false; 392 description 393 "Operational state of this replication segment."; 394 } 396 } 397 } 398 } 400 list replication-segment { 401 description 402 "A replication segment specifies the forwarding 403 information for one path-instance in a 404 candidate path."; 406 key "node-address replication-id"; 407 uses replication-segment-key; 409 leaf admin-state { 410 type enumeration{ 411 enum down { value 0; } 412 enum up { value 1; } 413 } 414 default down; 415 description 416 "Administratively enable/disable Tree SID replication segment."; 417 } 419 leaf oper-state { 420 type enumeration{ 421 enum down { value 0; } 422 enum up { value 1; } 423 } 424 default down; 425 config false; 426 description 427 "Replication segment operational 428 state based on SID programming."; 429 } 430 container service-info { 432 leaf root-address { 433 type inet:ipv4-address; 434 description 435 "Root address of the tree."; 436 } 438 leaf tree-id { 439 type uint32; 440 description 441 "Tree ID uniquely identifies a tunnel in the root, 442 this also represent a specific constraint. Also known as 443 color and/or p2mp-id"; 444 } 446 leaf instance-id { 447 type uint32; 448 description 449 "Each LSP instance within a root, tree-id."; 450 } 451 } 453 leaf replication-sid { 454 type uint32; 455 description 456 "incoming sid to identify this 457 replication segment. Either 458 BSID or MPLS label"; 459 } 461 list downstream-nodes { 462 description 463 "Identifies each nexthop in a candidate path."; 464 key "downstream-index"; 466 uses downstream-key; 468 leaf next-hop-address { 469 type inet:ip-address; 470 description 471 "Nexthop address of the destination."; 472 } 474 leaf next-hop-interface-name { 475 type if:interface-ref; 476 description 477 "Next hop out going interface."; 479 } 481 leaf protecting-next-hop { 482 type boolean; 483 default false; 484 description 485 "True if this is a protect nexthop."; 486 } 487 leaf protect-nexthop-id { 488 type uint32; 489 description 490 "Nexthop protection id."; 491 } 493 choice label { 494 list sid-list { 495 key index; 496 uses sid-list-key; 497 description 498 "Out going label for this nexthop."; 500 leaf sid-segment-type { 501 type uint32; 502 description 503 "as defined in draft-ietf-spring-segment-routing-policy section 4 504 note if 2 replication segments are directly connected then 505 they can be steered via adjacency SID or IP Nexthop"; 506 } 507 } 509 list sr-policy { 510 key replication-sid; 511 uses sr-policy-key; 512 description 513 "sr-policy sid for this nexthop."; 515 leaf sr-policy { 516 type string; 517 description 518 "SR policy name to be referrenced by outloing label"; 519 } 520 } 522 list rsvp-te { 523 key replication-sid; 524 uses sr-policy-key; 525 description 526 "RSVP TE Tunnel for this nexthop."; 528 leaf rsvp-te-tunnel-id { 529 type uint32; 530 description 531 "rsvp-te-tunnel-id"; 532 } 533 } 534 } 535 } 536 } 537 } 538 // -------------------------- GROUPINGS --------------------------- 539 grouping p2mp-policy-key { 541 leaf root-address { 542 type inet:ip-address; 543 description 544 "Root address of the tree."; 545 } 547 leaf tree-id { 548 type uint32; 549 description 550 "Tree ID uniquely indentifies a tunnel in the root, 551 this also represent a spefic constraint. Also known as 552 color and/or p2mp-id"; 553 } 555 } 557 grouping leaf-list-key { 558 leaf leaf-address{ 559 type inet:ip-address; 560 description 561 "leaf address of the this p2mp-tree"; 562 } 563 } 565 grouping candidate-path-key { 567 leaf protocol-id { 568 type enumeration { 569 enum pcep { value 10; } 570 enum bgp-sr-policy { value 20; } 571 enum configuration { value 30; } 573 } 574 description 575 "Protocol-Origin of a candidate path is an 8-bit value 576 which identifies the component or protocol that originates 577 or signals the candidate path."; 578 } 580 leaf originator { 581 type inet:ip-address; 582 description 583 "128 bit value, IPv4 address are encoded in lower 32 bit."; 584 } 586 leaf discriminator { 587 type uint32; 588 description 589 "The Discriminator is a 32 bit value associated 590 with a candidate path that uniquely identifies 591 it within the context of an SR Policy from a 592 specific Protocol-Origin"; 593 } 594 } 596 grouping replication-segment-key { 597 leaf node-address { 598 type inet:ipv4-address; 599 description 600 "Node address for which this replication policy is used."; 601 } 603 leaf replication-id { 604 type uint32; 605 description 606 "Each LSP per candidate path."; 607 } 608 } 610 grouping downstream-key { 611 leaf downstream-index { 612 type uint32; 613 description 614 "Nexthop group or downstream replication node index"; 615 } 616 } 618 grouping sid-list-key { 619 leaf index { 620 type uint32 { 621 range 1..2; 622 } 623 } 625 } 627 grouping sr-policy-key { 628 leaf replication-sid { 629 type uint32 { 630 range 1..12; 631 } 632 description 633 "Index for push-label."; 634 } 635 } 636 } 638 6. IANA Consideration 640 None 642 7. Security Considerations 644 TBD 646 8. Acknowledgments 648 9. References 650 9.1. Normative References 652 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 653 Requirement Levels", BCP 14, RFC 2119, 654 DOI 10.17487/RFC2119, March 1997, 655 . 657 9.2. Informative References 659 [draft-ietf-pim-sr-p2mp-policy] 660 "D. Yoyer, C. Filsfils, R.Prekh, H.bidgoli, Z. Zhang, 661 "draft-voyer-pim-sr-p2mp-policy"", October 2019. 663 [draft-ietf-spring-segment-routing-policy] 664 . 666 [draft-ietf-spring-sr-replication-segment] 667 "D. Yoyer, C. Filsfils, R.Prekh, H.bidgoli, Z. Zhang, 668 "draft-voyer-pim-sr-p2mp-policy "draft-voyer-spring-sr- 669 replication-segment"", July 2020. 671 Authors' Addresses 673 Hooman Bidgoli (editor) 674 Nokia 675 Ottawa 676 Canada 678 Email: hooman.bidgoli@nokia.com 680 Daniel Voyer 681 Bell Canada 682 Montreal 683 Canada 685 Email: daniel.yover@bell.ca 687 Rishabh Parekh 688 Cisco System 689 San Jose 690 USA 692 Email: riparekh@cisco.com 694 Tarek Saad 695 Juniper Networks 696 Ottawa 697 Canada 699 Email: tsaad@juniper.com 701 Tanmoy Kundu 702 Nokia 703 Mountain View 704 US 706 Email: tanmoy.kundu@nokia.com