idnits 2.17.1 draft-ietf-lsr-ospf-yang-augmentation-v1-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 144 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 (July 11, 2021) is 1020 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 (-26) exists of draft-ietf-lsr-flex-algo-15 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8920 (Obsoleted by RFC 9492) Summary: 3 errors (**), 0 flaws (~~), 4 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: January 12, 2022 Futurewei 6 July 11, 2021 8 OSPF YANG Model Augmentations for Additional Features - Version 1 9 draft-ietf-lsr-ospf-yang-augmentation-v1-06 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 January 12, 2022. 38 Copyright Notice 40 Copyright (c) 2021 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 45 (https://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 56 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 57 2. YANG Module for Traffic Engineering Extesions to OSPF Version 58 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 59 3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 9 60 4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 61 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 62 Advertisement . . . . . . . . . . . . . . . . . . . . . . . . 18 63 6. YANG Module for OSPF Application-Specific Link Attributes . . 20 64 7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 65 8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 66 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 67 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 68 11. Normative References . . . . . . . . . . . . . . . . . . . . 48 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 71 1. Overview 73 YANG [RFC6020] [RFC7950] is a data definition language used to define 74 the contents of a conceptual data store that allows networked devices 75 to be managed using NETCONF [RFC6241]. YANG is proving relevant 76 beyond its initial confines, as bindings to other interfaces (e.g., 77 ReST) and encodings other than XML (e.g., JSON) are being defined. 78 Furthermore, YANG data models can be used as the basis for 79 implementation of other interfaces, such as CLI and programmatic 80 APIs. 82 This document defines YANG data modules augmenting the IETF OSPF YANG 83 model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to 84 provide support for configuration and operational state for the 85 following OSPF features: 87 RFC5329: Traffic Engineering Extensions to OSPF Version 3 [RFC5329]. 89 RFC8042: OSPF Two-Part Metric [RFC8042]. 91 RFC8379: OSPF Graceful Link Shutdown [RFC8379]. 93 RFC8510: OSPF Link-Local Signaling (LLS) Extensions for Local 94 Interface ID Advertisement [RFC8510]. 96 RFC8920: OSPF Application-Specific Link Attributes [RFC8920]. 98 RFCxxxx: IGP Flexible Algorithm [I-D.ietf-lsr-flex-algo]. 100 The augmentations defined in this document requires support for the 101 OSPF base model[I-D.ietf-ospf-yang] which defines basic OSPF 102 configuration and state. The OSPF YANG model augments the ietf- 103 routing YANG model defined in [RFC8349]. 105 1.1. Requirements Language 107 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 108 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 109 document are to be interpreted as described in [RFC2119]. 111 2. YANG Module for Traffic Engineering Extesions to OSPF Version 3 113 This document defines a YANG module for Traffic Engineering 114 Extensions to OSPF Version 3 as defined in [RFC5329]. It is an 115 augmentation of the OSPF base model. 117 module: ietf-ospfv3-te 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: 123 +--ro ospfv3-intra-area-te 124 +--ro router-address-tlv 125 | +--ro router-address? inet:ipv6-address 126 +--ro link-tlv 127 +--ro link-type ospf:router-link-type 128 +--ro local-if-ipv6-addrs 129 | +--ro local-if-ipv6-addr* inet:ipv6-address 130 +--ro remote-if-ipv6-addrs 131 | +--ro remote-if-ipv6-addr* inet:ipv6-address 132 +--ro te-metric? uint32 133 +--ro max-bandwidth? 134 | rt-types:bandwidth-ieee-float32 135 +--ro max-reservable-bandwidth? 136 | rt-types:bandwidth-ieee-float32 137 +--ro unreserved-bandwidths 138 | +--ro unreserved-bandwidth* 139 | +--ro priority? uint8 140 | +--ro unreserved-bandwidth? 141 | rt-types:bandwidth-ieee-float32 142 +--ro admin-group? uint32 143 +--ro neighbor-id 144 | +--ro nbr-interface-id inet:ipv4-address 145 | +--ro nbr-router-id yang:dotted-quad 146 +--ro unknown-tlvs 147 +--ro unknown-tlv* 148 +--ro type? uint16 149 +--ro length? uint16 150 +--ro value? yang:hex-string 152 file "ietf-ospfv3-te@2021-07-11.yang" 153 module ietf-ospfv3-te { 154 yang-version 1.1; 155 namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-te"; 157 prefix ospfv3-te; 159 import ietf-inet-types { 160 prefix "inet"; 161 reference "RFC 6991: Common YANG Data Types"; 162 } 164 import ietf-yang-types { 165 prefix "yang"; 166 reference "RFC 6991: Common YANG Data Types"; 167 } 169 import ietf-routing-types { 170 prefix "rt-types"; 171 reference "RFC 8294: Common YANG Data Types for the 172 Routing Area"; 173 } 175 import ietf-routing { 176 prefix "rt"; 177 reference "RFC 8349: A YANG Data Model for Routing 178 Management (NMDA Version)"; 179 } 181 import ietf-ospf { 182 prefix "ospf"; 183 } 185 organization 186 "IETF LSR - Link State Routing Working Group"; 188 contact 189 "WG Web: 190 WG List: 192 Author: Yingzhen Qu 193 194 Author: Acee Lindem 195 "; 197 description 198 "This YANG module defines the configuration and operational 199 state for OSPFv3 extensions to support intra-area Traffic 200 Engineering (TE) as defined in RFC 5329. 202 This YANG model conforms to the Network Management 203 Datastore Architecture (NMDA) as described in RFC 8342. 205 Copyright (c) 2021 IETF Trust and the persons identified as 206 authors of the code. All rights reserved. 208 Redistribution and use in source and binary forms, with or 209 without modification, is permitted pursuant to, and subject 210 to the license terms contained in, the Simplified BSD License 211 set forth in Section 4.c of the IETF Trust's Legal Provisions 212 Relating to IETF Documents 213 (http://trustee.ietf.org/license-info). 215 This version of this YANG module is part of RFC XXXX; 216 see the RFC itself for full legal notices."; 218 reference "RFC XXXX"; 220 revision 2021-07-11 { 221 description 222 "Initial version"; 223 reference 224 "RFC XXXX: A YANG Data Model for OSPFv3 TE."; 225 } 227 identity ospfv3-intra-area-te-lsa { 228 base ospf:ospfv3-lsa-type; 229 description 230 "OSPFv3 intra-area TE LSA."; 231 } 233 grouping ospfv3-intra-area-te { 234 description "Grouping for OSPFv3 intra-area-te-lsa."; 235 container ospfv3-intra-area-te { 236 container router-address-tlv { 237 description "The router IPv6 address tlv advertises a 238 reachable IPv6 address."; 239 leaf router-address { 240 type inet:ipv6-address; 241 description 242 "Router IPv6 address."; 243 } 244 } 246 container link-tlv { 247 description "Describes a single link, and it is constructed 248 of a set of Sub-TLVs."; 249 leaf link-type { 250 type ospf:router-link-type; 251 mandatory true; 252 description "Link type."; 253 } 255 container local-if-ipv6-addrs { 256 description "All local interface IPv6 addresses."; 257 leaf-list local-if-ipv6-addr { 258 type inet:ipv6-address; 259 description 260 "List of local interface IPv6 addresses."; 262 } 263 } 265 container remote-if-ipv6-addrs { 266 description "All remote interface IPv6 addresses."; 267 leaf-list remote-if-ipv6-addr { 268 type inet:ipv6-address; 269 description 270 "List of remote interface IPv6 addresses."; 271 } 272 } 274 leaf te-metric { 275 type uint32; 276 description "TE metric."; 277 } 279 leaf max-bandwidth { 280 type rt-types:bandwidth-ieee-float32; 281 description "Maximum bandwidth."; 282 } 284 leaf max-reservable-bandwidth { 285 type rt-types:bandwidth-ieee-float32; 286 description "Maximum reservable bandwidth."; 287 } 289 container unreserved-bandwidths { 290 description "All unreserved bandwidths."; 291 list unreserved-bandwidth { 292 leaf priority { 293 type uint8 { 294 range "0 .. 7"; 295 } 296 description "Priority from 0 to 7."; 297 } 298 leaf unreserved-bandwidth { 299 type rt-types:bandwidth-ieee-float32; 300 description "Unreserved bandwidth."; 301 } 302 description 303 "List of unreserved bandwidths for different 304 priorities."; 305 } 306 } 308 leaf admin-group { 309 type uint32; 310 description 311 "Administrative group/Resource Class/Color."; 312 } 314 container neighbor-id { 315 description "Neighbor link identification."; 316 leaf nbr-interface-id { 317 type inet:ipv4-address; 318 mandatory true; 319 description "The neighbor's interface ID."; 320 } 321 leaf nbr-router-id { 322 type yang:dotted-quad; 323 mandatory true; 324 description "The neighbor's router ID."; 325 } 326 } 328 uses ospf:unknown-tlvs; 329 } 331 description "OSPFv3 Intra-Area-TE-LSA."; 332 reference "RFC 5329: Traffic Engineering Extensions to OSPF 333 : Version 3."; 334 } 335 } 337 augment "/rt:routing/" 338 + "rt:control-plane-protocols/rt:control-plane-protocol/" 339 + "ospf:ospf/ospf:areas/" 340 + "ospf:area/ospf:database/" 341 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 342 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 343 + "ospf:ospfv3/ospf:body" { 344 when "../../../../../../../../../" 345 + "rt:type = 'ospf:ospfv3'" { 346 description 347 "This augmentation is only valid for OSPFv3."; 348 } 349 description 350 "OSPFv3 Intra-Area-TE-LSA."; 352 uses ospfv3-intra-area-te; 353 } 354 } 355 357 3. YANG Module for OSPF Two-Part Metric 359 This document defines a YANG module for OSPF Two-Part Metric feature 360 as defined in [RFC8042]. It is an augmentation of the OSPF base 361 model. 363 module: ietf-ospf-two-part-metric 364 augment /rt:routing/rt:control-plane-protocols 365 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 366 /ospf:interfaces/ospf:interface: 367 +--rw two-part-metric 368 +--rw enable? boolean 369 +--rw int-input-cost? ospf:ospf-link-metric 370 augment /rt:routing/rt:control-plane-protocols 371 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 372 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 373 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 374 /ospf:body/ospf:opaque/ospf:extended-link-opaque 375 /ospf:extended-link-tlv: 376 +--ro network-to-router-metric-sub-tlvs 377 +--ro net-to-rtr-sub-tlv* 378 +--ro mt-id? uint8 379 +--ro mt-metric? uint16 380 augment /rt:routing/rt:control-plane-protocols 381 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 382 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 383 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 384 /ospf:body/ospf:opaque/ospf:te-opaque/ospf:link-tlv: 385 +--ro network-to-router-te-metric? uint32 386 augment /rt:routing/rt:control-plane-protocols 387 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 388 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 389 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 390 /ospf:body/ospfv3-te:ospfv3-intra-area-te/ospfv3-te:link-tlv: 391 +--ro network-to-router-te-metric? uint32 393 file "ietf-ospf-two-part-metric@2021-07-11.yang" 394 module ietf-ospf-two-part-metric { 395 yang-version 1.1; 396 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-two-part-metric"; 398 prefix ospf-two-metric; 400 import ietf-routing { 401 prefix "rt"; 402 reference "RFC 8349: A YANG Data Model for Routing 403 Management (NMDA Version)"; 404 } 405 import ietf-ospf { 406 prefix "ospf"; 407 } 409 import ietf-ospfv3-te { 410 prefix "ospfv3-te"; 411 } 413 organization 414 "IETF LSR - Link State Routing Working Group"; 416 contact 417 "WG Web: 418 WG List: 420 Author: Yingzhen Qu 421 422 Author: Acee Lindem 423 "; 425 description 426 "This YANG module defines the configuration and operational 427 state for OSPF Two-Part Metric feature as defined in RFC 8042. 429 This YANG model conforms to the Network Management 430 Datastore Architecture (NMDA) as described in RFC 8342. 432 Copyright (c) 2021 IETF Trust and the persons identified as 433 authors of the code. All rights reserved. 435 Redistribution and use in source and binary forms, with or 436 without modification, is permitted pursuant to, and subject 437 to the license terms contained in, the Simplified BSD License 438 set forth in Section 4.c of the IETF Trust's Legal Provisions 439 Relating to IETF Documents 440 (http://trustee.ietf.org/license-info). 442 This version of this YANG module is part of RFC XXXX; 443 see the RFC itself for full legal notices."; 445 reference "RFC XXXX"; 447 revision 2021-07-11 { 448 description 449 "Initial version"; 450 reference 451 "RFC XXXX: A YANG Data Model for OSPF."; 452 } 453 identity two-part-metric { 454 base ospf:informational-capability; 455 description 456 "When set, the router is capable of supporting OSPF 457 two-part metrics."; 458 reference 459 "RFC 8042: OSPF Two-Part Metric"; 460 } 462 /* RFC 8042 */ 463 augment "/rt:routing/rt:control-plane-protocols/" 464 + "rt:control-plane-protocol/ospf:ospf/" 465 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 466 when "../../../../../rt:type = 'ospf:ospfv2' or " 467 + "../../../../../rt:type = 'ospf:ospfv3'" { 468 description 469 "This augments the OSPF interface configuration 470 when used."; 471 } 472 description 473 "This augments the OSPF protocol interface 474 configuration with two-part metric."; 476 container two-part-metric { 477 when "enum-value(../ospf:interface-type) = 2" { 478 description 479 "Two-part metric when link type is multi-access."; 480 } 481 leaf enable { 482 type boolean; 483 default false; 484 description 485 "Enable two-part metric."; 486 } 487 leaf int-input-cost { 488 type ospf:ospf-link-metric; 489 description 490 "Link state metric from the two-part-metric network 491 to this router."; 492 } 493 description 494 "Interface two part metric configuration."; 495 } 496 } 498 augment "/rt:routing/" 499 + "rt:control-plane-protocols/rt:control-plane-protocol/" 500 + "ospf:ospf/ospf:areas/" 501 + "ospf:area/ospf:database/" 502 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 503 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 504 + "ospf:ospfv2/ospf:body/ospf:opaque/" 505 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 506 when "../../../../../../../../../../../../" 507 + "rt:type = 'ospf:ospfv2'" { 508 description 509 "This augmentation is only valid for OSPFv2."; 510 } 511 description 512 "Network-to-Router metric sub tlv for OSPFv2 extended link TLV 513 in type 10 opaque LSA."; 515 container network-to-router-metric-sub-tlvs { 516 description "Network-to-Router metric sub TLV."; 517 list net-to-rtr-sub-tlv { 518 leaf mt-id { 519 type uint8; 520 description "Multi-Topology Identifier (MT-ID)."; 521 } 522 leaf mt-metric { 523 type uint16; 524 description "Network-to-router metric."; 525 } 526 description 527 "Network-to-Router metric sub-TLV."; 528 } 529 } 530 } 532 augment "/rt:routing/" 533 + "rt:control-plane-protocols/rt:control-plane-protocol/" 534 + "ospf:ospf/ospf:areas/" 535 + "ospf:area/ospf:database/" 536 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 537 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 538 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:te-opaque/" 539 + "ospf:link-tlv" { 540 when "../../../../../../../../../../../../" 541 + "rt:type = 'ospf:ospfv2'" { 542 description 543 "This augmentation is only valid for OSPFv2."; 544 } 545 description 546 "Traffic Engineering Network-to-Router Sub-TLV."; 547 leaf network-to-router-te-metric { 548 type uint32; 549 description "Network to Router TE metric."; 550 reference 551 "RFC 8042 - OSPF Two-Part Metric"; 552 } 553 } 555 augment "/rt:routing/" 556 + "rt:control-plane-protocols/rt:control-plane-protocol/" 557 + "ospf:ospf/ospf:areas/" 558 + "ospf:area/ospf:database/" 559 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 560 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 561 + "ospf:ospfv3/ospf:body/ospfv3-te:ospfv3-intra-area-te/" 562 + "ospfv3-te:link-tlv" { 563 when "../../../../../../../../../../../" 564 + "rt:type = 'ospf:ospfv3'" { 565 description 566 "This augmentation is only valid for OSPFv3."; 567 } 568 description 569 "Traffic Engineering Network-to-Router Sub-TLV."; 570 leaf network-to-router-te-metric { 571 type uint32; 572 description "Network to Router TE metric."; 573 reference 574 "RFC 8042 - OSPF Two-Part Metric"; 575 } 576 } 577 } 578 580 4. YANG Module for OSPF Graceful Link Shutdown 582 This document defines a YANG module for OSPF Graceful Link Shutdown 583 feature as defined in [RFC8379]. It is an augmentation of the OSPF 584 base model. 586 module: ietf-ospf-graceful-link-shutdown 587 augment /rt:routing/rt:control-plane-protocols 588 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 589 /ospf:interfaces/ospf:interface: 590 +--rw graceful-link-shutdown 591 +--rw enable? boolean 592 augment /rt:routing/rt:control-plane-protocols 593 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 594 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 595 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 596 /ospf:body/ospf:opaque/ospf:extended-link-opaque 597 /ospf:extended-link-tlv: 598 +--ro graceful-link-shutdown-sub-tlv! 599 +--ro remote-address-sub-tlv 600 | +--ro remote-address? inet:ipv4-address 601 +--ro local-remote-int-id-sub-tlv 602 +--ro local-int-id? uint32 603 +--ro remote-int-id? uint32 604 augment /rt:routing/rt:control-plane-protocols 605 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 606 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 607 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 608 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 609 /ospfv3-e-lsa:link-tlv: 610 +--ro graceful-link-shutdown-sub-tlv! 612 file "ietf-ospf-graceful-link-shutdown@2021-07-11.yang" 613 module ietf-ospf-graceful-link-shutdown { 614 yang-version 1.1; 615 namespace 616 "urn:ietf:params:xml:ns:yang:ietf-ospf-graceful-link-shutdown"; 618 prefix ospf-grace-linkdown; 620 import ietf-inet-types { 621 prefix "inet"; 622 reference "RFC 6991: Common YANG Data Types"; 623 } 625 import ietf-routing { 626 prefix "rt"; 627 reference "RFC 8349: A YANG Data Model for Routing 628 Management (NMDA Version)"; 629 } 631 import ietf-ospf { 632 prefix "ospf"; 634 } 636 import ietf-ospfv3-extended-lsa { 637 prefix "ospfv3-e-lsa"; 638 } 640 organization 641 "IETF LSR - Link State Routing Working Group"; 643 contact 644 "WG Web: 645 WG List: 647 Author: Yingzhen Qu 648 649 Author: Acee Lindem 650 "; 652 description 653 "This YANG module defines the configuration and operational 654 state for OSPF Graceful Link Shutdown feature as defined 655 in RFC 8379. 657 This YANG model conforms to the Network Management 658 Datastore Architecture (NDMA) as described in RFC 8342. 660 Copyright (c) 2021 IETF Trust and the persons identified as 661 authors of the code. All rights reserved. 663 Redistribution and use in source and binary forms, with or 664 without modification, is permitted pursuant to, and subject 665 to the license terms contained in, the Simplified BSD License 666 set forth in Section 4.c of the IETF Trust's Legal Provisions 667 Relating to IETF Documents 668 (http://trustee.ietf.org/license-info). 670 This version of this YANG module is part of RFC XXXX; 671 see the RFC itself for full legal notices."; 673 reference "RFC XXXX"; 675 revision 2021-07-11 { 676 description 677 "Initial version"; 678 reference 679 "RFC XXXX: A YANG Data Model for OSPF Graceful Link Shutdown."; 680 } 681 /* RFC 8379 */ 682 augment "/rt:routing/rt:control-plane-protocols/" 683 + "rt:control-plane-protocol/ospf:ospf/" 684 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 685 when "../../../../../rt:type = 'ospf:ospfv2' or " 686 + "../../../../../rt:type = 'ospf:ospfv3'" { 687 description 688 "This augments the OSPF interface configuration 689 when used."; 690 } 691 description 692 "This augments the OSPF protocol interface 693 configuration with segment routing."; 695 container graceful-link-shutdown { 696 leaf enable { 697 type boolean; 698 default false; 699 description 700 "Enable OSPF graceful link shutdown."; 701 } 702 description 703 "OSPF Graceful Link Shutdown."; 704 } 705 } 707 /* Database */ 708 augment "/rt:routing/" 709 + "rt:control-plane-protocols/rt:control-plane-protocol/" 710 + "ospf:ospf/ospf:areas/" 711 + "ospf:area/ospf:database/" 712 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 713 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 714 + "ospf:ospfv2/ospf:body/ospf:opaque/" 715 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 716 when "../../../../../../../../../../../../" 717 + "rt:type = 'ospf:ospfv2'" { 718 description 719 "This augmentation is only valid for OSPFv2."; 720 } 721 description 722 "OSPF graceful link shutdown for OSPFv2 extended link TLV 723 in type 10 opaque LSA."; 725 container graceful-link-shutdown-sub-tlv { 726 presence "Enable graceful link shutdown"; 727 description 728 "Graceful-Link-Shutdown sub-TLV identifies the link as being 729 gracefully shutdown."; 730 } 732 container remote-address-sub-tlv { 733 leaf remote-address { 734 type inet:ipv4-address; 735 description 736 "Remote IPv4 address used to identify a particular link 737 on the remote side."; 738 } 739 description 740 "This sub-TLV specifies the IPv4 address of the remote 741 endpoint on the link."; 742 } 744 container local-remote-int-id-sub-tlv { 745 leaf local-int-id { 746 type uint32; 747 description "Local interface ID."; 748 } 749 leaf remote-int-id { 750 type uint32; 751 description "Remote interface ID."; 752 } 753 description 754 "This sub-TLV specifies Local and Remote Interface IDs."; 755 } 756 } 758 augment "/rt:routing/" 759 + "rt:control-plane-protocols/rt:control-plane-protocol/" 760 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 761 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 762 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 763 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 764 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 765 when "'ospf:../../../../../../../../../" 766 + "rt:type' = 'ospf:ospfv3'" { 767 description 768 "This augmentation is only valid for OSPFv3 769 E-Router LSAs"; 770 } 771 container graceful-link-shutdown-sub-tlv { 772 presence "Enable graceful link shutdown"; 773 description 774 "Graceful-Link-Shutdown sub-TLV identifies the link as being 775 gracefully shutdown."; 777 } 778 description 779 "Augment OSPFv3 Area scope router-link TLV."; 780 } 781 } 782 784 5. YANG Module for OSPF LLS Extenstion for Local Interface ID 785 Advertisement 787 This document defines a YANG module for OSPF Link-Local Signaling 788 (LLS) Extensions for Local Interface ID Advertisement feature as 789 defined in [RFC8510]. It is an augmentation of the OSPF base model. 791 module: ietf-ospf-lls-local-id 792 augment /rt:routing/rt:control-plane-protocols 793 /rt:control-plane-protocol/ospf:ospf: 794 +--rw lls-int-id 795 +--rw enable? boolean 797 file "ietf-ospf-lls-local-id@2021-07-11.yang" 798 module ietf-ospf-lls-local-id { 799 yang-version 1.1; 800 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-lls-local-id"; 802 prefix ospf-lls-localid; 804 import ietf-routing { 805 prefix "rt"; 806 reference "RFC 8349: A YANG Data Model for Routing 807 Management (NMDA Version)"; 808 } 810 import ietf-ospf { 811 prefix "ospf"; 812 } 814 organization 815 "IETF LSR - Link State Routing Working Group"; 817 contact 818 "WG Web: 819 WG List: 821 Author: Yingzhen Qu 822 823 Author: Acee Lindem 824 "; 826 description 827 "This YANG module defines the configuration and operational 828 state for OSPF Link-Local Signaling (LLS) Extensions for Local 829 Interface ID Advertisement feature as defined in RFC 8510. 831 This YANG model conforms to the Network Management 832 Datastore Architecture (NMDA) as described in RFC 8342. 834 Copyright (c) 2021 IETF Trust and the persons identified as 835 authors of the code. All rights reserved. 837 Redistribution and use in source and binary forms, with or 838 without modification, is permitted pursuant to, and subject 839 to the license terms contained in, the Simplified BSD License 840 set forth in Section 4.c of the IETF Trust's Legal Provisions 841 Relating to IETF Documents 842 (http://trustee.ietf.org/license-info). 844 This version of this YANG module is part of RFC XXXX; 845 see the RFC itself for full legal notices."; 847 reference "RFC XXXX"; 849 revision 2021-07-11 { 850 description 851 "Initial version"; 852 reference 853 "RFC XXXX: A YANG Data Model for OSPF."; 854 } 856 augment "/rt:routing/rt:control-plane-protocols" 857 + "/rt:control-plane-protocol/ospf:ospf" { 858 when "../rt:type = 'ospf:ospfv2' or " 859 + "../rt:type = 'ospf:ospfv3'" { 860 description 861 "This augments the OSPF routing protocol when used."; 862 } 863 description 864 "This augments the OSPF protocol configuration 865 to support LLS extensions for local interface ID 866 advertisement."; 867 container lls-int-id { 868 leaf enable { 869 type boolean; 870 default false; 871 description 872 "Enable LLS to advertise local interface ID."; 873 } 874 description 875 "OSPF LLS Extensions for interface ID."; 876 reference "RFC 8510 - OSPF Link-Local Signaling (LLS) 877 Extensions for Local Interface ID Advertisement"; 878 } 879 } 880 } 881 883 6. YANG Module for OSPF Application-Specific Link Attributes 885 This document defines a YANG module for OSPF Application-Specific 886 Link Attributes feature as defined in [RFC8920]. It is an 887 augmentation of the OSPF base model. 889 module: ietf-ospf-link-attr 890 augment /rt:routing/rt:control-plane-protocols 891 /rt:control-plane-protocol/ospf:ospf: 892 +--rw ospf-link-attr 893 +--rw (link-attr-op-mode) 894 +--:(legacy) 895 | +--rw legacy? empty 896 +--:(transition) 897 | +--rw transition? empty 898 +--:(app-specific) 899 +--rw app-specific? empty 900 augment /rt:routing/rt:control-plane-protocols 901 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 902 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 903 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 904 /ospf:body/ospf:opaque/ospf:extended-link-opaque 905 /ospf:extended-link-tlv: 906 +--ro application-specific-link-attributes-sub-tlvs 907 +--ro asla-sub-tlvs* [] 908 +--ro sabm-length? uint8 909 +--ro udabm-length? uint8 910 +--ro sabm 911 | +--ro sabm-bits* identityref 912 +--ro udabm 913 +--ro link-attributes-sub-sub-tlvs 914 +--ro unknown-tlvs 915 +--ro unknown-tlv* [] 916 +--ro type? uint16 917 +--ro length? uint16 918 +--ro value? yang:hex-string 919 augment /rt:routing/rt:control-plane-protocols 920 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 921 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 922 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 923 /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs 924 /ospfv3-e-lsa:link-tlv: 925 +--ro application-specific-link-attributes-sub-tlvs 926 +--ro asla-sub-tlvs* [] 927 +--ro sabm-length? uint8 928 +--ro udabm-length? uint8 929 +--ro sabm 930 | +--ro sabm-bits* identityref 931 +--ro udabm 932 +--ro link-attributes-sub-sub-tlvs 933 +--ro unknown-tlvs 934 +--ro unknown-tlv* [] 935 +--ro type? uint16 936 +--ro length? uint16 937 +--ro value? yang:hex-string 939 file "ietf-ospf-link-attr@2020-10-31.yang" 940 module ietf-ospf-link-attr { 941 yang-version 1.1; 942 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr"; 944 prefix ospf-link-attr; 946 import ietf-routing { 947 prefix "rt"; 948 reference "RFC 8349: A YANG Data Model for Routing 949 Management (NMDA Version)"; 950 } 952 import ietf-ospf { 953 prefix "ospf"; 954 } 956 import ietf-ospfv3-extended-lsa { 957 prefix "ospfv3-e-lsa"; 958 } 960 organization 961 "IETF LSR - Link State Routing Working Group"; 963 contact 964 "WG Web: 965 WG List: 967 Author: Yingzhen Qu 968 969 Author: Acee Lindem 970 971 Author: Stephane Litkowski 972 "; 974 description 975 "This YANG module defines the configuration and operational 976 state for OSPF application specific link attributes feature 977 as defined in RFC xxxx. 979 This YANG model conforms to the Network Management 980 Datastore Architecture (NMDA) as described in RFC 8342. 982 Copyright (c) 2020 IETF Trust and the persons identified as 983 authors of the code. All rights reserved. 985 Redistribution and use in source and binary forms, with or 986 without modification, is permitted pursuant to, and subject 987 to the license terms contained in, the Simplified BSD License 988 set forth in Section 4.c of the IETF Trust's Legal Provisions 989 Relating to IETF Documents 990 (http://trustee.ietf.org/license-info). 992 This version of this YANG module is part of RFC XXXX; 993 see the RFC itself for full legal notices. 995 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 996 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 997 'MAY', and 'OPTIONAL' in this document are to be interpreted as 998 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 999 they appear in all capitals, as shown here."; 1001 reference "RFC XXXX"; 1003 revision 2020-10-31 { 1004 description 1005 "Initial version"; 1006 reference 1007 "RFC XXXX: A YANG Data Model for OSPF application specific 1008 link attributes."; 1009 } 1011 identity sabm-bit { 1012 description 1013 "Base identity for sabm bits."; 1014 } 1015 identity rsvp-te-bit { 1016 base sabm-bit; 1017 description 1018 "R bit, RSVP-TE."; 1019 } 1021 identity sr-policy-bit { 1022 base sabm-bit; 1023 description 1024 "S bit, Segment Routing Policy."; 1025 } 1027 identity lfa-bit { 1028 base sabm-bit; 1029 description 1030 "F bit, Loop Free Alternate (LFA). Includes all LFA types."; 1031 } 1033 grouping application-specific-link-attributes-sub-tlvs { 1034 description 1035 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV. 1036 The ASLA sub-TLV is a sub-TLV of the OSPFv2 Extended Link 1037 TLV [RFC7684] and OSPFv3 Router-Link TLV [RFC8362]."; 1039 container application-specific-link-attributes-sub-tlvs { 1040 description "Application-Specific Link Attributes sub-TLV."; 1041 list asla-sub-tlvs { 1042 leaf sabm-length { 1043 type uint8; 1044 description 1045 "Standard Application Identifier Bit Mask Length in 1046 octets."; 1047 } 1048 leaf udabm-length { 1049 type uint8; 1050 description 1051 "User Defined Application Identifier Bit Mask Length 1052 in octets."; 1053 } 1054 container sabm { 1055 leaf-list sabm-bits { 1056 type identityref { 1057 base sabm-bit; 1058 } 1059 description 1060 "SABM bits list. This list will contain 1061 identities for the bits which are set in the 1062 SABA bits."; 1064 } 1065 description 1066 "Standard Application Identifier Bit Mask."; 1067 } 1068 container udabm { 1069 description 1070 "User Defined Application Identifier Bit Mask. 1071 This container is to be augmented by user defined 1072 applications."; 1073 } 1074 container link-attributes-sub-sub-tlvs { 1075 uses ospf:unknown-tlvs; 1076 description 1077 "Link Attributes sub-sub-TLVs."; 1078 } 1079 description 1080 "List of application-Specific Link Attributes sub-TLVs."; 1081 } 1082 } 1083 } 1085 augment "/rt:routing/rt:control-plane-protocols" 1086 + "/rt:control-plane-protocol/ospf:ospf" { 1087 when "../rt:type = 'ospf:ospfv2' or " 1088 + "../rt:type = 'ospf:ospfv3'" { 1089 description 1090 "This augments the OSPF routing protocol when used."; 1091 } 1092 description 1093 "This augments OSPF protocol configuration 1094 with application-specific link attributes."; 1096 container ospf-link-attr { 1097 choice link-attr-op-mode { 1098 mandatory "true"; 1099 leaf legacy { 1100 type empty; 1101 description 1102 "Only send legacy advertisements."; 1103 } 1104 leaf transition { 1105 type empty; 1106 description 1107 "Send both application-specific and legacy 1108 advertisements."; 1109 } 1110 leaf app-specific{ 1111 type empty; 1112 description 1113 "Only send application-specific advertisements."; 1114 } 1115 description 1116 "Link attributes mode"; 1117 } 1118 description 1119 "Link attributes operation mode."; 1120 } 1121 } 1123 /* Database */ 1124 augment "/rt:routing/" 1125 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1126 + "ospf:ospf/ospf:areas/" 1127 + "ospf:area/ospf:database/" 1128 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1129 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1130 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1131 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 1132 when "../../../../../../../../../../../../" 1133 + "rt:type = 'ospf:ospfv2'" { 1134 description 1135 "This augmentation is only valid for OSPFv2."; 1136 } 1137 description 1138 "OSPF Application-Specific Link Attributes (ASLA) sub-TLV is 1139 a sub-TLV of OSPFv2 Extended Link TLV (RFC7684)."; 1141 uses application-specific-link-attributes-sub-tlvs; 1142 } 1144 augment "/rt:routing/" 1145 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1146 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 1147 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1148 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 1149 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router" 1150 + "/ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" { 1151 when "'ospf:../../../../../../../../../" 1152 + "rt:type' = 'ospf:ospfv3'" { 1153 description 1154 "This augmentation is only valid for OSPFv3 1155 E-Router LSAs"; 1156 } 1157 description 1158 "Augment OSPFv3 Area scope router-link TLV."; 1160 uses application-specific-link-attributes-sub-tlvs; 1161 } 1162 } 1163 1165 7. YANG Module for OSPF Flexible Algorithm 1167 This document defines a YANG module for OSPF Flexible Algorithm as 1168 defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the 1169 OSPF base model. 1171 module: ietf-ospf-flex-algo 1172 augment /rt:routing/rt:control-plane-protocols 1173 /rt:control-plane-protocol/ospf:ospf: 1174 +--rw ospf-flex-algo 1175 +--rw flex-algo* [algo-number] 1176 +--rw algo-number uint8 1177 +--rw advertise-definition? boolean 1178 +--rw admin-groups {te-types:extended-admin-groups, 1179 te-types:named-extended-admin-groups}? 1180 | +--rw exclude-admin-groups* -> /te:te/globals 1181 /named-admin-groups 1182 /named-admin-group/name 1183 | +--rw include-any-admin-groups* -> /te:te/globals 1184 /named-admin-groups 1185 /named-admin-group/name 1186 | +--rw include-all-admin-groups* -> /te:te/globals 1187 /named-admin-groups 1188 /named-admin-group/name 1189 +--rw exclude-srlgs* -> /te:te/globals/named-srlgs 1190 /named-srlg/name 1191 {te-types:named-srlg-groups}? 1192 +--rw fast-reroute? boolean 1193 +--rw metric-type? identityref 1194 +--rw microloop-avoidance? boolean 1195 +--rw prefix-metric! 1196 +--rw priority? uint8 1197 augment /rt:routing/rt:control-plane-protocols 1198 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1199 /ospf:interfaces/ospf:interface/ospf:database 1200 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1201 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1202 /ospf:body/ospf:opaque/ospf:ri-opaque: 1203 +--ro fad-tlvs 1204 +--ro fad-tlv* [] 1205 +--ro flex-algo? uint8 1206 +--ro metric-type? identityref 1207 +--ro calc-type? uint8 1208 +--ro priority? uint8 1209 +--ro fa-ex-ag-sub-tlv 1210 | +--ro extended-admin-groups* uint64 1211 +--ro fa-in-any-ag-sub-tlv 1212 | +--ro extended-admin-groups* uint64 1213 +--ro fa-in-all-ag-sub-tlv 1214 | +--ro extended-admin-groups* uint64 1215 +--ro fad-flags-sub-tlv 1216 | +--ro fad-flags* identityref 1217 +--ro fa-ex-srlg-sub-tlv 1218 | +--ro srlgs* uint32 1219 +--ro unknown-tlvs 1220 +--ro unknown-tlv* [] 1221 +--ro type? uint16 1222 +--ro length? uint16 1223 +--ro value? yang:hex-string 1224 augment /rt:routing/rt:control-plane-protocols 1225 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1226 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1227 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1228 /ospf:body/ospf:opaque/ospf:ri-opaque: 1229 +--ro fad-tlvs 1230 +--ro fad-tlv* [] 1231 +--ro flex-algo? uint8 1232 +--ro metric-type? identityref 1233 +--ro calc-type? uint8 1234 +--ro priority? uint8 1235 +--ro fa-ex-ag-sub-tlv 1236 | +--ro extended-admin-groups* uint64 1237 +--ro fa-in-any-ag-sub-tlv 1238 | +--ro extended-admin-groups* uint64 1239 +--ro fa-in-all-ag-sub-tlv 1240 | +--ro extended-admin-groups* uint64 1241 +--ro fad-flags-sub-tlv 1242 | +--ro fad-flags* identityref 1243 +--ro fa-ex-srlg-sub-tlv 1244 | +--ro srlgs* uint32 1245 +--ro unknown-tlvs 1246 +--ro unknown-tlv* [] 1247 +--ro type? uint16 1248 +--ro length? uint16 1249 +--ro value? yang:hex-string 1250 augment /rt:routing/rt:control-plane-protocols 1251 /rt:control-plane-protocol/ospf:ospf/ospf:database 1252 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1253 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1254 /ospf:ri-opaque: 1255 +--ro fad-tlvs 1256 +--ro fad-tlv* [] 1257 +--ro flex-algo? uint8 1258 +--ro metric-type? identityref 1259 +--ro calc-type? uint8 1260 +--ro priority? uint8 1261 +--ro fa-ex-ag-sub-tlv 1262 | +--ro extended-admin-groups* uint64 1263 +--ro fa-in-any-ag-sub-tlv 1264 | +--ro extended-admin-groups* uint64 1265 +--ro fa-in-all-ag-sub-tlv 1266 | +--ro extended-admin-groups* uint64 1267 +--ro fad-flags-sub-tlv 1268 | +--ro fad-flags* identityref 1269 +--ro fa-ex-srlg-sub-tlv 1270 | +--ro srlgs* uint32 1271 +--ro unknown-tlvs 1272 +--ro unknown-tlv* [] 1273 +--ro type? uint16 1274 +--ro length? uint16 1275 +--ro value? yang:hex-string 1276 augment /rt:routing/rt:control-plane-protocols 1277 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1278 /ospf:interfaces/ospf:interface/ospf:database 1279 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1280 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1281 /ospf:body/ospf:router-information: 1282 +--ro fad-tlvs 1283 +--ro fad-tlv* [] 1284 +--ro flex-algo? uint8 1285 +--ro metric-type? identityref 1286 +--ro calc-type? uint8 1287 +--ro priority? uint8 1288 +--ro fa-ex-ag-sub-tlv 1289 | +--ro extended-admin-groups* uint64 1290 +--ro fa-in-any-ag-sub-tlv 1291 | +--ro extended-admin-groups* uint64 1292 +--ro fa-in-all-ag-sub-tlv 1293 | +--ro extended-admin-groups* uint64 1294 +--ro fad-flags-sub-tlv 1295 | +--ro fad-flags* identityref 1296 +--ro fa-ex-srlg-sub-tlv 1297 | +--ro srlgs* uint32 1298 +--ro unknown-tlvs 1299 +--ro unknown-tlv* [] 1300 +--ro type? uint16 1301 +--ro length? uint16 1302 +--ro value? yang:hex-string 1303 augment /rt:routing/rt:control-plane-protocols 1304 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1305 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1306 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1307 /ospf:body/ospf:router-information: 1308 +--ro fad-tlvs 1309 +--ro fad-tlv* [] 1310 +--ro flex-algo? uint8 1311 +--ro metric-type? identityref 1312 +--ro calc-type? uint8 1313 +--ro priority? uint8 1314 +--ro fa-ex-ag-sub-tlv 1315 | +--ro extended-admin-groups* uint64 1316 +--ro fa-in-any-ag-sub-tlv 1317 | +--ro extended-admin-groups* uint64 1318 +--ro fa-in-all-ag-sub-tlv 1319 | +--ro extended-admin-groups* uint64 1320 +--ro fad-flags-sub-tlv 1321 | +--ro fad-flags* identityref 1322 +--ro fa-ex-srlg-sub-tlv 1323 | +--ro srlgs* uint32 1324 +--ro unknown-tlvs 1325 +--ro unknown-tlv* [] 1326 +--ro type? uint16 1327 +--ro length? uint16 1328 +--ro value? yang:hex-string 1329 augment /rt:routing/rt:control-plane-protocols 1330 /rt:control-plane-protocol/ospf:ospf/ospf:database 1331 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1332 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1333 /ospf:router-information: 1334 +--ro fad-tlvs 1335 +--ro fad-tlv* [] 1336 +--ro flex-algo? uint8 1337 +--ro metric-type? identityref 1338 +--ro calc-type? uint8 1339 +--ro priority? uint8 1340 +--ro fa-ex-ag-sub-tlv 1341 | +--ro extended-admin-groups* uint64 1342 +--ro fa-in-any-ag-sub-tlv 1343 | +--ro extended-admin-groups* uint64 1344 +--ro fa-in-all-ag-sub-tlv 1345 | +--ro extended-admin-groups* uint64 1346 +--ro fad-flags-sub-tlv 1347 | +--ro fad-flags* identityref 1348 +--ro fa-ex-srlg-sub-tlv 1349 | +--ro srlgs* uint32 1350 +--ro unknown-tlvs 1351 +--ro unknown-tlv* [] 1352 +--ro type? uint16 1353 +--ro length? uint16 1354 +--ro value? yang:hex-string 1355 augment /rt:routing/rt:control-plane-protocols 1356 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1357 /ospf:interfaces/ospf:interface/ospf:database 1358 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1359 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1360 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1361 /ospf:extended-prefix-tlv: 1362 +--ro fapm-sub-tlvs 1363 +--ro fapm-sub-tlv* [] 1364 +--ro flex-algo? uint8 1365 +--ro fapm-flags* identityref 1366 +--ro metric? uint32 1367 augment /rt:routing/rt:control-plane-protocols 1368 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1369 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1370 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1371 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 1372 /ospf:extended-prefix-tlv: 1373 +--ro fapm-sub-tlvs 1374 +--ro fapm-sub-tlv* [] 1375 +--ro flex-algo? uint8 1376 +--ro fapm-flags* identityref 1377 +--ro metric? uint32 1378 augment /rt:routing/rt:control-plane-protocols 1379 /rt:control-plane-protocol/ospf:ospf/ospf:database 1380 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1381 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1382 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 1383 +--ro fapm-sub-tlvs 1384 +--ro fapm-sub-tlv* [] 1385 +--ro flex-algo? uint8 1386 +--ro fapm-flags* identityref 1387 +--ro metric? uint32 1388 augment /rt:routing/rt:control-plane-protocols 1389 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1390 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1391 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1392 /ospf:body/ospfv3-e-lsa:e-inter-area-prefix 1393 /ospfv3-e-lsa:e-inter-prefix-tlvs 1394 /ospfv3-e-lsa:inter-prefix-tlv: 1395 +--ro fapm-sub-tlvs 1396 +--ro fapm-sub-tlv* [] 1397 +--ro flex-algo? uint8 1398 +--ro fapm-flags* identityref 1399 +--ro metric? uint32 1401 augment /rt:routing/rt:control-plane-protocols 1402 /rt:control-plane-protocol/ospf:ospf/ospf:database 1403 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1404 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1405 /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs 1406 /ospfv3-e-lsa:external-prefix-tlv: 1407 +--ro fapm-sub-tlvs 1408 +--ro fapm-sub-tlv* [] 1409 +--ro flex-algo? uint8 1410 +--ro fapm-flags* identityref 1411 +--ro metric? uint32 1412 augment /rt:routing/rt:control-plane-protocols 1413 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1414 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1415 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1416 /ospf:body/ospf:opaque: 1417 +--ro eia-asbr-opaque 1418 +--ro eia-asbr-tlv 1419 | +--ro asbr-rtr-id? rt-types:router-id 1420 | +--ro faam-sub-tlvs 1421 | | +--ro faam-sub-tlv* [] 1422 | | +--ro flex-algo? uint8 1423 | | +--ro metric? uint32 1424 | +--ro unknown-tlvs 1425 | +--ro unknown-tlv* [] 1426 | +--ro type? uint16 1427 | +--ro length? uint16 1428 | +--ro value? yang:hex-string 1429 +--ro unknown-tlvs 1430 +--ro unknown-tlv* [] 1431 +--ro type? uint16 1432 +--ro length? uint16 1433 +--ro value? yang:hex-string 1434 augment /rt:routing/rt:control-plane-protocols 1435 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1436 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1437 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1438 /ospf:body/ospfv3-e-lsa:e-inter-area-router 1439 /ospfv3-e-lsa:e-inter-router-tlvs 1440 /ospfv3-e-lsa:inter-router-tlv: 1441 +--ro faam-sub-tlvs 1442 +--ro faam-sub-tlv* [] 1443 +--ro flex-algo? uint8 1444 +--ro metric? uint32 1446 file "ietf-ospf-flex-algo@2021-06-18.yang" 1447 module ietf-ospf-flex-algo { 1448 yang-version 1.1; 1449 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; 1450 prefix ospf-flex-algo; 1452 import ietf-routing { 1453 prefix rt; 1454 reference "RFC 8349: A YANG Data Model for Routing 1455 Management (NMDA Version)"; 1456 } 1458 import ietf-routing-types { 1459 prefix "rt-types"; 1460 reference "RFC 8294: Common YANG Data Types for the 1461 Routing Area"; 1462 } 1464 import ietf-te-types { 1465 prefix te-types; 1466 reference 1467 "RFC8776: Common YANG Data Types for Traffic Engineering."; 1468 } 1470 import ietf-ospf { 1471 prefix "ospf"; 1472 } 1474 import ietf-ospfv3-extended-lsa { 1475 prefix "ospfv3-e-lsa"; 1476 } 1478 import ietf-te { 1479 prefix "te"; 1480 } 1482 organization 1483 "IETF LSR - Link State Routing Working Group"; 1484 contact 1485 "WG Web: 1486 WG List: 1488 Author: Yingzhen Qu 1489 1490 Author: Acee Lindem 1491 1492 Author: Stephane Litkowski 1493 1494 "; 1496 description 1497 "The YANG module defines the configuration and operational 1498 state for OSPF Flexible Algorithm as defined in RFC xxxx. 1500 This YANG model conforms to the Network Management 1501 Datastore Architecture (NMDA) as described in RFC 8342. 1503 Copyright (c) 2021 IETF Trust and the persons identified as 1504 authors of the code. All rights reserved. 1506 Redistribution and use in source and binary forms, with or 1507 without modification, is permitted pursuant to, and subject 1508 to the license terms contained in, the Simplified BSD License 1509 set forth in Section 4.c of the IETF Trust's Legal Provisions 1510 Relating to IETF Documents 1511 (https://trustee.ietf.org/license-info). 1513 This version of this YANG module is part of RFC XXXX; 1514 see the RFC itself for full legal notices. 1516 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1517 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1518 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1519 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1520 they appear in all capitals, as shown here."; 1522 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1524 revision 2021-06-18 { 1525 description 1526 "Initial Version"; 1527 reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; 1528 } 1530 /* Identities */ 1532 identity metric-type { 1533 description 1534 "Base identity for route metric types."; 1535 } 1537 identity igp-metric { 1538 base metric-type; 1539 description 1540 "Identity for the IGP metric type."; 1541 } 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."; 1635 } 1636 description 1637 "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 } 1687 uses fa-ex-ag-sub-tlv; 1688 uses fa-in-any-ag-sub-tlv; 1689 uses fa-in-all-ag-sub-tlv; 1690 uses fad-flags-sub-tlv; 1691 uses fa-ex-srlg-sub-tlv; 1692 uses ospf:unknown-tlvs; 1694 description 1695 "List of flex-algo definition TLVs."; 1696 } 1697 description 1698 "OSPF Flexible Algorithm Definition TLV."; 1699 } 1700 description 1701 "OSPF Flexible Algorithm Definition (FAD) TLV."; 1702 } 1704 grouping fapm-sub-tlvs { 1705 container fapm-sub-tlvs { 1706 list fapm-sub-tlv { 1707 leaf flex-algo { 1708 type uint8; 1709 description 1710 "Flex-algo number, value between 128 and 255 1711 inclusive."; 1712 } 1713 leaf-list fapm-flags { 1714 type identityref { 1715 base fapm-flags; 1716 } 1717 description 1718 "Flex-algo prefix metric flags list."; 1719 } 1720 leaf metric { 1721 type uint32; 1722 description 1723 "Prefix metric."; 1724 } 1725 description 1726 "List of flex-algo prefix sub-tlvs."; 1727 } 1728 description 1729 "Flex-algo prefix metric sub-tlvs."; 1730 } 1731 description 1732 "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; 1733 } 1734 grouping faam-sub-tlvs { 1735 container faam-sub-tlvs { 1736 list faam-sub-tlv { 1737 leaf flex-algo { 1738 type uint8; 1739 description 1740 "Flex-algo number, value between 128 and 255 1741 inclusive."; 1742 } 1743 leaf metric { 1744 type uint32; 1745 description 1746 "Prefix metric."; 1747 } 1748 description 1749 "List of faam sub-tlvs."; 1750 } 1751 description 1752 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1753 } 1754 description 1755 "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; 1756 } 1758 /* Configurations */ 1760 augment "/rt:routing/rt:control-plane-protocols" 1761 + "/rt:control-plane-protocol/ospf:ospf" { 1762 when "../rt:type = 'ospf:ospfv2' or " 1763 + "../rt:type = 'ospf:ospfv3'" { 1764 description 1765 "This augments the OSPF routing protocol when used."; 1766 } 1767 description 1768 "This augments OSPF protocol with Flexible 1769 Algorithm."; 1771 container ospf-flex-algo { 1772 list flex-algo { 1773 key "algo-number"; 1775 leaf algo-number { 1776 type uint8 { 1777 range "128..255"; 1778 } 1779 description 1780 "An identifier in the range 128-255 that's associated 1781 with the Flexible Algorithm Definition."; 1782 } 1784 leaf advertise-definition { 1785 type boolean; 1786 default true; 1787 description 1788 "Enable to advertise the flex-algo definition."; 1789 } 1791 container admin-groups { 1792 if-feature "te-types:extended-admin-groups"; 1793 if-feature "te-types:named-extended-admin-groups"; 1794 leaf-list exclude-admin-groups { 1795 type leafref { 1796 path "/te:te/te:globals/te:named-admin-groups/" 1797 + "te:named-admin-group/te:name"; 1798 } 1799 description 1800 "Exclude rule used during the flex-algo 1801 path computation."; 1802 } 1803 leaf-list include-any-admin-groups { 1804 type leafref { 1805 path "/te:te/te:globals/te:named-admin-groups/" 1806 + "te:named-admin-group/te:name"; 1807 } 1808 description 1809 "Include-any rule used during the flex-algo 1810 path computation."; 1811 } 1812 leaf-list include-all-admin-groups { 1813 type leafref { 1814 path "/te:te/te:globals/te:named-admin-groups/" 1815 + "te:named-admin-group/te:name"; 1816 } 1817 description 1818 "Include-all rule used during the flex-algo 1819 path computation."; 1820 } 1821 description 1822 "Specify links for the flex-algo path computation."; 1823 } 1825 leaf-list exclude-srlgs { 1826 if-feature "te-types:named-srlg-groups"; 1827 type leafref { 1828 path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" 1829 + "te:name"; 1830 } 1831 description 1832 "Shared Risk Link Groups (SRLGs) to be excluded during 1833 the flex-algo path computation."; 1834 } 1836 leaf fast-reroute { 1837 type boolean; 1838 default true; 1839 description 1840 "Enable fast reroute."; 1841 } 1843 leaf metric-type { 1844 type identityref { 1845 base metric-type; 1846 } 1847 description 1848 "Type of metric to be used during the calculation."; 1849 } 1851 leaf microloop-avoidance { 1852 type boolean; 1853 default true; 1854 description 1855 "Enable microloop avoidance."; 1856 } 1858 container prefix-metric { 1859 presence 1860 "Use flex-algo specific prefix metric."; 1861 description 1862 "Use flex-algo prefix metric."; 1863 } 1865 leaf priority { 1866 type uint8; 1867 description 1868 "Priority of the advertisement."; 1869 } 1871 description 1872 "List of flex-algo configurations."; 1873 } 1874 description 1875 "Flexible Algorithm configuration."; 1876 } 1878 } 1880 /* Database */ 1882 augment "/rt:routing/" 1883 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1884 + "ospf:ospf/ospf:areas/ospf:area/" 1885 + "ospf:interfaces/ospf:interface/ospf:database/" 1886 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1887 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1888 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1889 when "../../../../../../../../../../../../../" 1890 + "rt:type = 'ospf:ospfv2'" { 1891 description 1892 "This augmentation is only valid for OSPFv2."; 1893 } 1895 description 1896 "Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; 1898 uses fad-tlvs; 1899 } 1901 augment "/rt:routing/" 1902 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1903 + "ospf:ospf/ospf:areas/" 1904 + "ospf:area/ospf:database/" 1905 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 1906 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 1907 + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { 1908 when "../../../../../../../../../../../" 1909 + "rt:type = 'ospf:ospfv2'" { 1910 description 1911 "This augmentation is only valid for OSPFv2."; 1912 } 1914 description 1915 "Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; 1917 uses fad-tlvs; 1918 } 1920 augment "/rt:routing/" 1921 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1922 + "ospf:ospf/ospf:database/" 1923 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1924 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 1925 + "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 } 1975 augment "/rt:routing/" 1976 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1977 + "ospf:ospf/ospf:database/" 1978 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 1979 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 1980 + "ospf:ospfv3/ospf:body/ospf:router-information" { 1981 when "../../../../../../../../" 1982 + "rt:type = 'ospf:ospfv3'" { 1983 description 1984 "This augmentation is only valid for OSPFv3."; 1985 } 1986 description 1987 "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; 1989 uses fad-tlvs; 1990 } 1992 augment "/rt:routing/" 1993 + "rt:control-plane-protocols/rt:control-plane-protocol/" 1994 + "ospf:ospf/ospf:areas/ospf:area/" 1995 + "ospf:interfaces/ospf:interface/ospf:database/" 1996 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 1997 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 1998 + "ospf:ospfv2/ospf:body/ospf:opaque/" 1999 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2000 when "../../../../../../../../../../../../../../" 2001 + "rt:type = 'ospf:ospfv2'" { 2002 description 2003 "This augmentation is only valid for OSPFv2."; 2004 } 2005 description 2006 "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV 2007 in type 9 opaque LSA."; 2008 uses fapm-sub-tlvs; 2009 } 2011 augment "/rt:routing/" 2012 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2013 + "ospf:ospf/ospf:areas/" 2014 + "ospf:area/ospf:database/" 2015 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2016 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2017 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2018 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 2019 when "../../../../../../../../../../../../" 2020 + "rt:type = 'ospf:ospfv2'" { 2021 description 2022 "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 } 2068 /* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */ 2069 augment "/rt:routing/" 2070 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2071 + "ospf:ospf/ospf:database/" 2072 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2073 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2074 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" 2075 + "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { 2076 when "'ospf:../../../../../../../../../" 2077 + "rt:type' = 'ospf:ospfv3'" { 2078 description 2079 "This augmentation is only valid for OSPFv3."; 2080 } 2081 uses fapm-sub-tlvs; 2082 description 2083 "OSPFv3 AS-Scoped External Prefix TLV."; 2084 } 2086 /* OSPFv2 Extended Inter-Area ASBR LSA */ 2087 augment "/rt:routing/" 2088 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2089 + "ospf:ospf/ospf:areas/" 2090 + "ospf:area/ospf:database/" 2091 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2092 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2093 + "ospf:ospfv2/ospf:body/ospf:opaque" { 2094 when "../../../../../../../../../../" 2095 + "rt:type = 'ospf:ospfv2'" { 2096 description 2097 "This augmentation is only valid for OSPFv2."; 2098 } 2099 description 2100 "OSPFv2 Extended Inter-Area ASBR LSA in type 10 2101 opaque LSA."; 2103 container eia-asbr-opaque { 2104 container eia-asbr-tlv { 2105 leaf asbr-rtr-id { 2106 type rt-types:router-id; 2107 description 2108 "The OSPF Router ID of the ASBR."; 2109 } 2110 uses faam-sub-tlvs; 2111 uses ospf:unknown-tlvs; 2112 description 2113 "EIA-ASBR TLV, used to advertise additional attributes 2114 associated with the reachability of an ASBR."; 2115 } 2116 uses ospf:unknown-tlvs; 2118 description 2119 "OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA."; 2121 } 2122 } 2124 /* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */ 2125 augment "/rt:routing/" 2126 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2127 + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" 2128 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2129 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2130 + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" 2131 + "ospfv3-e-lsa:e-inter-router-tlvs/" 2132 + "ospfv3-e-lsa:inter-router-tlv" { 2133 when "../../../../../../../../../../../../" 2134 + "rt:type = 'ospf:ospfv3'" { 2135 description 2136 "This augmentation is only valid for OSPFv3 2137 Inter-Area-Router TLV."; 2138 } 2139 uses faam-sub-tlvs; 2140 description 2141 "OSPFv3 Area-Scoped Inter-Area-Router TLV."; 2142 } 2143 } 2144 2146 8. Security Considerations 2148 The YANG modules specified in this document define a schema for data 2149 that is designed to be accessed via network management protocols such 2150 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2151 is the secure transport layer, and the mandatory-to-implement secure 2152 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2153 is HTTPS, and the mandatory-to-implement secure transport is TLS 2154 [RFC5246]. 2156 The NETCONF access control model [RFC6536] provides the means to 2157 restrict access for particular NETCONF or RESTCONF users to a pre- 2158 configured subset of all available NETCONF or RESTCONF protocol 2159 operations and content. 2161 There are a number of data nodes defined in the modules that are 2162 writable/creatable/deletable (i.e., config true, which is the 2163 default). These data nodes may be considered sensitive or vulnerable 2164 in some network environments. Write operations (e.g., edit-config) 2165 to these data nodes without proper protection can have a negative 2166 effect on network operations. 2168 Some of the readable data nodes in the modules may be considered 2169 sensitive or vulnerable in some network environments. It is thus 2170 important to control read access (e.g., via get, get-config, or 2171 notification) to these data nodes. The exposure of the Link State 2172 Database (LSDB) will expose the detailed topology of the network. 2173 This may be undesirable since both due to the fact that exposure may 2174 facilitate other attacks. Additionally, network operators may 2175 consider their topologies to be sensitive confidential data. 2177 9. IANA Considerations 2179 This document registers URIs in the IETF XML registry [RFC3688]. 2180 Following the format in [RFC3688], the following registrations is 2181 requested to be made: 2183 URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2184 Registrant Contact: The IESG. 2185 XML: N/A, the requested URI is an XML namespace. 2187 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2188 Registrant Contact: The IESG. 2189 XML: N/A, the requested URI is an XML namespace. 2191 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2192 Registrant Contact: The IESG. 2193 XML: N/A, the requested URI is an XML namespace. 2195 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2196 Registrant Contact: The IESG. 2197 XML: N/A, the requested URI is an XML namespace. 2199 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2200 Registrant Contact: The IESG. 2201 XML: N/A, the requested URI is an XML namespace. 2203 URI: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2204 Registrant Contact: The IESG. 2205 XML: N/A, the requested URI is an XML namespace. 2207 This document registers the YANG modules in the YANG Module Names 2208 registry [RFC6020]. 2210 name: ietf-ospfv3-te 2211 namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te 2212 prefix: ospfv3-te 2213 reference: RFC XXXX 2214 name: ietf-ospf-two-metric 2215 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric 2216 prefix: ospf-two-metric 2217 reference: RFC XXXX 2219 name: ietf-ospf-grace-linkdown 2220 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown 2221 prefix: ospf-grace-linkdown 2222 reference: RFC XXXX 2224 name: ietf-ospf-lls-localid 2225 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid 2226 prefix: ospf-lls-localid 2227 reference: RFC XXXX 2229 name: ietf-ospf-link-attr 2230 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr 2231 prefix: ospf-link-attr 2232 reference: RFC XXXX 2234 name: ietf-ospf-flex-algo 2235 namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo 2236 prefix: ospf-flex-algo 2237 reference: RFC XXXX 2239 10. Acknowledgements 2241 This document was produced using Marshall Rose's xml2rfc tool. 2243 The YANG model was developed using the suite of YANG tools written 2244 and maintained by numerous authors. 2246 11. Normative References 2248 [I-D.ietf-lsr-flex-algo] 2249 Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and 2250 A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- 2251 algo-15 (work in progress), April 2021. 2253 [I-D.ietf-ospf-yang] 2254 Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, 2255 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 2256 yang-29 (work in progress), October 2019. 2258 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2259 Requirement Levels", BCP 14, RFC 2119, 2260 DOI 10.17487/RFC2119, March 1997, 2261 . 2263 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2264 DOI 10.17487/RFC3688, January 2004, 2265 . 2267 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2268 (TLS) Protocol Version 1.2", RFC 5246, 2269 DOI 10.17487/RFC5246, August 2008, 2270 . 2272 [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., 2273 "Traffic Engineering Extensions to OSPF Version 3", 2274 RFC 5329, DOI 10.17487/RFC5329, September 2008, 2275 . 2277 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2278 the Network Configuration Protocol (NETCONF)", RFC 6020, 2279 DOI 10.17487/RFC6020, October 2010, 2280 . 2282 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2283 and A. Bierman, Ed., "Network Configuration Protocol 2284 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2285 . 2287 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2288 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2289 . 2291 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2292 Protocol (NETCONF) Access Control Model", RFC 6536, 2293 DOI 10.17487/RFC6536, March 2012, 2294 . 2296 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2297 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2298 . 2300 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2301 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2302 . 2304 [RFC8042] Zhang, Z., Wang, L., and A. Lindem, "OSPF Two-Part 2305 Metric", RFC 8042, DOI 10.17487/RFC8042, December 2016, 2306 . 2308 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2309 Routing Management (NMDA Version)", RFC 8349, 2310 DOI 10.17487/RFC8349, March 2018, 2311 . 2313 [RFC8379] Hegde, S., Sarkar, P., Gredler, H., Nanduri, M., and L. 2314 Jalil, "OSPF Graceful Link Shutdown", RFC 8379, 2315 DOI 10.17487/RFC8379, May 2018, 2316 . 2318 [RFC8510] Psenak, P., Ed., Talaulikar, K., Henderickx, W., and P. 2319 Pillay-Esnault, "OSPF Link-Local Signaling (LLS) 2320 Extensions for Local Interface ID Advertisement", 2321 RFC 8510, DOI 10.17487/RFC8510, January 2019, 2322 . 2324 [RFC8920] Psenak, P., Ed., Ginsberg, L., Henderickx, W., Tantsura, 2325 J., and J. Drake, "OSPF Application-Specific Link 2326 Attributes", RFC 8920, DOI 10.17487/RFC8920, October 2020, 2327 . 2329 Authors' Addresses 2331 Acee Lindem 2332 Cisco Systems 2333 301 Midenhall Way 2334 Cary, NC 27513 2336 EMail: acee@cisco.com 2338 Yingzhen Qu 2339 Futurewei 2340 2330 Central Expressway 2341 Santa Clara, CA 95050 2342 USA 2344 EMail: yingzhen.qu@futurewei.com