idnits 2.17.1 draft-ietf-isis-sr-yang-05.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 150 has weird spacing: '...roup-id uin...' -- The document date (March 10, 2019) is 1874 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 (-25) exists of draft-ietf-isis-segment-routing-extensions-22 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-35 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-08 ** 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: September 11, 2019 Huawei 6 P. Sarkar 7 Individual 8 I. Chen 9 The MITRE Corporation 10 J. Tantsura 11 Individual 12 March 10, 2019 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-05 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 September 11, 2019. 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 . . . . . . . . . . . . 21 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 . . . . . . . . . . . . . . . . . . . . 22 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 advertise-adj-group-sid* [group-id] 150 | +--rw group-id uint32 151 +--rw advertise-protection? enumeration 152 augment /rt:routing/rt:control-plane-protocols 153 /rt:control-plane-protocol/isis:isis/isis:interfaces 154 /isis:interface/isis:fast-reroute: 155 +--rw ti-lfa {ti-lfa}? 156 +--rw enable? boolean 157 augment /rt:routing/rt:control-plane-protocols 158 /rt:control-plane-protocol/isis:isis/isis:interfaces 159 /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: 160 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 161 augment /rt:routing/rt:control-plane-protocols 162 /rt:control-plane-protocol/isis:isis/isis:interfaces 163 /isis:interface/isis:adjacencies/isis:adjacency: 164 +--ro adjacency-sid* [value] 165 +--ro af? iana-rt-types:address-family 166 +--ro value uint32 167 +--ro weight? uint8 168 +--ro protection-requested? boolean 169 augment /rt:routing/rt:control-plane-protocols 170 /rt:control-plane-protocol/isis:isis/isis:database 171 /isis:level-db/isis:lsp/isis:router-capabilities: 172 +--ro sr-capability 173 | +--ro flags? bits 174 | +--ro global-blocks 175 | +--ro global-block* 176 | +--ro range-size? uint32 177 | +--ro sid-sub-tlv 178 | +--ro sid? uint32 179 +--ro sr-algorithms 180 | +--ro sr-algorithm* uint8 181 +--ro local-blocks 182 | +--ro local-block* 183 | +--ro range-size? uint32 184 | +--ro sid-sub-tlv 185 | +--ro sid? uint32 186 +--ro srms-preference 187 +--ro preference? uint8 188 augment /rt:routing/rt:control-plane-protocols 189 /rt:control-plane-protocol/isis:isis/isis:database 190 /isis:level-db/isis:lsp/isis:extended-is-neighbor 191 /isis:neighbor: 192 +--ro sid-list* [value] 193 +--ro flags? bits 194 +--ro weight? uint8 195 +--ro neighbor-id? isis:system-id 196 +--ro value uint32 197 augment /rt:routing/rt:control-plane-protocols 198 /rt:control-plane-protocol/isis:isis/isis:database 199 /isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 200 +--ro sid-list* [value] 201 +--ro flags? bits 202 +--ro weight? uint8 203 +--ro neighbor-id? isis:system-id 204 +--ro value uint32 205 augment /rt:routing/rt:control-plane-protocols 206 /rt:control-plane-protocol/isis:isis/isis:database 207 /isis:level-db/isis:lsp/isis:extended-ipv4-reachability 208 /isis:prefixes: 209 +--ro sid-list* [value] 210 +--ro flags? bits 211 +--ro algorithm? uint8 212 +--ro value uint32 213 augment /rt:routing/rt:control-plane-protocols 214 /rt:control-plane-protocol/isis:isis/isis:database 215 /isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability 216 /isis:prefixes: 217 +--ro sid-list* [value] 218 +--ro flags? bits 219 +--ro algorithm? uint8 220 +--ro value uint32 221 augment /rt:routing/rt:control-plane-protocols 222 /rt:control-plane-protocol/isis:isis/isis:database 223 /isis:level-db/isis:lsp/isis:ipv6-reachability/isis:prefixes: 224 +--ro sid-list* [value] 225 +--ro flags? bits 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:level-db/isis:lsp/isis:mt-ipv6-reachability 231 /isis:prefixes: 232 +--ro sid-list* [value] 233 +--ro flags? bits 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:level-db/isis:lsp: 239 +--ro segment-routing-bindings* [fec range] 240 +--ro fec string 241 +--ro range uint16 242 +--ro flags? bits 243 +--ro binding 244 +--ro prefix-sid 245 +--ro sid-list* [value] 246 +--ro flags? bits 247 +--ro algorithm? uint8 248 +--ro value uint32 250 5. IS-IS Segment Routing configuration 252 5.1. Segment Routing activation 254 Activation of segment-routing IS-IS is done by setting the "enable" 255 leaf to true. This triggers advertisement of segment-routing 256 extensions based on the configuration parameters that have been setup 257 using the base segment routing module. 259 5.2. Advertising mapping server policy 261 The base segment routing module defines mapping server policies. By 262 default, IS-IS will not advertise nor receive any mapping server 263 entry. The IS-IS segment-routing module allows to advertise one or 264 multiple mapping server policies through the "bindings/advertise/ 265 policies" leaf-list. The "bindings/receive" leaf allows to enable 266 the reception of mapping server entries. 268 5.3. IP Fast reroute 270 IS-IS SR model augments the fast-reroute container under interface. 271 It brings the ability to activate TI-LFA (topology independent LFA) 272 and also enhances remote LFA to use segment-routing tunneling instead 273 of LDP. 275 6. IS-IS Segment Routing YANG Module 277 file "ietf-isis-sr@2019-03-06.yang" 278 module ietf-isis-sr { 279 namespace "urn:ietf:params:xml:ns:" 280 + "yang:ietf-isis-sr"; 281 prefix isis-sr; 283 import ietf-routing { 284 prefix "rt"; 285 } 287 import ietf-segment-routing-common { 288 prefix "sr-cmn"; 289 } 291 import ietf-segment-routing { 292 prefix "sr"; 293 } 295 import ietf-isis { 296 prefix "isis"; 297 } 299 import iana-routing-types { 300 prefix "iana-rt-types"; 301 } 303 organization 304 "IETF LSR - LSR Working Group"; 306 contact 307 "WG List: 309 Editor: Stephane Litkowski 310 312 Author: Acee Lindem 313 314 Author: Yingzhen Qu 315 316 Author: Pushpasis Sarkar 317 318 Author: Ing-Wher Chen 319 320 Author: Jeff Tantsura 321 322 "; 324 description 325 "The YANG module defines a generic configuration model for 326 Segment routing ISIS extensions common across all of the vendor 327 implementations."; 329 revision 2019-03-06 { 330 description 331 "Initial revision."; 332 reference "RFC XXXX"; 333 } 334 /* Identities */ 336 /* Features */ 338 feature remote-lfa-sr { 339 description 340 "Enhance rLFA to use SR path."; 341 } 343 feature ti-lfa { 344 description 345 "Enhance IPFRR with ti-lfa 346 support"; 347 } 349 /* Groupings */ 351 grouping sid-sub-tlv { 352 description "SID/Label sub-TLV grouping."; 353 container sid-sub-tlv { 354 description 355 "Used to advertise the SID/Label associated with a 356 prefix or adjacency."; 357 leaf sid { 358 type uint32; 359 description 360 "Segment Identifier (SID) - A 20 bit label or 361 32 bit SID."; 362 } 363 } 364 } 366 grouping sr-capability { 367 description 368 "SR capability grouping."; 369 container sr-capability { 370 description 371 "Segment Routing capability."; 372 leaf flags { 373 type bits { 374 bit mpls-ipv4 { 375 position 0; 376 description 377 "If set, then the router is capable of 378 processing SR MPLS encapsulated IPv4 packets 379 on all interfaces."; 381 } 382 bit mpls-ipv6 { 383 position 1; 384 description 385 "If set, then the router is capable of 386 processing SR MPLS encapsulated IPv6 packets 387 on all interfaces."; 388 } 389 } 390 description 391 "Flags."; 392 } 393 container global-blocks { 394 description 395 "Segment Routing Global Blocks."; 396 list global-block { 397 description "Segment Routing Global Block."; 398 leaf range-size { 399 type uint32; 400 description "The SID range."; 401 } 402 uses sid-sub-tlv; 403 } 404 } 405 } 406 } 408 grouping sr-algorithm { 409 description 410 "SR algorithm grouping."; 411 container sr-algorithms { 412 description "All SR algorithms."; 413 leaf-list sr-algorithm { 414 type uint8; 415 description 416 "The Segment Routing (SR) algorithms that the router is 417 currently using."; 418 } 419 } 420 } 422 grouping srlb { 423 description 424 "SR Local Block grouping."; 425 container local-blocks { 426 description "List of SRLBs."; 427 list local-block { 428 description "Segment Routing Local Block."; 429 leaf range-size { 430 type uint32; 431 description "The SID range."; 432 } 433 uses sid-sub-tlv; 434 } 435 } 436 } 438 grouping srms-preference { 439 description "The SRMS preference TLV is used to advertise 440 a preference associated with the node that acts 441 as an SR Mapping Server."; 442 container srms-preference { 443 description "SRMS Preference TLV."; 444 leaf preference { 445 type uint8 { 446 range "0 .. 255"; 447 } 448 description "SRMS preference TLV, vlaue from 0 to 255."; 449 } 450 } 451 } 453 grouping adjacency-state { 454 description 455 "This group will extend adjacency state."; 456 list adjacency-sid { 457 key value; 458 config false; 459 leaf af { 460 type iana-rt-types:address-family; 461 description 462 "Address-family associated with the 463 segment ID"; 464 } 465 leaf value { 466 type uint32; 467 description 468 "Value of the Adj-SID."; 469 } 470 leaf weight { 471 type uint8; 472 description 473 "Weight associated with 474 the adjacency SID."; 475 } 476 leaf protection-requested { 477 type boolean; 478 description 479 "Describe if the adjacency SID 480 must be protected."; 481 } 482 description 483 "List of adjacency Segment IDs."; 484 } 485 } 487 grouping prefix-segment-id { 488 description 489 "This group defines segment routing extensions 490 for prefixes."; 492 list sid-list { 493 key value; 495 leaf flags { 496 type bits { 497 bit readvertisment { 498 position 7; 499 description 500 "If set, then the prefix to 501 which this Prefix-SID is attached, 502 has been propagated by the 503 router either from another level 504 or from redistribution."; 505 } 506 bit php { 507 position 5; 508 description 509 "If set, then the penultimate hop MUST NOT 510 pop the Prefix-SID before delivering the packet 511 to the node that advertised the Prefix-SID."; 512 } 513 bit explicit-null { 514 position 4; 515 description 516 "If set, any upstream neighbor of 517 the Prefix-SID originator MUST replace 518 the Prefix-SID with a 519 Prefix-SID having an 520 Explicit-NULL value (0 for IPv4 and 2 for 521 IPv6) before forwarding the packet."; 522 } 523 bit value { 524 position 3; 525 description 526 "If set, then the Prefix-SID carries a 527 value (instead of an index). 528 By default the flag is UNSET."; 529 } 530 bit local { 531 position 2; 532 description 533 "If set, then the value/index carried by 534 the Prefix-SID has local significance. 535 By default the flag is UNSET."; 536 } 537 } 538 description 539 "Describes flags associated with the 540 segment ID."; 541 } 543 leaf algorithm { 544 type uint8; 545 description 546 "Algorithm to be used for path computation."; 547 } 548 leaf value { 549 type uint32; 550 description 551 "Value of the prefix-SID."; 552 } 553 description 554 "List of segments."; 555 } 556 } 558 grouping adjacency-segment-id { 559 description 560 "This group defines segment routing extensions 561 for adjacencies."; 563 list sid-list { 564 key value; 566 leaf flags { 567 type bits { 568 bit address-family { 569 position 7; 570 description 571 "If unset, then the Adj-SID refers 572 to an adjacency with outgoing IPv4 encapsulation. 574 If set then the Adj-SID refers to an adjacency 575 with outgoing IPv6 encapsulation."; 576 } 577 bit backup { 578 position 6; 579 description 580 "If set, the Adj-SID refers to an 581 adjacency being protected 582 (e.g.: using IPFRR or MPLS-FRR)"; 583 } 584 bit value { 585 position 5; 586 description 587 "If set, then the SID carries a 588 value (instead of an index). 589 By default the flag is SET."; 590 } 591 bit local { 592 position 4; 593 description 594 "If set, then the value/index carried by 595 the SID has local significance. 596 By default the flag is SET."; 597 } 598 bit set { 599 position 3; 600 description 601 "When set, the S-Flag indicates that the 602 Adj-SID refers to a set of adjacencies."; 603 } 604 bit persistent { 605 position 2; 606 description 607 "When set, the P-Flag indicates that the 608 Adj-SID is persistently allocated."; 609 } 610 } 612 description 613 "Describes flags associated with the 614 segment ID."; 615 } 616 leaf weight { 617 type uint8; 618 description 619 "The value represents the weight of the Adj-SID 620 for the purpose of load balancing."; 621 } 622 leaf neighbor-id { 623 type isis:system-id; 624 description 625 "Describes the system ID of the neighbor 626 associated with the SID value. This is only 627 used on LAN adjacencies."; 628 } 629 leaf value { 630 type uint32; 631 description 632 "Value of the Adj-SID."; 633 } 634 description 635 "List of segments."; 636 } 637 } 639 grouping segment-routing-binding-tlv { 640 list segment-routing-bindings { 641 key "fec range"; 643 leaf fec { 644 type string; 645 description 646 "IP (v4 or v6) range to be bound to SIDs."; 647 } 649 leaf range { 650 type uint16; 651 description 652 "Describes number of elements to assign 653 a binding to."; 654 } 656 leaf flags { 657 type bits { 658 bit address-family { 659 position 7; 660 description 661 "If unset, then the Prefix FEC 662 carries an IPv4 Prefix. 663 If set then the Prefix FEC carries an 664 IPv6 Prefix."; 665 } 666 bit mirror { 667 position 6; 668 description 669 "Set if the advertised SID/path 670 corresponds to a mirrored context."; 671 } 672 bit flooding { 673 position 5; 674 description 675 "If the S bit is set(1), 676 the IS-IS Router CAPABILITY TLV 677 MUST be flooded across the entire routing domain. 678 If the S bit is 679 not set(0), the TLV MUST NOT be leaked between levels. 680 This bit MUST NOT be altered during the TLV leaking."; 681 } 682 bit down { 683 position 4; 684 description 685 "When the IS-IS Router CAPABILITY TLV is 686 leaked from level-2 to level-1, the D bit 687 MUST be set. Otherwise, this bit MUST 688 be clear. IS-IS Router capability TLVs 689 with the D bit set MUST NOT 690 be leaked from level-1 to level-2. 691 This is to prevent TLV looping."; 692 } 693 bit attached { 694 position 3; 695 description 696 "The originator of the SID/Label Binding TLV MAY set the 697 A bit in order to signal that the prefixes and SIDs 698 advertised in the SID/Label Binding TLV are directly 699 connected to their originators."; 700 } 702 } 703 description 704 "Flags of the binding."; 705 } 707 container binding { 708 container prefix-sid { 709 uses prefix-segment-id; 710 description 711 "Binding prefix SID to the range."; 712 } 713 description 714 "Bindings associated with the range."; 715 } 717 description 718 "This container describes list of SID/Label bindings. 719 ISIS reference is TLV 149."; 720 } 721 description 722 "Defines binding TLV for database."; 723 } 725 /* Cfg */ 727 augment "/rt:routing/" + 728 "rt:control-plane-protocols/rt:control-plane-protocol"+ 729 "/isis:isis" { 730 when "/rt:routing/rt:control-plane-protocols/"+ 731 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 732 description 733 "This augment ISIS routing protocol when used"; 734 } 735 description 736 "This augments ISIS protocol configuration 737 with segment routing."; 739 uses sr:sr-controlplane; 740 container protocol-srgb { 741 if-feature sr:protocol-srgb; 742 uses sr-cmn:srgb; 743 description 744 "Per-protocol SRGB."; 745 } 746 } 748 augment "/rt:routing/" + 749 "rt:control-plane-protocols/rt:control-plane-protocol"+ 750 "/isis:isis/isis:interfaces/isis:interface" { 751 when "/rt:routing/rt:control-plane-protocols/"+ 752 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 753 description 754 "This augment ISIS routing protocol when used"; 755 } 756 description 757 "This augments ISIS protocol configuration 758 with segment routing."; 760 uses sr:igp-interface; 761 } 763 augment "/rt:routing/" + 764 "rt:control-plane-protocols/rt:control-plane-protocol"+ 765 "/isis:isis/isis:interfaces/isis:interface"+ 766 "/isis:fast-reroute" { 767 when "/rt:routing/rt:control-plane-protocols/"+ 768 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 769 description 770 "This augment ISIS routing protocol when used"; 771 } 772 description 773 "This augments ISIS IP FRR with TILFA."; 775 container ti-lfa { 776 if-feature ti-lfa; 777 leaf enable { 778 type boolean; 779 description 780 "Enables TI-LFA computation."; 781 } 782 description 783 "TILFA configuration."; 784 } 785 } 787 augment "/rt:routing/" + 788 "rt:control-plane-protocols/rt:control-plane-protocol"+ 789 "/isis:isis/isis:interfaces/isis:interface"+ 790 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 791 when "/rt:routing/rt:control-plane-protocols/"+ 792 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 793 description 794 "This augment ISIS routing protocol when used"; 795 } 796 description 797 "This augments ISIS remoteLFA config with 798 use of segment-routing path."; 800 leaf use-segment-routing-path { 801 if-feature remote-lfa-sr; 802 type boolean; 803 description 804 "force remote LFA to use segment routing 805 path instead of LDP path."; 806 } 807 } 809 /* Operational states */ 811 augment "/rt:routing/" + 812 "rt:control-plane-protocols/rt:control-plane-protocol"+ 813 "/isis:isis/isis:interfaces/isis:interface" + 814 "/isis:adjacencies/isis:adjacency" { 815 when "/rt:routing/rt:control-plane-protocols/"+ 816 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 817 description 818 "This augment ISIS routing protocol when used"; 819 } 820 description 821 "This augments ISIS protocol configuration 822 with segment routing."; 824 uses adjacency-state; 825 } 827 augment "/rt:routing/" + 828 "rt:control-plane-protocols/rt:control-plane-protocol"+ 829 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 830 "/isis:router-capabilities" { 831 when "/rt:routing/rt:control-plane-protocols/"+ 832 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 833 description 834 "This augment ISIS routing protocol when used"; 835 } 836 description 837 "This augments ISIS protocol LSDB router capability."; 839 uses sr-capability; 840 uses sr-algorithm; 841 uses srlb; 842 uses srms-preference; 843 } 845 augment "/rt:routing/" + 846 "rt:control-plane-protocols/rt:control-plane-protocol"+ 847 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 848 "/isis:extended-is-neighbor/isis:neighbor" { 849 when "/rt:routing/rt:control-plane-protocols/"+ 850 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 851 description 852 "This augment ISIS routing protocol when used"; 853 } 854 description 855 "This augments ISIS protocol LSDB neighbor."; 856 uses adjacency-segment-id; 857 } 859 augment "/rt:routing/" + 860 "rt:control-plane-protocols/rt:control-plane-protocol"+ 861 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 862 "/isis:mt-is-neighbor/isis:neighbor" { 863 when "/rt:routing/rt:control-plane-protocols/"+ 864 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 865 description 866 "This augment ISIS routing protocol when used"; 867 } 868 description 869 "This augments ISIS protocol LSDB neighbor."; 870 uses adjacency-segment-id; 871 } 873 augment "/rt:routing/" + 874 "rt:control-plane-protocols/rt:control-plane-protocol"+ 875 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 876 "/isis:extended-ipv4-reachability/isis:prefixes" { 877 when "/rt:routing/rt:control-plane-protocols/"+ 878 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 879 description 880 "This augment ISIS routing protocol when used"; 881 } 882 description 883 "This augments ISIS protocol LSDB prefix."; 884 uses prefix-segment-id; 885 } 887 augment "/rt:routing/" + 888 "rt:control-plane-protocols/rt:control-plane-protocol"+ 889 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 890 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 891 when "/rt:routing/rt:control-plane-protocols/"+ 892 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 893 description 894 "This augment ISIS routing protocol when used"; 895 } 896 description 897 "This augments ISIS protocol LSDB prefix."; 898 uses prefix-segment-id; 899 } 901 augment "/rt:routing/" + 902 "rt:control-plane-protocols/rt:control-plane-protocol"+ 903 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 904 "/isis:ipv6-reachability/isis:prefixes" { 905 when "/rt:routing/rt:control-plane-protocols/"+ 906 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 907 description 908 "This augment ISIS routing protocol when used"; 909 } 910 description 911 "This augments ISIS protocol LSDB prefix."; 912 uses prefix-segment-id; 913 } 915 augment "/rt:routing/" + 916 "rt:control-plane-protocols/rt:control-plane-protocol"+ 917 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 918 "/isis:mt-ipv6-reachability/isis:prefixes" { 919 when "/rt:routing/rt:control-plane-protocols/"+ 920 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 921 description 922 "This augment ISIS routing protocol when used"; 923 } 924 description 925 "This augments ISIS protocol LSDB prefix."; 926 uses prefix-segment-id; 927 } 929 augment "/rt:routing/" + 930 "rt:control-plane-protocols/rt:control-plane-protocol"+ 931 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 932 when "/rt:routing/rt:control-plane-protocols/"+ 933 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 934 description 935 "This augment ISIS routing protocol when used"; 936 } 937 description 938 "This augments ISIS protocol LSDB."; 939 uses segment-routing-binding-tlv; 940 } 942 /* Notifications */ 944 } 945 947 7. Security Considerations 949 Configuration and state data defined in this document are designed to 950 be accessed via the NETCONF protocol [RFC6241]. 952 As IS-IS is an IGP protocol (critical piece of the network), ensuring 953 stability and security of the protocol is mandatory for the network 954 service. 956 Authors recommends to implement NETCONF access control model 957 ([RFC6536]) to restrict access to all or part of the configuration to 958 specific users. 960 8. Contributors 962 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 963 their major contributions to the draft. 965 9. Acknowledgements 967 Author affiliation with The MITRE Corporation is provided for 968 identification purposes only, and is not intended to convey or imply 969 MITRE's concurrence with, or support for, the positions, opinions or 970 viewpoints expressed. MITRE has approved this document for Public 971 Release, Distribution Unlimited, with Public Release Case Number 972 18-3281. 974 10. IANA Considerations 976 The IANA is requested to assign two new URIs from the IETF XML 977 registry ([RFC3688]). Authors are suggesting the following URI: 979 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 980 Registrant Contact: IS-IS WG 981 XML: N/A, the requested URI is an XML namespace 983 This document also requests one new YANG module name in the YANG 984 Module Names registry ([RFC6020]) with the following suggestion : 986 name: ietf-isis-sr 987 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 988 prefix: isis-sr 989 reference: RFC XXXX 991 11. Change log for ietf-isis-sr YANG module 993 11.1. From version -03 to version -04 995 o Fixed yang module indentations. 997 11.2. From version -02 to version -03 999 o Change address-family type according to routing types. 1001 11.3. From isis-sr document version -01 to version -02 1003 o NMDA compliancy. 1005 o Added SRLB in configuration and LSDB. 1007 o Added SR capability in LSDB. 1009 o Added SR algorithms in LSDB. 1011 o Added SRMS preference in LSDB. 1013 o Alignment with iana-rt-types module. 1015 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1016 13. 1018 11.4. From isis-sr document version -00 to version -01 1020 o Added P-Flag in Adj-SID. 1022 11.5. From isis document version -12 to isis-sr document version -00 1024 o Separate document for IS-IS SR extensions. 1026 11.6. From isis document version -12 to version -13 1028 o Align with new segment routing common module. 1030 11.7. From isis document version -09 to version -11 1032 o Fixed XPATH in 'when' expressions. 1034 11.8. From isis document version -08 to version -09 1036 o Align to draft-ietf-netmod-routing-cfg-23. 1038 11.9. From isis document version -07 to version -08 1040 o Align to draft-ietf-netmod-routing-cfg-21. 1042 12. Normative References 1044 [I-D.ietf-isis-segment-routing-extensions] 1045 Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., 1046 Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, 1047 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1048 segment-routing-extensions-22 (work in progress). 1050 [I-D.ietf-isis-yang-isis-cfg] 1051 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1052 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 1053 isis-yang-isis-cfg-35 (work in progress), March 2019. 1055 [I-D.ietf-spring-sr-yang] 1056 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1057 Data Model for Segment Routing", draft-ietf-spring-sr- 1058 yang-08 (work in progress), December 2017. 1060 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1061 Requirement Levels", BCP 14, RFC 2119, 1062 DOI 10.17487/RFC2119, March 1997, 1063 . 1065 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1066 DOI 10.17487/RFC3688, January 2004, 1067 . 1069 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1070 the Network Configuration Protocol (NETCONF)", RFC 6020, 1071 DOI 10.17487/RFC6020, October 2010, 1072 . 1074 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1075 and A. Bierman, Ed., "Network Configuration Protocol 1076 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1077 . 1079 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1080 Protocol (NETCONF) Access Control Model", RFC 6536, 1081 DOI 10.17487/RFC6536, March 2012, 1082 . 1084 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1085 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1086 . 1088 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1089 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1090 May 2017, . 1092 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1093 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1094 . 1096 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1097 and R. Wilton, "Network Management Datastore Architecture 1098 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1099 . 1101 Authors' Addresses 1103 Stephane Litkowski 1104 Orange 1106 Email: stephane.litkowski@orange.com 1108 Yinghzen Qu 1109 Huawei 1111 Email: yingzhen.qu@huawei.com 1113 Pushpasis Sarkar 1114 Individual 1116 Email: pushpasis.ietf@gmail.com 1118 Ing-Wher Chen 1119 The MITRE Corporation 1121 Email: ingwherchen@mitre.org 1123 Jeff Tantsura 1124 Individual 1126 Email: jefftant.ietf@gmail.com