idnits 2.17.1 draft-hu-isis-srv6-yang-06.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 890 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 (June 24, 2021) is 1030 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-14 == Outdated reference: A later version (-03) exists of draft-ietf-spring-srv6-yang-00 ** 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 4 Intended status: Standards Track D. Ye 5 Expires: December 26, 2021 Cisco 6 Y. Qu 7 Futurewei 8 X. Geng 9 Q. Ma 10 Huawei 11 June 24, 2021 13 YANG Data Model for IS-IS SRv6 14 draft-hu-isis-srv6-yang-06 16 Abstract 18 This document defines a YANG data model that can be used to configure 19 and manage IS-IS SRv6 [I-D.ietf-lsr-isis-srv6-extensions]. 21 Requirements Language 23 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 24 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 25 document are to be interpreted as described in RFC 2119 [RFC2119]. 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at https://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on December 26, 2021. 44 Copyright Notice 46 Copyright (c) 2021 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (https://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 62 2. IS-IS SRv6 . . . . . . . . . . . . . . . . . . . . . . . . . 2 63 3. IS-IS SRv6 configuration . . . . . . . . . . . . . . . . . . 5 64 3.1. SRv6 activation . . . . . . . . . . . . . . . . . . . . . 5 65 3.2. Locator setting . . . . . . . . . . . . . . . . . . . . . 5 66 3.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 5 67 3.4. Microloop avoidance . . . . . . . . . . . . . . . . . . . 6 68 4. IS-IS SRv6 YANG Module . . . . . . . . . . . . . . . . . . . 6 69 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19 70 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 20 71 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 72 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 73 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 74 Appendix A. Configuration examples . . . . . . . . . . . . . . . 22 75 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 77 1. Overview 79 YANG [RFC6020] [RFC7950] is a data definition language used to define 80 the contents of a conceptual data store that allows networked devices 81 to be managed using NETCONF [RFC6241]. YANG is proving relevant 82 beyond its initial confines, as bindings to other interfaces (e.g., 83 REST) and encodings other than XML (e.g., JSON) are being defined. 84 Furthermore, YANG data models can be used as the basis for 85 implementation of other interfaces, such as CLI and programmatic 86 APIs. 88 This document defines a YANG data model that can be used to configure 89 and manage IS-IS SRv6 and it is an augmentation to the IS-IS YANG 90 data model. 92 2. IS-IS SRv6 94 This document defines a model for IS-IS SRv6 feature. It is an 95 augmentation of the IS-IS base model. 97 The IS-IS SRv6 YANG module requires support for the base srv6 98 module[I-D.ietf-spring-srv6-yang], which defines the global srv6 99 configuration independent of any specific routing protocol 100 configuration, and support of IS-IS base model 101 [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration 102 and state. This module uses types defined in [RFC6991]. It also 103 references [RFC8349], [I-D.ietf-spring-srv6-yang], 104 [I-D.ietf-isis-yang-isis-cfg], [I-D.ietf-spring-sr-yang] and 105 [I-D.ietf-spring-srv6-yang]. 107 The figure below describes the overall structure of the isis-srv6 108 YANG module: 110 module: ietf-isis-srv6 111 augment /rt:routing/rt:control-plane-protocols 112 /rt:control-plane-protocol/isis:isis: 113 +--rw srv6-cfg 114 | +--rw enable? boolean 115 | +--rw default-locator? boolean 116 | +--rw locator-name* -> /rt:routing/sr:segment-routing 117 | /srv6:srv6/locators/locator/name 118 | +--rw persistent-end-x-sid? boolean 119 +--rw micro-loop-avoidance 120 +--rw srv6-enable? boolean 121 +--rw srv6-rib-update-delay? uint16 122 augment /rt:routing/rt:control-plane-protocols 123 /rt:control-plane-protocol/isis:isis/isis:fast-reroute: 124 +--rw srv6-ti-lfa {srv6-ti-lfa}? 125 +--rw enable? boolean 126 augment /rt:routing/rt:control-plane-protocols 127 /rt:control-plane-protocol/isis:isis/isis:database 128 /isis:levels/isis:lsp/isis:router-capabilities: 129 +--ro v6-capability 130 | +--ro flags? bits 131 +--ro srv6-msd 132 +--ro max-segments-left? uint8 133 +--ro max-end-pop? uint8 134 +--ro max-h-encaps? uint8 135 +--ro max-end-d? uint8 136 augment /rt:routing/rt:control-plane-protocols 137 /rt:control-plane-protocol/isis:isis/isis:database 138 /isis:levels/isis:lsp/isis:extended-is-neighbor/isis:neighbor: 139 +--ro srv6-adjacency-sids 140 +--ro end-x-sid* [sid] 141 +--ro func-flags? bits 142 +--ro algorithm? uint8 143 +--ro weight? uint8 144 +--ro endpoint-func 145 | +--ro flags? uint8 146 | +--ro endpoint-func? identityref 147 | +--ro undefined-endpoint-func? uint16 148 +--ro sid srv6-sid-value 149 +--ro neighbor-id? isis:system-id 150 +--ro srv6-sid-structure 151 +--ro lb-length? uint8 152 +--ro ln-length? uint8 153 +--ro fun-length? uint8 154 +--ro arg-length? uint8 155 augment /rt:routing/rt:control-plane-protocols 156 /rt:control-plane-protocol/isis:isis/isis:database 157 /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor: 158 +--ro srv6-adjacency-sids 159 +--ro end-x-sid* [sid] 160 +--ro func-flags? bits 161 +--ro algorithm? uint8 162 +--ro weight? uint8 163 +--ro endpoint-func 164 | +--ro flags? uint8 165 | +--ro endpoint-func? identityref 166 | +--ro undefined-endpoint-func? uint16 167 +--ro sid srv6-sid-value 168 +--ro neighbor-id? isis:system-id 169 +--ro srv6-sid-structure 170 +--ro lb-length? uint8 171 +--ro ln-length? uint8 172 +--ro fun-length? uint8 173 +--ro arg-length? uint8 174 augment /rt:routing/rt:control-plane-protocols 175 /rt:control-plane-protocol/isis:isis/isis:database 176 /isis:levels/isis:lsp: 177 +--ro srv6-locators 178 +--ro locator* [locator] 179 +--ro mt-id? uint16 180 +--ro flags? bits 181 +--ro metric? uint32 182 +--ro algorithm? uint8 183 +--ro loc-size? uint8 184 +--ro locator inet:ipv6-address-no-zone 185 +--ro srv6-end-sids 186 | +--ro end-sid* [sid] 187 | +--ro flags? uint8 188 | +--ro endpoint-func 189 | | +--ro flags? uint8 190 | | +--ro endpoint-func? identityref 191 | | +--ro undefined-endpoint-func? uint16 192 | +--ro sid srv6-sid-value 193 | +--ro srv6-sid-structure 194 | +--ro lb-length? uint8 195 | +--ro ln-length? uint8 196 | +--ro fun-length? uint8 197 | +--ro arg-length? uint8 198 +--ro external-prefix-flag? boolean 199 +--ro readvertisement-flag? boolean 200 +--ro node-flag? boolean 201 +--ro ipv4-source-router-id? inet:ipv4-address 202 +--ro ipv6-source-router-id? inet:ipv6-address 203 augment /rt:routing/rt:control-plane-protocols 204 /rt:control-plane-protocol/isis:isis/isis:interfaces 205 /isis:interface/isis:adjacencies/isis:adjacency: 206 +--ro end-x-sid* [value] 207 +--ro value srv6-sid-value 208 +--ro weight? uint8 209 +--ro protection-requested? boolean 210 +--ro persistent? boolean 211 +--ro algorithm? uint8 212 +--ro endpoint-func 213 +--ro flags? uint8 214 +--ro endpoint-func? identityref 215 +--ro undefined-endpoint-func? uint16 217 3. IS-IS SRv6 configuration 219 3.1. SRv6 activation 221 Activation of IS-IS SRv6 is done by setting the "enable" leaf to 222 true. This triggers advertisement of SRv6 extensions based on the 223 configuration parameters that have been setup using the base SRv6 224 module. 226 3.2. Locator setting 228 The basic SRv6 module defines the related locator leafs. When the 229 IS-IS SRv6 module is enabled, set the locator by using the following 230 strategy: firstly, it is reasonable to check whether the default 231 locator is used, if not, to use the specified locator. The strategy 232 is realized by adding the leaf "default-locator", "locator-name" . 234 3.3. IP Fast reroute 236 IS-IS SRv6 model augments the fast-reroute container. It brings the 237 ability to activate ipv6 TI-LFA (topology independent LFA). 239 3.4. Microloop avoidance 241 IS-IS SRv6 model augments the micro-loop-avoidance container, this 242 container including the leaf "srv6-enable" brings the ability to 243 activate SRv6 avoid-microloop. 245 4. IS-IS SRv6 YANG Module 247 file "ietf-isis-srv6@2020-07-13.yang" 248 module ietf-isis-srv6 { 249 yang-version 1.1; 250 namespace "urn:ietf:params:xml:ns:" 251 + "yang:ietf-isis-srv6"; 252 prefix isis-srv6; 254 import ietf-routing { 255 prefix "rt"; 256 reference "RFC8349: A YANG Data Model for 257 Routing Management (NMDA Version)"; 258 } 260 import ietf-isis { 261 prefix "isis"; 262 reference "draft-ietf-isis-yang-isis-cfg: YANG 263 Data Model for IS-IS Protocol"; 264 } 266 import ietf-inet-types { 267 prefix "inet"; 268 reference "RFC 6991:Common YANG Data Types"; 269 } 271 import ietf-segment-routing { 272 prefix sr; 273 reference "draft-ietf-spring-sr-yang: YANG Data 274 Model for Segment Routing"; 275 } 276 import ietf-srv6-base { 277 prefix "srv6"; 278 reference "draft-ietf-spring-srv6-yang: YANG Data 279 Model for SRv6 Base and Static"; 281 } 283 organization 284 "IETF LSR Working Group"; 286 contact 287 "WG List: 288 Author: Zhibo Hu 289 290 Author: Dan Ye 291 292 Author: Yingzhen Qu 293 294 Author: Qiufang Ma 295 296 "; 297 description 298 "The YANG module defines a generic configuration model for 299 Segment IPV6 routing ISIS extensions common across all of 300 the vendor implementations."; 302 revision 2020-07-13 { 303 description 304 "Initial revision."; 305 reference "draft-ietf-lsr-isis-srv6-extensions-08"; 306 } 308 /* Identities */ 309 identity SRV6_END_FUNC_TYPE { 310 description 311 "Base identity type for srv6 endpoint function code points."; 312 } 314 identity SRV6_END_FUNC_PSP_USP_USD { 315 base "SRV6_END_FUNC_TYPE"; 316 description 317 "End (May support PSP, USP, USD)."; 318 } 320 identity SRV6_END_X_FUNC_PSP_USP_USD { 321 base "SRV6_END_FUNC_TYPE"; 322 description 323 "End.X(May support PSP, USP, USD)"; 324 } 326 identity SRV6_END_T_FUNC_PSP_USP_USD { 327 base "SRV6_END_FUNC_TYPE"; 328 description 329 "END (May support PSP, USP, USD)"; 330 } 332 identity SRV6_END_FUNC_DX6 { 333 base "SRV6_END_FUNC_TYPE"; 334 description 335 "End.DX6."; 336 } 338 identity SRV6_END_FUNC_DX4 { 339 base "SRV6_END_FUNC_TYPE"; 340 description 341 "End.DX4."; 342 } 344 identity SRV6_END_FUNC_DT6 { 345 base "SRV6_END_FUNC_TYPE"; 346 description 347 "End.DT6."; 348 } 350 identity SRV6_END_FUNC_DT4 { 351 base "SRV6_END_FUNC_TYPE"; 352 description 353 "End.DT4."; 354 } 356 identity SRV6_END_FUNC_DT64 { 357 base "SRV6_END_FUNC_TYPE"; 358 description 359 "End.DT64."; 360 } 362 identity SRV6_END_FUNC_OP { 363 base "SRV6_END_FUNC_TYPE"; 364 description 365 "END.OP ."; 366 } 368 identity SRV6_END_FUNC_OTP { 369 base "SRV6_END_FUNC_TYPE"; 370 description 371 "END.OTP ."; 372 } 374 /* typedef */ 375 typedef srv6-sid-value { 376 type inet:ipv6-address-no-zone; 377 description 378 "16 Octets encoded sid value."; 379 } 381 /* Features */ 382 feature srv6-ti-lfa { 383 description 384 "Enhance SRv6 FRR with ti-lfa 385 support"; 386 } 387 /* Groupings */ 388 grouping srv6-msds { 389 description 390 "means to advertise to advertise node/link specific 391 values for Maxium Sid Depths(MSD) of various types"; 392 container srv6-msd { 393 description 394 "Maximum SRv6 SID Depths."; 395 leaf max-segments-left { 396 type uint8; 397 description 398 "The Maximum Segments Left MSD Type specifies 399 the maximum value of the 'SL' field in the SRH 400 of a received packet before applying the 401 Endpoint behavior associated with a SID."; 402 } 403 leaf max-end-pop { 404 type uint8; 405 description 406 "The Maximum End Pop MSD Type specifies the maximum 407 number of SIDs in the SRH to which the router can 408 apply 'PSP' or 'USP' behavior, as defined in flavors."; 409 } 410 leaf max-h-encaps { 411 type uint8; 412 description 413 "The Maximum H.Encaps MSD Type specifies the maximum number 414 of SIDs that can be included as part of the 'H.Encaps' 415 behavior"; 416 } 417 leaf max-end-d { 418 type uint8; 419 description 420 "The maximum number of SIDs in an SRH when performing 421 decapsulation associated with 'End.Dx' functions 422 (e.g., 'End.DX6' and 'End.DT6')."; 423 } 424 } 425 } 427 grouping srv6-sid-structures { 428 description 429 "This group defines SRv6 SID Structure sub-sub-TLV."; 430 container srv6-sid-structure { 431 description 432 "SRv6 SID Structure sub-sub-TLV is used to advertise 433 the length of each individual part of the SRv6 SID 434 as defined in [I-D.ietf-spring-srv6-network-programming]"; 435 leaf lb-length { 436 type uint8; 437 description 438 "SRv6 SID Locator Block length in bits."; 439 } 441 leaf ln-length { 442 type uint8; 443 description 444 "SRv6 SID Locator Node length in bits."; 445 } 447 leaf fun-length { 448 type uint8; 449 description 450 "SRv6 SID Function length in bits."; 451 } 453 leaf arg-length { 454 type uint8; 455 description 456 "SRv6 SID Argument length in bits."; 457 } 458 } 459 } 460 grouping srv6-capability { 461 description 462 "SRV6 capability grouping."; 463 container v6-capability { 464 description 465 "SRv6 capability."; 466 leaf flags { 467 type bits { 468 bit o-flag { 469 position 1; 470 description 471 "If set, then the router is able to 472 use of the O-bit in the Segment Routing Header(SRH) 473 as defined in [draft-ietf-6man-segment-routing-header]."; 474 } 475 } 476 description 477 "Flags."; 478 } 480 } 481 } 483 grouping srv6-endpoint-func { 484 description 485 "This group defines srv6 endpoint function"; 486 container endpoint-func { 487 description 488 "Srv6 Endpoint function Descriptor."; 489 leaf flags { 490 type uint8; 491 description 492 "No flags are currently being defined."; 493 } 494 leaf endpoint-func { 495 type identityref { 496 base isis-srv6:SRV6_END_FUNC_TYPE; 497 } 498 description 499 "The endpoint function."; 500 } 501 leaf undefined-endpoint-func { 502 type uint16; 503 description 504 "Unknown endpoint func value."; 505 } 506 } 507 } 509 grouping srv6-end-sid { 510 description 511 "SRv6 Segment Identifier(SID) with Endpoint functions."; 512 leaf flags { 513 type uint8; 514 description 515 "NO flags are currently being defined."; 516 } 518 uses srv6-endpoint-func; 520 leaf sid { 521 type srv6-sid-value; 522 description 523 "SRV6 sid value."; 524 } 525 // sub-sub-tlvs 526 uses srv6-sid-structures; 527 } 528 grouping srv6-locator { 529 description 530 "This group defines srv6 locator tlv."; 531 leaf mt-id { 532 type uint16 { 533 range "0..4095"; 534 } 535 description 536 "Multitopology Identifier as defined in [RFC5120]."; 537 } 538 leaf flags { 539 type bits { 540 bit d-flag { 541 position 0; 542 description 543 "When the locator is leaked from level-2 to leve-1, 544 the d-flag must be set."; 545 } 546 } 547 description 548 "Flags for srv6 locator tlv."; 549 } 551 leaf metric { 552 type uint32; 553 description 554 "Metric value."; 555 } 556 leaf algorithm { 557 type uint8; 558 description 559 "Associated algorithm."; 560 } 562 leaf loc-size { 563 type uint8; 564 description 565 "Number of bits in the locator field."; 566 } 567 leaf locator { 568 type inet:ipv6-address-no-zone; 569 description 570 "Advertised SRV6 locator."; 571 } 572 container srv6-end-sids { 573 description 574 "This contains list of srv6 end sids."; 575 list end-sid { 576 key "sid"; 577 description 578 "List of SRV6 SRv6 Segment Identifiers (SID) 579 with Endpoint functions."; 580 uses srv6-end-sid; 581 } 582 } 583 uses isis:prefix-reachability-attributes; 584 uses isis:prefix-ipv4-source-router-id; 585 uses isis:prefix-ipv6-source-router-id; 586 } 588 grouping srv6-adjacency-sid { 589 description 590 "SRv6 sid associated with an adjacency."; 592 leaf func-flags { 593 type bits { 594 bit b-flag { 595 position 0; 596 description 597 "Backup flag. If set, the End.X sid is 598 eligible for protection."; 599 } 601 bit s-flag { 602 position 1; 603 description 604 "Set flag. When set, the End.X sid refers to 605 a set of adjacencies (and therefore May be assigned 606 to other adjacencies as well."; 607 } 609 bit p-flag { 610 position 2; 611 description 612 "Persistent flag. When set, the End.X sid is persistently 613 allocated, i.e., the End.x sid value remains consistent 614 across router restart and/or interface flap."; 615 } 616 } 617 description 618 "Flags for srv6 end x sid."; 619 } 621 leaf algorithm { 622 type uint8; 623 description 624 "Associated algorithm."; 625 } 627 leaf weight { 628 type uint8; 629 description 630 "The value represents the weight of the End.X sid 631 for the purpose of load balancing."; 632 } 634 uses srv6-endpoint-func; 636 leaf sid { 637 type srv6-sid-value; 638 description 639 "SRV6 sid value."; 640 } 642 leaf neighbor-id { 643 type isis:system-id; 644 description 645 "Describes the system ID of the neighbor 646 associated with the SID value. This is only 647 used on LAN adjacencies."; 648 } 650 // sub-sub-tlvs 651 uses srv6-sid-structures; 652 } 654 grouping srv6-adjacency-state { 655 description 656 "This group will extend adjacency state."; 657 list end-x-sid { 658 key value; 659 config false; 660 leaf value { 661 type srv6-sid-value; 662 description 663 "Value of the Adj-SID."; 664 } 665 leaf weight { 666 type uint8; 667 description 668 "Weight associated with 669 the End.X SID."; 670 } 671 leaf protection-requested { 672 type boolean; 673 description 674 "Set to True if the End.X SID 675 must be protected."; 676 } 677 leaf persistent { 678 type boolean; 679 description 680 "Persistent flag. When set, the End.X sid is persistently 681 allocated, i.e., the End.X sid value remains consistent 682 across router restart and/or interface flap."; 683 } 684 leaf algorithm { 685 type uint8; 686 description 687 "Associated algorithm."; 688 } 689 uses srv6-endpoint-func; 691 description 692 "List of End.X Segment IDs."; 693 } 694 } 695 /* Cfg */ 696 augment "/rt:routing/" + 697 "rt:control-plane-protocols/rt:control-plane-protocol"+ 698 "/isis:isis" { 699 when "/rt:routing/rt:control-plane-protocols/"+ 700 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 701 description 702 "This augment ISIS routing protocol when used"; 703 } 704 description 705 "This augments ISIS protocol configuration 706 with SRv6."; 708 container srv6-cfg{ 709 leaf enable{ 710 type boolean; 711 default "false"; 712 description 713 "Enables SRv6 714 protocol extensions."; 715 } 717 leaf default-locator { 718 type boolean; 719 default "false"; 720 description 721 "Enable ISIS segment-routing IPv6 with default Locator."; 722 } 724 leaf-list locator-name { 725 when "../default-locator = 'false'" { 726 description 727 "Only applies to non default locator."; 728 } 729 type leafref { 730 path "/rt:routing/sr:segment-routing/srv6:srv6" + 731 "/srv6:locators/srv6:locator/srv6:name"; 732 } 733 description 734 "Enable ISIS segment-routing IPv6 with specified Locator."; 735 } 737 leaf persistent-end-x-sid{ 738 type boolean; 739 default "false"; 740 description 741 "Enable the persistent nature of End.X sid"; 742 } 743 description 744 "Configuration about ISIS segment-routing IPv6."; 745 } 746 container micro-loop-avoidance { 747 leaf srv6-enable { 748 type boolean; 749 default "false"; 750 description 751 "Enable SRv6 avoid-microloop.Depend on SR IPv6 Enable."; 752 } 754 leaf srv6-rib-update-delay { 755 type uint16 { 756 range "1000..10000"; 757 } 758 units "ms"; 759 default "5000"; 760 description 761 "Set the route delivery delay for SRv6 avoid-microloop. 762 Depend on SR IPv6 Enable."; 763 } 765 description 766 "Enable IS-IS avoid-microloop."; 767 } 768 } 770 augment "/rt:routing/" + 771 "rt:control-plane-protocols/rt:control-plane-protocol"+ 772 "/isis:isis/isis:fast-reroute"{ 773 when "/rt:routing/rt:control-plane-protocols/"+ 774 "rt:control-plane-protocol/rt:type = 'isis:isis'"{ 775 description 776 "This augment ISIS routing protocol when used"; 777 } 778 description 779 "This augments ISIS IPFRR with IPV6 TILFA."; 781 container srv6-ti-lfa { 783 if-feature srv6-ti-lfa; 784 leaf enable { 785 type boolean; 786 description 787 "Enables SRv6 TI-LFA computation."; 788 } 790 description 791 "SRv6 TILFA configuration."; 792 } 793 } 795 /* Operational states */ 796 augment "/rt:routing/" + 797 "rt:control-plane-protocols/rt:control-plane-protocol"+ 798 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 799 "/isis:router-capabilities" { 800 when "/rt:routing/rt:control-plane-protocols/"+ 801 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 802 description 803 "This augment ISIS routing protocol when used"; 804 } 805 description 806 "This augments ISIS protocol router capability."; 807 uses srv6-capability; 808 uses srv6-msds; 809 } 811 augment "/rt:routing/" + 812 "rt:control-plane-protocols/rt:control-plane-protocol"+ 813 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 814 "/isis:extended-is-neighbor/isis:neighbor" { 815 when "/rt:routing/rt:control-plane-protocols/"+ 816 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 817 description 818 "This augment ISIS routing protocol when used."; 819 } 820 description 821 "This augments ISIS protocol neighbor."; 822 container srv6-adjacency-sids { 823 description 824 "This defines svr6 end-x sids for the adjacency."; 825 list end-x-sid { 826 key "sid"; 827 uses srv6-adjacency-sid; 828 description 829 "List of end-x sids."; 830 } 831 } 832 } 833 augment "/rt:routing/" + 834 "rt:control-plane-protocols/rt:control-plane-protocol"+ 835 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 836 "/isis:mt-is-neighbor/isis:neighbor" { 837 when "/rt:routing/rt:control-plane-protocols/"+ 838 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 839 description 840 "This augment ISIS routing protocol when used."; 841 } 842 description 843 "This augments ISIS protocol neighbor."; 844 container srv6-adjacency-sids { 845 description 846 "This defines svr6 end-x sids for the adjacency."; 847 list end-x-sid { 848 key "sid"; 849 uses srv6-adjacency-sid; 850 description 851 "List of end-x sids."; 852 } 853 } 854 } 856 augment "/rt:routing/" + 857 "rt:control-plane-protocols/rt:control-plane-protocol"+ 858 "/isis:isis/isis:database/isis:levels/isis:lsp" { 859 when "/rt:routing/rt:control-plane-protocols/"+ 860 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 861 description 862 "This augment ISIS routing protocol when used."; 863 } 864 description 865 "This augments ISIS protocol LSDB."; 866 container srv6-locators { 867 description 868 "This defines srv6 locator tlvs."; 869 list locator { 870 key "locator"; 871 uses srv6-locator; 872 description 873 "List of srv6 locators."; 874 } 875 } 876 } 878 augment "/rt:routing/" + 879 "rt:control-plane-protocols/rt:control-plane-protocol"+ 880 "/isis:isis/isis:interfaces/isis:interface" + 881 "/isis:adjacencies/isis:adjacency" { 882 when "/rt:routing/rt:control-plane-protocols/"+ 883 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 884 description 885 "This augment ISIS routing protocol when used."; 886 } 887 description 888 "This augments ISIS protocol operational state 889 with segment routing."; 890 uses srv6-adjacency-state; 891 } 892 /* Notifications */ 893 } 894 896 5. Security Considerations 898 Configuration and state data defined in this document are designed to 899 be accessed via the NETCONF protocol [RFC6241]. 901 As IS-IS is an IGP protocol (critical piece of the network), ensuring 902 stability and security of the protocol is mandatory for the network 903 service. 905 Authors recommends to implement NETCONF access control model 906 ([RFC6536]) to restrict access to all or part of the configuration to 907 specific users. 909 6. Contributors 911 Jiajia Dong 912 Huawei 913 China 915 Email:dongjiajia@huawei.com 917 7. Acknowledgements 919 TBD. 921 8. IANA Considerations 923 The IANA is requested to assign two new URIs from the IETF XML 924 registry ([RFC3688]). Authors are suggesting the following URI: 926 URI: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 927 Registrant Contact: IS-IS WG 928 XML: N/A, the requested URI is an XML namespace 930 This document also requests one new YANG module name in the YANG 931 Module Names registry ([RFC6020]) with the following suggestion : 933 name: ietf-isis-srv6 934 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 prefix: isis-srv6 935 reference: RFC XXXX 937 9. References 939 [I-D.ietf-isis-yang-isis-cfg] 940 Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. 941 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 942 isis-yang-isis-cfg-42 (work in progress), October 2019. 944 [I-D.ietf-lsr-isis-srv6-extensions] 945 Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and 946 Z. Hu, "IS-IS Extension to Support Segment Routing over 947 IPv6 Dataplane", draft-ietf-lsr-isis-srv6-extensions-14 948 (work in progress), April 2021. 950 [I-D.ietf-spring-sr-yang] 951 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 952 Tantsura, "YANG Data Model for Segment Routing", draft- 953 ietf-spring-sr-yang-30 (work in progress), January 2021. 955 [I-D.ietf-spring-srv6-yang] 956 Raza, K., Agarwal, S., Liu, X., Hu, Z., Hussain, I., Shah, 957 H., Voyer, D., Matsushima, S., Horiba, K., AbdelSalam, A., 958 and J. Rajamanickam, "YANG Data Model for SRv6 Base and 959 Static", draft-ietf-spring-srv6-yang-00 (work in 960 progress), September 2020. 962 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 963 Requirement Levels", BCP 14, RFC 2119, 964 DOI 10.17487/RFC2119, March 1997, 965 . 967 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 968 DOI 10.17487/RFC3688, January 2004, 969 . 971 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 972 the Network Configuration Protocol (NETCONF)", RFC 6020, 973 DOI 10.17487/RFC6020, October 2010, 974 . 976 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 977 and A. Bierman, Ed., "Network Configuration Protocol 978 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 979 . 981 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 982 Protocol (NETCONF) Access Control Model", RFC 6536, 983 DOI 10.17487/RFC6536, March 2012, 984 . 986 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 987 RFC 6991, DOI 10.17487/RFC6991, July 2013, 988 . 990 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 991 RFC 7950, DOI 10.17487/RFC7950, August 2016, 992 . 994 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 995 Routing Management (NMDA Version)", RFC 8349, 996 DOI 10.17487/RFC8349, March 2018, 997 . 999 Appendix A. Configuration examples 1001 The following is an XML example using IS-IS SRv6 YANG module. 1003 1004 1005 1006 1007 1008 true 1009 false 1010 DOM0_ALG0 1011 true 1012 1013 1014 true 1015 2000 1016 1017 1018 1019 1020 1022 1023 1024 1025 1026 1027 1028 true 1029 1030 1031 1032 1033 1034 1036 The following is the corresponding example using JSON format. 1038 { 1039 "control-plane-protocols": { 1040 "control-plane-protocol": { 1041 "isis": { 1042 "srv6-cfg": { 1043 "enable": "true", 1044 "default-locator": "false", 1045 "locator-name": "DOM0_ALG0", 1046 "persistent-end-x-sid": "true" 1047 }, 1048 "micro-loop-avoidance": { 1049 "srv6-enable": "true", 1050 "srv6-rib-update-delay": "2000" 1051 } 1052 } 1053 } 1054 } 1055 } 1057 { 1058 "control-plane-protocols": { 1059 "control-plane-protocol": { 1060 "isis": { 1061 "fast-reroute": { 1062 "srv6-ti-lfa": { 1063 "enable": "true" 1064 } 1065 } 1066 } 1067 } 1068 } 1069 } 1071 Authors' Addresses 1073 Zhibo Hu 1074 Huawei 1075 Huawei Bld., No.156 Beiqing Rd. 1076 Beijing 100095 1077 China 1079 Email: huzhibo@huawei.com 1080 Dan Ye 1081 Cisco 1082 170 W. Tasman Dr. San Jose, 1083 California 95134 1084 USA 1086 Email: daye@cisco.com 1088 Yingzhen Qu 1089 Futurewei 1090 2330 Central Express Way 1091 Santa Clara 950950 1092 USA 1094 Email: yingzhen.qu@futurewei.com 1096 Xuesong Geng 1097 Huawei 1098 Huawei Bld., No.156 Beiqing Rd. 1099 Beijing 100095 1100 China 1102 Email: gengxuesong@huawei.com 1104 Qiufang Ma 1105 Huawei 1106 101 Software Avenue, Yuhua District 1107 Nanjing, Jiangsu 210012 1108 China 1110 Email: maqiufang1@huawei.com