idnits 2.17.1 draft-ietf-lsr-ospf-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 : ---------------------------------------------------------------------------- ** 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 (26 March 2022) is 762 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 990, but not defined == Missing Reference: 'RFC6242' is mentioned on line 992, but not defined == Missing Reference: 'RFC8446' is mentioned on line 994, but not defined == Missing Reference: 'RFC8341' is mentioned on line 996, but not defined == Unused Reference: 'I-D.ietf-lsr-ospfv3-srv6-extensions' is defined on line 1067, but no explicit reference was found in the text == Unused Reference: 'RFC6536' is defined on line 1117, but no explicit reference was found in the text == Outdated reference: A later version (-29) exists of draft-ietf-lsr-ospfv3-extended-lsa-yang-10 == Outdated reference: A later version (-15) exists of draft-ietf-lsr-ospfv3-srv6-extensions-03 == Outdated reference: A later version (-13) exists of draft-ietf-rtgwg-segment-routing-ti-lfa-08 == Outdated reference: A later version (-03) exists of draft-ietf-spring-srv6-yang-01 ** 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: 27 September 2022 K. Raza 6 Cisco Systems, Inc. 7 Y. Qu 8 Futurewei Technologies 9 A. Lindem 10 Cisco Systems 11 26 March 2022 13 YANG Data Model for OSPF SRv6 14 draft-ietf-lsr-ospf-srv6-yang-01 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 27 September 2022. 45 Copyright Notice 47 Copyright (c) 2022 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 Revised BSD License text as 56 described in Section 4.e of the Trust Legal Provisions and are 57 provided without warranty as described in the Revised 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 . . . . . . . . . . . . . . . . . . . . 23 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 80 1. Introduction 82 YANG [RFC7950] is a data definition language used to define the 83 contents of a conceptual data store that allows networked devices to 84 be managed using NETCONF[RFC6241]. YANG is proving relevant beyond 85 its initial confines, as bindings to other interfaces (e.g., ReST) 86 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@2022-03-26.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 reference "RFC 6991: Common YANG Data Types"; 315 } 317 import ietf-routing { 318 prefix "rt"; 319 reference "RFC 8349: A YANG Data Model for Routing 320 Management (NMDA Version)"; 321 } 323 import ietf-ospfv3-extended-lsa { 324 prefix "ospfv3-e-lsa"; 325 } 327 import ietf-ospf { 328 prefix "ospf"; 329 } 331 import ietf-srv6-base { 332 prefix "srv6"; 334 } 336 import ietf-inet-types { 337 prefix "inet"; 338 } 340 import ietf-segment-routing { 341 prefix "sr"; 342 } 344 organization 345 "IETF LSR Working Group"; 347 contact 348 "WG Web: 349 WG List: 351 Author: Zhibo Hu 352 353 Author: Xuesong Geng 354 355 Author: Kamran Raza 356 357 Author: Yingzhen Qu 358 359 Author: Acee Lindem 360 361 "; 363 description 364 "The YANG module defines the configuration and operatioanl state 365 for OSPFv3 extensions to support Segment Routing over IPv6 data 366 plane. 368 This YANG model conforms to the Network Management 369 Datastore Architecture (NDMA) as described in RFC 8342. 371 Copyright (c) 2022 IETF Trust and the persons identified as 372 authors of the code. All rights reserved. 374 Redistribution and use in source and binary forms, with or 375 without modification, is permitted pursuant to, and subject 376 to the license terms contained in, the Simplified BSD License 377 set forth in Section 4.c of the IETF Trust's Legal Provisions 378 Relating to IETF Documents 379 (http://trustee.ietf.org/license-info). 381 This version of this YANG module is part of RFC XXXX 382 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 383 for full legal notices. 385 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 386 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 387 'MAY', and 'OPTIONAL' in this document are to be interpreted as 388 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 389 they appear in all capitals, as shown here."; 391 revision 2022-03-26 { 392 description 393 "Initial revision."; 394 reference "draft-ietf-lsr-ospfv3-srv6-extensions"; 395 } 397 /* Identities */ 398 identity SRV6_END_FUNC_TYPE { 399 description 400 "Base identity type for srv6 endpoint function code points."; 401 } 403 identity SRV6_END_FUNC_NO_PSP_USP { 404 base "SRV6_END_FUNC_TYPE"; 405 description 406 "End (no PSP, no USP)."; 407 } 409 identity SRV6_END_FUNC_PSP { 410 base "SRV6_END_FUNC_TYPE"; 411 description 412 "End with PSP."; 413 } 415 identity SRV6_END_FUNC_USP { 416 base "SRV6_END_FUNC_TYPE"; 417 description 418 "END with USP."; 419 } 421 identity SRV6_END_FUNC_PSP_USP { 422 base "SRV6_END_FUNC_TYPE"; 423 description 424 "END with PSP & USP."; 425 } 427 identity SRV6_END_T_FUNC_NO_PSP_USP { 428 base "SRV6_END_FUNC_TYPE"; 429 description 430 "End.T (no PSP, no USP)."; 431 } 433 identity SRV6_END_T_FUNC_PSP { 434 base "SRV6_END_FUNC_TYPE"; 435 description 436 "End.T with PSP."; 437 } 439 identity SRV6_END_T_FUNC_USP { 440 base "SRV6_END_FUNC_TYPE"; 441 description 442 "End.T with USP."; 443 } 445 identity SRV6_END_T_FUNC_PSP_USP { 446 base "SRV6_END_FUNC_TYPE"; 447 description 448 "End.T with PSP & USP."; 449 } 451 identity SRV6_END_X_FUNC_NO_PSP_USP { 452 base "SRV6_END_FUNC_TYPE"; 453 description 454 "End.x (no PSP, no USP)."; 455 } 457 identity SRV6_END_X_FUNC_PSP { 458 base "SRV6_END_FUNC_TYPE"; 459 description 460 "End.x with PSP."; 461 } 463 identity SRV6_END_X_FUNC_USP { 464 base "SRV6_END_FUNC_TYPE"; 465 description 466 "End.x with USP."; 467 } 469 identity SRV6_END_X_FUNC_PSP_USP { 470 base "SRV6_END_FUNC_TYPE"; 471 description 472 "End.x with PSP & USP."; 473 } 475 identity SRV6_END_FUNC_DX6 { 476 base "SRV6_END_FUNC_TYPE"; 477 description 478 "End.DX6 function."; 479 } 481 identity SRV6_END_FUNC_DT6 { 482 base "SRV6_END_FUNC_TYPE"; 483 description 484 "End.DT6 function."; 485 } 487 identity SRV6_END_FUNC_OTP { 488 base "SRV6_END_FUNC_TYPE"; 489 description 490 "END.OTP."; 491 } 493 identity s1-bit { 494 base ospf:ospfv3-lsa-option; 495 description 496 "the S1/S2 bits are dependent on the desired 497 flooding scope for the LSA."; 498 } 500 identity s2-bit { 501 base ospf:ospfv3-lsa-option; 502 description 503 "the S1/S2 bits are dependent on the desired 504 flooding scope for the LSA."; 505 } 507 identity srv6-locator-lsa { 508 base ospf:ospfv3-lsa-type; 509 description 510 "SRv6 Locator LSA - Type TBD"; 511 } 513 identity LOCATOR-ROUTE-TYPE { 514 description 515 "The type of the locator route."; 516 } 518 identity INTRA-AREA-LOCATOR { 519 base "LOCATOR-ROUTE-TYPE"; 520 description 521 "Intra-Area"; 522 } 524 identity INTER-AREA-LOCATOR { 525 base "LOCATOR-ROUTE-TYPE"; 526 description 527 "Inter-Area"; 528 } 529 identity AS-EXTERNAL-LOCATOR { 530 base "LOCATOR-ROUTE-TYPE"; 531 description 532 "AS External"; 533 } 535 identity NSSA-EXTERNAL-LOCATOR { 536 base "LOCATOR-ROUTE-TYPE"; 537 description 538 "NSSA External"; 539 } 541 /* typedef */ 542 typedef srv6-sid-value { 543 type inet:ipv6-address-no-zone; 544 description 545 "16 Octets encoded sid value."; 546 } 548 /* Features */ 549 feature srv6-ti-lfa { 550 description 551 "Enhance SRv6 FRR with ti-lfa 552 support"; 553 } 555 /* Groupings */ 556 grouping srv6-msds { 557 description 558 "Used to advertise node/link specific 559 values for Maximum Sid Depths(MSD) of various types"; 560 container srv6-msd { 561 description 562 "Maximum SRv6 SID Depths."; 563 leaf max-segments-left { 564 type uint8; 565 description 566 "The Maximum Segments Left MSD Type specifies 567 the maximum value of the 'SL' field in the SRH 568 of a received packet before applying the Endpoint 569 behavior associated with a SID."; 570 } 571 leaf max-end-pop { 572 type uint8; 573 description 574 "The Maximum End Pop MSD Type specifies the maximum 575 number of SIDs in the SRH to which the router can 576 apply 'PSP' or 'USP' behavior, as defined in flavors."; 577 } 578 leaf max-h-encaps { 579 type uint8; 580 description 581 "The Maximum H.Encaps MSD Type specifies the maximum number 582 of SIDs that can be included as part of the 'H.Encaps' 583 behavior"; 584 } 585 leaf max-end-d { 586 type uint8; 587 description 588 "The maximum number of SIDs in an SRH when performing 589 decapsulation associated with 'End.Dx' functions 590 (e.g., 'End.DX6' and 'End.DT6')."; 591 } 592 } 593 } 595 grouping srv6-capabilities { 596 description 597 "SRV6 capability grouping."; 598 container srv6-capability { 599 description 600 "SRv6 capability."; 601 leaf flags { 602 type bits { 603 bit o-flag { 604 position 1; 605 description 606 "If set, then router is capable of supporting SRH O-bit 607 "; 608 } 609 } 610 description 611 "Flags."; 612 reference 613 "I-D.ali-spring-srv6-oam: OAM in SRv6"; 614 } 615 } 616 } 618 grouping srv6-endpoint-func { 619 description 620 "This group defines srv6 endpoint function"; 621 container endpoint-func { 622 description 623 "Srv6 Endpoint function Descriptor."; 624 leaf fuc-flags { 625 type uint8; 626 description 627 "No function flags are currently being defined."; 628 } 629 leaf endpoint-func { 630 type identityref { 631 base SRV6_END_FUNC_TYPE; 632 } 633 description 634 "The endpoint function."; 635 } 636 leaf undefined-endpoint-func { 637 type uint16; 638 description 639 "Unknown endpoint func value."; 640 } 641 } 642 } 644 grouping srv6-end-sids { 645 description 646 "This group defines srv6 end sid"; 647 container srv6-end-sid { 648 description 649 "SRv6 Segment Identifier(SID) with Endpoint functions."; 650 leaf flags { 651 type uint8; 652 description 653 "NO flags are currently being defined."; 654 } 656 uses srv6-endpoint-func; 657 leaf sid { 658 type srv6-sid-value; 659 description 660 "SRV6 sid value."; 661 } 662 uses srv6-sid-structures; 663 } 664 } 666 grouping srv6-sid-structures { 667 description 668 "This group defines SRv6 SID Structure sub-TLV."; 669 container srv6-sid-structure { 670 description 671 "SRv6 SID Structure sub-TLV is used to advertise the length 672 of each individual part of the SRv6 SID as defined in 673 [I-D.ietf-spring-srv6-network-programming]"; 674 leaf lb-length { 675 type uint8; 676 description 677 "SRv6 SID Locator Block length in bits."; 678 } 680 leaf ln-length { 681 type uint8; 682 description 683 "SRv6 SID Locator Node length in bits."; 684 } 686 leaf fun-length { 687 type uint8; 688 description 689 "SRv6 SID Function length in bits."; 690 } 692 leaf arg-length { 693 type uint8; 694 description 695 "SRv6 SID Argument length in bits."; 696 } 697 } 698 } 700 grouping srv6-endx-sids { 701 description 702 "This group defines SRv6 SIDs Associated with Adjacencies 703 including SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID 704 Sub-TLV."; 705 container srv6-endx-sid { 706 description 707 "SRv6 sids associated with an adjacency."; 709 uses srv6-endpoint-func; 711 leaf flags { 712 type bits { 713 bit b-flag { 714 position 0; 715 description 716 "Backup Flag. If set, the SID refers to a path that is 717 eligible for protection"; 719 } 720 bit s-flag { 721 position 1; 722 description 723 "Set Flag. When set, the S-Flag indicates that the 724 End.X SID refers to a set of adjacencies (and therefore 725 MAY be assigned to other adjacencies as well)."; 726 } 727 bit p-flag { 728 position 2; 729 description 730 "Persistent Flag: If set, the SID is persistently 731 allocated, i.e., the SID value remains consistent 732 across router restart and session/interface flap."; 733 } 734 } 735 description 736 "Flags for end.x subtlv."; 737 } 739 leaf algorithm { 740 type uint8; 741 description 742 "Associated algorithm."; 743 } 745 leaf weight { 746 type uint8; 747 description 748 "8 bit field whose value represents the weight of the End.X 749 SID for the purpose of load balancing"; 750 } 752 leaf-list sid { 753 type srv6-sid-value; 754 description 755 "SRV6 sid value."; 756 } 758 leaf neighbor-router-id { 759 type yang:dotted-quad; 760 description 761 "Neighbor router ID.This is only 762 used on LAN adjacencies."; 763 } 765 uses srv6-sid-structures; 766 } 768 } 770 grouping srv6-locactor-tlvs { 771 description 772 "This group defines srv6 locator tlv."; 773 container srv6-locactor-tlv { 774 description 775 "This contains a srv6 locator tlv."; 776 leaf route-type { 777 type identityref { 778 base LOCATOR-ROUTE-TYPE; 779 } 780 description 781 "The type of the locator route"; 782 } 784 leaf algorithm { 785 type uint8; 786 description 787 "Associated algorithm."; 788 } 790 leaf locator-length { 791 type uint8; 792 description 793 "Carries the length of the Locator 794 prefix as number of bits (1-128)"; 795 } 797 leaf flags { 798 type bits { 799 bit n-flag { 800 position 0; 801 description 802 "When the locator uniquely identifies a node in the 803 network (i.e. it is provisioned on one and only one 804 node), the N bit MUST be set. Otherwise, this bit 805 MUST be clear"; 806 } 807 bit a-flag { 808 position 1; 809 description 810 "When the Locator is configured as anycast, the A bit 811 SHOULD be set. Otherwise, this bit MUST be clear"; 812 } 813 } 814 description 815 "Flags for srv6 locator tlv."; 817 } 819 leaf metric { 820 type uint32; 821 description 822 "Metric value."; 823 } 825 leaf-list locator { 826 type inet:ipv6-address-no-zone; 827 description 828 "Advertised SRV6 locator."; 829 } 830 uses srv6-end-sids; 831 } 832 } 834 /* Cfg */ 835 augment "/rt:routing/" + 836 "rt:control-plane-protocols/rt:control-plane-protocol"+ 837 "/ospf:ospf" { 838 when "/rt:routing/rt:control-plane-protocols/"+ 839 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 840 description 841 "This augment OSPFv3 routing protocol when used"; 842 } 843 description 844 "This augments OSPFv3 protocol configuration 845 with SRv6."; 846 container srv6{ 847 leaf enable{ 848 type boolean; 849 default "false"; 850 description 851 "Enables SRv6 protocol extensions."; 852 } 853 leaf default-locator { 854 type boolean; 855 default "false"; 856 description 857 "Enable OSPFv3 segment-routing IPv6 with default Locator."; 858 } 859 leaf-list locator-name { 860 when "not(../default-locator='true')" { 861 description 862 "Only applies to non default locator."; 863 } 864 type leafref { 865 path "/rt:routing/sr:segment-routing/srv6:srv6" 866 + "/srv6:locators/srv6:locator/srv6:name"; 867 } 868 description 869 "Enable OSPFv3 segment-routing IPv6 with specified Locator."; 870 } 871 leaf persistent-end-x-sid{ 872 type boolean; 873 default "false"; 874 description 875 "Enable the persistent nature of End.X sid"; 876 } 877 description 878 "Configuration about OSPFv3 segment-routing IPv6."; 879 } 881 container micro-loop-avoidance { 882 leaf srv6-enable { 883 type boolean; 884 default "false"; 885 description 886 "Enable SRv6 avoid-microloop.Depend on SR IPv6 Enable."; 887 } 889 leaf srv6-rib-update-delay { 890 type uint16 { 891 range "1000..10000"; 892 } 893 units "ms"; 894 default "5000"; 895 description 896 "Set the route delivery delay for SRv6 avoid-microloop. 897 Depend on SR IPv6 Enable."; 898 } 900 description 901 "Enable OSPFv3 avoid-microloop."; 902 } 903 } 905 augment "/rt:routing/" + 906 "rt:control-plane-protocols/rt:control-plane-protocol"+ 907 "/ospf:ospf/ospf:fast-reroute"{ 908 when "/rt:routing/rt:control-plane-protocols/"+ 909 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'"{ 910 description 911 "This augment OSPFv3 routing protocol when used"; 912 } 913 description 914 "This augments OSPFv3 IP FRR with IPV6 TILFA."; 916 container srv6-ti-lfa { 917 if-feature srv6-ti-lfa; 918 leaf enable { 919 type boolean; 920 description 921 "Enables SRv6 TI-LFA computation."; 922 } 923 description 924 "SRv6 TILFA configuration."; 925 } 926 } 928 /* Database */ 929 augment "/rt:routing/" 930 + "rt:control-plane-protocols/rt:control-plane-protocol/" 931 + "ospf:ospf/ospf:database/" 932 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 933 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 934 + "ospf:ospfv3/ospf:body" { 935 when "/rt:routing/rt:control-plane-protocols/"+ 936 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 937 description 938 "This augment OSPFv3 routing protocol when used"; 939 } 940 description 941 "This augments OSPFv3 protocol router capability."; 942 container srv6-locator { 943 description 944 "SRv6 Locator LSA."; 945 uses srv6-locactor-tlvs; 946 } 947 } 949 augment "/rt:routing/" 950 + "rt:control-plane-protocols/rt:control-plane-protocol/" 951 + "ospf:ospf/ospf:database/" 952 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 953 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 954 + "ospf:ospfv3/ospf:body/ospf:router-information" { 955 when "/rt:routing/rt:control-plane-protocols/"+ 956 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 957 description 958 "This augment OSPFv3 routing protocol when used"; 959 } 960 description 961 "This augments OSPFv3 protocol router capability."; 962 uses srv6-capabilities; 963 uses srv6-msds; 964 } 966 augment "/rt:routing/rt:control-plane-protocols" 967 + "/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" 968 + "/ospf:database/ospf:area-scope-lsa-type" 969 + "/ospf:area-scope-lsas" 970 + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv3" 971 + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" 972 + "ospfv3-e-lsa:e-router-tlvs/" 973 + "ospfv3-e-lsa:link-tlv" { 974 when "/rt:routing/rt:control-plane-protocols/"+ 975 "rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { 976 } 977 description 978 "This augments OSPFv3 protocol neighbor."; 979 uses srv6-endx-sids; 980 } 982 /* Notifications */ 983 } 984 986 5. Security Considerations 988 The YANG modules specified in this document define a schema for data 989 that is designed to be accessed via network management protocols, 990 such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF 991 layer is the secure transport layer, and the mandatory-to-implement 992 secure transport is Secure Shell (SSH) [RFC6242]. The lowest 993 RESTCONF layer is HTTPS, and the mandatory-to-implement secure 994 transport is TLS [RFC8446]. 996 The Network Configuration Access Control Model (NACM) [RFC8341] 997 provides the means to restrict access for particular NETCONF or 998 RESTCONF users to a preconfigured subset of all available NETCONF or 999 RESTCONF protocol operations and content. 1001 There are a number of data nodes defined in the modules that are 1002 writable/creatable/deletable (i.e., config true, which is the 1003 default). These data nodes may be considered sensitive or vulnerable 1004 in some network environments. Write operations (e.g., edit-config) 1005 to these data nodes without proper protection can have a negative 1006 effect on network operations. These are the subtrees and data nodes 1007 and their sensitivity/vulnerability: 1009 * srv6 1011 * micro-loop-avoidance 1013 * srv6-ti-lfa 1015 There are a number of data nodes defined in the modules that are 1016 writable/creatable/deletable (i.e., config true, which is the 1017 default). These data nodes may be considered sensitive or vulnerable 1018 in some network environments. Write operations (e.g., edit-config) 1019 to these data nodes without proper protection can have a negative 1020 effect on network operations. These are the subtrees and data nodes 1021 and their sensitivity/vulnerability: 1023 * srv6-locator 1025 * srv6-capability 1027 * srv6-msd 1029 * srv6-endx-sid 1031 6. Contributors 1033 Qin Wu 1034 Huawei 1035 Email: bill.wu@huawei.com 1037 7. Acknowledgements 1039 TBD. 1041 8. IANA Considerations 1043 The IANA is requested to assign two new URIs from the IETF XML 1044 registry ([RFC3688]). Authors are suggesting the following URI: 1046 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-srv6 1047 Registrant Contact: The IESG. 1048 XML: N/A, the requested URI is an XML namespace 1050 This document also requests one new YANG module name in the YANG 1051 Module Names registry ([RFC6020]) with the following suggestion : 1053 name: ietf-ospfv3-srv6 1054 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-srv6 1055 prefix: ospfv3-srv6 1056 reference: RFC XXXX 1058 9. Normative References 1060 [I-D.ietf-lsr-ospfv3-extended-lsa-yang] 1061 Lindem, A., Palani, S., and Y. Qu, "YANG Model for OSPFv3 1062 Extended LSAs", Work in Progress, Internet-Draft, draft- 1063 ietf-lsr-ospfv3-extended-lsa-yang-10, 6 March 2022, 1064 . 1067 [I-D.ietf-lsr-ospfv3-srv6-extensions] 1068 Li, Z., Hu, Z., Cheng, D., Talaulikar, K., and P. Psenak, 1069 "OSPFv3 Extensions for SRv6", Work in Progress, Internet- 1070 Draft, draft-ietf-lsr-ospfv3-srv6-extensions-03, 19 1071 November 2021, . 1074 [I-D.ietf-ospf-yang] 1075 Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, 1076 "YANG Data Model for OSPF Protocol", Work in Progress, 1077 Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019, 1078 . 1081 [I-D.ietf-rtgwg-segment-routing-ti-lfa] 1082 Litkowski, S., Bashandy, A., Filsfils, C., Francois, P., 1083 Decraene, B., and D. Voyer, "Topology Independent Fast 1084 Reroute using Segment Routing", Work in Progress, 1085 Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa- 1086 08, 21 January 2022, . 1089 [I-D.ietf-spring-srv6-yang] 1090 Raza, K., Agarwal, S., Liu, X., Hu, Z., Hussain, I., Shah, 1091 H., Voyer, D., Matsushima, S., Horiba, K., Rajamanickam, 1092 J., and A. AbdelSalam, "YANG Data Model for SRv6 Base and 1093 Static", Work in Progress, Internet-Draft, draft-ietf- 1094 spring-srv6-yang-01, 14 January 2022, 1095 . 1098 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1099 Requirement Levels", BCP 14, RFC 2119, 1100 DOI 10.17487/RFC2119, March 1997, 1101 . 1103 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1104 DOI 10.17487/RFC3688, January 2004, 1105 . 1107 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1108 the Network Configuration Protocol (NETCONF)", RFC 6020, 1109 DOI 10.17487/RFC6020, October 2010, 1110 . 1112 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1113 and A. Bierman, Ed., "Network Configuration Protocol 1114 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1115 . 1117 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1118 Protocol (NETCONF) Access Control Model", RFC 6536, 1119 DOI 10.17487/RFC6536, March 2012, 1120 . 1122 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1123 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1124 . 1126 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1127 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1128 May 2017, . 1130 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1131 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1132 . 1134 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1135 and R. Wilton, "Network Management Datastore Architecture 1136 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1137 . 1139 [RFC9020] Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1140 Tantsura, "YANG Data Model for Segment Routing", RFC 9020, 1141 DOI 10.17487/RFC9020, May 2021, 1142 . 1144 Authors' Addresses 1145 Zhibo Hu 1146 Huawei Technologies 1147 Huawei Bld., No.156 Beiqing Rd. 1148 Beijing 1149 100095 1150 China 1151 Email: huzhibo@huawei.com 1153 Xuesong Geng 1154 Huawei Technologies 1155 Huawei Bld., No.156 Beiqing Rd. 1156 Beijing 1157 100095 1158 China 1159 Email: gengxuesong@huawei.com 1161 Kamran Raza 1162 Cisco Systems, Inc. 1163 2000 Innovation Drive Kanata, ON K2K-3E8 CA 1164 Email: skraza@cisco.com 1166 Yingzhen Qu 1167 Futurewei Technologies 1168 2330 Central Express Way 1169 Santa Clara, 950950 1170 United States of America 1171 Email: yingzhen.qu@futurewei.com 1173 Acee Lindem 1174 Cisco Systems 1175 301 Midenhall Way 1176 Cary, NC, 27513 1177 United States of America 1178 Email: acee@cisco.com