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