idnits 2.17.1 draft-ietf-lsr-isis-srv6-yang-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The 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 911 has weird spacing: '... uses srv6-...' == The document seems to use 'NOT RECOMMENDED' as an RFC 2119 keyword, but does not include the phrase in its RFC 2119 key words list. == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (26 March 2022) is 760 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-18 == Outdated reference: A later version (-03) exists of draft-ietf-spring-srv6-yang-01 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 4 errors (**), 0 flaws (~~), 6 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: 27 September 2022 Cisco 6 Y. Qu 7 Futurewei Technologies 8 X. Geng 9 Q. Ma 10 Huawei 11 26 March 2022 13 YANG Data Model for IS-IS SRv6 14 draft-ietf-lsr-isis-srv6-yang-01 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 27 September 2022. 44 Copyright Notice 46 Copyright (c) 2022 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 Revised BSD License text as 55 described in Section 4.e of the Trust Legal Provisions and are 56 provided without warranty as described in the Revised 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 . . . . . . . . . . . . . . . . . . . 20 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 . . . . . . . . . . . . . . . . . . . . . . . 24 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@2022-03-26.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 "RFC 9020: YANG Data Model for Segment 273 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 the configuration and operatioanl state 298 for IS-IS extension to support Segment Routing over IPv6 data 299 plane. 301 This YANG model conforms to the Network Management 302 Datastore Architecture (NDMA) as described in RFC 8342. 304 Copyright (c) 2022 IETF Trust and the persons identified as 305 authors of the code. All rights reserved. 307 Redistribution and use in source and binary forms, with or 308 without modification, is permitted pursuant to, and subject 309 to the license terms contained in, the Simplified BSD License 310 set forth in Section 4.c of the IETF Trust's Legal Provisions 311 Relating to IETF Documents 312 (http://trustee.ietf.org/license-info). 314 This version of this YANG module is part of RFC XXXX 315 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 316 for full legal notices. 318 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 319 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 320 'MAY', and 'OPTIONAL' in this document are to be interpreted as 321 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 322 they appear in all capitals, as shown here."; 324 revision 2022-03-26 { 325 description 326 "Initial revision."; 327 reference "draft-ietf-lsr-isis-srv6-extensions-08"; 328 } 330 /* Identities */ 331 identity SRV6_END_FUNC_TYPE { 332 description 333 "Base identity type for srv6 endpoint function code points."; 335 } 337 identity SRV6_END_FUNC_PSP_USP_USD { 338 base "SRV6_END_FUNC_TYPE"; 339 description 340 "End (May support PSP, USP, USD)."; 341 } 343 identity SRV6_END_X_FUNC_PSP_USP_USD { 344 base "SRV6_END_FUNC_TYPE"; 345 description 346 "End.X(May support PSP, USP, USD)"; 347 } 349 identity SRV6_END_T_FUNC_PSP_USP_USD { 350 base "SRV6_END_FUNC_TYPE"; 351 description 352 "END (May support PSP, USP, USD)"; 353 } 355 identity SRV6_END_FUNC_DX6 { 356 base "SRV6_END_FUNC_TYPE"; 357 description 358 "End.DX6."; 359 } 361 identity SRV6_END_FUNC_DX4 { 362 base "SRV6_END_FUNC_TYPE"; 363 description 364 "End.DX4."; 365 } 367 identity SRV6_END_FUNC_DT6 { 368 base "SRV6_END_FUNC_TYPE"; 369 description 370 "End.DT6."; 371 } 373 identity SRV6_END_FUNC_DT4 { 374 base "SRV6_END_FUNC_TYPE"; 375 description 376 "End.DT4."; 377 } 379 identity SRV6_END_FUNC_DT64 { 380 base "SRV6_END_FUNC_TYPE"; 381 description 382 "End.DT64."; 384 } 386 identity SRV6_END_FUNC_OP { 387 base "SRV6_END_FUNC_TYPE"; 388 description 389 "END.OP ."; 390 } 392 identity SRV6_END_FUNC_OTP { 393 base "SRV6_END_FUNC_TYPE"; 394 description 395 "END.OTP ."; 396 } 398 /* typedef */ 399 typedef srv6-sid-value { 400 type inet:ipv6-address-no-zone; 401 description 402 "16 Octets encoded sid value."; 403 } 405 /* Features */ 406 feature srv6-ti-lfa { 407 description 408 "Enhance SRv6 FRR with ti-lfa 409 support"; 410 } 411 /* Groupings */ 412 grouping srv6-msds { 413 description 414 "means to advertise to advertise node/link specific 415 values for Maxium Sid Depths(MSD) of various types"; 416 container srv6-msd { 417 description 418 "Maximum SRv6 SID Depths."; 419 leaf max-segments-left { 420 type uint8; 421 description 422 "The Maximum Segments Left MSD Type specifies 423 the maximum value of the 'SL' field in the SRH 424 of a received packet before applying the 425 Endpoint behavior associated with a SID."; 426 } 427 leaf max-end-pop { 428 type uint8; 429 description 430 "The Maximum End Pop MSD Type specifies the maximum 431 number of SIDs in the SRH to which the router can 432 apply 'PSP' or 'USP' behavior, as defined in flavors."; 433 } 434 leaf max-h-encaps { 435 type uint8; 436 description 437 "The Maximum H.Encaps MSD Type specifies the maximum number 438 of SIDs that can be included as part of the 'H.Encaps' 439 behavior"; 440 } 441 leaf max-end-d { 442 type uint8; 443 description 444 "The maximum number of SIDs in an SRH when performing 445 decapsulation associated with 'End.Dx' functions 446 (e.g., 'End.DX6' and 'End.DT6')."; 447 } 448 } 449 } 451 grouping srv6-sid-structures { 452 description 453 "This group defines SRv6 SID Structure sub-sub-TLV."; 454 container srv6-sid-structure { 455 description 456 "SRv6 SID Structure sub-sub-TLV is used to advertise 457 the length of each individual part of the SRv6 SID 458 as defined in [I-D.ietf-spring-srv6-network-programming]"; 459 leaf lb-length { 460 type uint8; 461 description 462 "SRv6 SID Locator Block length in bits."; 463 } 465 leaf ln-length { 466 type uint8; 467 description 468 "SRv6 SID Locator Node length in bits."; 469 } 471 leaf fun-length { 472 type uint8; 473 description 474 "SRv6 SID Function length in bits."; 475 } 477 leaf arg-length { 478 type uint8; 479 description 480 "SRv6 SID Argument length in bits."; 481 } 482 } 483 } 484 grouping srv6-capability { 485 description 486 "SRV6 capability grouping."; 487 container v6-capability { 488 description 489 "SRv6 capability."; 490 leaf flags { 491 type bits { 492 bit o-flag { 493 position 1; 494 description 495 "If set, then the router is able to 496 use of the O-bit in the Segment Routing Header(SRH) 497 as defined in [draft-ietf-6man-segment-routing-header]."; 498 } 499 } 500 description 501 "Flags."; 502 } 503 } 504 } 506 grouping srv6-endpoint-func { 507 description 508 "This group defines srv6 endpoint function"; 509 container endpoint-func { 510 description 511 "Srv6 Endpoint function Descriptor."; 512 leaf flags { 513 type uint8; 514 description 515 "No flags are currently being defined."; 516 } 517 leaf endpoint-func { 518 type identityref { 519 base isis-srv6:SRV6_END_FUNC_TYPE; 520 } 521 description 522 "The endpoint function."; 523 } 524 leaf undefined-endpoint-func { 525 type uint16; 526 description 527 "Unknown endpoint func value."; 529 } 530 } 531 } 533 grouping srv6-end-sid { 534 description 535 "SRv6 Segment Identifier(SID) with Endpoint functions."; 536 leaf flags { 537 type uint8; 538 description 539 "NO flags are currently being defined."; 540 } 542 uses srv6-endpoint-func; 544 leaf sid { 545 type srv6-sid-value; 546 description 547 "SRV6 sid value."; 548 } 549 // sub-sub-tlvs 550 uses srv6-sid-structures; 551 } 552 grouping srv6-locator { 553 description 554 "This group defines srv6 locator tlv."; 555 leaf mt-id { 556 type uint16 { 557 range "0..4095"; 558 } 559 description 560 "Multitopology Identifier as defined in [RFC5120]."; 561 } 562 leaf flags { 563 type bits { 564 bit d-flag { 565 position 0; 566 description 567 "When the locator is leaked from level-2 to leve-1, 568 the d-flag must be set."; 569 } 570 } 571 description 572 "Flags for srv6 locator tlv."; 573 } 575 leaf metric { 576 type uint32; 577 description 578 "Metric value."; 579 } 580 leaf algorithm { 581 type uint8; 582 description 583 "Associated algorithm."; 584 } 586 leaf loc-size { 587 type uint8; 588 description 589 "Number of bits in the locator field."; 590 } 591 leaf locator { 592 type inet:ipv6-address-no-zone; 593 description 594 "Advertised SRV6 locator."; 595 } 596 container srv6-end-sids { 597 description 598 "This contains list of srv6 end sids."; 599 list end-sid { 600 key "sid"; 601 description 602 "List of SRV6 SRv6 Segment Identifiers (SID) 603 with Endpoint functions."; 604 uses srv6-end-sid; 605 } 606 } 607 uses isis:prefix-reachability-attributes; 608 uses isis:prefix-ipv4-source-router-id; 609 uses isis:prefix-ipv6-source-router-id; 610 } 612 grouping srv6-adjacency-sid { 613 description 614 "SRv6 sid associated with an adjacency."; 616 leaf func-flags { 617 type bits { 618 bit b-flag { 619 position 0; 620 description 621 "Backup flag. If set, the End.X sid is 622 eligible for protection."; 623 } 624 bit s-flag { 625 position 1; 626 description 627 "Set flag. When set, the End.X sid refers to 628 a set of adjacencies (and therefore May be assigned 629 to other adjacencies as well."; 630 } 632 bit p-flag { 633 position 2; 634 description 635 "Persistent flag. When set, the End.X sid is persistently 636 allocated, i.e., the End.x sid value remains consistent 637 across router restart and/or interface flap."; 638 } 639 } 640 description 641 "Flags for srv6 end x sid."; 642 } 644 leaf algorithm { 645 type uint8; 646 description 647 "Associated algorithm."; 648 } 650 leaf weight { 651 type uint8; 652 description 653 "The value represents the weight of the End.X sid 654 for the purpose of load balancing."; 655 } 657 uses srv6-endpoint-func; 659 leaf sid { 660 type srv6-sid-value; 661 description 662 "SRV6 sid value."; 663 } 665 leaf neighbor-id { 666 type isis:system-id; 667 description 668 "Describes the system ID of the neighbor 669 associated with the SID value. This is only 670 used on LAN adjacencies."; 671 } 672 // sub-sub-tlvs 673 uses srv6-sid-structures; 674 } 676 grouping srv6-adjacency-state { 677 description 678 "This group will extend adjacency state."; 679 list end-x-sid { 680 key value; 681 config false; 682 leaf value { 683 type srv6-sid-value; 684 description 685 "Value of the Adj-SID."; 686 } 687 leaf weight { 688 type uint8; 689 description 690 "Weight associated with 691 the End.X SID."; 692 } 693 leaf protection-requested { 694 type boolean; 695 description 696 "Set to True if the End.X SID 697 must be protected."; 698 } 699 leaf persistent { 700 type boolean; 701 description 702 "Persistent flag. When set, the End.X sid is persistently 703 allocated, i.e., the End.X sid value remains consistent 704 across router restart and/or interface flap."; 705 } 706 leaf algorithm { 707 type uint8; 708 description 709 "Associated algorithm."; 710 } 711 uses srv6-endpoint-func; 713 description 714 "List of End.X Segment IDs."; 715 } 716 } 717 /* Cfg */ 718 augment "/rt:routing/" + 719 "rt:control-plane-protocols/rt:control-plane-protocol"+ 720 "/isis:isis" { 721 when "/rt:routing/rt:control-plane-protocols/"+ 722 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 723 description 724 "This augment ISIS routing protocol when used"; 725 } 726 description 727 "This augments ISIS protocol configuration 728 with SRv6."; 730 container srv6-cfg{ 731 leaf enable{ 732 type boolean; 733 default "false"; 734 description 735 "Enables SRv6 736 protocol extensions."; 737 } 739 leaf default-locator { 740 type boolean; 741 default "false"; 742 description 743 "Enable ISIS segment-routing IPv6 with default Locator."; 744 } 746 leaf-list locator-name { 747 when "../default-locator = 'false'" { 748 description 749 "Only applies to non default locator."; 750 } 751 type leafref { 752 path "/rt:routing/sr:segment-routing/srv6:srv6" + 753 "/srv6:locators/srv6:locator/srv6:name"; 754 } 755 description 756 "Enable ISIS segment-routing IPv6 with specified Locator."; 757 } 759 leaf persistent-end-x-sid{ 760 type boolean; 761 default "false"; 762 description 763 "Enable the persistent nature of End.X sid"; 764 } 765 description 766 "Configuration about ISIS segment-routing IPv6."; 767 } 768 container micro-loop-avoidance { 769 leaf srv6-enable { 770 type boolean; 771 default "false"; 772 description 773 "Enable SRv6 avoid-microloop.Depend on SR IPv6 Enable."; 774 } 776 leaf srv6-rib-update-delay { 777 type uint16 { 778 range "1000..10000"; 779 } 780 units "ms"; 781 default "5000"; 782 description 783 "Set the route delivery delay for SRv6 avoid-microloop. 784 Depend on SR IPv6 Enable."; 785 } 787 description 788 "Enable IS-IS avoid-microloop."; 789 } 790 } 792 augment "/rt:routing/" + 793 "rt:control-plane-protocols/rt:control-plane-protocol"+ 794 "/isis:isis/isis:fast-reroute"{ 795 when "/rt:routing/rt:control-plane-protocols/"+ 796 "rt:control-plane-protocol/rt:type = 'isis:isis'"{ 797 description 798 "This augment ISIS routing protocol when used"; 799 } 800 description 801 "This augments ISIS IPFRR with IPV6 TILFA."; 803 container srv6-ti-lfa { 805 if-feature srv6-ti-lfa; 806 leaf enable { 807 type boolean; 808 description 809 "Enables SRv6 TI-LFA computation."; 810 } 812 description 813 "SRv6 TILFA configuration."; 814 } 815 } 816 /* Operational states */ 817 augment "/rt:routing/" + 818 "rt:control-plane-protocols/rt:control-plane-protocol"+ 819 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 820 "/isis:router-capabilities" { 821 when "/rt:routing/rt:control-plane-protocols/"+ 822 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 823 description 824 "This augment ISIS routing protocol when used"; 825 } 826 description 827 "This augments ISIS protocol router capability."; 828 uses srv6-capability; 829 uses srv6-msds; 830 } 832 augment "/rt:routing/" + 833 "rt:control-plane-protocols/rt:control-plane-protocol"+ 834 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 835 "/isis:extended-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 } 854 augment "/rt:routing/" + 855 "rt:control-plane-protocols/rt:control-plane-protocol"+ 856 "/isis:isis/isis:database/isis:levels/isis:lsp"+ 857 "/isis:mt-is-neighbor/isis:neighbor" { 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 neighbor."; 865 container srv6-adjacency-sids { 866 description 867 "This defines svr6 end-x sids for the adjacency."; 868 list end-x-sid { 869 key "sid"; 870 uses srv6-adjacency-sid; 871 description 872 "List of end-x sids."; 873 } 874 } 875 } 877 augment "/rt:routing/" + 878 "rt:control-plane-protocols/rt:control-plane-protocol"+ 879 "/isis:isis/isis:database/isis:levels/isis:lsp" { 880 when "/rt:routing/rt:control-plane-protocols/"+ 881 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 882 description 883 "This augment ISIS routing protocol when used."; 884 } 885 description 886 "This augments ISIS protocol LSDB."; 887 container srv6-locators { 888 description 889 "This defines srv6 locator tlvs."; 890 list locator { 891 key "locator"; 892 uses srv6-locator; 893 description 894 "List of srv6 locators."; 895 } 896 } 897 } 899 augment "/rt:routing/" + 900 "rt:control-plane-protocols/rt:control-plane-protocol"+ 901 "/isis:isis/isis:interfaces/isis:interface" + 902 "/isis:adjacencies/isis:adjacency" { 903 when "/rt:routing/rt:control-plane-protocols/"+ 904 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 905 description 906 "This augment ISIS routing protocol when used."; 907 } 908 description 909 "This augments ISIS protocol operational state 910 with segment routing."; 911 uses srv6-adjacency-state; 913 } 914 /* Notifications */ 915 } 916 918 5. Security Considerations 920 Configuration and state data defined in this document are designed to 921 be accessed via the NETCONF protocol [RFC6241]. 923 As IS-IS is an IGP protocol (critical piece of the network), ensuring 924 stability and security of the protocol is mandatory for the network 925 service. 927 Authors recommends to implement NETCONF access control model 928 ([RFC6536]) to restrict access to all or part of the configuration to 929 specific users. 931 6. Contributors 933 Jiajia Dong 934 Huawei 935 China 937 Email:dongjiajia@huawei.com 939 7. Acknowledgements 941 TBD. 943 8. IANA Considerations 945 The IANA is requested to assign two new URIs from the IETF XML 946 registry ([RFC3688]). Authors are suggesting the following URI: 948 URI: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 949 Registrant Contact: IS-IS WG 950 XML: N/A, the requested URI is an XML namespace 952 This document also requests one new YANG module name in the YANG 953 Module Names registry ([RFC6020]) with the following suggestion : 955 name: ietf-isis-srv6 956 namespace: urn:ietf:params:xml:ns:yang:ietf-isis-srv6 prefix: isis-srv6 957 reference: RFC XXXX 959 9. References 961 [I-D.ietf-isis-yang-isis-cfg] 962 Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. 963 Lhotka, "YANG Data Model for IS-IS Protocol", Work in 964 Progress, Internet-Draft, draft-ietf-isis-yang-isis-cfg- 965 42, 15 October 2019, . 968 [I-D.ietf-lsr-isis-srv6-extensions] 969 Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and 970 Z. Hu, "IS-IS Extensions to Support Segment Routing over 971 IPv6 Dataplane", Work in Progress, Internet-Draft, draft- 972 ietf-lsr-isis-srv6-extensions-18, 20 October 2021, 973 . 976 [I-D.ietf-spring-sr-yang] 977 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 978 Tantsura, "YANG Data Model for Segment Routing", Work in 979 Progress, Internet-Draft, draft-ietf-spring-sr-yang-30, 25 980 January 2021, . 983 [I-D.ietf-spring-srv6-yang] 984 Raza, K., Agarwal, S., Liu, X., Hu, Z., Hussain, I., Shah, 985 H., Voyer, D., Matsushima, S., Horiba, K., Rajamanickam, 986 J., and A. AbdelSalam, "YANG Data Model for SRv6 Base and 987 Static", Work in Progress, Internet-Draft, draft-ietf- 988 spring-srv6-yang-01, 14 January 2022, 989 . 992 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 993 Requirement Levels", BCP 14, RFC 2119, 994 DOI 10.17487/RFC2119, March 1997, 995 . 997 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 998 DOI 10.17487/RFC3688, January 2004, 999 . 1001 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1002 the Network Configuration Protocol (NETCONF)", RFC 6020, 1003 DOI 10.17487/RFC6020, October 2010, 1004 . 1006 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1007 and A. Bierman, Ed., "Network Configuration Protocol 1008 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1009 . 1011 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1012 Protocol (NETCONF) Access Control Model", RFC 6536, 1013 DOI 10.17487/RFC6536, March 2012, 1014 . 1016 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1017 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1018 . 1020 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1021 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1022 . 1024 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1025 Routing Management (NMDA Version)", RFC 8349, 1026 DOI 10.17487/RFC8349, March 2018, 1027 . 1029 Appendix A. Configuration examples 1031 The following is an XML example using IS-IS SRv6 YANG module. 1033 1034 1035 1036 1037 1038 true 1039 false 1040 DOM0_ALG0 1041 true 1042 1043 1044 true 1045 2000 1046 1047 1048 1049 1050 1052 1053 1054 1055 1056 1057 1058 true 1059 1060 1061 1062 1063 1064 1066 The following is the corresponding example using JSON format. 1068 { 1069 "control-plane-protocols": { 1070 "control-plane-protocol": { 1071 "isis": { 1072 "srv6-cfg": { 1073 "enable": "true", 1074 "default-locator": "false", 1075 "locator-name": "DOM0_ALG0", 1076 "persistent-end-x-sid": "true" 1077 }, 1078 "micro-loop-avoidance": { 1079 "srv6-enable": "true", 1080 "srv6-rib-update-delay": "2000" 1081 } 1082 } 1083 } 1084 } 1085 } 1087 { 1088 "control-plane-protocols": { 1089 "control-plane-protocol": { 1090 "isis": { 1091 "fast-reroute": { 1092 "srv6-ti-lfa": { 1093 "enable": "true" 1094 } 1095 } 1096 } 1097 } 1098 } 1099 } 1101 Authors' Addresses 1103 Zhibo Hu 1104 Huawei 1105 Huawei Bld., No.156 Beiqing Rd. 1106 Beijing 1107 100095 1108 China 1109 Email: huzhibo@huawei.com 1110 Dan Ye 1111 Cisco 1112 170 W. Tasman Dr. San Jose, 1113 California, 95134 1114 United States of America 1115 Email: daye@cisco.com 1117 Yingzhen Qu 1118 Futurewei Technologies 1119 2330 Central Express Way 1120 Santa Clara, 950950 1121 United States of America 1122 Email: yingzhen.qu@futurewei.com 1124 Xuesong Geng 1125 Huawei 1126 Huawei Bld., No.156 Beiqing Rd. 1127 Beijing 1128 100095 1129 China 1130 Email: gengxuesong@huawei.com 1132 Qiufang Ma 1133 Huawei 1134 101 Software Avenue, Yuhua District 1135 Nanjing 1136 Jiangsu, 210012 1137 China 1138 Email: maqiufang1@huawei.com