idnits 2.17.1 draft-ietf-isis-sr-yang-01.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 126 has weird spacing: '...r-bound uin...' == Line 127 has weird spacing: '...r-bound uin...' == Line 134 has weird spacing: '...roup-id uin...' == Line 156 has weird spacing: '...r-bound uin...' == Line 157 has weird spacing: '...r-bound uin...' == (6 more instances...) -- The document date (May 05, 2017) is 2545 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-12 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-17 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-06 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 10 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: November 6, 2017 Huawei 6 P. Sarkar 7 Individual 8 I. Chen 9 Jabil 10 J. Tantsura 11 Individual 12 May 05, 2017 14 YANG Data Model for IS-IS Segment Routing 15 draft-ietf-isis-sr-yang-01 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 November 6, 2017. 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 . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . 21 71 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 72 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 73 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 74 9. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 22 75 9.1. From isis document version -12 to isis-sr document 76 version -00 . . . . . . . . . . . . . . . . . . . . . . . 22 77 9.2. From isis document version -12 to version -13 . . . . . . 22 78 9.3. From isis document version -09 to version -11 . . . . . . 22 79 9.4. From isis document version -08 to version -09 . . . . . . 22 80 9.5. From isis document version -07 to version -08 . . . . . . 22 81 9.6. From isis-sr document version -00 to version -01 . . . . 22 82 10. Normative References . . . . . . . . . . . . . . . . . . . . 22 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 85 1. Overview 87 YANG [RFC6020] [RFC7950] is a data definition language used to 88 define the contents of a conceptual data store that allows networked 89 devices to be managed using NETCONF [RFC6241]. YANG is proving 90 relevant beyond its initial confines, as bindings to other interfaces 91 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 92 defined. Furthermore, YANG data models can be used as the basis for 93 implementation of other interfaces, such as CLI and programmatic 94 APIs. 96 This document defines a YANG data model that can be used to configure 97 and manage IS-IS Segment Routing and it is an augmentation to the IS- 98 IS YANG data model. 100 2. IS-IS Segment Routing 102 This document defines a model for IS-IS Segment Routing feature. It 103 is an augmentation of the IS-IS base model. 105 The IS-IS SR YANG module requires support for the base segment 106 routing module [I-D.ietf-spring-sr-yang], which defines the global 107 segment routing configuration independent of any specific routing 108 protocol configuration, and support of IS-IS base model 109 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 110 and state. 112 The figure below describes the overall structure of the isis-sr YANG 113 module: 115 module: ietf-isis-sr 116 augment /rt:routing/rt:control-plane-protocols 117 /rt:control-plane-protocol/isis:isis: 118 +--rw segment-routing 119 | +--rw enabled? boolean 120 | +--rw bindings 121 | +--rw advertise 122 | | +--rw policies* string 123 | +--rw receive? boolean 124 +--rw protocol-srgb {sr:protocol-srgb}? 125 +--rw srgb* [lower-bound upper-bound] 126 +--rw lower-bound uint32 127 +--rw upper-bound uint32 128 augment /rt:routing/rt:control-plane-protocols 129 /rt:control-plane-protocol/isis:isis/isis:interfaces 130 /isis:interface: 131 +--rw segment-routing 132 +--rw adjacency-sid 133 +--rw advertise-adj-group-sid* [group-id] 134 | +--rw group-id uint32 135 +--rw advertise-protection? enumeration 136 augment /rt:routing/rt:control-plane-protocols 137 /rt:control-plane-protocol/isis:isis/isis:interfaces 138 /isis:interface/isis:fast-reroute: 139 +--rw ti-lfa {ti-lfa}? 140 +--rw enable? boolean 142 augment /rt:routing/rt:control-plane-protocols 143 /rt:control-plane-protocol/isis:isis/isis:interfaces 144 /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: 145 +--rw use-segment-routing-path? boolean {remote-lfa-sr}? 146 augment /rt:routing-state/rt:control-plane-protocols 147 /rt:control-plane-protocol/isis:isis: 148 +--ro segment-routing 149 | +--ro enabled? boolean 150 | +--ro bindings 151 | +--ro advertise 152 | | +--ro policies* string 153 | +--ro receive? boolean 154 +--ro protocol-srgb {sr:protocol-srgb}? 155 +--ro srgb* [lower-bound upper-bound] 156 +--ro lower-bound uint32 157 +--ro upper-bound uint32 158 augment /rt:routing-state/rt:control-plane-protocols 159 /rt:control-plane-protocol/isis:isis/isis:interfaces 160 /isis:interface: 161 +--ro segment-routing 162 +--ro adjacency-sid 163 +--ro advertise-adj-group-sid* [group-id] 164 | +--ro group-id uint32 165 +--ro advertise-protection? enumeration 166 augment /rt:routing-state/rt:control-plane-protocols 167 /rt:control-plane-protocol/isis:isis/isis:interfaces 168 /isis:interface/isis:adjacencies/isis:adjacency: 169 +--ro adjacency-sid* [value] 170 +--ro af? identityref 171 +--ro value uint32 172 +--ro weight? uint8 173 +--ro protection-requested? boolean 174 augment /rt:routing-state/rt:control-plane-protocols 175 /rt:control-plane-protocol/isis:isis/isis:database 176 /isis:level-db/isis:lsp/isis:extended-is-neighbor 177 /isis:neighbor: 178 +--ro sid-list* [value] 179 +--ro flags? bits 180 +--ro weight? uint8 181 +--ro neighbor-id? isis:system-id 182 +--ro value uint32 183 augment /rt:routing-state/rt:control-plane-protocols 184 /rt:control-plane-protocol/isis:isis/isis:database 185 /isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 186 +--ro sid-list* [value] 187 +--ro flags? bits 188 +--ro weight? uint8 189 +--ro neighbor-id? isis:system-id 190 +--ro value uint32 191 augment /rt:routing-state/rt:control-plane-protocols 192 /rt:control-plane-protocol/isis:isis/isis:database 193 /isis:level-db/isis:lsp/isis:extended-ipv4-reachability 194 /isis:prefixes: 195 +--ro sid-list* [value] 196 +--ro flags? bits 197 +--ro algorithm? uint8 198 +--ro value uint32 199 augment /rt:routing-state/rt:control-plane-protocols 200 /rt:control-plane-protocol/isis:isis/isis:database 201 /isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability 202 /isis:prefixes: 203 +--ro sid-list* [value] 204 +--ro flags? bits 205 +--ro algorithm? uint8 206 +--ro value uint32 207 augment /rt:routing-state/rt:control-plane-protocols 208 /rt:control-plane-protocol/isis:isis/isis:database 209 /isis:level-db/isis:lsp/isis:ipv6-reachability 210 /isis:prefixes: 211 +--ro sid-list* [value] 212 +--ro flags? bits 213 +--ro algorithm? uint8 214 +--ro value uint32 215 augment /rt:routing-state/rt:control-plane-protocols 216 /rt:control-plane-protocol/isis:isis/isis:database 217 /isis:level-db/isis:lsp/isis:mt-ipv6-reachability 218 /isis:prefixes: 219 +--ro sid-list* [value] 220 +--ro flags? bits 221 +--ro algorithm? uint8 222 +--ro value uint32 223 augment /rt:routing-state/rt:control-plane-protocols 224 /rt:control-plane-protocol/isis:isis/isis:database 225 /isis:level-db/isis:lsp: 226 +--ro segment-routing-bindings* [fec range] 227 +--ro fec string 228 +--ro range uint16 229 +--ro flags? bits 230 +--ro weight? uint8 231 +--ro binding 232 +--ro prefix-sid 233 | +--ro sid-list* [value] 234 | +--ro flags? bits 235 | +--ro algorithm? uint8 236 | +--ro value uint32 237 +--ro ero-metric? uint32 238 +--ro ero 239 | +--ro address-family? identityref 240 | +--ro loose? boolean 241 | +--ro address? string 242 +--ro backup-ero 243 | +--ro address-family? identityref 244 | +--ro loose? boolean 245 | +--ro address? string 246 +--ro unnumbered-interface-id-ero 247 | +--ro router-id? string 248 | +--ro interface-id? uint32 249 +--ro backup-unnumbered-interface-id-ero 250 +--ro router-id? string 251 +--ro interface-id? uint32 253 3. IS-IS Segment Routing configuration 255 3.1. Segment Routing activation 257 Activation of segment-routing IS-IS is done by setting the "enable" 258 leaf to true. This triggers advertisement of segment-routing 259 extensions based on the configuration parameters that have been setup 260 using the base segment routing module. 262 3.2. Advertising mapping server policy 264 The base segment routing module defines mapping server policies. By 265 default, IS-IS will not advertise nor receive any mapping server 266 entry. The IS-IS segment-routing module allows to advertise one or 267 multiple mapping server policies through the "bindings/advertise/ 268 policies" leaf-list. The "bindings/receive" leaf allows to enable 269 the reception of mapping server entries. 271 3.3. IP Fast reroute 273 IS-IS SR model augments the fast-reroute container under interface. 274 It brings the ability to activate TI-LFA (topology independent LFA) 275 and also enhances remote LFA to use segment-routing tunneling instead 276 of LDP. 278 4. IS-IS Segment Routing YANG Module 280 file "ietf-isis-sr@2017-05-05.yang" 281 module ietf-isis-sr { 282 namespace "urn:ietf:params:xml:ns:" 283 + "yang:ietf-isis-sr"; 284 prefix isis-sr; 285 import ietf-routing { 286 prefix "rt"; 287 } 289 import ietf-segment-routing-common { 290 prefix "sr-cmn"; 291 } 293 import ietf-segment-routing { 294 prefix "sr"; 295 } 297 import ietf-isis { 298 prefix "isis"; 299 } 301 organization 302 "IETF ISIS Working Group"; 304 contact 305 "WG List: 307 Editor: Stephane Litkowski 308 310 Acee Lindem 311 312 Yingzhen Qu 313 314 Pushpasis Sarkar 315 316 Ing-Wher Chen 317 318 Jeff Tantsura 319 321 "; 322 description 323 "The YANG module defines a generic configuration model for 324 Segment routing ISIS extensions common across all of the vendor 325 implementations."; 327 revision 2017-05-05 { 328 description 329 "Add p-flag in adj-sid."; 330 reference "RFC XXXX"; 331 } 332 /* Identities */ 334 /* Features */ 336 feature remote-lfa-sr { 337 description 338 "Enhance rLFA to use SR path."; 339 } 341 feature ti-lfa { 342 description 343 "Enhance IPFRR with ti-lfa 344 support"; 345 } 347 /* Groupings */ 349 grouping adjacency-state { 350 description 351 "This group will extend adjacency state."; 352 list adjacency-sid { 353 key value; 354 leaf af { 355 type identityref { 356 base rt:address-family; 357 } 358 description 359 "Address-family associated with the 360 segment ID"; 361 } 362 leaf value { 363 type uint32; 364 description 365 "Value of the Adj-SID."; 366 } 367 leaf weight { 368 type uint8; 369 description 370 "Weight associated with 371 the adjacency SID."; 372 } 373 leaf protection-requested { 374 type boolean; 375 description 376 "Describe if the adjacency SID 377 must be protected."; 378 } 379 description 380 "List of adjacency Segment IDs."; 381 } 382 } 384 grouping prefix-segment-id { 385 description 386 "This group defines segment routing extensions 387 for prefixes."; 389 list sid-list { 390 key value; 392 leaf flags { 393 type bits { 394 bit readvertisment { 395 position 7; 396 description 397 "If set, then the prefix to 398 which this Prefix-SID is attached, 399 has been propagated by the 400 router either from another level 401 or from redistribution."; 402 } 404 bit php { 405 position 5; 406 description 407 "If set, then the penultimate hop MUST NOT 408 pop the Prefix-SID before delivering the packet 409 to the node 410 that advertised the Prefix-SID."; 411 } 412 bit explicit-null { 413 position 4; 414 description 415 "If set, any upstream neighbor of 416 the Prefix-SID originator MUST replace 417 the Prefix-SID with a 418 Prefix-SID having an 419 Explicit-NULL value (0 for IPv4 and 2 for 420 IPv6) before forwarding the packet."; 421 } 422 bit value { 423 position 3; 424 description 425 "If set, then the Prefix-SID carries a 426 value (instead of an index). 428 By default the flag is UNSET."; 430 } 431 bit local { 432 position 2; 433 description 434 "If set, then the value/index carried by 435 the Prefix-SID has local significance. 436 By default the flag is UNSET."; 437 } 438 } 439 description 440 "Describes flags associated with the 441 segment ID."; 442 } 444 leaf algorithm { 445 type uint8; 446 description 447 "Algorithm to be used for path computation."; 448 } 449 leaf value { 450 type uint32; 451 description 452 "Value of the prefix-SID."; 453 } 454 description 455 "List of segments."; 456 } 457 } 459 grouping adjacency-segment-id { 460 description 461 "This group defines segment routing extensions 462 for adjacencies."; 463 list sid-list { 464 key value; 466 leaf flags { 467 type bits { 468 bit address-family { 469 position 7; 470 description 471 "If unset, then the Adj-SID refers 472 to an adjacency with outgoing IPv4 encapsulation. 473 If set then the Adj-SID refers to an adjacency 474 with outgoing IPv6 encapsulation."; 476 } 477 bit backup { 478 position 6; 479 description 480 "If set, the Adj-SID refers to an 481 adjacency being protected 482 (e.g.: using IPFRR or MPLS-FRR)"; 483 } 484 bit value { 485 position 5; 486 description 487 "If set, then the SID carries a 488 value (instead of an index). 489 By default the flag is SET."; 491 } 492 bit local { 493 position 4; 494 description 495 "If set, then the value/index carried by 496 the SID has local significance. 497 By default the flag is SET."; 498 } 499 bit set { 500 position 3; 501 description 502 "When set, the S-Flag indicates that the 503 Adj-SID refers to a set of adjacencies"; 504 } 505 bit persistent { 506 position 2; 507 description 508 "When set, the P-Flag indicates that the 509 Adj-SID is persistently allocated."; 510 } 511 } 513 description 514 "Describes flags associated with the 515 segment ID."; 516 } 517 leaf weight { 518 type uint8; 519 description 520 "The value represents the weight of the Adj-SID 521 for the purpose of load balancing."; 522 } 523 leaf neighbor-id { 524 type isis:system-id; 525 description 526 "Describes the system ID of the neighbor 527 associated with the SID value. This is only 528 used on LAN adjacencies."; 529 } 530 leaf value { 531 type uint32; 532 description 533 "Value of the Adj-SID."; 534 } 535 description 536 "List of segments."; 537 } 539 } 540 grouping segment-routing-binding-tlv { 541 list segment-routing-bindings { 543 key "fec range"; 545 leaf fec { 546 type string; 547 description 548 "IP (v4 or v6) range to be bound to SIDs."; 549 } 551 leaf range { 552 type uint16; 553 description 554 "Describes number of elements to assign 555 a binding to."; 556 } 558 leaf flags { 559 type bits { 560 bit address-family { 561 position 7; 562 description 563 "If unset, then the Prefix FEC 564 carries an IPv4 Prefix. 565 If set then the Prefix FEC carries an 566 IPv6 Prefix."; 567 } 568 bit mirror { 569 position 6; 570 description 571 "Set if the advertised SID/path 572 corresponds to a mirrored context. 573 "; 574 } 575 bit flooding { 576 position 5; 577 description 578 "If the S bit is set(1), 579 the IS-IS Router CAPABILITY TLV 580 MUST be flooded across the entire routing domain. 581 If the S bit is 582 not set(0), the TLV MUST NOT be leaked between levels. 583 This bit MUST NOT be altered during the TLV leaking."; 584 } 585 bit down { 586 position 4; 587 description 588 "When the IS-IS Router CAPABILITY TLV is 589 leaked from level-2 to level-1, the D bit 590 MUST be set. Otherwise, this bit MUST 591 be clear. IS-IS Router capability TLVs 592 with the D bit set MUST NOT 593 be leaked from level-1 to level-2. 594 This is to prevent TLV looping. 595 "; 596 } 597 bit attached { 598 position 3; 599 description 600 "The originator of the SID/Label Binding 601 TLV MAY set the A bit in order to signal 602 that the prefixes and 603 SIDs advertised in the SID/Label Binding 604 TLV are directly 605 connected to their originators. 606 "; 607 } 609 } 610 description 611 "Flags of the binding."; 612 } 613 leaf weight { 614 type uint8; 615 description 616 "Weight of the path for loadbalancing purpose."; 617 } 618 container binding { 619 container prefix-sid { 620 uses prefix-segment-id; 621 description 622 "Binding prefix SID to the range."; 623 } 624 leaf ero-metric { 625 type uint32; 626 description 627 "Cost of ERO path."; 628 } 629 container ero { 630 leaf address-family { 631 type identityref { 632 base rt:address-family; 633 } 634 description 635 "Address-family."; 636 } 638 leaf loose { 639 type boolean; 640 description 641 "Set to true, 642 if hop is a loose hop."; 643 } 644 leaf address { 645 type string; 646 description 647 "IP address of a node on the 648 path."; 649 } 651 description 652 "Binding ERO path to the range."; 653 } 654 container backup-ero { 655 leaf address-family { 656 type identityref { 657 base rt:address-family; 658 } 659 description 660 "Address-family."; 661 } 663 leaf loose { 664 type boolean; 665 description 666 "Set to true, 667 if hop is a loose hop."; 668 } 669 leaf address { 670 type string; 671 description 672 "IP address of a node on the 673 path."; 674 } 676 description 677 "Binding backup ERO path to the range."; 678 } 679 container unnumbered-interface-id-ero { 680 leaf router-id { 681 type string; 682 description 683 "Router ID of the node owning the interface."; 684 } 685 leaf interface-id { 686 type uint32; 687 description 688 "Interface ID on which the path is built."; 689 } 690 description 691 "Binding a path over unnumbered interface."; 692 } 693 container backup-unnumbered-interface-id-ero { 694 leaf router-id { 695 type string; 696 description 697 "Router ID of the node owning the interface."; 698 } 699 leaf interface-id { 700 type uint32; 701 description 702 "Interface ID on which the path is built."; 703 } 704 description 705 "Binding a backup path over unnumbered interface."; 706 } 707 description 708 "Bindings associated with the range."; 709 } 711 description 712 "This container describes list of SID/Label 713 bindings. 715 ISIS reference is TLV 149."; 716 } 717 description 718 "Defines binding TLV for database."; 720 } 721 /* Cfg */ 723 augment "/rt:routing/" + 724 "rt:control-plane-protocols/rt:control-plane-protocol"+ 725 "/isis:isis" { 726 when "/rt:routing/rt:control-plane-protocols/"+ 727 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 728 description 729 "This augment ISIS routing protocol when used"; 730 } 731 description 732 "This augments ISIS protocol configuration 733 with segment routing."; 735 uses sr:controlplane-cfg; 736 container protocol-srgb { 737 if-feature sr:protocol-srgb; 738 uses sr-cmn:srgb-cfg; 739 description 740 "Per-protocol SRGB."; 741 } 743 } 745 augment "/rt:routing/" + 746 "rt:control-plane-protocols/rt:control-plane-protocol"+ 747 "/isis:isis/isis:interfaces/isis:interface" { 748 when "/rt:routing/rt:control-plane-protocols/"+ 749 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 750 description 751 "This augment ISIS routing protocol when used"; 752 } 753 description 754 "This augments ISIS protocol configuration 755 with segment routing."; 756 uses sr:igp-interface-cfg; 757 } 759 augment "/rt:routing/" + 760 "rt:control-plane-protocols/rt:control-plane-protocol"+ 761 "/isis:isis/isis:interfaces/isis:interface"+ 762 "/isis:fast-reroute" { 763 when "/rt:routing/rt:control-plane-protocols/"+ 764 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 765 description 766 "This augment ISIS routing protocol when used"; 767 } 768 description 769 "This augments ISIS IP FRR with TILFA."; 771 container ti-lfa { 772 if-feature ti-lfa; 773 leaf enable { 774 type boolean; 775 description 776 "Enables TI-LFA computation."; 777 } 778 description 779 "TILFA configuration."; 780 } 782 } 784 augment "/rt:routing/" + 785 "rt:control-plane-protocols/rt:control-plane-protocol"+ 786 "/isis:isis/isis:interfaces/isis:interface"+ 787 "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { 788 when "/rt:routing/rt:control-plane-protocols/"+ 789 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 790 description 791 "This augment ISIS routing protocol when used"; 792 } 793 description 794 "This augments ISIS remoteLFA config with 795 use of segment-routing path."; 797 leaf use-segment-routing-path { 798 if-feature remote-lfa-sr; 799 type boolean; 800 description 801 "force remote LFA to use segment routing 802 path instead of LDP path."; 803 } 804 } 806 /* Operational states */ 807 augment "/rt:routing-state/" + 808 "rt:control-plane-protocols/rt:control-plane-protocol"+ 809 "/isis:isis" { 810 when "/rt:routing-state/rt:control-plane-protocols/"+ 811 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 812 description 813 "This augment ISIS routing protocol when used"; 814 } 815 description 816 "This augments ISIS protocol configuration 817 with segment routing."; 819 uses sr:controlplane-cfg; 820 container protocol-srgb { 821 if-feature sr:protocol-srgb; 822 uses sr-cmn:srgb-cfg; 823 description 824 "Per-protocol SRGB."; 825 } 827 } 829 augment "/rt:routing-state/" + 830 "rt:control-plane-protocols/rt:control-plane-protocol"+ 831 "/isis:isis/isis:interfaces/isis:interface" { 832 when "/rt:routing-state/rt:control-plane-protocols/"+ 833 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 834 description 835 "This augment ISIS routing protocol when used"; 836 } 837 description 838 "This augments ISIS protocol configuration 839 with segment routing."; 841 uses sr:igp-interface-cfg; 842 } 844 augment "/rt:routing-state/" + 845 "rt:control-plane-protocols/rt:control-plane-protocol"+ 846 "/isis:isis/isis:interfaces/isis:interface" + 847 "/isis:adjacencies/isis:adjacency" { 848 when "/rt:routing-state/rt:control-plane-protocols/"+ 849 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 850 description 851 "This augment ISIS routing protocol when used"; 852 } 853 description 854 "This augments ISIS protocol configuration 855 with segment routing."; 857 uses adjacency-state; 858 } 860 augment "/rt:routing-state/" + 861 "rt:control-plane-protocols/rt:control-plane-protocol"+ 862 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 863 "/isis:extended-is-neighbor/isis:neighbor" { 864 when "/rt:routing-state/rt:control-plane-protocols/"+ 865 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 866 description 867 "This augment ISIS routing protocol when used"; 868 } 869 description 870 "This augments ISIS protocol LSDB neighbor."; 871 uses adjacency-segment-id; 873 } 874 augment "/rt:routing-state/" + 875 "rt:control-plane-protocols/rt:control-plane-protocol"+ 876 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 877 "/isis:mt-is-neighbor/isis:neighbor" { 878 when "/rt:routing-state/rt:control-plane-protocols/"+ 879 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 880 description 881 "This augment ISIS routing protocol when used"; 882 } 883 description 884 "This augments ISIS protocol LSDB neighbor."; 885 uses adjacency-segment-id; 887 } 888 augment "/rt:routing-state/" + 889 "rt:control-plane-protocols/rt:control-plane-protocol"+ 890 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 891 "/isis:extended-ipv4-reachability/isis:prefixes" { 892 when "/rt:routing-state/rt:control-plane-protocols/"+ 893 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 894 description 895 "This augment ISIS routing protocol when used"; 896 } 897 description 898 "This augments ISIS protocol LSDB prefix."; 899 uses prefix-segment-id; 901 } 902 augment "/rt:routing-state/" + 903 "rt:control-plane-protocols/rt:control-plane-protocol"+ 904 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 905 "/isis:mt-extended-ipv4-reachability/isis:prefixes" { 906 when "/rt:routing-state/rt:control-plane-protocols/"+ 907 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 908 description 909 "This augment ISIS routing protocol when used"; 910 } 911 description 912 "This augments ISIS protocol LSDB prefix."; 913 uses prefix-segment-id; 915 } 916 augment "/rt:routing-state/" + 917 "rt:control-plane-protocols/rt:control-plane-protocol"+ 918 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 919 "/isis:ipv6-reachability/isis:prefixes" { 920 when "/rt:routing-state/rt:control-plane-protocols/"+ 921 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 922 description 923 "This augment ISIS routing protocol when used"; 924 } 925 description 926 "This augments ISIS protocol LSDB prefix."; 927 uses prefix-segment-id; 929 } 930 augment "/rt:routing-state/" + 931 "rt:control-plane-protocols/rt:control-plane-protocol"+ 932 "/isis:isis/isis:database/isis:level-db/isis:lsp"+ 933 "/isis:mt-ipv6-reachability/isis:prefixes" { 934 when "/rt:routing-state/rt:control-plane-protocols/"+ 935 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 936 description 937 "This augment ISIS routing protocol when used"; 938 } 939 description 940 "This augments ISIS protocol LSDB prefix."; 941 uses prefix-segment-id; 943 } 944 augment "/rt:routing-state/" + 945 "rt:control-plane-protocols/rt:control-plane-protocol"+ 946 "/isis:isis/isis:database/isis:level-db/isis:lsp" { 947 when "/rt:routing-state/rt:control-plane-protocols/"+ 948 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 949 description 950 "This augment ISIS routing protocol when used"; 951 } 952 description 953 "This augments ISIS protocol LSDB."; 954 uses segment-routing-binding-tlv; 956 } 958 /* Notifications */ 960 } 962 964 5. Security Considerations 966 Configuration and state data defined in this document are designed to 967 be accessed via the NETCONF protocol [RFC6241]. 969 As IS-IS is an IGP protocol (critical piece of the network), ensuring 970 stability and security of the protocol is mandatory for the network 971 service. 973 Authors recommends to implement NETCONF access control model 974 ([RFC6536]) to restrict access to all or part of the configuration to 975 specific users. 977 6. Contributors 979 Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for 980 their major contributions to the draft. 982 7. Acknowledgements 984 TBD. 986 8. IANA Considerations 988 The IANA is requested to assign two new URIs from the IETF XML 989 registry ([RFC3688]). Authors are suggesting the following URI: 991 URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr 992 Registrant Contact: IS-IS WG 993 XML: N/A, the requested URI is an XML namespace 995 This document also requests one new YANG module name in the YANG 996 Module Names registry ([RFC6020]) with the following suggestion : 998 name: ietf-isis-sr 999 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr 1000 prefix: isis-sr 1001 reference: RFC XXXX 1003 9. Change log for ietf-isis-sr YANG module 1005 9.1. From isis document version -12 to isis-sr document version -00 1007 o Separate document for IS-IS SR extensions. 1009 9.2. From isis document version -12 to version -13 1011 o Align with new segment routing common module. 1013 9.3. From isis document version -09 to version -11 1015 o Fixed XPATH in 'when' expressions. 1017 9.4. From isis document version -08 to version -09 1019 o Align to draft-ietf-netmod-routing-cfg-23. 1021 9.5. From isis document version -07 to version -08 1023 o Align to draft-ietf-netmod-routing-cfg-21. 1025 9.6. From isis-sr document version -00 to version -01 1027 o Added P-Flag in Adj-SID.. 1029 10. Normative References 1031 [I-D.ietf-isis-segment-routing-extensions] 1032 Previdi, S., Filsfils, C., Bashandy, A., Gredler, H., 1033 Litkowski, S., Decraene, B., and j. jefftant@gmail.com, 1034 "IS-IS Extensions for Segment Routing", draft-ietf-isis- 1035 segment-routing-extensions-12 (work in progress), April 1036 2017. 1038 [I-D.ietf-isis-yang-isis-cfg] 1039 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 1040 Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- 1041 isis-yang-isis-cfg-17 (work in progress), March 2017. 1043 [I-D.ietf-spring-sr-yang] 1044 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1045 Data Model for Segment Routing", draft-ietf-spring-sr- 1046 yang-06 (work in progress), March 2017. 1048 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1049 Requirement Levels", BCP 14, RFC 2119, 1050 DOI 10.17487/RFC2119, March 1997, 1051 . 1053 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1054 DOI 10.17487/RFC3688, January 2004, 1055 . 1057 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1058 the Network Configuration Protocol (NETCONF)", RFC 6020, 1059 DOI 10.17487/RFC6020, October 2010, 1060 . 1062 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1063 and A. Bierman, Ed., "Network Configuration Protocol 1064 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1065 . 1067 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1068 Protocol (NETCONF) Access Control Model", RFC 6536, 1069 DOI 10.17487/RFC6536, March 2012, 1070 . 1072 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1073 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1074 . 1076 Authors' Addresses 1078 Stephane Litkowski 1079 Orange 1081 Email: stephane.litkowski@orange.com 1083 Yingzhen Qu 1084 Huawei 1086 Email: yingzhen.qu@huawei.com 1087 Pushpasis Sarkar 1088 Individual 1090 Email: pushpasis.ietf@gmail.com 1092 Ing-Wher Chen 1093 Jabil 1095 Email: Ing-Wher_chen@jabil.com 1097 Jeff Tantsura 1098 Individual 1100 Email: jefftant.ietf@gmail.com