idnits 2.17.00 (12 Aug 2021) /tmp/idnits35110/draft-acee-lsr-ospfv3-sr-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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to use 'NOT RECOMMENDED' as an RFC 2119 keyword, but does not include the phrase in its RFC 2119 key words list. == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 27, 2020) is 571 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'RFC8022' is defined on line 875, but no explicit reference was found in the text == Unused Reference: 'RFC8349' is defined on line 883, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-17) exists of draft-ietf-ospf-sr-yang-12 Summary: 3 errors (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet A. Lindem 3 Internet-Draft Cisco Systems 4 Intended status: Informational Y. Qu 5 Expires: April 30, 2021 Futurewei 6 October 27, 2020 8 YANG Data Model for OSPFv3 Segment Routing 9 draft-acee-lsr-ospfv3-sr-yang-03 11 Abstract 13 This document defines a YANG data module augmenting the IETF OSPF 14 Segment Routing (SR) YANG model to support OSPFv3 extensions for SR. 15 It can be used to configure and manage OSPFv3 Segment Routing in MPLS 16 data plane. 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at https://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on April 30, 2021. 35 Copyright Notice 37 Copyright (c) 2020 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (https://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 54 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 2 55 3. OSPFv3 Extensions for Segment Routing . . . . . . . . . . . . 2 56 4. Security Considerations . . . . . . . . . . . . . . . . . . . 17 57 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 58 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 59 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 60 7.1. Normative References . . . . . . . . . . . . . . . . . . 18 61 7.2. Informative References . . . . . . . . . . . . . . . . . 19 62 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 64 1. Overview 66 YANG [RFC6020] [RFC7950] is a data definition language used to define 67 the contents of a conceptual data store that allows networked devices 68 to be managed using NETCONF [RFC6241]. YANG is proving relevant 69 beyond its initial confines, as bindings to other interfaces (e.g., 70 ReST) and encodings other than XML (e.g., JSON) are being defined. 71 Furthermore, YANG data models can be used as the basis for 72 implementation of other interfaces, such as CLI and programmatic 73 APIs. 75 This document defines a YANG data module augmenting the IETF OSPF SR 76 YANG model [I-D.ietf-ospf-sr-yang], and can be used to configure and 77 manage OSPFv3 extensions for Segment Routing [RFC8666]. 79 The augmentation defined in this document requires support for both 80 the OSPF SR model and the OSPF base model[I-D.ietf-ospf-yang]. 82 1.1. Requirements Language 84 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 85 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 86 document are to be interpreted as described in [RFC2119]. 88 2. Tree Diagrams 90 This document uses the graphical representation of data models 91 defined in [RFC8340]. 93 3. OSPFv3 Extensions for Segment Routing 95 This document defines a YANG module for OSPFv3 extensions for Segment 96 Routing [RFC8666]. It is an augmentation of the OSPF SR base model. 98 module: ietf-ospfv3-sr 99 augment /rt:routing/rt:control-plane-protocols 100 /rt:control-plane-protocol/ospf:ospf/ospf:database 101 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 102 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 103 /ospf:router-information: 104 +--ro sr-algorithm-tlv 105 | +--ro sr-algorithm* uint8 106 +--ro sid-range-tlvs 107 | +--ro sid-range-tlv* [] 108 | +--ro range-size? uint24 109 | +--ro sid-sub-tlv 110 | +--ro sid? uint32 111 +--ro local-block-tlvs 112 | +--ro local-block-tlv* [] 113 | +--ro range-size? uint24 114 | +--ro sid-sub-tlv 115 | +--ro sid? uint32 116 +--ro srms-preference-tlv 117 +--ro preference? uint8 118 augment /rt:routing/rt:control-plane-protocols 119 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 120 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 121 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 122 /ospf:body/ospf:router-information: 123 +--ro sr-algorithm-tlv 124 | +--ro sr-algorithm* uint8 125 +--ro sid-range-tlvs 126 | +--ro sid-range-tlv* [] 127 | +--ro range-size? uint24 128 | +--ro sid-sub-tlv 129 | +--ro sid? uint32 130 +--ro local-block-tlvs 131 | +--ro local-block-tlv* [] 132 | +--ro range-size? uint24 133 | +--ro sid-sub-tlv 134 | +--ro sid? uint32 135 +--ro srms-preference-tlv 136 +--ro preference? uint8 137 augment /rt:routing/rt:control-plane-protocols 138 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 139 /ospf:interfaces/ospf:interface/ospf:database 140 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 141 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 142 /ospf:body/ospf:router-information: 143 +--ro sr-algorithm-tlv 144 | +--ro sr-algorithm* uint8 145 +--ro sid-range-tlvs 146 | +--ro sid-range-tlv* [] 147 | +--ro range-size? uint24 148 | +--ro sid-sub-tlv 149 | +--ro sid? uint32 150 +--ro local-block-tlvs 151 | +--ro local-block-tlv* [] 152 | +--ro range-size? uint24 153 | +--ro sid-sub-tlv 154 | +--ro sid? uint32 155 +--ro srms-preference-tlv 156 +--ro preference? uint8 157 augment /rt:routing/rt:control-plane-protocols 158 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 159 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 160 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 161 /ospf:body/ospfv3-e-lsa:e-intra-area-prefix: 162 +--ro ospfv3-extended-prefix-range-tlvs 163 +--ro extended-prefix-range-tlv* [] 164 +--ro prefix-length? uint8 165 +--ro af? uint8 166 +--ro range-size? uint16 167 +--ro prefix? inet:ip-prefix 168 +--ro perfix-sid-sub-tlvs 169 | +--ro prefix-sid-sub-tlv* [] 170 | +--ro ospfv3-prefix-sid-flags 171 | | +--ro bits* identityref 172 | +--ro algorithm? uint8 173 | +--ro sid? uint32 174 +--ro unknown-tlvs 175 +--ro unknown-tlv* [] 176 +--ro type? uint16 177 +--ro length? uint16 178 +--ro value? yang:hex-string 179 augment /rt:routing/rt:control-plane-protocols 180 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 181 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 182 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 183 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix: 184 +--ro ospfv3-extended-prefix-range-tlvs 185 +--ro extended-prefix-range-tlv* [] 186 +--ro prefix-length? uint8 187 +--ro af? uint8 188 +--ro range-size? uint16 189 +--ro prefix? inet:ip-prefix 190 +--ro perfix-sid-sub-tlvs 191 | +--ro prefix-sid-sub-tlv* [] 192 | +--ro ospfv3-prefix-sid-flags 193 | | +--ro bits* identityref 194 | +--ro algorithm? uint8 195 | +--ro sid? uint32 196 +--ro unknown-tlvs 197 +--ro unknown-tlv* [] 198 +--ro type? uint16 199 +--ro length? uint16 200 +--ro value? yang:hex-string 201 augment /rt:routing/rt:control-plane-protocols 202 /rt:control-plane-protocol/ospf:ospf/ospf:database 203 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 204 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 205 /ospfv3-e-lsa:e-as-external: 206 +--ro ospfv3-extended-prefix-range-tlvs 207 +--ro extended-prefix-range-tlv* [] 208 +--ro prefix-length? uint8 209 +--ro af? uint8 210 +--ro range-size? uint16 211 +--ro prefix? inet:ip-prefix 212 +--ro perfix-sid-sub-tlvs 213 | +--ro prefix-sid-sub-tlv* [] 214 | +--ro ospfv3-prefix-sid-flags 215 | | +--ro bits* identityref 216 | +--ro algorithm? uint8 217 | +--ro sid? uint32 218 +--ro unknown-tlvs 219 +--ro unknown-tlv* [] 220 +--ro type? uint16 221 +--ro length? uint16 222 +--ro value? yang:hex-string 223 augment /rt:routing/rt:control-plane-protocols 224 /rt:control-plane-protocol/ospf:ospf/ospf:database 225 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 226 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 227 /ospfv3-e-lsa:e-nssa: 228 +--ro ospfv3-extended-prefix-range-tlvs 229 +--ro extended-prefix-range-tlv* [] 230 +--ro prefix-length? uint8 231 +--ro af? uint8 232 +--ro range-size? uint16 233 +--ro prefix? inet:ip-prefix 234 +--ro perfix-sid-sub-tlvs 235 | +--ro prefix-sid-sub-tlv* [] 236 | +--ro ospfv3-prefix-sid-flags 237 | | +--ro bits* identityref 238 | +--ro algorithm? uint8 239 | +--ro sid? uint32 240 +--ro unknown-tlvs 241 +--ro unknown-tlv* [] 242 +--ro type? uint16 243 +--ro length? uint16 244 +--ro value? yang:hex-string 245 augment /rt:routing/rt:control-plane-protocols 246 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 247 /ospf:interfaces/ospf:interface/ospf:database 248 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 249 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 250 /ospf:body/ospfv3-e-lsa:e-link/ospfv3-e-lsa:e-link-tlvs 251 /ospfv3-e-lsa:intra-prefix-tlv: 252 +--ro perfix-sid-sub-tlvs 253 +--ro prefix-sid-sub-tlv* [] 254 +--ro ospfv3-prefix-sid-flags 255 | +--ro bits* identityref 256 +--ro algorithm? uint8 257 +--ro sid? uint32 258 augment /rt:routing/rt:control-plane-protocols 259 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 260 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 261 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 262 /ospf:body/ospfv3-e-lsa:e-intra-area-prefix 263 /ospfv3-e-lsa:e-intra-prefix-tlvs 264 /ospfv3-e-lsa:intra-prefix-tlv: 265 +--ro perfix-sid-sub-tlvs 266 +--ro prefix-sid-sub-tlv* [] 267 +--ro ospfv3-prefix-sid-flags 268 | +--ro bits* identityref 269 +--ro algorithm? uint8 270 +--ro sid? uint32 271 augment /rt:routing/rt:control-plane-protocols 272 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 273 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 274 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 275 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix 276 /ospfv3-e-lsa:e-inter-prefix-tlvs 277 /ospfv3-e-lsa:inter-prefix-tlv: 278 +--ro perfix-sid-sub-tlvs 279 +--ro prefix-sid-sub-tlv* [] 280 +--ro ospfv3-prefix-sid-flags 281 | +--ro bits* identityref 282 +--ro algorithm? uint8 283 +--ro sid? uint32 284 augment /rt:routing/rt:control-plane-protocols 285 /rt:control-plane-protocol/ospf:ospf/ospf:database 286 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 287 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 288 /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs 289 /ospfv3-e-lsa:external-prefix-tlv: 291 +--ro perfix-sid-sub-tlvs 292 +--ro prefix-sid-sub-tlv* [] 293 +--ro ospfv3-prefix-sid-flags 294 | +--ro bits* identityref 295 +--ro algorithm? uint8 296 +--ro sid? uint32 297 augment /rt:routing/rt:control-plane-protocols 298 /rt:control-plane-protocol/ospf:ospf/ospf:database 299 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 300 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 301 /ospfv3-e-lsa:e-nssa/ospfv3-e-lsa:e-external-tlvs 302 /ospfv3-e-lsa:external-prefix-tlv: 303 +--ro perfix-sid-sub-tlvs 304 +--ro prefix-sid-sub-tlv* [] 305 +--ro ospfv3-prefix-sid-flags 306 | +--ro bits* identityref 307 +--ro algorithm? uint8 308 +--ro sid? uint32 309 augment /rt:routing/rt:control-plane-protocols 310 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 311 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 312 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 313 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 314 /ospfv3-e-lsa:link-tlv: 315 +--ro adj-sid-sub-tlvs 316 | +--ro adj-sid-sub-tlv* [] 317 | +--ro adj-sid-flags 318 | | +--ro bits* identityref 319 | +--ro weight? uint8 320 | +--ro sid? uint32 321 +--ro lan-adj-sid-sub-tlvs 322 +--ro lan-adj-sid-sub-tlv* [] 323 +--ro lan-adj-sid-flags 324 | +--ro bits* identityref 325 +--ro weight? uint8 326 +--ro neighbor-router-id? yang:dotted-quad 327 +--ro sid? uint32 329 file "ietf-ospfv3-sr@2020-10-27.yang" 330 module ietf-ospfv3-sr { 331 yang-version 1.1; 332 namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr"; 334 prefix ospfv3-sr; 336 import ietf-inet-types { 337 prefix "inet"; 338 } 339 import ietf-yang-types { 340 prefix "yang"; 341 } 343 import ietf-routing { 344 prefix "rt"; 345 } 347 import ietf-ospf { 348 prefix "ospf"; 349 } 351 import ietf-ospfv3-extended-lsa { 352 prefix "ospfv3-e-lsa"; 353 } 355 import ietf-ospf-sr { 356 prefix "ospf-sr"; 357 } 359 organization 360 "IETF LSR - Link State Routing Working Group"; 362 contact 363 "WG Web: 364 WG List: 366 Author: Yingzhen Qu 367 368 Author: Acee Lindem 369 "; 371 description 372 "This YANG module defines the operational state for OSPFv3 373 Segment Routing, which is common across all of the vendor 374 implementations. It is intended that the module will be 375 extended by vendors to define vendor-specific OSPFv3 376 Segment Routing configuration and operational parameters 377 and policies. 379 This YANG model conforms to the Network Management 380 Datastore Architecture (NMDA) as described in RFC 8242. 382 Copyright (c) 2020 IETF Trust and the persons identified as 383 authors of the code. All rights reserved. 385 Redistribution and use in source and binary forms, with or 386 without modification, is permitted pursuant to, and subject 387 to the license terms contained in, the Simplified BSD License 388 set forth in Section 4.c of the IETF Trust's Legal Provisions 389 Relating to IETF Documents 390 (http://trustee.ietf.org/license-info). 392 This version of this YANG module is part of RFC XXXX; 393 see the RFC itself for full legal notices. 395 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 396 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 397 'MAY', and 'OPTIONAL' in this document are to be interpreted as 398 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 399 they appear in all capitals, as shown here."; 401 reference "RFC XXXX"; 403 revision 2020-10-27 { 404 description 405 "Initial revision."; 406 reference 407 "RFC XXXX: A YANG Data Model for OSPFv3 Segment Routing."; 408 } 410 /* groupings */ 411 grouping ospfv3-prefix-sid-sub-tlvs { 412 description "Prefix Segment ID (SID) sub-TLVs."; 413 container perfix-sid-sub-tlvs{ 414 description "Prefix SID sub-TLV."; 415 list prefix-sid-sub-tlv { 416 description "Prefix SID sub-TLV."; 417 container ospfv3-prefix-sid-flags { 418 leaf-list bits { 419 type identityref { 420 base ospf-sr:prefix-sid-bit; 421 } 422 description 423 "Prefix SID Sub-TLV flag bits list."; 424 } 425 description "Segment Identifier (SID) Flags."; 426 } 427 leaf algorithm { 428 type uint8; 429 description 430 "The algorithm associated with the prefix-SID."; 431 } 432 leaf sid { 433 type uint32; 434 description "An index or label."; 436 } 437 } 438 } 439 } 441 grouping ospfv3-extended-prefix-range-tlvs { 442 description "Extended prefix range TLV grouping."; 444 container ospfv3-extended-prefix-range-tlvs { 445 description "The list of range of prefixes."; 446 list extended-prefix-range-tlv { //type=2? 447 description "The range of prefixes."; 448 leaf prefix-length { 449 type uint8; 450 description "Length of prefix in bits."; 451 } 452 leaf af { 453 type uint8; 454 description "Address family for the prefix."; 455 } 456 leaf range-size { 457 type uint16; 458 description "The number of prefixes covered by the 459 advertisement."; 460 } 461 leaf prefix { 462 type inet:ip-prefix; 463 description "Address prefix."; 464 } 465 uses ospfv3-prefix-sid-sub-tlvs; 466 uses ospf:unknown-tlvs; 467 } 468 } 469 } 471 grouping ospfv3-adj-sid-sub-tlvs { 472 description "Adjacency SID sub TLV grouping."; 473 container adj-sid-sub-tlvs { 474 description "Adjacency SID optional sub-TLVs."; 475 list adj-sid-sub-tlv { 476 description "List of Adjacency SID sub-TLVs."; 477 container adj-sid-flags { 478 leaf-list bits { 479 type identityref { 480 base ospf-sr:adj-sid-bit; 481 } 482 description "Adj sid sub-tlv flags list."; 483 } 484 description "Adj-sid sub-tlv flags."; 485 } 486 leaf weight { 487 type uint8; 488 description "Weight used for load-balancing."; 489 } 490 leaf sid { 491 type uint32; 492 description "Segment Identifier (SID) index/label."; 493 } 494 } 495 } 496 } 498 grouping ospfv3-lan-adj-sid-sub-tlvs { 499 description "LAN adj-sid sub TLV grouping."; 500 container lan-adj-sid-sub-tlvs { 501 description "LAN Adjacency SID optional sub-TLVs."; 502 list lan-adj-sid-sub-tlv { 503 description "List of LAN adjacency SID sub-TLVs."; 504 container lan-adj-sid-flags { 505 leaf-list bits { 506 type identityref { 507 base ospf-sr:adj-sid-bit; 508 } 509 description "LAN adj sid sub-tlv flags list."; 510 } 511 description "LAN adj-sid sub-tlv flags."; 512 } 513 leaf weight { 514 type uint8; 515 description "Weight used for load-balancing."; 516 } 517 leaf neighbor-router-id { 518 type yang:dotted-quad; 519 description "Neighbor router ID."; 520 } 521 leaf sid { 522 type uint32; 523 description "Segment Identifier (SID) index/label."; 524 } 525 } 526 } 527 } 529 /* Database */ 530 /* Segment Routing Capabilities */ 531 augment "/rt:routing/" 532 + "rt:control-plane-protocols/rt:control-plane-protocol/" 533 + "ospf:ospf/ospf:database/" 534 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 535 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 536 + "ospf:ospfv3/ospf:body/ospf:router-information" { 537 when "../../../../../../../../" 538 + "rt:type = 'ospf:ospfv3'" { 539 description 540 "This augmentation is only valid for OSPFv3."; 541 } 542 description 543 "SR specific TLVs for OSPFv3 Router Information 544 opaque LSA."; 545 uses ospf-sr:sr-algorithm-tlv; 546 uses ospf-sr:sid-range-tlvs; 547 uses ospf-sr:local-block-tlvs; 548 uses ospf-sr:srms-preference-tlv; 549 } 551 augment "/rt:routing/" 552 + "rt:control-plane-protocols/rt:control-plane-protocol/" 553 + "ospf:ospf/ospf:areas/" 554 + "ospf:area/ospf:database/" 555 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 556 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 557 + "ospf:ospfv3/ospf:body/ospf:router-information" { 558 when "../../../../../../../../../../" 559 + "rt:type = 'ospf:ospfv3'" { 560 description 561 "This augmentation is only valid for OSPFv3."; 562 } 564 description 565 "SR specific TLVs for OSPFv3 Router Information LSA."; 567 uses ospf-sr:sr-algorithm-tlv; 568 uses ospf-sr:sid-range-tlvs; 569 uses ospf-sr:local-block-tlvs; 570 uses ospf-sr:srms-preference-tlv; 571 } 573 augment "/rt:routing/" 574 + "rt:control-plane-protocols/rt:control-plane-protocol/" 575 + "ospf:ospf/ospf:areas/ospf:area/" 576 + "ospf:interfaces/ospf:interface/ospf:database/" 577 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 578 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 579 + "ospf:ospfv3/ospf:body/ospf:router-information" { 581 when "../../../../../../../../../../../../" 582 + "rt:type = 'ospf:ospfv3'" { 583 description 584 "This augmentation is only valid for OSPFv3."; 585 } 587 description 588 "SR specific TLVs for OSPFv3 Router Information LSA."; 590 uses ospf-sr:sr-algorithm-tlv; 591 uses ospf-sr:sid-range-tlvs; 592 uses ospf-sr:local-block-tlvs; 593 uses ospf-sr:srms-preference-tlv; 594 } 596 /* OSPFv3 Extended Prefix Range TLV */ 597 augment "/rt:routing/" 598 + "rt:control-plane-protocols/rt:control-plane-protocol/" 599 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 600 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 601 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 602 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix" { 603 when "../../../../../../../../../../" 604 + "rt:type = 'ospf:ospfv3'" { 605 description 606 "This augmentation is only valid for OSPFv3 607 E-Router LSAs"; 608 } 609 uses ospfv3-extended-prefix-range-tlvs; 610 description 611 "OSPFv3 Area-Scoped E-Intra-Area-Prefix LSA."; 612 } 614 augment "/rt:routing/" 615 + "rt:control-plane-protocols/rt:control-plane-protocol/" 616 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 617 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 618 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 619 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { 620 when "../../../../../../../../../../" 621 + "rt:type = 'ospf:ospfv3'" { 622 description 623 "This augmentation is only valid for OSPFv3 624 E-Router LSAs"; 625 } 626 uses ospfv3-extended-prefix-range-tlvs; 627 description 628 "OSPFv3 Area-Scoped E-Inter-Area-Prefix LSA."; 630 } 632 augment "/rt:routing/" 633 + "rt:control-plane-protocols/rt:control-plane-protocol/" 634 + "ospf:ospf/ospf:database/" 635 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 636 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 637 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { 638 when "'ospf:../../../../../../../../../" 639 + "rt:type' = 'ospf:ospfv3'" { 640 description 641 "This augmentation is only valid for OSPFv3."; 642 } 643 uses ospfv3-extended-prefix-range-tlvs; 644 description 645 "OSPFv3 AS-Scoped E-AS-External LSA."; 646 } 648 augment "/rt:routing/" 649 + "rt:control-plane-protocols/rt:control-plane-protocol/" 650 + "ospf:ospf/ospf:database/" 651 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 652 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 653 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { 654 when "'ospf:../../../../../../../../../" 655 + "rt:type' = 'ospf:ospfv3'" { 656 description 657 "This augmentation is only valid for OSPFv3."; 658 } 659 uses ospfv3-extended-prefix-range-tlvs; 660 description 661 "OSPFv3 AS-Scoped E-NSSA LSA."; 662 } 664 /* Prefix SID Sub-TLV in Intra-Area Prefix TLV */ 665 augment "/rt:routing/" 666 + "rt:control-plane-protocols/rt:control-plane-protocol/" 667 + "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 668 + "ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 669 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3/" 670 + "ospf:body/ospfv3-e-lsa:e-link/" 671 + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 672 when "../../../../../../../../../../../../../../" 673 + "rt:type = 'ospf:ospfv3'" { 674 description 675 "This augmentation is only valid for OSPFv3 676 E-Router LSAs"; 677 } 678 uses ospfv3-prefix-sid-sub-tlvs; 679 description 680 "OSPFv3 Link-Scoped Intra-Area Prefix TLV."; 681 } 683 augment "/rt:routing/" 684 + "rt:control-plane-protocols/rt:control-plane-protocol/" 685 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 686 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 687 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 688 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" 689 + "ospfv3-e-lsa:e-intra-prefix-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 690 when "../../../../../../../../../../../../" 691 + "rt:type = 'ospf:ospfv3'" { 692 description 693 "This augmentation is only valid for OSPFv3 694 E-Router LSAs"; 695 } 696 uses ospfv3-prefix-sid-sub-tlvs; 697 description 698 "OSPFv3 Area-Scoped Intra-Area Prefix TLV."; 699 } 701 /* Prefix SID Sub-TLV in Inter-Area Prefix TLV */ 702 augment "/rt:routing/" 703 + "rt:control-plane-protocols/rt:control-plane-protocol/" 704 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 705 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 706 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 707 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" 708 + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { 709 when "../../../../../../../../../../../../" 710 + "rt:type = 'ospf:ospfv3'" { 711 description 712 "This augmentation is only valid for OSPFv3 713 E-Router LSAs"; 714 } 715 uses ospfv3-prefix-sid-sub-tlvs; 716 description 717 "OSPFv3 Area-Scoped Inter-Area Prefix TLV."; 718 } 720 /* Prefix SID Sub-TLV in External Prefix TLV */ 721 augment "/rt:routing/" 722 + "rt:control-plane-protocols/rt:control-plane-protocol/" 723 + "ospf:ospf/ospf:database/" 724 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 725 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 726 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 727 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 728 when "'ospf:../../../../../../../../../" 729 + "rt:type' = 'ospf:ospfv3'" { 730 description 731 "This augmentation is only valid for OSPFv3."; 732 } 733 uses ospfv3-prefix-sid-sub-tlvs; 734 description 735 "OSPFv3 AS-Scoped External Prefix TLV."; 736 } 738 augment "/rt:routing/" 739 + "rt:control-plane-protocols/rt:control-plane-protocol/" 740 + "ospf:ospf/ospf:database/" 741 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 742 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 743 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" 744 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 745 when "'ospf:../../../../../../../../../" 746 + "rt:type' = 'ospf:ospfv3'" { 747 description 748 "This augmentation is only valid for OSPFv3."; 749 } 750 uses ospfv3-prefix-sid-sub-tlvs; 751 description 752 "OSPFv3 AS-Scoped External Prefix TLV."; 753 } 755 /* Adj-SID sub-TLV */ 756 augment "/rt:routing/" 757 + "rt:control-plane-protocols/rt:control-plane-protocol/" 758 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 759 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 760 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 761 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" 762 + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 763 when "../../../../../../../../../../../../" 764 + "rt:type = 'ospf:ospfv3'" { 765 description 766 "This augmentation is only valid for OSPFv3 767 E-Router LSAs"; 768 } 769 uses ospfv3-adj-sid-sub-tlvs; 770 uses ospfv3-lan-adj-sid-sub-tlvs; 771 description 772 "OSPFv3 Area-Scoped Adj-SID Sub-TLV."; 774 } 775 } 776 778 4. Security Considerations 780 The YANG modules specified in this document define a schema for data 781 that is designed to be accessed via network management protocols such 782 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 783 is the secure transport layer, and the mandatory-to-implement secure 784 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 785 is HTTPS, and the mandatory-to-implement secure transport is TLS 786 [RFC5246]. 788 The NETCONF access control model [RFC6536] provides the means to 789 restrict access for particular NETCONF or RESTCONF users to a pre- 790 configured subset of all available NETCONF or RESTCONF protocol 791 operations and content. 793 There are a number of data nodes defined in the modules that are 794 writable/creatable/deletable (i.e., config true, which is the 795 default). These data nodes may be considered sensitive or vulnerable 796 in some network environments. Write operations (e.g., edit-config) 797 to these data nodes without proper protection can have a negative 798 effect on network operations. 800 Some of the readable data nodes in the modules may be considered 801 sensitive or vulnerable in some network environments. It is thus 802 important to control read access (e.g., via get, get-config, or 803 notification) to these data nodes. The exposure of the Link State 804 Database (LSDB) will expose the detailed topology of the network. 805 This may be undesirable since both due to the fact that exposure may 806 facilitate other attacks. Additionally, network operators may 807 consider their topologies to be sensitive confidential data. 809 5. IANA Considerations 811 This document registers URIs in the IETF XML registry [RFC3688]. 812 Following the format in [RFC3688], the following registrations is 813 requested to be made: 815 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr 816 Registrant Contact: The IESG. 817 XML: N/A, the requested URI is an XML namespace. 819 This document registers the YANG modules in the YANG Module Names 820 registry [RFC6020]. 822 name: ietf-ospfv3-sr 823 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr 824 prefix: ospfv3-sr 825 reference: RFC XXXX 827 6. Acknowledgements 829 This document was produced using Marshall Rose's xml2rfc tool. 831 The YANG model was developed using the suite of YANG tools written 832 and maintained by numerous authors. 834 7. References 836 7.1. Normative References 838 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 839 Requirement Levels", BCP 14, RFC 2119, 840 DOI 10.17487/RFC2119, March 1997, 841 . 843 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 844 DOI 10.17487/RFC3688, January 2004, 845 . 847 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 848 (TLS) Protocol Version 1.2", RFC 5246, 849 DOI 10.17487/RFC5246, August 2008, 850 . 852 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 853 the Network Configuration Protocol (NETCONF)", RFC 6020, 854 DOI 10.17487/RFC6020, October 2010, 855 . 857 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 858 and A. Bierman, Ed., "Network Configuration Protocol 859 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 860 . 862 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 863 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 864 . 866 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 867 Protocol (NETCONF) Access Control Model", RFC 6536, 868 DOI 10.17487/RFC6536, March 2012, 869 . 871 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 872 RFC 7950, DOI 10.17487/RFC7950, August 2016, 873 . 875 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 876 Management", RFC 8022, DOI 10.17487/RFC8022, November 877 2016, . 879 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 880 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 881 . 883 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 884 Routing Management (NMDA Version)", RFC 8349, 885 DOI 10.17487/RFC8349, March 2018, 886 . 888 [RFC8666] Psenak, P., Ed. and S. Previdi, Ed., "OSPFv3 Extensions 889 for Segment Routing", RFC 8666, DOI 10.17487/RFC8666, 890 December 2019, . 892 7.2. Informative References 894 [I-D.ietf-ospf-sr-yang] 895 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 896 "YANG Data Model for OSPF SR (Segment Routing) Protocol", 897 draft-ietf-ospf-sr-yang-12 (work in progress), July 2020. 899 [I-D.ietf-ospf-yang] 900 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 901 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 902 yang-29 (work in progress), October 2019. 904 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 905 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 906 . 908 Authors' Addresses 910 Acee Lindem 911 Cisco Systems 912 301 Midenhall Way 913 Cary, NC 27513 915 EMail: acee@cisco.com 916 Yingzhen Qu 917 Futurewei 918 2330 Central Expressway 919 Santa Clara, CA 95050 920 USA 922 EMail: yingzhen.qu@futurewei.com