idnits 2.17.00 (12 Aug 2021) /tmp/idnits30453/draft-ietf-isis-sr-yang-03.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 128 has weird spacing: '...r-bound uin...' == Line 129 has weird spacing: '...r-bound uin...' == Line 501 has weird spacing: '... bit value...' == Line 509 has weird spacing: '... bit local...' -- The document date (January 15, 2018) is 1587 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-19 == 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: July 19, 2018 Huawei 6 P. Sarkar 7 Individual 8 I. Chen 9 Jabil 10 J. Tantsura 11 Individual 12 January 15, 2018 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-03 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 July 19, 2018. 46 Copyright Notice 48 Copyright (c) 2018 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 version -02 to version -03 . . . . . . . . . . . . . 21 76 9.2. From isis-sr document version -01 to version -02 . . . . 21 77 9.3. From isis-sr document version -00 to version -01 . . . . 21 78 9.4. From isis document version -12 to isis-sr document 79 version -00 . . . . . . . . . . . . . . . . . . . . . . . 21 80 9.5. From isis document version -12 to version -13 . . . . . . 21 81 9.6. From isis document version -09 to version -11 . . . . . . 22 82 9.7. From isis document version -08 to version -09 . . . . . . 22 83 9.8. From isis document version -07 to version -08 . . . . . . 22 84 10. Normative References . . . . . . . . . . . . . . . . . . . . 22 85 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 87 1. Overview 89 YANG [RFC6020] [RFC7950] is a data definition language used to 90 define the contents of a conceptual data store that allows networked 91 devices to be managed using NETCONF [RFC6241]. YANG is proving 92 relevant beyond its initial confines, as bindings to other interfaces 93 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 94 defined. Furthermore, YANG data models can be used as the basis for 95 implementation of other interfaces, such as CLI and programmatic 96 APIs. 98 This document defines a YANG data model that can be used to configure 99 and manage IS-IS Segment Routing and it is an augmentation to the IS- 100 IS YANG data model. 102 2. IS-IS Segment Routing 104 This document defines a model for IS-IS Segment Routing feature. It 105 is an augmentation of the IS-IS base model. 107 The IS-IS SR YANG module requires support for the base segment 108 routing module [I-D.ietf-spring-sr-yang], which defines the global 109 segment routing configuration independent of any specific routing 110 protocol configuration, and support of IS-IS base model 111 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 112 and state. 114 The figure below describes the overall structure of the isis-sr YANG 115 module: 117 module: ietf-isis-sr 118 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 119 /isis:isis: 120 +--rw segment-routing 121 | +--rw enabled? boolean 122 | +--rw bindings 123 | +--rw advertise 124 | | ... 125 | +--rw receive? boolean 126 +--rw protocol-srgb {sr:protocol-srgb}? 127 +--rw srgb* [lower-bound upper-bound] 128 +--rw lower-bound uint32 129 +--rw upper-bound uint32 130 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 131 /isis:isis/isis:interfaces/isis:interface: 132 +--rw segment-routing 133 +--rw adjacency-sid 134 +--rw advertise-adj-group-sid* [group-id] 135 | ... 136 +--rw advertise-protection? enumeration 137 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 138 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: 139 +--rw ti-lfa {ti-lfa}? 140 +--rw enable? boolean 141 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 142 /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/isis:lfa/isi 143 s:remote-lfa: 144 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 145 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 146 /isis:isis/isis:interfaces/isis:interface/isis:adjacencies/isis:adjacenc 147 y: 148 +--ro adjacency-sid* [value] 149 +--ro af? iana-rt-types:address-family 150 +--ro value uint32 151 +--ro weight? uint8 152 +--ro protection-requested? boolean 153 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 154 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:router-capabilities 155 : 156 +--ro sr-capability 157 | +--ro flags? bits 158 | +--ro global-blocks 159 | +--ro global-block* 160 | ... 161 +--ro sr-algorithms 162 | +--ro sr-algorithm* uint8 163 +--ro local-blocks 164 | +--ro local-block* 165 | +--ro range-size? uint32 166 | +--ro sid-sub-tlv 167 | ... 168 +--ro srms-preference 169 +--ro preference? uint8 170 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 171 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbo 172 r/isis:neighbor: 173 +--ro sid-list* [value] 174 +--ro flags? bits 175 +--ro weight? uint8 176 +--ro neighbor-id? isis:system-id 177 +--ro value uint32 178 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 179 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/isis 180 :neighbor: 181 +--ro sid-list* [value] 182 +--ro flags? bits 183 +--ro weight? uint8 184 +--ro neighbor-id? isis:system-id 185 +--ro value uint32 186 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 187 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4-reach 188 ability/isis:prefixes: 189 +--ro sid-list* [value] 190 +--ro flags? bits 191 +--ro algorithm? uint8 192 +--ro value uint32 193 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 194 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-ipv4-re 195 achability/isis:prefixes: 196 +--ro sid-list* [value] 197 +--ro flags? bits 198 +--ro algorithm? uint8 199 +--ro value uint32 200 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 201 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachability/i 202 sis:prefixes: 203 +--ro sid-list* [value] 204 +--ro flags? bits 205 +--ro algorithm? uint8 206 +--ro value uint32 207 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 208 /isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachabilit 209 y/isis:prefixes: 210 +--ro sid-list* [value] 211 +--ro flags? bits 212 +--ro algorithm? uint8 213 +--ro value uint32 214 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 215 /isis:isis/isis:database/isis:level-db/isis:lsp: 216 +--ro segment-routing-bindings* [fec range] 217 +--ro fec string 218 +--ro range uint16 219 +--ro flags? bits 220 +--ro binding 221 +--ro prefix-sid 222 ... 224 3. IS-IS Segment Routing configuration 226 3.1. Segment Routing activation 228 Activation of segment-routing IS-IS is done by setting the "enable" 229 leaf to true. This triggers advertisement of segment-routing 230 extensions based on the configuration parameters that have been setup 231 using the base segment routing module. 233 3.2. Advertising mapping server policy 235 The base segment routing module defines mapping server policies. By 236 default, IS-IS will not advertise nor receive any mapping server 237 entry. The IS-IS segment-routing module allows to advertise one or 238 multiple mapping server policies through the "bindings/advertise/ 239 policies" leaf-list. The "bindings/receive" leaf allows to enable 240 the reception of mapping server entries. 242 3.3. IP Fast reroute 244 IS-IS SR model augments the fast-reroute container under interface. 245 It brings the ability to activate TI-LFA (topology independent LFA) 246 and also enhances remote LFA to use segment-routing tunneling instead 247 of LDP. 249 4. IS-IS Segment Routing YANG Module 251 file "ietf-isis-sr@2018-01-15.yang" 253 module ietf-isis-sr { 254 namespace "urn:ietf:params:xml:ns:" 255 + "yang:ietf-isis-sr"; 256 prefix isis-sr; 258 import ietf-routing { 259 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 2018-01-15 { 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 iana-rt-types:address-family; 437 description 438 "Address-family associated with the 439 segment ID"; 440 } 441 leaf value { 442 type uint32; 443 description 444 "Value of the Adj-SID."; 445 } 446 leaf weight { 447 type uint8; 448 description 449 "Weight associated with 450 the adjacency SID."; 451 } 452 leaf protection-requested { 453 type boolean; 454 description 455 "Describe if the adjacency SID 456 must be protected."; 457 } 458 description 459 "List of adjacency Segment IDs."; 460 } 461 } 463 grouping prefix-segment-id { 464 description 465 "This group defines segment routing extensions 466 for prefixes."; 468 list sid-list { 469 key value; 471 leaf flags { 472 type bits { 473 bit readvertisment { 474 position 7; 475 description 476 "If set, then the prefix to 477 which this Prefix-SID is attached, 478 has been propagated by the 479 router either from another level 480 or from redistribution."; 481 } 483 bit php { 484 position 5; 485 description 486 "If set, then the penultimate hop MUST NOT 487 pop the Prefix-SID before delivering the packet 488 to the node 489 that advertised the Prefix-SID."; 490 } 491 bit explicit-null { 492 position 4; 493 description 494 "If set, any upstream neighbor of 495 the Prefix-SID originator MUST replace 496 the Prefix-SID with a 497 Prefix-SID having an 498 Explicit-NULL value (0 for IPv4 and 2 for 499 IPv6) before forwarding the packet."; 500 } 501 bit value { 502 position 3; 503 description 504 "If set, then the Prefix-SID carries a 505 value (instead of an index). 506 By default the flag is UNSET."; 508 } 509 bit local { 510 position 2; 511 description 512 "If set, then the value/index carried by 513 the Prefix-SID has local significance. 514 By default the flag is UNSET."; 515 } 516 } 517 description 518 "Describes flags associated with the 519 segment ID."; 520 } 522 leaf algorithm { 523 type uint8; 524 description 525 "Algorithm to be used for path computation."; 526 } 527 leaf value { 528 type uint32; 529 description 530 "Value of the prefix-SID."; 531 } 532 description 533 "List of segments."; 534 } 535 } 537 grouping adjacency-segment-id { 538 description 539 "This group defines segment routing extensions 540 for adjacencies."; 542 list sid-list { 543 key value; 545 leaf flags { 546 type bits { 547 bit address-family { 548 position 7; 549 description 550 "If unset, then the Adj-SID refers 551 to an adjacency with outgoing IPv4 encapsulation. 552 If set then the Adj-SID refers to an adjacency 553 with outgoing IPv6 encapsulation."; 554 } 555 bit backup { 556 position 6; 557 description 558 "If set, the Adj-SID refers to an 559 adjacency being protected 560 (e.g.: using IPFRR or MPLS-FRR)"; 561 } 562 bit value { 563 position 5; 564 description 565 "If set, then the SID carries a 566 value (instead of an index). 567 By default the flag is SET."; 569 } 570 bit local { 571 position 4; 572 description 573 "If set, then the value/index carried by 574 the SID has local significance. 575 By default the flag is SET."; 576 } 577 bit set { 578 position 3; 579 description 580 "When set, the S-Flag indicates that the 581 Adj-SID refers to a set of adjacencies."; 582 } 583 bit persistent { 584 position 2; 585 description 586 "When set, the P-Flag indicates that the 587 Adj-SID is persistently allocated."; 588 } 590 } 592 description 593 "Describes flags associated with the 594 segment ID."; 595 } 596 leaf weight { 597 type uint8; 598 description 599 "The value represents the weight of the Adj-SID 600 for the purpose of load balancing."; 601 } 602 leaf neighbor-id { 603 type isis:system-id; 604 description 605 "Describes the system ID of the neighbor 606 associated with the SID value. This is only 607 used on LAN adjacencies."; 608 } 609 leaf value { 610 type uint32; 611 description 612 "Value of the Adj-SID."; 613 } 614 description 615 "List of segments."; 616 } 618 } 619 grouping segment-routing-binding-tlv { 620 list segment-routing-bindings { 622 key "fec range"; 624 leaf fec { 625 type string; 626 description 627 "IP (v4 or v6) range to be bound to SIDs."; 628 } 630 leaf range { 631 type uint16; 632 description 633 "Describes number of elements to assign 634 a binding to."; 635 } 637 leaf flags { 638 type bits { 639 bit address-family { 640 position 7; 641 description 642 "If unset, then the Prefix FEC 643 carries an IPv4 Prefix. 644 If set then the Prefix FEC carries an 645 IPv6 Prefix."; 646 } 647 bit mirror { 648 position 6; 649 description 650 "Set if the advertised SID/path 651 corresponds to a mirrored context. 652 "; 653 } 654 bit flooding { 655 position 5; 656 description 657 "If the S bit is set(1), 658 the IS-IS Router CAPABILITY TLV 659 MUST be flooded across the entire routing domain. 660 If the S bit is 661 not set(0), the TLV MUST NOT be leaked between levels. 662 This bit MUST NOT be altered during the TLV leaking."; 663 } 664 bit down { 665 position 4; 666 description 667 "When the IS-IS Router CAPABILITY TLV is 668 leaked from level-2 to level-1, the D bit 669 MUST be set. Otherwise, this bit MUST 670 be clear. IS-IS Router capability TLVs 671 with the D bit set MUST NOT 672 be leaked from level-1 to level-2. 673 This is to prevent TLV looping. 674 "; 675 } 676 bit attached { 677 position 3; 678 description 679 "The originator of the SID/Label Binding 680 TLV MAY set the A bit in order to signal 681 that the prefixes and 682 SIDs advertised in the SID/Label Binding 683 TLV are directly 684 connected to their originators. 685 "; 687 } 689 } 690 description 691 "Flags of the binding."; 692 } 694 container binding { 695 container prefix-sid { 696 uses prefix-segment-id; 697 description 698 "Binding prefix SID to the range."; 699 } 700 description 701 "Bindings associated with the range."; 702 } 704 description 705 "This container describes list of SID/Label 706 bindings. 707 ISIS reference is TLV 149."; 708 } 709 description 710 "Defines binding TLV for database."; 712 } 713 /* Cfg */ 715 augment "/rt:routing/" + 716 "rt:control-plane-protocols/rt:control-plane-protocol"+ 717 "/isis:isis" { 718 when "/rt:routing/rt:control-plane-protocols/"+ 719 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 720 description 721 "This augment ISIS routing protocol when used"; 722 } 723 description 724 "This augments ISIS protocol configuration 725 with segment routing."; 727 uses sr:controlplane-cfg; 728 container protocol-srgb { 729 if-feature sr:protocol-srgb; 730 uses sr-cmn:srgb-cfg; 731 description 732 "Per-protocol SRGB."; 733 } 734 } 735 augment "/rt:routing/" + 736 "rt:control-plane-protocols/rt:control-plane-protocol"+ 737 "/isis:isis/isis:interfaces/isis:interface" { 738 when "/rt:routing/rt:control-plane-protocols/"+ 739 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 740 description 741 "This augment ISIS routing protocol when used"; 742 } 743 description 744 "This augments ISIS protocol configuration 745 with segment routing."; 747 uses sr:igp-interface-cfg; 748 } 750 augment "/rt:routing/" + 751 "rt:control-plane-protocols/rt:control-plane-protocol"+ 752 "/isis:isis/isis:interfaces/isis:interface"+ 753 "/isis:fast-reroute" { 754 when "/rt:routing/rt:control-plane-protocols/"+ 755 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 756 description 757 "This augment ISIS routing protocol when used"; 758 } 759 description 760 "This augments ISIS IP FRR with TILFA."; 762 container ti-lfa { 763 if-feature ti-lfa; 764 leaf enable { 765 type boolean; 766 description 767 "Enables TI-LFA computation."; 768 } 769 description 770 "TILFA configuration."; 771 } 773 } 775 augment "/rt:routing/" + 776 "rt:control-plane-protocols/rt:control-plane-protocol"+ 777 "/isis:isis/isis:interfaces/isis:interface"+ 778 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 779 when "/rt:routing/rt:control-plane-protocols/"+ 780 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 781 description 782 "This augment ISIS routing protocol when used"; 784 } 785 description 786 "This augments ISIS remoteLFA config with 787 use of segment-routing path."; 789 leaf use-segment-routing-path { 790 if-feature remote-lfa-sr; 791 type boolean; 792 description 793 "force remote LFA to use segment routing 794 path instead of LDP path."; 795 } 797 } 799 /* Operational states */ 801 augment "/rt:routing/" + 802 "rt:control-plane-protocols/rt:control-plane-protocol"+ 803 "/isis:isis/isis:interfaces/isis:interface" + 804 "/isis:adjacencies/isis:adjacency" { 805 when "/rt:routing/rt:control-plane-protocols/"+ 806 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 807 description 808 "This augment ISIS routing protocol when used"; 809 } 810 description 811 "This augments ISIS protocol configuration 812 with segment routing."; 814 uses adjacency-state; 815 } 817 augment "/rt:routing/" + 818 "rt:control-plane-protocols/rt:control-plane-protocol"+ 819 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 820 "/isis:router-capabilities" { 821 when "/rt:routing/rt:control-plane-protocols/"+ 822 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 823 description 824 "This augment ISIS routing protocol when used"; 825 } 826 description 827 "This augments ISIS protocol LSDB router capability."; 829 uses sr-capability; 830 uses sr-algorithm; 831 uses srlb; 832 uses srms-preference; 834 } 836 augment "/rt:routing/" + 837 "rt:control-plane-protocols/rt:control-plane-protocol"+ 838 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 839 "/isis:extended-is-neighbor/isis:neighbor" { 840 when "/rt:routing/rt:control-plane-protocols/"+ 841 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 842 description 843 "This augment ISIS routing protocol when used"; 844 } 845 description 846 "This augments ISIS protocol LSDB neighbor."; 847 uses adjacency-segment-id; 849 } 850 augment "/rt:routing/" + 851 "rt:control-plane-protocols/rt:control-plane-protocol"+ 852 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 853 "/isis:mt-is-neighbor/isis:neighbor" { 854 when "/rt:routing/rt:control-plane-protocols/"+ 855 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 856 description 857 "This augment ISIS routing protocol when used"; 858 } 859 description 860 "This augments ISIS protocol LSDB neighbor."; 861 uses adjacency-segment-id; 862 } 864 augment "/rt:routing/" + 865 "rt:control-plane-protocols/rt:control-plane-protocol"+ 866 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 867 "/isis:extended-ipv4-reachability/isis:prefixes" { 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 prefix."; 876 uses prefix-segment-id; 877 } 879 augment "/rt:routing/" + 880 "rt:control-plane-protocols/rt:control-plane-protocol"+ 881 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 882 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 883 when "/rt:routing/rt:control-plane-protocols/"+ 884 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 885 description 886 "This augment ISIS routing protocol when used"; 887 } 888 description 889 "This augments ISIS protocol LSDB prefix."; 890 uses prefix-segment-id; 892 } 893 augment "/rt:routing/" + 894 "rt:control-plane-protocols/rt:control-plane-protocol"+ 895 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 896 "/isis:ipv6-reachability/isis:prefixes" { 897 when "/rt:routing/rt:control-plane-protocols/"+ 898 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 899 description 900 "This augment ISIS routing protocol when used"; 901 } 902 description 903 "This augments ISIS protocol LSDB prefix."; 904 uses prefix-segment-id; 906 } 907 augment "/rt:routing/" + 908 "rt:control-plane-protocols/rt:control-plane-protocol"+ 909 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 910 "/isis:mt-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; 920 } 921 augment "/rt:routing/" + 922 "rt:control-plane-protocols/rt:control-plane-protocol"+ 923 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 924 when "/rt:routing/rt:control-plane-protocols/"+ 925 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 926 description 927 "This augment ISIS routing protocol when used"; 928 } 929 description 930 "This augments ISIS protocol LSDB."; 931 uses segment-routing-binding-tlv; 933 } 935 /* Notifications */ 937 } 939 941 5. Security Considerations 943 Configuration and state data defined in this document are designed to 944 be accessed via the NETCONF protocol [RFC6241]. 946 As IS-IS is an IGP protocol (critical piece of the network), ensuring 947 stability and security of the protocol is mandatory for the network 948 service. 950 Authors recommends to implement NETCONF access control model 951 ([RFC6536]) to restrict access to all or part of the configuration to 952 specific users. 954 6. Contributors 956 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 957 their major contributions to the draft. 959 7. Acknowledgements 961 TBD. 963 8. IANA Considerations 965 The IANA is requested to assign two new URIs from the IETF XML 966 registry ([RFC3688]). Authors are suggesting the following URI: 968 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 969 Registrant Contact: IS-IS WG 970 XML: N/A, the requested URI is an XML namespace 972 This document also requests one new YANG module name in the YANG 973 Module Names registry ([RFC6020]) with the following suggestion : 975 name: ietf-isis-sr 976 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 977 prefix: isis-sr 978 reference: RFC XXXX 980 9. Change log for ietf-isis-sr YANG module 982 9.1. From version -02 to version -03 984 o Change address-family type according to routing types. 986 9.2. From isis-sr document version -01 to version -02 988 o NMDA compliancy. 990 o Added SRLB in configuration and LSDB. 992 o Added SR capability in LSDB. 994 o Added SR algorithms in LSDB. 996 o Added SRMS preference in LSDB. 998 o Alignment with iana-rt-types module. 1000 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1001 13. 1003 9.3. From isis-sr document version -00 to version -01 1005 o Added P-Flag in Adj-SID. 1007 9.4. From isis document version -12 to isis-sr document version -00 1009 o Separate document for IS-IS SR extensions. 1011 9.5. From isis document version -12 to version -13 1013 o Align with new segment routing common module. 1015 9.6. From isis document version -09 to version -11 1017 o Fixed XPATH in 'when' expressions. 1019 9.7. From isis document version -08 to version -09 1021 o Align to draft-ietf-netmod-routing-cfg-23. 1023 9.8. From isis document version -07 to version -08 1025 o Align to draft-ietf-netmod-routing-cfg-21. 1027 10. Normative References 1029 [I-D.ietf-isis-segment-routing-extensions] 1030 Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., 1031 Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, 1032 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1033 segment-routing-extensions-15 (work in progress), December 1034 2017. 1036 [I-D.ietf-isis-yang-isis-cfg] 1037 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1038 Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- 1039 isis-yang-isis-cfg-19 (work in progress), November 2017. 1041 [I-D.ietf-spring-sr-yang] 1042 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1043 Data Model for Segment Routing", draft-ietf-spring-sr- 1044 yang-08 (work in progress), December 2017. 1046 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1047 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 1048 RFC2119, March 1997, . 1051 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1052 DOI 10.17487/RFC3688, January 2004, . 1055 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1056 the Network Configuration Protocol (NETCONF)", RFC 6020, 1057 DOI 10.17487/RFC6020, October 2010, . 1060 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1061 and A. Bierman, Ed., "Network Configuration Protocol 1062 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1063 . 1065 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1066 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 1067 10.17487/RFC6536, March 2012, . 1070 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1071 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1072 . 1074 Authors' Addresses 1076 Stephane Litkowski 1077 Orange 1079 Email: stephane.litkowski@orange.com 1081 Yinghzen Qu 1082 Huawei 1084 Email: yingzhen.qu@huawei.com 1086 Pushpasis Sarkar 1087 Individual 1089 Email: pushpasis.ietf@gmail.com 1091 Ing-Wher Chen 1092 Jabil 1094 Email: ing-wher_chen@jabil.com 1096 Jeff Tantsura 1097 Individual 1099 Email: jefftant.ietf@gmail.com