idnits 2.17.00 (12 Aug 2021) /tmp/idnits62925/draft-ietf-lsr-ospf-yang-augmentation-v1-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 7 instances of too long lines in the document, the longest one being 3 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 143 has weird spacing: '...face-id ine...' == 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 date (9 January 2022) is 125 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) == Outdated reference: A later version (-19) exists of draft-ietf-lsr-flex-algo-18 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 3 errors (**), 0 flaws (~~), 3 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: Standards Track Y. Qu 5 Expires: 13 July 2022 Futurewei 6 9 January 2022 8 OSPF YANG Model Augmentations for Additional Features - Version 1 9 draft-ietf-lsr-ospf-yang-augmentation-v1-07 11 Abstract 13 This document defines YANG data modules augmenting the IETF OSPF YANG 14 model to provide support for Traffic Engineering Extensions to OSPF 15 Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in 16 RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379, OSPF 17 Link-Local Signaling (LLS) Extensions for Local Interface ID 18 Advertisement as defined in RFC 8510, OSPF Application-Specific Link 19 Attributes as defined in RFC 8920, and OSPF Flexible Algorithm. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at https://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on 13 July 2022. 38 Copyright Notice 40 Copyright (c) 2022 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 45 license-info) in effect on the date of publication of this document. 46 Please review these documents carefully, as they describe your rights 47 and restrictions with respect to this document. Code Components 48 extracted from this document must include Revised BSD License text as 49 described in Section 4.e of the Trust Legal Provisions and are 50 provided without warranty as described in the Revised BSD License. 52 Table of Contents 54 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 56 2. YANG Module for Traffic Engineering Extesions to OSPF Version 57 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 9 59 4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 60 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 61 Advertisement . . . . . . . . . . . . . . . . . . . . . . 18 62 6. YANG Module for OSPF Application-Specific Link Attributes . . 20 63 7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 64 8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 65 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 66 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 67 11. Normative References . . . . . . . . . . . . . . . . . . . . 48 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 70 1. Overview 72 YANG [RFC6020] [RFC7950] is a data definition language used to define 73 the contents of a conceptual data store that allows networked devices 74 to be managed using NETCONF [RFC6241]. YANG is proving relevant 75 beyond its initial confines, as bindings to other interfaces (e.g., 76 ReST) and encodings other than XML (e.g., JSON) are being defined. 77 Furthermore, YANG data models can be used as the basis for 78 implementation of other interfaces, such as CLI and programmatic 79 APIs. 81 This document defines YANG data modules augmenting the IETF OSPF YANG 82 model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to 83 provide support for configuration and operational state for the 84 following OSPF features: 86 RFC5329: Traffic Engineering Extensions to OSPF Version 3 [RFC5329]. 88 RFC8042: OSPF Two-Part Metric [RFC8042]. 90 RFC8379: OSPF Graceful Link Shutdown [RFC8379]. 92 RFC8510: OSPF Link-Local Signaling (LLS) Extensions for Local 93 Interface ID Advertisement [RFC8510]. 95 RFC8920: OSPF Application-Specific Link Attributes [RFC8920]. 97 RFCxxxx: IGP Flexible Algorithm [I-D.ietf-lsr-flex-algo]. 99 The augmentations defined in this document requires support for the 100 OSPF base model[I-D.ietf-ospf-yang] which defines basic OSPF 101 configuration and state. The OSPF YANG model augments the ietf- 102 routing YANG model defined in [RFC8349]. 104 1.1. Requirements Language 106 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 107 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 108 document are to be interpreted as described in [RFC2119]. 110 2. YANG Module for Traffic Engineering Extesions to OSPF Version 3 112 This document defines a YANG module for Traffic Engineering 113 Extensions to OSPF Version 3 as defined in [RFC5329]. It is an 114 augmentation of the OSPF base model. 116 module: ietf-ospfv3-te 117 augment /rt:routing/rt:control-plane-protocols 118 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 119 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 120 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 121 /ospf:body: 122 +--ro ospfv3-intra-area-te 123 +--ro router-address-tlv 124 | +--ro router-address? inet:ipv6-address 125 +--ro link-tlv 126 +--ro link-type ospf:router-link-type 127 +--ro local-if-ipv6-addrs 128 | +--ro local-if-ipv6-addr* inet:ipv6-address 129 +--ro remote-if-ipv6-addrs 130 | +--ro remote-if-ipv6-addr* inet:ipv6-address 131 +--ro te-metric? uint32 132 +--ro max-bandwidth? 133 | rt-types:bandwidth-ieee-float32 134 +--ro max-reservable-bandwidth? 135 | rt-types:bandwidth-ieee-float32 136 +--ro unreserved-bandwidths 137 | +--ro unreserved-bandwidth* 138 | +--ro priority? uint8 139 | +--ro unreserved-bandwidth? 140 | rt-types:bandwidth-ieee-float32 141 +--ro admin-group? uint32 142 +--ro neighbor-id 143 | +--ro nbr-interface-id inet:ipv4-address 144 | +--ro nbr-router-id yang:dotted-quad 145 +--ro unknown-tlvs 146 +--ro unknown-tlv* 147 +--ro type? uint16 148 +--ro length? uint16 149 +--ro value? yang:hex-string 151 file "ietf-ospfv3-te@2021-07-11.yang" 152 module ietf-ospfv3-te { 153 yang-version 1.1; 154 namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-te"; 156 prefix ospfv3-te; 158 import ietf-inet-types { 159 prefix "inet"; 160 reference "RFC 6991: Common YANG Data Types"; 161 } 163 import ietf-yang-types { 164 prefix "yang"; 165 reference "RFC 6991: Common YANG Data Types"; 166 } 168 import ietf-routing-types { 169 prefix "rt-types"; 170 reference "RFC 8294: Common YANG Data Types for the 171 Routing Area"; 172 } 174 import ietf-routing { 175 prefix "rt"; 176 reference "RFC 8349: A YANG Data Model for Routing 177 Management (NMDA Version)"; 178 } 180 import ietf-ospf { 181 prefix "ospf"; 182 } 184 organization 185 "IETF LSR - Link State Routing Working Group"; 187 contact 188 "WG Web: 189 WG List: 191 Author: Yingzhen Qu 192 193 Author: Acee Lindem 194 "; 196 description 197 "This YANG module defines the configuration and operational 198 state for OSPFv3 extensions to support intra-area Traffic 199 Engineering (TE) as defined in RFC 5329. 201 This YANG model conforms to the Network Management 202 Datastore Architecture (NMDA) as described in RFC 8342. 204 Copyright (c) 2021 IETF Trust and the persons identified as 205 authors of the code. All rights reserved. 207 Redistribution and use in source and binary forms, with or 208 without modification, is permitted pursuant to, and subject 209 to the license terms contained in, the Simplified BSD License 210 set forth in Section 4.c of the IETF Trust's Legal Provisions 211 Relating to IETF Documents 212 (http://trustee.ietf.org/license-info). 214 This version of this YANG module is part of RFC XXXX; 215 see the RFC itself for full legal notices."; 217 reference "RFC XXXX"; 219 revision 2021-07-11 { 220 description 221 "Initial version"; 222 reference 223 "RFC XXXX: A YANG Data Model for OSPFv3 TE."; 224 } 226 identity ospfv3-intra-area-te-lsa { 227 base ospf:ospfv3-lsa-type; 228 description 229 "OSPFv3 intra-area TE LSA."; 230 } 232 grouping ospfv3-intra-area-te { 233 description "Grouping for OSPFv3 intra-area-te-lsa."; 234 container ospfv3-intra-area-te { 235 container router-address-tlv { 236 description "The router IPv6 address tlv advertises a 237 reachable IPv6 address."; 238 leaf router-address { 239 type inet:ipv6-address; 240 description 241 "Router IPv6 address."; 242 } 243 } 245 container link-tlv { 246 description "Describes a single link, and it is constructed 247 of a set of Sub-TLVs."; 248 leaf link-type { 249 type ospf:router-link-type; 250 mandatory true; 251 description "Link type."; 252 } 254 container local-if-ipv6-addrs { 255 description "All local interface IPv6 addresses."; 256 leaf-list local-if-ipv6-addr { 257 type inet:ipv6-address; 258 description 259 "List of local interface IPv6 addresses."; 261 } 262 } 264 container remote-if-ipv6-addrs { 265 description "All remote interface IPv6 addresses."; 266 leaf-list remote-if-ipv6-addr { 267 type inet:ipv6-address; 268 description 269 "List of remote interface IPv6 addresses."; 270 } 271 } 273 leaf te-metric { 274 type uint32; 275 description "TE metric."; 276 } 278 leaf max-bandwidth { 279 type rt-types:bandwidth-ieee-float32; 280 description "Maximum bandwidth."; 281 } 283 leaf max-reservable-bandwidth { 284 type rt-types:bandwidth-ieee-float32; 285 description "Maximum reservable bandwidth."; 286 } 288 container unreserved-bandwidths { 289 description "All unreserved bandwidths."; 290 list unreserved-bandwidth { 291 leaf priority { 292 type uint8 { 293 range "0 .. 7"; 294 } 295 description "Priority from 0 to 7."; 296 } 297 leaf unreserved-bandwidth { 298 type rt-types:bandwidth-ieee-float32; 299 description "Unreserved bandwidth."; 300 } 301 description 302 "List of unreserved bandwidths for different 303 priorities."; 304 } 305 } 307 leaf admin-group { 308 type uint32; 309 description 310 "Administrative group/Resource Class/Color."; 311 } 313 container neighbor-id { 314 description "Neighbor link identification."; 315 leaf nbr-interface-id { 316 type inet:ipv4-address; 317 mandatory true; 318 description "The neighbor's interface ID."; 319 } 320 leaf nbr-router-id { 321 type yang:dotted-quad; 322 mandatory true; 323 description "The neighbor's router ID."; 324 } 325 } 327 uses ospf:unknown-tlvs; 328 } 330 description "OSPFv3 Intra-Area-TE-LSA."; 331 reference "RFC 5329: Traffic Engineering Extensions to OSPF 332 : Version 3."; 333 } 334 } 336 augment "/rt:routing/" 337 + "rt:control-plane-protocols/rt:control-plane-protocol/" 338 + "ospf:ospf/ospf:areas/" 339 + "ospf:area/ospf:database/" 340 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 341 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 342 + "ospf:ospfv3/ospf:body" { 343 when "../../../../../../../../../" 344 + "rt:type = 'ospf:ospfv3'" { 345 description 346 "This augmentation is only valid for OSPFv3."; 347 } 348 description 349 "OSPFv3 Intra-Area-TE-LSA."; 351 uses ospfv3-intra-area-te; 352 } 353 } 354 356 3. YANG Module for OSPF Two-Part Metric 358 This document defines a YANG module for OSPF Two-Part Metric feature 359 as defined in [RFC8042]. It is an augmentation of the OSPF base 360 model. 362 module: ietf-ospf-two-part-metric 363 augment /rt:routing/rt:control-plane-protocols 364 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 365 /ospf:interfaces/ospf:interface: 366 +--rw two-part-metric 367 +--rw enable? boolean 368 +--rw int-input-cost? ospf:ospf-link-metric 369 augment /rt:routing/rt:control-plane-protocols 370 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 371 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 372 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 373 /ospf:body/ospf:opaque/ospf:extended-link-opaque 374 /ospf:extended-link-tlv: 375 +--ro network-to-router-metric-sub-tlvs 376 +--ro net-to-rtr-sub-tlv* 377 +--ro mt-id? uint8 378 +--ro mt-metric? uint16 379 augment /rt:routing/rt:control-plane-protocols 380 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 381 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 382 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 383 /ospf:body/ospf:opaque/ospf:te-opaque/ospf:link-tlv: 384 +--ro network-to-router-te-metric? uint32 385 augment /rt:routing/rt:control-plane-protocols 386 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 387 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 388 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 389 /ospf:body/ospfv3-te:ospfv3-intra-area-te/ospfv3-te:link-tlv: 390 +--ro network-to-router-te-metric? uint32 392 file "ietf-ospf-two-part-metric@2021-07-11.yang" 393 module ietf-ospf-two-part-metric { 394 yang-version 1.1; 395 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-two-part-metric"; 397 prefix ospf-two-metric; 399 import ietf-routing { 400 prefix "rt"; 401 reference "RFC 8349: A YANG Data Model for Routing 402 Management (NMDA Version)"; 403 } 404 import ietf-ospf { 405 prefix "ospf"; 406 } 408 import ietf-ospfv3-te { 409 prefix "ospfv3-te"; 410 } 412 organization 413 "IETF LSR - Link State Routing Working Group"; 415 contact 416 "WG Web: 417 WG List: 419 Author: Yingzhen Qu 420 421 Author: Acee Lindem 422 "; 424 description 425 "This YANG module defines the configuration and operational 426 state for OSPF Two-Part Metric feature as defined in RFC 8042. 428 This YANG model conforms to the Network Management 429 Datastore Architecture (NMDA) as described in RFC 8342. 431 Copyright (c) 2021 IETF Trust and the persons identified as 432 authors of the code. All rights reserved. 434 Redistribution and use in source and binary forms, with or 435 without modification, is permitted pursuant to, and subject 436 to the license terms contained in, the Simplified BSD License 437 set forth in Section 4.c of the IETF Trust's Legal Provisions 438 Relating to IETF Documents 439 (http://trustee.ietf.org/license-info). 441 This version of this YANG module is part of RFC XXXX; 442 see the RFC itself for full legal notices."; 444 reference "RFC XXXX"; 446 revision 2021-07-11 { 447 description 448 "Initial version"; 449 reference 450 "RFC XXXX: A YANG Data Model for OSPF."; 451 } 452 identity two-part-metric { 453 base ospf:informational-capability; 454 description 455 "When set, the router is capable of supporting OSPF 456 two-part metrics."; 457 reference 458 "RFC 8042: OSPF Two-Part Metric"; 459 } 461 /* RFC 8042 */ 462 augment "/rt:routing/rt:control-plane-protocols/" 463 + "rt:control-plane-protocol/ospf:ospf/" 464 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 465 when "../../../../../rt:type = 'ospf:ospfv2' or " 466 + "../../../../../rt:type = 'ospf:ospfv3'" { 467 description 468 "This augments the OSPF interface configuration 469 when used."; 470 } 471 description 472 "This augments the OSPF protocol interface 473 configuration with two-part metric."; 475 container two-part-metric { 476 when "enum-value(../ospf:interface-type) = 2" { 477 description 478 "Two-part metric when link type is multi-access."; 479 } 480 leaf enable { 481 type boolean; 482 default false; 483 description 484 "Enable two-part metric."; 485 } 486 leaf int-input-cost { 487 type ospf:ospf-link-metric; 488 description 489 "Link state metric from the two-part-metric network 490 to this router."; 491 } 492 description 493 "Interface two part metric configuration."; 494 } 495 } 497 augment "/rt:routing/" 498 + "rt:control-plane-protocols/rt:control-plane-protocol/" 499 + "ospf:ospf/ospf:areas/" 500 + "ospf:area/ospf:database/" 501 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 502 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 503 + "ospf:ospfv2/ospf:body/ospf:opaque/" 504 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 505 when "../../../../../../../../../../../../" 506 + "rt:type = 'ospf:ospfv2'" { 507 description 508 "This augmentation is only valid for OSPFv2."; 509 } 510 description 511 "Network-to-Router metric sub tlv for OSPFv2 extended link TLV 512 in type 10 opaque LSA."; 514 container network-to-router-metric-sub-tlvs { 515 description "Network-to-Router metric sub TLV."; 516 list net-to-rtr-sub-tlv { 517 leaf mt-id { 518 type uint8; 519 description "Multi-Topology Identifier (MT-ID)."; 520 } 521 leaf mt-metric { 522 type uint16; 523 description "Network-to-router metric."; 524 } 525 description 526 "Network-to-Router metric sub-TLV."; 527 } 528 } 529 } 531 augment "/rt:routing/" 532 + "rt:control-plane-protocols/rt:control-plane-protocol/" 533 + "ospf:ospf/ospf:areas/" 534 + "ospf:area/ospf:database/" 535 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 536 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 537 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:te-opaque/" 538 + "ospf:link-tlv" { 539 when "../../../../../../../../../../../../" 540 + "rt:type = 'ospf:ospfv2'" { 541 description 542 "This augmentation is only valid for OSPFv2."; 543 } 544 description 545 "Traffic Engineering Network-to-Router Sub-TLV."; 546 leaf network-to-router-te-metric { 547 type uint32; 548 description "Network to Router TE metric."; 549 reference 550 "RFC 8042 - OSPF Two-Part Metric"; 551 } 552 } 554 augment "/rt:routing/" 555 + "rt:control-plane-protocols/rt:control-plane-protocol/" 556 + "ospf:ospf/ospf:areas/" 557 + "ospf:area/ospf:database/" 558 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 559 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 560 + "ospf:ospfv3/ospf:body/ospfv3-te:ospfv3-intra-area-te/" 561 + "ospfv3-te:link-tlv" { 562 when "../../../../../../../../../../../" 563 + "rt:type = 'ospf:ospfv3'" { 564 description 565 "This augmentation is only valid for OSPFv3."; 566 } 567 description 568 "Traffic Engineering Network-to-Router Sub-TLV."; 569 leaf network-to-router-te-metric { 570 type uint32; 571 description "Network to Router TE metric."; 572 reference 573 "RFC 8042 - OSPF Two-Part Metric"; 574 } 575 } 576 } 577 579 4. YANG Module for OSPF Graceful Link Shutdown 581 This document defines a YANG module for OSPF Graceful Link Shutdown 582 feature as defined in [RFC8379]. It is an augmentation of the OSPF 583 base model. 585 module: ietf-ospf-graceful-link-shutdown 586 augment /rt:routing/rt:control-plane-protocols 587 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 588 /ospf:interfaces/ospf:interface: 589 +--rw graceful-link-shutdown 590 +--rw enable? boolean 591 augment /rt:routing/rt:control-plane-protocols 592 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 593 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 594 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 595 /ospf:body/ospf:opaque/ospf:extended-link-opaque 596 /ospf:extended-link-tlv: 597 +--ro graceful-link-shutdown-sub-tlv! 598 +--ro remote-address-sub-tlv 599 | +--ro remote-address? inet:ipv4-address 600 +--ro local-remote-int-id-sub-tlv 601 +--ro local-int-id? uint32 602 +--ro remote-int-id? uint32 603 augment /rt:routing/rt:control-plane-protocols 604 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 605 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 606 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 607 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 608 /ospfv3-e-lsa:link-tlv: 609 +--ro graceful-link-shutdown-sub-tlv! 611 file "ietf-ospf-graceful-link-shutdown@2021-07-11.yang" 612 module ietf-ospf-graceful-link-shutdown { 613 yang-version 1.1; 614 namespace 615 "urn:ietf:params:xml:ns:yang:ietf-ospf-graceful-link-shutdown"; 617 prefix ospf-grace-linkdown; 619 import ietf-inet-types { 620 prefix "inet"; 621 reference "RFC 6991: Common YANG Data Types"; 622 } 624 import ietf-routing { 625 prefix "rt"; 626 reference "RFC 8349: A YANG Data Model for Routing 627 Management (NMDA Version)"; 628 } 630 import ietf-ospf { 631 prefix "ospf"; 633 } 635 import ietf-ospfv3-extended-lsa { 636 prefix "ospfv3-e-lsa"; 637 } 639 organization 640 "IETF LSR - Link State Routing Working Group"; 642 contact 643 "WG Web: 644 WG List: 646 Author: Yingzhen Qu 647 648 Author: Acee Lindem 649 "; 651 description 652 "This YANG module defines the configuration and operational 653 state for OSPF Graceful Link Shutdown feature as defined 654 in RFC 8379. 656 This YANG model conforms to the Network Management 657 Datastore Architecture (NDMA) as described in RFC 8342. 659 Copyright (c) 2021 IETF Trust and the persons identified as 660 authors of the code. All rights reserved. 662 Redistribution and use in source and binary forms, with or 663 without modification, is permitted pursuant to, and subject 664 to the license terms contained in, the Simplified BSD License 665 set forth in Section 4.c of the IETF Trust's Legal Provisions 666 Relating to IETF Documents 667 (http://trustee.ietf.org/license-info). 669 This version of this YANG module is part of RFC XXXX; 670 see the RFC itself for full legal notices."; 672 reference "RFC XXXX"; 674 revision 2021-07-11 { 675 description 676 "Initial version"; 677 reference 678 "RFC XXXX: A YANG Data Model for OSPF Graceful Link Shutdown."; 679 } 680 /* RFC 8379 */ 681 augment "/rt:routing/rt:control-plane-protocols/" 682 + "rt:control-plane-protocol/ospf:ospf/" 683 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 684 when "../../../../../rt:type = 'ospf:ospfv2' or " 685 + "../../../../../rt:type = 'ospf:ospfv3'" { 686 description 687 "This augments the OSPF interface configuration 688 when used."; 689 } 690 description 691 "This augments the OSPF protocol interface 692 configuration with segment routing."; 694 container graceful-link-shutdown { 695 leaf enable { 696 type boolean; 697 default false; 698 description 699 "Enable OSPF graceful link shutdown."; 700 } 701 description 702 "OSPF Graceful Link Shutdown."; 703 } 704 } 706 /* Database */ 707 augment "/rt:routing/" 708 + "rt:control-plane-protocols/rt:control-plane-protocol/" 709 + "ospf:ospf/ospf:areas/" 710 + "ospf:area/ospf:database/" 711 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 712 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 713 + "ospf:ospfv2/ospf:body/ospf:opaque/" 714 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 715 when "../../../../../../../../../../../../" 716 + "rt:type = 'ospf:ospfv2'" { 717 description 718 "This augmentation is only valid for OSPFv2."; 719 } 720 description 721 "OSPF graceful link shutdown for OSPFv2 extended link TLV 722 in type 10 opaque LSA."; 724 container graceful-link-shutdown-sub-tlv { 725 presence "Enable graceful link shutdown"; 726 description 727 "Graceful-Link-Shutdown sub-TLV identifies the link as being 728 gracefully shutdown."; 729 } 731 container remote-address-sub-tlv { 732 leaf remote-address { 733 type inet:ipv4-address; 734 description 735 "Remote IPv4 address used to identify a particular link 736 on the remote side."; 737 } 738 description 739 "This sub-TLV specifies the IPv4 address of the remote 740 endpoint on the link."; 741 } 743 container local-remote-int-id-sub-tlv { 744 leaf local-int-id { 745 type uint32; 746 description "Local interface ID."; 747 } 748 leaf remote-int-id { 749 type uint32; 750 description "Remote interface ID."; 751 } 752 description 753 "This sub-TLV specifies Local and Remote Interface IDs."; 754 } 755 } 757 augment "/rt:routing/" 758 + "rt:control-plane-protocols/rt:control-plane-protocol/" 759 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 760 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 761 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 762 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 763 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 764 when "'ospf:../../../../../../../../../" 765 + "rt:type' = 'ospf:ospfv3'" { 766 description 767 "This augmentation is only valid for OSPFv3 768 E-Router LSAs"; 769 } 770 container graceful-link-shutdown-sub-tlv { 771 presence "Enable graceful link shutdown"; 772 description 773 "Graceful-Link-Shutdown sub-TLV identifies the link as being 774 gracefully shutdown."; 776 } 777 description 778 "Augment OSPFv3 Area scope router-link TLV."; 779 } 780 } 781 783 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 784 Advertisement 786 This document defines a YANG module for OSPF Link-Local Signaling 787 (LLS) Extensions for Local Interface ID Advertisement feature as 788 defined in [RFC8510]. It is an augmentation of the OSPF base model. 790 module: ietf-ospf-lls-local-id 791 augment /rt:routing/rt:control-plane-protocols 792 /rt:control-plane-protocol/ospf:ospf: 793 +--rw lls-int-id 794 +--rw enable? boolean 796 file "ietf-ospf-lls-local-id@2021-07-11.yang" 797 module ietf-ospf-lls-local-id { 798 yang-version 1.1; 799 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-lls-local-id"; 801 prefix ospf-lls-localid; 803 import ietf-routing { 804 prefix "rt"; 805 reference "RFC 8349: A YANG Data Model for Routing 806 Management (NMDA Version)"; 807 } 809 import ietf-ospf { 810 prefix "ospf"; 811 } 813 organization 814 "IETF LSR - Link State Routing Working Group"; 816 contact 817 "WG Web: 818 WG List: 820 Author: Yingzhen Qu 821 822 Author: Acee Lindem 823 "; 825 description 826 "This YANG module defines the configuration and operational 827 state for OSPF Link-Local Signaling (LLS) Extensions for Local 828 Interface ID Advertisement feature as defined in RFC 8510. 830 This YANG model conforms to the Network Management 831 Datastore Architecture (NMDA) as described in RFC 8342. 833 Copyright (c) 2021 IETF Trust and the persons identified as 834 authors of the code. All rights reserved. 836 Redistribution and use in source and binary forms, with or 837 without modification, is permitted pursuant to, and subject 838 to the license terms contained in, the Simplified BSD License 839 set forth in Section 4.c of the IETF Trust's Legal Provisions 840 Relating to IETF Documents 841 (http://trustee.ietf.org/license-info). 843 This version of this YANG module is part of RFC XXXX; 844 see the RFC itself for full legal notices."; 846 reference "RFC XXXX"; 848 revision 2021-07-11 { 849 description 850 "Initial version"; 851 reference 852 "RFC XXXX: A YANG Data Model for OSPF."; 853 } 855 augment "/rt:routing/rt:control-plane-protocols" 856 + "/rt:control-plane-protocol/ospf:ospf" { 857 when "../rt:type = 'ospf:ospfv2' or " 858 + "../rt:type = 'ospf:ospfv3'" { 859 description 860 "This augments the OSPF routing protocol when used."; 861 } 862 description 863 "This augments the OSPF protocol configuration 864 to support LLS extensions for local interface ID 865 advertisement."; 866 container lls-int-id { 867 leaf enable { 868 type boolean; 869 default false; 870 description 871 "Enable LLS to advertise local interface ID."; 872 } 873 description 874 "OSPF LLS Extensions for interface ID."; 875 reference "RFC 8510 - OSPF Link-Local Signaling (LLS) 876 Extensions for Local Interface ID Advertisement"; 877 } 878 } 879 } 880 882 6. YANG Module for OSPF Application-Specific Link Attributes 884 This document defines a YANG module for OSPF Application-Specific 885 Link Attributes feature as defined in [RFC8920]. It is an 886 augmentation of the OSPF base model. 888 module: ietf-ospf-link-attr 889 augment /rt:routing/rt:control-plane-protocols 890 /rt:control-plane-protocol/ospf:ospf: 891 +--rw ospf-link-attr 892 +--rw (link-attr-op-mode) 893 +--:(legacy) 894 | +--rw legacy? empty 895 +--:(transition) 896 | +--rw transition? empty 897 +--:(app-specific) 898 +--rw app-specific? empty 899 augment /rt:routing/rt:control-plane-protocols 900 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 901 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 902 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 903 /ospf:body/ospf:opaque/ospf:extended-link-opaque 904 /ospf:extended-link-tlv: 905 +--ro application-specific-link-attributes-sub-tlvs 906 +--ro asla-sub-tlvs* [] 907 +--ro sabm-length? uint8 908 +--ro udabm-length? uint8 909 +--ro sabm 910 | +--ro sabm-bits* identityref 911 +--ro udabm 912 +--ro link-attributes-sub-sub-tlvs 913 +--ro unknown-tlvs 914 +--ro unknown-tlv* [] 915 +--ro type? uint16 916 +--ro length? uint16 917 +--ro value? yang:hex-string 918 augment /rt:routing/rt:control-plane-protocols 919 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 920 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 921 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 922 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 923 /ospfv3-e-lsa:link-tlv: 924 +--ro application-specific-link-attributes-sub-tlvs 925 +--ro asla-sub-tlvs* [] 926 +--ro sabm-length? uint8 927 +--ro udabm-length? uint8 928 +--ro sabm 929 | +--ro sabm-bits* identityref 930 +--ro udabm 931 +--ro link-attributes-sub-sub-tlvs 932 +--ro unknown-tlvs 933 +--ro unknown-tlv* [] 934 +--ro type? uint16 935 +--ro length? uint16 936 +--ro value? yang:hex-string 938 file "ietf-ospf-link-attr@2020-10-31.yang" 939 module ietf-ospf-link-attr { 940 yang-version 1.1; 941 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr"; 943 prefix ospf-link-attr; 945 import ietf-routing { 946 prefix "rt"; 947 reference "RFC 8349: A YANG Data Model for Routing 948 Management (NMDA Version)"; 949 } 951 import ietf-ospf { 952 prefix "ospf"; 953 } 955 import ietf-ospfv3-extended-lsa { 956 prefix "ospfv3-e-lsa"; 957 } 959 organization 960 "IETF LSR - Link State Routing Working Group"; 962 contact 963 "WG Web: 964 WG List: 966 Author: Yingzhen Qu 967 968 Author: Acee Lindem 969 970 Author: Stephane Litkowski 971 "; 973 description 974 "This YANG module defines the configuration and operational 975 state for OSPF application specific link attributes feature 976 as defined in RFC xxxx. 978 This YANG model conforms to the Network Management 979 Datastore Architecture (NMDA) as described in RFC 8342. 981 Copyright (c) 2020 IETF Trust and the persons identified as 982 authors of the code. All rights reserved. 984 Redistribution and use in source and binary forms, with or 985 without modification, is permitted pursuant to, and subject 986 to the license terms contained in, the Simplified BSD License 987 set forth in Section 4.c of the IETF Trust's Legal Provisions 988 Relating to IETF Documents 989 (http://trustee.ietf.org/license-info). 991 This version of this YANG module is part of RFC XXXX; 992 see the RFC itself for full legal notices. 994 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 995 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 996 'MAY', and 'OPTIONAL' in this document are to be interpreted as 997 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 998 they appear in all capitals, as shown here."; 1000 reference "RFC XXXX"; 1002 revision 2020-10-31 { 1003 description 1004 "Initial version"; 1005 reference 1006 "RFC XXXX: A YANG Data Model for OSPF application specific 1007 link attributes."; 1008 } 1010 identity sabm-bit { 1011 description 1012 "Base identity for sabm bits."; 1013 } 1014 identity rsvp-te-bit { 1015 base sabm-bit; 1016 description 1017 "R bit, RSVP-TE."; 1018 } 1020 identity sr-policy-bit { 1021 base sabm-bit; 1022 description 1023 "S bit, Segment Routing Policy."; 1024 } 1026 identity lfa-bit { 1027 base sabm-bit; 1028 description 1029 "F bit, Loop Free Alternate (LFA). Includes all LFA types."; 1030 } 1032 grouping application-specific-link-attributes-sub-tlvs { 1033 description 1034 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV. 1035 The ASLA sub-TLV is a sub-TLV of the OSPFv2 Extended Link 1036 TLV [RFC7684] and OSPFv3 Router-Link TLV [RFC8362]."; 1038 container application-specific-link-attributes-sub-tlvs { 1039 description "Application-Specific Link Attributes sub-TLV."; 1040 list asla-sub-tlvs { 1041 leaf sabm-length { 1042 type uint8; 1043 description 1044 "Standard Application Identifier Bit Mask Length in 1045 octets."; 1046 } 1047 leaf udabm-length { 1048 type uint8; 1049 description 1050 "User Defined Application Identifier Bit Mask Length 1051 in octets."; 1052 } 1053 container sabm { 1054 leaf-list sabm-bits { 1055 type identityref { 1056 base sabm-bit; 1057 } 1058 description 1059 "SABM bits list. This list will contain 1060 identities for the bits which are set in the 1061 SABA bits."; 1063 } 1064 description 1065 "Standard Application Identifier Bit Mask."; 1066 } 1067 container udabm { 1068 description 1069 "User Defined Application Identifier Bit Mask. 1070 This container is to be augmented by user defined 1071 applications."; 1072 } 1073 container link-attributes-sub-sub-tlvs { 1074 uses ospf:unknown-tlvs; 1075 description 1076 "Link Attributes sub-sub-TLVs."; 1077 } 1078 description 1079 "List of application-Specific Link Attributes sub-TLVs."; 1080 } 1081 } 1082 } 1084 augment "/rt:routing/rt:control-plane-protocols" 1085 + "/rt:control-plane-protocol/ospf:ospf" { 1086 when "../rt:type = 'ospf:ospfv2' or " 1087 + "../rt:type = 'ospf:ospfv3'" { 1088 description 1089 "This augments the OSPF routing protocol when used."; 1090 } 1091 description 1092 "This augments OSPF protocol configuration 1093 with application-specific link attributes."; 1095 container ospf-link-attr { 1096 choice link-attr-op-mode { 1097 mandatory "true"; 1098 leaf legacy { 1099 type empty; 1100 description 1101 "Only send legacy advertisements."; 1102 } 1103 leaf transition { 1104 type empty; 1105 description 1106 "Send both application-specific and legacy 1107 advertisements."; 1108 } 1109 leaf app-specific{ 1110 type empty; 1111 description 1112 "Only send application-specific advertisements."; 1113 } 1114 description 1115 "Link attributes mode"; 1116 } 1117 description 1118 "Link attributes operation mode."; 1119 } 1120 } 1122 /* Database */ 1123 augment "/rt:routing/" 1124 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1125 + "ospf:ospf/ospf:areas/" 1126 + "ospf:area/ospf:database/" 1127 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1128 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1129 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1130 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 1131 when "../../../../../../../../../../../../" 1132 + "rt:type = 'ospf:ospfv2'" { 1133 description 1134 "This augmentation is only valid for OSPFv2."; 1135 } 1136 description 1137 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV is 1138 a sub-TLV of OSPFv2 Extended Link TLV (RFC7684)."; 1140 uses application-specific-link-attributes-sub-tlvs; 1141 } 1143 augment "/rt:routing/" 1144 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1145 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1146 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1147 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1148 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 1149 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 1150 when "'ospf:../../../../../../../../../" 1151 + "rt:type' = 'ospf:ospfv3'" { 1152 description 1153 "This augmentation is only valid for OSPFv3 1154 E-Router LSAs"; 1155 } 1156 description 1157 "Augment OSPFv3 Area scope router-link TLV."; 1159 uses application-specific-link-attributes-sub-tlvs; 1160 } 1161 } 1162 1164 7. YANG Module for OSPF Flexible Algorithm 1166 This document defines a YANG module for OSPF Flexible Algorithm as 1167 defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the 1168 OSPF base model. 1170 module: ietf-ospf-flex-algo 1171 augment /rt:routing/rt:control-plane-protocols 1172 /rt:control-plane-protocol/ospf:ospf: 1173 +--rw ospf-flex-algo 1174 +--rw flex-algo* [algo-number] 1175 +--rw algo-number uint8 1176 +--rw advertise-definition? boolean 1177 +--rw admin-groups {te-types:extended-admin-groups, 1178 te-types:named-extended-admin-groups}? 1179 | +--rw exclude-admin-groups* -> /te:te/globals 1180 /named-admin-groups 1181 /named-admin-group/name 1182 | +--rw include-any-admin-groups* -> /te:te/globals 1183 /named-admin-groups 1184 /named-admin-group/name 1185 | +--rw include-all-admin-groups* -> /te:te/globals 1186 /named-admin-groups 1187 /named-admin-group/name 1188 +--rw exclude-srlgs* -> /te:te/globals/named-srlgs 1189 /named-srlg/name 1190 {te-types:named-srlg-groups}? 1191 +--rw fast-reroute? boolean 1192 +--rw metric-type? identityref 1193 +--rw microloop-avoidance? boolean 1194 +--rw prefix-metric! 1195 +--rw priority? uint8 1196 augment /rt:routing/rt:control-plane-protocols 1197 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1198 /ospf:interfaces/ospf:interface/ospf:database 1199 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1200 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1201 /ospf:body/ospf:opaque/ospf:ri-opaque: 1202 +--ro fad-tlvs 1203 +--ro fad-tlv* [] 1204 +--ro flex-algo? uint8 1205 +--ro metric-type? identityref 1206 +--ro calc-type? uint8 1207 +--ro priority? uint8 1208 +--ro fa-ex-ag-sub-tlv 1209 | +--ro extended-admin-groups* uint64 1210 +--ro fa-in-any-ag-sub-tlv 1211 | +--ro extended-admin-groups* uint64 1212 +--ro fa-in-all-ag-sub-tlv 1213 | +--ro extended-admin-groups* uint64 1214 +--ro fad-flags-sub-tlv 1215 | +--ro fad-flags* identityref 1216 +--ro fa-ex-srlg-sub-tlv 1217 | +--ro srlgs* uint32 1218 +--ro unknown-tlvs 1219 +--ro unknown-tlv* [] 1220 +--ro type? uint16 1221 +--ro length? uint16 1222 +--ro value? yang:hex-string 1223 augment /rt:routing/rt:control-plane-protocols 1224 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1225 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1226 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1227 /ospf:body/ospf:opaque/ospf:ri-opaque: 1228 +--ro fad-tlvs 1229 +--ro fad-tlv* [] 1230 +--ro flex-algo? uint8 1231 +--ro metric-type? identityref 1232 +--ro calc-type? uint8 1233 +--ro priority? uint8 1234 +--ro fa-ex-ag-sub-tlv 1235 | +--ro extended-admin-groups* uint64 1236 +--ro fa-in-any-ag-sub-tlv 1237 | +--ro extended-admin-groups* uint64 1238 +--ro fa-in-all-ag-sub-tlv 1239 | +--ro extended-admin-groups* uint64 1240 +--ro fad-flags-sub-tlv 1241 | +--ro fad-flags* identityref 1242 +--ro fa-ex-srlg-sub-tlv 1243 | +--ro srlgs* uint32 1244 +--ro unknown-tlvs 1245 +--ro unknown-tlv* [] 1246 +--ro type? uint16 1247 +--ro length? uint16 1248 +--ro value? yang:hex-string 1249 augment /rt:routing/rt:control-plane-protocols 1250 /rt:control-plane-protocol/ospf:ospf/ospf:database 1251 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1252 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1253 /ospf:ri-opaque: 1254 +--ro fad-tlvs 1255 +--ro fad-tlv* [] 1256 +--ro flex-algo? uint8 1257 +--ro metric-type? identityref 1258 +--ro calc-type? uint8 1259 +--ro priority? uint8 1260 +--ro fa-ex-ag-sub-tlv 1261 | +--ro extended-admin-groups* uint64 1262 +--ro fa-in-any-ag-sub-tlv 1263 | +--ro extended-admin-groups* uint64 1264 +--ro fa-in-all-ag-sub-tlv 1265 | +--ro extended-admin-groups* uint64 1266 +--ro fad-flags-sub-tlv 1267 | +--ro fad-flags* identityref 1268 +--ro fa-ex-srlg-sub-tlv 1269 | +--ro srlgs* uint32 1270 +--ro unknown-tlvs 1271 +--ro unknown-tlv* [] 1272 +--ro type? uint16 1273 +--ro length? uint16 1274 +--ro value? yang:hex-string 1275 augment /rt:routing/rt:control-plane-protocols 1276 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1277 /ospf:interfaces/ospf:interface/ospf:database 1278 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1279 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1280 /ospf:body/ospf:router-information: 1281 +--ro fad-tlvs 1282 +--ro fad-tlv* [] 1283 +--ro flex-algo? uint8 1284 +--ro metric-type? identityref 1285 +--ro calc-type? uint8 1286 +--ro priority? uint8 1287 +--ro fa-ex-ag-sub-tlv 1288 | +--ro extended-admin-groups* uint64 1289 +--ro fa-in-any-ag-sub-tlv 1290 | +--ro extended-admin-groups* uint64 1291 +--ro fa-in-all-ag-sub-tlv 1292 | +--ro extended-admin-groups* uint64 1293 +--ro fad-flags-sub-tlv 1294 | +--ro fad-flags* identityref 1295 +--ro fa-ex-srlg-sub-tlv 1296 | +--ro srlgs* uint32 1297 +--ro unknown-tlvs 1298 +--ro unknown-tlv* [] 1299 +--ro type? uint16 1300 +--ro length? uint16 1301 +--ro value? yang:hex-string 1302 augment /rt:routing/rt:control-plane-protocols 1303 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1304 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1305 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1306 /ospf:body/ospf:router-information: 1307 +--ro fad-tlvs 1308 +--ro fad-tlv* [] 1309 +--ro flex-algo? uint8 1310 +--ro metric-type? identityref 1311 +--ro calc-type? uint8 1312 +--ro priority? uint8 1313 +--ro fa-ex-ag-sub-tlv 1314 | +--ro extended-admin-groups* uint64 1315 +--ro fa-in-any-ag-sub-tlv 1316 | +--ro extended-admin-groups* uint64 1317 +--ro fa-in-all-ag-sub-tlv 1318 | +--ro extended-admin-groups* uint64 1319 +--ro fad-flags-sub-tlv 1320 | +--ro fad-flags* identityref 1321 +--ro fa-ex-srlg-sub-tlv 1322 | +--ro srlgs* uint32 1323 +--ro unknown-tlvs 1324 +--ro unknown-tlv* [] 1325 +--ro type? uint16 1326 +--ro length? uint16 1327 +--ro value? yang:hex-string 1328 augment /rt:routing/rt:control-plane-protocols 1329 /rt:control-plane-protocol/ospf:ospf/ospf:database 1330 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1331 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1332 /ospf:router-information: 1333 +--ro fad-tlvs 1334 +--ro fad-tlv* [] 1335 +--ro flex-algo? uint8 1336 +--ro metric-type? identityref 1337 +--ro calc-type? uint8 1338 +--ro priority? uint8 1339 +--ro fa-ex-ag-sub-tlv 1340 | +--ro extended-admin-groups* uint64 1341 +--ro fa-in-any-ag-sub-tlv 1342 | +--ro extended-admin-groups* uint64 1343 +--ro fa-in-all-ag-sub-tlv 1344 | +--ro extended-admin-groups* uint64 1345 +--ro fad-flags-sub-tlv 1346 | +--ro fad-flags* identityref 1347 +--ro fa-ex-srlg-sub-tlv 1348 | +--ro srlgs* uint32 1349 +--ro unknown-tlvs 1350 +--ro unknown-tlv* [] 1351 +--ro type? uint16 1352 +--ro length? uint16 1353 +--ro value? yang:hex-string 1354 augment /rt:routing/rt:control-plane-protocols 1355 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1356 /ospf:interfaces/ospf:interface/ospf:database 1357 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1358 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1359 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1360 /ospf:extended-prefix-tlv: 1361 +--ro fapm-sub-tlvs 1362 +--ro fapm-sub-tlv* [] 1363 +--ro flex-algo? uint8 1364 +--ro fapm-flags* identityref 1365 +--ro metric? uint32 1366 augment /rt:routing/rt:control-plane-protocols 1367 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1368 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1369 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1370 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1371 /ospf:extended-prefix-tlv: 1372 +--ro fapm-sub-tlvs 1373 +--ro fapm-sub-tlv* [] 1374 +--ro flex-algo? uint8 1375 +--ro fapm-flags* identityref 1376 +--ro metric? uint32 1377 augment /rt:routing/rt:control-plane-protocols 1378 /rt:control-plane-protocol/ospf:ospf/ospf:database 1379 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1380 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1381 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 1382 +--ro fapm-sub-tlvs 1383 +--ro fapm-sub-tlv* [] 1384 +--ro flex-algo? uint8 1385 +--ro fapm-flags* identityref 1386 +--ro metric? uint32 1387 augment /rt:routing/rt:control-plane-protocols 1388 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1389 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1390 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1391 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix 1392 /ospfv3-e-lsa:e-inter-prefix-tlvs 1393 /ospfv3-e-lsa:inter-prefix-tlv: 1394 +--ro fapm-sub-tlvs 1395 +--ro fapm-sub-tlv* [] 1396 +--ro flex-algo? uint8 1397 +--ro fapm-flags* identityref 1398 +--ro metric? uint32 1400 augment /rt:routing/rt:control-plane-protocols 1401 /rt:control-plane-protocol/ospf:ospf/ospf:database 1402 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1403 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1404 /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs 1405 /ospfv3-e-lsa:external-prefix-tlv: 1406 +--ro fapm-sub-tlvs 1407 +--ro fapm-sub-tlv* [] 1408 +--ro flex-algo? uint8 1409 +--ro fapm-flags* identityref 1410 +--ro metric? uint32 1411 augment /rt:routing/rt:control-plane-protocols 1412 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1413 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1414 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1415 /ospf:body/ospf:opaque: 1416 +--ro eia-asbr-opaque 1417 +--ro eia-asbr-tlv 1418 | +--ro asbr-rtr-id? rt-types:router-id 1419 | +--ro faam-sub-tlvs 1420 | | +--ro faam-sub-tlv* [] 1421 | | +--ro flex-algo? uint8 1422 | | +--ro metric? uint32 1423 | +--ro unknown-tlvs 1424 | +--ro unknown-tlv* [] 1425 | +--ro type? uint16 1426 | +--ro length? uint16 1427 | +--ro value? yang:hex-string 1428 +--ro unknown-tlvs 1429 +--ro unknown-tlv* [] 1430 +--ro type? uint16 1431 +--ro length? uint16 1432 +--ro value? yang:hex-string 1433 augment /rt:routing/rt:control-plane-protocols 1434 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1435 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1436 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1437 /ospf:body/ospfv3-e-lsa:e-inter-area-router 1438 /ospfv3-e-lsa:e-inter-router-tlvs 1439 /ospfv3-e-lsa:inter-router-tlv: 1440 +--ro faam-sub-tlvs 1441 +--ro faam-sub-tlv* [] 1442 +--ro flex-algo? uint8 1443 +--ro metric? uint32 1445 file "ietf-ospf-flex-algo@2021-06-18.yang" 1446 module ietf-ospf-flex-algo { 1447 yang-version 1.1; 1448 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; 1449 prefix ospf-flex-algo; 1451 import ietf-routing { 1452 prefix rt; 1453 reference "RFC 8349: A YANG Data Model for Routing 1454 Management (NMDA Version)"; 1455 } 1457 import ietf-routing-types { 1458 prefix "rt-types"; 1459 reference "RFC 8294: Common YANG Data Types for the 1460 Routing Area"; 1461 } 1463 import ietf-te-types { 1464 prefix te-types; 1465 reference 1466 "RFC8776: Common YANG Data Types for Traffic Engineering."; 1467 } 1469 import ietf-ospf { 1470 prefix "ospf"; 1471 } 1473 import ietf-ospfv3-extended-lsa { 1474 prefix "ospfv3-e-lsa"; 1475 } 1477 import ietf-te { 1478 prefix "te"; 1479 } 1481 organization 1482 "IETF LSR - Link State Routing Working Group"; 1483 contact 1484 "WG Web: 1485 WG List: 1487 Author: Yingzhen Qu 1488 1489 Author: Acee Lindem 1490 1491 Author: Stephane Litkowski 1492 1493 "; 1495 description 1496 "The YANG module defines the configuration and operational 1497 state for OSPF Flexible Algorithm as defined in RFC xxxx. 1499 This YANG model conforms to the Network Management 1500 Datastore Architecture (NMDA) as described in RFC 8342. 1502 Copyright (c) 2021 IETF Trust and the persons identified as 1503 authors of the code. All rights reserved. 1505 Redistribution and use in source and binary forms, with or 1506 without modification, is permitted pursuant to, and subject 1507 to the license terms contained in, the Simplified BSD License 1508 set forth in Section 4.c of the IETF Trust's Legal Provisions 1509 Relating to IETF Documents 1510 (https://trustee.ietf.org/license-info). 1512 This version of this YANG module is part of RFC XXXX; 1513 see the RFC itself for full legal notices. 1515 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1516 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1517 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1518 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1519 they appear in all capitals, as shown here."; 1521 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1523 revision 2021-06-18 { 1524 description 1525 "Initial Version"; 1526 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1527 } 1529 /* Identities */ 1531 identity metric-type { 1532 description 1533 "Base identity for route metric types."; 1534 } 1536 identity igp-metric { 1537 base metric-type; 1538 description 1539 "Identity for the IGP metric type."; 1540 } 1542 identity min-uni-delay { 1543 base metric-type; 1544 description 1545 "Min unidirectional link delay metric type."; 1546 reference 1547 "RFC 7471 - OSPF Traffic Engineering (TE) Metric Extensions"; 1548 } 1550 identity te-metric { 1551 base metric-type; 1552 description 1553 "Traffic engineering metric type."; 1554 reference 1555 "RFC 3630 - Traffic Engineering (TE) Extensions to OSPF 1556 Version 2"; 1557 } 1559 identity fad-flags { 1560 description 1561 "Base identity for OSPF FAD flags."; 1562 } 1564 identity m-bit { 1565 base fad-flags; 1566 description 1567 "M bit, when set, the fex-algo specific prefix and ASBR 1568 metric MUST be used for inter-area and external prefix 1569 calculation."; 1570 } 1572 identity fapm-flags { 1573 description 1574 "Base identity for OSPF flex-algo prefix metric flags."; 1575 } 1577 identity e-bit { 1578 base fapm-flags; 1579 description 1580 "External metric, if set, the metric specified is a 1581 type 2 external metric."; 1582 } 1584 /* Groupings */ 1585 grouping fa-ex-ag-sub-tlv { 1586 container fa-ex-ag-sub-tlv { 1587 leaf-list extended-admin-groups { 1588 type uint64; 1589 description 1590 "Extended administrative group as defined in RFC 7308."; 1591 } 1592 description 1593 "The flex-algo exclude admin group sub-tlv."; 1594 } 1595 description 1596 "The flex-algo exclude admin group sub-tlv."; 1597 } 1599 grouping fa-in-any-ag-sub-tlv { 1600 container fa-in-any-ag-sub-tlv { 1601 leaf-list extended-admin-groups { 1602 type uint64; 1603 description 1604 "Extended administrative group as defined in RFC 7308."; 1605 } 1606 description 1607 "The flex-algo include-any admin group sub-tlv."; 1608 } 1609 description 1610 "The flex-algo include-any admin group sub-tlv."; 1611 } 1613 grouping fa-in-all-ag-sub-tlv { 1614 container fa-in-all-ag-sub-tlv { 1615 leaf-list extended-admin-groups { 1616 type uint64; 1617 description 1618 "Extended administrative group as defined in RFC 7308."; 1619 } 1620 description 1621 "The flex-algo include-all admin group sub-tlv."; 1622 } 1623 description 1624 "The flex-algo include-all admin group sub-tlv."; 1625 } 1627 grouping fad-flags-sub-tlv { 1628 container fad-flags-sub-tlv { 1629 leaf-list fad-flags { 1630 type identityref { 1631 base fad-flags; 1632 } 1633 description 1634 "Flex-algo definition flags list."; 1636 } 1637 description 1638 "OSPF flex-algo definition flags."; 1639 } 1640 description 1641 "The flex-algo definition flags sub-tlv."; 1642 } 1644 grouping fa-ex-srlg-sub-tlv { 1645 container fa-ex-srlg-sub-tlv { 1646 leaf-list srlgs { 1647 type uint32; 1648 description 1649 "SRLG value as defined in RFC 4203."; 1650 } 1651 description 1652 "The flex-algo exclude SRLG sub-tlv."; 1653 } 1654 description 1655 "The flex-algo exclude SRLG sub-tlv."; 1656 } 1658 grouping fad-tlvs { 1659 container fad-tlvs { 1660 list fad-tlv { 1661 leaf flex-algo { 1662 type uint8; 1663 description 1664 "Flex-algo number, value between 128 and 255 inclusive."; 1665 } 1666 leaf metric-type { 1667 type identityref { 1668 base metric-type; 1669 } 1670 description 1671 "Type of metric to be used during the calculation."; 1672 } 1673 leaf calc-type { 1674 type uint8 { 1675 range "0..127"; 1676 } 1677 description 1678 "IGP algorithm types, value from 0 to 127 as 1679 defined under 'Interior Gateway Protocol (IGP) 1680 Parameter' by IANA."; 1681 } 1682 leaf priority { 1683 type uint8; 1684 description 1685 "Priority of the advertisement."; 1686 } 1688 uses fa-ex-ag-sub-tlv; 1689 uses fa-in-any-ag-sub-tlv; 1690 uses fa-in-all-ag-sub-tlv; 1691 uses fad-flags-sub-tlv; 1692 uses fa-ex-srlg-sub-tlv; 1693 uses ospf:unknown-tlvs; 1695 description 1696 "List of flex-algo definition TLVs."; 1697 } 1698 description 1699 "OSPF Flexible Algorithm Definition TLV."; 1700 } 1701 description 1702 "OSPF Flexible Algorithm Definition (FAD) TLV."; 1703 } 1705 grouping fapm-sub-tlvs { 1706 container fapm-sub-tlvs { 1707 list fapm-sub-tlv { 1708 leaf flex-algo { 1709 type uint8; 1710 description 1711 "Flex-algo number, value between 128 and 255 1712 inclusive."; 1713 } 1714 leaf-list fapm-flags { 1715 type identityref { 1716 base fapm-flags; 1717 } 1718 description 1719 "Flex-algo prefix metric flags list."; 1720 } 1721 leaf metric { 1722 type uint32; 1723 description 1724 "Prefix metric."; 1725 } 1726 description 1727 "List of flex-algo prefix sub-tlvs."; 1728 } 1729 description 1730 "Flex-algo prefix metric sub-tlvs."; 1731 } 1732 description 1733 "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; 1734 } 1736 grouping faam-sub-tlvs { 1737 container faam-sub-tlvs { 1738 list faam-sub-tlv { 1739 leaf flex-algo { 1740 type uint8; 1741 description 1742 "Flex-algo number, value between 128 and 255 1743 inclusive."; 1744 } 1745 leaf metric { 1746 type uint32; 1747 description 1748 "Prefix metric."; 1749 } 1750 description 1751 "List of faam sub-tlvs."; 1752 } 1753 description 1754 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1755 } 1756 description 1757 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1758 } 1760 /* Configurations */ 1762 augment "/rt:routing/rt:control-plane-protocols" 1763 + "/rt:control-plane-protocol/ospf:ospf" { 1764 when "../rt:type = 'ospf:ospfv2' or " 1765 + "../rt:type = 'ospf:ospfv3'" { 1766 description 1767 "This augments the OSPF routing protocol when used."; 1768 } 1769 description 1770 "This augments OSPF protocol with Flexible 1771 Algorithm."; 1773 container ospf-flex-algo { 1774 list flex-algo { 1775 key "algo-number"; 1777 leaf algo-number { 1778 type uint8 { 1779 range "128..255"; 1780 } 1781 description 1782 "An identifier in the range 128-255 that's associated 1783 with the Flexible Algorithm Definition."; 1784 } 1786 leaf advertise-definition { 1787 type boolean; 1788 default true; 1789 description 1790 "Enable to advertise the flex-algo definition."; 1791 } 1793 container admin-groups { 1794 if-feature "te-types:extended-admin-groups"; 1795 if-feature "te-types:named-extended-admin-groups"; 1796 leaf-list exclude-admin-groups { 1797 type leafref { 1798 path "/te:te/te:globals/te:named-admin-groups/" 1799 + "te:named-admin-group/te:name"; 1800 } 1801 description 1802 "Exclude rule used during the flex-algo 1803 path computation."; 1804 } 1805 leaf-list include-any-admin-groups { 1806 type leafref { 1807 path "/te:te/te:globals/te:named-admin-groups/" 1808 + "te:named-admin-group/te:name"; 1809 } 1810 description 1811 "Include-any rule used during the flex-algo 1812 path computation."; 1813 } 1814 leaf-list include-all-admin-groups { 1815 type leafref { 1816 path "/te:te/te:globals/te:named-admin-groups/" 1817 + "te:named-admin-group/te:name"; 1818 } 1819 description 1820 "Include-all rule used during the flex-algo 1821 path computation."; 1822 } 1823 description 1824 "Specify links for the flex-algo path computation."; 1825 } 1826 leaf-list exclude-srlgs { 1827 if-feature "te-types:named-srlg-groups"; 1828 type leafref { 1829 path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" 1830 + "te:name"; 1831 } 1832 description 1833 "Shared Risk Link Groups (SRLGs) to be excluded during 1834 the flex-algo path computation."; 1835 } 1837 leaf fast-reroute { 1838 type boolean; 1839 default true; 1840 description 1841 "Enable fast reroute."; 1842 } 1844 leaf metric-type { 1845 type identityref { 1846 base metric-type; 1847 } 1848 description 1849 "Type of metric to be used during the calculation."; 1850 } 1852 leaf microloop-avoidance { 1853 type boolean; 1854 default true; 1855 description 1856 "Enable microloop avoidance."; 1857 } 1859 container prefix-metric { 1860 presence 1861 "Use flex-algo specific prefix metric."; 1862 description 1863 "Use flex-algo prefix metric."; 1864 } 1866 leaf priority { 1867 type uint8; 1868 description 1869 "Priority of the advertisement."; 1870 } 1872 description 1873 "List of flex-algo configurations."; 1875 } 1876 description 1877 "Flexible Algorithm configuration."; 1878 } 1879 } 1881 /* Database */ 1883 augment "/rt:routing/" 1884 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1885 + "ospf:ospf/ospf:areas/ospf:area/" 1886 + "ospf:interfaces/ospf:interface/ospf:database/" 1887 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1888 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1889 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1890 when "../../../../../../../../../../../../../" 1891 + "rt:type = 'ospf:ospfv2'" { 1892 description 1893 "This augmentation is only valid for OSPFv2."; 1894 } 1896 description 1897 "Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; 1899 uses fad-tlvs; 1900 } 1902 augment "/rt:routing/" 1903 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1904 + "ospf:ospf/ospf:areas/" 1905 + "ospf:area/ospf:database/" 1906 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1907 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1908 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1909 when "../../../../../../../../../../../" 1910 + "rt:type = 'ospf:ospfv2'" { 1911 description 1912 "This augmentation is only valid for OSPFv2."; 1913 } 1915 description 1916 "Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; 1918 uses fad-tlvs; 1919 } 1921 augment "/rt:routing/" 1922 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1923 + "ospf:ospf/ospf:database/" 1924 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1925 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1926 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1927 when "../../../../../../../../../" 1928 + "rt:type = 'ospf:ospfv2'" { 1929 description 1930 "This augmentation is only valid for OSPFv2."; 1931 } 1932 description 1933 "Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA."; 1935 uses fad-tlvs; 1936 } 1938 augment "/rt:routing/" 1939 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1940 + "ospf:ospf/ospf:areas/ospf:area/" 1941 + "ospf:interfaces/ospf:interface/ospf:database/" 1942 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1943 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 1944 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1945 when "../../../../../../../../../../../../" 1946 + "rt:type = 'ospf:ospfv3'" { 1947 description 1948 "This augmentation is only valid for OSPFv3."; 1949 } 1951 description 1952 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1954 uses fad-tlvs; 1955 } 1957 augment "/rt:routing/" 1958 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1959 + "ospf:ospf/ospf:areas/" 1960 + "ospf:area/ospf:database/" 1961 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1962 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1963 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1964 when "../../../../../../../../../../" 1965 + "rt:type = 'ospf:ospfv3'" { 1966 description 1967 "This augmentation is only valid for OSPFv3."; 1968 } 1970 description 1971 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1973 uses fad-tlvs; 1974 } 1976 augment "/rt:routing/" 1977 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1978 + "ospf:ospf/ospf:database/" 1979 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1980 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1981 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1982 when "../../../../../../../../" 1983 + "rt:type = 'ospf:ospfv3'" { 1984 description 1985 "This augmentation is only valid for OSPFv3."; 1986 } 1987 description 1988 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1990 uses fad-tlvs; 1991 } 1993 augment "/rt:routing/" 1994 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1995 + "ospf:ospf/ospf:areas/ospf:area/" 1996 + "ospf:interfaces/ospf:interface/ospf:database/" 1997 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1998 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1999 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2000 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2001 when "../../../../../../../../../../../../../../" 2002 + "rt:type = 'ospf:ospfv2'" { 2003 description 2004 "This augmentation is only valid for OSPFv2."; 2005 } 2006 description 2007 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2008 in type 9 opaque LSA."; 2009 uses fapm-sub-tlvs; 2010 } 2012 augment "/rt:routing/" 2013 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2014 + "ospf:ospf/ospf:areas/" 2015 + "ospf:area/ospf:database/" 2016 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2017 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2018 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2019 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2020 when "../../../../../../../../../../../../" 2021 + "rt:type = 'ospf:ospfv2'" { 2022 description 2023 "This augmentation is only valid for OSPFv2."; 2024 } 2025 description 2026 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2027 in type 10 opaque LSA."; 2028 uses fapm-sub-tlvs; 2029 } 2031 augment "/rt:routing/" 2032 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2033 + "ospf:ospf/ospf:database/" 2034 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2035 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 2036 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2037 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2038 when "../../../../../../../../../../" 2039 + "rt:type = 'ospf:ospfv2'" { 2040 description 2041 "This augmentation is only valid for OSPFv2."; 2042 } 2043 description 2044 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2045 in type 11 opaque LSA."; 2046 uses fapm-sub-tlvs; 2047 } 2049 /* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area Prefix TLV */ 2050 augment "/rt:routing/" 2051 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2052 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 2053 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2054 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2055 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" 2056 + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { 2057 when "../../../../../../../../../../../../" 2058 + "rt:type = 'ospf:ospfv3'" { 2059 description 2060 "This augmentation is only valid for OSPFv3 2061 E-Router LSAs"; 2062 } 2063 uses fapm-sub-tlvs; 2064 description 2065 "OSPFv3 Area-Scoped Inter-Area Prefix TLV."; 2066 } 2067 /* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */ 2068 augment "/rt:routing/" 2069 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2070 + "ospf:ospf/ospf:database/" 2071 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2072 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2073 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 2074 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 2075 when "'ospf:../../../../../../../../../" 2076 + "rt:type' = 'ospf:ospfv3'" { 2077 description 2078 "This augmentation is only valid for OSPFv3."; 2079 } 2080 uses fapm-sub-tlvs; 2081 description 2082 "OSPFv3 AS-Scoped External Prefix TLV."; 2083 } 2085 /* OSPFv2 Extended Inter-Area ASBR LSA */ 2086 augment "/rt:routing/" 2087 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2088 + "ospf:ospf/ospf:areas/" 2089 + "ospf:area/ospf:database/" 2090 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2091 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2092 + "ospf:ospfv2/ospf:body/ospf:opaque" { 2093 when "../../../../../../../../../../" 2094 + "rt:type = 'ospf:ospfv2'" { 2095 description 2096 "This augmentation is only valid for OSPFv2."; 2097 } 2098 description 2099 "OSPFv2 Extended Inter-Area ASBR LSA in type 10 2100 opaque LSA."; 2102 container eia-asbr-opaque { 2103 container eia-asbr-tlv { 2104 leaf asbr-rtr-id { 2105 type rt-types:router-id; 2106 description 2107 "The OSPF Router ID of the ASBR."; 2108 } 2109 uses faam-sub-tlvs; 2110 uses ospf:unknown-tlvs; 2111 description 2112 "EIA-ASBR TLV, used to advertise additional attributes 2113 associated with the reachability of an ASBR."; 2114 } 2115 uses ospf:unknown-tlvs; 2117 description 2118 "OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA."; 2119 } 2120 } 2122 /* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */ 2123 augment "/rt:routing/" 2124 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2125 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 2126 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2127 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2128 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" 2129 + "ospfv3-e-lsa:e-inter-router-tlvs/" 2130 + "ospfv3-e-lsa:inter-router-tlv" { 2131 when "../../../../../../../../../../../../" 2132 + "rt:type = 'ospf:ospfv3'" { 2133 description 2134 "This augmentation is only valid for OSPFv3 2135 Inter-Area-Router TLV."; 2136 } 2137 uses faam-sub-tlvs; 2138 description 2139 "OSPFv3 Area-Scoped Inter-Area-Router TLV."; 2140 } 2141 } 2142 2144 8. Security Considerations 2146 The YANG modules specified in this document define a schema for data 2147 that is designed to be accessed via network management protocols such 2148 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2149 is the secure transport layer, and the mandatory-to-implement secure 2150 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2151 is HTTPS, and the mandatory-to-implement secure transport is TLS 2152 [RFC5246]. 2154 The NETCONF access control model [RFC6536] provides the means to 2155 restrict access for particular NETCONF or RESTCONF users to a pre- 2156 configured subset of all available NETCONF or RESTCONF protocol 2157 operations and content. 2159 There are a number of data nodes defined in the modules that are 2160 writable/creatable/deletable (i.e., config true, which is the 2161 default). These data nodes may be considered sensitive or vulnerable 2162 in some network environments. Write operations (e.g., edit-config) 2163 to these data nodes without proper protection can have a negative 2164 effect on network operations. 2166 Some of the readable data nodes in the modules may be considered 2167 sensitive or vulnerable in some network environments. It is thus 2168 important to control read access (e.g., via get, get-config, or 2169 notification) to these data nodes. The exposure of the Link State 2170 Database (LSDB) will expose the detailed topology of the network. 2171 This may be undesirable since both due to the fact that exposure may 2172 facilitate other attacks. Additionally, network operators may 2173 consider their topologies to be sensitive confidential data. 2175 9. IANA Considerations 2177 This document registers URIs in the IETF XML registry [RFC3688]. 2178 Following the format in [RFC3688], the following registrations is 2179 requested to be made: 2181 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2182 Registrant Contact: The IESG. 2183 XML: N/A, the requested URI is an XML namespace. 2185 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2186 Registrant Contact: The IESG. 2187 XML: N/A, the requested URI is an XML namespace. 2189 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2190 Registrant Contact: The IESG. 2191 XML: N/A, the requested URI is an XML namespace. 2193 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2194 Registrant Contact: The IESG. 2195 XML: N/A, the requested URI is an XML namespace. 2197 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2198 Registrant Contact: The IESG. 2199 XML: N/A, the requested URI is an XML namespace. 2201 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2202 Registrant Contact: The IESG. 2203 XML: N/A, the requested URI is an XML namespace. 2205 This document registers the YANG modules in the YANG Module Names 2206 registry [RFC6020]. 2208 name: ietf-ospfv3-te 2209 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2210 prefix: ospfv3-te 2211 reference: RFC XXXX 2213 name: ietf-ospf-two-metric 2214 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2215 prefix: ospf-two-metric 2216 reference: RFC XXXX 2218 name: ietf-ospf-grace-linkdown 2219 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2220 prefix: ospf-grace-linkdown 2221 reference: RFC XXXX 2223 name: ietf-ospf-lls-localid 2224 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2225 prefix: ospf-lls-localid 2226 reference: RFC XXXX 2228 name: ietf-ospf-link-attr 2229 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2230 prefix: ospf-link-attr 2231 reference: RFC XXXX 2233 name: ietf-ospf-flex-algo 2234 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2235 prefix: ospf-flex-algo 2236 reference: RFC XXXX 2238 10. Acknowledgements 2240 This document was produced using Marshall Rose's xml2rfc tool. 2242 The YANG model was developed using the suite of YANG tools written 2243 and maintained by numerous authors. 2245 11. Normative References 2247 [I-D.ietf-lsr-flex-algo] 2248 Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and 2249 A. Gulko, "IGP Flexible Algorithm", Work in Progress, 2250 Internet-Draft, draft-ietf-lsr-flex-algo-18, 25 October 2251 2021, . 2254 [I-D.ietf-ospf-yang] 2255 Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, 2256 "YANG Data Model for OSPF Protocol", Work in Progress, 2257 Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019, 2258 . 2261 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2262 Requirement Levels", BCP 14, RFC 2119, 2263 DOI 10.17487/RFC2119, March 1997, 2264 . 2266 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2267 DOI 10.17487/RFC3688, January 2004, 2268 . 2270 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2271 (TLS) Protocol Version 1.2", RFC 5246, 2272 DOI 10.17487/RFC5246, August 2008, 2273 . 2275 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 2276 "Traffic Engineering Extensions to OSPF Version 3", 2277 RFC 5329, DOI 10.17487/RFC5329, September 2008, 2278 . 2280 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2281 the Network Configuration Protocol (NETCONF)", RFC 6020, 2282 DOI 10.17487/RFC6020, October 2010, 2283 . 2285 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2286 and A. Bierman, Ed., "Network Configuration Protocol 2287 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2288 . 2290 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2291 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2292 . 2294 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2295 Protocol (NETCONF) Access Control Model", RFC 6536, 2296 DOI 10.17487/RFC6536, March 2012, 2297 . 2299 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2300 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2301 . 2303 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2304 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2305 . 2307 [RFC8042] Zhang, Z., Wang, L., and A. Lindem, "OSPF Two-Part 2308 Metric", RFC 8042, DOI 10.17487/RFC8042, December 2016, 2309 . 2311 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2312 Routing Management (NMDA Version)", RFC 8349, 2313 DOI 10.17487/RFC8349, March 2018, 2314 . 2316 [RFC8379] Hegde, S., Sarkar, P., Gredler, H., Nanduri, M., and L. 2317 Jalil, "OSPF Graceful Link Shutdown", RFC 8379, 2318 DOI 10.17487/RFC8379, May 2018, 2319 . 2321 [RFC8510] Psenak, P., Ed., Talaulikar, K., Henderickx, W., and P. 2322 Pillay-Esnault, "OSPF Link-Local Signaling (LLS) 2323 Extensions for Local Interface ID Advertisement", 2324 RFC 8510, DOI 10.17487/RFC8510, January 2019, 2325 . 2327 [RFC8920] Psenak, P., Ed., Ginsberg, L., Henderickx, W., Tantsura, 2328 J., and J. Drake, "OSPF Application-Specific Link 2329 Attributes", RFC 8920, DOI 10.17487/RFC8920, October 2020, 2330 . 2332 Authors' Addresses 2334 Acee Lindem 2335 Cisco Systems 2336 301 Midenhall Way 2337 Cary, NC 27513 2339 Email: acee@cisco.com 2341 Yingzhen Qu 2342 Futurewei 2343 2330 Central Expressway 2344 Santa Clara, CA 95050 2345 United States of America 2347 Email: yingzhen.qu@futurewei.com