idnits 2.17.1 draft-ietf-ospf-sr-yang-14.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 == Line 522 has weird spacing: '...r-bound uin...' == Line 523 has weird spacing: '...r-bound uin...' == Line 534 has weird spacing: '...roup-id uin...' == Line 874 has weird spacing: '...dentity b-bit...' == 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 (February 21, 2021) is 1160 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) == Unused Reference: 'RFC2328' is defined on line 1412, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 1420, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 1430, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 1434, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 1438, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1462, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1487, 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 7223 (Obsoleted by RFC 8343) -- Obsolete informational reference (is this intentional?): RFC 8022 (Obsoleted by RFC 8349) Summary: 3 errors (**), 0 flaws (~~), 14 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Standards Track Y. Qu 5 Expires: August 25, 2021 Futurewei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 February 21, 2021 14 YANG Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-14 17 Abstract 19 This document defines a YANG data module that can be used to 20 configure and manage OSPF Segment Routing. It also defines a module 21 for management of Signaling Maximum SID Depth (MSD) Using OSPF. The 22 modules are based on YANG 1.1 as defined in RFC 7950 and conform to 23 the Network Management Datastore Architecture (NDMA) as described in 24 RFC 8342. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on August 25, 2021. 43 Copyright Notice 45 Copyright (c) 2021 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 61 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 62 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 63 2. OSPF MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 3 64 2.1. OSPF MSD YANG Module . . . . . . . . . . . . . . . . . . 5 65 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 11 66 3.1. OSPF Segment Routing YANG Module . . . . . . . . . . . . 16 67 4. Security Considerations . . . . . . . . . . . . . . . . . . . 28 68 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 69 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 70 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 71 7.1. Normative References . . . . . . . . . . . . . . . . . . 30 72 7.2. Informative References . . . . . . . . . . . . . . . . . 32 73 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 33 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 76 1. Overview 78 YANG [RFC6020] [RFC7950] is a data definition language used to define 79 the contents of a conceptual data store that allows networked devices 80 to be managed using NETCONF [RFC6241]. YANG is proving relevant 81 beyond its initial confines, as bindings to other interfaces (e.g., 82 ReST) and encodings other than XML (e.g., JSON) are being defined. 83 Furthermore, YANG data models can be used as the basis for 84 implementation of other interfaces, such as CLI and programmatic 85 APIs. 87 This document defines a YANG data model that can be used to configure 88 and manage OSPF Segment Routing [RFC8665] and it is an augmentation 89 to the OSPF YANG data model. 91 This document also defines a YANG data model for Signaling Maximum 92 SID Depth (MSD) Using OSPF [RFC8476], which augments the base OSPF 93 YANG data model. 95 The YANG module in this document conforms to the Network Management 96 Datastore Architecture (NMDA) [RFC8342]. 98 1.1. Requirements Language 100 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 101 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 102 document are to be interpreted as described in [RFC2119]. 104 1.2. Tree Diagrams 106 This document uses the graphical representation of data models 107 defined in [RFC8340]. 109 2. OSPF MSD 111 This document defines a model for Signaling Maximum SID Depth (MSD) 112 Using OSPF [RFC8476]. It is an augmentation of the OSPF base model. 114 module: ietf-ospf-msd 115 augment /rt:routing/rt:control-plane-protocols 116 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 117 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 118 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 119 /ospf:body/ospf:opaque/ospf:ri-opaque: 120 +--ro node-msd-tlv 121 +--ro node-msds* [msd-type] 122 +--ro msd-type identityref 123 +--ro msd-value? uint8 124 augment /rt:routing/rt:control-plane-protocols 125 /rt:control-plane-protocol/ospf:ospf/ospf:database 126 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 127 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 128 /ospf:ri-opaque: 129 +--ro node-msd-tlv 130 +--ro node-msds* [msd-type] 131 +--ro msd-type identityref 132 +--ro msd-value? uint8 133 augment /rt:routing/rt:control-plane-protocols 134 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 135 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 136 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 137 /ospf:body/ospf:router-information: 138 +--ro node-msd-tlv 139 +--ro node-msds* [msd-type] 140 +--ro msd-type identityref 141 +--ro msd-value? uint8 142 augment /rt:routing/rt:control-plane-protocols 143 /rt:control-plane-protocol/ospf:ospf/ospf:database 144 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 145 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 146 /ospf:router-information: 147 +--ro node-msd-tlv 148 +--ro node-msds* [msd-type] 149 +--ro msd-type identityref 150 +--ro msd-value? uint8 151 augment /rt:routing/rt:control-plane-protocols 152 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 153 /ospf:interfaces/ospf:interface/ospf:database 154 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 155 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 156 /ospf:body/ospf:opaque/ospf:extended-link-opaque 157 /ospf:extended-link-tlv: 158 +--ro link-msd-sub-tlv 159 +--ro link-msds* [msd-type] 160 +--ro msd-type identityref 161 +--ro msd-value? uint8 162 augment /rt:routing/rt:control-plane-protocols 163 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 164 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 165 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 166 /ospf:body/ospf:opaque/ospf:extended-link-opaque 167 /ospf:extended-link-tlv: 168 +--ro link-msd-sub-tlv 169 +--ro link-msds* [msd-type] 170 +--ro msd-type identityref 171 +--ro msd-value? uint8 172 augment /rt:routing/rt:control-plane-protocols 173 /rt:control-plane-protocol/ospf:ospf/ospf:database 174 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 175 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 176 /ospf:extended-link-opaque/ospf:extended-link-tlv: 177 +--ro link-msd-sub-tlv 178 +--ro link-msds* [msd-type] 179 +--ro msd-type identityref 180 +--ro msd-value? uint8 181 augment /rt:routing/rt:control-plane-protocols 182 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 183 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 184 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 185 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs: 186 +--ro link-msd-sub-tlv 187 +--ro link-msds* [msd-type] 188 +--ro msd-type identityref 189 +--ro msd-value? uint8 191 2.1. OSPF MSD YANG Module 193 file "ietf-ospf-msd@2021-02-21.yang" 194 module ietf-ospf-msd { 195 yang-version 1.1; 196 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-msd"; 197 prefix ospf-msd; 199 import ietf-routing { 200 prefix rt; 201 reference "RFC 8349: A YANG Data Model for Routing 202 Management (NMDA Version)"; 203 } 205 import ietf-ospf { 206 prefix ospf; 207 } 209 import ietf-ospfv3-extended-lsa { 210 prefix ospfv3-e-lsa; 211 } 213 organization 214 "IETF LSR - LSR Working Group"; 215 contact 216 "WG Web: 217 WG List: 219 Author: Yingzhen Qu 220 221 Author: Acee Lindem 222 223 Author: Stephane Litkowski 224 225 Author: Jeff Tantsura 226 228 "; 229 description 230 "The YANG module augments the base OSPF model to 231 manage different types of MSDs. 233 This YANG model conforms to the Network Management 234 Datastore Architecture (NMDA) as described in RFC 8342. 236 Copyright (c) 2021 IETF Trust and the persons identified as 237 authors of the code. All rights reserved. 239 Redistribution and use in source and binary forms, with or 240 without modification, is permitted pursuant to, and subject 241 to the license terms contained in, the Simplified BSD License 242 set forth in Section 4.c of the IETF Trust's Legal Provisions 243 Relating to IETF Documents 244 (https://trustee.ietf.org/license-info). 246 This version of this YANG module is part of RFC XXXX; 247 see the RFC itself for full legal notices. 249 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 250 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 251 'MAY', and 'OPTIONAL' in this document are to be interpreted as 252 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 253 they appear in all capitals, as shown here."; 255 reference "RFC XXXX: YANG Data Model for OSPF MSD."; 257 revision 2021-02-21 { 258 description 259 "Initial Version"; 260 reference "RFC XXXX: YANG Data Model for OSPF MSD."; 261 } 263 identity msd-base-type { 264 description 265 "Base identity for MSD Type"; 266 } 268 identity base-mpls-msd { 269 base msd-base-type; 270 description 271 "Base MPLS Imposition MSD."; 272 reference 273 "RFC 8491: Singling MSD using IS-IS."; 274 } 276 identity erld-msd { 277 base msd-base-type; 278 description 279 "ERLD-MSD is defined to advertise the ERLD."; 280 reference 281 "RFC 8662: Entropy Label for Source Packet Routing in 282 Networking (SPRING) Tunnels"; 283 } 285 grouping node-msd-tlv { 286 description 287 "Grouping for node MSD."; 288 container node-msd-tlv { 289 list node-msds { 290 key "msd-type"; 291 leaf msd-type { 292 type identityref { 293 base msd-base-type; 294 } 295 description 296 "MSD-Types"; 297 } 298 leaf msd-value { 299 type uint8; 300 description 301 "MSD value, in the range of 0-255."; 302 } 303 description 304 "Node MSD is the smallest link MSD supported by 305 the node."; 306 } 307 description 308 "Node MSD is the number of SIDs supported by a node."; 309 reference 310 "RFC 8476: Signaling Maximum SID Depth (MSD) Using OSPF"; 311 } 312 } 314 grouping link-msd-sub-tlv { 315 description 316 "Link Maximum SID Depth (MSD) grouping for an interface."; 317 container link-msd-sub-tlv { 318 list link-msds { 319 key "msd-type"; 320 leaf msd-type { 321 type identityref { 322 base msd-base-type; 323 } 324 description 325 "MSD-Types"; 326 } 327 leaf msd-value { 328 type uint8; 329 description 330 "MSD value, in the range of 0-255."; 331 } 332 description 333 "List of link MSDs"; 335 } 336 description 337 "Link MSD sub-tlvs."; 338 } 339 } 341 /* Node MSD TLV */ 342 augment "/rt:routing/" 343 + "rt:control-plane-protocols/rt:control-plane-protocol/" 344 + "ospf:ospf/ospf:areas/" 345 + "ospf:area/ospf:database/" 346 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 347 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 348 + "ospf:ospfv2/ospf:body/ospf:opaque/" 349 + "ospf:ri-opaque" { 350 when "../../../../../../../../../../../" 351 + "rt:type = 'ospf:ospfv2'" { 352 description 353 "This augmentation is only valid for OSPFv2."; 354 } 355 description 356 "Node MSD TLV is an optional TLV of OSPFv2 RI Opaque 357 LSA (RFC7770) and has a type of 12."; 359 uses node-msd-tlv; 360 } 362 augment "/rt:routing/" 363 + "rt:control-plane-protocols/rt:control-plane-protocol/" 364 + "ospf:ospf/ospf:database/" 365 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 366 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 367 + "ospf:ospfv2/ospf:body/ospf:opaque/" 368 + "ospf:ri-opaque" { 369 when "../../../../../../../../../" 370 + "rt:type = 'ospf:ospfv2'" { 371 description 372 "This augmentation is only valid for OSPFv2."; 373 } 374 description 375 "Node MSD TLV is an optional TLV of OSPFv2 RI Opaque 376 LSA (RFC7770) and has a type of 12."; 378 uses node-msd-tlv; 379 } 381 augment "/rt:routing/" 382 + "rt:control-plane-protocols/rt:control-plane-protocol/" 383 + "ospf:ospf/ospf:areas/" 384 + "ospf:area/ospf:database/" 385 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 386 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 387 + "ospf:ospfv3/ospf:body/ospf:router-information" { 388 when "../../../../../../../../../../" 389 + "rt:type = 'ospf:ospfv3'" { 390 description 391 "This augmentation is only valid for OSPFv3."; 392 } 393 description 394 "Node MSD TLV is an optional TLV of OSPFv3 RI Opaque 395 LSA (RFC7770) and has a type of 12."; 397 uses node-msd-tlv; 398 } 400 augment "/rt:routing/" 401 + "rt:control-plane-protocols/rt:control-plane-protocol/" 402 + "ospf:ospf/ospf:database/" 403 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 404 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 405 + "ospf:ospfv3/ospf:body/ospf:router-information" { 406 when "../../../../../../../../" 407 + "rt:type = 'ospf:ospfv3'" { 408 description 409 "This augmentation is only valid for OSPFv3."; 410 } 411 description 412 "Node MSD TLV is an optional TLV of OSPFv3 RI Opaque 413 LSA (RFC7770) and has a type of 12."; 415 uses node-msd-tlv; 416 } 418 /* link MSD sub-tlv */ 419 augment "/rt:routing/" 420 + "rt:control-plane-protocols/rt:control-plane-protocol/" 421 + "ospf:ospf/ospf:areas/ospf:area/" 422 + "ospf:interfaces/ospf:interface/ospf:database/" 423 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 424 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 425 + "ospf:ospfv2/ospf:body/ospf:opaque/" 426 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 427 when "../../../../../../../../../../../../../../" 428 + "rt:type = 'ospf:ospfv2'" { 429 description 430 "This augmentation is only valid for OSPFv2."; 432 } 433 description 434 "Link MSD sub-TLV is an optional sub-TLV of OSPFv2 extended 435 link TLV as defined in RFC 7684 and has a type of 6."; 437 uses link-msd-sub-tlv; 438 } 440 augment "/rt:routing/" 441 + "rt:control-plane-protocols/rt:control-plane-protocol/" 442 + "ospf:ospf/ospf:areas/" 443 + "ospf:area/ospf:database/" 444 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 445 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 446 + "ospf:ospfv2/ospf:body/ospf:opaque/" 447 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 448 when "../../../../../../../../../../../../" 449 + "rt:type = 'ospf:ospfv2'" { 450 description 451 "This augmentation is only valid for OSPFv2."; 452 } 453 description 454 "Link MSD sub-TLV is an optional sub-TLV of OSPFv2 extended 455 link TLV as defined in RFC 7684 and has a type of 6."; 457 uses link-msd-sub-tlv; 458 } 460 augment "/rt:routing/" 461 + "rt:control-plane-protocols/rt:control-plane-protocol/" 462 + "ospf:ospf/ospf:database/" 463 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 464 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 465 + "ospf:ospfv2/ospf:body/ospf:opaque/" 466 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 467 when "../../../../../../../../../../" 468 + "rt:type = 'ospf:ospfv2'" { 469 description 470 "This augmentation is only valid for OSPFv2."; 471 } 472 description 473 "Link MSD sub-TLV is an optional sub-TLV of OSPFv2 extended 474 link TLV as defined in RFC 7684 and has a type of 6."; 476 uses link-msd-sub-tlv; 477 } 479 augment "/rt:routing/" 480 + "rt:control-plane-protocols/rt:control-plane-protocol/" 481 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 482 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 483 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 484 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 485 + "/ospfv3-e-lsa:e-router-tlvs" { 486 when "'ospf:../../../../../../../../" 487 + "rt:type' = 'ospf:ospfv3'" { 488 description 489 "This augmentation is only valid for OSPFv3 490 E-Router LSAs"; 491 } 492 description 493 "Augment OSPFv3 Area scope router-link TLV."; 495 uses link-msd-sub-tlv; 496 } 497 } 498 500 3. OSPF Segment Routing 502 This document defines a model for OSPF Segment Routing feature 503 [RFC8665]. It is an augmentation of the OSPF base model. 505 The OSPF SR YANG module requires support for the base segment routing 506 module [I-D.ietf-spring-sr-yang], which defines the global segment 507 routing configuration independent of any specific routing protocol 508 configuration, and support of OSPF base model[I-D.ietf-ospf-yang] 509 which defines basic OSPF configuration and state. 511 module: ietf-ospf-sr 512 augment /rt:routing/rt:control-plane-protocols 513 /rt:control-plane-protocol/ospf:ospf: 514 +--rw segment-routing 515 | +--rw enabled? boolean 516 | +--rw bindings 517 | +--rw advertise 518 | | +--rw policies* string 519 | +--rw receive? boolean 520 +--rw protocol-srgb {sr-mpls:protocol-srgb}? 521 +--rw srgb* [lower-bound upper-bound] 522 +--rw lower-bound uint32 523 +--rw upper-bound uint32 524 augment /rt:routing/rt:control-plane-protocols 525 /rt:control-plane-protocol/ospf:ospf/ospf:areas 526 /ospf:area/ospf:interfaces/ospf:interface: 527 +--rw segment-routing 528 +--rw adjacency-sid 529 +--rw adj-sids* [value] 530 | +--rw value-type? enumeration 531 | +--rw value uint32 532 | +--rw protected? boolean 533 +--rw advertise-adj-group-sid* [group-id] 534 | +--rw group-id uint32 535 +--rw advertise-protection? enumeration 536 augment /rt:routing/rt:control-plane-protocols 537 /rt:control-plane-protocol/ospf:ospf/ospf:areas 538 /ospf:area/ospf:interfaces/ospf:interface/ospf:fast-reroute: 539 +--rw ti-lfa {ti-lfa}? 540 +--rw enable? boolean 541 augment /rt:routing/rt:control-plane-protocols 542 /rt:control-plane-protocol/ospf:ospf/ospf:areas 543 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 544 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 545 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 546 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 547 /ospf:extended-prefix-tlv: 548 +--ro perfix-sid-sub-tlvs 549 +--ro prefix-sid-sub-tlv* 550 +--ro prefix-sid-flags 551 | +--ro bits* identityref 552 +--ro mt-id? uint8 553 +--ro algorithm? uint8 554 +--ro sid? uint32 555 augment /rt:routing/rt:control-plane-protocols 556 /rt:control-plane-protocol/ospf:ospf/ospf:areas 557 /ospf:area/ospf:database/ospf:area-scope-lsa-type 558 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 559 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 560 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 561 +--ro perfix-sid-sub-tlvs 562 +--ro prefix-sid-sub-tlv* 563 +--ro prefix-sid-flags 564 | +--ro bits* identityref 565 +--ro mt-id? uint8 566 +--ro algorithm? uint8 567 +--ro sid? uint32 568 augment /rt:routing/rt:control-plane-protocols 569 /rt:control-plane-protocol/ospf:ospf/ospf:database 570 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 571 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 572 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 573 +--ro perfix-sid-sub-tlvs 574 +--ro prefix-sid-sub-tlv* 575 +--ro prefix-sid-flags 576 | +--ro bits* identityref 577 +--ro mt-id? uint8 578 +--ro algorithm? uint8 579 +--ro sid? uint32 580 augment /rt:routing/rt:control-plane-protocols 581 /rt:control-plane-protocol/ospf:ospf/ospf:areas 582 /ospf:area/ospf:database/ospf:area-scope-lsa-type 583 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 584 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 585 /ospf:extended-link-opaque/ospf:extended-link-tlv: 586 +--ro adj-sid-sub-tlvs 587 | +--ro adj-sid-sub-tlv* 588 | +--ro adj-sid-flags 589 | | +--ro bits* identityref 590 | +--ro mt-id? uint8 591 | +--ro weight? uint8 592 | +--ro sid? uint32 593 +--ro lan-adj-sid-sub-tlvs 594 +--ro lan-adj-sid-sub-tlv* 595 +--ro lan-adj-sid-flags 596 | +--ro bits* identityref 597 +--ro mt-id? uint8 598 +--ro weight? uint8 599 +--ro neighbor-router-id? yang:dotted-quad 600 +--ro sid? uint32 601 augment /rt:routing/rt:control-plane-protocols 602 /rt:control-plane-protocol/ospf:ospf/ospf:areas 603 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 604 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 605 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 606 /ospf:body/ospf:opaque: 607 +--ro extended-prefix-range-tlvs 608 | +--ro extended-prefix-range-tlv* 609 | +--ro prefix-length? uint8 610 | +--ro af? uint8 611 | +--ro range-size? uint16 612 | +--ro extended-prefix-range-flags 613 | | +--ro bits* identityref 614 | +--ro prefix? inet:ip-prefix 615 | +--ro perfix-sid-sub-tlvs 616 | | +--ro prefix-sid-sub-tlv* 617 | | +--ro prefix-sid-flags 618 | | | +--ro bits* identityref 619 | | +--ro mt-id? uint8 620 | | +--ro algorithm? uint8 621 | | +--ro sid? uint32 622 | +--ro unknown-tlvs 623 | +--ro unknown-tlv* 624 | +--ro type? uint16 625 | +--ro length? uint16 626 | +--ro value? yang:hex-string 627 +--ro sr-algorithm-tlv 628 | +--ro sr-algorithm* uint8 629 +--ro sid-range-tlvs 630 | +--ro sid-range-tlv* 631 | +--ro range-size? uint24 632 | +--ro sid-sub-tlv 633 | +--ro sid? uint32 634 +--ro local-block-tlvs 635 | +--ro local-block-tlv* 636 | +--ro range-size? uint24 637 | +--ro sid-sub-tlv 638 | +--ro sid? uint32 639 +--ro srms-preference-tlv 640 +--ro preference? uint8 641 augment /rt:routing/rt:control-plane-protocols 642 /rt:control-plane-protocol/ospf:ospf/ospf:areas 643 /ospf:area/ospf:database/ospf:area-scope-lsa-type 644 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 645 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 646 +--ro extended-prefix-range-tlvs 647 | +--ro extended-prefix-range-tlv* 648 | +--ro prefix-length? uint8 649 | +--ro af? uint8 650 | +--ro range-size? uint16 651 | +--ro extended-prefix-range-flags 652 | | +--ro bits* identityref 653 | +--ro prefix? inet:ip-prefix 654 | +--ro perfix-sid-sub-tlvs 655 | | +--ro prefix-sid-sub-tlv* 656 | | +--ro prefix-sid-flags 657 | | | +--ro bits* identityref 658 | | +--ro mt-id? uint8 659 | | +--ro algorithm? uint8 660 | | +--ro sid? uint32 661 | +--ro unknown-tlvs 662 | +--ro unknown-tlv* 663 | +--ro type? uint16 664 | +--ro length? uint16 665 | +--ro value? yang:hex-string 666 +--ro sr-algorithm-tlv 667 | +--ro sr-algorithm* uint8 668 +--ro sid-range-tlvs 669 | +--ro sid-range-tlv* 670 | +--ro range-size? uint24 671 | +--ro sid-sub-tlv 672 | +--ro sid? uint32 673 +--ro local-block-tlvs 674 | +--ro local-block-tlv* 675 | +--ro range-size? uint24 676 | +--ro sid-sub-tlv 677 | +--ro sid? uint32 678 +--ro srms-preference-tlv 679 +--ro preference? uint8 680 augment /rt:routing/rt:control-plane-protocols 681 /rt:control-plane-protocol/ospf:ospf/ospf:database 682 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 683 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 684 +--ro extended-prefix-range-tlvs 685 | +--ro extended-prefix-range-tlv* 686 | +--ro prefix-length? uint8 687 | +--ro af? uint8 688 | +--ro range-size? uint16 689 | +--ro extended-prefix-range-flags 690 | | +--ro bits* identityref 691 | +--ro prefix? inet:ip-prefix 692 | +--ro perfix-sid-sub-tlvs 693 | | +--ro prefix-sid-sub-tlv* 694 | | +--ro prefix-sid-flags 695 | | | +--ro bits* identityref 696 | | +--ro mt-id? uint8 697 | | +--ro algorithm? uint8 698 | | +--ro sid? uint32 699 | +--ro unknown-tlvs 700 | +--ro unknown-tlv* 701 | +--ro type? uint16 702 | +--ro length? uint16 703 | +--ro value? yang:hex-string 704 +--ro sr-algorithm-tlv 705 | +--ro sr-algorithm* uint8 706 +--ro sid-range-tlvs 707 | +--ro sid-range-tlv* 708 | +--ro range-size? uint24 709 | +--ro sid-sub-tlv 710 | +--ro sid? uint32 711 +--ro local-block-tlvs 712 | +--ro local-block-tlv* 713 | +--ro range-size? uint24 714 | +--ro sid-sub-tlv 715 | +--ro sid? uint32 716 +--ro srms-preference-tlv 717 +--ro preference? uint8 719 3.1. OSPF Segment Routing YANG Module 721 file "ietf-ospf-sr@2021-01-10.yang" 722 module ietf-ospf-sr { 723 yang-version 1.1; 724 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 726 prefix ospf-sr; 728 import ietf-inet-types { 729 prefix "inet"; 730 reference "RFC 6991 - Common YANG Data Types"; 731 } 733 import ietf-yang-types { 734 prefix "yang"; 735 reference "RFC 6991 - Common YANG Data Types"; 736 } 738 import ietf-routing { 739 prefix "rt"; 740 reference "RFC 8349 - A YANG Data Model for Routing 741 Management (NMDA Version)"; 742 } 743 import ietf-segment-routing-common { 744 prefix "sr-cmn"; 745 } 746 import ietf-segment-routing-mpls { 747 prefix "sr-mpls"; 748 } 749 import ietf-ospf { 750 prefix "ospf"; 751 } 753 organization 754 "IETF LSR - Link State Routing Working Group"; 756 contact 757 "WG Web: 758 WG List: 760 Editor: Derek Yeung 761 762 Author: Derek Yeung 763 764 Author: Yingzhen Qu 765 766 Author: Acee Lindem 767 768 Author: Jeffrey Zhang 769 770 Author: Ing-Wher Chen 771 772 Author: Greg Hankins 773 "; 775 description 776 "This YANG module defines the generic configuration 777 and operational state for OSPF Segment Routing, which is 778 common across all of the vendor implementations. It is 779 intended that the module will be extended by vendors to 780 define vendor-specific OSPF Segment Routing configuration 781 and operational parameters and policies. 783 This YANG model conforms to the Network Management 784 Datastore Architecture (NMDA) as described in RFC 8242. 786 Copyright (c) 2021 IETF Trust and the persons identified as 787 authors of the code. All rights reserved. 789 Redistribution and use in source and binary forms, with or 790 without modification, is permitted pursuant to, and subject to 791 the license terms contained in, the Simplified BSD License set 792 forth in Section 4.c of the IETF Trust's Legal Provisions 793 Relating to IETF Documents 794 (https://trustee.ietf.org/license-info). 796 This version of this YANG module is part of RFC XXXX 797 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself 798 for full legal notices. 800 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 801 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 802 'MAY', and 'OPTIONAL' in this document are to be interpreted as 803 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 804 they appear in all capitals, as shown here. 806 This version of this YANG module is part of RFC XXXX; 807 see the RFC itself for full legal notices."; 809 reference "RFC XXXX"; 811 revision 2021-01-10 { 812 description 813 "Initial revision."; 814 reference 815 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 816 } 818 feature ti-lfa { 819 description 820 "Topology-Independent Loop-Free Alternate (TI-LFA) 821 computation using segment routing."; 822 } 824 identity prefix-sid-bit { 825 description 826 "Base identity for prefix sid sub-tlv bits."; 827 } 829 identity np-bit { 830 base prefix-sid-bit; 831 description 832 "No-PHP flag."; 833 } 835 identity m-bit { 836 base prefix-sid-bit; 837 description 838 "Mapping server flag."; 839 } 841 identity e-bit { 842 base prefix-sid-bit; 843 description 844 "Explicit-NULL flag."; 845 } 847 identity v-bit { 848 base prefix-sid-bit; 849 description 850 "Value/Index flag."; 851 } 853 identity l-bit { 854 base prefix-sid-bit; 855 description 856 "Local flag."; 857 } 859 identity extended-prefix-range-bit { 860 description 861 "Base identity for extended prefix range TLV bits."; 862 } 863 identity ia-bit { 864 base extended-prefix-range-bit; 865 description 866 "Inter-Area flag. If set, advertisement is of inter-area type."; 867 } 869 identity adj-sid-bit { 870 description 871 "Base identity for adj sid sub-tlv bits."; 872 } 874 identity b-bit { 875 base adj-sid-bit; 876 description 877 "Backup flag."; 878 } 880 identity vi-bit { 881 base adj-sid-bit; 882 description 883 "Value/Index flag."; 884 } 886 identity lo-bit { 887 base adj-sid-bit; 888 description 889 "Local/Global flag."; 890 } 892 identity g-bit { 893 base adj-sid-bit; 894 description 895 "Group flag."; 896 } 898 identity p-bit { 899 base adj-sid-bit; 900 description 901 "Persistent flag."; 902 } 904 typedef uint24 { 905 type uint32 { 906 range "0 .. 16777215"; 907 } 908 description 909 "24-bit unsigned integer."; 910 } 911 /* Groupings */ 912 grouping sid-sub-tlv { 913 description "SID/Label sub-TLV grouping."; 914 container sid-sub-tlv { 915 description 916 "Used to advertise the SID/Label associated with a 917 prefix or adjacency."; 918 leaf sid { 919 type uint32; 920 description 921 "Segment Identifier (SID) - A 20 bit label or 922 32 bit SID."; 923 } 924 } 925 } 927 grouping prefix-sid-sub-tlvs { 928 description "Prefix Segment ID (SID) sub-TLVs."; 929 container perfix-sid-sub-tlvs{ 930 description "Prefix SID sub-TLV."; 931 list prefix-sid-sub-tlv { 932 description "Prefix SID sub-TLV."; 933 container prefix-sid-flags { 934 leaf-list bits { 935 type identityref { 936 base prefix-sid-bit; 937 } 938 description 939 "Prefix SID Sub-TLV flag bits list."; 940 } 941 description "Segment Identifier (SID) Flags."; 942 } 943 leaf mt-id { 944 type uint8; 945 description "Multi-topology ID."; 946 } 947 leaf algorithm { 948 type uint8; 949 description 950 "The algorithm associated with the prefix-SID."; 951 } 952 leaf sid { 953 type uint32; 954 description "An index or label."; 955 } 956 } 957 } 958 } 959 grouping extended-prefix-range-tlvs { 960 description "Extended prefix range TLV grouping."; 962 container extended-prefix-range-tlvs { 963 description "The list of range of prefixes."; 964 list extended-prefix-range-tlv { //type=2? 965 description "The range of prefixes."; 966 leaf prefix-length { 967 type uint8; 968 description "Length of prefix in bits."; 969 } 970 leaf af { 971 type uint8; 972 description "Address family for the prefix."; 973 } 974 leaf range-size { 975 type uint16; 976 description "The number of prefixes covered by the 977 advertisement."; 978 } 979 container extended-prefix-range-flags { 980 leaf-list bits { 981 type identityref { 982 base extended-prefix-range-bit; 983 } 984 description "Extended prefix range TLV flags list."; 985 } 986 description "Extended Prefix Range TLV flags."; 987 } 988 leaf prefix { 989 type inet:ip-prefix; 990 description "Address prefix."; 991 } 992 uses prefix-sid-sub-tlvs; 993 uses ospf:unknown-tlvs; 994 } 995 } 996 } 998 grouping sr-algorithm-tlv { 999 description "SR algorithm TLV grouping."; 1000 container sr-algorithm-tlv { 1001 description "All SR algorithm TLVs."; 1002 leaf-list sr-algorithm { 1003 type uint8; 1004 description 1005 "The Segment Routing (SR) algorithms that the router is 1006 currently using."; 1008 } 1009 } 1010 } 1012 grouping sid-range-tlvs { 1013 description "SID Range TLV grouping."; 1014 container sid-range-tlvs { 1015 description "List of SID range TLVs."; 1016 list sid-range-tlv { 1017 description "SID range TLV."; 1018 leaf range-size { 1019 type uint24; 1020 description "The SID range."; 1021 } 1022 uses sid-sub-tlv; 1023 } 1024 } 1025 } 1027 grouping local-block-tlvs { 1028 description "The SR local block TLV contains the 1029 range of labels reserved for local SIDs."; 1030 container local-block-tlvs { 1031 description "List of SRLB TLVs."; 1032 list local-block-tlv { 1033 description "SRLB TLV."; 1034 leaf range-size { 1035 type uint24; 1036 description "The SID range."; 1037 } 1038 uses sid-sub-tlv; 1039 } 1040 } 1041 } 1043 grouping srms-preference-tlv { 1044 description "The SRMS preference TLV is used to advertise 1045 a preference associated with the node that acts 1046 as an SR Mapping Server."; 1047 container srms-preference-tlv { 1048 description "SRMS Preference TLV."; 1049 leaf preference { 1050 type uint8 { 1051 range "0 .. 255"; 1052 } 1053 description "SRMS preference TLV, vlaue from 0 to 255."; 1054 } 1055 } 1057 } 1059 /* Configuration */ 1060 augment "/rt:routing/rt:control-plane-protocols" 1061 + "/rt:control-plane-protocol/ospf:ospf" { 1062 when "../rt:type = 'ospf:ospfv2' or " 1063 + "../rt:type = 'ospf:ospfv3'" { 1064 description 1065 "This augments the OSPF routing protocol when used."; 1066 } 1067 description 1068 "This augments the OSPF protocol configuration 1069 with segment routing."; 1070 uses sr-mpls:sr-control-plane; 1071 container protocol-srgb { 1072 if-feature sr-mpls:protocol-srgb; 1073 uses sr-cmn:srgb; 1074 description 1075 "Per-protocol SRGB."; 1076 } 1077 } 1079 augment "/rt:routing/rt:control-plane-protocols/" 1080 + "rt:control-plane-protocol/ospf:ospf/" 1081 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 1082 when "../../../../../rt:type = 'ospf:ospfv2' or " 1083 + "../../../../../rt:type = 'ospf:ospfv3'" { 1084 description 1085 "This augments the OSPF interface configuration 1086 when used."; 1087 } 1088 description 1089 "This augments the OSPF protocol interface 1090 configuration with segment routing."; 1092 uses sr-mpls:igp-interface; 1093 } 1095 augment "/rt:routing/rt:control-plane-protocols/" 1096 + "rt:control-plane-protocol/ospf:ospf/" 1097 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 1098 + "ospf:fast-reroute" { 1099 when "../../../../../../rt:type = 'ospf:ospfv2' or " 1100 + "../../../../../../rt:type = 'ospf:ospfv3'" { 1101 description 1102 "This augments the OSPF routing protocol when used."; 1103 } 1104 description 1105 "This augments the OSPF protocol IP-FRR with TI-LFA."; 1107 container ti-lfa { 1108 if-feature ti-lfa; 1109 leaf enable { 1110 type boolean; 1111 description 1112 "Enables TI-LFA computation."; 1113 } 1114 description 1115 "Topology Independent Loop Free Alternate 1116 (TI-LFA) support."; 1117 } 1118 } 1120 /* Database */ 1121 augment "/rt:routing/" 1122 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1123 + "ospf:ospf/ospf:areas/ospf:area/" 1124 + "ospf:interfaces/ospf:interface/ospf:database/" 1125 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1126 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1127 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1128 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 1129 when "../../../../../../../../../../../../../../" 1130 + "rt:type = 'ospf:ospfv2'" { 1131 description 1132 "This augmentation is only valid for OSPFv2."; 1133 } 1134 description 1135 "SR specific TLVs for OSPFv2 extended prefix TLV 1136 in type 9 opaque LSA."; 1137 uses prefix-sid-sub-tlvs; 1138 } 1140 augment "/rt:routing/" 1141 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1142 + "ospf:ospf/ospf:areas/" 1143 + "ospf:area/ospf:database/" 1144 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1145 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1146 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1147 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 1148 when "../../../../../../../../../../../../" 1149 + "rt:type = 'ospf:ospfv2'" { 1150 description 1151 "This augmentation is only valid for OSPFv2."; 1152 } 1153 description 1154 "SR specific TLVs for OSPFv2 extended prefix TLV 1155 in type 10 opaque LSA."; 1156 uses prefix-sid-sub-tlvs; 1157 } 1159 augment "/rt:routing/" 1160 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1161 + "ospf:ospf/ospf:database/" 1162 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1163 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1164 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1165 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 1166 when "../../../../../../../../../../" 1167 + "rt:type = 'ospf:ospfv2'" { 1168 description 1169 "This augmentation is only valid for OSPFv2."; 1170 } 1171 description 1172 "SR specific TLVs for OSPFv2 extended prefix TLV 1173 in type 11 opaque LSA."; 1174 uses prefix-sid-sub-tlvs; 1175 } 1177 augment "/rt:routing/" 1178 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1179 + "ospf:ospf/ospf:areas/" 1180 + "ospf:area/ospf:database/" 1181 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1182 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1183 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1184 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 1185 when "../../../../../../../../../../../../" 1186 + "rt:type = 'ospf:ospfv2'" { 1187 description 1188 "This augmentation is only valid for OSPFv2."; 1189 } 1190 description 1191 "SR specific TLVs for OSPFv2 extended link TLV 1192 in type 10 opaque LSA."; 1194 container adj-sid-sub-tlvs { 1195 description "Adjacency SID optional sub-TLVs."; 1196 list adj-sid-sub-tlv { 1197 description "List of Adjacency SID sub-TLVs."; 1198 container adj-sid-flags { 1199 leaf-list bits { 1200 type identityref { 1201 base adj-sid-bit; 1202 } 1203 description "Adj sid sub-tlv flags list."; 1204 } 1205 description "Adj-sid sub-tlv flags."; 1206 } 1207 leaf mt-id { 1208 type uint8; 1209 description "Multi-topology ID."; 1210 } 1211 leaf weight { 1212 type uint8; 1213 description "Weight used for load-balancing."; 1214 } 1215 leaf sid { 1216 type uint32; 1217 description "Segment Identifier (SID) index/label."; 1218 } 1219 } 1220 } 1222 container lan-adj-sid-sub-tlvs { 1223 description "LAN Adjacency SID optional sub-TLVs."; 1224 list lan-adj-sid-sub-tlv { 1225 description "List of LAN adjacency SID sub-TLVs."; 1226 container lan-adj-sid-flags { 1227 leaf-list bits { 1228 type identityref { 1229 base adj-sid-bit; 1230 } 1231 description "LAN adj sid sub-tlv flags list."; 1232 } 1233 description "LAN adj-sid sub-tlv flags."; 1234 } 1235 leaf mt-id { 1236 type uint8; 1237 description "Multi-topology ID."; 1238 } 1239 leaf weight { 1240 type uint8; 1241 description "Weight used for load-balancing."; 1242 } 1243 leaf neighbor-router-id { 1244 type yang:dotted-quad; 1245 description "Neighbor router ID."; 1246 } 1247 leaf sid { 1248 type uint32; 1249 description "Segment Identifier (SID) index/label."; 1250 } 1251 } 1252 } 1253 } 1255 augment "/rt:routing/" 1256 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1257 + "ospf:ospf/ospf:areas/ospf:area/" 1258 + "ospf:interfaces/ospf:interface/ospf:database/" 1259 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1260 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1261 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1262 when "../../../../../../../../../../../../" 1263 + "rt:type = 'ospf:ospfv2'" { 1264 description 1265 "This augmentation is only valid for OSPFv2."; 1266 } 1268 description 1269 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 1271 uses extended-prefix-range-tlvs; 1272 uses sr-algorithm-tlv; 1273 uses sid-range-tlvs; 1274 uses local-block-tlvs; 1275 uses srms-preference-tlv; 1276 } 1278 augment "/rt:routing/" 1279 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1280 + "ospf:ospf/ospf:areas/" 1281 + "ospf:area/ospf:database/" 1282 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1283 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1284 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1285 when "../../../../../../../../../../" 1286 + "rt:type = 'ospf:ospfv2'" { 1287 description 1288 "This augmentation is only valid for OSPFv2."; 1289 } 1291 description 1292 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 1294 uses extended-prefix-range-tlvs; 1295 uses sr-algorithm-tlv; 1296 uses sid-range-tlvs; 1297 uses local-block-tlvs; 1298 uses srms-preference-tlv; 1299 } 1301 augment "/rt:routing/" 1302 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1303 + "ospf:ospf/ospf:database/" 1304 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1305 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1306 + "ospf:ospfv2/ospf:body/ospf:opaque" { 1307 when "../../../../../../../../" 1308 + "rt:type = 'ospf:ospfv2'" { 1309 description 1310 "This augmentation is only valid for OSPFv2."; 1311 } 1312 description 1313 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 1315 uses extended-prefix-range-tlvs; 1316 uses sr-algorithm-tlv; 1317 uses sid-range-tlvs; 1318 uses local-block-tlvs; 1319 uses srms-preference-tlv; 1320 } 1321 } 1322 1324 4. Security Considerations 1326 The YANG modules specified in this document define a schema for data 1327 that is designed to be accessed via network management protocols such 1328 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1329 is the secure transport layer, and the mandatory-to-implement secure 1330 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1331 is HTTPS, and the mandatory-to-implement secure transport is TLS 1332 [RFC5246]. 1334 The NETCONF access control model [RFC6536] provides the means to 1335 restrict access for particular NETCONF or RESTCONF users to a pre- 1336 configured subset of all available NETCONF or RESTCONF protocol 1337 operations and content. 1339 There are a number of data nodes defined in the modules that are 1340 writable/creatable/deletable (i.e., config true, which is the 1341 default). These data nodes may be considered sensitive or vulnerable 1342 in some network environments. Write operations (e.g., edit-config) 1343 to these data nodes without proper protection can have a negative 1344 effect on network operations. 1346 Some of the readable data nodes in the modules may be considered 1347 sensitive or vulnerable in some network environments. It is thus 1348 important to control read access (e.g., via get, get-config, or 1349 notification) to these data nodes. 1351 5. Acknowledgements 1353 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 1354 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 1355 Alan Davey for their thorough reviews and helpful comments. 1357 This document was produced using Marshall Rose's xml2rfc tool. 1359 Author affiliation with The MITRE Corporation is provided for 1360 identification purposes only, and is not intended to convey or imply 1361 MITRE's concurrence with, or support for, the positions, opinions or 1362 viewpoints expressed. MITRE has approved this document for Public 1363 Release, Distribution Unlimited, with Public Release Case Number 1364 18-3281. 1366 6. IANA Considerations 1368 This document registers a URI in the IETF XML registry [RFC3688]. 1369 Following the format in [RFC3688], the following registration is 1370 requested to be made: 1372 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr 1373 Registrant Contact: The IESG. 1374 XML: N/A, the requested URI is an XML namespace. 1376 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-msd 1377 Registrant Contact: The IESG. 1378 XML: N/A, the requested URI is an XML namespace. 1380 This document registers a YANG module in the YANG Module Names 1381 registry [RFC6020]. 1383 name: ietf-ospf-sr 1384 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr 1385 prefix: ospf-sr 1386 reference: RFC XXXX 1388 name: ietf-ospf-msd 1389 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-msd 1390 prefix: ospf-msd 1391 reference: RFC XXXX 1393 7. References 1395 7.1. Normative References 1397 [I-D.ietf-ospf-yang] 1398 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1399 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1400 yang-29 (work in progress), October 2019. 1402 [I-D.ietf-spring-sr-yang] 1403 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1404 Tantsura, "YANG Data Model for Segment Routing", draft- 1405 ietf-spring-sr-yang-30 (work in progress), January 2021. 1407 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1408 Requirement Levels", BCP 14, RFC 2119, 1409 DOI 10.17487/RFC2119, March 1997, 1410 . 1412 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1413 DOI 10.17487/RFC2328, April 1998, 1414 . 1416 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1417 DOI 10.17487/RFC3688, January 2004, 1418 . 1420 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 1421 Coltun, R., and F. Baker, "OSPF Version 2 Management 1422 Information Base", RFC 4750, DOI 10.17487/RFC4750, 1423 December 2006, . 1425 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1426 (TLS) Protocol Version 1.2", RFC 5246, 1427 DOI 10.17487/RFC5246, August 2008, 1428 . 1430 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1431 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1432 . 1434 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 1435 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 1436 2009, . 1438 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 1439 R. Aggarwal, "Support of Address Families in OSPFv3", 1440 RFC 5838, DOI 10.17487/RFC5838, April 2010, 1441 . 1443 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1444 the Network Configuration Protocol (NETCONF)", RFC 6020, 1445 DOI 10.17487/RFC6020, October 2010, 1446 . 1448 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1449 and A. Bierman, Ed., "Network Configuration Protocol 1450 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1451 . 1453 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1454 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1455 . 1457 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1458 Protocol (NETCONF) Access Control Model", RFC 6536, 1459 DOI 10.17487/RFC6536, March 2012, 1460 . 1462 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1463 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1464 . 1466 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1467 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1468 . 1470 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1471 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1472 . 1474 [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, 1475 "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, 1476 DOI 10.17487/RFC8476, December 2018, 1477 . 1479 [RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, 1480 H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1481 Extensions for Segment Routing", RFC 8665, 1482 DOI 10.17487/RFC8665, December 2019, 1483 . 1485 7.2. Informative References 1487 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1488 Management", RFC 8022, DOI 10.17487/RFC8022, November 1489 2016, . 1491 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1492 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1493 . 1495 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1496 and R. Wilton, "Network Management Datastore Architecture 1497 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1498 . 1500 Appendix A. Contributors' Addreses 1502 Dean Bogdanovic 1503 Volta Networks, Inc. 1505 EMail: dean@voltanet.io 1507 Kiran Koushik Agrahara Sreenivasa 1508 Cisco Systems 1509 12515 Research Blvd, Bldg 4 1510 Austin, TX 78681 1511 USA 1513 EMail: kkoushik@cisco.com 1515 Authors' Addresses 1517 Derek Yeung 1518 Arrcus 1520 EMail: derek@arrcus.com 1522 Yingzhen Qu 1523 Futurewei 1524 2330 Central Expressway 1525 Santa Clara, CA 95050 1526 USA 1528 EMail: yingzhen.qu@futurewei.com 1530 Jeffrey Zhang 1531 Juniper Networks 1532 10 Technology Park Drive 1533 Westford, MA 01886 1534 USA 1536 EMail: zzhang@juniper.net 1538 Ing-Wher Chen 1539 The MITRE Corporation 1541 EMail: ingwherchen@mitre.org 1542 Acee Lindem 1543 Cisco Systems 1544 301 Midenhall Way 1545 Cary, NC 27513 1547 EMail: acee@cisco.com