idnits 2.17.1 draft-ietf-isis-sr-yang-07.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 140 has weird spacing: '...r-bound uin...' == Line 141 has weird spacing: '...r-bound uin...' == Line 152 has weird spacing: '...roup-id uin...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (January 9, 2020) is 1569 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 (-30) exists of draft-ietf-spring-sr-yang-15 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IS-IS Working Group S. Litkowski 3 Internet-Draft Cisco Systems 4 Intended status: Standards Track Y. Qu 5 Expires: July 12, 2020 Futurewei 6 P. Sarkar 7 Individual 8 I. Chen 9 The MITRE Corporation 10 J. Tantsura 11 Apstra 12 January 9, 2020 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-07 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage IS-IS Segment Routing. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on July 12, 2020. 39 Copyright Notice 41 Copyright (c) 2020 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (https://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 58 3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 59 4. IS-IS Segment Routing . . . . . . . . . . . . . . . . . . . . 3 60 5. IS-IS Segment Routing configuration . . . . . . . . . . . . . 6 61 5.1. Segment Routing activation . . . . . . . . . . . . . . . 6 62 5.2. Advertising mapping server policy . . . . . . . . . . . . 6 63 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 6 64 6. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 6 65 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 66 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 67 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 68 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 69 11. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 22 70 11.1. From version -03 to version -04 . . . . . . . . . . . . 22 71 11.2. From version -02 to version -03 . . . . . . . . . . . . 22 72 11.3. From isis-sr document version -01 to version -02 . . . . 22 73 11.4. From isis-sr document version -00 to version -01 . . . . 23 74 11.5. From isis document version -12 to isis-sr document 75 version -00 . . . . . . . . . . . . . . . . . . . . . . 23 76 11.6. From isis document version -12 to version -13 . . . . . 23 77 11.7. From isis document version -09 to version -11 . . . . . 23 78 11.8. From isis document version -08 to version -09 . . . . . 23 79 11.9. From isis document version -07 to version -08 . . . . . 23 80 12. Normative References . . . . . . . . . . . . . . . . . . . . 23 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 83 1. Overview 85 YANG [RFC6020] [RFC7950] is a data definition language used to define 86 the contents of a conceptual data store that allows networked devices 87 to be managed using NETCONF [RFC6241]. YANG is proving relevant 88 beyond its initial confines, as bindings to other interfaces (e.g., 89 ReST) and encodings other than XML (e.g., JSON) are being defined. 90 Furthermore, YANG data models can be used as the basis for 91 implementation of other interfaces, such as CLI and programmatic 92 APIs. 94 This document defines a YANG data model that can be used to configure 95 and manage IS-IS Segment Routing [RFC8667] and it is an augmentation 96 to the IS-IS YANG data model. 98 The YANG modules in this document conform to the Network Management 99 Datastore Architecture (NMDA) [RFC8342]. 101 2. Requirements Language 103 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 104 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 105 "OPTIONAL" in this document are to be interpreted as described in BCP 106 14 [RFC2119] [RFC8174] when, and only when, they appear in all 107 capitals, as shown here. 109 3. Tree Diagrams 111 This document uses the graphical representation of data models 112 defined in [RFC8340]. 114 4. IS-IS Segment Routing 116 This document defines a model for IS-IS Segment Routing feature. It 117 is an augmentation of the IS-IS base model. 119 The IS-IS SR YANG module requires support for the base segment 120 routing module [I-D.ietf-spring-sr-yang], which defines the global 121 segment routing configuration independent of any specific routing 122 protocol configuration, and support of IS-IS base model 123 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 124 and state. 126 The figure below describes the overall structure of the isis-sr YANG 127 module: 129 module: ietf-isis-sr 130 augment /rt:routing/rt:control-plane-protocols 131 /rt:control-plane-protocol/isis:isis: 132 +--rw segment-routing 133 | +--rw enabled? boolean 134 | +--rw bindings 135 | +--rw advertise 136 | | +--rw policies* string 137 | +--rw receive? boolean 138 +--rw protocol-srgb {sr-mpls:protocol-srgb}? 139 +--rw srgb* [lower-bound upper-bound] 140 +--rw lower-bound uint32 141 +--rw upper-bound uint32 142 augment /rt:routing/rt:control-plane-protocols 143 /rt:control-plane-protocol/isis:isis/isis:interfaces 144 /isis:interface: 145 +--rw segment-routing 146 +--rw adjacency-sid 147 +--rw adj-sids* [value] 148 | +--rw value-type? enumeration 149 | +--rw value uint32 150 | +--rw protected? boolean 151 +--rw advertise-adj-group-sid* [group-id] 152 | +--rw group-id uint32 153 +--rw advertise-protection? enumeration 154 augment /rt:routing/rt:control-plane-protocols 155 /rt:control-plane-protocol/isis:isis/isis:interfaces 156 /isis:interface/isis:fast-reroute: 157 +--rw ti-lfa {ti-lfa}? 158 +--rw enable? boolean 159 augment /rt:routing/rt:control-plane-protocols 160 /rt:control-plane-protocol/isis:isis/isis:interfaces 161 /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: 162 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 163 augment /rt:routing/rt:control-plane-protocols 164 /rt:control-plane-protocol/isis:isis/isis:interfaces 165 /isis:interface/isis:adjacencies/isis:adjacency: 166 +--ro adjacency-sid* [value] 167 +--ro af? iana-rt-types:address-family 168 +--ro value uint32 169 +--ro weight? uint8 170 +--ro protection-requested? boolean 171 augment /rt:routing/rt:control-plane-protocols 172 /rt:control-plane-protocol/isis:isis/isis:database 173 /isis:levels/isis:lsp/isis:router-capabilities: 174 +--ro sr-capability 175 | +--ro sr-capability 176 | | +--ro sr-capability-bits* identityref 177 | +--ro global-blocks 178 | +--ro global-block* [] 179 | +--ro range-size? uint32 180 | +--ro sid-sub-tlv 181 | +--ro sid? uint32 182 +--ro sr-algorithms 183 | +--ro sr-algorithm* uint8 184 +--ro local-blocks 185 | +--ro local-block* [] 186 | +--ro range-size? uint32 187 | +--ro sid-sub-tlv 188 | +--ro sid? uint32 189 +--ro srms-preference 190 +--ro preference? uint8 191 augment /rt:routing/rt:control-plane-protocols 192 /rt:control-plane-protocol/isis:isis/isis:database/isis:levels 193 /isis:lsp/isis:extended-is-neighbor/isis:neighbor: 195 +--ro sid-list* [value] 196 +--ro adj-sid-flags 197 | +--ro bits* identityref 198 +--ro weight? uint8 199 +--ro neighbor-id? isis:system-id 200 +--ro value uint32 201 augment /rt:routing/rt:control-plane-protocols 202 /rt:control-plane-protocol/isis:isis/isis:database 203 /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 204 +--ro sid-list* [value] 205 +--ro adj-sid-flags 206 | +--ro bits* identityref 207 +--ro weight? uint8 208 +--ro neighbor-id? isis:system-id 209 +--ro value uint32 210 augment /rt:routing/rt:control-plane-protocols 211 /rt:control-plane-protocol/isis:isis/isis:database 212 /isis:levels/isis:lsp/isis:extended-ipv4-reachability 213 /isis:prefixes: 214 +--ro sid-list* [value] 215 +--ro perfix-sid-flags 216 | +--ro bits* identityref 217 +--ro algorithm? uint8 218 +--ro value uint32 219 augment /rt:routing/rt:control-plane-protocols 220 /rt:control-plane-protocol/isis:isis/isis:database 221 /isis:levels/isis:lsp/isis:mt-extended-ipv4-reachability 222 /isis:prefixes: 223 +--ro sid-list* [value] 224 +--ro perfix-sid-flags 225 | +--ro bits* identityref 226 +--ro algorithm? uint8 227 +--ro value uint32 228 augment /rt:routing/rt:control-plane-protocols 229 /rt:control-plane-protocol/isis:isis/isis:database 230 /isis:levels/isis:lsp/isis:ipv6-reachability/isis:prefixes: 231 +--ro sid-list* [value] 232 +--ro perfix-sid-flags 233 | +--ro bits* identityref 234 +--ro algorithm? uint8 235 +--ro value uint32 236 augment /rt:routing/rt:control-plane-protocols 237 /rt:control-plane-protocol/isis:isis/isis:database 238 /isis:levels/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: 239 +--ro sid-list* [value] 240 +--ro perfix-sid-flags 241 | +--ro bits* identityref 242 +--ro algorithm? uint8 243 +--ro value uint32 244 augment /rt:routing/rt:control-plane-protocols 245 /rt:control-plane-protocol/isis:isis/isis:database 246 /isis:levels/isis:lsp: 247 +--ro segment-routing-bindings* [fec range] 248 +--ro fec string 249 +--ro range uint16 250 +--ro sid-binding-flags 251 | +--ro bits* identityref 252 +--ro binding 253 +--ro prefix-sid 254 +--ro sid-list* [value] 255 +--ro perfix-sid-flags 256 | +--ro bits* identityref 257 +--ro algorithm? uint8 258 +--ro value uint32 260 5. IS-IS Segment Routing configuration 262 5.1. Segment Routing activation 264 Activation of segment-routing IS-IS is done by setting the "enable" 265 leaf to true. This triggers advertisement of segment-routing 266 extensions based on the configuration parameters that have been setup 267 using the base segment routing module. 269 5.2. Advertising mapping server policy 271 The base segment routing module defines mapping server policies. By 272 default, IS-IS will not advertise nor receive any mapping server 273 entry. The IS-IS segment-routing module allows to advertise one or 274 multiple mapping server policies through the "bindings/advertise/ 275 policies" leaf-list. The "bindings/receive" leaf allows to enable 276 the reception of mapping server entries. 278 5.3. IP Fast reroute 280 IS-IS SR model augments the fast-reroute container under interface. 281 It brings the ability to activate TI-LFA (topology independent LFA) 282 and also enhances remote LFA to use segment-routing tunneling instead 283 of LDP. 285 6. IS-IS Segment Routing YANG Module 287 file "ietf-isis-sr@2020-01-09.yang" 288 module ietf-isis-sr { 289 namespace "urn:ietf:params:xml:ns:" 290 + "yang:ietf-isis-sr"; 292 prefix isis-sr; 294 import ietf-routing { 295 prefix "rt"; 296 } 298 import ietf-segment-routing-common { 299 prefix "sr-cmn"; 300 } 302 import ietf-segment-routing-mpls { 303 prefix "sr-mpls"; 304 } 306 import ietf-isis { 307 prefix "isis"; 308 } 310 import iana-routing-types { 311 prefix "iana-rt-types"; 312 } 314 organization 315 "IETF LSR - LSR Working Group"; 317 contact 318 "WG List: 320 Editor: Stephane Litkowski 321 323 Author: Acee Lindem 324 325 Author: Yingzhen Qu 326 327 Author: Pushpasis Sarkar 328 329 Author: Ing-Wher Chen 330 331 Author: Jeff Tantsura 332 333 "; 335 description 336 "The YANG module defines a generic configuration model for 337 Segment routing ISIS extensions common across all of the vendor 338 implementations 339 Copyright (c) 2020 IETF Trust and the persons identified as 340 authors of the code. All rights reserved. 342 Redistribution and use in source and binary forms, with or 343 without modification, is permitted pursuant to, and subject 344 to the license terms contained in, the Simplified BSD License 345 set forth in Section 4.c of the IETF Trust's Legal Provisions 346 Relating to IETF Documents 347 (http://trustee.ietf.org/license-info). 349 This version of this YANG module is part of RFC XXXX; 350 see the RFC itself for full legal notices."; 352 reference "RFC XXXX"; 354 revision 2020-01-09 { 355 description 356 "Initial revision."; 357 reference "RFC XXXX"; 358 } 360 /* Identities */ 361 identity sr-capability { 362 description 363 "Base identity for ISIS SR-Capabilities sub-TLV flgs"; 364 } 366 identity mpls-ipv4 { 367 base sr-capability; 368 description 369 "If set, then the router is capable of 370 processing SR MPLS encapsulated IPv4 packets 371 on all interfaces."; 372 } 374 identity mpls-ipv6 { 375 base sr-capability; 376 description 377 "If set, then the router is capable of 378 processing SR MPLS encapsulated IPv6 packets 379 on all interfaces."; 380 } 382 identity prefix-sid-bit { 383 description 384 "Base identity for prefix sid sub-tlv bits."; 385 } 386 identity r-bit { 387 base prefix-sid-bit; 388 description 389 "Re-advertisement Flag."; 390 } 392 identity n-bit { 393 base prefix-sid-bit; 394 description 395 "Node-SID Flag."; 396 } 398 identity p-bit { 399 base prefix-sid-bit; 400 description 401 "No-PHP (No Penultimate Hop-Popping) Flag."; 402 } 404 identity e-bit { 405 base prefix-sid-bit; 406 description 407 "Explicit NULL Flag."; 408 } 410 identity v-bit { 411 base prefix-sid-bit; 412 description 413 "Value Flag."; 414 } 416 identity l-bit { 417 base prefix-sid-bit; 418 description 419 "Local Flag."; 420 } 422 identity adj-sid-bit { 423 description 424 "Base identity for adj sid sub-tlv bits."; 425 } 427 identity f-bit { 428 base adj-sid-bit; 429 description 430 "Address-Family flag."; 431 } 433 identity b-bit { 434 base adj-sid-bit; 435 description 436 "Backup flag."; 437 } 439 identity vi-bit { 440 base adj-sid-bit; 441 description 442 "Value/Index flag."; 443 } 445 identity lo-bit { 446 base adj-sid-bit; 447 description 448 "Local flag."; 449 } 451 identity s-bit { 452 base adj-sid-bit; 453 description 454 "Group flag."; 455 } 457 identity pe-bit { 458 base adj-sid-bit; 459 description 460 "Persistent flag."; 461 } 463 identity sid-binding-bit { 464 description 465 "Base identity for sid binding tlv bits."; 466 } 468 identity af-bit { 469 base sid-binding-bit; 470 description 471 "Address-Family flag."; 472 } 474 identity m-bit { 475 base sid-binding-bit; 476 description 477 "Mirror Context flag."; 478 } 480 identity sf-bit { 481 base sid-binding-bit; 482 description 483 "S flag. If set, the binding label tlv should be flooded 484 across the entire routing domain."; 485 } 487 identity d-bit { 488 base sid-binding-bit; 489 description 490 "Leaking flag."; 491 } 493 identity a-bit { 494 base sid-binding-bit; 495 description 496 "Attached flag."; 497 } 499 /* Features */ 501 feature remote-lfa-sr { 502 description 503 "Enhance rLFA to use SR path."; 504 } 506 feature ti-lfa { 507 description 508 "Enhance IPFRR with ti-lfa 509 support"; 510 } 512 /* Groupings */ 514 grouping sid-sub-tlv { 515 description "SID/Label sub-TLV grouping."; 516 container sid-sub-tlv { 517 description 518 "Used to advertise the SID/Label associated with a 519 prefix or adjacency."; 520 leaf sid { 521 type uint32; 522 description 523 "Segment Identifier (SID) - A 20 bit label or 524 32 bit SID."; 525 } 526 } 527 } 528 grouping sr-capability { 529 description 530 "SR capability grouping."; 531 container sr-capability { 532 description 533 "Segment Routing capability."; 534 container sr-capability { 535 leaf-list sr-capability-bits { 536 type identityref { 537 base sr-capability; 538 } 539 description "SR Capbility sub-tlv flags list."; 540 } 541 description 542 "SR Capability Flags."; 543 } 544 container global-blocks { 545 description 546 "Segment Routing Global Blocks."; 547 list global-block { 548 description "Segment Routing Global Block."; 549 leaf range-size { 550 type uint32; 551 description "The SID range."; 552 } 553 uses sid-sub-tlv; 554 } 555 } 556 } 557 } 559 grouping sr-algorithm { 560 description 561 "SR algorithm grouping."; 562 container sr-algorithms { 563 description "All SR algorithms."; 564 leaf-list sr-algorithm { 565 type uint8; 566 description 567 "The Segment Routing (SR) algorithms that the router is 568 currently using."; 569 } 570 } 571 } 573 grouping srlb { 574 description 575 "SR Local Block grouping."; 577 container local-blocks { 578 description "List of SRLBs."; 579 list local-block { 580 description "Segment Routing Local Block."; 581 leaf range-size { 582 type uint32; 583 description "The SID range."; 584 } 585 uses sid-sub-tlv; 586 } 587 } 588 } 590 grouping srms-preference { 591 description "The SRMS preference TLV is used to advertise 592 a preference associated with the node that acts 593 as an SR Mapping Server."; 594 container srms-preference { 595 description "SRMS Preference TLV."; 596 leaf preference { 597 type uint8 { 598 range "0 .. 255"; 599 } 600 description "SRMS preference TLV, vlaue from 0 to 255."; 601 } 602 } 603 } 605 grouping adjacency-state { 606 description 607 "This group will extend adjacency state."; 608 list adjacency-sid { 609 key value; 610 config false; 611 leaf af { 612 type iana-rt-types:address-family; 613 description 614 "Address-family associated with the 615 segment ID"; 616 } 617 leaf value { 618 type uint32; 619 description 620 "Value of the Adj-SID."; 621 } 622 leaf weight { 623 type uint8; 624 description 625 "Weight associated with 626 the adjacency SID."; 627 } 628 leaf protection-requested { 629 type boolean; 630 description 631 "Describe if the adjacency SID 632 must be protected."; 633 } 634 description 635 "List of adjacency Segment IDs."; 636 } 637 } 639 grouping prefix-segment-id { 640 description 641 "This group defines segment routing extensions 642 for prefixes."; 644 list sid-list { 645 key value; 647 container perfix-sid-flags { 648 leaf-list bits { 649 type identityref { 650 base prefix-sid-bit; 651 } 652 description 653 "Prefix SID Sub-TLV flag bits list."; 654 } 655 description 656 "Describes flags associated with the 657 segment ID."; 658 } 660 leaf algorithm { 661 type uint8; 662 description 663 "Algorithm to be used for path computation."; 664 } 665 leaf value { 666 type uint32; 667 description 668 "Value of the prefix-SID."; 669 } 670 description 671 "List of segments."; 672 } 674 } 676 grouping adjacency-segment-id { 677 description 678 "This group defines segment routing extensions 679 for adjacencies."; 681 list sid-list { 682 key value; 684 container adj-sid-flags { 685 leaf-list bits { 686 type identityref { 687 base adj-sid-bit; 688 } 689 description "Adj sid sub-tlv flags list."; 690 } 691 description "Adj-sid sub-tlv flags."; 692 } 694 leaf weight { 695 type uint8; 696 description 697 "The value represents the weight of the Adj-SID 698 for the purpose of load balancing."; 699 } 700 leaf neighbor-id { 701 type isis:system-id; 702 description 703 "Describes the system ID of the neighbor 704 associated with the SID value. This is only 705 used on LAN adjacencies."; 706 } 707 leaf value { 708 type uint32; 709 description 710 "Value of the Adj-SID."; 711 } 712 description 713 "List of segments."; 714 } 715 } 717 grouping segment-routing-binding-tlv { 718 list segment-routing-bindings { 719 key "fec range"; 721 leaf fec { 722 type string; 723 description 724 "IP (v4 or v6) range to be bound to SIDs."; 725 } 727 leaf range { 728 type uint16; 729 description 730 "Describes number of elements to assign 731 a binding to."; 732 } 734 container sid-binding-flags { 735 leaf-list bits { 736 type identityref { 737 base sid-binding-bit; 738 } 739 description 740 "SID Binding TLV flag bits list."; 741 } 742 description 743 "Binding flags."; 744 } 746 container binding { 747 container prefix-sid { 748 uses prefix-segment-id; 749 description 750 "Binding prefix SID to the range."; 751 } 752 description 753 "Bindings associated with the range."; 754 } 756 description 757 "This container describes list of SID/Label bindings. 758 ISIS reference is TLV 149."; 759 } 760 description 761 "Defines binding TLV for database."; 762 } 764 /* Cfg */ 766 augment "/rt:routing/" + 767 "rt:control-plane-protocols/rt:control-plane-protocol"+ 768 "/isis:isis" { 769 when "/rt:routing/rt:control-plane-protocols/"+ 770 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 771 description 772 "This augment ISIS routing protocol when used"; 773 } 774 description 775 "This augments ISIS protocol configuration 776 with segment routing."; 778 uses sr-mpls:sr-controlplane; 779 container protocol-srgb { 780 if-feature sr-mpls:protocol-srgb; 781 uses sr-cmn:srgb; 782 description 783 "Per-protocol SRGB."; 784 } 785 } 787 augment "/rt:routing/" + 788 "rt:control-plane-protocols/rt:control-plane-protocol"+ 789 "/isis:isis/isis:interfaces/isis:interface" { 790 when "/rt:routing/rt:control-plane-protocols/"+ 791 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 792 description 793 "This augment ISIS routing protocol when used"; 794 } 795 description 796 "This augments ISIS protocol configuration 797 with segment routing."; 799 uses sr-mpls:igp-interface; 800 } 802 augment "/rt:routing/" + 803 "rt:control-plane-protocols/rt:control-plane-protocol"+ 804 "/isis:isis/isis:interfaces/isis:interface"+ 805 "/isis:fast-reroute" { 806 when "/rt:routing/rt:control-plane-protocols/"+ 807 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 808 description 809 "This augment ISIS routing protocol when used"; 810 } 811 description 812 "This augments ISIS IP FRR with TILFA."; 814 container ti-lfa { 815 if-feature ti-lfa; 816 leaf enable { 817 type boolean; 818 description 819 "Enables TI-LFA computation."; 820 } 821 description 822 "TILFA configuration."; 823 } 824 } 826 augment "/rt:routing/" + 827 "rt:control-plane-protocols/rt:control-plane-protocol"+ 828 "/isis:isis/isis:interfaces/isis:interface"+ 829 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 830 when "/rt:routing/rt:control-plane-protocols/"+ 831 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 832 description 833 "This augment ISIS routing protocol when used"; 834 } 835 description 836 "This augments ISIS remoteLFA config with 837 use of segment-routing path."; 839 leaf use-segment-routing-path { 840 if-feature remote-lfa-sr; 841 type boolean; 842 description 843 "force remote LFA to use segment routing 844 path instead of LDP path."; 845 } 846 } 848 /* Operational states */ 850 augment "/rt:routing/" + 851 "rt:control-plane-protocols/rt:control-plane-protocol"+ 852 "/isis:isis/isis:interfaces/isis:interface" + 853 "/isis:adjacencies/isis:adjacency" { 854 when "/rt:routing/rt:control-plane-protocols/"+ 855 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 856 description 857 "This augment ISIS routing protocol when used"; 858 } 859 description 860 "This augments ISIS protocol configuration 861 with segment routing."; 863 uses adjacency-state; 864 } 865 augment "/rt:routing/" + 866 "rt:control-plane-protocols/rt:control-plane-protocol"+ 867 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 868 "/isis:router-capabilities" { 869 when "/rt:routing/rt:control-plane-protocols/"+ 870 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 871 description 872 "This augment ISIS routing protocol when used"; 873 } 874 description 875 "This augments ISIS protocol LSDB router capability."; 877 uses sr-capability; 878 uses sr-algorithm; 879 uses srlb; 880 uses srms-preference; 881 } 883 augment "/rt:routing/" + 884 "rt:control-plane-protocols/rt:control-plane-protocol"+ 885 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 886 "/isis:extended-is-neighbor/isis:neighbor" { 887 when "/rt:routing/rt:control-plane-protocols/"+ 888 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 889 description 890 "This augment ISIS routing protocol when used"; 891 } 892 description 893 "This augments ISIS protocol LSDB neighbor."; 894 uses adjacency-segment-id; 895 } 897 augment "/rt:routing/" + 898 "rt:control-plane-protocols/rt:control-plane-protocol"+ 899 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 900 "/isis:mt-is-neighbor/isis:neighbor" { 901 when "/rt:routing/rt:control-plane-protocols/"+ 902 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 903 description 904 "This augment ISIS routing protocol when used"; 905 } 906 description 907 "This augments ISIS protocol LSDB neighbor."; 908 uses adjacency-segment-id; 909 } 911 augment "/rt:routing/" + 912 "rt:control-plane-protocols/rt:control-plane-protocol"+ 913 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 914 "/isis:extended-ipv4-reachability/isis:prefixes" { 915 when "/rt:routing/rt:control-plane-protocols/"+ 916 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 917 description 918 "This augment ISIS routing protocol when used"; 919 } 920 description 921 "This augments ISIS protocol LSDB prefix."; 922 uses prefix-segment-id; 923 } 925 augment "/rt:routing/" + 926 "rt:control-plane-protocols/rt:control-plane-protocol"+ 927 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 928 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 929 when "/rt:routing/rt:control-plane-protocols/"+ 930 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 931 description 932 "This augment ISIS routing protocol when used"; 933 } 934 description 935 "This augments ISIS protocol LSDB prefix."; 936 uses prefix-segment-id; 937 } 939 augment "/rt:routing/" + 940 "rt:control-plane-protocols/rt:control-plane-protocol"+ 941 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 942 "/isis:ipv6-reachability/isis:prefixes" { 943 when "/rt:routing/rt:control-plane-protocols/"+ 944 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 945 description 946 "This augment ISIS routing protocol when used"; 947 } 948 description 949 "This augments ISIS protocol LSDB prefix."; 950 uses prefix-segment-id; 951 } 953 augment "/rt:routing/" + 954 "rt:control-plane-protocols/rt:control-plane-protocol"+ 955 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 956 "/isis:mt-ipv6-reachability/isis:prefixes" { 957 when "/rt:routing/rt:control-plane-protocols/"+ 958 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 959 description 960 "This augment ISIS routing protocol when used"; 962 } 963 description 964 "This augments ISIS protocol LSDB prefix."; 965 uses prefix-segment-id; 966 } 968 augment "/rt:routing/" + 969 "rt:control-plane-protocols/rt:control-plane-protocol"+ 970 "/isis:isis/isis:database/isis:levels/isis:lsp" { 971 when "/rt:routing/rt:control-plane-protocols/"+ 972 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 973 description 974 "This augment ISIS routing protocol when used"; 975 } 976 description 977 "This augments ISIS protocol LSDB."; 978 uses segment-routing-binding-tlv; 979 } 981 /* Notifications */ 983 } 984 986 7. Security Considerations 988 Configuration and state data defined in this document are designed to 989 be accessed via the NETCONF protocol [RFC6241]. 991 As IS-IS is an IGP protocol (critical piece of the network), ensuring 992 stability and security of the protocol is mandatory for the network 993 service. 995 Authors recommends to implement NETCONF access control model 996 ([RFC6536]) to restrict access to all or part of the configuration to 997 specific users. 999 8. Contributors 1001 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 1002 their major contributions to the draft. 1004 9. Acknowledgements 1006 MITRE has approved this document for Public Release, Distribution 1007 Unlimited, with Public Release Case Number 19-3033. 1009 10. IANA Considerations 1011 The IANA is requested to assign two new URIs from the IETF XML 1012 registry ([RFC3688]). Authors are suggesting the following URI: 1014 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 1015 Registrant Contact: IS-IS WG 1016 XML: N/A, the requested URI is an XML namespace 1018 This document also requests one new YANG module name in the YANG 1019 Module Names registry ([RFC6020]) with the following suggestion : 1021 name: ietf-isis-sr 1022 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 1023 prefix: isis-sr 1024 reference: RFC XXXX 1026 11. Change log for ietf-isis-sr YANG module 1028 11.1. From version -03 to version -04 1030 o Fixed yang module indentations. 1032 11.2. From version -02 to version -03 1034 o Change address-family type according to routing types. 1036 11.3. From isis-sr document version -01 to version -02 1038 o NMDA compliancy. 1040 o Added SRLB in configuration and LSDB. 1042 o Added SR capability in LSDB. 1044 o Added SR algorithms in LSDB. 1046 o Added SRMS preference in LSDB. 1048 o Alignment with iana-rt-types module. 1050 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1051 13. 1053 11.4. From isis-sr document version -00 to version -01 1055 o Added P-Flag in Adj-SID. 1057 11.5. From isis document version -12 to isis-sr document version -00 1059 o Separate document for IS-IS SR extensions. 1061 11.6. From isis document version -12 to version -13 1063 o Align with new segment routing common module. 1065 11.7. From isis document version -09 to version -11 1067 o Fixed XPATH in 'when' expressions. 1069 11.8. From isis document version -08 to version -09 1071 o Align to draft-ietf-netmod-routing-cfg-23. 1073 11.9. From isis document version -07 to version -08 1075 o Align to draft-ietf-netmod-routing-cfg-21. 1077 12. Normative References 1079 [I-D.ietf-isis-yang-isis-cfg] 1080 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1081 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1082 isis-yang-isis-cfg-42 (work in progress), October 2019. 1084 [I-D.ietf-spring-sr-yang] 1085 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1086 Data Model for Segment Routing", draft-ietf-spring-sr- 1087 yang-15 (work in progress), December 2017. 1089 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1090 Requirement Levels", BCP 14, RFC 2119, 1091 DOI 10.17487/RFC2119, March 1997, 1092 . 1094 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1095 DOI 10.17487/RFC3688, January 2004, 1096 . 1098 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1099 the Network Configuration Protocol (NETCONF)", RFC 6020, 1100 DOI 10.17487/RFC6020, October 2010, 1101 . 1103 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1104 and A. Bierman, Ed., "Network Configuration Protocol 1105 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1106 . 1108 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1109 Protocol (NETCONF) Access Control Model", RFC 6536, 1110 DOI 10.17487/RFC6536, March 2012, 1111 . 1113 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1114 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1115 . 1117 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1118 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1119 May 2017, . 1121 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1122 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1123 . 1125 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1126 and R. Wilton, "Network Management Datastore Architecture 1127 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1128 . 1130 [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., 1131 Bashandy, A., Gredler, H., and B. Decraene, "IS-IS 1132 Extensions for Segment Routing", RFC 8667, 1133 DOI 10.17487/RFC8667, December 2019, 1134 . 1136 Authors' Addresses 1138 Stephane Litkowski 1139 Cisco Systems 1141 Email: slitkows.ietf@gmail.com 1142 Yinghzen Qu 1143 Futurewei 1145 Email: yingzhen.qu@futurewei.com 1147 Pushpasis Sarkar 1148 Individual 1150 Email: pushpasis.ietf@gmail.com 1152 Ing-Wher Chen 1153 The MITRE Corporation 1155 Email: ingwherchen@mitre.org 1157 Jeff Tantsura 1158 Apstra 1160 Email: jefftant.ietf@gmail.com