idnits 2.17.00 (12 Aug 2021) /tmp/idnits34398/draft-ietf-isis-sr-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == The page length should not exceed 58 lines per page, but there was 2 longer pages, the longest (page 4) being 69 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([I-D.ietf-isis-segment-routing-extensions]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 127 has weird spacing: '...r-bound uin...' == Line 128 has weird spacing: '...r-bound uin...' == Line 503 has weird spacing: '... bit value...' == Line 511 has weird spacing: '... bit local...' -- The document date (July 25, 2017) is 1761 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-17 == Outdated reference: draft-ietf-spring-sr-yang has been published as RFC 9020 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 9 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 26, 2018 Huawei 6 P. Sarkar 7 Individual 8 I. Chen 9 Jabil 10 J. Tantsura 11 Individual 12 July 25, 2017 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-02 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage IS-IS Segment Routing 21 ([I-D.ietf-isis-segment-routing-extensions]. 23 Requirements Language 25 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 26 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 27 document are to be interpreted as described in [RFC2119]. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at http://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on January 26, 2018. 46 Copyright Notice 48 Copyright (c) 2017 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 64 2. IS-IS Segment Routing . . . . . . . . . . . . . . . . . . . . 3 65 3. IS-IS Segment Routing configuration . . . . . . . . . . . . . 5 66 3.1. Segment Routing activation . . . . . . . . . . . . . . . 5 67 3.2. Advertising mapping server policy . . . . . . . . . . . . 5 68 3.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 5 69 4. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 5 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 20 71 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20 72 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 73 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 74 9. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 21 75 9.1. From isis-sr document version -01 to version -02 . . . . 21 76 9.2. From isis-sr document version -00 to version -01 . . . . 21 77 9.3. From isis document version -12 to isis-sr document 78 version -00 . . . . . . . . . . . . . . . . . . . . . . . 21 79 9.4. From isis document version -12 to version -13 . . . . . . 21 80 9.5. From isis document version -09 to version -11 . . . . . . 21 81 9.6. From isis document version -08 to version -09 . . . . . . 22 82 9.7. From isis document version -07 to version -08 . . . . . . 22 83 10. Normative References . . . . . . . . . . . . . . . . . . . . 22 84 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 86 1. Overview 88 YANG [RFC6020] [RFC7950] is a data definition language used to 89 define the contents of a conceptual data store that allows networked 90 devices to be managed using NETCONF [RFC6241]. YANG is proving 91 relevant beyond its initial confines, as bindings to other interfaces 92 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 93 defined. Furthermore, YANG data models can be used as the basis for 94 implementation of other interfaces, such as CLI and programmatic 95 APIs. 97 This document defines a YANG data model that can be used to configure 98 and manage IS-IS Segment Routing and it is an augmentation to the IS- 99 IS YANG data model. 101 2. IS-IS Segment Routing 103 This document defines a model for IS-IS Segment Routing feature. It 104 is an augmentation of the IS-IS base model. 106 The IS-IS SR YANG module requires support for the base segment 107 routing module [I-D.ietf-spring-sr-yang], which defines the global 108 segment routing configuration independent of any specific routing 109 protocol configuration, and support of IS-IS base model 110 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 111 and state. 113 The figure below describes the overall structure of the isis-sr YANG 114 module: 116 module: ietf-isis-sr 117 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 118 /isis:isis: 119 +--rw segment-routing 120 | +--rw enabled? boolean 121 | +--rw bindings 122 | +--rw advertise 123 | | ... 124 | +--rw receive? boolean 125 +--rw protocol-srgb {sr:protocol-srgb}? 126 +--rw srgb* [lower-bound upper-bound] 127 +--rw lower-bound uint32 128 +--rw upper-bound uint32 129 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 130 /isis:isis/isis:interfaces/isis:interface: 131 +--rw segment-routing 132 +--rw adjacency-sid 133 +--rw advertise-adj-group-sid* [group-id] 134 | ... 135 +--rw advertise-protection? enumeration 136 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 137 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: 138 +--rw ti-lfa {ti-lfa}? 139 +--rw enable? boolean 140 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 141 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/isis:lfa/isi 142 s:remote-lfa: 143 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 144 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 145 /isis:isis/isis:interfaces/isis:interface/isis:adjacencies/isis:adjacenc 146 y: 147 +--ro adjacency-sid* [value] 148 +--ro af? identityref 149 +--ro value uint32 150 +--ro weight? uint8 151 +--ro protection-requested? boolean 152 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 153 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:router-capabilities 154 : 155 +--ro sr-capability 156 | +--ro flags? bits 157 | +--ro global-blocks 158 | +--ro global-block* 159 | ... 160 +--ro sr-algorithms 161 | +--ro sr-algorithm* uint8 162 +--ro local-blocks 163 | +--ro local-block* 164 | +--ro range-size? uint32 165 | +--ro sid-sub-tlv 166 | ... 167 +--ro srms-preference 168 +--ro preference? uint8 169 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 170 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbo 171 r/isis:neighbor: 172 +--ro sid-list* [value] 173 +--ro flags? bits 174 +--ro weight? uint8 175 +--ro neighbor-id? isis:system-id 176 +--ro value uint32 177 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 178 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/isis 179 :neighbor: 180 +--ro sid-list* [value] 181 +--ro flags? bits 182 +--ro weight? uint8 183 +--ro neighbor-id? isis:system-id 184 +--ro value uint32 185 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 186 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4-reach 187 ability/isis:prefixes: 188 +--ro sid-list* [value] 189 +--ro flags? bits 190 +--ro algorithm? uint8 191 +--ro value uint32 192 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 193 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-ipv4-re 194 achability/isis:prefixes: 195 +--ro sid-list* [value] 196 +--ro flags? bits 197 +--ro algorithm? uint8 198 +--ro value uint32 199 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 200 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachability/i 201 sis:prefixes: 202 +--ro sid-list* [value] 203 +--ro flags? bits 204 +--ro algorithm? uint8 205 +--ro value uint32 206 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 207 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachabilit 208 y/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/rt:control-plane-protocol 214 /isis:isis/isis:database/isis:level-db/isis:lsp: 215 +--ro segment-routing-bindings* [fec range] 216 +--ro fec string 217 +--ro range uint16 218 +--ro flags? bits 219 +--ro binding 220 +--ro prefix-sid 221 ... 223 3. IS-IS Segment Routing configuration 225 3.1. Segment Routing activation 227 Activation of segment-routing IS-IS is done by setting the "enable" 228 leaf to true. This triggers advertisement of segment-routing 229 extensions based on the configuration parameters that have been setup 230 using the base segment routing module. 232 3.2. Advertising mapping server policy 234 The base segment routing module defines mapping server policies. By 235 default, IS-IS will not advertise nor receive any mapping server 236 entry. The IS-IS segment-routing module allows to advertise one or 237 multiple mapping server policies through the "bindings/advertise/ 238 policies" leaf-list. The "bindings/receive" leaf allows to enable 239 the reception of mapping server entries. 241 3.3. IP Fast reroute 243 IS-IS SR model augments the fast-reroute container under interface. 244 It brings the ability to activate TI-LFA (topology independent LFA) 245 and also enhances remote LFA to use segment-routing tunneling instead 246 of LDP. 248 4. IS-IS Segment Routing YANG Module 250 file "ietf-isis-sr@2017-07-25.yang" 252 module ietf-isis-sr { 253 namespace "urn:ietf:params:xml:ns:" 254 + "yang:ietf-isis-sr"; 255 prefix isis-sr; 257 import ietf-routing { 258 prefix "rt"; 260 } 262 import ietf-segment-routing-common { 263 prefix "sr-cmn"; 264 } 266 import ietf-segment-routing { 267 prefix "sr"; 268 } 270 import ietf-isis { 271 prefix "isis"; 272 } 274 import iana-routing-types { 275 prefix "iana-rt-types"; 276 } 278 organization 279 "IETF ISIS Working Group"; 281 contact 282 "WG List: <mailto:spring@ietf.org> 284 Editor: Stephane Litkowski 285 <mailto:stephane.litkowski@orange.com> 287 Acee Lindem 288 <mailto:acee@cisco.com> 289 Yingzhen Qu 290 <mailto:yiqu@cisco.com> 291 Pushpasis Sarkar 292 <mailto:pushpasis.ietf@gmail.com> 293 Ing-Wher Chen 294 <mailto:ichen@kuatrotech.com> 295 Jeff Tantsura 296 <mailto:jefftant.ietf@gmail.com> 298 "; 300 description 301 "The YANG module defines a generic configuration model for 302 Segment routing ISIS extensions common across all of the vendor 303 implementations."; 305 revision 2017-07-25 { 306 description 307 "Initial revision."; 308 reference "RFC XXXX"; 309 } 311 /* Identities */ 313 /* Features */ 315 feature remote-lfa-sr { 316 description 317 "Enhance rLFA to use SR path."; 318 } 320 feature ti-lfa { 321 description 322 "Enhance IPFRR with ti-lfa 323 support"; 324 } 326 /* Groupings */ 328 grouping sid-sub-tlv { 329 description "SID/Label sub-TLV grouping."; 330 container sid-sub-tlv { 331 description 332 "Used to advertise the SID/Label associated with a 333 prefix or adjacency."; 334 leaf sid { 335 type uint32; 336 description 337 "Segment Identifier (SID) - A 20 bit label or 338 32 bit SID."; 339 } 340 } 341 } 343 grouping sr-capability { 344 description 345 "SR capability grouping."; 346 container sr-capability { 347 description 348 "Segment Routing capability."; 349 leaf flags { 350 type bits { 351 bit mpls-ipv4 { 352 position 0; 353 description 354 "If set, then the router is capable of 355 processing SR MPLS encapsulated IPv4 packets 356 on all interfaces."; 357 } 358 bit mpls-ipv6 { 359 position 1; 360 description 361 "If set, then the router is capable of 362 processing SR MPLS encapsulated IPv6 packets 363 on all interfaces."; 364 } 365 } 366 description 367 "Flags."; 368 } 369 container global-blocks { 370 description 371 "Segment Routing Global Blocks."; 372 list global-block { 373 description "Segment Routing Global Block."; 374 leaf range-size { 375 type uint32; 376 description "The SID range."; 377 } 378 uses sid-sub-tlv; 379 } 380 } 381 } 382 } 384 grouping sr-algorithm { 385 description 386 "SR algorithm grouping."; 387 container sr-algorithms { 388 description "All SR algorithms."; 389 leaf-list sr-algorithm { 390 type uint8; 391 description 392 "The Segment Routing (SR) algorithms that the router is 393 currently using."; 394 } 395 } 396 } 398 grouping srlb { 399 description 400 "SR Local Block grouping."; 401 container local-blocks { 402 description "List of SRLBs."; 403 list local-block { 404 description "Segment Routing Local Block."; 405 leaf range-size { 406 type uint32; 407 description "The SID range."; 408 } 409 uses sid-sub-tlv; 410 } 411 } 412 } 414 grouping srms-preference { 415 description "The SRMS preference TLV is used to advertise 416 a preference associated with the node that acts 417 as an SR Mapping Server."; 418 container srms-preference { 419 description "SRMS Preference TLV."; 420 leaf preference { 421 type uint8 { 422 range "0 .. 255"; 423 } 424 description "SRMS preference TLV, vlaue from 0 to 255."; 425 } 426 } 427 } 429 grouping adjacency-state { 430 description 431 "This group will extend adjacency state."; 432 list adjacency-sid { 433 key value; 434 config false; 435 leaf af { 436 type identityref { 437 base iana-rt-types:address-family; 438 } 439 description 440 "Address-family associated with the 441 segment ID"; 442 } 443 leaf value { 444 type uint32; 445 description 446 "Value of the Adj-SID."; 447 } 448 leaf weight { 449 type uint8; 450 description 451 "Weight associated with 452 the adjacency SID."; 453 } 454 leaf protection-requested { 455 type boolean; 456 description 457 "Describe if the adjacency SID 458 must be protected."; 459 } 460 description 461 "List of adjacency Segment IDs."; 462 } 463 } 465 grouping prefix-segment-id { 466 description 467 "This group defines segment routing extensions 468 for prefixes."; 470 list sid-list { 471 key value; 473 leaf flags { 474 type bits { 475 bit readvertisment { 476 position 7; 477 description 478 "If set, then the prefix to 479 which this Prefix-SID is attached, 480 has been propagated by the 481 router either from another level 482 or from redistribution."; 483 } 485 bit php { 486 position 5; 487 description 488 "If set, then the penultimate hop MUST NOT 489 pop the Prefix-SID before delivering the packet 490 to the node 491 that advertised the Prefix-SID."; 492 } 493 bit explicit-null { 494 position 4; 495 description 496 "If set, any upstream neighbor of 497 the Prefix-SID originator MUST replace 498 the Prefix-SID with a 499 Prefix-SID having an 500 Explicit-NULL value (0 for IPv4 and 2 for 501 IPv6) before forwarding the packet."; 502 } 503 bit value { 504 position 3; 505 description 506 "If set, then the Prefix-SID carries a 507 value (instead of an index). 508 By default the flag is UNSET."; 510 } 511 bit local { 512 position 2; 513 description 514 "If set, then the value/index carried by 515 the Prefix-SID has local significance. 516 By default the flag is UNSET."; 517 } 518 } 519 description 520 "Describes flags associated with the 521 segment ID."; 522 } 524 leaf algorithm { 525 type uint8; 526 description 527 "Algorithm to be used for path computation."; 528 } 529 leaf value { 530 type uint32; 531 description 532 "Value of the prefix-SID."; 533 } 534 description 535 "List of segments."; 536 } 537 } 539 grouping adjacency-segment-id { 540 description 541 "This group defines segment routing extensions 542 for adjacencies."; 544 list sid-list { 545 key value; 547 leaf flags { 548 type bits { 549 bit address-family { 550 position 7; 551 description 552 "If unset, then the Adj-SID refers 553 to an adjacency with outgoing IPv4 encapsulation. 554 If set then the Adj-SID refers to an adjacency 555 with outgoing IPv6 encapsulation."; 556 } 557 bit backup { 558 position 6; 559 description 560 "If set, the Adj-SID refers to an 561 adjacency being protected 562 (e.g.: using IPFRR or MPLS-FRR)"; 563 } 564 bit value { 565 position 5; 566 description 567 "If set, then the SID carries a 568 value (instead of an index). 569 By default the flag is SET."; 571 } 572 bit local { 573 position 4; 574 description 575 "If set, then the value/index carried by 576 the SID has local significance. 577 By default the flag is SET."; 578 } 579 bit set { 580 position 3; 581 description 582 "When set, the S-Flag indicates that the 583 Adj-SID refers to a set of adjacencies."; 584 } 585 bit persistent { 586 position 2; 587 description 588 "When set, the P-Flag indicates that the 589 Adj-SID is persistently allocated."; 590 } 592 } 594 description 595 "Describes flags associated with the 596 segment ID."; 597 } 598 leaf weight { 599 type uint8; 600 description 601 "The value represents the weight of the Adj-SID 602 for the purpose of load balancing."; 603 } 604 leaf neighbor-id { 605 type isis:system-id; 606 description 607 "Describes the system ID of the neighbor 608 associated with the SID value. This is only 609 used on LAN adjacencies."; 610 } 611 leaf value { 612 type uint32; 613 description 614 "Value of the Adj-SID."; 615 } 616 description 617 "List of segments."; 618 } 620 } 621 grouping segment-routing-binding-tlv { 622 list segment-routing-bindings { 624 key "fec range"; 626 leaf fec { 627 type string; 628 description 629 "IP (v4 or v6) range to be bound to SIDs."; 630 } 632 leaf range { 633 type uint16; 634 description 635 "Describes number of elements to assign 636 a binding to."; 637 } 639 leaf flags { 640 type bits { 641 bit address-family { 642 position 7; 643 description 644 "If unset, then the Prefix FEC 645 carries an IPv4 Prefix. 646 If set then the Prefix FEC carries an 647 IPv6 Prefix."; 648 } 649 bit mirror { 650 position 6; 651 description 652 "Set if the advertised SID/path 653 corresponds to a mirrored context. 654 "; 655 } 656 bit flooding { 657 position 5; 658 description 659 "If the S bit is set(1), 660 the IS-IS Router CAPABILITY TLV 661 MUST be flooded across the entire routing domain. 662 If the S bit is 663 not set(0), the TLV MUST NOT be leaked between levels. 664 This bit MUST NOT be altered during the TLV leaking."; 665 } 666 bit down { 667 position 4; 668 description 669 "When the IS-IS Router CAPABILITY TLV is 670 leaked from level-2 to level-1, the D bit 671 MUST be set. Otherwise, this bit MUST 672 be clear. IS-IS Router capability TLVs 673 with the D bit set MUST NOT 674 be leaked from level-1 to level-2. 675 This is to prevent TLV looping. 676 "; 677 } 678 bit attached { 679 position 3; 680 description 681 "The originator of the SID/Label Binding 682 TLV MAY set the A bit in order to signal 683 that the prefixes and 684 SIDs advertised in the SID/Label Binding 685 TLV are directly 686 connected to their originators. 687 "; 689 } 691 } 692 description 693 "Flags of the binding."; 694 } 696 container binding { 697 container prefix-sid { 698 uses prefix-segment-id; 699 description 700 "Binding prefix SID to the range."; 701 } 702 description 703 "Bindings associated with the range."; 704 } 706 description 707 "This container describes list of SID/Label 708 bindings. 709 ISIS reference is TLV 149."; 710 } 711 description 712 "Defines binding TLV for database."; 714 } 715 /* Cfg */ 717 augment "/rt:routing/" + 718 "rt:control-plane-protocols/rt:control-plane-protocol"+ 719 "/isis:isis" { 720 when "/rt:routing/rt:control-plane-protocols/"+ 721 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 722 description 723 "This augment ISIS routing protocol when used"; 724 } 725 description 726 "This augments ISIS protocol configuration 727 with segment routing."; 729 uses sr:controlplane-cfg; 730 container protocol-srgb { 731 if-feature sr:protocol-srgb; 732 uses sr-cmn:srgb-cfg; 733 description 734 "Per-protocol SRGB."; 735 } 736 } 737 augment "/rt:routing/" + 738 "rt:control-plane-protocols/rt:control-plane-protocol"+ 739 "/isis:isis/isis:interfaces/isis:interface" { 740 when "/rt:routing/rt:control-plane-protocols/"+ 741 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 742 description 743 "This augment ISIS routing protocol when used"; 744 } 745 description 746 "This augments ISIS protocol configuration 747 with segment routing."; 749 uses sr:igp-interface-cfg; 750 } 752 augment "/rt:routing/" + 753 "rt:control-plane-protocols/rt:control-plane-protocol"+ 754 "/isis:isis/isis:interfaces/isis:interface"+ 755 "/isis:fast-reroute" { 756 when "/rt:routing/rt:control-plane-protocols/"+ 757 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 758 description 759 "This augment ISIS routing protocol when used"; 760 } 761 description 762 "This augments ISIS IP FRR with TILFA."; 764 container ti-lfa { 765 if-feature ti-lfa; 766 leaf enable { 767 type boolean; 768 description 769 "Enables TI-LFA computation."; 770 } 771 description 772 "TILFA configuration."; 773 } 775 } 777 augment "/rt:routing/" + 778 "rt:control-plane-protocols/rt:control-plane-protocol"+ 779 "/isis:isis/isis:interfaces/isis:interface"+ 780 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 781 when "/rt:routing/rt:control-plane-protocols/"+ 782 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 783 description 784 "This augment ISIS routing protocol when used"; 786 } 787 description 788 "This augments ISIS remoteLFA config with 789 use of segment-routing path."; 791 leaf use-segment-routing-path { 792 if-feature remote-lfa-sr; 793 type boolean; 794 description 795 "force remote LFA to use segment routing 796 path instead of LDP path."; 797 } 799 } 801 /* Operational states */ 803 augment "/rt:routing/" + 804 "rt:control-plane-protocols/rt:control-plane-protocol"+ 805 "/isis:isis/isis:interfaces/isis:interface" + 806 "/isis:adjacencies/isis:adjacency" { 807 when "/rt:routing/rt:control-plane-protocols/"+ 808 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 809 description 810 "This augment ISIS routing protocol when used"; 811 } 812 description 813 "This augments ISIS protocol configuration 814 with segment routing."; 816 uses adjacency-state; 817 } 819 augment "/rt:routing/" + 820 "rt:control-plane-protocols/rt:control-plane-protocol"+ 821 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 822 "/isis:router-capabilities" { 823 when "/rt:routing/rt:control-plane-protocols/"+ 824 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 825 description 826 "This augment ISIS routing protocol when used"; 827 } 828 description 829 "This augments ISIS protocol LSDB router capability."; 831 uses sr-capability; 832 uses sr-algorithm; 833 uses srlb; 834 uses srms-preference; 836 } 838 augment "/rt:routing/" + 839 "rt:control-plane-protocols/rt:control-plane-protocol"+ 840 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 841 "/isis:extended-is-neighbor/isis:neighbor" { 842 when "/rt:routing/rt:control-plane-protocols/"+ 843 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 844 description 845 "This augment ISIS routing protocol when used"; 846 } 847 description 848 "This augments ISIS protocol LSDB neighbor."; 849 uses adjacency-segment-id; 851 } 852 augment "/rt:routing/" + 853 "rt:control-plane-protocols/rt:control-plane-protocol"+ 854 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 855 "/isis:mt-is-neighbor/isis:neighbor" { 856 when "/rt:routing/rt:control-plane-protocols/"+ 857 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 858 description 859 "This augment ISIS routing protocol when used"; 860 } 861 description 862 "This augments ISIS protocol LSDB neighbor."; 863 uses adjacency-segment-id; 864 } 866 augment "/rt:routing/" + 867 "rt:control-plane-protocols/rt:control-plane-protocol"+ 868 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 869 "/isis:extended-ipv4-reachability/isis:prefixes" { 870 when "/rt:routing/rt:control-plane-protocols/"+ 871 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 872 description 873 "This augment ISIS routing protocol when used"; 874 } 875 description 876 "This augments ISIS protocol LSDB prefix."; 878 uses prefix-segment-id; 879 } 881 augment "/rt:routing/" + 882 "rt:control-plane-protocols/rt:control-plane-protocol"+ 883 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 884 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 885 when "/rt:routing/rt:control-plane-protocols/"+ 886 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 887 description 888 "This augment ISIS routing protocol when used"; 889 } 890 description 891 "This augments ISIS protocol LSDB prefix."; 892 uses prefix-segment-id; 894 } 895 augment "/rt:routing/" + 896 "rt:control-plane-protocols/rt:control-plane-protocol"+ 897 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 898 "/isis:ipv6-reachability/isis:prefixes" { 899 when "/rt:routing/rt:control-plane-protocols/"+ 900 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 901 description 902 "This augment ISIS routing protocol when used"; 903 } 904 description 905 "This augments ISIS protocol LSDB prefix."; 906 uses prefix-segment-id; 908 } 909 augment "/rt:routing/" + 910 "rt:control-plane-protocols/rt:control-plane-protocol"+ 911 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 912 "/isis:mt-ipv6-reachability/isis:prefixes" { 913 when "/rt:routing/rt:control-plane-protocols/"+ 914 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 915 description 916 "This augment ISIS routing protocol when used"; 917 } 918 description 919 "This augments ISIS protocol LSDB prefix."; 920 uses prefix-segment-id; 922 } 923 augment "/rt:routing/" + 924 "rt:control-plane-protocols/rt:control-plane-protocol"+ 925 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 926 when "/rt:routing/rt:control-plane-protocols/"+ 927 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 928 description 929 "This augment ISIS routing protocol when used"; 930 } 931 description 932 "This augments ISIS protocol LSDB."; 933 uses segment-routing-binding-tlv; 935 } 937 /* Notifications */ 939 } 941 943 5. Security Considerations 945 Configuration and state data defined in this document are designed to 946 be accessed via the NETCONF protocol [RFC6241]. 948 As IS-IS is an IGP protocol (critical piece of the network), ensuring 949 stability and security of the protocol is mandatory for the network 950 service. 952 Authors recommends to implement NETCONF access control model 953 ([RFC6536]) to restrict access to all or part of the configuration to 954 specific users. 956 6. Contributors 958 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 959 their major contributions to the draft. 961 7. Acknowledgements 963 TBD. 965 8. IANA Considerations 967 The IANA is requested to assign two new URIs from the IETF XML 968 registry ([RFC3688]). Authors are suggesting the following URI: 970 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 971 Registrant Contact: IS-IS WG 972 XML: N/A, the requested URI is an XML namespace 974 This document also requests one new YANG module name in the YANG 975 Module Names registry ([RFC6020]) with the following suggestion : 977 name: ietf-isis-sr 978 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 979 prefix: isis-sr 980 reference: RFC XXXX 982 9. Change log for ietf-isis-sr YANG module 984 9.1. From isis-sr document version -01 to version -02 986 o NMDA compliancy. 988 o Added SRLB in configuration and LSDB. 990 o Added SR capability in LSDB. 992 o Added SR algorithms in LSDB. 994 o Added SRMS preference in LSDB. 996 o Alignment with iana-rt-types module. 998 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 999 13. 1001 9.2. From isis-sr document version -00 to version -01 1003 o Added P-Flag in Adj-SID. 1005 9.3. From isis document version -12 to isis-sr document version -00 1007 o Separate document for IS-IS SR extensions. 1009 9.4. From isis document version -12 to version -13 1011 o Align with new segment routing common module. 1013 9.5. From isis document version -09 to version -11 1015 o Fixed XPATH in 'when' expressions. 1017 9.6. From isis document version -08 to version -09 1019 o Align to draft-ietf-netmod-routing-cfg-23. 1021 9.7. From isis document version -07 to version -08 1023 o Align to draft-ietf-netmod-routing-cfg-21. 1025 10. Normative References 1027 [I-D.ietf-isis-segment-routing-extensions] 1028 Previdi, S., Filsfils, C., Bashandy, A., Gredler, H., 1029 Litkowski, S., Decraene, B., and j. jefftant@gmail.com, 1030 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1031 segment-routing-extensions-13 (work in progress), June 1032 2017. 1034 [I-D.ietf-isis-yang-isis-cfg] 1035 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1036 Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- 1037 isis-yang-isis-cfg-17 (work in progress), March 2017. 1039 [I-D.ietf-spring-sr-yang] 1040 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1041 Data Model for Segment Routing", draft-ietf-spring-sr- 1042 yang-07 (work in progress), July 2017. 1044 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1045 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 1046 RFC2119, March 1997, 1047 . 1049 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1050 DOI 10.17487/RFC3688, January 2004, 1051 . 1053 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1054 the Network Configuration Protocol (NETCONF)", RFC 6020, 1055 DOI 10.17487/RFC6020, October 2010, 1056 . 1058 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1059 and A. Bierman, Ed., "Network Configuration Protocol 1060 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1061 . 1063 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1064 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 1065 10.17487/RFC6536, March 2012, 1066 . 1068 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1069 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1070 . 1072 Authors' Addresses 1074 Stephane Litkowski 1075 Orange 1077 Email: stephane.litkowski@orange.com 1079 Yinghzen Qu 1080 Huawei 1082 Email: yingzhen.qu@huawei.com 1084 Pushpasis Sarkar 1085 Individual 1087 Email: pushpasis.ietf@gmail.com 1089 Ing-Wher Chen 1090 Jabil 1092 Email: ing-wher_chen@jabil.com 1094 Jeff Tantsura 1095 Individual 1097 Email: jefftant.ietf@gmail.com