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