idnits 2.17.1 draft-ietf-isis-sr-yang-04.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 : ---------------------------------------------------------------------------- ** 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 129 has weird spacing: '...r-bound uin...' == Line 130 has weird spacing: '...r-bound uin...' == Line 137 has weird spacing: '...roup-id uin...' -- The document date (June 29, 2018) is 2126 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-15 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-19 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-08 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 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: December 31, 2018 Huawei 6 P. Sarkar 7 Individual 8 I. Chen 9 Jabil 10 J. Tantsura 11 Individual 12 June 29, 2018 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-04 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 https://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 December 31, 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 (https://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 . . . . . . . . . . . . . 6 66 3.1. Segment Routing activation . . . . . . . . . . . . . . . 6 67 3.2. Advertising mapping server policy . . . . . . . . . . . . 6 68 3.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 6 69 4. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 6 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 20 71 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20 72 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 73 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 74 9. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 21 75 9.1. From version -03 to version -04 . . . . . . . . . . . . . 21 76 9.2. From version -02 to version -03 . . . . . . . . . . . . . 21 77 9.3. From isis-sr document version -01 to version -02 . . . . 21 78 9.4. From isis-sr document version -00 to version -01 . . . . 22 79 9.5. From isis document version -12 to isis-sr document 80 version -00 . . . . . . . . . . . . . . . . . . . . . . . 22 81 9.6. From isis document version -12 to version -13 . . . . . . 22 82 9.7. From isis document version -09 to version -11 . . . . . . 22 83 9.8. From isis document version -08 to version -09 . . . . . . 22 84 9.9. From isis document version -07 to version -08 . . . . . . 22 85 10. Normative References . . . . . . . . . . . . . . . . . . . . 22 86 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 88 1. Overview 90 YANG [RFC6020] [RFC7950] is a data definition language used to 91 define the contents of a conceptual data store that allows networked 92 devices to be managed using NETCONF [RFC6241]. YANG is proving 93 relevant beyond its initial confines, as bindings to other interfaces 94 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 95 defined. Furthermore, YANG data models can be used as the basis for 96 implementation of other interfaces, such as CLI and programmatic 97 APIs. 99 This document defines a YANG data model that can be used to configure 100 and manage IS-IS Segment Routing and it is an augmentation to the IS- 101 IS YANG data model. 103 2. IS-IS Segment Routing 105 This document defines a model for IS-IS Segment Routing feature. It 106 is an augmentation of the IS-IS base model. 108 The IS-IS SR YANG module requires support for the base segment 109 routing module [I-D.ietf-spring-sr-yang], which defines the global 110 segment routing configuration independent of any specific routing 111 protocol configuration, and support of IS-IS base model 112 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 113 and state. 115 The figure below describes the overall structure of the isis-sr YANG 116 module: 118 module: ietf-isis-sr 119 augment /rt:routing/rt:control-plane-protocols 120 /rt:control-plane-protocol/isis:isis: 121 +--rw segment-routing 122 | +--rw enabled? boolean 123 | +--rw bindings 124 | +--rw advertise 125 | | +--rw policies* string 126 | +--rw receive? boolean 127 +--rw protocol-srgb {sr:protocol-srgb}? 128 +--rw srgb* [lower-bound upper-bound] 129 +--rw lower-bound uint32 130 +--rw upper-bound uint32 131 augment /rt:routing/rt:control-plane-protocols 132 /rt:control-plane-protocol/isis:isis/isis:interfaces 133 /isis:interface: 134 +--rw segment-routing 135 +--rw adjacency-sid 136 +--rw advertise-adj-group-sid* [group-id] 137 | +--rw group-id uint32 138 +--rw advertise-protection? enumeration 139 augment /rt:routing/rt:control-plane-protocols 140 /rt:control-plane-protocol/isis:isis/isis:interfaces 141 /isis:interface/isis:fast-reroute: 143 +--rw ti-lfa {ti-lfa}? 144 +--rw enable? boolean 145 augment /rt:routing/rt:control-plane-protocols 146 /rt:control-plane-protocol/isis:isis/isis:interfaces 147 /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: 148 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 149 augment /rt:routing/rt:control-plane-protocols 150 /rt:control-plane-protocol/isis:isis/isis:interfaces 151 /isis:interface/isis:adjacencies/isis:adjacency: 152 +--ro adjacency-sid* [value] 153 +--ro af? iana-rt-types:address-family 154 +--ro value uint32 155 +--ro weight? uint8 156 +--ro protection-requested? boolean 157 augment /rt:routing/rt:control-plane-protocols 158 /rt:control-plane-protocol/isis:isis/isis:database 159 /isis:level-db/isis:lsp/isis:router-capabilities: 160 +--ro sr-capability 161 | +--ro flags? bits 162 | +--ro global-blocks 163 | +--ro global-block* 164 | +--ro range-size? uint32 165 | +--ro sid-sub-tlv 166 | +--ro sid? uint32 167 +--ro sr-algorithms 168 | +--ro sr-algorithm* uint8 169 +--ro local-blocks 170 | +--ro local-block* 171 | +--ro range-size? uint32 172 | +--ro sid-sub-tlv 173 | +--ro sid? uint32 174 +--ro srms-preference 175 +--ro preference? uint8 176 augment /rt:routing/rt:control-plane-protocols 177 /rt:control-plane-protocol/isis:isis/isis:database 178 /isis:level-db/isis:lsp/isis:extended-is-neighbor 179 /isis: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 186 /rt:control-plane-protocol/isis:isis/isis:database 187 /isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 188 +--ro sid-list* [value] 189 +--ro flags? bits 190 +--ro weight? uint8 191 +--ro neighbor-id? isis:system-id 192 +--ro value uint32 193 augment /rt:routing/rt:control-plane-protocols 194 /rt:control-plane-protocol/isis:isis/isis:database 195 /isis:level-db/isis:lsp/isis:extended-ipv4-reachability 196 /isis:prefixes: 197 +--ro sid-list* [value] 198 +--ro flags? bits 199 +--ro algorithm? uint8 200 +--ro value uint32 201 augment /rt:routing/rt:control-plane-protocols 202 /rt:control-plane-protocol/isis:isis/isis:database 203 /isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability 204 /isis:prefixes: 205 +--ro sid-list* [value] 206 +--ro flags? bits 207 +--ro algorithm? uint8 208 +--ro value uint32 209 augment /rt:routing/rt:control-plane-protocols 210 /rt:control-plane-protocol/isis:isis/isis:database 211 /isis:level-db/isis:lsp/isis:ipv6-reachability/isis:prefixes: 212 +--ro sid-list* [value] 213 +--ro flags? bits 214 +--ro algorithm? uint8 215 +--ro value uint32 216 augment /rt:routing/rt:control-plane-protocols 217 /rt:control-plane-protocol/isis:isis/isis:database 218 /isis:level-db/isis:lsp/isis:mt-ipv6-reachability 219 /isis:prefixes: 220 +--ro sid-list* [value] 221 +--ro flags? bits 222 +--ro algorithm? uint8 223 +--ro value uint32 224 augment /rt:routing/rt:control-plane-protocols 225 /rt:control-plane-protocol/isis:isis/isis:database 226 /isis:level-db/isis:lsp: 227 +--ro segment-routing-bindings* [fec range] 228 +--ro fec string 229 +--ro range uint16 230 +--ro flags? bits 231 +--ro binding 232 +--ro prefix-sid 233 +--ro sid-list* [value] 234 +--ro flags? bits 235 +--ro algorithm? uint8 236 +--ro value uint32 238 3. IS-IS Segment Routing configuration 240 3.1. Segment Routing activation 242 Activation of segment-routing IS-IS is done by setting the "enable" 243 leaf to true. This triggers advertisement of segment-routing 244 extensions based on the configuration parameters that have been setup 245 using the base segment routing module. 247 3.2. Advertising mapping server policy 249 The base segment routing module defines mapping server policies. By 250 default, IS-IS will not advertise nor receive any mapping server 251 entry. The IS-IS segment-routing module allows to advertise one or 252 multiple mapping server policies through the "bindings/advertise/ 253 policies" leaf-list. The "bindings/receive" leaf allows to enable 254 the reception of mapping server entries. 256 3.3. IP Fast reroute 258 IS-IS SR model augments the fast-reroute container under interface. 259 It brings the ability to activate TI-LFA (topology independent LFA) 260 and also enhances remote LFA to use segment-routing tunneling instead 261 of LDP. 263 4. IS-IS Segment Routing YANG Module 265 file "ietf-isis-sr@2018-06-25.yang" 266 module ietf-isis-sr { 267 namespace "urn:ietf:params:xml:ns:" 268 + "yang:ietf-isis-sr"; 269 prefix isis-sr; 271 import ietf-routing { 272 prefix "rt"; 273 } 275 import ietf-segment-routing-common { 276 prefix "sr-cmn"; 277 } 279 import ietf-segment-routing { 280 prefix "sr"; 281 } 283 import ietf-isis { 284 prefix "isis"; 285 } 287 import iana-routing-types { 288 prefix "iana-rt-types"; 289 } 291 organization 292 "IETF LSR - LSR Working Group"; 294 contact 295 "WG List: 297 Editor: Stephane Litkowski 298 300 Author: Acee Lindem 301 302 Author: Yingzhen Qu 303 304 Author: Pushpasis Sarkar 305 306 Author: Ing-Wher Chen 307 308 Author: Jeff Tantsura 309 310 "; 312 description 313 "The YANG module defines a generic configuration model for 314 Segment routing ISIS extensions common across all of the vendor 315 implementations."; 317 revision 2018-06-25 { 318 description 319 "Initial revision."; 320 reference "RFC XXXX"; 321 } 323 /* Identities */ 325 /* Features */ 327 feature remote-lfa-sr { 328 description 329 "Enhance rLFA to use SR path."; 331 } 333 feature ti-lfa { 334 description 335 "Enhance IPFRR with ti-lfa 336 support"; 337 } 339 /* Groupings */ 341 grouping sid-sub-tlv { 342 description "SID/Label sub-TLV grouping."; 343 container sid-sub-tlv { 344 description 345 "Used to advertise the SID/Label associated with a 346 prefix or adjacency."; 347 leaf sid { 348 type uint32; 349 description 350 "Segment Identifier (SID) - A 20 bit label or 351 32 bit SID."; 352 } 353 } 354 } 356 grouping sr-capability { 357 description 358 "SR capability grouping."; 359 container sr-capability { 360 description 361 "Segment Routing capability."; 362 leaf flags { 363 type bits { 364 bit mpls-ipv4 { 365 position 0; 366 description 367 "If set, then the router is capable of 368 processing SR MPLS encapsulated IPv4 packets 369 on all interfaces."; 370 } 371 bit mpls-ipv6 { 372 position 1; 373 description 374 "If set, then the router is capable of 375 processing SR MPLS encapsulated IPv6 packets 376 on all interfaces."; 377 } 379 } 380 description 381 "Flags."; 382 } 383 container global-blocks { 384 description 385 "Segment Routing Global Blocks."; 386 list global-block { 387 description "Segment Routing Global Block."; 388 leaf range-size { 389 type uint32; 390 description "The SID range."; 391 } 392 uses sid-sub-tlv; 393 } 394 } 395 } 396 } 398 grouping sr-algorithm { 399 description 400 "SR algorithm grouping."; 401 container sr-algorithms { 402 description "All SR algorithms."; 403 leaf-list sr-algorithm { 404 type uint8; 405 description 406 "The Segment Routing (SR) algorithms that the router is 407 currently using."; 408 } 409 } 410 } 412 grouping srlb { 413 description 414 "SR Local Block grouping."; 415 container local-blocks { 416 description "List of SRLBs."; 417 list local-block { 418 description "Segment Routing Local Block."; 419 leaf range-size { 420 type uint32; 421 description "The SID range."; 422 } 423 uses sid-sub-tlv; 424 } 425 } 426 } 427 grouping srms-preference { 428 description "The SRMS preference TLV is used to advertise 429 a preference associated with the node that acts 430 as an SR Mapping Server."; 431 container srms-preference { 432 description "SRMS Preference TLV."; 433 leaf preference { 434 type uint8 { 435 range "0 .. 255"; 436 } 437 description "SRMS preference TLV, vlaue from 0 to 255."; 438 } 439 } 440 } 442 grouping adjacency-state { 443 description 444 "This group will extend adjacency state."; 445 list adjacency-sid { 446 key value; 447 config false; 448 leaf af { 449 type iana-rt-types:address-family; 450 description 451 "Address-family associated with the 452 segment ID"; 453 } 454 leaf value { 455 type uint32; 456 description 457 "Value of the Adj-SID."; 458 } 459 leaf weight { 460 type uint8; 461 description 462 "Weight associated with 463 the adjacency SID."; 464 } 465 leaf protection-requested { 466 type boolean; 467 description 468 "Describe if the adjacency SID 469 must be protected."; 470 } 471 description 472 "List of adjacency Segment IDs."; 473 } 474 } 475 grouping prefix-segment-id { 476 description 477 "This group defines segment routing extensions 478 for prefixes."; 480 list sid-list { 481 key value; 483 leaf flags { 484 type bits { 485 bit readvertisment { 486 position 7; 487 description 488 "If set, then the prefix to 489 which this Prefix-SID is attached, 490 has been propagated by the 491 router either from another level 492 or from redistribution."; 493 } 494 bit php { 495 position 5; 496 description 497 "If set, then the penultimate hop MUST NOT 498 pop the Prefix-SID before delivering the packet 499 to the node that advertised the Prefix-SID."; 500 } 501 bit explicit-null { 502 position 4; 503 description 504 "If set, any upstream neighbor of 505 the Prefix-SID originator MUST replace 506 the Prefix-SID with a 507 Prefix-SID having an 508 Explicit-NULL value (0 for IPv4 and 2 for 509 IPv6) before forwarding the packet."; 510 } 511 bit value { 512 position 3; 513 description 514 "If set, then the Prefix-SID carries a 515 value (instead of an index). 516 By default the flag is UNSET."; 517 } 518 bit local { 519 position 2; 520 description 521 "If set, then the value/index carried by 522 the Prefix-SID has local significance. 524 By default the flag is UNSET."; 525 } 526 } 527 description 528 "Describes flags associated with the 529 segment ID."; 530 } 532 leaf algorithm { 533 type uint8; 534 description 535 "Algorithm to be used for path computation."; 536 } 537 leaf value { 538 type uint32; 539 description 540 "Value of the prefix-SID."; 541 } 542 description 543 "List of segments."; 544 } 545 } 547 grouping adjacency-segment-id { 548 description 549 "This group defines segment routing extensions 550 for adjacencies."; 552 list sid-list { 553 key value; 555 leaf flags { 556 type bits { 557 bit address-family { 558 position 7; 559 description 560 "If unset, then the Adj-SID refers 561 to an adjacency with outgoing IPv4 encapsulation. 562 If set then the Adj-SID refers to an adjacency 563 with outgoing IPv6 encapsulation."; 564 } 565 bit backup { 566 position 6; 567 description 568 "If set, the Adj-SID refers to an 569 adjacency being protected 570 (e.g.: using IPFRR or MPLS-FRR)"; 571 } 572 bit value { 573 position 5; 574 description 575 "If set, then the SID carries a 576 value (instead of an index). 577 By default the flag is SET."; 578 } 579 bit local { 580 position 4; 581 description 582 "If set, then the value/index carried by 583 the SID has local significance. 584 By default the flag is SET."; 585 } 586 bit set { 587 position 3; 588 description 589 "When set, the S-Flag indicates that the 590 Adj-SID refers to a set of adjacencies."; 591 } 592 bit persistent { 593 position 2; 594 description 595 "When set, the P-Flag indicates that the 596 Adj-SID is persistently allocated."; 597 } 598 } 600 description 601 "Describes flags associated with the 602 segment ID."; 603 } 604 leaf weight { 605 type uint8; 606 description 607 "The value represents the weight of the Adj-SID 608 for the purpose of load balancing."; 609 } 610 leaf neighbor-id { 611 type isis:system-id; 612 description 613 "Describes the system ID of the neighbor 614 associated with the SID value. This is only 615 used on LAN adjacencies."; 616 } 617 leaf value { 618 type uint32; 619 description 620 "Value of the Adj-SID."; 621 } 622 description 623 "List of segments."; 624 } 625 } 627 grouping segment-routing-binding-tlv { 628 list segment-routing-bindings { 629 key "fec range"; 631 leaf fec { 632 type string; 633 description 634 "IP (v4 or v6) range to be bound to SIDs."; 635 } 637 leaf range { 638 type uint16; 639 description 640 "Describes number of elements to assign 641 a binding to."; 642 } 644 leaf flags { 645 type bits { 646 bit address-family { 647 position 7; 648 description 649 "If unset, then the Prefix FEC 650 carries an IPv4 Prefix. 651 If set then the Prefix FEC carries an 652 IPv6 Prefix."; 653 } 654 bit mirror { 655 position 6; 656 description 657 "Set if the advertised SID/path 658 corresponds to a mirrored context."; 659 } 660 bit flooding { 661 position 5; 662 description 663 "If the S bit is set(1), 664 the IS-IS Router CAPABILITY TLV 665 MUST be flooded across the entire routing domain. 666 If the S bit is 667 not set(0), the TLV MUST NOT be leaked between levels. 669 This bit MUST NOT be altered during the TLV leaking."; 670 } 671 bit down { 672 position 4; 673 description 674 "When the IS-IS Router CAPABILITY TLV is 675 leaked from level-2 to level-1, the D bit 676 MUST be set. Otherwise, this bit MUST 677 be clear. IS-IS Router capability TLVs 678 with the D bit set MUST NOT 679 be leaked from level-1 to level-2. 680 This is to prevent TLV looping."; 681 } 682 bit attached { 683 position 3; 684 description 685 "The originator of the SID/Label Binding TLV MAY set the 686 A bit in order to signal that the prefixes and SIDs 687 advertised in the SID/Label Binding TLV are directly 688 connected to their originators."; 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 bindings. 708 ISIS reference is TLV 149."; 709 } 710 description 711 "Defines binding TLV for database."; 712 } 714 /* Cfg */ 716 augment "/rt:routing/" + 717 "rt:control-plane-protocols/rt:control-plane-protocol"+ 718 "/isis:isis" { 719 when "/rt:routing/rt:control-plane-protocols/"+ 720 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 721 description 722 "This augment ISIS routing protocol when used"; 723 } 724 description 725 "This augments ISIS protocol configuration 726 with segment routing."; 728 uses sr:controlplane-cfg; 729 container protocol-srgb { 730 if-feature sr:protocol-srgb; 731 uses sr-cmn:srgb-cfg; 732 description 733 "Per-protocol SRGB."; 734 } 735 } 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 } 774 } 776 augment "/rt:routing/" + 777 "rt:control-plane-protocols/rt:control-plane-protocol"+ 778 "/isis:isis/isis:interfaces/isis:interface"+ 779 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 780 when "/rt:routing/rt:control-plane-protocols/"+ 781 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 782 description 783 "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 } 796 } 798 /* Operational states */ 800 augment "/rt:routing/" + 801 "rt:control-plane-protocols/rt:control-plane-protocol"+ 802 "/isis:isis/isis:interfaces/isis:interface" + 803 "/isis:adjacencies/isis:adjacency" { 804 when "/rt:routing/rt:control-plane-protocols/"+ 805 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 806 description 807 "This augment ISIS routing protocol when used"; 808 } 809 description 810 "This augments ISIS protocol configuration 811 with segment routing."; 813 uses adjacency-state; 814 } 816 augment "/rt:routing/" + 817 "rt:control-plane-protocols/rt:control-plane-protocol"+ 818 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 819 "/isis:router-capabilities" { 820 when "/rt:routing/rt:control-plane-protocols/"+ 821 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 822 description 823 "This augment ISIS routing protocol when used"; 824 } 825 description 826 "This augments ISIS protocol LSDB router capability."; 828 uses sr-capability; 829 uses sr-algorithm; 830 uses srlb; 831 uses srms-preference; 832 } 834 augment "/rt:routing/" + 835 "rt:control-plane-protocols/rt:control-plane-protocol"+ 836 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 837 "/isis:extended-is-neighbor/isis:neighbor" { 838 when "/rt:routing/rt:control-plane-protocols/"+ 839 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 840 description 841 "This augment ISIS routing protocol when used"; 842 } 843 description 844 "This augments ISIS protocol LSDB neighbor."; 845 uses adjacency-segment-id; 846 } 848 augment "/rt:routing/" + 849 "rt:control-plane-protocols/rt:control-plane-protocol"+ 850 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 851 "/isis:mt-is-neighbor/isis:neighbor" { 852 when "/rt:routing/rt:control-plane-protocols/"+ 853 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 854 description 855 "This augment ISIS routing protocol when used"; 856 } 857 description 858 "This augments ISIS protocol LSDB neighbor."; 859 uses adjacency-segment-id; 860 } 861 augment "/rt:routing/" + 862 "rt:control-plane-protocols/rt:control-plane-protocol"+ 863 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 864 "/isis:extended-ipv4-reachability/isis:prefixes" { 865 when "/rt:routing/rt:control-plane-protocols/"+ 866 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 867 description 868 "This augment ISIS routing protocol when used"; 869 } 870 description 871 "This augments ISIS protocol LSDB prefix."; 872 uses prefix-segment-id; 873 } 875 augment "/rt:routing/" + 876 "rt:control-plane-protocols/rt:control-plane-protocol"+ 877 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 878 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 879 when "/rt:routing/rt:control-plane-protocols/"+ 880 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 881 description 882 "This augment ISIS routing protocol when used"; 883 } 884 description 885 "This augments ISIS protocol LSDB prefix."; 886 uses prefix-segment-id; 887 } 889 augment "/rt:routing/" + 890 "rt:control-plane-protocols/rt:control-plane-protocol"+ 891 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 892 "/isis:ipv6-reachability/isis:prefixes" { 893 when "/rt:routing/rt:control-plane-protocols/"+ 894 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 895 description 896 "This augment ISIS routing protocol when used"; 897 } 898 description 899 "This augments ISIS protocol LSDB prefix."; 900 uses prefix-segment-id; 901 } 903 augment "/rt:routing/" + 904 "rt:control-plane-protocols/rt:control-plane-protocol"+ 905 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 906 "/isis:mt-ipv6-reachability/isis:prefixes" { 907 when "/rt:routing/rt:control-plane-protocols/"+ 908 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 910 description 911 "This augment ISIS routing protocol when used"; 912 } 913 description 914 "This augments ISIS protocol LSDB prefix."; 915 uses prefix-segment-id; 916 } 918 augment "/rt:routing/" + 919 "rt:control-plane-protocols/rt:control-plane-protocol"+ 920 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 921 when "/rt:routing/rt:control-plane-protocols/"+ 922 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 923 description 924 "This augment ISIS routing protocol when used"; 925 } 926 description 927 "This augments ISIS protocol LSDB."; 928 uses segment-routing-binding-tlv; 929 } 931 /* Notifications */ 933 } 934 936 5. Security Considerations 938 Configuration and state data defined in this document are designed to 939 be accessed via the NETCONF protocol [RFC6241]. 941 As IS-IS is an IGP protocol (critical piece of the network), ensuring 942 stability and security of the protocol is mandatory for the network 943 service. 945 Authors recommends to implement NETCONF access control model 946 ([RFC6536]) to restrict access to all or part of the configuration to 947 specific users. 949 6. Contributors 951 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 952 their major contributions to the draft. 954 7. Acknowledgements 956 TBD. 958 8. IANA Considerations 960 The IANA is requested to assign two new URIs from the IETF XML 961 registry ([RFC3688]). Authors are suggesting the following URI: 963 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 964 Registrant Contact: IS-IS WG 965 XML: N/A, the requested URI is an XML namespace 967 This document also requests one new YANG module name in the YANG 968 Module Names registry ([RFC6020]) with the following suggestion : 970 name: ietf-isis-sr 971 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 972 prefix: isis-sr 973 reference: RFC XXXX 975 9. Change log for ietf-isis-sr YANG module 977 9.1. From version -03 to version -04 979 o Fixed yang module indentations. 981 9.2. From version -02 to version -03 983 o Change address-family type according to routing types. 985 9.3. From isis-sr document version -01 to version -02 987 o NMDA compliancy. 989 o Added SRLB in configuration and LSDB. 991 o Added SR capability in LSDB. 993 o Added SR algorithms in LSDB. 995 o Added SRMS preference in LSDB. 997 o Alignment with iana-rt-types module. 999 o Align binding SID with draft-ietf-isis-segment-routing-extensions- 1000 13. 1002 9.4. From isis-sr document version -00 to version -01 1004 o Added P-Flag in Adj-SID. 1006 9.5. From isis document version -12 to isis-sr document version -00 1008 o Separate document for IS-IS SR extensions. 1010 9.6. From isis document version -12 to version -13 1012 o Align with new segment routing common module. 1014 9.7. From isis document version -09 to version -11 1016 o Fixed XPATH in 'when' expressions. 1018 9.8. From isis document version -08 to version -09 1020 o Align to draft-ietf-netmod-routing-cfg-23. 1022 9.9. From isis document version -07 to version -08 1024 o Align to draft-ietf-netmod-routing-cfg-21. 1026 10. Normative References 1028 [I-D.ietf-isis-segment-routing-extensions] 1029 Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., 1030 Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, 1031 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1032 segment-routing-extensions-15 (work in progress), December 1033 2017. 1035 [I-D.ietf-isis-yang-isis-cfg] 1036 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1037 Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- 1038 isis-yang-isis-cfg-19 (work in progress), November 2017. 1040 [I-D.ietf-spring-sr-yang] 1041 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1042 Data Model for Segment Routing", draft-ietf-spring-sr- 1043 yang-08 (work in progress), December 2017. 1045 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1046 Requirement Levels", BCP 14, RFC 2119, 1047 DOI 10.17487/RFC2119, March 1997, 1048 . 1050 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1051 DOI 10.17487/RFC3688, January 2004, 1052 . 1054 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1055 the Network Configuration Protocol (NETCONF)", RFC 6020, 1056 DOI 10.17487/RFC6020, October 2010, 1057 . 1059 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1060 and A. Bierman, Ed., "Network Configuration Protocol 1061 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1062 . 1064 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1065 Protocol (NETCONF) Access Control Model", RFC 6536, 1066 DOI 10.17487/RFC6536, March 2012, 1067 . 1069 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1070 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1071 . 1073 Authors' Addresses 1075 Stephane Litkowski 1076 Orange 1078 Email: stephane.litkowski@orange.com 1080 Yinghzen Qu 1081 Huawei 1083 Email: yingzhen.qu@huawei.com 1085 Pushpasis Sarkar 1086 Individual 1088 Email: pushpasis.ietf@gmail.com 1090 Ing-Wher Chen 1091 Jabil 1093 Email: ing-wher_chen@jabil.com 1094 Jeff Tantsura 1095 Individual 1097 Email: jefftant.ietf@gmail.com