idnits 2.17.00 (12 Aug 2021) /tmp/idnits33677/draft-ietf-isis-sr-yang-06.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 142 has weird spacing: '...r-bound uin...' == Line 143 has weird spacing: '...r-bound uin...' == Line 154 has weird spacing: '...roup-id uin...' -- The document date (July 7, 2019) is 1049 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: draft-ietf-isis-segment-routing-extensions has been published as RFC 8667 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-35 == Outdated reference: draft-ietf-spring-sr-yang has been published as RFC 9020 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 7 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 Orange 4 Intended status: Standards Track Y. Qu 5 Expires: January 8, 2020 Futurewei 6 P. Sarkar 7 Individual 8 I. Chen 9 The MITRE Corporation 10 J. Tantsura 11 Individual 12 July 7, 2019 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-06 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 8, 2020. 39 Copyright Notice 41 Copyright (c) 2019 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 . . . . . . . . . . . . . . . . . . . 20 66 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 67 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 68 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 69 11. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 21 70 11.1. From version -03 to version -04 . . . . . . . . . . . . 21 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 . . . . 22 74 11.5. From isis document version -12 to isis-sr document 75 version -00 . . . . . . . . . . . . . . . . . . . . . . 22 76 11.6. From isis document version -12 to version -13 . . . . . 22 77 11.7. From isis document version -09 to version -11 . . . . . 22 78 11.8. From isis document version -08 to version -09 . . . . . 22 79 11.9. From isis document version -07 to version -08 . . . . . 22 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 97 [I-D.ietf-isis-segment-routing-extensions] and it is an augmentation 98 to the IS-IS YANG data model. 100 The YANG modules in this document conform to the Network Management 101 Datastore Architecture (NMDA) [RFC8342]. 103 2. Requirements Language 105 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 106 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 107 "OPTIONAL" in this document are to be interpreted as described in BCP 108 14 [RFC2119] [RFC8174] when, and only when, they appear in all 109 capitals, as shown here. 111 3. Tree Diagrams 113 This document uses the graphical representation of data models 114 defined in [RFC8340]. 116 4. IS-IS Segment Routing 118 This document defines a model for IS-IS Segment Routing feature. It 119 is an augmentation of the IS-IS base model. 121 The IS-IS SR YANG module requires support for the base segment 122 routing module [I-D.ietf-spring-sr-yang], which defines the global 123 segment routing configuration independent of any specific routing 124 protocol configuration, and support of IS-IS base model 125 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 126 and state. 128 The figure below describes the overall structure of the isis-sr YANG 129 module: 131 module: ietf-isis-sr 132 augment /rt:routing/rt:control-plane-protocols 133 /rt:control-plane-protocol/isis:isis: 134 +--rw segment-routing 135 | +--rw enabled? boolean 136 | +--rw bindings 137 | +--rw advertise 138 | | +--rw policies* string 139 | +--rw receive? boolean 140 +--rw protocol-srgb {sr:protocol-srgb}? 141 +--rw srgb* [lower-bound upper-bound] 142 +--rw lower-bound uint32 143 +--rw upper-bound uint32 144 augment /rt:routing/rt:control-plane-protocols 145 /rt:control-plane-protocol/isis:isis/isis:interfaces 146 /isis:interface: 147 +--rw segment-routing 148 +--rw adjacency-sid 149 +--rw adj-sids* [value] 150 | +--rw value-type? enumeration 151 | +--rw value uint32 152 | +--rw protected? boolean 153 +--rw advertise-adj-group-sid* [group-id] 154 | +--rw group-id uint32 155 +--rw advertise-protection? enumeration 156 augment /rt:routing/rt:control-plane-protocols 157 /rt:control-plane-protocol/isis:isis/isis:interfaces 158 /isis:interface/isis:fast-reroute: 159 +--rw ti-lfa {ti-lfa}? 160 +--rw enable? boolean 161 augment /rt:routing/rt:control-plane-protocols 162 /rt:control-plane-protocol/isis:isis/isis:interfaces 163 /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: 164 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 165 augment /rt:routing/rt:control-plane-protocols 166 /rt:control-plane-protocol/isis:isis/isis:interfaces 167 /isis:interface/isis:adjacencies/isis:adjacency: 168 +--ro adjacency-sid* [value] 169 +--ro af? iana-rt-types:address-family 170 +--ro value uint32 171 +--ro weight? uint8 172 +--ro protection-requested? boolean 173 augment /rt:routing/rt:control-plane-protocols 174 /rt:control-plane-protocol/isis:isis/isis:database 175 /isis:levels/isis:lsp/isis:router-capabilities: 176 +--ro sr-capability 177 | +--ro flags? bits 178 | +--ro global-blocks 179 | +--ro global-block* 180 | +--ro range-size? uint32 181 | +--ro sid-sub-tlv 182 | +--ro sid? uint32 183 +--ro sr-algorithms 184 | +--ro sr-algorithm* uint8 185 +--ro local-blocks 186 | +--ro local-block* 187 | +--ro range-size? uint32 188 | +--ro sid-sub-tlv 189 | +--ro sid? uint32 190 +--ro srms-preference 191 +--ro preference? uint8 192 augment /rt:routing/rt:control-plane-protocols 193 /rt:control-plane-protocol/isis:isis/isis:database 194 /isis:levels/isis:lsp/isis:extended-is-neighbor 195 /isis:neighbor: 196 +--ro sid-list* [value] 197 +--ro flags? bits 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 flags? bits 206 +--ro weight? uint8 207 +--ro neighbor-id? isis:system-id 208 +--ro value uint32 209 augment /rt:routing/rt:control-plane-protocols 210 /rt:control-plane-protocol/isis:isis/isis:database 211 /isis:levels/isis:lsp/isis:extended-ipv4-reachability 212 /isis:prefixes: 213 +--ro sid-list* [value] 214 +--ro flags? bits 215 +--ro algorithm? uint8 216 +--ro value uint32 217 augment /rt:routing/rt:control-plane-protocols 218 /rt:control-plane-protocol/isis:isis/isis:database 219 /isis:levels/isis:lsp/isis:mt-extended-ipv4-reachability 220 /isis:prefixes: 221 +--ro sid-list* [value] 222 +--ro flags? bits 223 +--ro algorithm? uint8 224 +--ro value uint32 225 augment /rt:routing/rt:control-plane-protocols 226 /rt:control-plane-protocol/isis:isis/isis:database 227 /isis:levels/isis:lsp/isis:ipv6-reachability/isis:prefixes: 228 +--ro sid-list* [value] 229 +--ro flags? bits 230 +--ro algorithm? uint8 231 +--ro value uint32 232 augment /rt:routing/rt:control-plane-protocols 233 /rt:control-plane-protocol/isis:isis/isis:database 234 /isis:levels/isis:lsp/isis:mt-ipv6-reachability 235 /isis:prefixes: 236 +--ro sid-list* [value] 237 +--ro flags? bits 238 +--ro algorithm? uint8 239 +--ro value uint32 240 augment /rt:routing/rt:control-plane-protocols 241 /rt:control-plane-protocol/isis:isis/isis:database 242 /isis:levels/isis:lsp: 243 +--ro segment-routing-bindings* [fec range] 244 +--ro fec string 245 +--ro range uint16 246 +--ro flags? bits 247 +--ro binding 248 +--ro prefix-sid 249 +--ro sid-list* [value] 250 +--ro flags? bits 251 +--ro algorithm? uint8 252 +--ro value uint32 254 5. IS-IS Segment Routing configuration 256 5.1. Segment Routing activation 258 Activation of segment-routing IS-IS is done by setting the "enable" 259 leaf to true. This triggers advertisement of segment-routing 260 extensions based on the configuration parameters that have been setup 261 using the base segment routing module. 263 5.2. Advertising mapping server policy 265 The base segment routing module defines mapping server policies. By 266 default, IS-IS will not advertise nor receive any mapping server 267 entry. The IS-IS segment-routing module allows to advertise one or 268 multiple mapping server policies through the "bindings/advertise/ 269 policies" leaf-list. The "bindings/receive" leaf allows to enable 270 the reception of mapping server entries. 272 5.3. IP Fast reroute 274 IS-IS SR model augments the fast-reroute container under interface. 275 It brings the ability to activate TI-LFA (topology independent LFA) 276 and also enhances remote LFA to use segment-routing tunneling instead 277 of LDP. 279 6. IS-IS Segment Routing YANG Module 281 file "ietf-isis-sr@2019-07-07.yang" 282 module ietf-isis-sr { 283 namespace "urn:ietf:params:xml:ns:" 284 + "yang:ietf-isis-sr"; 285 prefix isis-sr; 287 import ietf-routing { 288 prefix "rt"; 289 } 291 import ietf-segment-routing-common { 292 prefix "sr-cmn"; 293 } 295 import ietf-segment-routing { 296 prefix "sr"; 297 } 299 import ietf-isis { 300 prefix "isis"; 301 } 303 import iana-routing-types { 304 prefix "iana-rt-types"; 305 } 307 organization 308 "IETF LSR - LSR Working Group"; 310 contact 311 "WG List: 313 Editor: Stephane Litkowski 314 316 Author: Acee Lindem 317 318 Author: Yingzhen Qu 319 320 Author: Pushpasis Sarkar 321 322 Author: Ing-Wher Chen 323 324 Author: Jeff Tantsura 325 326 "; 328 description 329 "The YANG module defines a generic configuration model for 330 Segment routing ISIS extensions common across all of the vendor 331 implementations."; 333 revision 2019-07-07 { 334 description 335 "Initial revision."; 336 reference "RFC XXXX"; 337 } 339 /* Identities */ 341 /* Features */ 343 feature remote-lfa-sr { 344 description 345 "Enhance rLFA to use SR path."; 346 } 348 feature ti-lfa { 349 description 350 "Enhance IPFRR with ti-lfa 351 support"; 352 } 354 /* Groupings */ 356 grouping sid-sub-tlv { 357 description "SID/Label sub-TLV grouping."; 358 container sid-sub-tlv { 359 description 360 "Used to advertise the SID/Label associated with a 361 prefix or adjacency."; 362 leaf sid { 363 type uint32; 364 description 365 "Segment Identifier (SID) - A 20 bit label or 366 32 bit SID."; 367 } 368 } 369 } 371 grouping sr-capability { 372 description 373 "SR capability grouping."; 374 container sr-capability { 375 description 376 "Segment Routing capability."; 377 leaf flags { 378 type bits { 379 bit mpls-ipv4 { 380 position 0; 381 description 382 "If set, then the router is capable of 383 processing SR MPLS encapsulated IPv4 packets 384 on all interfaces."; 385 } 386 bit mpls-ipv6 { 387 position 1; 388 description 389 "If set, then the router is capable of 390 processing SR MPLS encapsulated IPv6 packets 391 on all interfaces."; 392 } 393 } 394 description 395 "Flags."; 396 } 397 container global-blocks { 398 description 399 "Segment Routing Global Blocks."; 400 list global-block { 401 description "Segment Routing Global Block."; 402 leaf range-size { 403 type uint32; 404 description "The SID range."; 405 } 406 uses sid-sub-tlv; 407 } 408 } 409 } 410 } 412 grouping sr-algorithm { 413 description 414 "SR algorithm grouping."; 415 container sr-algorithms { 416 description "All SR algorithms."; 417 leaf-list sr-algorithm { 418 type uint8; 419 description 420 "The Segment Routing (SR) algorithms that the router is 421 currently using."; 422 } 423 } 424 } 426 grouping srlb { 427 description 428 "SR Local Block grouping."; 429 container local-blocks { 430 description "List of SRLBs."; 431 list local-block { 432 description "Segment Routing Local Block."; 433 leaf range-size { 434 type uint32; 435 description "The SID range."; 436 } 437 uses sid-sub-tlv; 438 } 439 } 440 } 442 grouping srms-preference { 443 description "The SRMS preference TLV is used to advertise 444 a preference associated with the node that acts 445 as an SR Mapping Server."; 446 container srms-preference { 447 description "SRMS Preference TLV."; 448 leaf preference { 449 type uint8 { 450 range "0 .. 255"; 451 } 452 description "SRMS preference TLV, vlaue from 0 to 255."; 453 } 454 } 455 } 457 grouping adjacency-state { 458 description 459 "This group will extend adjacency state."; 460 list adjacency-sid { 461 key value; 462 config false; 463 leaf af { 464 type iana-rt-types:address-family; 465 description 466 "Address-family associated with the 467 segment ID"; 468 } 469 leaf value { 470 type uint32; 471 description 472 "Value of the Adj-SID."; 473 } 474 leaf weight { 475 type uint8; 476 description 477 "Weight associated with 478 the adjacency SID."; 479 } 480 leaf protection-requested { 481 type boolean; 482 description 483 "Describe if the adjacency SID 484 must be protected."; 485 } 486 description 487 "List of adjacency Segment IDs."; 488 } 489 } 491 grouping prefix-segment-id { 492 description 493 "This group defines segment routing extensions 494 for prefixes."; 496 list sid-list { 497 key value; 499 leaf flags { 500 type bits { 501 bit readvertisment { 502 position 7; 503 description 504 "If set, then the prefix to 505 which this Prefix-SID is attached, 506 has been propagated by the 507 router either from another level 508 or from redistribution."; 509 } 510 bit php { 511 position 5; 512 description 513 "If set, then the penultimate hop MUST NOT 514 pop the Prefix-SID before delivering the packet 515 to the node that advertised the Prefix-SID."; 516 } 517 bit explicit-null { 518 position 4; 519 description 520 "If set, any upstream neighbor of 521 the Prefix-SID originator MUST replace 522 the Prefix-SID with a 523 Prefix-SID having an 524 Explicit-NULL value (0 for IPv4 and 2 for 525 IPv6) before forwarding the packet."; 526 } 527 bit value { 528 position 3; 529 description 530 "If set, then the Prefix-SID carries a 531 value (instead of an index). 532 By default the flag is UNSET."; 533 } 534 bit local { 535 position 2; 536 description 537 "If set, then the value/index carried by 538 the Prefix-SID has local significance. 539 By default the flag is UNSET."; 540 } 541 } 542 description 543 "Describes flags associated with the 544 segment ID."; 545 } 547 leaf algorithm { 548 type uint8; 549 description 550 "Algorithm to be used for path computation."; 551 } 552 leaf value { 553 type uint32; 554 description 555 "Value of the prefix-SID."; 556 } 557 description 558 "List of segments."; 559 } 560 } 562 grouping adjacency-segment-id { 563 description 564 "This group defines segment routing extensions 565 for adjacencies."; 567 list sid-list { 568 key value; 570 leaf flags { 571 type bits { 572 bit address-family { 573 position 7; 574 description 575 "If unset, then the Adj-SID refers 576 to an adjacency with outgoing IPv4 encapsulation. 577 If set then the Adj-SID refers to an adjacency 578 with outgoing IPv6 encapsulation."; 579 } 580 bit backup { 581 position 6; 582 description 583 "If set, the Adj-SID refers to an 584 adjacency being protected 585 (e.g.: using IPFRR or MPLS-FRR)"; 586 } 587 bit value { 588 position 5; 589 description 590 "If set, then the SID carries a 591 value (instead of an index). 592 By default the flag is SET."; 593 } 594 bit local { 595 position 4; 596 description 597 "If set, then the value/index carried by 598 the SID has local significance. 599 By default the flag is SET."; 600 } 601 bit set { 602 position 3; 603 description 604 "When set, the S-Flag indicates that the 605 Adj-SID refers to a set of adjacencies."; 606 } 607 bit persistent { 608 position 2; 609 description 610 "When set, the P-Flag indicates that the 611 Adj-SID is persistently allocated."; 612 } 613 } 615 description 616 "Describes flags associated with the 617 segment ID."; 618 } 619 leaf weight { 620 type uint8; 621 description 622 "The value represents the weight of the Adj-SID 623 for the purpose of load balancing."; 624 } 625 leaf neighbor-id { 626 type isis:system-id; 627 description 628 "Describes the system ID of the neighbor 629 associated with the SID value. This is only 630 used on LAN adjacencies."; 631 } 632 leaf value { 633 type uint32; 634 description 635 "Value of the Adj-SID."; 636 } 637 description 638 "List of segments."; 639 } 640 } 642 grouping segment-routing-binding-tlv { 643 list segment-routing-bindings { 644 key "fec range"; 646 leaf fec { 647 type string; 648 description 649 "IP (v4 or v6) range to be bound to SIDs."; 650 } 652 leaf range { 653 type uint16; 654 description 655 "Describes number of elements to assign 656 a binding to."; 657 } 659 leaf flags { 660 type bits { 661 bit address-family { 662 position 7; 663 description 664 "If unset, then the Prefix FEC 665 carries an IPv4 Prefix. 666 If set then the Prefix FEC carries an 667 IPv6 Prefix."; 669 } 670 bit mirror { 671 position 6; 672 description 673 "Set if the advertised SID/path 674 corresponds to a mirrored context."; 675 } 676 bit flooding { 677 position 5; 678 description 679 "If the S bit is set(1), 680 the IS-IS Router CAPABILITY TLV 681 MUST be flooded across the entire routing domain. 682 If the S bit is 683 not set(0), the TLV MUST NOT be leaked between levels. 684 This bit MUST NOT be altered during the TLV leaking."; 685 } 686 bit down { 687 position 4; 688 description 689 "When the IS-IS Router CAPABILITY TLV is 690 leaked from level-2 to level-1, the D bit 691 MUST be set. Otherwise, this bit MUST 692 be clear. IS-IS Router capability TLVs 693 with the D bit set MUST NOT 694 be leaked from level-1 to level-2. 695 This is to prevent TLV looping."; 696 } 697 bit attached { 698 position 3; 699 description 700 "The originator of the SID/Label Binding TLV MAY set the 701 A bit in order to signal that the prefixes and SIDs 702 advertised in the SID/Label Binding TLV are directly 703 connected to their originators."; 704 } 706 } 707 description 708 "Flags of the binding."; 709 } 711 container binding { 712 container prefix-sid { 713 uses prefix-segment-id; 714 description 715 "Binding prefix SID to the range."; 716 } 717 description 718 "Bindings associated with the range."; 719 } 721 description 722 "This container describes list of SID/Label bindings. 723 ISIS reference is TLV 149."; 724 } 725 description 726 "Defines binding TLV for database."; 727 } 729 /* Cfg */ 731 augment "/rt:routing/" + 732 "rt:control-plane-protocols/rt:control-plane-protocol"+ 733 "/isis:isis" { 734 when "/rt:routing/rt:control-plane-protocols/"+ 735 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 736 description 737 "This augment ISIS routing protocol when used"; 738 } 739 description 740 "This augments ISIS protocol configuration 741 with segment routing."; 743 uses sr:sr-controlplane; 744 container protocol-srgb { 745 if-feature sr:protocol-srgb; 746 uses sr-cmn:srgb; 747 description 748 "Per-protocol SRGB."; 749 } 750 } 752 augment "/rt:routing/" + 753 "rt:control-plane-protocols/rt:control-plane-protocol"+ 754 "/isis:isis/isis:interfaces/isis:interface" { 755 when "/rt:routing/rt:control-plane-protocols/"+ 756 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 757 description 758 "This augment ISIS routing protocol when used"; 759 } 760 description 761 "This augments ISIS protocol configuration 762 with segment routing."; 764 uses sr:igp-interface; 766 } 768 augment "/rt:routing/" + 769 "rt:control-plane-protocols/rt:control-plane-protocol"+ 770 "/isis:isis/isis:interfaces/isis:interface"+ 771 "/isis:fast-reroute" { 772 when "/rt:routing/rt:control-plane-protocols/"+ 773 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 774 description 775 "This augment ISIS routing protocol when used"; 776 } 777 description 778 "This augments ISIS IP FRR with TILFA."; 780 container ti-lfa { 781 if-feature ti-lfa; 782 leaf enable { 783 type boolean; 784 description 785 "Enables TI-LFA computation."; 786 } 787 description 788 "TILFA configuration."; 789 } 790 } 792 augment "/rt:routing/" + 793 "rt:control-plane-protocols/rt:control-plane-protocol"+ 794 "/isis:isis/isis:interfaces/isis:interface"+ 795 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 796 when "/rt:routing/rt:control-plane-protocols/"+ 797 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 798 description 799 "This augment ISIS routing protocol when used"; 800 } 801 description 802 "This augments ISIS remoteLFA config with 803 use of segment-routing path."; 805 leaf use-segment-routing-path { 806 if-feature remote-lfa-sr; 807 type boolean; 808 description 809 "force remote LFA to use segment routing 810 path instead of LDP path."; 811 } 812 } 813 /* Operational states */ 815 augment "/rt:routing/" + 816 "rt:control-plane-protocols/rt:control-plane-protocol"+ 817 "/isis:isis/isis:interfaces/isis:interface" + 818 "/isis:adjacencies/isis:adjacency" { 819 when "/rt:routing/rt:control-plane-protocols/"+ 820 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 821 description 822 "This augment ISIS routing protocol when used"; 823 } 824 description 825 "This augments ISIS protocol configuration 826 with segment routing."; 828 uses adjacency-state; 829 } 831 augment "/rt:routing/" + 832 "rt:control-plane-protocols/rt:control-plane-protocol"+ 833 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 834 "/isis:router-capabilities" { 835 when "/rt:routing/rt:control-plane-protocols/"+ 836 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 837 description 838 "This augment ISIS routing protocol when used"; 839 } 840 description 841 "This augments ISIS protocol LSDB router capability."; 843 uses sr-capability; 844 uses sr-algorithm; 845 uses srlb; 846 uses srms-preference; 847 } 849 augment "/rt:routing/" + 850 "rt:control-plane-protocols/rt:control-plane-protocol"+ 851 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 852 "/isis:extended-is-neighbor/isis:neighbor" { 853 when "/rt:routing/rt:control-plane-protocols/"+ 854 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 855 description 856 "This augment ISIS routing protocol when used"; 857 } 858 description 859 "This augments ISIS protocol LSDB neighbor."; 860 uses adjacency-segment-id; 862 } 864 augment "/rt:routing/" + 865 "rt:control-plane-protocols/rt:control-plane-protocol"+ 866 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 867 "/isis:mt-is-neighbor/isis:neighbor" { 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 LSDB neighbor."; 875 uses adjacency-segment-id; 876 } 878 augment "/rt:routing/" + 879 "rt:control-plane-protocols/rt:control-plane-protocol"+ 880 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 881 "/isis:extended-ipv4-reachability/isis:prefixes" { 882 when "/rt:routing/rt:control-plane-protocols/"+ 883 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 884 description 885 "This augment ISIS routing protocol when used"; 886 } 887 description 888 "This augments ISIS protocol LSDB prefix."; 889 uses prefix-segment-id; 890 } 892 augment "/rt:routing/" + 893 "rt:control-plane-protocols/rt:control-plane-protocol"+ 894 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 895 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 896 when "/rt:routing/rt:control-plane-protocols/"+ 897 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 898 description 899 "This augment ISIS routing protocol when used"; 900 } 901 description 902 "This augments ISIS protocol LSDB prefix."; 903 uses prefix-segment-id; 904 } 906 augment "/rt:routing/" + 907 "rt:control-plane-protocols/rt:control-plane-protocol"+ 908 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 909 "/isis:ipv6-reachability/isis:prefixes" { 911 when "/rt:routing/rt:control-plane-protocols/"+ 912 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 913 description 914 "This augment ISIS routing protocol when used"; 915 } 916 description 917 "This augments ISIS protocol LSDB prefix."; 918 uses prefix-segment-id; 919 } 921 augment "/rt:routing/" + 922 "rt:control-plane-protocols/rt:control-plane-protocol"+ 923 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 924 "/isis:mt-ipv6-reachability/isis:prefixes" { 925 when "/rt:routing/rt:control-plane-protocols/"+ 926 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 927 description 928 "This augment ISIS routing protocol when used"; 929 } 930 description 931 "This augments ISIS protocol LSDB prefix."; 932 uses prefix-segment-id; 933 } 935 augment "/rt:routing/" + 936 "rt:control-plane-protocols/rt:control-plane-protocol"+ 937 "/isis:isis/isis:database/isis:levels/isis:lsp" { 938 when "/rt:routing/rt:control-plane-protocols/"+ 939 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 940 description 941 "This augment ISIS routing protocol when used"; 942 } 943 description 944 "This augments ISIS protocol LSDB."; 945 uses segment-routing-binding-tlv; 946 } 948 /* Notifications */ 950 } 951 953 7. Security Considerations 955 Configuration and state data defined in this document are designed to 956 be accessed via the NETCONF protocol [RFC6241]. 958 As IS-IS is an IGP protocol (critical piece of the network), ensuring 959 stability and security of the protocol is mandatory for the network 960 service. 962 Authors recommends to implement NETCONF access control model 963 ([RFC6536]) to restrict access to all or part of the configuration to 964 specific users. 966 8. Contributors 968 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 969 their major contributions to the draft. 971 9. Acknowledgements 973 Author affiliation with The MITRE Corporation is provided for 974 identification purposes only, and is not intended to convey or imply 975 MITRE's concurrence with, or support for, the positions, opinions or 976 viewpoints expressed. MITRE has approved this document for Public 977 Release, Distribution Unlimited, with Public Release Case Number 978 18-3281. 980 10. IANA Considerations 982 The IANA is requested to assign two new URIs from the IETF XML 983 registry ([RFC3688]). Authors are suggesting the following URI: 985 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 986 Registrant Contact: IS-IS WG 987 XML: N/A, the requested URI is an XML namespace 989 This document also requests one new YANG module name in the YANG 990 Module Names registry ([RFC6020]) with the following suggestion : 992 name: ietf-isis-sr 993 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 994 prefix: isis-sr 995 reference: RFC XXXX 997 11. Change log for ietf-isis-sr YANG module 999 11.1. From version -03 to version -04 1001 o Fixed yang module indentations. 1003 11.2. From version -02 to version -03 1005 o Change address-family type according to routing types. 1007 11.3. From isis-sr document version -01 to version -02 1009 o NMDA compliancy. 1011 o Added SRLB in configuration and LSDB. 1013 o Added SR capability in LSDB. 1015 o Added SR algorithms in LSDB. 1017 o Added SRMS preference in LSDB. 1019 o Alignment with iana-rt-types module. 1021 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1022 13. 1024 11.4. From isis-sr document version -00 to version -01 1026 o Added P-Flag in Adj-SID. 1028 11.5. From isis document version -12 to isis-sr document version -00 1030 o Separate document for IS-IS SR extensions. 1032 11.6. From isis document version -12 to version -13 1034 o Align with new segment routing common module. 1036 11.7. From isis document version -09 to version -11 1038 o Fixed XPATH in 'when' expressions. 1040 11.8. From isis document version -08 to version -09 1042 o Align to draft-ietf-netmod-routing-cfg-23. 1044 11.9. From isis document version -07 to version -08 1046 o Align to draft-ietf-netmod-routing-cfg-21. 1048 12. Normative References 1050 [I-D.ietf-isis-segment-routing-extensions] 1051 Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., 1052 Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, 1053 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1054 segment-routing-extensions-22 (work in progress). 1056 [I-D.ietf-isis-yang-isis-cfg] 1057 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1058 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1059 isis-yang-isis-cfg-35 (work in progress), March 2019. 1061 [I-D.ietf-spring-sr-yang] 1062 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1063 Data Model for Segment Routing", draft-ietf-spring-sr- 1064 yang-08 (work in progress), December 2017. 1066 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1067 Requirement Levels", BCP 14, RFC 2119, 1068 DOI 10.17487/RFC2119, March 1997, 1069 . 1071 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1072 DOI 10.17487/RFC3688, January 2004, 1073 . 1075 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1076 the Network Configuration Protocol (NETCONF)", RFC 6020, 1077 DOI 10.17487/RFC6020, October 2010, 1078 . 1080 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1081 and A. Bierman, Ed., "Network Configuration Protocol 1082 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1083 . 1085 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1086 Protocol (NETCONF) Access Control Model", RFC 6536, 1087 DOI 10.17487/RFC6536, March 2012, 1088 . 1090 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1091 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1092 . 1094 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1095 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1096 May 2017, . 1098 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1099 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1100 . 1102 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1103 and R. Wilton, "Network Management Datastore Architecture 1104 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1105 . 1107 Authors' Addresses 1109 Stephane Litkowski 1110 Orange 1112 Email: stephane.litkowski@orange.com 1114 Yinghzen Qu 1115 Futurewei 1117 Email: yingzhen.qu@Futurewei.com 1119 Pushpasis Sarkar 1120 Individual 1122 Email: pushpasis.ietf@gmail.com 1124 Ing-Wher Chen 1125 The MITRE Corporation 1127 Email: ingwherchen@mitre.org 1129 Jeff Tantsura 1130 Individual 1132 Email: jefftant.ietf@gmail.com