idnits 2.17.1 draft-ietf-isis-sr-yang-08.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 (July 12, 2020) is 1382 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: January 13, 2021 Futurewei 6 P. Sarkar 7 Individual 8 I. Chen 9 The MITRE Corporation 10 J. Tantsura 11 Apstra 12 July 12, 2020 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-08 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 January 13, 2021. 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 . . . . . . . . . . . . . . . . . . . . . . . . 22 67 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 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 . . . . 23 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 . . . . . . . . . . . . . . . . . . . . . . . 25 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-07-12.yang" 288 module ietf-isis-sr { 289 yang-version 1.1; 290 namespace "urn:ietf:params:xml:ns:" 291 + "yang:ietf-isis-sr"; 292 prefix isis-sr; 294 import ietf-routing { 295 prefix "rt"; 296 reference "RFC 8349 - A YANG Data Model for Routing 297 Management (NMDA Version)"; 298 } 300 import ietf-segment-routing-common { 301 prefix "sr-cmn"; 302 } 304 import ietf-segment-routing-mpls { 305 prefix "sr-mpls"; 306 } 308 import ietf-isis { 309 prefix "isis"; 310 } 312 import iana-routing-types { 313 prefix "iana-rt-types"; 314 reference "RFC 8294 - Common YANG Data Types for the 315 Routing Area"; 316 } 318 organization 319 "IETF LSR - LSR Working Group"; 321 contact 322 "WG List: 324 Editor: Stephane Litkowski 325 327 Author: Acee Lindem 328 329 Author: Yingzhen Qu 330 331 Author: Pushpasis Sarkar 332 333 Author: Ing-Wher Chen 334 335 Author: Jeff Tantsura 336 337 "; 339 description 340 "The YANG module defines a generic configuration model for 341 Segment routing ISIS extensions common across all of the vendor 342 implementations. 344 This YANG model conforms to the Network Management 345 Datastore Architecture (NMDA) as described in RFC 8242. 347 Copyright (c) 2020 IETF Trust and the persons identified as 348 authors of the code. All rights reserved. 350 Redistribution and use in source and binary forms, with or 351 without modification, is permitted pursuant to, and subject to 352 the license terms contained in, the Simplified BSD License set 353 forth in Section 4.c of the IETF Trust's Legal Provisions 354 Relating to IETF Documents 355 (https://trustee.ietf.org/license-info). 357 This version of this YANG module is part of RFC XXXX 358 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 359 for full legal notices. 361 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 362 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 363 'MAY', and 'OPTIONAL' in this document are to be interpreted as 364 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 365 they appear in all capitals, as shown here. 367 This version of this YANG module is part of RFC XXXX; 368 see the RFC itself for full legal notices."; 370 reference "RFC XXXX"; 372 revision 2020-07-12 { 373 description 374 "Initial revision."; 375 reference "RFC XXXX"; 376 } 378 /* Identities */ 379 identity sr-capability { 380 description 381 "Base identity for ISIS SR-Capabilities sub-TLV flgs"; 382 } 384 identity mpls-ipv4 { 385 base sr-capability; 386 description 387 "If set, then the router is capable of 388 processing SR MPLS encapsulated IPv4 packets 389 on all interfaces."; 390 } 392 identity mpls-ipv6 { 393 base sr-capability; 394 description 395 "If set, then the router is capable of 396 processing SR MPLS encapsulated IPv6 packets 397 on all interfaces."; 398 } 400 identity prefix-sid-bit { 401 description 402 "Base identity for prefix sid sub-tlv bits."; 403 } 405 identity r-bit { 406 base prefix-sid-bit; 407 description 408 "Re-advertisement Flag."; 409 } 411 identity n-bit { 412 base prefix-sid-bit; 413 description 414 "Node-SID Flag."; 415 } 417 identity p-bit { 418 base prefix-sid-bit; 419 description 420 "No-PHP (No Penultimate Hop-Popping) Flag."; 421 } 423 identity e-bit { 424 base prefix-sid-bit; 425 description 426 "Explicit NULL Flag."; 427 } 429 identity v-bit { 430 base prefix-sid-bit; 431 description 432 "Value Flag."; 433 } 434 identity l-bit { 435 base prefix-sid-bit; 436 description 437 "Local Flag."; 438 } 440 identity adj-sid-bit { 441 description 442 "Base identity for adj sid sub-tlv bits."; 443 } 445 identity f-bit { 446 base adj-sid-bit; 447 description 448 "Address-Family flag."; 449 } 451 identity b-bit { 452 base adj-sid-bit; 453 description 454 "Backup flag."; 455 } 457 identity vi-bit { 458 base adj-sid-bit; 459 description 460 "Value/Index flag."; 461 } 463 identity lo-bit { 464 base adj-sid-bit; 465 description 466 "Local flag."; 467 } 469 identity s-bit { 470 base adj-sid-bit; 471 description 472 "Group flag."; 473 } 475 identity pe-bit { 476 base adj-sid-bit; 477 description 478 "Persistent flag."; 479 } 481 identity sid-binding-bit { 482 description 483 "Base identity for sid binding tlv bits."; 484 } 486 identity af-bit { 487 base sid-binding-bit; 488 description 489 "Address-Family flag."; 490 } 492 identity m-bit { 493 base sid-binding-bit; 494 description 495 "Mirror Context flag."; 496 } 498 identity sf-bit { 499 base sid-binding-bit; 500 description 501 "S flag. If set, the binding label tlv should be flooded 502 across the entire routing domain."; 503 } 505 identity d-bit { 506 base sid-binding-bit; 507 description 508 "Leaking flag."; 509 } 511 identity a-bit { 512 base sid-binding-bit; 513 description 514 "Attached flag."; 515 } 517 /* Features */ 519 feature remote-lfa-sr { 520 description 521 "Enhance rLFA to use SR path."; 522 } 524 feature ti-lfa { 525 description 526 "Enhance IPFRR with ti-lfa 527 support"; 528 } 529 /* Groupings */ 531 grouping sid-sub-tlv { 532 description "SID/Label sub-TLV grouping."; 533 container sid-sub-tlv { 534 description 535 "Used to advertise the SID/Label associated with a 536 prefix or adjacency."; 537 leaf sid { 538 type uint32; 539 description 540 "Segment Identifier (SID) - A 20 bit label or 541 32 bit SID."; 542 } 543 } 544 } 546 grouping sr-capability { 547 description 548 "SR capability grouping."; 549 container sr-capability { 550 description 551 "Segment Routing capability."; 552 container sr-capability { 553 leaf-list sr-capability-bits { 554 type identityref { 555 base sr-capability; 556 } 557 description "SR Capbility sub-tlv flags list."; 558 } 559 description 560 "SR Capability Flags."; 561 } 562 container global-blocks { 563 description 564 "Segment Routing Global Blocks."; 565 list global-block { 566 description "Segment Routing Global Block."; 567 leaf range-size { 568 type uint32; 569 description "The SID range."; 570 } 571 uses sid-sub-tlv; 572 } 573 } 574 } 575 } 576 grouping sr-algorithm { 577 description 578 "SR algorithm grouping."; 579 container sr-algorithms { 580 description "All SR algorithms."; 581 leaf-list sr-algorithm { 582 type uint8; 583 description 584 "The Segment Routing (SR) algorithms that the router is 585 currently using."; 586 } 587 } 588 } 590 grouping srlb { 591 description 592 "SR Local Block grouping."; 593 container local-blocks { 594 description "List of SRLBs."; 595 list local-block { 596 description "Segment Routing Local Block."; 597 leaf range-size { 598 type uint32; 599 description "The SID range."; 600 } 601 uses sid-sub-tlv; 602 } 603 } 604 } 606 grouping srms-preference { 607 description "The SRMS preference TLV is used to advertise 608 a preference associated with the node that acts 609 as an SR Mapping Server."; 610 container srms-preference { 611 description "SRMS Preference TLV."; 612 leaf preference { 613 type uint8 { 614 range "0 .. 255"; 615 } 616 description "SRMS preference TLV, vlaue from 0 to 255."; 617 } 618 } 619 } 621 grouping adjacency-state { 622 description 623 "This group will extend adjacency state."; 625 list adjacency-sid { 626 key value; 627 config false; 628 leaf af { 629 type iana-rt-types:address-family; 630 description 631 "Address-family associated with the 632 segment ID"; 633 } 634 leaf value { 635 type uint32; 636 description 637 "Value of the Adj-SID."; 638 } 639 leaf weight { 640 type uint8; 641 description 642 "Weight associated with 643 the adjacency SID."; 644 } 645 leaf protection-requested { 646 type boolean; 647 description 648 "Describe if the adjacency SID 649 must be protected."; 650 } 651 description 652 "List of adjacency Segment IDs."; 653 } 654 } 656 grouping prefix-segment-id { 657 description 658 "This group defines segment routing extensions 659 for prefixes."; 661 list sid-list { 662 key value; 664 container perfix-sid-flags { 665 leaf-list bits { 666 type identityref { 667 base prefix-sid-bit; 668 } 669 description 670 "Prefix SID Sub-TLV flag bits list."; 671 } 672 description 673 "Describes flags associated with the 674 segment ID."; 675 } 677 leaf algorithm { 678 type uint8; 679 description 680 "Algorithm to be used for path computation."; 681 } 682 leaf value { 683 type uint32; 684 description 685 "Value of the prefix-SID."; 686 } 687 description 688 "List of segments."; 689 } 690 } 692 grouping adjacency-segment-id { 693 description 694 "This group defines segment routing extensions 695 for adjacencies."; 697 list sid-list { 698 key value; 700 container adj-sid-flags { 701 leaf-list bits { 702 type identityref { 703 base adj-sid-bit; 704 } 705 description "Adj sid sub-tlv flags list."; 706 } 707 description "Adj-sid sub-tlv flags."; 708 } 710 leaf weight { 711 type uint8; 712 description 713 "The value represents the weight of the Adj-SID 714 for the purpose of load balancing."; 715 } 716 leaf neighbor-id { 717 type isis:system-id; 718 description 719 "Describes the system ID of the neighbor 720 associated with the SID value. This is only 721 used on LAN adjacencies."; 722 } 723 leaf value { 724 type uint32; 725 description 726 "Value of the Adj-SID."; 727 } 728 description 729 "List of segments."; 730 } 731 } 733 grouping segment-routing-binding-tlv { 734 list segment-routing-bindings { 735 key "fec range"; 737 leaf fec { 738 type string; 739 description 740 "IP (v4 or v6) range to be bound to SIDs."; 741 } 743 leaf range { 744 type uint16; 745 description 746 "Describes number of elements to assign 747 a binding to."; 748 } 750 container sid-binding-flags { 751 leaf-list bits { 752 type identityref { 753 base sid-binding-bit; 754 } 755 description 756 "SID Binding TLV flag bits list."; 757 } 758 description 759 "Binding flags."; 760 } 762 container binding { 763 container prefix-sid { 764 uses prefix-segment-id; 765 description 766 "Binding prefix SID to the range."; 767 } 768 description 769 "Bindings associated with the range."; 770 } 772 description 773 "This container describes list of SID/Label bindings. 774 ISIS reference is TLV 149."; 775 } 776 description 777 "Defines binding TLV for database."; 778 } 780 /* Cfg */ 782 augment "/rt:routing/" + 783 "rt:control-plane-protocols/rt:control-plane-protocol"+ 784 "/isis:isis" { 785 when "/rt:routing/rt:control-plane-protocols/"+ 786 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 787 description 788 "This augment ISIS routing protocol when used"; 789 } 790 description 791 "This augments ISIS protocol configuration 792 with segment routing."; 794 uses sr-mpls:sr-controlplane; 795 container protocol-srgb { 796 if-feature sr-mpls:protocol-srgb; 797 uses sr-cmn:srgb; 798 description 799 "Per-protocol SRGB."; 800 } 801 } 803 augment "/rt:routing/" + 804 "rt:control-plane-protocols/rt:control-plane-protocol"+ 805 "/isis:isis/isis:interfaces/isis:interface" { 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 protocol configuration 813 with segment routing."; 815 uses sr-mpls:igp-interface; 816 } 817 augment "/rt:routing/" + 818 "rt:control-plane-protocols/rt:control-plane-protocol"+ 819 "/isis:isis/isis:interfaces/isis:interface"+ 820 "/isis:fast-reroute" { 821 when "/rt:routing/rt:control-plane-protocols/"+ 822 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 823 description 824 "This augment ISIS routing protocol when used"; 825 } 826 description 827 "This augments ISIS IP FRR with TILFA."; 829 container ti-lfa { 830 if-feature ti-lfa; 831 leaf enable { 832 type boolean; 833 description 834 "Enables TI-LFA computation."; 835 } 836 description 837 "TILFA configuration."; 838 } 839 } 841 augment "/rt:routing/" + 842 "rt:control-plane-protocols/rt:control-plane-protocol"+ 843 "/isis:isis/isis:interfaces/isis:interface"+ 844 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 845 when "/rt:routing/rt:control-plane-protocols/"+ 846 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 847 description 848 "This augment ISIS routing protocol when used"; 849 } 850 description 851 "This augments ISIS remoteLFA config with 852 use of segment-routing path."; 854 leaf use-segment-routing-path { 855 if-feature remote-lfa-sr; 856 type boolean; 857 description 858 "force remote LFA to use segment routing 859 path instead of LDP path."; 860 } 861 } 863 /* Operational states */ 864 augment "/rt:routing/" + 865 "rt:control-plane-protocols/rt:control-plane-protocol"+ 866 "/isis:isis/isis:interfaces/isis:interface" + 867 "/isis:adjacencies/isis:adjacency" { 868 when "/rt:routing/rt:control-plane-protocols/"+ 869 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 870 description 871 "This augment ISIS routing protocol when used"; 872 } 873 description 874 "This augments ISIS protocol configuration 875 with segment routing."; 877 uses adjacency-state; 878 } 880 augment "/rt:routing/" + 881 "rt:control-plane-protocols/rt:control-plane-protocol"+ 882 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 883 "/isis:router-capabilities" { 884 when "/rt:routing/rt:control-plane-protocols/"+ 885 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 886 description 887 "This augment ISIS routing protocol when used"; 888 } 889 description 890 "This augments ISIS protocol LSDB router capability."; 892 uses sr-capability; 893 uses sr-algorithm; 894 uses srlb; 895 uses srms-preference; 896 } 898 augment "/rt:routing/" + 899 "rt:control-plane-protocols/rt:control-plane-protocol"+ 900 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 901 "/isis:extended-is-neighbor/isis:neighbor" { 902 when "/rt:routing/rt:control-plane-protocols/"+ 903 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 904 description 905 "This augment ISIS routing protocol when used"; 906 } 907 description 908 "This augments ISIS protocol LSDB neighbor."; 909 uses adjacency-segment-id; 910 } 911 augment "/rt:routing/" + 912 "rt:control-plane-protocols/rt:control-plane-protocol"+ 913 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 914 "/isis:mt-is-neighbor/isis:neighbor" { 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 neighbor."; 922 uses adjacency-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: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:mt-extended-ipv4-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:ipv6-reachability/isis:prefixes" { 957 when "/rt:routing/rt:control-plane-protocols/"+ 958 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 960 description 961 "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 "/isis:mt-ipv6-reachability/isis:prefixes" { 972 when "/rt:routing/rt:control-plane-protocols/"+ 973 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 974 description 975 "This augment ISIS routing protocol when used"; 976 } 977 description 978 "This augments ISIS protocol LSDB prefix."; 979 uses prefix-segment-id; 980 } 982 augment "/rt:routing/" + 983 "rt:control-plane-protocols/rt:control-plane-protocol"+ 984 "/isis:isis/isis:database/isis:levels/isis:lsp" { 985 when "/rt:routing/rt:control-plane-protocols/"+ 986 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 987 description 988 "This augment ISIS routing protocol when used"; 989 } 990 description 991 "This augments ISIS protocol LSDB."; 992 uses segment-routing-binding-tlv; 993 } 995 /* Notifications */ 997 } 998 1000 7. Security Considerations 1002 Configuration and state data defined in this document are designed to 1003 be accessed via the NETCONF protocol [RFC6241]. 1005 As IS-IS is an IGP protocol (critical piece of the network), ensuring 1006 stability and security of the protocol is mandatory for the network 1007 service. 1009 Authors recommends to implement NETCONF access control model 1010 ([RFC6536]) to restrict access to all or part of the configuration to 1011 specific users. 1013 8. Contributors 1015 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 1016 their major contributions to the draft. 1018 9. Acknowledgements 1020 MITRE has approved this document for Public Release, Distribution 1021 Unlimited, with Public Release Case Number 19-3033. 1023 10. IANA Considerations 1025 The IANA is requested to assign two new URIs from the IETF XML 1026 registry ([RFC3688]). Authors are suggesting the following URI: 1028 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 1029 Registrant Contact: IS-IS WG 1030 XML: N/A, the requested URI is an XML namespace 1032 This document also requests one new YANG module name in the YANG 1033 Module Names registry ([RFC6020]) with the following suggestion : 1035 name: ietf-isis-sr 1036 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 1037 prefix: isis-sr 1038 reference: RFC XXXX 1040 11. Change log for ietf-isis-sr YANG module 1042 11.1. From version -03 to version -04 1044 o Fixed yang module indentations. 1046 11.2. From version -02 to version -03 1048 o Change address-family type according to routing types. 1050 11.3. From isis-sr document version -01 to version -02 1052 o NMDA compliancy. 1054 o Added SRLB in configuration and LSDB. 1056 o Added SR capability in LSDB. 1058 o Added SR algorithms in LSDB. 1060 o Added SRMS preference in LSDB. 1062 o Alignment with iana-rt-types module. 1064 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1065 13. 1067 11.4. From isis-sr document version -00 to version -01 1069 o Added P-Flag in Adj-SID. 1071 11.5. From isis document version -12 to isis-sr document version -00 1073 o Separate document for IS-IS SR extensions. 1075 11.6. From isis document version -12 to version -13 1077 o Align with new segment routing common module. 1079 11.7. From isis document version -09 to version -11 1081 o Fixed XPATH in 'when' expressions. 1083 11.8. From isis document version -08 to version -09 1085 o Align to draft-ietf-netmod-routing-cfg-23. 1087 11.9. From isis document version -07 to version -08 1089 o Align to draft-ietf-netmod-routing-cfg-21. 1091 12. Normative References 1093 [I-D.ietf-isis-yang-isis-cfg] 1094 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1095 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1096 isis-yang-isis-cfg-42 (work in progress), October 2019. 1098 [I-D.ietf-spring-sr-yang] 1099 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1100 Data Model for Segment Routing", draft-ietf-spring-sr- 1101 yang-15 (work in progress), December 2017. 1103 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1104 Requirement Levels", BCP 14, RFC 2119, 1105 DOI 10.17487/RFC2119, March 1997, 1106 . 1108 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1109 DOI 10.17487/RFC3688, January 2004, 1110 . 1112 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1113 the Network Configuration Protocol (NETCONF)", RFC 6020, 1114 DOI 10.17487/RFC6020, October 2010, 1115 . 1117 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1118 and A. Bierman, Ed., "Network Configuration Protocol 1119 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1120 . 1122 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1123 Protocol (NETCONF) Access Control Model", RFC 6536, 1124 DOI 10.17487/RFC6536, March 2012, 1125 . 1127 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1128 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1129 . 1131 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1132 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1133 May 2017, . 1135 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1136 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1137 . 1139 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1140 and R. Wilton, "Network Management Datastore Architecture 1141 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1142 . 1144 [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., 1145 Bashandy, A., Gredler, H., and B. Decraene, "IS-IS 1146 Extensions for Segment Routing", RFC 8667, 1147 DOI 10.17487/RFC8667, December 2019, 1148 . 1150 Authors' Addresses 1152 Stephane Litkowski 1153 Cisco Systems 1155 Email: slitkows.ietf@gmail.com 1157 Yinghzen Qu 1158 Futurewei 1160 Email: yingzhen.qu@futurewei.com 1162 Pushpasis Sarkar 1163 Individual 1165 Email: pushpasis.ietf@gmail.com 1167 Ing-Wher Chen 1168 The MITRE Corporation 1170 Email: ingwherchen@mitre.org 1172 Jeff Tantsura 1173 Apstra 1175 Email: jefftant.ietf@gmail.com