idnits 2.17.1 draft-hu-isis-srv6-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 document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There is 1 instance of too long lines in the document, the longest one being 1 character in excess of 72. ** The abstract seems to contain references ([I-D.ietf-lsr-isis-srv6-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 884 has weird spacing: '... uses srv6-...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 13, 2020) is 1382 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 (-19) exists of draft-ietf-lsr-isis-srv6-extensions-08 == Outdated reference: A later version (-06) exists of draft-raza-spring-srv6-yang-05 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 4 errors (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Z. Hu 3 Internet-Draft Huawei Technologies 4 Intended status: Standards Track D. Ye 5 Expires: January 14, 2021 Cisco Systems 6 Y. Qu 7 Futurewei Technologies 8 X. Geng 9 Huawei Technologies 10 July 13, 2020 12 YANG Data Model for IS-IS SRv6 13 draft-hu-isis-srv6-yang-04 15 Abstract 17 This document defines a YANG data model that can be used to configure 18 and manage IS-IS SRv6 [I-D.ietf-lsr-isis-srv6-extensions]. 20 Requirements Language 22 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 23 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 24 document are to be interpreted as described in RFC 2119 [RFC2119]. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on January 14, 2021. 43 Copyright Notice 45 Copyright (c) 2020 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. IS-IS SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . 2 62 3. IS-IS SRv6 configuration . . . . . . . . . . . . . . . . . . 5 63 3.1. SRv6 activation . . . . . . . . . . . . . . . . . . . . . 5 64 3.2. Locator setting . . . . . . . . . . . . . . . . . . . . . 5 65 3.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 5 66 3.4. Microloop avoidance . . . . . . . . . . . . . . . . . . . 6 67 4. IS-IS SRv6 YANG Module . . . . . . . . . . . . . . . . . . . 6 68 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19 69 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20 70 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 71 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 72 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 75 1. Overview 77 YANG [RFC6020] [RFC7950] is a data definition language used to define 78 the contents of a conceptual data store that allows networked devices 79 to be managed using NETCONF [RFC6241]. YANG is proving relevant 80 beyond its initial confines, as bindings to other interfaces (e.g., 81 ReST) and encodings other than XML (e.g., JSON) are being defined. 82 Furthermore, YANG data models can be used as the basis for 83 implementation of other interfaces, such as CLI and programmatic 84 APIs. 86 This document defines a YANG data model that can be used to configure 87 and manage IS-IS SRv6 and it is an augmentation to the IS- IS YANG 88 data model. 90 2. IS-IS SRv6 92 This document defines a model for IS-IS SRv6 feature. It is an 93 augmentation of the IS-IS base model. 95 The IS-IS SRv6 YANG module requires support for the base srv6 96 module[I-D.raza-spring-srv6-yang], which defines the global srv6 97 configuration independent of any specific routing protocol 98 configuration, and support of IS-IS base model 99 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 100 and state. 102 The figure below describes the overall structure of the isis-srv6 103 YANG module: 105 module: ietf-isis-srv6 106 module: ietf-isis-srv6 107 augment /rt:routing/rt:control-plane-protocols 108 /rt:control-plane-protocol/isis:isis: 109 +--rw srv6-cfg 110 | +--rw enable? boolean 111 | +--rw default-locator? boolean 112 | +--rw locator-name* -> /rt:routing/sr:segment-routing 113 | /srv6:srv6/locators/locator/name 114 | +--rw persistent-end-x-sid? boolean 115 +--rw micro-loop-avoidance 116 +--rw srv6-enable? boolean 117 +--rw srv6-rib-update-delay? uint16 118 augment /rt:routing/rt:control-plane-protocols 119 /rt:control-plane-protocol/isis:isis/isis:fast-reroute: 120 +--rw srv6-ti-lfa {srv6-ti-lfa}? 121 +--rw enable? boolean 122 augment /rt:routing/rt:control-plane-protocols 123 /rt:control-plane-protocol/isis:isis/isis:database 124 /isis:levels/isis:lsp/isis:router-capabilities: 125 +--ro v6-capability 126 | +--ro flags? bits 127 +--ro srv6-msd 128 +--ro max-segments-left? uint8 129 +--ro max-end-pop? uint8 130 +--ro max-h-encaps? uint8 131 +--ro max-end-d? uint8 132 augment /rt:routing/rt:control-plane-protocols 133 /rt:control-plane-protocol/isis:isis/isis:database 134 /isis:levels/isis:lsp/isis:extended-is-neighbor/isis:neighbor: 135 +--ro srv6-adjacency-sids 136 +--ro end-x-sid* [sid] 137 +--ro func-flags? bits 138 +--ro algorithm? uint8 139 +--ro weight? uint8 140 +--ro endpoint-func 141 | +--ro flags? uint8 142 | +--ro endpoint-func? identityref 143 | +--ro undefined-endpoint-func? uint16 144 +--ro sid srv6-sid-value 145 +--ro neighbor-id? isis:system-id 146 +--ro srv6-sid-structure 147 +--ro lb-length? uint8 148 +--ro ln-length? uint8 149 +--ro fun-length? uint8 150 +--ro arg-length? uint8 151 augment /rt:routing/rt:control-plane-protocols 152 /rt:control-plane-protocol/isis:isis/isis:database 153 /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 154 +--ro srv6-adjacency-sids 155 +--ro end-x-sid* [sid] 156 +--ro func-flags? bits 157 +--ro algorithm? uint8 158 +--ro weight? uint8 159 +--ro endpoint-func 160 | +--ro flags? uint8 161 | +--ro endpoint-func? identityref 162 | +--ro undefined-endpoint-func? uint16 163 +--ro sid srv6-sid-value 164 +--ro neighbor-id? isis:system-id 165 +--ro srv6-sid-structure 166 +--ro lb-length? uint8 167 +--ro ln-length? uint8 168 +--ro fun-length? uint8 169 +--ro arg-length? uint8 170 augment /rt:routing/rt:control-plane-protocols 171 /rt:control-plane-protocol/isis:isis/isis:database 172 /isis:levels/isis:lsp: 173 +--ro srv6-locators 174 +--ro locator* [locator] 175 +--ro mt-id? uint16 176 +--ro flags? bits 177 +--ro metric? uint32 178 +--ro algorithm? uint8 179 +--ro loc-size? uint8 180 +--ro locator inet:ipv6-address-no-zone 181 +--ro srv6-end-sids 182 | +--ro end-sid* [sid] 183 | +--ro flags? uint8 184 | +--ro endpoint-func 185 | | +--ro flags? uint8 186 | | +--ro endpoint-func? identityref 187 | | +--ro undefined-endpoint-func? uint16 188 | +--ro sid srv6-sid-value 189 | +--ro srv6-sid-structure 190 | +--ro lb-length? uint8 191 | +--ro ln-length? uint8 192 | +--ro fun-length? uint8 193 | +--ro arg-length? uint8 194 +--ro external-prefix-flag? boolean 195 +--ro readvertisement-flag? boolean 196 +--ro node-flag? boolean 197 +--ro ipv4-source-router-id? inet:ipv4-address 198 +--ro ipv6-source-router-id? inet:ipv6-address 199 augment /rt:routing/rt:control-plane-protocols 200 /rt:control-plane-protocol/isis:isis/isis:interfaces 201 /isis:interface/isis:adjacencies/isis:adjacency: 202 +--ro end-x-sid* [value] 203 +--ro value srv6-sid-value 204 +--ro weight? uint8 205 +--ro protection-requested? boolean 206 +--ro persistent? boolean 207 +--ro algorithm? uint8 208 +--ro endpoint-func 209 +--ro flags? uint8 210 +--ro endpoint-func? identityref 211 +--ro undefined-endpoint-func? uint16 213 3. IS-IS SRv6 configuration 215 3.1. SRv6 activation 217 Activation of IS-IS SRv6 is done by setting the "enable" leaf to 218 true. This triggers advertisement of SRv6 extensions based on the 219 configuration parameters that have been setup using the base SRv6 220 module. 222 3.2. Locator setting 224 The basic SRv6 module defines the related locator leafs. When the 225 IS-IS SRv6 module is enabled, set the locator by using the following 226 strategy: firstly, it is reasonable to check whether the default 227 locator is used, if not, to use the specified locator. The strategy 228 is realized by adding the leaf "default-locator", "locator-name" . 230 3.3. IP Fast reroute 232 IS-IS SRv6 model augments the fast-reroute container. It brings the 233 ability to activate ipv6 TI-LFA (topology independent LFA). 235 3.4. Microloop avoidance 237 IS-IS SRv6 model augments the micro-loop-avoidance container, this 238 container including the leaf "srv6-enable" brings the ability to 239 activate SRv6 avoid-microloop. 241 4. IS-IS SRv6 YANG Module 243 file "ietf-isis-srv6@2020-07-13.yang" 244 module ietf-isis-srv6 { 245 yang-version 1.1; 246 namespace "urn:ietf:params:xml:ns:" 247 + "yang:ietf-isis-srv6"; 248 prefix isis-srv6; 250 import ietf-routing { 251 prefix "rt"; 252 } 254 import ietf-isis { 255 prefix "isis"; 256 } 258 import ietf-srv6-base { 259 prefix "srv6"; 260 } 262 import iana-routing-types { 263 prefix "iana-rt-types"; 264 } 266 import ietf-inet-types { 267 prefix "inet"; 268 } 270 import ietf-segment-routing { 271 prefix sr; 272 reference "draft-ietf-spring-sr-yang"; 273 } 275 organization 276 "IETF LSR Working Group"; 278 contact 279 "WG List: 280 Author: Zhibo Hu 281 282 Author: Dan Ye 283 284 Author: Yingzhen Qu 285 286 Author: Jiajia Dong 287 288 "; 289 description 290 "The YANG module defines a generic configuration model for 291 Segment IPV6 routing ISIS extensions common across all of 292 the vendor implementations."; 294 revision 2020-07-13 { 295 description 296 "Initial revision."; 297 reference "draft-ietf-lsr-isis-srv6-extensions-08"; 298 } 300 /* Identities */ 301 identity SRV6_END_FUNC_TYPE { 302 description 303 "Base identity type for srv6 endpoint function code points."; 304 } 306 identity SRV6_END_FUNC_PSP_USP_USD { 307 base "SRV6_END_FUNC_TYPE"; 308 description 309 "End (May support PSP, USP, USD)."; 310 } 312 identity SRV6_END_X_FUNC_PSP_USP_USD { 313 base "SRV6_END_FUNC_TYPE"; 314 description 315 "End.X(May support PSP, USP, USD)"; 316 } 318 identity SRV6_END_T_FUNC_PSP_USP_USD { 319 base "SRV6_END_FUNC_TYPE"; 320 description 321 "END (May support PSP, USP, USD)"; 322 } 324 identity SRV6_END_FUNC_DX6 { 325 base "SRV6_END_FUNC_TYPE"; 326 description 327 "End.DX6."; 328 } 330 identity SRV6_END_FUNC_DX4 { 331 base "SRV6_END_FUNC_TYPE"; 332 description 333 "End.DX4."; 334 } 336 identity SRV6_END_FUNC_DT6 { 337 base "SRV6_END_FUNC_TYPE"; 338 description 339 "End.DT6."; 340 } 342 identity SRV6_END_FUNC_DT4 { 343 base "SRV6_END_FUNC_TYPE"; 344 description 345 "End.DT4."; 346 } 348 identity SRV6_END_FUNC_DT64 { 349 base "SRV6_END_FUNC_TYPE"; 350 description 351 "End.DT64."; 352 } 354 identity SRV6_END_FUNC_OP { 355 base "SRV6_END_FUNC_TYPE"; 356 description 357 "END.OP ."; 358 } 360 identity SRV6_END_FUNC_OTP { 361 base "SRV6_END_FUNC_TYPE"; 362 description 363 "END.OTP ."; 364 } 366 /* typedef */ 367 typedef srv6-sid-value { 368 type inet:ipv6-address-no-zone; 369 description 370 "16 Octets encoded sid value."; 371 } 373 /* Features */ 374 feature srv6-ti-lfa { 375 description 376 "Enhance SRv6 FRR with ti-lfa 377 support"; 378 } 379 /* Groupings */ 380 grouping srv6-msds { 381 description 382 "means to advertise to advertise node/link specific 383 values for Maxium Sid Depths(MSD) of various types"; 384 container srv6-msd { 385 description 386 "Maximum SRv6 SID Depths."; 387 leaf max-segments-left { 388 type uint8; 389 description 390 "The Maximum Segments Left MSD Type specifies 391 the maximum value of the 'SL' field in the SRH 392 of a received packet before applying the 393 Endpoint behavior associated with a SID."; 394 } 395 leaf max-end-pop { 396 type uint8; 397 description 398 "The Maximum End Pop MSD Type specifies the maximum 399 number of SIDs in the SRH to which the router can 400 apply 'PSP' or 'USP' behavior, as defined in flavors."; 401 } 402 leaf max-h-encaps { 403 type uint8; 404 description 405 "The Maximum H.Encaps MSD Type specifies the maximum number 406 of SIDs that can be included as part of the 'H.Encaps' 407 behavior"; 408 } 409 leaf max-end-d { 410 type uint8; 411 description 412 "The maximum number of SIDs in an SRH when performing 413 decapsulation associated with 'End.Dx' functions 414 (e.g., 'End.DX6' and 'End.DT6')."; 415 } 416 } 417 } 419 grouping srv6-sid-structures { 420 description 421 "This group defines SRv6 SID Structure sub-sub-TLV."; 422 container srv6-sid-structure { 423 description 424 "SRv6 SID Structure sub-sub-TLV is used to advertise 425 the length of each individual part of the SRv6 SID 426 as defined in [I-D.ietf-spring-srv6-network-programming]"; 428 leaf lb-length { 429 type uint8; 430 description 431 "SRv6 SID Locator Block length in bits."; 432 } 434 leaf ln-length { 435 type uint8; 436 description 437 "SRv6 SID Locator Node length in bits."; 438 } 440 leaf fun-length { 441 type uint8; 442 description 443 "SRv6 SID Function length in bits."; 444 } 446 leaf arg-length { 447 type uint8; 448 description 449 "SRv6 SID Argument length in bits."; 450 } 451 } 452 } 453 grouping srv6-capability { 454 description 455 "SRV6 capability grouping."; 456 container v6-capability { 457 description 458 "SRv6 capability."; 459 leaf flags { 460 type bits { 461 bit o-flag { 462 position 1; 463 description 464 "If set, then the router is able to 465 use of the O-bit in the Segment Routing Header(SRH) 466 as defined in [draft-ietf-6man-segment-routing-header]."; 467 } 468 } 469 description 470 "Flags."; 471 } 472 } 473 } 475 grouping srv6-endpoint-func { 476 description 477 "This group defines srv6 endpoint function"; 478 container endpoint-func { 479 description 480 "Srv6 Endpoint function Descriptor."; 481 leaf flags { 482 type uint8; 483 description 484 "No flags are currently being defined."; 485 } 486 leaf endpoint-func { 487 type identityref { 488 base isis-srv6:SRV6_END_FUNC_TYPE; 489 } 490 description 491 "The endpoint function."; 492 } 493 leaf undefined-endpoint-func { 494 type uint16; 495 description 496 "Unknown endpoint func value."; 497 } 498 } 499 } 501 grouping srv6-end-sid { 502 description 503 "SRv6 Segment Identifier(SID) with Endpoint functions."; 504 leaf flags { 505 type uint8; 506 description 507 "NO flags are currently being defined."; 508 } 510 uses srv6-endpoint-func; 512 leaf sid { 513 type srv6-sid-value; 514 description 515 "SRV6 sid value."; 516 } 517 // sub-sub-tlvs 518 uses srv6-sid-structures; 519 } 521 grouping srv6-locator { 522 description 523 "This group defines srv6 locator tlv."; 525 leaf mt-id { 526 type uint16 { 527 range "0..4095"; 528 } 529 description 530 "Multitopology Identifier as defined in [RFC5120]."; 531 } 532 leaf flags { 533 type bits { 534 bit d-flag { 535 position 0; 536 description 537 "When the locator is leaked from level-2 to leve-1, 538 the d-flag must be set."; 539 } 540 } 541 description 542 "Flags for srv6 locator tlv."; 543 } 545 leaf metric { 546 type uint32; 547 description 548 "Metric value."; 549 } 550 leaf algorithm { 551 type uint8; 552 description 553 "Associated algorithm."; 554 } 556 leaf loc-size { 557 type uint8; 558 description 559 "Number of bits in the locator field."; 560 } 561 leaf locator { 562 type inet:ipv6-address-no-zone; 563 description 564 "Advertised SRV6 locator."; 565 } 566 container srv6-end-sids { 567 description 568 "This contains list of srv6 end sids."; 569 list end-sid { 570 key "sid"; 571 description 572 "List of SRV6 SRv6 Segment Identifiers (SID) 573 with Endpoint functions."; 574 uses srv6-end-sid; 575 } 576 } 577 uses isis:prefix-reachability-attributes; 578 uses isis:prefix-ipv4-source-router-id; 579 uses isis:prefix-ipv6-source-router-id; 580 } 582 grouping srv6-adjacency-sid { 583 description 584 "SRv6 sid associated with an adjacency."; 586 leaf func-flags { 587 type bits { 588 bit b-flag { 589 position 0; 590 description 591 "Backup flag. If set, the End.X sid is 592 eligible for protection."; 593 } 595 bit s-flag { 596 position 1; 597 description 598 "Set flag. When set, the End.X sid refers to 599 a set of adjacencies (and therefore May be assigned 600 to other adjacencies as well."; 601 } 603 bit p-flag { 604 position 2; 605 description 606 "Persistent flag. When set, the End.X sid is persistently 607 allocated, i.e., the End.x sid value remains consistent 608 across router restart and/or interface flap."; 609 } 610 } 611 description 612 "Flags for srv6 end x sid."; 613 } 615 leaf algorithm { 616 type uint8; 617 description 618 "Associated algorithm."; 619 } 620 leaf weight { 621 type uint8; 622 description 623 "The value represents the weight of the End.X sid 624 for the purpose of load balancing."; 625 } 627 uses srv6-endpoint-func; 629 leaf sid { 630 type srv6-sid-value; 631 description 632 "SRV6 sid value."; 633 } 635 leaf neighbor-id { 636 type isis:system-id; 637 description 638 "Describes the system ID of the neighbor 639 associated with the SID value. This is only 640 used on LAN adjacencies."; 641 } 643 // sub-sub-tlvs 644 uses srv6-sid-structures; 645 } 647 grouping srv6-adjacency-state { 648 description 649 "This group will extend adjacency state."; 650 list end-x-sid { 651 key value; 652 config false; 653 leaf value { 654 type srv6-sid-value; 655 description 656 "Value of the Adj-SID."; 657 } 658 leaf weight { 659 type uint8; 660 description 661 "Weight associated with 662 the End.X SID."; 663 } 664 leaf protection-requested { 665 type boolean; 666 description 667 "Set to True if the End.X SID 668 must be protected."; 669 } 670 leaf persistent { 671 type boolean; 672 description 673 "Persistent flag. When set, the End.X sid is persistently 674 allocated, i.e., the End.X sid value remains consistent 675 across router restart and/or interface flap."; 676 } 677 leaf algorithm { 678 type uint8; 679 description 680 "Associated algorithm."; 681 } 682 uses srv6-endpoint-func; 684 description 685 "List of End.X Segment IDs."; 686 } 687 } 688 /* Cfg */ 689 augment "/rt:routing/" + 690 "rt:control-plane-protocols/rt:control-plane-protocol"+ 691 "/isis:isis" { 692 when "/rt:routing/rt:control-plane-protocols/"+ 693 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 694 description 695 "This augment ISIS routing protocol when used"; 696 } 697 description 698 "This augments ISIS protocol configuration 699 with SRv6."; 701 container srv6-cfg{ 702 leaf enable{ 703 type boolean; 704 default "false"; 705 description 706 "Enables SRv6 707 protocol extensions."; 708 } 710 leaf default-locator { 711 type boolean; 712 default "false"; 713 description 714 "Enable ISIS segment-routing IPv6 with default Locator."; 715 } 716 leaf-list locator-name { 717 when "derived-from(../default-locator, 'false')" { 718 description 719 "Only applies to non default locator."; 720 } 721 type leafref { 722 path "/rt:routing/sr:segment-routing/srv6:srv6" + 723 "/srv6:locators/srv6:locator/srv6:name"; 724 } 725 description 726 "Enable ISIS segment-routing IPv6 with specified Locator."; 727 } 729 leaf persistent-end-x-sid{ 730 type boolean; 731 default "false"; 732 description 733 "Enable the persistent nature of End.X sid"; 734 } 735 description 736 "Configuration about ISIS segment-routing IPv6."; 737 } 738 container micro-loop-avoidance { 739 leaf srv6-enable { 740 type boolean; 741 default "false"; 742 description 743 "Enable SRv6 avoid-microloop.Depend on SR IPv6 Enable."; 744 } 746 leaf srv6-rib-update-delay { 747 type uint16 { 748 range "1000..10000"; 749 } 750 units "ms"; 751 default "5000"; 752 description 753 "Set the route delivery delay for SRv6 avoid-microloop. 754 Depend on SR IPv6 Enable."; 755 } 757 description 758 "Enable IS-IS avoid-microloop."; 759 } 760 } 762 augment "/rt:routing/" + 763 "rt:control-plane-protocols/rt:control-plane-protocol"+ 764 "/isis:isis/isis:fast-reroute"{ 765 when "/rt:routing/rt:control-plane-protocols/"+ 766 "rt:control-plane-protocol/rt:type = 'isis:isis'"{ 767 description 768 "This augment ISIS routing protocol when used"; 769 } 770 description 771 "This augments ISIS IPFRR with IPV6 TILFA."; 773 container srv6-ti-lfa { 775 if-feature srv6-ti-lfa; 776 leaf enable { 777 type boolean; 778 description 779 "Enables SRv6 TI-LFA computation."; 780 } 782 description 783 "SRv6 TILFA configuration."; 784 } 785 } 787 /* Operational states */ 788 augment "/rt:routing/" + 789 "rt:control-plane-protocols/rt:control-plane-protocol"+ 790 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 791 "/isis:router-capabilities" { 792 when "/rt:routing/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 router capability."; 799 uses srv6-capability; 800 uses srv6-msds; 801 } 803 augment "/rt:routing/" + 804 "rt:control-plane-protocols/rt:control-plane-protocol"+ 805 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 806 "/isis:extended-is-neighbor/isis:neighbor" { 807 when "/rt:routing/rt:control-plane-protocols/"+ 808 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 809 description 810 "This augment ISIS routing protocol when used."; 812 } 813 description 814 "This augments ISIS protocol neighbor."; 815 container srv6-adjacency-sids { 816 description 817 "This defines svr6 end-x sids for the adjacency."; 818 list end-x-sid { 819 key "sid"; 820 uses srv6-adjacency-sid; 821 description 822 "List of end-x sids."; 823 } 824 } 825 } 826 augment "/rt:routing/" + 827 "rt:control-plane-protocols/rt:control-plane-protocol"+ 828 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 829 "/isis:mt-is-neighbor/isis:neighbor" { 830 when "/rt:routing/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 neighbor."; 837 container srv6-adjacency-sids { 838 description 839 "This defines svr6 end-x sids for the adjacency."; 840 list end-x-sid { 841 key "sid"; 842 uses srv6-adjacency-sid; 843 description 844 "List of end-x sids."; 845 } 846 } 847 } 849 augment "/rt:routing/" + 850 "rt:control-plane-protocols/rt:control-plane-protocol"+ 851 "/isis:isis/isis:database/isis:levels/isis:lsp" { 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."; 859 container srv6-locators { 860 description 861 "This defines srv6 locator tlvs."; 862 list locator { 863 key "locator"; 864 uses srv6-locator; 865 description 866 "List of srv6 locators."; 867 } 868 } 869 } 871 augment "/rt:routing/" + 872 "rt:control-plane-protocols/rt:control-plane-protocol"+ 873 "/isis:isis/isis:interfaces/isis:interface" + 874 "/isis:adjacencies/isis:adjacency" { 875 when "/rt:routing/rt:control-plane-protocols/"+ 876 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 877 description 878 "This augment ISIS routing protocol when used."; 879 } 880 description 881 "This augments ISIS protocol operational state 882 with segment routing."; 884 uses srv6-adjacency-state; 885 } 887 /* Notifications */ 888 } 889 891 5. Security Considerations 893 Configuration and state data defined in this document are designed to 894 be accessed via the NETCONF protocol [RFC6241]. 896 As IS-IS is an IGP protocol (critical piece of the network), ensuring 897 stability and security of the protocol is mandatory for the network 898 service. 900 Authors recommends to implement NETCONF access control model 901 ([RFC6536]) to restrict access to all or part of the configuration to 902 specific users. 904 6. Contributors 906 Jiajia Dong 907 Huawei 908 China 910 Email:dongjiajia@huawei.com 912 7. Acknowledgements 914 TBD. 916 8. IANA Considerations 918 The IANA is requested to assign two new URIs from the IETF XML 919 registry ([RFC3688]). Authors are suggesting the following URI: 921 URI: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 922 Registrant Contact: IS-IS WG 923 XML: N/A, the requested URI is an XML namespace 925 This document also requests one new YANG module name in the YANG 926 Module Names registry ([RFC6020]) with the following suggestion : 928 name: ietf-isis-srv6 929 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 prefix: isis-srv6 930 reference: RFC XXXX 932 9. References 934 [I-D.ietf-isis-yang-isis-cfg] 935 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 936 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 937 isis-yang-isis-cfg-42 (work in progress), October 2019. 939 [I-D.ietf-lsr-isis-srv6-extensions] 940 Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and 941 Z. Hu, "IS-IS Extension to Support Segment Routing over 942 IPv6 Dataplane", draft-ietf-lsr-isis-srv6-extensions-08 943 (work in progress), April 2020. 945 [I-D.raza-spring-srv6-yang] 946 Raza, K., Agarwal, S., Liu, X., Hu, Z., Hussain, I., Shah, 947 H., Voyer, D., Elmalky, H., Matsushima, S., Horiba, K., 948 Abdelsalam, A., and J. Rajamanickam, "YANG Data Model for 949 SRv6 Base and Static", draft-raza-spring-srv6-yang-05 950 (work in progress), October 2019. 952 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 953 Requirement Levels", BCP 14, RFC 2119, 954 DOI 10.17487/RFC2119, March 1997, 955 . 957 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 958 DOI 10.17487/RFC3688, January 2004, 959 . 961 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 962 the Network Configuration Protocol (NETCONF)", RFC 6020, 963 DOI 10.17487/RFC6020, October 2010, 964 . 966 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 967 and A. Bierman, Ed., "Network Configuration Protocol 968 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 969 . 971 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 972 Protocol (NETCONF) Access Control Model", RFC 6536, 973 DOI 10.17487/RFC6536, March 2012, 974 . 976 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 977 RFC 7950, DOI 10.17487/RFC7950, August 2016, 978 . 980 Authors' Addresses 982 Zhibo Hu 983 Huawei Technologies 984 Huawei Bld., No.156 Beiqing Rd. 985 Beijing 100095 986 China 988 Email: huzhibo@huawei.com 990 Dan Ye 991 Cisco Systems 992 170 W. Tasman Dr. San Jose, 993 California 95134 994 USA 996 Email: daye@cisco.com 997 Yingzhen Qu 998 Futurewei Technologies 999 2330 Central Express Way 1000 Santa Clara 950950 1001 USA 1003 Email: yingzhen.qu@futurewei.com 1005 Xuesong Geng 1006 Huawei Technologies 1007 Huawei Bld., No.156 Beiqing Rd. 1008 Beijing 100095 1009 China 1011 Email: gengxuesong@huawei.com