idnits 2.17.1 draft-acee-lsr-ospfv3-sr-yang-02.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 (August 2, 2020) is 1335 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'RFC8022' is defined on line 1210, but no explicit reference was found in the text == Unused Reference: 'RFC8349' is defined on line 1218, 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 (-30) 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: February 3, 2021 Futurewei 6 August 2, 2020 8 YANG Data Model for OSPFv3 Segment Routing 9 draft-acee-lsr-ospfv3-sr-yang-02 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 dataplane. 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 February 3, 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 . . . . . . . . . . . . . . . . . . . 24 57 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 58 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 59 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 60 7.1. Normative References . . . . . . . . . . . . . . . . . . 25 61 7.2. Informative References . . . . . . . . . . . . . . . . . 26 62 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 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:database 181 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 182 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 183 /ospfv3-e-lsa:e-intra-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:areas/ospf:area 203 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 204 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 205 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix: 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-inter-area-prefix: 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:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 248 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 249 /ospf:body/ospfv3-e-lsa:e-as-external: 250 +--ro ospfv3-extended-prefix-range-tlvs 251 +--ro extended-prefix-range-tlv* 252 +--ro prefix-length? uint8 253 +--ro af? uint8 254 +--ro range-size? uint16 255 +--ro prefix? inet:ip-prefix 256 +--ro perfix-sid-sub-tlvs 257 | +--ro prefix-sid-sub-tlv* 258 | +--ro ospfv3-prefix-sid-flags 259 | | +--ro bits* identityref 260 | +--ro algorithm? uint8 261 | +--ro sid? uint32 262 +--ro unknown-tlvs 263 +--ro unknown-tlv* 264 +--ro type? uint16 265 +--ro length? uint16 266 +--ro value? yang:hex-string 267 augment /rt:routing/rt:control-plane-protocols 268 /rt:control-plane-protocol/ospf:ospf/ospf:database 269 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 270 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 271 /ospfv3-e-lsa:e-as-external: 272 +--ro ospfv3-extended-prefix-range-tlvs 273 +--ro extended-prefix-range-tlv* 274 +--ro prefix-length? uint8 275 +--ro af? uint8 276 +--ro range-size? uint16 277 +--ro prefix? inet:ip-prefix 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 +--ro unknown-tlvs 285 +--ro unknown-tlv* 286 +--ro type? uint16 287 +--ro length? uint16 288 +--ro value? yang:hex-string 289 augment /rt:routing/rt:control-plane-protocols 290 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 291 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 292 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 293 /ospf:body/ospfv3-e-lsa:e-nssa: 294 +--ro ospfv3-extended-prefix-range-tlvs 295 +--ro extended-prefix-range-tlv* 296 +--ro prefix-length? uint8 297 +--ro af? uint8 298 +--ro range-size? uint16 299 +--ro prefix? inet:ip-prefix 300 +--ro perfix-sid-sub-tlvs 301 | +--ro prefix-sid-sub-tlv* 302 | +--ro ospfv3-prefix-sid-flags 303 | | +--ro bits* identityref 304 | +--ro algorithm? uint8 305 | +--ro sid? uint32 306 +--ro unknown-tlvs 307 +--ro unknown-tlv* 308 +--ro type? uint16 309 +--ro length? uint16 310 +--ro value? yang:hex-string 311 augment /rt:routing/rt:control-plane-protocols 312 /rt:control-plane-protocol/ospf:ospf/ospf:database 313 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 314 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 315 /ospfv3-e-lsa:e-nssa: 316 +--ro ospfv3-extended-prefix-range-tlvs 317 +--ro extended-prefix-range-tlv* 318 +--ro prefix-length? uint8 319 +--ro af? uint8 320 +--ro range-size? uint16 321 +--ro prefix? inet:ip-prefix 322 +--ro perfix-sid-sub-tlvs 323 | +--ro prefix-sid-sub-tlv* 324 | +--ro ospfv3-prefix-sid-flags 325 | | +--ro bits* identityref 326 | +--ro algorithm? uint8 327 | +--ro sid? uint32 328 +--ro unknown-tlvs 329 +--ro unknown-tlv* 330 +--ro type? uint16 331 +--ro length? uint16 332 +--ro value? yang:hex-string 333 augment /rt:routing/rt:control-plane-protocols 334 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 335 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 336 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 337 /ospf:body/ospfv3-e-lsa:e-link/ospfv3-e-lsa:e-link-tlvs 338 /ospfv3-e-lsa:intra-prefix-tlv: 339 +--ro perfix-sid-sub-tlvs 340 +--ro prefix-sid-sub-tlv* 341 +--ro ospfv3-prefix-sid-flags 342 | +--ro bits* identityref 343 +--ro algorithm? uint8 344 +--ro sid? uint32 345 augment /rt:routing/rt:control-plane-protocols 346 /rt:control-plane-protocol/ospf:ospf/ospf:database 347 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 348 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 349 /ospfv3-e-lsa:e-link/ospfv3-e-lsa:e-link-tlvs 350 /ospfv3-e-lsa:intra-prefix-tlv: 351 +--ro perfix-sid-sub-tlvs 352 +--ro prefix-sid-sub-tlv* 353 +--ro ospfv3-prefix-sid-flags 354 | +--ro bits* identityref 355 +--ro algorithm? uint8 356 +--ro sid? uint32 357 augment /rt:routing/rt:control-plane-protocols 358 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 359 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 360 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 361 /ospf:body/ospfv3-e-lsa:e-intra-area-prefix 362 /ospfv3-e-lsa:e-intra-prefix-tlvs 363 /ospfv3-e-lsa:intra-prefix-tlv: 364 +--ro perfix-sid-sub-tlvs 365 +--ro prefix-sid-sub-tlv* 366 +--ro ospfv3-prefix-sid-flags 367 | +--ro bits* identityref 368 +--ro algorithm? uint8 369 +--ro sid? uint32 370 augment /rt:routing/rt:control-plane-protocols 371 /rt:control-plane-protocol/ospf:ospf/ospf:database 372 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 373 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 374 /ospfv3-e-lsa:e-intra-area-prefix 375 /ospfv3-e-lsa:e-intra-prefix-tlvs 376 /ospfv3-e-lsa:intra-prefix-tlv: 377 +--ro perfix-sid-sub-tlvs 378 +--ro prefix-sid-sub-tlv* 379 +--ro ospfv3-prefix-sid-flags 380 | +--ro bits* identityref 381 +--ro algorithm? uint8 382 +--ro sid? uint32 383 augment /rt:routing/rt:control-plane-protocols 384 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 385 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 386 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 387 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix 388 /ospfv3-e-lsa:e-inter-prefix-tlvs 389 /ospfv3-e-lsa:inter-prefix-tlv: 390 +--ro perfix-sid-sub-tlvs 391 +--ro prefix-sid-sub-tlv* 392 +--ro ospfv3-prefix-sid-flags 393 | +--ro bits* identityref 394 +--ro algorithm? uint8 395 +--ro sid? uint32 396 augment /rt:routing/rt:control-plane-protocols 397 /rt:control-plane-protocol/ospf:ospf/ospf:database 398 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 399 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 400 /ospfv3-e-lsa:e-inter-area-prefix 401 /ospfv3-e-lsa:e-inter-prefix-tlvs 402 /ospfv3-e-lsa:inter-prefix-tlv: 403 +--ro perfix-sid-sub-tlvs 404 +--ro prefix-sid-sub-tlv* 405 +--ro ospfv3-prefix-sid-flags 406 | +--ro bits* identityref 407 +--ro algorithm? uint8 408 +--ro sid? uint32 409 augment /rt:routing/rt:control-plane-protocols 410 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 411 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 412 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 413 /ospf:body/ospfv3-e-lsa:e-as-external 414 /ospfv3-e-lsa:e-external-tlvs 415 /ospfv3-e-lsa:external-prefix-tlv: 416 +--ro perfix-sid-sub-tlvs 417 +--ro prefix-sid-sub-tlv* 418 +--ro ospfv3-prefix-sid-flags 419 | +--ro bits* identityref 420 +--ro algorithm? uint8 421 +--ro sid? uint32 422 augment /rt:routing/rt:control-plane-protocols 423 /rt:control-plane-protocol/ospf:ospf/ospf:database 424 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 425 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 426 /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs 427 /ospfv3-e-lsa:external-prefix-tlv: 428 +--ro perfix-sid-sub-tlvs 429 +--ro prefix-sid-sub-tlv* 430 +--ro ospfv3-prefix-sid-flags 431 | +--ro bits* identityref 432 +--ro algorithm? uint8 433 +--ro sid? uint32 435 augment /rt:routing/rt:control-plane-protocols 436 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 437 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 438 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 439 /ospf:body/ospfv3-e-lsa:e-nssa/ospfv3-e-lsa:e-external-tlvs 440 /ospfv3-e-lsa:external-prefix-tlv: 441 +--ro perfix-sid-sub-tlvs 442 +--ro prefix-sid-sub-tlv* 443 +--ro ospfv3-prefix-sid-flags 444 | +--ro bits* identityref 445 +--ro algorithm? uint8 446 +--ro sid? uint32 447 augment /rt:routing/rt:control-plane-protocols 448 /rt:control-plane-protocol/ospf:ospf/ospf:database 449 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 450 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 451 /ospfv3-e-lsa:e-nssa/ospfv3-e-lsa:e-external-tlvs 452 /ospfv3-e-lsa:external-prefix-tlv: 453 +--ro perfix-sid-sub-tlvs 454 +--ro prefix-sid-sub-tlv* 455 +--ro ospfv3-prefix-sid-flags 456 | +--ro bits* identityref 457 +--ro algorithm? uint8 458 +--ro sid? uint32 459 augment /rt:routing/rt:control-plane-protocols 460 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 461 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 462 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 463 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 464 /ospfv3-e-lsa:link-tlv: 465 +--ro adj-sid-sub-tlvs 466 | +--ro adj-sid-sub-tlv* 467 | +--ro adj-sid-flags 468 | | +--ro bits* identityref 469 | +--ro weight? uint8 470 | +--ro sid? uint32 471 +--ro lan-adj-sid-sub-tlvs 472 +--ro lan-adj-sid-sub-tlv* 473 +--ro lan-adj-sid-flags 474 | +--ro bits* identityref 475 +--ro weight? uint8 476 +--ro neighbor-router-id? yang:dotted-quad 477 +--ro sid? uint32 478 augment /rt:routing/rt:control-plane-protocols 479 /rt:control-plane-protocol/ospf:ospf/ospf:database 480 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 481 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 482 /ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 483 /ospfv3-e-lsa:link-tlv: 484 +--ro adj-sid-sub-tlvs 485 | +--ro adj-sid-sub-tlv* 486 | +--ro adj-sid-flags 487 | | +--ro bits* identityref 488 | +--ro weight? uint8 489 | +--ro sid? uint32 490 +--ro lan-adj-sid-sub-tlvs 491 +--ro lan-adj-sid-sub-tlv* 492 +--ro lan-adj-sid-flags 493 | +--ro bits* identityref 494 +--ro weight? uint8 495 +--ro neighbor-router-id? yang:dotted-quad 496 +--ro sid? uint32 498 file "ietf-ospfv3-sr@2020-08-02.yang" 499 module ietf-ospfv3-sr { 500 namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr"; 502 prefix ospfv3-sr; 504 import ietf-inet-types { 505 prefix "inet"; 506 } 508 import ietf-yang-types { 509 prefix "yang"; 510 } 512 import ietf-routing { 513 prefix "rt"; 514 } 516 import ietf-ospf { 517 prefix "ospf"; 518 } 520 import ietf-ospfv3-extended-lsa { 521 prefix "ospfv3-e-lsa"; 522 } 524 import ietf-ospf-sr { 525 prefix "ospf-sr"; 526 } 528 organization 529 "IETF LSR - Link State Routing Working Group"; 531 contact 532 "WG Web: 533 WG List: 535 Author: Yingzhen Qu 536 537 Author: Acee Lindem 538 "; 540 description 541 "This YANG module defines the operational state for OSPFv3 542 Segment Routing, which is common across all of the vendor 543 implementations. It is intended that the module will be 544 extended by vendors to define vendor-specific OSPFv3 545 Segment Routing configuration and operational parameters 546 and policies. 548 This YANG model conforms to the Network Management 549 Datastore Architecture (NMDA) as described in RFC 8242. 551 Copyright (c) 2020 IETF Trust and the persons identified as 552 authors of the code. All rights reserved. 554 Redistribution and use in source and binary forms, with or 555 without modification, is permitted pursuant to, and subject 556 to the license terms contained in, the Simplified BSD License 557 set forth in Section 4.c of the IETF Trust's Legal Provisions 558 Relating to IETF Documents 559 (http://trustee.ietf.org/license-info). 561 This version of this YANG module is part of RFC XXXX; 562 see the RFC itself for full legal notices. 564 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 565 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 566 'MAY', and 'OPTIONAL' in this document are to be interpreted as 567 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 568 they appear in all capitals, as shown here."; 570 reference "RFC XXXX"; 572 revision 2020-08-02 { 573 description 574 "Initial revision."; 575 reference 576 "RFC XXXX: A YANG Data Model for OSPFv3 Segment Routing."; 577 } 578 /* groupings */ 579 grouping ospfv3-prefix-sid-sub-tlvs { 580 description "Prefix Segment ID (SID) sub-TLVs."; 581 container perfix-sid-sub-tlvs{ 582 description "Prefix SID sub-TLV."; 583 list prefix-sid-sub-tlv { 584 description "Prefix SID sub-TLV."; 585 container ospfv3-prefix-sid-flags { 586 leaf-list bits { 587 type identityref { 588 base ospf-sr:prefix-sid-bit; 589 } 590 description 591 "Prefix SID Sub-TLV flag bits list."; 592 } 593 description "Segment Identifier (SID) Flags."; 594 } 595 leaf algorithm { 596 type uint8; 597 description 598 "The algorithm associated with the prefix-SID."; 599 } 600 leaf sid { 601 type uint32; 602 description "An index or label."; 603 } 604 } 605 } 606 } 608 grouping ospfv3-extended-prefix-range-tlvs { 609 description "Extended prefix range TLV grouping."; 611 container ospfv3-extended-prefix-range-tlvs { 612 description "The list of range of prefixes."; 613 list extended-prefix-range-tlv { //type=2? 614 description "The range of prefixes."; 615 leaf prefix-length { 616 type uint8; 617 description "Length of prefix in bits."; 618 } 619 leaf af { 620 type uint8; 621 description "Address family for the prefix."; 622 } 623 leaf range-size { 624 type uint16; 625 description "The number of prefixes covered by the 626 advertisement."; 627 } 628 leaf prefix { 629 type inet:ip-prefix; 630 description "Address prefix."; 631 } 632 uses ospfv3-prefix-sid-sub-tlvs; 633 uses ospf:unknown-tlvs; 634 } 635 } 636 } 638 grouping ospfv3-adj-sid-sub-tlvs { 639 description "Adjacency SID sub TLV grouping."; 640 container adj-sid-sub-tlvs { 641 description "Adjacency SID optional sub-TLVs."; 642 list adj-sid-sub-tlv { 643 description "List of Adjacency SID sub-TLVs."; 644 container adj-sid-flags { 645 leaf-list bits { 646 type identityref { 647 base ospf-sr:adj-sid-bit; 648 } 649 description "Adj sid sub-tlv flags list."; 650 } 651 description "Adj-sid sub-tlv flags."; 652 } 653 leaf weight { 654 type uint8; 655 description "Weight used for load-balancing."; 656 } 657 leaf sid { 658 type uint32; 659 description "Segment Identifier (SID) index/label."; 660 } 661 } 662 } 663 } 665 grouping ospfv3-lan-adj-sid-sub-tlvs { 666 description "LAN adj-sid sub TLV grouping."; 667 container lan-adj-sid-sub-tlvs { 668 description "LAN Adjacency SID optional sub-TLVs."; 669 list lan-adj-sid-sub-tlv { 670 description "List of LAN adjacency SID sub-TLVs."; 671 container lan-adj-sid-flags { 672 leaf-list bits { 673 type identityref { 674 base ospf-sr:adj-sid-bit; 675 } 676 description "LAN adj sid sub-tlv flags list."; 677 } 678 description "LAN adj-sid sub-tlv flags."; 679 } 680 leaf weight { 681 type uint8; 682 description "Weight used for load-balancing."; 683 } 684 leaf neighbor-router-id { 685 type yang:dotted-quad; 686 description "Neighbor router ID."; 687 } 688 leaf sid { 689 type uint32; 690 description "Segment Identifier (SID) index/label."; 691 } 692 } 693 } 694 } 696 /* Database */ 697 /* Segment Routing Capabilities */ 698 augment "/rt:routing/" 699 + "rt:control-plane-protocols/rt:control-plane-protocol/" 700 + "ospf:ospf/ospf:database/" 701 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 702 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 703 + "ospf:ospfv3/ospf:body/ospf:router-information" { 704 when "../../../../../../../../" 705 + "rt:type = 'ospf:ospfv3'" { 706 description 707 "This augmentation is only valid for OSPFv3."; 708 } 709 description 710 "SR specific TLVs for OSPFv3 Router Information 711 opaque LSA."; 712 uses ospf-sr:sr-algorithm-tlv; 713 uses ospf-sr:sid-range-tlvs; 714 uses ospf-sr:local-block-tlvs; 715 uses ospf-sr:srms-preference-tlv; 716 } 718 augment "/rt:routing/" 719 + "rt:control-plane-protocols/rt:control-plane-protocol/" 720 + "ospf:ospf/ospf:areas/" 721 + "ospf:area/ospf:database/" 722 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 723 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 724 + "ospf:ospfv3/ospf:body/ospf:router-information" { 725 when "../../../../../../../../../../" 726 + "rt:type = 'ospf:ospfv3'" { 727 description 728 "This augmentation is only valid for OSPFv3."; 729 } 731 description 732 "SR specific TLVs for OSPFv3 Router Information LSA."; 734 uses ospf-sr:sr-algorithm-tlv; 735 uses ospf-sr:sid-range-tlvs; 736 uses ospf-sr:local-block-tlvs; 737 uses ospf-sr:srms-preference-tlv; 738 } 740 augment "/rt:routing/" 741 + "rt:control-plane-protocols/rt:control-plane-protocol/" 742 + "ospf:ospf/ospf:areas/ospf:area/" 743 + "ospf:interfaces/ospf:interface/ospf:database/" 744 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 745 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 746 + "ospf:ospfv3/ospf:body/ospf:router-information" { 747 when "../../../../../../../../../../../../" 748 + "rt:type = 'ospf:ospfv3'" { 749 description 750 "This augmentation is only valid for OSPFv3."; 751 } 753 description 754 "SR specific TLVs for OSPFv3 Router Information LSA."; 756 uses ospf-sr:sr-algorithm-tlv; 757 uses ospf-sr:sid-range-tlvs; 758 uses ospf-sr:local-block-tlvs; 759 uses ospf-sr:srms-preference-tlv; 760 } 762 /* OSPFv3 Extended Prefix Range TLV */ 763 augment "/rt:routing/" 764 + "rt:control-plane-protocols/rt:control-plane-protocol/" 765 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 766 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 767 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 768 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix" { 769 when "../../../../../../../../../../" 770 + "rt:type = 'ospf:ospfv3'" { 771 description 772 "This augmentation is only valid for OSPFv3 773 E-Router LSAs"; 774 } 775 uses ospfv3-extended-prefix-range-tlvs; 776 description 777 "OSPFv3 Area-Scoped E-Intra-Area-Prefix LSA."; 778 } 780 augment "/rt:routing/" 781 + "rt:control-plane-protocols/rt:control-plane-protocol/" 782 + "ospf:ospf/ospf:database/" 783 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 784 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 785 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix" { 786 when "'ospf:../../../../../../../../../" 787 + "rt:type' = 'ospf:ospfv3'" { 788 description 789 "This augmentation is only valid for OSPFv3."; 790 } 791 uses ospfv3-extended-prefix-range-tlvs; 792 description 793 "OSPFv3 AS-Scoped E-Intra-Area-Prefix LSA."; 794 } 796 augment "/rt:routing/" 797 + "rt:control-plane-protocols/rt:control-plane-protocol/" 798 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 799 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 800 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 801 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { 802 when "../../../../../../../../../../" 803 + "rt:type = 'ospf:ospfv3'" { 804 description 805 "This augmentation is only valid for OSPFv3 806 E-Router LSAs"; 807 } 808 uses ospfv3-extended-prefix-range-tlvs; 809 description 810 "OSPFv3 Area-Scoped E-Inter-Area-Prefix LSA."; 811 } 813 augment "/rt:routing/" 814 + "rt:control-plane-protocols/rt:control-plane-protocol/" 815 + "ospf:ospf/ospf:database/" 816 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 817 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 818 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { 819 when "'ospf:../../../../../../../../../" 820 + "rt:type' = 'ospf:ospfv3'" { 821 description 822 "This augmentation is only valid for OSPFv3."; 823 } 824 uses ospfv3-extended-prefix-range-tlvs; 825 description 826 "OSPFv3 AS-Scoped E-Inter-Area-Prefix LSA."; 827 } 829 augment "/rt:routing/" 830 + "rt:control-plane-protocols/rt:control-plane-protocol/" 831 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 832 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 833 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 834 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { 835 when "../../../../../../../../../../" 836 + "rt:type = 'ospf:ospfv3'" { 837 description 838 "This augmentation is only valid for OSPFv3 839 E-Router LSAs"; 840 } 841 uses ospfv3-extended-prefix-range-tlvs; 842 description 843 "OSPFv3 Area-Scoped E-AS-External LSA."; 844 } 846 augment "/rt:routing/" 847 + "rt:control-plane-protocols/rt:control-plane-protocol/" 848 + "ospf:ospf/ospf:database/" 849 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 850 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 851 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { 852 when "'ospf:../../../../../../../../../" 853 + "rt:type' = 'ospf:ospfv3'" { 854 description 855 "This augmentation is only valid for OSPFv3."; 856 } 857 uses ospfv3-extended-prefix-range-tlvs; 858 description 859 "OSPFv3 AS-Scoped E-AS-External LSA."; 860 } 862 augment "/rt:routing/" 863 + "rt:control-plane-protocols/rt:control-plane-protocol/" 864 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 865 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 866 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 867 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { 868 when "../../../../../../../../../../" 869 + "rt:type = 'ospf:ospfv3'" { 870 description 871 "This augmentation is only valid for OSPFv3 872 E-Router LSAs"; 873 } 874 uses ospfv3-extended-prefix-range-tlvs; 875 description 876 "OSPFv3 Area-Scoped E-NSSA LSA."; 877 } 879 augment "/rt:routing/" 880 + "rt:control-plane-protocols/rt:control-plane-protocol/" 881 + "ospf:ospf/ospf:database/" 882 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 883 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 884 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { 885 when "'ospf:../../../../../../../../../" 886 + "rt:type' = 'ospf:ospfv3'" { 887 description 888 "This augmentation is only valid for OSPFv3."; 889 } 890 uses ospfv3-extended-prefix-range-tlvs; 891 description 892 "OSPFv3 AS-Scoped E-NSSA LSA."; 893 } 895 /* Prefix SID Sub-TLV in Intra-Area Prefix TLV */ 896 augment "/rt:routing/" 897 + "rt:control-plane-protocols/rt:control-plane-protocol/" 898 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 899 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 900 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 901 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-link/" 902 + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 903 when "../../../../../../../../../../../../" 904 + "rt:type = 'ospf:ospfv3'" { 905 description 906 "This augmentation is only valid for OSPFv3 907 E-Router LSAs"; 908 } 909 uses ospfv3-prefix-sid-sub-tlvs; 910 description 911 "OSPFv3 Area-Scoped Intra-Area Prefix TLV."; 912 } 913 augment "/rt:routing/" 914 + "rt:control-plane-protocols/rt:control-plane-protocol/" 915 + "ospf:ospf/ospf:database/" 916 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 917 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 918 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-link/" 919 + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 920 when "'ospf:../../../../../../../../../" 921 + "rt:type' = 'ospf:ospfv3'" { 922 description 923 "This augmentation is only valid for OSPFv3."; 924 } 925 uses ospfv3-prefix-sid-sub-tlvs; 926 description 927 "OSPFv3 AS-Scoped Intra-Area Prefix TLV."; 928 } 930 augment "/rt:routing/" 931 + "rt:control-plane-protocols/rt:control-plane-protocol/" 932 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 933 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 934 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 935 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" 936 + "ospfv3-e-lsa:e-intra-prefix-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 937 when "../../../../../../../../../../../../" 938 + "rt:type = 'ospf:ospfv3'" { 939 description 940 "This augmentation is only valid for OSPFv3 941 E-Router LSAs"; 942 } 943 uses ospfv3-prefix-sid-sub-tlvs; 944 description 945 "OSPFv3 Area-Scoped Intra-Area Prefix TLV."; 946 } 948 augment "/rt:routing/" 949 + "rt:control-plane-protocols/rt:control-plane-protocol/" 950 + "ospf:ospf/ospf:database/" 951 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 952 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 953 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" 954 + "ospfv3-e-lsa:e-intra-prefix-tlvs/ospfv3-e-lsa:intra-prefix-tlv" { 955 when "'ospf:../../../../../../../../../" 956 + "rt:type' = 'ospf:ospfv3'" { 957 description 958 "This augmentation is only valid for OSPFv3."; 959 } 960 uses ospfv3-prefix-sid-sub-tlvs; 961 description 962 "OSPFv3 AS-Scoped Intra-Area Prefix TLV."; 963 } 965 /* Prefix SID Sub-TLV in Inter-Area Prefix TLV */ 966 augment "/rt:routing/" 967 + "rt:control-plane-protocols/rt:control-plane-protocol/" 968 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 969 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 970 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 971 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" 972 + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { 973 when "../../../../../../../../../../../../" 974 + "rt:type = 'ospf:ospfv3'" { 975 description 976 "This augmentation is only valid for OSPFv3 977 E-Router LSAs"; 978 } 979 uses ospfv3-prefix-sid-sub-tlvs; 980 description 981 "OSPFv3 Area-Scoped Inter-Area Prefix TLV."; 982 } 984 augment "/rt:routing/" 985 + "rt:control-plane-protocols/rt:control-plane-protocol/" 986 + "ospf:ospf/ospf:database/" 987 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 988 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 989 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" 990 + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { 991 when "'ospf:../../../../../../../../../" 992 + "rt:type' = 'ospf:ospfv3'" { 993 description 994 "This augmentation is only valid for OSPFv3."; 995 } 996 uses ospfv3-prefix-sid-sub-tlvs; 997 description 998 "OSPFv3 AS-Scoped Inter-Area Prefix TLV."; 999 } 1001 /* Prefix SID Sub-TLV in External Prefix TLV */ 1002 augment "/rt:routing/" 1003 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1004 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1005 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1006 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1007 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 1008 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 1009 when "../../../../../../../../../../../../" 1010 + "rt:type = 'ospf:ospfv3'" { 1011 description 1012 "This augmentation is only valid for OSPFv3 1013 E-Router LSAs"; 1014 } 1015 uses ospfv3-prefix-sid-sub-tlvs; 1016 description 1017 "OSPFv3 Area-Scoped External Prefix TLV."; 1018 } 1020 augment "/rt:routing/" 1021 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1022 + "ospf:ospf/ospf:database/" 1023 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1024 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1025 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 1026 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 1027 when "'ospf:../../../../../../../../../" 1028 + "rt:type' = 'ospf:ospfv3'" { 1029 description 1030 "This augmentation is only valid for OSPFv3."; 1031 } 1032 uses ospfv3-prefix-sid-sub-tlvs; 1033 description 1034 "OSPFv3 AS-Scoped External Prefix TLV."; 1035 } 1037 augment "/rt:routing/" 1038 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1039 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1040 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1041 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1042 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" 1043 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 1044 when "../../../../../../../../../../../../" 1045 + "rt:type = 'ospf:ospfv3'" { 1046 description 1047 "This augmentation is only valid for OSPFv3 1048 E-Router LSAs"; 1049 } 1050 uses ospfv3-prefix-sid-sub-tlvs; 1051 description 1052 "OSPFv3 Area-Scoped External Prefix TLV."; 1053 } 1055 augment "/rt:routing/" 1056 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1057 + "ospf:ospf/ospf:database/" 1058 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1059 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1060 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" 1061 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 1062 when "'ospf:../../../../../../../../../" 1063 + "rt:type' = 'ospf:ospfv3'" { 1064 description 1065 "This augmentation is only valid for OSPFv3."; 1066 } 1067 uses ospfv3-prefix-sid-sub-tlvs; 1068 description 1069 "OSPFv3 AS-Scoped External Prefix TLV."; 1070 } 1072 /* Adj-SID sub-TLV */ 1073 augment "/rt:routing/" 1074 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1075 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1076 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1077 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1078 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" 1079 + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 1080 when "../../../../../../../../../../../../" 1081 + "rt:type = 'ospf:ospfv3'" { 1082 description 1083 "This augmentation is only valid for OSPFv3 1084 E-Router LSAs"; 1085 } 1086 uses ospfv3-adj-sid-sub-tlvs; 1087 uses ospfv3-lan-adj-sid-sub-tlvs; 1088 description 1089 "OSPFv3 Area-Scoped Adj-SID Sub-TLV."; 1090 } 1092 augment "/rt:routing/" 1093 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1094 + "ospf:ospf/ospf:database/" 1095 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1096 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1097 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" 1098 + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 1099 when "'ospf:../../../../../../../../../" 1100 + "rt:type' = 'ospf:ospfv3'" { 1101 description 1102 "This augmentation is only valid for OSPFv3."; 1103 } 1104 uses ospfv3-adj-sid-sub-tlvs; 1105 uses ospfv3-lan-adj-sid-sub-tlvs; 1106 description 1107 "OSPFv3 AS-Scoped Adj-SID Sub-TLV."; 1108 } 1110 } 1111 1113 4. Security Considerations 1115 The YANG modules specified in this document define a schema for data 1116 that is designed to be accessed via network management protocols such 1117 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1118 is the secure transport layer, and the mandatory-to-implement secure 1119 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1120 is HTTPS, and the mandatory-to-implement secure transport is TLS 1121 [RFC5246]. 1123 The NETCONF access control model [RFC6536] provides the means to 1124 restrict access for particular NETCONF or RESTCONF users to a pre- 1125 configured subset of all available NETCONF or RESTCONF protocol 1126 operations and content. 1128 There are a number of data nodes defined in the modules that are 1129 writable/creatable/deletable (i.e., config true, which is the 1130 default). These data nodes may be considered sensitive or vulnerable 1131 in some network environments. Write operations (e.g., edit-config) 1132 to these data nodes without proper protection can have a negative 1133 effect on network operations. 1135 Some of the readable data nodes in the modules may be considered 1136 sensitive or vulnerable in some network environments. It is thus 1137 important to control read access (e.g., via get, get-config, or 1138 notification) to these data nodes. The exposure of the Link State 1139 Database (LSDB) will expose the detailed topology of the network. 1140 This may be undesirable since both due to the fact that exposure may 1141 facilitate other attacks. Additionally, network operators may 1142 consider their topologies to be sensitive confidential data. 1144 5. IANA Considerations 1146 This document registers URIs in the IETF XML registry [RFC3688]. 1147 Following the format in [RFC3688], the following registrations is 1148 requested to be made: 1150 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr 1151 Registrant Contact: The IESG. 1152 XML: N/A, the requested URI is an XML namespace. 1154 This document registers the YANG modules in the YANG Module Names 1155 registry [RFC6020]. 1157 name: ietf-ospfv3-sr 1158 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-sr 1159 prefix: ospfv3-sr 1160 reference: RFC XXXX 1162 6. Acknowledgements 1164 This document was produced using Marshall Rose's xml2rfc tool. 1166 The YANG model was developed using the suite of YANG tools written 1167 and maintained by numerous authors. 1169 7. References 1171 7.1. Normative References 1173 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1174 Requirement Levels", BCP 14, RFC 2119, 1175 DOI 10.17487/RFC2119, March 1997, 1176 . 1178 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1179 DOI 10.17487/RFC3688, January 2004, 1180 . 1182 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1183 (TLS) Protocol Version 1.2", RFC 5246, 1184 DOI 10.17487/RFC5246, August 2008, 1185 . 1187 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1188 the Network Configuration Protocol (NETCONF)", RFC 6020, 1189 DOI 10.17487/RFC6020, October 2010, 1190 . 1192 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1193 and A. Bierman, Ed., "Network Configuration Protocol 1194 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1195 . 1197 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1198 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1199 . 1201 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1202 Protocol (NETCONF) Access Control Model", RFC 6536, 1203 DOI 10.17487/RFC6536, March 2012, 1204 . 1206 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1207 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1208 . 1210 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1211 Management", RFC 8022, DOI 10.17487/RFC8022, November 1212 2016, . 1214 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1215 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1216 . 1218 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1219 Routing Management (NMDA Version)", RFC 8349, 1220 DOI 10.17487/RFC8349, March 2018, 1221 . 1223 [RFC8666] Psenak, P., Ed. and S. Previdi, Ed., "OSPFv3 Extensions 1224 for Segment Routing", RFC 8666, DOI 10.17487/RFC8666, 1225 December 2019, . 1227 7.2. Informative References 1229 [I-D.ietf-ospf-sr-yang] 1230 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1231 "YANG Data Model for OSPF SR (Segment Routing) Protocol", 1232 draft-ietf-ospf-sr-yang-12 (work in progress), July 2020. 1234 [I-D.ietf-ospf-yang] 1235 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1236 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1237 yang-29 (work in progress), October 2019. 1239 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1240 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1241 . 1243 Authors' Addresses 1244 Acee Lindem 1245 Cisco Systems 1246 301 Midenhall Way 1247 Cary, NC 27513 1249 EMail: acee@cisco.com 1251 Yingzhen Qu 1252 Futurewei 1253 2330 Central Expressway 1254 Santa Clara, CA 95050 1255 USA 1257 EMail: yingzhen.qu@futurewei.com