idnits 2.17.1 draft-ietf-lsr-ospf-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 : ---------------------------------------------------------------------------- ** There are 2 instances of too long lines in the document, the longest one being 2 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (18 August 2021) is 981 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) == Missing Reference: 'RFC8349' is mentioned on line 170, but not defined == Missing Reference: 'RFC6991' is mentioned on line 174, but not defined == Missing Reference: 'RFC5286' is mentioned on line 207, but not defined == Missing Reference: 'RFC8040' is mentioned on line 984, but not defined == Missing Reference: 'RFC6242' is mentioned on line 986, but not defined == Missing Reference: 'RFC8446' is mentioned on line 988, but not defined == Missing Reference: 'RFC8341' is mentioned on line 990, but not defined == Unused Reference: 'I-D.ietf-lsr-ospfv3-srv6-extensions' is defined on line 1060, but no explicit reference was found in the text == Unused Reference: 'RFC6536' is defined on line 1110, but no explicit reference was found in the text == Outdated reference: A later version (-29) exists of draft-ietf-lsr-ospfv3-extended-lsa-yang-08 == Outdated reference: A later version (-15) exists of draft-ietf-lsr-ospfv3-srv6-extensions-02 == Outdated reference: A later version (-13) exists of draft-ietf-rtgwg-segment-routing-ti-lfa-07 == Outdated reference: A later version (-03) exists of draft-ietf-spring-srv6-yang-00 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 14 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 X. Geng 4 Intended status: Standards Track Huawei Technologies 5 Expires: 19 February 2022 K. Raza 6 Cisco Systems, Inc. 7 Y. Qu 8 Futurewei Technologies 9 A. Lindem 10 Cisco Systems 11 18 August 2021 13 YANG Data Model for OSPF SRv6 14 draft-ietf-lsr-ospf-srv6-yang-00 16 Abstract 18 This document defines a YANG data model that can be used to configure 19 and manage OSPFv3 SRv6 as defined in I-D.ietf-lsr- 20 ospfv3-srv6-extensions. 22 Requirements Language 24 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 25 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 26 document are to be interpreted as described in RFC 2119 [RFC2119]. 28 Status of This Memo 30 This Internet-Draft is submitted in full conformance with the 31 provisions of BCP 78 and BCP 79. 33 Internet-Drafts are working documents of the Internet Engineering 34 Task Force (IETF). Note that other groups may also distribute 35 working documents as Internet-Drafts. The list of current Internet- 36 Drafts is at https://datatracker.ietf.org/drafts/current/. 38 Internet-Drafts are draft documents valid for a maximum of six months 39 and may be updated, replaced, or obsoleted by other documents at any 40 time. It is inappropriate to use Internet-Drafts as reference 41 material or to cite them other than as "work in progress." 43 This Internet-Draft will expire on 19 February 2022. 45 Copyright Notice 47 Copyright (c) 2021 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 52 license-info) in effect on the date of publication of this document. 53 Please review these documents carefully, as they describe your rights 54 and restrictions with respect to this document. Code Components 55 extracted from this document must include Simplified BSD License text 56 as described in Section 4.e of the Trust Legal Provisions and are 57 provided without warranty as described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 63 2.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 64 2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 65 3. OSPFv3 SRv6 Configuration . . . . . . . . . . . . . . . . . . 4 66 3.1. SRv6 Activation . . . . . . . . . . . . . . . . . . . . . 5 67 3.2. Locator Setting . . . . . . . . . . . . . . . . . . . . . 5 68 3.3. IP Fast Reroute . . . . . . . . . . . . . . . . . . . . . 5 69 3.4. Micro-loop Avoidance . . . . . . . . . . . . . . . . . . 5 70 4. YANG Module and Tree . . . . . . . . . . . . . . . . . . . . 5 71 4.1. OSPFv3 SRv6 Model Tree . . . . . . . . . . . . . . . . . 5 72 4.2. OSPFv3 SRv6 YANG Module . . . . . . . . . . . . . . . . . 7 73 5. Security Considerations . . . . . . . . . . . . . . . . . . . 21 74 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 22 75 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 76 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 77 9. Normative References . . . . . . . . . . . . . . . . . . . . 22 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 80 1. Introduction 82 YANG [RFC6020][RFC7950] is a data definition language used to define 83 the contents of a conceptual data store that allows networked devices 84 to be managed using NETCONF[RFC6241]. YANG is proving relevant 85 beyond its initial confines, as bindings to other interfaces (e.g., 86 ReST) and encodings other than XML (e.g., JSON) are being defined. 87 Furthermore, YANG data models can be used as the basis for 88 implementation of other interfaces, such as CLI and programmatic 89 APIs. 91 This document defines a YANG data model that can be used to configure 92 and manage OSPFv3 SRv6 and it is an augmentation to the OSPF YANG 93 data model. 95 2. Terminology and Notation 97 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 98 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 99 "OPTIONAL" in this document are to be interpreted as described in BCP 100 14 [RFC2119] [RFC8174] when, and only when, they appear in all 101 capitals, as shown here. 103 The following terms are defined in [RFC8342]: 105 * client 107 * server 109 * configuration 111 * system state 113 * operational state 115 * intended configuration 117 The following terms are defined in [RFC7950]: 119 * action 121 * augment 123 * container 125 * container with presence 127 * data model 129 * data node 131 * feature 133 * leaf 135 * list 137 * mandatory node 139 * module 141 * schema tree 142 * RPC (Remote Procedure Call) operation 144 2.1. Tree Diagrams 146 Tree diagrams used in this document follow the notation defined in 147 [RFC8340]. 149 2.2. Prefixes in Data Node Names 151 In this document, names of data nodes, actions, and other data model 152 objects are often used without a prefix, as long as it is clear from 153 the context in which YANG module each name is defined. Otherwise, 154 names are prefixed using the standard prefix associated with the 155 corresponding YANG module, as shown in Table 1. 157 +------------+-----------------------------+-----------------------+ 158 | Prefix |YANG Module | Reference | 159 +------------+-----------------------------+-----------------------+ 160 |ospfv3-e-lsa| ietf-ospfv3-extended-lsa | I-D.ietf-lsr-ospfv3 | 161 | | | -extended-lsa-yang | 162 | | | | 163 | ospf | ietf-ospf | I-D.ietf-ospf-yang | 164 | | | | 165 | srv6 | ietf-srv6-base | I-D.ietf-spring-srv6 | 166 | | | -yang | 167 | | | | 168 | sr | ietf-segment-routing | [RFC9020] | 169 | | | | 170 | rt | ietf-routing | [RFC8349] | 171 | | | | 172 | yang | ietf-yang-types | [RFC6991] | 173 | | | | 174 | inet | ietf-inet-types | [RFC6991] | 175 +------------+-----------------------------+-----------------------+ 177 Figure 1: Table 1: Prefixes and Corresponding YANG Modules 179 3. OSPFv3 SRv6 Configuration 181 This document defines a model for OSPFv3 SRv6 feature. It is an 182 augmentation of the OSPF base model. 184 The OSPFv3 SRv6 YANG module requires support of OSPF base model 185 [I-D.ietf-ospf-yang] which defines basic OSPF configuration and state 186 and support of OSPFv3 Extended LSAs model 187 [I-D.ietf-lsr-ospfv3-extended-lsa-yang]. 189 3.1. SRv6 Activation 191 Activation of OSPFv3 SRv6 is done by setting the "enable" leaf to 192 true. This triggers advertisement of SRv6 extensions based on the 193 configuration parameters that have been setup using the base SRv6 194 module [I-D.ietf-spring-srv6-yang]. 196 3.2. Locator Setting 198 The SRv6 base module [I-D.ietf-spring-srv6-yang] defines locators. 199 When OSPFv6 SRv6 is enabled, the specified locators are used unless 200 it is enabled to use the default locator. The default locator can be 201 set by using two leafs, i.e.,"default-locator" leaf, "locator-name" 202 leaf. 204 3.3. IP Fast Reroute 206 Additional data object (in the OSPFv3 SRv6 model ) for fast reroute 207 [RFC5286] is introduced by augmenting the fast-reroute container of 208 the OSPF module. It brings the ability to activate ipv6 TI-LFA 209 (topology independent LFA) [I-D.ietf-rtgwg-segment-routing-ti-lfa]. 211 3.4. Micro-loop Avoidance 213 OSPFv3 SRv6 model augments OSPF module with the micro-loop-avoidance 214 container, this container including the leaf "srv6-enable" brings the 215 ability to activate SRv6 avoid-microloop. 217 4. YANG Module and Tree 219 4.1. OSPFv3 SRv6 Model Tree 221 The figure below describes the overall structure of the ospfv3-srv6 222 YANG module: 224 module: ietf-ospfv3-srv6 225 augment /rt:routing/rt:control-plane-protocols 226 /rt:control-plane-protocol/ospf:ospf: 227 +--rw srv6 228 | +--rw enable? boolean 229 | +--rw default-locator? boolean 230 | +--rw locator-name* -> /rt:routing/srv6:srv6 231 | /srv6:locators/srv6:locator/srv6:name 232 | +--rw persistent-end-x-sid? boolean 233 +--rw micro-loop-avoidance 234 +--rw srv6-enable? boolean 235 +--rw srv6-rib-update-delay? uint16 236 augment /rt:routing/rt:control-plane-protocols 237 /rt:control-plane-protocol/ospf:ospf 238 /ospf:fast-reroute: 239 +--rw srv6-ti-lfa {srv6-ti-lfa}? 240 +--rw enable? boolean 241 augment /rt:routing/rt:control-plane-protocols 242 /rt:control-plane-protocol/ospf:ospf 243 /ospf:database/ospf:as-scope-lsa-type 244 /ospf:as-scope-lsas/ospf:as-scope-lsa 245 /ospf:version/ospf:ospfv3 246 /ospf:ospfv3/ospf:body: 247 +--ro srv6-locator 248 +--ro srv6-locactor-tlv 249 +--ro route-type? identityref 250 +--ro algorithm? uint8 251 +--ro locator-length? uint8 252 +--ro flags? bits 253 +--ro metric? uint32 254 +--ro locator* inet:ipv6-address-no-zone 255 +--ro srv6-end-sid 256 +--ro flags? uint8 257 +--ro endpoint-func 258 | +--ro fuc-flags? uint8 259 | +--ro endpoint-func? identityref 260 | +--ro undefined-endpoint-func? uint16 261 +--ro sid? srv6-sid-value 262 +--ro srv6-sid-structure 263 +--ro lb-length? uint8 264 +--ro ln-length? uint8 265 +--ro fun-length? uint8 266 +--ro arg-length? uint8 267 augment /rt:routing 268 /rt:control-plane-protocols/rt:control-plane-protocol 269 /ospf:ospf/ospf:database 270 /ospf:as-scope-lsa-type/ospf:as-scope-lsas 271 /ospf:as-scope-lsa/ospf:version/ospf:ospfv3 272 /ospf:ospfv3/ospf:body/ospf:router-information: 273 +--ro srv6-capability 274 | +--ro flags? bits 275 +--ro srv6-msd 276 +--ro max-segments-left? uint8 277 +--ro max-end-pop? uint8 278 +--ro max-h-encaps? uint8 279 +--ro max-end-d? uint8 280 augment /rt:routing/rt:control-plane-protocols 281 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 282 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 283 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3 284 /ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router 285 /ospfv3-e-lsa:e-router-tlvs 286 /ospfv3-e-lsa:link-tlv: 287 +--ro srv6-endx-sid 288 +--ro endpoint-func 289 | +--ro fuc-flags? uint8 290 | +--ro endpoint-func? identityref 291 | +--ro undefined-endpoint-func? uint16 292 +--ro flags? bits 293 +--ro algorithm? uint8 294 +--ro weight? uint8 295 +--ro sid* srv6-sid-value 296 +--ro neighbor-router-id? yang:dotted-quad 297 +--ro srv6-sid-structure 298 +--ro lb-length? uint8 299 +--ro ln-length? uint8 300 +--ro fun-length? uint8 301 +--ro arg-length? uint8 303 4.2. OSPFv3 SRv6 YANG Module 305 file "ietf-ospfv3-srv6@2020-09-29.yang" 306 module ietf-ospfv3-srv6 { 307 yang-version 1.1; 308 namespace "urn:ietf:params:xml:ns:" 309 + "yang:ietf-ospfv3-srv6"; 310 prefix ospfv3-srv6; 312 import ietf-yang-types { 313 prefix "yang"; 314 } 316 import ietf-routing { 317 prefix "rt"; 318 } 320 import ietf-ospfv3-extended-lsa { 321 prefix "ospfv3-e-lsa"; 322 } 324 import ietf-ospf { 325 prefix "ospf"; 326 } 328 import ietf-srv6-base { 329 prefix "srv6"; 330 } 332 import ietf-inet-types { 333 prefix "inet"; 334 } 336 import ietf-segment-routing { 337 prefix "sr"; 338 } 340 organization 341 "IETF LSR Working Group"; 343 contact 344 "WG Web: 345 WG List: 347 Author: Zhibo Hu 348 349 Author: Xuesong Geng 350 351 Author: Kamran Raza 352 353 Author: Yingzhen Qu 354 355 Author: Acee Lindem 356 357 "; 359 description 360 "The YANG module defines a generic configuration model for 361 Segment IPV6 routing OSPFv3 extensions common across all 362 of the vendor implementations. 364 This YANG model conforms to the Network Management 365 Datastore Architecture (NDMA) as described in RFC 8342. 367 Copyright (c) 2020 IETF Trust and the persons identified as 368 authors of the code. All rights reserved. 370 Redistribution and use in source and binary forms, with or 371 without modification, is permitted pursuant to, and subject 372 to the license terms contained in, the Simplified BSD License 373 set forth in Section 4.c of the IETF Trust's Legal Provisions 374 Relating to IETF Documents 375 (http://trustee.ietf.org/license-info). 377 This version of this YANG module is part of RFC XXXX 378 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 379 for full legal notices. 381 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 382 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 383 'MAY', and 'OPTIONAL' in this document are to be interpreted as 384 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 385 they appear in all capitals, as shown here."; 387 revision 2020-09-29 { 388 description 389 "Initial revision."; 390 reference "draft-ietf-lsr-ospfv3-srv6-extensions-01"; 391 } 393 /* Identities */ 394 identity SRV6_END_FUNC_TYPE { 395 description 396 "Base identity type for srv6 endpoint function code points."; 397 } 399 identity SRV6_END_FUNC_NO_PSP_USP { 400 base "SRV6_END_FUNC_TYPE"; 401 description 402 "End (no PSP, no USP)."; 403 } 405 identity SRV6_END_FUNC_PSP { 406 base "SRV6_END_FUNC_TYPE"; 407 description 408 "End with PSP."; 409 } 411 identity SRV6_END_FUNC_USP { 412 base "SRV6_END_FUNC_TYPE"; 413 description 414 "END with USP."; 415 } 417 identity SRV6_END_FUNC_PSP_USP { 418 base "SRV6_END_FUNC_TYPE"; 419 description 420 "END with PSP & USP."; 421 } 423 identity SRV6_END_T_FUNC_NO_PSP_USP { 424 base "SRV6_END_FUNC_TYPE"; 425 description 426 "End.T (no PSP, no USP)."; 427 } 428 identity SRV6_END_T_FUNC_PSP { 429 base "SRV6_END_FUNC_TYPE"; 430 description 431 "End.T with PSP."; 432 } 434 identity SRV6_END_T_FUNC_USP { 435 base "SRV6_END_FUNC_TYPE"; 436 description 437 "End.T with USP."; 438 } 440 identity SRV6_END_T_FUNC_PSP_USP { 441 base "SRV6_END_FUNC_TYPE"; 442 description 443 "End.T with PSP & USP."; 444 } 446 identity SRV6_END_X_FUNC_NO_PSP_USP { 447 base "SRV6_END_FUNC_TYPE"; 448 description 449 "End.x (no PSP, no USP)."; 450 } 452 identity SRV6_END_X_FUNC_PSP { 453 base "SRV6_END_FUNC_TYPE"; 454 description 455 "End.x with PSP."; 456 } 458 identity SRV6_END_X_FUNC_USP { 459 base "SRV6_END_FUNC_TYPE"; 460 description 461 "End.x with USP."; 462 } 464 identity SRV6_END_X_FUNC_PSP_USP { 465 base "SRV6_END_FUNC_TYPE"; 466 description 467 "End.x with PSP & USP."; 468 } 470 identity SRV6_END_FUNC_DX6 { 471 base "SRV6_END_FUNC_TYPE"; 472 description 473 "End.DX6 function."; 474 } 475 identity SRV6_END_FUNC_DT6 { 476 base "SRV6_END_FUNC_TYPE"; 477 description 478 "End.DT6 function."; 479 } 481 identity SRV6_END_FUNC_OTP { 482 base "SRV6_END_FUNC_TYPE"; 483 description 484 "END.OTP."; 485 } 487 identity s1-bit { 488 base ospf:ospfv3-lsa-option; 489 description 490 "the S1/S2 bits are dependent on the desired 491 flooding scope for the LSA."; 492 } 494 identity s2-bit { 495 base ospf:ospfv3-lsa-option; 496 description 497 "the S1/S2 bits are dependent on the desired 498 flooding scope for the LSA."; 499 } 501 identity srv6-locator-lsa { 502 base ospf:ospfv3-lsa-type; 503 description 504 "SRv6 Locator LSA - Type TBD"; 505 } 507 identity LOCATOR-ROUTE-TYPE { 508 description 509 "The type of the locator route."; 510 } 512 identity INTRA-AREA-LOCATOR { 513 base "LOCATOR-ROUTE-TYPE"; 514 description 515 "Intra-Area"; 516 } 518 identity INTER-AREA-LOCATOR { 519 base "LOCATOR-ROUTE-TYPE"; 520 description 521 "Inter-Area"; 522 } 523 identity AS-EXTERNAL-LOCATOR { 524 base "LOCATOR-ROUTE-TYPE"; 525 description 526 "AS External"; 527 } 529 identity NSSA-EXTERNAL-LOCATOR { 530 base "LOCATOR-ROUTE-TYPE"; 531 description 532 "NSSA External"; 533 } 535 /* typedef */ 536 typedef srv6-sid-value { 537 type inet:ipv6-address-no-zone; 538 description 539 "16 Octets encoded sid value."; 540 } 542 /* Features */ 543 feature srv6-ti-lfa { 544 description 545 "Enhance SRv6 FRR with ti-lfa 546 support"; 547 } 549 /* Groupings */ 550 grouping srv6-msds { 551 description 552 "Used to advertise node/link specific 553 values for Maximum Sid Depths(MSD) of various types"; 554 container srv6-msd { 555 description 556 "Maximum SRv6 SID Depths."; 557 leaf max-segments-left { 558 type uint8; 559 description 560 "The Maximum Segments Left MSD Type specifies 561 the maximum value of the 'SL' field in the SRH 562 of a received packet before applying the Endpoint 563 behavior associated with a SID."; 564 } 565 leaf max-end-pop { 566 type uint8; 567 description 568 "The Maximum End Pop MSD Type specifies the maximum 569 number of SIDs in the SRH to which the router can 570 apply 'PSP' or 'USP' behavior, as defined in flavors."; 572 } 573 leaf max-h-encaps { 574 type uint8; 575 description 576 "The Maximum H.Encaps MSD Type specifies the maximum number 577 of SIDs that can be included as part of the 'H.Encaps' 578 behavior"; 579 } 580 leaf max-end-d { 581 type uint8; 582 description 583 "The maximum number of SIDs in an SRH when performing 584 decapsulation associated with 'End.Dx' functions 585 (e.g., 'End.DX6' and 'End.DT6')."; 586 } 587 } 588 } 590 grouping srv6-capabilities { 591 description 592 "SRV6 capability grouping."; 593 container srv6-capability { 594 description 595 "SRv6 capability."; 596 leaf flags { 597 type bits { 598 bit o-flag { 599 position 1; 600 description 601 "If set, then router is capable of supporting SRH O-bit 602 "; 603 } 604 } 605 description 606 "Flags."; 607 reference 608 "I-D.ali-spring-srv6-oam: OAM in SRv6"; 609 } 610 } 611 } 613 grouping srv6-endpoint-func { 614 description 615 "This group defines srv6 endpoint function"; 616 container endpoint-func { 617 description 618 "Srv6 Endpoint function Descriptor."; 619 leaf fuc-flags { 620 type uint8; 621 description 622 "No function flags are currently being defined."; 623 } 624 leaf endpoint-func { 625 type identityref { 626 base SRV6_END_FUNC_TYPE; 627 } 628 description 629 "The endpoint function."; 630 } 631 leaf undefined-endpoint-func { 632 type uint16; 633 description 634 "Unknown endpoint func value."; 635 } 636 } 637 } 639 grouping srv6-end-sids { 640 description 641 "This group defines srv6 end sid"; 642 container srv6-end-sid { 643 description 644 "SRv6 Segment Identifier(SID) with Endpoint functions."; 645 leaf flags { 646 type uint8; 647 description 648 "NO flags are currently being defined."; 649 } 651 uses srv6-endpoint-func; 652 leaf sid { 653 type srv6-sid-value; 654 description 655 "SRV6 sid value."; 656 } 657 uses srv6-sid-structures; 658 } 659 } 661 grouping srv6-sid-structures { 662 description 663 "This group defines SRv6 SID Structure sub-TLV."; 664 container srv6-sid-structure { 665 description 666 "SRv6 SID Structure sub-TLV is used to advertise the length 667 of each individual part of the SRv6 SID as defined in 669 [I-D.ietf-spring-srv6-network-programming]"; 670 leaf lb-length { 671 type uint8; 672 description 673 "SRv6 SID Locator Block length in bits."; 674 } 676 leaf ln-length { 677 type uint8; 678 description 679 "SRv6 SID Locator Node length in bits."; 680 } 682 leaf fun-length { 683 type uint8; 684 description 685 "SRv6 SID Function length in bits."; 686 } 688 leaf arg-length { 689 type uint8; 690 description 691 "SRv6 SID Argument length in bits."; 692 } 693 } 694 } 696 grouping srv6-endx-sids { 697 description 698 "This group defines SRv6 SIDs Associated with Adjacencies 699 including SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID 700 Sub-TLV."; 701 container srv6-endx-sid { 702 description 703 "SRv6 sids associated with an adjacency."; 705 uses srv6-endpoint-func; 707 leaf flags { 708 type bits { 709 bit b-flag { 710 position 0; 711 description 712 "Backup Flag. If set, the SID refers to a path that is 713 eligible for protection"; 714 } 715 bit s-flag { 716 position 1; 717 description 718 "Set Flag. When set, the S-Flag indicates that the 719 End.X SID refers to a set of adjacencies (and therefore 720 MAY be assigned to other adjacencies as well)."; 721 } 722 bit p-flag { 723 position 2; 724 description 725 "Persistent Flag: If set, the SID is persistently 726 allocated, i.e., the SID value remains consistent 727 across router restart and session/interface flap."; 728 } 729 } 730 description 731 "Flags for end.x subtlv."; 732 } 734 leaf algorithm { 735 type uint8; 736 description 737 "Associated algorithm."; 738 } 740 leaf weight { 741 type uint8; 742 description 743 "8 bit field whose value represents the weight of the End.X 744 SID for the purpose of load balancing"; 745 } 747 leaf-list sid { 748 type srv6-sid-value; 749 description 750 "SRV6 sid value."; 751 } 753 leaf neighbor-router-id { 754 type yang:dotted-quad; 755 description 756 "Neighbor router ID.This is only 757 used on LAN adjacencies."; 758 } 760 uses srv6-sid-structures; 761 } 762 } 764 grouping srv6-locactor-tlvs { 765 description 766 "This group defines srv6 locator tlv."; 767 container srv6-locactor-tlv { 768 description 769 "This contains a srv6 locator tlv."; 770 leaf route-type { 771 type identityref { 772 base LOCATOR-ROUTE-TYPE; 773 } 774 description 775 "The type of the locator route"; 776 } 778 leaf algorithm { 779 type uint8; 780 description 781 "Associated algorithm."; 782 } 784 leaf locator-length { 785 type uint8; 786 description 787 "Carries the length of the Locator 788 prefix as number of bits (1-128)"; 789 } 791 leaf flags { 792 type bits { 793 bit n-flag { 794 position 0; 795 description 796 "When the locator uniquely identifies a node in the 797 network (i.e. it is provisioned on one and only one 798 node), the N bit MUST be set. Otherwise, this bit 799 MUST be clear"; 800 } 801 bit a-flag { 802 position 1; 803 description 804 "When the Locator is configured as anycast, the A bit 805 SHOULD be set. Otherwise, this bit MUST be clear"; 806 } 807 } 808 description 809 "Flags for srv6 locator tlv."; 810 } 812 leaf metric { 813 type uint32; 814 description 815 "Metric value."; 816 } 818 leaf-list locator { 819 type inet:ipv6-address-no-zone; 820 description 821 "Advertised SRV6 locator."; 822 } 823 uses srv6-end-sids; 824 } 825 } 827 /* Cfg */ 828 augment "/rt:routing/" + 829 "rt:control-plane-protocols/rt:control-plane-protocol"+ 830 "/ospf:ospf" { 831 when "/rt:routing/rt:control-plane-protocols/"+ 832 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 833 description 834 "This augment OSPFv3 routing protocol when used"; 835 } 836 description 837 "This augments OSPFv3 protocol configuration 838 with SRv6."; 839 container srv6{ 840 leaf enable{ 841 type boolean; 842 default "false"; 843 description 844 "Enables SRv6 protocol extensions."; 845 } 846 leaf default-locator { 847 type boolean; 848 default "false"; 849 description 850 "Enable OSPFv3 segment-routing IPv6 with default Locator."; 851 } 852 leaf-list locator-name { 853 when "not(../default-locator='true')" { 854 description 855 "Only applies to non default locator."; 856 } 857 type leafref { 858 path "/rt:routing/sr:segment-routing/srv6:srv6" 859 + "/srv6:locators/srv6:locator/srv6:name"; 860 } 861 description 862 "Enable OSPFv3 segment-routing IPv6 with specified Locator."; 863 } 864 leaf persistent-end-x-sid{ 865 type boolean; 866 default "false"; 867 description 868 "Enable the persistent nature of End.X sid"; 869 } 870 description 871 "Configuration about OSPFv3 segment-routing IPv6."; 872 } 874 container micro-loop-avoidance { 875 leaf srv6-enable { 876 type boolean; 877 default "false"; 878 description 879 "Enable SRv6 avoid-microloop.Depend on SR IPv6 Enable."; 880 } 882 leaf srv6-rib-update-delay { 883 type uint16 { 884 range "1000..10000"; 885 } 886 units "ms"; 887 default "5000"; 888 description 889 "Set the route delivery delay for SRv6 avoid-microloop. 890 Depend on SR IPv6 Enable."; 891 } 893 description 894 "Enable OSPFv3 avoid-microloop."; 895 } 896 } 898 augment "/rt:routing/" + 899 "rt:control-plane-protocols/rt:control-plane-protocol"+ 900 "/ospf:ospf/ospf:fast-reroute"{ 901 when "/rt:routing/rt:control-plane-protocols/"+ 902 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'"{ 903 description 904 "This augment OSPFv3 routing protocol when used"; 905 } 906 description 907 "This augments OSPFv3 IP FRR with IPV6 TILFA."; 909 container srv6-ti-lfa { 910 if-feature srv6-ti-lfa; 911 leaf enable { 912 type boolean; 913 description 914 "Enables SRv6 TI-LFA computation."; 915 } 916 description 917 "SRv6 TILFA configuration."; 918 } 919 } 921 /* Database */ 922 augment "/rt:routing/" 923 + "rt:control-plane-protocols/rt:control-plane-protocol/" 924 + "ospf:ospf/ospf:database/" 925 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 926 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 927 + "ospf:ospfv3/ospf:body" { 928 when "/rt:routing/rt:control-plane-protocols/"+ 929 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 930 description 931 "This augment OSPFv3 routing protocol when used"; 932 } 933 description 934 "This augments OSPFv3 protocol router capability."; 935 container srv6-locator { 936 description 937 "SRv6 Locator LSA."; 938 uses srv6-locactor-tlvs; 939 } 940 } 942 augment "/rt:routing/" 943 + "rt:control-plane-protocols/rt:control-plane-protocol/" 944 + "ospf:ospf/ospf:database/" 945 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 946 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 947 + "ospf:ospfv3/ospf:body/ospf:router-information" { 948 when "/rt:routing/rt:control-plane-protocols/"+ 949 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 950 description 951 "This augment OSPFv3 routing protocol when used"; 952 } 953 description 954 "This augments OSPFv3 protocol router capability."; 955 uses srv6-capabilities; 956 uses srv6-msds; 958 } 960 augment "/rt:routing/rt:control-plane-protocols" 961 + "/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" 962 + "/ospf:database/ospf:area-scope-lsa-type" 963 + "/ospf:area-scope-lsas" 964 + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv3" 965 + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" 966 + "ospfv3-e-lsa:e-router-tlvs/" 967 + "ospfv3-e-lsa:link-tlv" { 968 when "/rt:routing/rt:control-plane-protocols/"+ 969 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 970 } 971 description 972 "This augments OSPFv3 protocol neighbor."; 973 uses srv6-endx-sids; 974 } 976 /* Notifications */ 977 } 978 980 5. Security Considerations 982 The YANG modules specified in this document define a schema for data 983 that is designed to be accessed via network management protocols, 984 such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF 985 layer is the secure transport layer, and the mandatory-to-implement 986 secure transport is Secure Shell (SSH) [RFC6242]. The lowest 987 RESTCONF layer is HTTPS, and the mandatory-to-implement secure 988 transport is TLS [RFC8446]. 990 The Network Configuration Access Control Model (NACM) [RFC8341] 991 provides the means to restrict access for particular NETCONF or 992 RESTCONF users to a preconfigured subset of all available NETCONF or 993 RESTCONF protocol operations and content. 995 There are a number of data nodes defined in the modules that are 996 writable/creatable/deletable (i.e., config true, which is the 997 default). These data nodes may be considered sensitive or vulnerable 998 in some network environments. Write operations (e.g., edit-config) 999 to these data nodes without proper protection can have a negative 1000 effect on network operations. These are the subtrees and data nodes 1001 and their sensitivity/vulnerability: 1003 * srv6 1005 * micro-loop-avoidance 1006 * srv6-ti-lfa 1008 There are a number of data nodes defined in the modules that are 1009 writable/creatable/deletable (i.e., config true, which is the 1010 default). These data nodes may be considered sensitive or vulnerable 1011 in some network environments. Write operations (e.g., edit-config) 1012 to these data nodes without proper protection can have a negative 1013 effect on network operations. These are the subtrees and data nodes 1014 and their sensitivity/vulnerability: 1016 * srv6-locator 1018 * srv6-capability 1020 * srv6-msd 1022 * srv6-endx-sid 1024 6. Contributors 1026 Qin Wu 1027 Huawei 1028 Email: bill.wu@huawei.com 1030 7. Acknowledgements 1032 TBD. 1034 8. IANA Considerations 1036 The IANA is requested to assign two new URIs from the IETF XML 1037 registry ([RFC3688]). Authors are suggesting the following URI: 1039 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-srv6 1040 Registrant Contact: The IESG. 1041 XML: N/A, the requested URI is an XML namespace 1043 This document also requests one new YANG module name in the YANG 1044 Module Names registry ([RFC6020]) with the following suggestion : 1046 name: ietf-ospfv3-srv6 1047 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-srv6 1048 prefix: ospfv3-srv6 1049 reference: RFC XXXX 1051 9. Normative References 1053 [I-D.ietf-lsr-ospfv3-extended-lsa-yang] 1054 Lindem, A., Palani, S., and Y. Qu, "YANG Model for OSPFv3 1055 Extended LSAs", Work in Progress, Internet-Draft, draft- 1056 ietf-lsr-ospfv3-extended-lsa-yang-08, 28 March 2021, 1057 . 1060 [I-D.ietf-lsr-ospfv3-srv6-extensions] 1061 Li, Z., Hu, Z., Cheng, D., Talaulikar, K., and P. Psenak, 1062 "OSPFv3 Extensions for SRv6", Work in Progress, Internet- 1063 Draft, draft-ietf-lsr-ospfv3-srv6-extensions-02, 15 1064 February 2021, . 1067 [I-D.ietf-ospf-yang] 1068 Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, 1069 "YANG Data Model for OSPF Protocol", Work in Progress, 1070 Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019, 1071 . 1074 [I-D.ietf-rtgwg-segment-routing-ti-lfa] 1075 Litkowski, S., Bashandy, A., Filsfils, C., Francois, P., 1076 Decraene, B., and D. Voyer, "Topology Independent Fast 1077 Reroute using Segment Routing", Work in Progress, 1078 Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa- 1079 07, 29 June 2021, . 1082 [I-D.ietf-spring-srv6-yang] 1083 Raza, K., Agarwal, S., Liu, X., Hu, Z., Hussain, I., Shah, 1084 H., Voyer, D., Matsushima, S., Horiba, K., AbdelSalam, A., 1085 and J. Rajamanickam, "YANG Data Model for SRv6 Base and 1086 Static", Work in Progress, Internet-Draft, draft-ietf- 1087 spring-srv6-yang-00, 9 September 2020, 1088 . 1091 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1092 Requirement Levels", BCP 14, RFC 2119, 1093 DOI 10.17487/RFC2119, March 1997, 1094 . 1096 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1097 DOI 10.17487/RFC3688, January 2004, 1098 . 1100 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1101 the Network Configuration Protocol (NETCONF)", RFC 6020, 1102 DOI 10.17487/RFC6020, October 2010, 1103 . 1105 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1106 and A. Bierman, Ed., "Network Configuration Protocol 1107 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1108 . 1110 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1111 Protocol (NETCONF) Access Control Model", RFC 6536, 1112 DOI 10.17487/RFC6536, March 2012, 1113 . 1115 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1116 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1117 . 1119 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1120 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1121 May 2017, . 1123 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1124 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1125 . 1127 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1128 and R. Wilton, "Network Management Datastore Architecture 1129 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1130 . 1132 [RFC9020] Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1133 Tantsura, "YANG Data Model for Segment Routing", RFC 9020, 1134 DOI 10.17487/RFC9020, May 2021, 1135 . 1137 Authors' Addresses 1139 Zhibo Hu 1140 Huawei Technologies 1141 Huawei Bld., No.156 Beiqing Rd. 1142 Beijing 1143 100095 1144 China 1146 Email: huzhibo@huawei.com 1147 Xuesong Geng 1148 Huawei Technologies 1149 Huawei Bld., No.156 Beiqing Rd. 1150 Beijing 1151 100095 1152 China 1154 Email: gengxuesong@huawei.com 1156 Kamran Raza 1157 Cisco Systems, Inc. 1158 2000 Innovation Drive Kanata, ON K2K-3E8 CA 1160 Email: skraza@cisco.com 1162 Yingzhen Qu 1163 Futurewei Technologies 1164 2330 Central Express Way 1165 Santa Clara, 950950 1166 United States of America 1168 Email: yingzhen.qu@futurewei.com 1170 Acee Lindem 1171 Cisco Systems 1172 301 Midenhall Way 1173 Cary, NC, 27513 1174 United States of America 1176 Email: acee@cisco.com