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